

//Recibe una fecha en formato cadena (DD/MM/YYYY) y devuelve cierto
//si es correcta (descarta 30/02/2002, por ejemplo)
function fechaCorrecta(fecha){
   var dia =0;
   var mes =0;
   var anio =0;
   var sFecha ="";

   if(fecha){
      sFecha =fecha.split('/');
      if (sFecha.length ==3)
      {
       dia  =parseInt(sFecha[0],10);
       mes  =parseInt(sFecha[1],10);
       if (sFecha[2].length==2)
        {
         anio =parseInt("20"+sFecha[2],10);
        }
       else anio =parseInt(sFecha[2],10);

       if(!isNaN(dia) && !isNaN(mes) && !isNaN(anio) &&
         (anio >=1900) && (anio <=2200) &&
         (mes >=1) && (mes <=12) &&
         (dia>=1) && (dia<=31))
       {
          switch(mes){
             case 1:
             case 3:
             case 5:
             case 7:
             case 8:
             case 10:
             case 12:
                return true;
                break;

             case 4:
             case 6:
             case 9:
             case 11:
                return (dia<=30);
                break;

             case 2:  //Febrero
                if( ( (anio % 100)==0  && (anio%400)==0) || ((anio%100)!=0 && (anio%4)==0 ) )
                   return (dia<=29);
                 else
                   return (dia<=28);
                break;
          }//switch
       } //isNaN(...)
    }
    }
    return false;
}


function IsDigit()
{
	return (((event.keyCode >= 48) && (event.keyCode <= 57)) ||  (event.keyCode == 37))
}


function IsDigit_coma(obj)
{
	if (obj.value.length == 0){
		//primera pulsacion.  no controlar comas
		return (((event.keyCode >= 48) && (event.keyCode <= 57)) ||  (event.keyCode == 37) ||  (event.keyCode == 44))
	}else{
		var i;
		var longitud = obj.value.length;
		var caracter;
		var devolver = 0;
		for(i=0;i<longitud;i++){
			caracter = obj.value.charAt(i)
			if ((i == 0) && (caracter == '.')){
				//el primer caracter escrito es una coma, incorrecto
				alert('El primer digito no puede ser una coma')
				devolver = 1;
			}
			if ((caracter == '.') && (event.keyCode == 44)){
				alert('Solo puede introducir una coma')
				devolver = 1;
			}
		}
		if (devolver == 0){
			// no hay mas de una coma, correcto
			return (((event.keyCode >= 48) && (event.keyCode <= 57)) ||  (event.keyCode == 37) ||  (event.keyCode == 44))
		}else{
			// error
			obj.value = ''
			return false;
		}
	}
}

/* VALIDA SI ES NUMERICO

LLAMADA:
<cfinput type="Text" name="numtitulos" message="DEBE INTRODUCIR Nº TITULOS." validate="integer" required="Yes" size="3" maxlength="3" onchange="return isNumero(this)">  

*/
	function esNumerico (object_value)
    {
	   
	    if (object_value.length == 0)
	        return true;
	
		var start_format = " .+-0123456789";
		var number_format = " .0123456789";
		var check_char;
		var decimal = false;
		var trailing_blank = false;
		var digits = false;
	
	    //The first character can be + - .  blank or a digit.
		check_char = start_format.indexOf(object_value.charAt(0))
	    //Was it a decimal?
		if (check_char == 1)
		    decimal = true;
		else if (check_char < 1)
			return false;
	        
		//Remaining characters can be only . or a digit, but only one decimal.
		for (var i = 1; i < object_value.length; i++)
		{
			check_char = number_format.indexOf(object_value.charAt(i))
			if (check_char < 0)
				return false;
			else if (check_char == 1)
			{
				if (decimal)		// Second decimal.
					return false;
				else
					decimal = true;
			}
			else if (check_char == 0)
			{
				if (decimal || digits)	
					trailing_blank = true;
	        // ignore leading blanks
	
			}
		        else if (trailing_blank)
				return false;
			else
				digits = true;
		}	
	    //All tests passed, so...
	    return true;
		
    }
	
	function esNumericoComa (object_value)
    {
	   
	    if (object_value.length == 0)
	        return true;
	
		var start_format = " .+-0123456789";
		var number_format = " ,0123456789";
		var check_char;
		var decimal = false;
		var trailing_blank = false;
		var digits = false;
	
	    //The first character can be + - .  blank or a digit.
		check_char = start_format.indexOf(object_value.charAt(0))
	    //Was it a decimal?
		if (check_char == 1)
		    decimal = true;
		else if (check_char < 1)
			return false;
	        
		//Remaining characters can be only . or a digit, but only one decimal.
		for (var i = 1; i < object_value.length; i++)
		{
			check_char = number_format.indexOf(object_value.charAt(i))
			if (check_char < 0)
				return false;
			else if (check_char == 1)
			{
				if (decimal)		// Second decimal.
					return false;
				else
					decimal = true;
			}
			else if (check_char == 0)
			{
				if (decimal || digits)	
					trailing_blank = true;
	        // ignore leading blanks
	
			}
		        else if (trailing_blank)
				return false;
			else
				digits = true;
		}	
	    //All tests passed, so...
	    return true;
		
    }
	
	
	function isNumero (valor) {
		if ( esNumerico(valor.value) == true)  {
			valor.form.submit()
			
		} else return false
		
		
	}

