// comprueba textareas
function ComprobarTextArea(s, campo, msg,tam)
{
  if ( s.length>tam)
  {
     alert(campo + ": " + msg);
     return false;
  }
  else return true;
}

// comprueba que el password esté dentro del rango de caracteres.
function ComprobarPassword(s, campo, msg)
{
  if ( s.length<5 || s.length>20)
  {
     alert(campo + ": " + msg);
     return false;
  }
  else return true;
}

function Vacio(s)
{
    if ((s == null) || (s.length == 0))
    {
    	return true;
    }
    else return false;
}
// mira que el campo pasado no esté en blanco
function Vacio1(s, msg, campo)
{
    if (Vacio(s))
    {
    	alert(msg + '\n' + campo);
    	return true;
    }
    else return false;
}

function trim (s)
{
    var i = 0;

    while ((i < s.length) && (s.charAt(i)==' '))
       i++;
    
    return s.substring (i, s.length);

}

function es_digito( s )
{
   if( s < '0' || s > '9' )
      return false;
   return true; 
}

// mira que la cadena pasada sea un digito numerico y que no esté en blanco
function es_numero1( s, msg )
{
    if (!es_numero(s) && !Vacio(s))
    {
    	alert(msg);
    	return true;
    }
    else return false;
}

function es_numero( s )
{
   for( i=0; i<s.length; i++ )
   {
      if (!es_digito(s.charAt( i )))
         return false;
   }
   return true;
}
// mira que el formato de la fecha esté bien introducido
function es_fecha1(s, msg )
{

  if (!Vacio( s ) )
  {  
    if( !es_formato_fecha( s ) )
    {
      alert("El formato de la fecha debe ser: DD.MM.YYYY");
      return false;
    }
    if( !es_fecha( s ) )
    {
      alert(msg);
      return false;
    }
    return true;
  }
  return true;
}

function es_formato_fecha( s )
{
   if( s.length != 10 )
      return false;

   for( k=0 ; k<10 ; k++ )
   {
      if( k == 2 || k == 5 )
      {
         if( s.charAt( k ) != '.' )
            return false;
      }
      else
      {
         if( !es_digito( s.charAt( k ) ) )
            return false;
      }
   }
   return true;
}

function es_mes( s1, s2 )
{
   if (Vacio(s2))
   {
      s2 = s1;
      s1 = '0';
   }	
   mes = s1 + s2;
   if( mes < 1 || mes > 12 )
      return false;
   else return true;
} 
// compara fechas (mismo formato)
function compara_fechas(d1,m1,a1,d2,m2,a2,msg)
{
  var f1 = new Date(m1+' '+d1+', '+a1);
  var f2 = new Date(m2+' '+d2+', '+a2);
  if (f1 > f2)
    {
    //alert("Compara fechas=>"+f1+">"+f2);
     alert(msg);
     return true;
    }
  else{
   return false;
  }  
}  
// compara fechas (diferente formato)
function compara_fechas2(d1,m1,a1,d2,m2,a2,msg)
{
  var f1 = new Date(m1+' '+d1+', '+a1);
  var f2 = new Date(a2,m2,d2);
  //alert("Compara fechas2=>"+f1+">"+f2);
  if (f1 > f2)
    {
    
     alert(msg);
     return true;
    }
  else{
   return false;
  }  
}  

// mirar que la fecha introducida no sea menor que la fecha actual
function menor_factual(d,m,a,msg)
{
    var today = new Date();
    var h   = today.getHours();
    var min = today.getMinutes();
    var sec = today.getSeconds();
    var ms  = today.getMilliseconds();
    var fintro = new Date(m+' '+d+', '+a+' '+h+':'+min+':'+sec);
    fintro.setMilliseconds(ms);
    //alert(fintro+"<"+today);
    if (fintro < today){ 
      //alert("La fecha introducida ("+d+"/"+m+"/"+a+") es menor que la fecha actual");
      
        alert(msg);
      	return true;
      }
    else{return false;}  
    	
}   
// mira que la cadena pasada sea una fecha bien introducida
function es_fecha( s )
{
   if( s.length != 10 )
      return false;
   dia = s.charAt(0) + s.charAt(1);
   mes = s.charAt(3) + s.charAt(4);
   anyo = s.charAt(6) + s.charAt(7) + s.charAt(8) + s.charAt(9);
   if( dia < 1 || dia > 31 )
      return false;
   if( !es_mes(s.charAt(3), s.charAt(4)))
      return false;
   if( anyo < 1901 || anyo > 3010 )
      return false;
   if( ( mes == 4 || mes == 6 || mes == 9 || mes == 11 ) && ( dia > 30 ))
      return false;
   if( ( anyo % 4 != 0) && ( mes == 2 ) && ( dia > 28 ) )
      return false;
   if( ( anyo % 4 == 0) && ( mes == 2 ) && ( dia > 29 ) )
      return false;
   return true;
}


