function validarFecha(dia, mes, anyo) {
    
    if (!anyo) return false;
    if (anyo<1850) return false;
    if (!mes) return false;
    if (!dia) return false;
    var test = new Date(anyo, mes-1, dia);
    if ( (test.getFullYear() != anyo) || (mes-1 != test.getMonth()) || (dia != test.getDate()) ) return false;
    return true;
}

function ValidacionFecha(fecha, sep) {
    var numeros = "0123456789";
    var pos1 = fecha.indexOf(sep);
    var pos2 = fecha.indexOf(sep, pos1+1);
    var dia, mes, ano;
    var i;
    
    if ((pos1 == -1)||(pos2 == -1)) {
        return "";
    }
    dia = fecha.substring(0, pos1);
    mes = fecha.substring(pos1+1, pos2);
    ano = fecha.substring(pos2+1, fecha.length);
    
    if ((dia.length < 1)||(dia.length > 2)) {
        return "";
    }
    for(i=0;i<dia.length;i++) {
        if (numeros.indexOf(dia.charAt(i)) == -1) {
            return "";
        }
    }
    
    if (dia < 1) {
        return "";
    }

    if ((mes.length < 1)||(mes.length > 2)) {
        return "";
    }
    for(i=0;i<mes.length;i++) {
        if (numeros.indexOf(mes.charAt(i)) == -1) {
            return "";
        }
    }

    if (ano.length != 4) {
        return "";
    }
    for(i=0;i<ano.length;i++) {
        if (numeros.indexOf(ano.charAt(i)) == -1) {
            return "";
        }
    } 

    if (parseInt(ano,10) < 1880) {
        return "";
    }
    
    if (validarFecha(parseInt(dia,10), parseInt(mes,10), parseInt(ano,10))) {
        if (dia.length == 1) dia = "0" + dia;
        if (mes.length == 1) mes = "0" + mes;
        return dia + "/" + mes + "/" + ano
    }
}


function ValidarTelefono(numero) {
	if (ValidarFijo(numero)||ValidarMovil(numero)) {
		return true;
	} else {
		return false;
	}
}


function ValidarFijo(numero){
	var NUMEROS="1234567890";
	if (numero.length==9) {
		for (var i=0;i<numero.length;i++) {
			if (NUMEROS.indexOf(numero.charAt(i))<0) {
				return false;
			}
			if ((numero.charAt(0)!='9'||numero.charAt(1)==0)) {
				return false;
			}
		}
		return true;
	} else {
		return false;
	}
}


function ValidarMovil(numero){
	var NUMEROS="1234567890";
	if (numero.length==9) {
		for (var i=0;i<numero.length;i++) {
			if (NUMEROS.indexOf(numero.charAt(i))<0) {
				return false;
			}
			if (numero.charAt(0)!='6') {
				return false;
			}
		}
		return true;
	} else {
		return false;
	}
}




function ValidarDirCorreoElectronico(email) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.";
    var i;
    var pos_arroba = email.indexOf("@");
    var pos_ultimo_punto = email.lastIndexOf(".");
    var email_minus = email.toLowerCase();
    var login;
    
    if (pos_arroba == -1) {
        return false;
    }
    if (email_minus.indexOf("login@yaonline.es") != -1){
        return false;
    }
    if (pos_ultimo_punto == -1) {
        return false;
    }
    if (email.charAt(pos_arroba+1)=='.') {
    	return false;
    }
    login = email.substring(0, pos_arroba);
    for(i=0;i<login.length;i++) {
        if (caracteres.indexOf(login.charAt(i)) == -1) {
	        return false;
        }
    }    
    valido = true;
    trozo = email.substring(1+pos_arroba, pos_ultimo_punto);
    for(i=0;i<trozo.length;i++) {
        if (caracteres.indexOf(trozo.charAt(i)) == -1) {
	        return false;
        }
    }    
    valido = true;
    trozo = email.substring(1+pos_ultimo_punto, email.length);    
    if ((trozo.length >= 2)&&(trozo.length <= 4)) {
        for(i=0;i<trozo.length;i++) {
            if (caracteres.indexOf(trozo.charAt(i)) == -1) {
		        return false;
            }
        }    
    } else {
        return false;
    }
    return true;
}    


