function verifyEmail (the_email) {

	// VARIABLES
	
	var emailPattern=/^(.+)@(.+)$/ //format user @ domain
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" //special chars
	var validChars="\[^\\s" + specialChars + "\]" //global validity
	var quotedUser="(\"[^\"]*\")" //in case of quotes used "joe sushi"@yahoo.com
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ //case of IP domain joe@[123.123.123.10]
	var atom=validChars + '+' //atom
	var word="(" + atom + "|" + quotedUser + ")" //valid words
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$") // structure of the user
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$") // structure of domain
	
	// ANALYSIS
	
	//basic user @ domain
	var matchArray=the_email.match(emailPattern) 
	if (matchArray==null) {
	  alert("Le format de votre addresse email est invalide, veuillez le corriger s'il vous plaît")
	  return false
	}
	
	//assign user & domain
	var user=matchArray[1]
	var domain=matchArray[2]
	
	// user
	if (user.match(userPat)==null) {
		alert("Le format de l'usager dans votre addresse email est invalide, veuillez le corriger s'il vous plaît")
		return false
	}
	
	// if domain is IP, validate it
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
		  if (IPArray[i]>255) {
			  alert("Votre addresse IP est invalide, veuillez la corriger s'il vous plaît")
		return false
		  }
		}
		return true
	}
	
	// if domain is a word
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	  alert("Le format de votre nom de domaine dans votre addresse email est invalide, veuillez le corriger s'il vous plaît")
		return false
	}
	
	//assign domain parts and check for valid extension
	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>10) {
	   alert("L'extension de votre addresse email est invalide, elle doit être égale ou plus grande que 2 caractères ou égale ou plus petite que 10 caractères.")
	   return false
	}
	
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="Le format de votre addresse email est invalide, veuillez le corriger s'il vous plaît"
	   alert(errStr)
	   return false
	}
	
	return true;
}
