function validarEmail (emailStr) {

var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=("^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$")
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp ("^[a-zA-Z0-9\.-]+\.[a-zA-Z]+$")
var generalPat=new RegExp ("^[a-zA-Z0-9\.-]+\.[a-zA-Z0-9]+$")
var guionPat=("^-" + atom )
var guionPat2=("-+$")
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
	//alert("La dirección de Email no es correcta.")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(guionPat)!=null){
	//alert("La dirección de Email no es correcta1.");
    return false
}
if (user.match(guionPat2)!=null){
	//alert("La dirección de Email no es correcta2.");
    return false
}
if (user.match(userPat)==null) {
  //alert("La dirección de Email no es correcta3.");
    return false
}


/* el dominio tiene que tener algun punto */
//var domainArray=domain.match(generalPat)
//if (domainArray==null) {
//	//alert("La dirección de Email no es correcta4.");
//   return false
//	}

var puntoarray=domain.split ( "." )
if (puntoarray.length  >4) {
	//alert ("La dirección de Email no es correcta5.");
	return false
	}

if (puntoarray.length  <4) {
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	//alert("La dirección de Email no es correcta8.");
    return false
	}
}


/* compruebo los campos del dominio son de la longitud correcta */	
var str1 = puntoarray[0]	
if (str1.match(guionPat)!=null){
	//alert("La dirección de Email no es correcta9.");
    return false
	}
if (str1.match(guionPat2)!=null){
	//alert("La dirección de Email no es correcta10.");
    return false
}
	
if (str1.length <2) {
		//alert ("La dirección de Email no es correcta11.");
	return false
	}
if (str1.length >63) {
		//alert ("La dirección de Email no es correcta12.");
	return false
	}


if (puntoarray[1]!=null){
var str2 = puntoarray[1]
	if (str2.match(guionPat)!=null){
	//alert("La dirección de Email no es correcta13.");
    return false
	}
	if (str2.match(guionPat2)!=null){
	//alert("La dirección de Email no es correcta14.");
    return false
	}	
	if (str2.length <2) {
		//alert ("La dirección de Email no es correcta15.");
	return false
	}
	if (str2.length >63) {
		//alert ("La dirección de Email no es correcta16.");
	return false
	}
}

/* compruebo que el dominio no empieza por puntos */
var domainArray=domain.match(userPat)
if (domainArray==null) {
	//alert("La dirección de Email no es correcta17.");
	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>4) {
    //alert("La dirección de Email no es correcta18.");
   return false
}

if (len<2) {
   
   //alert("La dirección de Email no es correcta19.");
   return false
}
/* si llega aqui la direccion esta bien */
return true;

}