function validaCP(f)
{
	if (!esDigito(f.DIR_CP.value)){
		alert("El Código Postal debe ser numérico");
		f.DIR_CP.focus();
		return false;
	}
    
    if (f.DIR_CP.value.length!=5){ 
		alert("El Código Postal debe tener 5 dígitos");	
		f.DIR_CP.focus();
		return false;
	}
	var provinciaSeleccionada = f.PRO_ID_PROVINCIA.options[f.PRO_ID_PROVINCIA.selectedIndex].value;
	while (provinciaSeleccionada.length<2) provinciaSeleccionada = "0" + provinciaSeleccionada;
	
	if (f.DIR_CP.value.substring(0,2)!=provinciaSeleccionada){ 
		alert("El Código Postal introducido no se corresponde con la provincia seleccionada.");	
		f.DIR_CP.focus();
		return false;
	}

	return true;
}

function isGenericText(cadenaEntrada, caracteres) {
/* cadenaEntrada = cadena que se quiere averiguar si está formada por caracteres válidos.
   caracteres = lista de caracteres que se consideran válidos para un propósito determinado. */

   for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}

function esTextoPassword(cadenaEntrada) {
   /* sin puntos "." si eñes "ñ/N" */
   var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
   return isGenericText(cadenaEntrada, caracteres);
}

function esTexto(cadenaEntrada) {
   var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_";
   return isGenericText(cadenaEntrada, caracteres);
}

function esTextoMinusculas(cadenaEntrada) {
   var caracteres = "abcdefghijklmnopqrstuvwxyz0123456789.-_";
   return isGenericText(cadenaEntrada, caracteres);
}	

function esTextoCompleto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ -.,?!¿¡;:()ºª$[]{}áÁéÉíÍóÓúÚñÑçÇ";
   return isGenericText(cadenaEntrada, caracteres);
}	


function esDigito(cadenaEntrada)
{

	for (i=0;i<cadenaEntrada.length;i++)
	{

		if  ( isNaN(parseInt(cadenaEntrada.substring(i,i+1),10)) ) return (false);	//Netscape

		if ((cadenaEntrada.substring(i,i+1))!=(parseInt(cadenaEntrada.substring(i,i+1),10))) return (false);	//Explorer


	}
	return (true);

}



function validaCC(e,o,d,n) {
	var pesos = new Array (6,3,7,9,10,5,8,4,2,1);
	
	var total=e*10000+o*1;
	
	var acc=0;
	for (var i=0;i<8;i++){
		var c = total%10;
		acc	= acc + c*pesos[i];
		total=(total-c)/10;
	}
	var dig1=acc%11;
	dig1=11-dig1;
	if (dig1==10) dig1=1;
	if (dig1==11) dig1=0;


	total=n;
	acc=0;
	
	for (var i=0;i<10;i++){
		var c = total%10;
		acc	= acc + c*pesos[i];
		total=(total-c)/10;
	}
	var dig2=acc%11;
	dig2=11-dig2;
	if (dig2==10) dig2=1;
	if (dig2==11) dig2=0;

	
	var dig=dig1*10+dig2;
	
	if (d!=dig) return false;
	return true;
}


function ignoreSpaces(string) {
	var temp = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	temp += splitstring[i];
	return temp;
}



function esCadenaValida(cadenaEntrada) {
	var caracteresMal = "\'\%\"\^\*\\";
	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteresMal.indexOf(c)!=-1) {
			return false;
		}
	}
	return (true);
}	


function esCadenaNumerica(cadenaEntrada) {
	var caracteresValidos = "0123456789";
	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteresValidos.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	