<!-- Begin
function emailCheck (emailStr) {
/* El patrón siguiente se utiliza para comprobar si la dirección de e-mail corresponde con el
   formato de usuario@dominio. También se utiliza para separar el usuario del dominio. */
var emailPat=/^(.+)@(.+)$/
/* La secuencia siguiente representa el patrón para comprobar todos los
   caracteres especiales. No deseamos permitir caracteres especiales en
   la dirección. Estos caracteres incluyen ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* La secuencia siguiente representa la gama de los caracteres permitidos
   en un usuario o un nomre de dominio. Realmente indica qué caracteres no se
   permiten. */
var validChars="\[^\\s" + specialChars + "\]"
/* El patrón siguiente se aplica si el "usuario" es una cadena de caracteres 
   (en cuyo caso, no hay ninguna regla sobre qué caracteres 
   se permiten y cuales no, vale cualquier cosa).  E.g. "jiminy cricket"@disney.com
   es una dirección de e-mail válida. */
var quotedUser="(\"[^\"]*\")"
/* El patrón siguiente se aplica para los dominios que son direcciones IP,
   en lugar de los nombres simbólicos. E.g. joe@[123.124.233.4 ] es
   una dirección legal de e-mail. NOTA: Se requieren los corchetes. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* La secuencia siguiente representa un átomo (básicamente una serie de
   caracteres no-especiales.) */
var atom=validChars + '+'
/* La secuencia siguiente representa una palabra en el username típico.
   Por ejemplo, en juan.perez@dominio.com, juan y perez son palabras.
   Básicamente, ambas palabras son una cadena. */
var word="(" + atom + "|" + quotedUser + ")"
// El patrón siguiente describe la estructura del usuario
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* El patrón siguiente describe la estructura de un dominio simbólico
   normal, en comparación con el ipDomainPat, demostrado arriba. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finalmente, comencemos a intentar comprobar si la
   dirección provista es válida. */

/* Comenzamos con el patrón simplemente a partir usuario@dominio en
   distintas partes para facilitar el análisis. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Demasiadas/pocas @ o algo; básicamente, esta dirección incluso no
     concuerda con el formato general de una dirección válida de e-mail. */
	alert("La entrada de e-mail parece ser incorrecta (chequee @ y .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("El nombre de usuario parace no ser correcto.")
    return false
}

/* si la dirección de e-mail es una dirección IP (en comparación con un nombre de host 
   simbólico) cerciórese de que la dirección IP sea válida. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Direccion IP no valida!")
		return false
	    }
    }
    return true
}

// El dominio es un nombre
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("El nombre de dominio parace no ser correcto.")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
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) {
   // the address must end in a two letter or three letter word.
   alert("La direccion de correo debe acabar en 3 letras de dominio o 2 de un pais.")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="Esta direccion es desconocida como IP!"
   alert(errStr)
   return false
}

// If we've gotten this far, everything's valid!

}

//  End -->