function es_alfa( s )
{
   if( ( s >= 'a' && s <= 'z' ) || ( s >= 'A' && s <= 'Z' ) )
      return true;
   return false;
}

// mira que la cadena pasada sea alfanumerica
function es_alfanumerico( s )
{
   if( !es_digito( s ) && !es_alfa( s ) )
      return false;
   return true; 
}

//mira que el codigo postal no esté vacio y bien introducido.
function es_CP1(s, msg)
{
    if (!es_CP(s) && !Vacio(s))
    {
    	alert(msg);
    	return false;
    }
    else return true;
}


function es_CP( s )
{
   if( s.length != 5 )
      return false;
   if (!es_numero(s))
     return false;
   else
     return true; 
}

// mira que el NIF no esté vacio y bien introducido
function es_NIF1(s, msg)
{
    if (!es_NIF(s) && !Vacio(s))
    {
    	alert(msg);
    	return false;
    }
    else return true;
}

// mira que el campo que se le pasa sea numerico
function es_cadena_numerica( s )
{
   var i;
   for( i = 0 ; i < s.length ; i++ )
      if( !es_numero( s.charAt( i ) ) )
         return false;
   return true;
}


// mira que el NIF este bien introducido
function es_NIF( s )
{
   cadena = s.substring(0, s.length-1);
   if( !es_cadena_numerica( cadena ) )
      return false;
   if( !es_alfa( s.charAt( s.length-1 ) ) )
      return false;
   return true; 
}

// mira que el numero de telefono no esté vacio y sea numerico.
function es_telefono1(s, msg)
{
    if (!es_telefono(s) && !Vacio(s))
    {
    	alert(msg);
    	return false;
    }
    else return true;
}

function es_telefono( s )
{
   if( s.length != 9 )
      return false;
   if (!es_numero(s))
     return false;
   else
     return true; 
}


// mira que el e-mail no esté vacio y bien escrito.
function es_direccion_simple1(s, msg)
{
    if (!es_direccion_simple(s) && !Vacio(s))
    {
    	alert(msg);
    	return false;
    }
    else return true;
}


function es_direccion_simple( direccion )
{
   arroba = 0;
   punto = 0;
   caracter = 0;
   longit = direccion.length;
   anterior_punto = false;
   for( i = 0; i < longit; i++ )
   {
      if( direccion.charAt( i ) == ' ' || direccion.charAt( i ) == ',' ||
      direccion.charAt( i ) == 'ñ' || direccion.charAt( i ) == 'ç' ||
      direccion.charAt( i ) == 'Ñ' || direccion.charAt( i ) == 'Ç' ||
      direccion.charAt( i ) == ';' )
      {
         arroba = 1000;
         break;
      }
       
      if( es_alfanumerico( direccion.charAt( i ) ) )
         caracter++;

      if( direccion.charAt( i ) == '@' )
      {
         if( caracter == 0 )
         {
            arroba = 1000;
            break;
         }
         else
         {
            caracter = 0;
            arroba++;
         }
      }
         
      if( direccion.charAt( i ) == '.' )
      {
         if( anterior_punto || caracter == 0 )
         {
            arroba = 1000;
            break;
         }
         if( caracter != 0 )
         {
            if( arroba > 0 )
               punto++;
            anterior_punto = true;
            caracter = 0;
         }
      }
      else
         if ( anterior_punto )
            anterior_punto = false;
   }
      
   if( ( arroba != 1 ) || ( punto == 0 ) || ( caracter == 0 ) )
      return false;
   else
      return true;
}
  
function busca_extension(doc)
{
  var i = 0;
  while ((i < doc.length) && (doc.charAt(i)!='.'))
       {
  	i++;
       }
  return doc.substring(i, doc.length);
}

function getDate (fecha, formato)
{
 if ((fecha == 'hoy')||(fecha == 'today')) {
 	return new Date();
 }
 s = fecha;
 dia = s.charAt(0) + s.charAt(1);
 mes = s.charAt(3) + s.charAt(4);
 anyo = s.charAt(6) + s.charAt(7) + s.charAt(8) + s.charAt(9);

 var fechaDate = new Date(parseInt(anyo), parseInt(mes)-1, parseInt(dia),0,0);	
 return fechaDate;
}

