var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var whitespace = " \t\n\r";
var defaultEmptyOK = false;

// Check whether string s is empty.
function isEmpty(s)
{
   return((s == null) ||(s.length == 0));
}

// Returns true if string s is empty or 
// whitespace characters only.
function isWhitespace(s)
{
   var i;
   // Is s empty?
   if(isEmpty(s))
   		return true;
   
   // Search through string's characters one by one
   // until we find a non-whitespace character.
   // When we do, return false; if we don't, return true.
   for(i = 0; i < s.length; i++)
   {
      // Check that current character isn't whitespace.
      var c = s.charAt(i);
      if(whitespace.indexOf(c) == - 1)
      		return false;
   }
   // All characters are whitespace.
   return true;
}

// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c -- in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
/*
function isEmail(s)
{
   if(isEmpty(s))
   if(isEmail.arguments.length == 1)
   return defaultEmptyOK;
   else 
   return(isEmail.arguments[1] == true);
   // is s whitespace?
   if(isWhitespace(s))
   return false;
   // there must be >= 1 character before @, so we
   // start looking at character position 1 
   // (i.e. second character)
   var i = 1;
   var sLength = s.length;
   // look for @
   while((i < sLength) &&(s.charAt(i) != "@"))
   {
      i++;
   }
   if((i >= sLength) ||(s.charAt(i) != "@"))
   return false;
   else i += 2;
   // look for .
   while((i < sLength) &&(s.charAt(i) != "."))
   {
      i++;
   }
   // there must be at least one character after the .
   if((i >= sLength - 1) ||(s.charAt(i) != "."))
   return false;
   else 
   return true;
}
*/   
function checkEmail(emailStr) {
   if (emailStr.length == 0) {
       return true;
   }
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       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)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}

function validFormEmail() {
	var isValid;
	
	isValid = (!isEmpty(document.formEmail.email.value));
	
	if(isValid)
		isValid = checkEmail(document.formEmail.email.value);

	if(!isValid)
		alert("Format d'email incorrect.");
		
	return isValid;
}


