
// ***************************************************************
//      Verifica que la dirección email tenga apariencia lógica
// ***************************************************************


function ValidarEMail(cadena) {
  
if (Cuenta(cadena,"@") != 1) { 
   return false;
   }
if (Cuenta(cadena,".") == 0) {
   return false;
   }

if (Cuenta(cadena," ") != 0) {
   return false;
   } 
var posArroba = Posicion(cadena,"@");
var posPunto = Ultimo(cadena,".");
if (posArroba > posPunto || posArroba + 1 == posPunto || posPunto + 3 > cadena.length){
    return false;    
    }
return true;
}

function Cuenta(cadena,car) 
{
var count = 0;
var i;
for (i = 0;i < cadena.length;i++)
    {
    if (cadena.charAt(i) == car) 
        count++;
    }
return count;
}

function Posicion(cadena,car) {
var pos = 0;
var i;
for (i = 0;i < cadena.length;i++) {
    if (cadena.charAt(i) == car) 
        pos=i;
    }
return pos;
}

function Ultimo(cadena,car) {
var pos = 0;
var i;
for (i = cadena.length;i >0;i--) {
    if (cadena.charAt(i) == car) {
        pos=i;
        i=0;
        }
    }
return pos;
}
// *********************************************************
//      Comprueba si la cadena es un número
// *********************************************************

function isNumber(cadena) 
{
for(i = 0;i<cadena.length;i++) 
   {
   if (!isDigit(cadena.charAt(i)))
      {
      return false;
      }
   }
return true;
}

// *********************************************************
//      Devuelve falso si el carácter no es un número
// *********************************************************

function isDigit(caracter) 
{
if (
   caracter != "0" &&
   caracter != "1" &&
   caracter != "2" &&
   caracter != "3" &&
   caracter != "4" &&
   caracter != "5" &&
   caracter != "6" &&
   caracter != "7" &&
   caracter != "8" &&
   caracter != "9")
   return false;
else
   return true;
}
// *****************************************************************
//      Comprueba si la cadena tiene caracteres de nombre no validos
// *****************************************************************

function ValidaEspecial(cadena) 
{
for(i = 0;i<cadena.length;i++) 
   {
   if (isEspecial(cadena.charAt(i)))
      {
      return false;
      }
   }
return true;
}
// **********************************************************************
//      Devuelve falso si el carácter no es valido para nombre de archivo
// **********************************************************************

function isEspecial(caracter) 
{
if (caracter == "," ||
    caracter == ";" ||
    caracter == "\\" ||
    caracter == "/" ||
    caracter == ":" ||
    caracter == "*" ||
    caracter == "?" ||
    caracter == '"' ||
    caracter == "<" ||
    caracter == ">" ||
    caracter == "|") {
	return true;
	}
return false;
}
// *********************************************************
//      Devuelve falso si la fecha no es lógica
// *********************************************************


function ValidarFecha (campo) {


var cadenafecha=campo.value;

var numsep = numeroseparadores(cadenafecha);
var AnoLimiteSiglo = 10;

if (cadenafecha.length == 0)
return false;
if (numsep == 0) 
   {
   if (cadenafecha.length == 6) 
      {
      var Strano=cadenafecha.substring(4,6);
      var Strmes=cadenafecha.substring(2,4);
      var Strdia=cadenafecha.substring(0,2);
      } 
   else 
      if (cadenafecha.length == 8) 
         {
         var Strano=cadenafecha.substring(4,8);
         var Strmes=cadenafecha.substring(2,4);
         var Strdia=cadenafecha.substring(0,2);
         } 
      else 
         {
         return false;
         } // endif
   } 
else  
   if (numsep == 2) 
      {
      // Miramos si los dos separadores son el mismo
      if ( cadenafecha.charAt(PrimerSeparador(cadenafecha)) != 
           cadenafecha.charAt(SegundoSeparador(cadenafecha)) ) 
         {
         return false;
         }
      else 
         {
         var Strano=cadenafecha.substring(SegundoSeparador(cadenafecha)+1,cadenafecha.length);
         var Strmes=cadenafecha.substring(PrimerSeparador(cadenafecha)+1,SegundoSeparador(cadenafecha));
         var Strdia=cadenafecha.substring(0,PrimerSeparador(cadenafecha));
         } // endif
      } else 
        {
        return false;
        } // endif

if (!isNumber(Strdia))
   return false;
else  
   {
   if (Strdia.length == 1)
      Strdia = "0" + Strdia;
   else 
      if (Strdia.length != 2)
         return -1;
   dia = eval(Strdia);
   }

if (!isNumber(Strmes))
   return false;
else 
   {
   if (Strmes.length == 1)
      Strmes = "0" + Strmes;
   else 
      if (Strmes.length != 2)
         return false;
         mes = eval(Strmes);
   }

if (!isNumber(Strano))
   return false;
else 
   {
   if (Strano.length == 2)
      {
      if ((eval(Strano)>AnoLimiteSiglo) && (eval(Strano)<100)) 
         {
         campo.value = Strdia + "-" + Strmes + "-" + "19" + Strano;
         Strano = "19" + Strano;
         }
      else
         {
         campo.value = Strdia + "-" + Strmes + "-" + "20" + Strano;
         Strano = "20" + Strano;
         }
      }
   else
      {
      if (Strano.length != 4)
         return false;
      else
         campo.value = Strdia + "-" + Strmes + "-" + Strano;
      }
   ano = eval(Strano);
   }

if (ano % 4 == 0)  // a$o bisiesto
   {
   if (ano % 100 == 0)
      {
      if (ano % 400 == 0)
         bisiesto = true;
      else
         bisiesto = false;
      }
   else
      bisiesto = true;
   }
else
   bisiesto = false;


if (mes == 2) 
   {
   if (!bisiesto) 
      {
      if ( dia > 28 || dia < 1) 
         return false;
      } 
   else 
      {
      if ( dia > 29 || dia < 1) 
         return false;
      }
   } 
   else 
      if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) 
         {
         if (dia > 31 || dia < 1)
            return false;
         } 
      else 
         if (mes==9 || mes==4 || mes==6 || mes==11) 
            {
            if (dia > 30 || dia < 1)
               return false;
            } 
         else 
            {
            return false;
            } // endif

// Si estamos aqui, devolvemos la fecha en formato n£mero
campo = (eval(Strano+Strmes+Strdia));
return true;
}


function numeroseparadores(cadenafecha) 
{
var count = 0;
for (i = 0;i < cadenafecha.length;i++)
    if (EsSeparador(cadenafecha.charAt(i))) 
        count++;
return count;
}



function EsSeparador(caracter)
{
return (caracter.charAt(0) == "-" || caracter.charAt(0) == "/")
}

function PrimerSeparador (cadena) {
var guion=cadena.indexOf("-");
var barra=cadena.indexOf("/");

if (guion == -1) 
   {
   return barra;
   } 
else 
   {
   if (barra == -1) 
      {
      return guion;
      } 
   else 
      {
      if (guion > barra)
         return barra;
      else
         return guion;
      }
   }
}

function SegundoSeparador (cadena) 
{
var guion=cadena.lastIndexOf("-");
var barra=cadena.lastIndexOf("/");
if (guion == -1) 
   {
   return barra;
   } 
else 
   {
   if (barra == -1) 
      {
      return guion;
      } 
   else 
      {
      if (guion < barra)
         return barra;
      else
         return guion;
      }
   }
}