function fechaMenor (fecha1, fecha2, formato)
{
 var date1 = getDate(fecha1);
 var date2 = getDate(fecha2);

 if (date1 < date2) {
 	return true;
 }
 else {
 	return false;
 }
}

//Funcion q comprueba que un input type=text solo admita valores numericos(8,2) maximo parte entera 8, parte decimal 2
function checkDecimals(fieldName, fieldValue, nombreInput) 
{

	decimalMax = 2;  // how many decimals are allowed?
	enterosMax = 8;

	if (isNaN(fieldValue) || fieldValue == "") 
	{
		alert("No introdujo un número válido en " + nombreInput);
		fieldName.select();
		fieldName.focus();
		return false;
	}else{
		if (fieldValue.indexOf('.') == -1) fieldValue += ".";
			dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);

		if (dectext.length > decimalMax)
		{
			alert ("El máximo de decimales en " +nombreInput + " es de " + decimalMax);
			fieldName.select();
			fieldName.focus();
			return false;
		}
		dectext = fieldValue.substring(0,fieldValue.indexOf('.'));
		
		if (dectext.length > enterosMax)
		{
			alert('El máximo de enteros en ' + nombreInput + ' es de ' + enterosMax);
			fieldName.select();
			fieldName.focus();
			return false;
		}
	}
	return true;
}
// Chequea el nif y si es incorrecto te genera el bueno
function checkNIF(nif)
{
    if (nif.length==0) 
    {
      alert ("Debe facilitarnos un número de documento que le identifique:");
      return(false);
    }
    var letras=0;
    var numero = "";
    var letraMin = ""; //para guardar la letra y pasarla a mayusculas

    for (var i=0; i<nif.length; i++) 
    {
      var ch = nif.substring (i, i+1);
      if ( (ch < "0" || ch > "9") && (ch < "a" || ch > "z") && (ch < "A" || ch > "Z") )
      {
        alert("El número de documento identificativo facilitado no es correcto\nSólo se admiten dígitos y letras");
        return(false);
      }else{
      	if ( ch >= "0" && ch <= "9" )
      	numero = numero + ch;//guardo la parte numerica para calcular la letra
      }
      if ( (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") )
      {
      	letraMin = ch;
        letras++;
      }  
    }
    if (letras>=2 || letras==0)
    {
      alert("El número de documento identificativo facilitado no es correcto");
      return(false);
    }
   
    var nifCorrecto = generaNIF(numero);

    if (nifCorrecto == nif.toUpperCase()) {
    	return true;
    }else{
    	alert('La letra no es correcta,\n El NIF seria: ' + nifCorrecto);
    	return false;
    }
}

function generaNIF(dni){

    var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
    var numero = dni%23;
    var letra = letras.substring(numero,numero+1);
    dni = dni + letra;

	/*Para comprobar que el número introducido es correcto deberemos de comprobar que son 8 dígitos.
	  Dicha comprobación la realizaremos mediante una expresión regular.
	if (!/^\d{8}$/.test(dni)) {
	  alert ("El numero introducido no es valido");
	  return false;
	}
	*/  

     return dni;

}

// comprueba que el primer digito es o no una letra
function esCif(nif)
{

    if (nif.length==0) 
    {
        alert ("Debe facilitarnos un número de documento que le identifique:");
        return(false);
    }
    
    var letra = nif.substring(0);
    
    if ( (letra >= "a" && letra <= "z") || (letra >= "A" && letra <= "Z") )
    {
    	return true;
    }else{
    	return false;
    }

}

//Esta funcion comprueba cadenas alfanuméricas y con _,-, 
function es_solo_cadena(s,msg) {
	
	var codigovalido=/^[A-Za-záéíóúÁÉÍÓÚ\s]+$/;
		
	if (!codigovalido.test(s)) {
		alert(msg);
		return false
	}

	return true;
}

function es_cadena(s,msg) {
	
	var codigovalido=/^[A-Za-záéíóúÁÉÍÓÚ\d\-\/\º\ª\,\.\s\\]+$/;
		
	if (!codigovalido.test(s)) {
		alert(msg);
		return false
	}

	return true;
}

function es_numerico(s,msg) {
	
	var codigovalido=/^\d*$/;
		
	if (!codigovalido.test(s)) {
		alert(msg);
		return false
	}

	return true;
}

function es_contrasena(s,msg) {
	
	var codigovalido=/^\w+$/;
		
	if (!codigovalido.test(s)) {
		alert(msg);
		return false
	}

	return true;
}


  
  
  
  
//  End -->
