///// Funciones para validar formularios /////

function traducechars(str) {
    var str1 = "áéíóúàèìòùäëïöüâêîôûçñ"
    var str2 = "aeiouaeiouaeiouaeioucn"
    var tmp = "";
    var j   = 0;

    str  = str.toLowerCase();
    for (i=0; i < str.length; i++) {
        if (str.charAt(i) == "'" || str.charCodeAt(i) == 32) {
        } else {
            j = str1.indexOf(str.charAt(i))
            if (-1 != j) {
                tmp += str2.charAt(j)
            } else {
                tmp += str.charAt(i)
            }
        }
    }
    return tmp;
}

// Devuelve TRUE si la cadena contiene al menos una letra
function validaAlfanumerico(str) {
    var tmp = traducechars(str);
    return -1 != tmp.search(/[a-z]+/i);
}
// Devuelve TRUE si la cadena contiene solo letras
function validaAlfabetico(str) {
    var tmp = traducechars(str);
    return -1 != tmp.search(/^[a-z]+$/i);
}
// Devuelve TRUE si la cadena contiene solo numeros
function validaNumerico(str) {
    return -1 != str.search(/^[0-9]+$/);
}
// Devuelve TRUE si la cadena es un n?mero entero positivo
function validaEnteroPos(str) {
    return -1 != str.search(/^[1-9][0-9]*$/);
}
// Devuelve TRUE si la cadena es un n?mero entero positivo o 0
function validaEnteroPos0(str) {
    return str=="0" || -1 != str.search(/^[1-9][0-9]*$/);
}
// Devuelve TRUE si la cadena es un n?mero decimal positivo con dos decimales opcionales, con . como separador de miles y , como separador decimal
function validaImporte(str, validCero) {
    validCero = validCero || false;
    if (str == "0" && !validCero) {
        return false;
    }
    return -1 != str.search(/^[0-9]{1,3}(\.[0-9]{3})*(,[0-9]{1,2})?$/);
}
// Valida un importe permitiendo el cero
function validaImporteCero(str) {
    return validaImporte(str, true);
}
// Devuelve TRUE si la cadena contiene al menos 6 caracteres con al menos 1 letra y al menos 1 numero
function validaPassword(str) {
    return  str.length>=6 &&
            -1 != str.search(/[a-z]/i) &&
            -1 != str.search(/[0-9]/);
}
// Devuelve TRUE si la cadena contiene un telefono con 9 cifras
function validaTelefono(str) {
    return -1 != str.search(/^[0-9]{9,15}$/);
}
// Devuelve TRUE si la cadena empieza por "http://" (y continua con algo)
function validaWebBlog(str) {
    var w = "http://", s=w.length;
    return w==str.substr(0,s) && str.length>s;
}

function validaFecha(str) {
    if (str.length == 10) {
        var dia = str.substr(0,2);
        var mes = str.substr(3,2);
        var anyo  = str.substr(6,4);
        var ndia  = parseInt(dia, 10);
        var nmes  = parseInt(mes, 10);
        var nanyo = parseInt(anyo, 10);
        var dias  = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        if (nanyo % 4 == 0 && nanyo % 400 != 0) {
            dias[1] = 29;
        }
        return (nmes >= 1 && nmes <= 12 && ndia >= 1 && ndia <= dias[nmes-1]);
    } else return false;
}

