
//////
// Funciones de validación finales
// ======================= VALIDA EMAIL ==============================

function validaMail(cadMail) {
  var mensa = "Email Error";
  /* Verificar si el email tiene el formato user@dominio. */
  var emailPat = /^(.+)@(.+)$/;

  /* Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] */
  var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	
  /* Verifica los caracteres que son válidos en una dirección de email */
  var validChars = "\[^\\s" + specialChars + "\]";

  var quotedUser="(\"[^\"]*\")";

  /* Verifica si la dirección de email está representada con una dirección IP Válida */ 

  var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

  /* Verificar caracteres inválidos */ 

  var atom    = validChars + '+';
  var word    = "(" + atom + "|" + quotedUser + ")";
  var userPat = new RegExp("^" + word + "(\\." + word + ")*$");

  /* dominio, como opuesto a ipDomainPat, se muestra abajo. */
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

  var matchArray = cadMail.match(emailPat)
  if (matchArray == null) {
    window.alert(mensa);
    return false;
  }
  var user   = matchArray[1];
  var domain = matchArray[2];

  // Si el usuario es valido 
  if (user.match(userPat) == null) {
    // Si no
    window.alert(mensa);
    return false;
  }

  /* Si la dirección IP es válida */
  var IPArray = domain.match(ipDomainPat)
  if (IPArray != null) {
    for (var i = 1; i <= 4; i++) {
      if (IPArray[i] > 255) {
        window.alert(mensa);
        return false;
      }
    }
    return true;
  }

  var domainArray = domain.match(domainPat);
  if (domainArray == null) {
    window.alert(mensa);
    return false;
  }

  var atomPat = new RegExp(atom,"g");
  var domArr  = domain.match(atomPat);
  var len     = domArr.length;

  if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { 
    window.alert(mensa);
    return false;
  }

  if (len < 2) {
    var errStr = "Email Error";
    window.alert(mensa);
    return false;
  }

  // La dirección de email ingresada es Válida
  return true;
}

// ============= FIN VALIDA EMAIL ======================== 