//Devulve el valor pulsado en un dato de tipo radio
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
//Selecciona un dato de tipo radio pasandole el valor del radio
function setCheckedValue(radioObj, ele) {
	alert(radioObj.length)
	var radioLength = radioObj.length;
	if(radioLength == undefined){
		radioObj.checked = 1;		
	}
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].value == ele) {
			radioObj[i].checked = 1
		}
	}
}

function compruebaSinBlancosSinCarExtranios (object_value) {
	var carateres_extranios = " %&$!\"\'/\\"
	
	for (var i = 0; i < object_value.length; i++)
	{
	check_char = carateres_extranios.indexOf(object_value.charAt(i))
	if (check_char >= 0 )
		return false;
		
	}	
	return true	
}
	
// Si es vacio devuelve FALSE
function compruebavacio(contenido)  {
     if (contenido.length==0) {
	      return false;
	   } else {
		   for (var i=0; i<contenido.length; ++i) {
		   	  if (contenido.charAt(i)!=' ' )
		         {
				   return true;
		         } 
		   }
	   }
	   return false; 
}

///Valida el C:Posta: EL CP debe tener 5 numeros.
//Nos dan el campo del CP y el campo del codigo de la provincia seleccionada.
function validarCP(obj, prov){
	var chr;
	        if (obj.value.length!=5)
	        {
	                obj.focus();
	                return false;
	        }
	   for (var i=0;i<obj.value.length;i++)
	   {
	      chr=obj.value.substring(i,i+1);
	      if ( (chr!="0") && (chr!="1") && (chr!="2") && (chr!="3") && (chr!="4") && (chr!="5") && (chr!="6") && (chr!="7") && (chr!="8") && (chr!="9") )
	            {
	               obj.focus();
	               return false;
	      }
	   }
	   //Comprobamos que los dos primeros digitos del CP coinciden con el cogigo de la provincia.
	   var cod_prov = prov.value;
	   if (cod_prov != Math.abs(obj.value.substring(0,2)) ){
	   		obj.focus();
	        return false;
	   }
	
	return true;
}

// Comprueba que el telefono tiene mas de 9 digitos, no tiene letras y empieza por 9 o 6.
function validaTelefono (obj)  {
	  var tamanio = obj.value.length
	  var primero = obj.value.charAt(0);
	  //alert (tamanio+'--'+primero);
	  if  (tamanio < 9)  {
	       //alert ('El telefono debe tener como minimo 9 numeros.')
		   obj.focus();
		   return false;
	   } else {
	   	   if (primero!='9' && primero!='6') {
		   	      alert ("El Telefono debe comenzar por '9' o '6'. ");
				  obj.focus();
				  return false;
		   } 
		    for (var i=0;i<obj.value.length;i++)
			   {
			      chr=obj.value.substring(i,i+1);
			      if ( (chr!="0") && (chr!="1") && (chr!="2") && (chr!="3") && (chr!="4") && (chr!="5") && (chr!="6") && (chr!="7") && (chr!="8") && (chr!="9") && (chr!=" ") &&  (chr!="-"))
			            {
						  obj.focus();
			              return false;
			      }
			   }
		   
	   }
	   //alert ('Telefono OK');
	   return true; 
   }
   
// Valida si es un email
function validaEmail(emailad) {
	var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check=/@[\w\-]+\./;
	var checkend=/\.[a-zA-Z]{2,4}$/;
	
		if (emailad.value == "")
		{
			//alert("Debe introducir el email");
			//emailad.focus()
			//return false
			return true
			//Si esta vacio, el valor introducido en valido porque es un dato opcional.
		}	
	
	
		if(((emailad.value.search(exclude) != -1)||(emailad.value.search(check)) == -1)||(emailad.value.search(checkend) == -1))
		{
			//alert("Debe introducir un email correcto");
			//emailad.focus()
			return false;
		} else return true
}


  
 function  validarNIF(obj) {
	 return validarNIF_Dato(obj.value)
 }

