function esValidoEmail(emailStr) {
	
	var valido=true;
	/* El sig. patrón se usa para chequear si el email es de la forma
	   usuario@dominio. Se usa para separar el usuario del dominio*/
	var emailPat=/^(.+)@(.+)$/
	/* La sig. cadena representa el patrón para caracteres especiales.
	   No se permiten estos caracteres*/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	/* La sig. cadena representa el rango de caacteres permitidos en el
	   nombre o dominio*/
	var validChars="\[^\\s" + specialChars + "\]"
	/* El sig. patrón se aplica si el usuario va entre comillas*/
	var quotedUser="(\"[^\"]*\")"
	/* El sig. patrón se aplica para dominios que son direcciones IP.
	   Ejemplo: yo@[123.124.233.4]. Los [] son necesarios*/
	var ipDomainPat="/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/"
	/* La sig. cadena representa caracteres no especiales*/
	var atom=validChars + '+'
	/* La sig. cadena representa varias palabras en un nombre de usuario (yo.soy@dominio.com)*/
	var word="(" + atom + "|" + quotedUser + ")"
	/* El sig. patrón describe la estructura del nombre usuario*/
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	/* El sig. patrón describe la estructura del dominio en contraposición a la IP*/
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	  /* Demasiadas o pocas @'s*/
		valido=false;
		return false;
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
		valido=false;
		return false;
	}
	/* Si la dirección de correo es una IP, comprobar q es válida*/
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		valido=false;
		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) {
	   /* La dirección de correo debe acabar con 2 ó 3 caracteres*/
	   valido=false;
	   return false;
	}
	/* Se asegura de que el nombre del Host precede al nombre del dominio*/
	if (len<2) {
	   valido=false;
	   return false;
	}
	return valido;
}