var gTamanyo = 0;
var tamanyos = new Array();
function validaTamanyo(str) {
	var size = tamanyos[gTamanyo];
	gTamanyo += 1;
	if ((str != null) && (str.length > size)) {
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////

// Devuelve TRUE si el caracter es un digito
function es_digito(c) {
    if ((c.charCodeAt(0) >= "0".charCodeAt(0)) &&
        (c.charCodeAt(0) <= "9".charCodeAt(0))) {
        return true;
    } else {
        return false;
    }
}

// Devuelve TRUE si el caracter es una letra
function es_letra(c) {
    c = c.toLowerCase();
    if ((c.charCodeAt(0) >= "a".charCodeAt(0)) &&
        (c.charCodeAt(0) <= "z".charCodeAt(0))) {
        return true;
    } else {
        return false;
    }
}
//Valida que el valor recibido no contenga ning?n n?mero, dejando introducir otros caracteres especiales
function es_texto (input) {
    s = input.value;
    filteredValues = "1234567890";     // Characters stripped out
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {  // Search through string and append to unfiltered values to returnString.
        var c = s.charAt(i);
        if(es_digito(c) == true)var res =1;
        if (filteredValues.indexOf(c) == -1) returnString += c;

    }
    if(res==1){
        alert("Sólo se pueden introducir carácteres");
    }
    input.value = returnString;
}

// Valida una direccion de correo electronico (@ y .)
function validamail(strEmail) {
    if ((strEmail.indexOf("@") != -1) && (strEmail.indexOf(".") != -1)){
        return true;
    } else {
        return false;
    }
}


// Valida que los campos recibidos hayan sido rellenados
function validar_obligatorios(formulario, campos_obligatorios) {
    var n
    for (n = 0; n < campos_obligatorios.length; n++) {
        campo = campos_obligatorios[n]
        if (!obtenerValor(formulario, campo)) {
            //foco(formulario, campo);
            document.getElementById(campo).value = LTrim(document.getElementById(campo).value);
            return false;
        }
    }
    return true
}

// Quita los espacios en blanco al principio de un campo
function LTrim(str) {
    for (var i=0; ((str.charAt(i)<=" ")&&(str.charAt(i)!="")); i++);
    return str.substring(i,str.length);
}

// Valida que el valor recibido tenga formato de a?o (4 cifras)
function validaAnyo(anyo) {
    var j
    if (anyo.length != 4) {
        return false
    }
    for (j = 0; j < anyo.length; j++) {
        if (!es_digito(anyo.charAt(j))) {
            return false
        }
    }
    return true
}

function validarFecha(campo) {
    f = campo.value;
    if (campo.value.length == 10) {
        var dia = f.substr(0,2);
        var mes = f.substr(3,2);
        var anyo  = f.substr(6,4);
        var ndia  = parseInt(dia, 10);
        var nmes  = parseInt(mes, 10);
        var nanyo = parseInt(anyo, 10);
        var dias  = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        if (nanyo % 4 == 0 && nanyo % 400 != 0) {
            dias[1] = 29;
        }
        if (nmes >= 1 && nmes <= 12 && ndia >= 1 && ndia <= dias[nmes-1] ) {
            campo.value = dia + "/" + mes + "/" + anyo;
            return true;
        } else {
            alert(ERR_FECHA_INVALIDA);
        }
    } else if (campo.value) {
        alert(ERR_FECHA_FORMATO);
        campo.value = "";
        campo.focus();
    }
//    campo.value = "";
    campo.focus();
    return false;
}

function validarRangoFechas(campo1, campo2) {
    if (campo1.value.length == 10 && campo2.value.length == 10) {
        var dia  = campo1.value.substr(0,2);
        var mes  = campo1.value.substr(3,2);
        var anyo = campo1.value.substr(6,4);
        var nFecha1 = new Number(anyo+mes+dia);
        var dia  = campo2.value.substr(0,2);
        var mes  = campo2.value.substr(3,2);
        var anyo = campo2.value.substr(6,4);
        var nFecha2 = new Number(anyo+mes+dia);
         if (nFecha1 <= nFecha2) {
            return true
        }
    }
    return false
}

function validarFechaAnyos(campo,anyoini,anyofin) {
    if (validarFecha(campo)) {
        var anyo  = campo.value.substr(6,4);
        var nanyo = parseInt(anyo, 10);
        if (!(anyoini<=nanyo && nanyo<=anyofin)) {
            alert(ERR_FECHA_RANGOANYOSINVALIDO + anyoini + '-' + anyofin);
            campo.focus();
            return false;
        }
    }
    return true;
}


