///// Funciones para validar formularios /////

// Devuelve TRUE si la cadena contiene al menos una letra
function validaAlfanumerico(str) {
    return -1 != str.search(/[a-z]/i);
}
// Devuelve TRUE si la cadena contiene solo letras
function validaAlfabetico(str) {
    return -1 != str.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) {
    return str.charAt(0)!="0" && -1 != str.search(/^[0-9]{1,3}(\.[0-9]{3})*(,[0-9]{1,2})?$/);
}
// 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;
}


/////////////////////////////////////////////////////

// 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 = parseInt(anyo+mes+dia, 10);
        var dia  = campo2.value.substr(0,2);
        var mes  = campo2.value.substr(3,2);
        var anyo = campo2.value.substr(6,4);
        var nFecha2 = parseInt(anyo+mes+dia, 10);
        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;
}

function validarFechaSelect(selectDia, selectMes, selectAnyo) {
    if ((selectDia.value != "") && (selectMes.value != "") && (selectAnyo.value != "")) {
        var dia = selectDia.value;
        var mes = selectMes.value;
        var anyo  = selectAnyo.value;
        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] ) {
            return true;
        } else {
            alert(ERR_FECHA_NO_VALIDA);
        }
    } else {
        alert(ERR_FECHA_NO_VALIDA);
    }
    return false;
}


