//////////////////////////////////////////////////////////////////////////
//
// Proyecto    : Ayuda / Contactenos
// Fuente      : valida-email.js
//
// Descripcion : Rutinas Java Script para Validacion del los Email
//
// Autor       : Ronald Cabrera Reyes (Entersoft Ltda.)
// Fecha       : Agosto 2004
//
//////////////////////////////////////////////////////////////////////////

function isNumeric(num) 
{
   if ((num.charAt(0)>='0') && (num.charAt(0)<='9')) 
   {
      return true;
   }
   else {
      return false;
   }
}

function caracSrv(car) 
{
   if (((car.charAt(0)< 'a') || (car.charAt(0) > 'z')) && 
       ((car.charAt(0)< 'A') || (car.charAt(0) > 'Z')) && 
       (car.charAt(0)!= '_') && 
       (car.charAt(0)!= '.') && 
       (car.charAt(0)!= '-') &&
       (car.charAt(0)!= '+')) 
   {
      return false;
   }
   else {
      return true;
   }
}

function alfaNum(txt) {
   var str=txt
   var i=0
   var intcont // contador del numero de rayas.	

   if (str.length==0) {
      return false;
   }	
   // Verifica que haya sólo una raya en la persona.
   // También que no empieze con ésta.
   intcont = 0;
   i=0;
	
   while (i<str.length)
   {
      if (i==0) 
      {
         if ((str.charAt(i) == '-') || 
             (str.charAt(i) == '+') )
         {
            return false;
         }
      }
      i++;
   }  
   
   return true;
}

function alfaNumSrv(txt) 
{
   var str=txt;
   var intcont; // contador del numero de rayas.
   var i=0;

   if (str.length==0) 
   {
      return false;
   }
   while (i<str.length) 
   {
      if (i == 0) {
         if ((str.charAt(i) == '-') ||
             (str.charAt(i) == '+'))
         {
            return false;
         }
         else 
         {
            if (caracSrv(str.charAt(i)) || isNumeric(str.charAt(i))) 
            {}
            else 
            {
               return false;
            }
         }
      }
      if (caracSrv(str.charAt(i)) || isNumeric(str.charAt(i))) 
      {} 
      else 
      {
         return false;
      }
      i++;
   }
   return true;
}

function valArroba(txt) 
{	
   var str=txt;
   var i=0;
   var cont=0;
   if (str.length==0) {
      return false;
   }	
   while (i<str.length) {
      if (str.charAt(i)=='@'){cont++}
         i++;
   }	
   if (cont==0) {
      return false;
   }
   else {
      return true;
   }			
}

function valPunto(txt) 
{	
   var str=txt;
   var i=0;
   var cont=0;
	
   if (str.length==0) {
      return false;
   }

   while (i<str.length) 
   {
      if (str.charAt(i)=='.') {
         cont++;
      }
      i++;
   }
   
   if (cont==0) 
   {
      return false;
   }
   
   var tmp="";
   for ( i=(str.length-1); i >=0; i--)
   {
      if ( str.charAt(i) == '.' )
      {
         tmp=str.substring(i+1,str.length);
         break;
      }
   }
   if ( tmp != "")
   {
       return( validateSymbolSpecial(tmp) );
   }
   return true;
}

function valDosPuntos(txt) {	
   var str=txt;
   var i=1;
   var cont=0;
	
   if (str.length==0) {
      return false;
   }	
   while (i<str.length) {
      if ((str.charAt(i)=='.') && (str.charAt(i-1)=='.')) {
         cont++;
      }
      i++;
   }   
   if (cont!=0) {
      return false;
   }
   else {
      return true;
   }
}

function valServidor(txt) {	
   var str=txt;
   var tmp="";
   var i=0;
   var flag=false;

   if (str.length==0) {
      return "";
   }
   while(i<str.length) {		
      if (flag==true) {
         tmp = tmp + str.charAt(i);
      }
      if (str.charAt(i)=='@') {
         flag=true;
      }
      i++;
   }	
   return tmp;
}

function Login(txt) {	
   var str=txt;
   var tmp="";
   var i=0;
	
   if (str.length==0) {
      return "";
   }		
   while(i<str.length) {
      if (str.charAt(i)!='@') {
         tmp = tmp + str.charAt(i);
      }
      else {
         return tmp;
      }
      i++;
   }	
   return tmp;
}

function valFormatRuta(txt) {
   //no debe ir un punto despues del @
   //debe contener una extencion
    
   var sw=0
   var i=0
   var str=txt
    
   if (str.length==0) {
      return false;
   } 
   if (str.charAt(0)==".") {
      return false;
   }
   if (!alfaNum(str.charAt((str.length-1)))) {
      return false;
   }
   while(i<str.length) {
      if (sw==1) {
         return true;
      }
      if (str.charAt(i)=='.') {
         sw=1;
      }	
      i++;
   }	
   return false;
}

function isEmail(txt) 
{    
  var log = Login(txt);
  var srv = valServidor(txt);
   
  // Blancos
  var i = txt.indexOf(" ");
  if ( i != -1 ) 
  {
     return false;
  }
  
  //Validar Login
  if (log=="") 
  {
     return false;
  }
  
  if (!alfaNum(log)) 
  {
     return false;
  }
  
  //Validar Ruta
  if (srv=="") 
  {       
     return false;
  }
  if (!alfaNumSrv(srv)) {
     return false;
  }    
  
  //Simbologia
  if (!validateSymbol(txt) ) {
     return false;
  }
  if (!valArroba(txt)) {       
     return false;
  }
  
  if (!valPunto(srv)) {       
     return false;
  }
  if (!valDosPuntos(srv)) {       
     return false;
  }
  
  //Formato Ruta
  if (!valFormatRuta(srv)) {       
     return false;
  }                
  return true;
}

function validateSymbol(txt) 
{
   var cadenaNo = "°,;|:!¡¿?'/\\<>$%&()*~[]{}^`¨#\"";   
   for ( var pos=0; pos < cadenaNo.length; pos++)
   {
      var idxOf = txt.indexOf(""+cadenaNo.charAt(pos));
      if ( idxOf != -1 )
      {
         return false;
      }
   }
   return true;
}

function validateSymbolSpecial(txt) 
{
   var cadenaNo = "+-°,;|:!¡¿?'/\\<>$%&()*~[]{}^`¨#\"";   
   for ( var pos=0; pos < cadenaNo.length; pos++)
   {
      var idxOf = txt.indexOf(""+cadenaNo.charAt(pos));
      if ( idxOf != -1 )
      {
         return false;
      }
   }
   return true;
}
