// ************************************************************************** //
// * Funcion que controla los caracteres introducidos en un campo de texto. * //
// * Se introduce la cadena y una condición, dependiendo de ella se compara * //
// * con los grupos de caracteres requeridos.																* //
// ************************************************************************** //
function caracter(cadena,tipo)
{
  var c=0;

  letras="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  numero="0123456789.";
  numero2="0123456789";
  caracter_control="§#!|ºª\"\\·$%&/()=?¿¡{}+*'[]_,;:<>";
  letras_especiales="ñÑàèìòùáéíóúüçÁÉÍÓÚÜÇ ";
  signos_puntuacion=".,;:";

	if (tipo == "es_numero") {
  	for (c=0;c<cadena.length;c++) 
    	if (numero.indexOf(cadena.charAt(c)) == -1) 
				return false;
	}
	
	if (tipo == "es_numero2") {
  	for (c=0;c<cadena.length;c++) 
    	if (numero2.indexOf(cadena.charAt(c)) == -1) 
				return false;
	}
	
	if (tipo == "no_numero") {
  for (c=0;c<cadena.length;c++)
    if ((numero.indexOf(cadena.charAt(c)) != -1) ||(caracter_control.indexOf(cadena.charAt(c)) == 1))
      return false;
  }    

	if (tipo == "es_letra") {
  	for (c=0;c<cadena.length;c++)
    	if (letras.indexOf(cadena.charAt(c)) == -1)
      	return false;
  }

	if (tipo == "numero_letra") {
 		for (c=0;c<cadena.length;c++)
    	if ((letras.indexOf(cadena.charAt(c)) == -1) && (letras.indexOf(cadena.charAt(c)) == -1) && (letras_especiales.indexOf(cadena.charAt(c)) != -1))
      	return false;
  }

	if (tipo == "caracter_control") {
  	for (c=0;c<cadena.length;c++)
    	if (caracter_control.indexOf(cadena.charAt(c)) != -1) 
      	return false;
  }

	if (tipo == "no_especial") {
  	for (c=0;c<cadena.length;c++)
    	if ((numero.indexOf(cadena.charAt(c)) == -1) && (letras.indexOf(cadena.charAt(c)) == -1) && (signos_puntuacion.indexOf(cadena.charAt(c)) == -1) )
      	return false;
  }
	
	return true;		
}


function eliminaCerosIzq(cadena) {
	cad = new String(cadena);
	while(cad.substring(0,1)=="0" && cad.length>1)
  	cad=cad.substring(1,cad.length);
  return parseInt(cad);
}

function es_fecha(valor,opr) {
	fecha = new String(valor);
	
	pos1 = fecha.indexOf('-',0);
 	pos2 = fecha.indexOf('-',pos1+1);
	
	dia = fecha.substring(0,2);
  mes = fecha.substring(pos1+1,pos2);
  ano2 = fecha.substring(6,10);
	ano = eliminaCerosIzq (fecha.substring(pos2+1,fecha.length));
	
	if (fecha.length==0) {
		return true;
  }
		  
	if (pos1 == -1 || pos2 == -1 || pos1 != 2 || pos2 != 5) {
  	alert ("La fecha introducida no es válida.\nEl formato correcto es 'dd-mm-aaaa'");
    return false;
  }
	   
	if (ano <= 1898) {
  	alert ("La fecha es incorrecta.\nEl año ha de ser superior a 1898");
  	return false;
  }
  
	if ( !(caracter(dia,"es_numero")) || !(caracter(mes,"es_numero")) || !(caracter(ano2,"es_numero")) ) {
  	alert ("La fecha ha de expresarse en números.\nEl formato correcto es 'dd-mm-aaaa'");
		return false;
  }
  
	if ((dia < 1) || (dia > 31) || (mes < 1) || (mes > 12) || (ano < 0)) {
    alert ("La fecha es incorrecta.\nHay valores fuera de rango");
    return false;
  }
  
	if ( mes == 2 ) {
  	if ( dia > 29 ) {
    	alert ("La fecha es incorrecta, Febrero no tiene ese día.\nEl formato correcto es 'dd-mm-aaaa'");
      return false;
    }
    
		if ((dia ==29 ) && !((ano % 400 == 0 ) || ((ano % 4 == 0) && !(ano % 100 ==0)))) {
    	alert ("La fecha es incorrecta, el año " + ano + " no es bisiesto.\nEl formato correcto es 'dd-mm-aaaa'");
      return false;
    }
  }
  	else if (( dia == 31 ) && (( mes == 4 ) || ( mes == 6 ) || ( mes == 9 ) || ( mes == 11 ))) {
    	alert ("La fecha es incorrecta, el mes especificado no tiene 31 días.\nEl formato correcto es 'dd-mm-aaaa'");
      return false;
    }
        
	if (opr==1) {
		if (!fecha_actual(dia,mes,ano))
    	return false;
		}									        
	
	return true;
}


/* function es_hora(valor) {
	hora = new String(valor);
	
	pos1 = hora.indexOf(':',0);
 	pos2 = hora.indexOf(':',4);
	pos3 = hora.indexOf(':',7);
	
	hora = hora.substring(0,2);
        min = hora.substring(pos1+1,pos2);
	seg = hora.substring(pos2+1,pos3);
	
	alert(hora+":"+min+":"+seg);
}  */

//********************************************************************************************
  //Función EsEmail
  //Comprueba si se trata de un email correcto o no 
  //*******************************************************************************************
  function EsEmail(campo)
  {
	var sPart1,sServer,iUltimopunto,iBlanco,bOk,iCont;	
	bOk=false;
	//buscamos algun blanco
	sBlanco=campo.split(" ");	
	if(sBlanco.length==1)
	{		
		sPart1=campo.split("@");		
		if(sPart1.length==2)
		{
			sPart2=sPart1[1].split(".");
			iUltimopunto=(sPart2.length);	
			if (iUltimopunto>=2)
			{
				//debido a que los arrays empiezan en 0
				iUltimopunto=iUltimopunto-1
				if((sPart2[iUltimopunto].length>1) & (sPart2[iUltimopunto].length<4))
				{
					//hasta aqui todo esta ok
					bOk=true;														
					for(iCont=0;iCont<iUltimopunto+1;iCont++)					{					
						
						//comprobamos si hay algo entre los puntos
						if(sPart2[iCont].length<=0)
						{
							bOk=false;							
						}
					}					
				}
			}			
		}
		
	}
	return(bOk);
  }
		  
