// Juan Marí. Agosto 2001

// -----------------------------------------
// Validamos fecha.
// Formato de fecha: dd-mm-yyyy o yyyy-mm-dd
// -----------------------------------------

function fvalfecha(f) {
 var separador;
 var dd;
 var mm;
 var yyyy;
 var esbisiesto;


 if (f.indexOf('-') == -1 && f.indexOf('/') == -1)
  return(false) ;
 
 if (f.indexOf('-') != -1) separador = f.indexOf('-');
 else separador = f.indexOf('/'); 

 if (separador == 2) { // formato de fecha dd-mm-yyyy
  dd   = f.substring(0,2);
  mm   = f.substring(3,5);
  yyyy = f.substring(6,10);
 }
 else { // formato de fecha yyyy-mm-dd
  yyyy = f.substring(0,4);
  mm   = f.substring(5,7);
  dd   = f.substring(8,10);
 }
 
 // Validamos que el día sea numérico y esté entre 1 y 31

 if (    dd.substring(0,1) < '0' || dd.substring(0,1) > '9'
      || dd.substring(1,2) < '0' || dd.substring(1,2) > '9'
    ) 
  return(false);

 
 if (   eval(dd*1) < 1  
     || eval(dd*1) > 31
    )
  return(false);
  
 // Validamos que el mes sea numérico y esté entre 1 y 12

 if (    mm.substring(0,1) < '0' || mm.substring(0,1) > '9'
      || mm.substring(1,2) < '0' || mm.substring(1,2) > '9'
    ) 
  return(false);

 if (   eval(mm*1) < 1  
     || eval(mm*1) > 12
    )
  return(false);

 // Validamos que el año sea numérico y esté entre 1900 y 2099

 if (    yyyy.substring(0,1) < '0' || yyyy.substring(0,1) > '9'
      || yyyy.substring(1,2) < '0' || yyyy.substring(1,2) > '9'
      || yyyy.substring(2,3) < '0' || yyyy.substring(2,3) > '9'
      || yyyy.substring(3,4) < '0' || yyyy.substring(3,4) > '9'
    ) 
  return(false);

 
 if (   eval(yyyy*1) < 1900  
     || eval(yyyy*1) > 2099
    )
  return(false);

     

 // Es bisiesto
 
 esbisiesto = ( (eval(yyyy*1) % 4) == 0)

 // Validamos la cantidad de días en cada mes.

 // Febrero
 if ( eval(mm*1) == 2 ) {
  if ( esbisiesto && eval(dd*1) > 29 ) return(false);
  if (!esbisiesto && eval(dd*1) > 28 ) return(false);
 }

 // Meses con 30 días

 if (   eval(mm*1) == 4
     || eval(mm*1) == 6
     || eval(mm*1) == 9
     || eval(mm*1) == 11
    )
  if (eval(dd*1) > 30) return(false);

 //Ha pasado todas las comprobaciones.

  return(true);

}


// -----------------------------------------
// Validamos entero positivo.
// -----------------------------------------

function fvalentero(e){
  var i;
  if (e.length==0) return(true);
  i = 0;
  for (i=0; ( i < e.length - 1 && e.substring(i,i+1) >= '0' && e.substring(i,i+1) <= '9'); i++);
  return( (e.substring(i,i+1) >= '0') && (e.substring(i,i+1) <= '9') );
}


// -----------------------------------------
// Validamos un real positivo.
// -----------------------------------------

function fvalreal(r){
  return( fvalentero(r.substring(0,r.indexOf('.'))) && fvalentero(r.substring(r.indexOf('.')+1,r.length)) );
}


// -----------------------------------------
// Validamos mail.
// -----------------------------------------
function fvalmail(m) {
 var i;
 var prefijo;
 var sufijo;
 var dominio;
 
 // Si no existe @ p'afuera.

 if (m.indexOf('@') == -1 ) return(false);


 sufijo  =  m.substring(0,m.indexOf('@'));
 prefijo =  m.substring(m.indexOf('@') + 1 ,m.length);
 
 // Miramos si los últimos caracteres después del último punto tienen longitud 2 u 8
 
 if ( prefijo.indexOf('.') == -1 ) return(false);
 
 dominio = prefijo.substring(prefijo.lastIndexOf('.') + 1,prefijo.length);

  if (dominio.length < 2 || dominio.length > 8) return(false);

 // Si la longitud del dominio es 2 miramos que sea com,net,org,mil.

/* if ( dominio.length   == 3 &&
      dominio != "com"      &&
      dominio != "net"      &&
      dominio != "org"      &&
      dominio != "edu"      &&	
*/
//En mayusculas_________________      
/*
      dominio != "COM"      &&
      dominio != "NET"      &&
      dominio != "ORG"      &&
      dominio != "EDU"      &&	
      dominio != "MIL" )
     return(false);
*/
 // miramos que el subdominio tenga una longitud >= 1
 
 if ( prefijo.substring(0,prefijo.indexOf('.')).length < 1 ) return(false);

 // miramos que el nombre del mail tenga una longitud >= 1

 if ( sufijo.length < 1 ) return(false);


 // Ha pasado la validación.

 return(true); 
}