// Valida el NIF incluyendo la letra que le corresponde. Se puede introducir el numero con puntos o sin puntos.
function  validarNIF_Dato(dato) {
  if (dato == "")
  {
    //alert("Escriba el valor para el campo \"DNI\" .");
    //obj.focus();
    return (false);
  }
  
  var tamanio = dato.length;
  var letra = dato.charAt(tamanio-1).toLowerCase();
  var penultima = dato.charAt(tamanio-2);
    
   
  var digitos = "0123456789.";
  var letras =   "trwagmyfpdxbnjzsqvhlcke"
  var chequeo ;
  var correcto = true;
  //alert (letra)
  if ( letras.indexOf(letra,0)< 0) {
  	//alert("Debe de poner una Letra");
    //obj.focus();
    return (false);
  
  } 
  
  if ( penultima == '-' ) {
  	chequeo = dato.substring(0,tamanio-2) 
  } else chequeo = dato.substring(0,tamanio-1) 
  
  
  var num =""
  for (i = 0;  i < chequeo.length;  i++)
  {
    ch = chequeo.charAt(i);
	if (ch!=".") 
	  	num=num+chequeo.charAt(i);
	for (j = 0;  j < digitos.length;  j++)
	  if (ch == digitos.charAt(j))
        break;
    if (j == digitos.length)
    {
      //alert("Escriba únicamente dígitos del 0 al 9 en el campo \"DNI\".");
      //obj.focus();
      return (false);
    }
   }
   	//alert(num)
	var miletra;
	var ASC;
	ASC = num % 23;
	//alert ("asc:"+ASC)
	if ( ASC == 0) { miletra="T"; };
	if ( ASC == 1) { miletra="R"; };
	if ( ASC == 2) { miletra="W"; };
	if ( ASC == 3) { miletra="A"; };
	if ( ASC == 4) { miletra="G"; };
	if ( ASC == 5) { miletra="M"; };
	if ( ASC == 6) { miletra="Y"; };
	if ( ASC == 7) { miletra="F"; };
	if ( ASC == 8) { miletra="P"; };
	if ( ASC == 9) { miletra="D"; };
	if ( ASC == 10) { miletra="X"; };
	if ( ASC == 11) { miletra="B"; };
	if ( ASC == 12) { miletra="N"; };
	if ( ASC == 13) { miletra="J"; };
	if ( ASC == 14) { miletra="Z"; };
	if ( ASC == 15) { miletra="S"; };
	if ( ASC == 16) { miletra="Q"; };
	if ( ASC == 17) { miletra="V"; };
	if ( ASC == 18) { miletra="H"; };
	if ( ASC == 19) { miletra="L"; };
	if ( ASC == 20) { miletra="C"; };
	if ( ASC == 21) { miletra="K"; };
	if ( ASC == 22) { miletra="E"; };
	if ( ASC == 23) { miletra="T"; };
	
	if (miletra.toLowerCase()==letra) {
		 //alert ("Letras Iguales");
		 return true;
	} else {
		//alert ("Letras NO Iguales")
		return false;
	}
}

// Funcion que valida que el valor del objeto que se le pase sea un cif sino devolvera 1.correcto 0.incorrecto
//Necesita incluir la funci&oacute;n de trim y de nif en el mismo fichero

function  validarCIF(o_cif) 
{
var valor = o_cif.value;
var longitud=valor.length;
if (longitud==9)
{
dig4=valor.substr(2,1)
dig6=valor.substr(4,1)
dig8=valor.substr(6,1)
dig3=valor.substr(1,1)
dig5=valor.substr(3,1)
dig7=valor.substr(5,1)
dig9=valor.substr(7,1)
dig10=valor.substr(8,1)

dig4 = dig4 - 0
dig6 = dig6 - 0
dig8 = dig8 - 0
dig3 = dig3 - 0
dig5 = dig5 - 0
dig7 = dig7 - 0
dig9 = dig9 - 0
if (isFinite(dig10))
    {dig10 = dig10 - 0}

   
   S1 = dig4 + dig6 + dig8   
   S2 = 0
   Resultador = dig3 * 2
	
	if (Resultador < 10)
        {S2 = S2 + Resultador}
	else
	{
		 Resultador=Resultador.toString()
        r1=Resultador.substr(0,1) 
        r2=Resultador.substr(1,1) 
        r1=r1-0
        r2=r2-0
        S2 = S2 + ( r1 + r2)
	}


   Resultador = dig5 * 2
	
	if (Resultador < 10)
        {S2 = S2 + Resultador}
	else
	{
		 Resultador=Resultador.toString()
        r1=Resultador.substr(0,1) 
        r2=Resultador.substr(1,1) 
        r1=r1-0
        r2=r2-0
        S2 = S2 + ( r1 + r2)
	}


   Resultador = dig7 * 2
	
	if (Resultador < 10)
        {S2 = S2 + Resultador}
	else
	{
		 Resultador=Resultador.toString()
        r1=Resultador.substr(0,1) 
        r2=Resultador.substr(1,1) 
        r1=r1-0
        r2=r2-0
        S2 = S2 + ( r1 + r2)
	}

   Resultador = dig9 * 2
	
	if (Resultador < 10)
        {S2 = S2 + Resultador}
	else
	{
 		 Resultador=Resultador.toString()
        r1=Resultador.substr(0,1) 
        r2=Resultador.substr(1,1) 
        r1=r1-0
        r2=r2-0
        S2 = S2 + ( r1 + r2)
	}

   S = S1 + S2
      
   if (S<10)
	   	{   D = 10 - S
		}
	else if (S<20)
            	{   D = 20 - S
	    		}
	else if (S<30)
            	{   D = 30 - S
				}
	else if (S<40)
   
            	{   D = 40 - S
		}
	else if (S<50)
               	{   D = 50 - S
		}
	else if (S<60)
   
            	{   D = 60 - S
		}
	else if (S<70)
   
            	{   D = 70 - S
		}
	else if (S<80)
               	{   D = 80 - S
		}
	else if (S<90)
      	{   D = 90 - S
		}
	else
		{	
      	   D = 100 - S
		}

      if (D > 9)
		{
		          D=D.toString()
                 d1 = D.substr(1,1)
                 D = d1
                 D = D - 0
		}

var da=''
if (D==0)
   {
     da = 'J'
	}
if (D==1)
   {
     da = 'A'
	}
if (D==2)
   {
     da = 'B'
	}
if (D==3)
   {
     da = 'C'
	}
if (D==4)
   {
     da = 'D'
	}
if (D==5)
   {
     da = 'E'
	}
if (D==6)
   {
     da = 'F'
	}
if (D==7)
   {
     da = 'G'
	}
if (D==8)
   {
     da = 'H'
	}
if (D==9)
   {
     da = 'I'
	}

	
   if (isFinite(dig10))
   {
	  if (D == dig10)
	  {
                return true; 
	  }
	}
	else
	{dig10=dig10.toString()
	 dig10=dig10.toUpperCase()
	 if (da==dig10) 
	   {
                return true; 
	  }
    }
	    
}	
return false;
}


// Valida el NIE (T. de Residencia).
function  validarNIE(obj) {
  if (obj.value == "")
  {
    //alert("Escriba el valor para el campo \"DNI\" .");
    //obj.focus();
    return (false);
  }
  
  var tamanio = obj.value.length;
  
  var letra = obj.value.substring(0,1);
  var resto = obj.value.substring(1,obj.value.length);
  
    
  if ( (letra == 'x' || letra == 'X') &&  validarNIF_Dato(resto)) {
	  return true
  } else return false
  
  return true
}

 // Comprueba si la longitud de TextArea es correcta
 // LLamada: <textarea name="OBSER_DG" cols="24" rows="3" onKeyUp="LongitudTextoArea(this, 250)"></textarea>
 function LongitudTextoArea(elemento, longitud) {
	 var longitud_maxima = longitud;
	 var longitud_texto = elemento.value.length;
	 if (longitud_texto > longitud_maxima) {
	  elemento.value = elemento.value.substring(0,longitud_maxima);
	  alert ("EL TEXTO TIENE QUE TENER UN MÁXIMO DE "+longitud_maxima+" CARACTERES.");
	  elemento.focus();
	  return false
	 } else {
	  return true;
	 }
	 
}

// Valida el sexo. Si se introdujo V de Varon o H de hembra
function validaSexo(s) {
	//alert(s.value.toLowerCase());
	if (s.value == "")
		{
			return true
			//Si esta vacio, el valor introducido en valido porque es un dato opcional.
		}	
	
	
		if( (s.value.toLowerCase() != 'v') && (s.value.toLowerCase() != 'h'))
		{
			alert("Debe introducir un valor correcto. (V / H)");
			s.focus()
			return false;
		}
}



