function emailCheck (emailStr) {
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) {
	alert("Votre adresse mail semble incorrecte (check @ and .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]
if (user.match(userPat)==null) {
    alert("The username doesn't seem to be valid.")
    return false
}
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("L'adresse IP de destination semble invalide!")
		return false
	    }
    }
    return true
}
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("Le nom de domaine ne semble pas etre valide.")
    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) {
   alert("l'adresse doit se terminer avec un nom de domaine a trois lettres, ou 2 lettres de pays.")
   return false
}
if (len<2) {
   var errStr="Cette adresse ne possede pas de nom d'hote!"
   alert(errStr)
   return false
}
return true;
}


  function Validate(form) {
	if ( form.fname.value == "" ) {
		alert('Veuillez specifier First Name!');
		form.fname.focus();
		return false;
	   }
	if(form.fname.value.match(/[&<>]+/))
		{
			alert("Veuillez supprimer les caracteres non valide de First Name (e.g. &  < >)");
			form.fname.focus();
			return(false);
		}
	   
	if ( form.lname.value == "" ) {
       	   alert('Veuillez specifier Last Name!');
			form.lname.focus();
	   return false;
	   }
	if(form.lname.value.match(/[&<>]+/))
		{
			alert("Veuillez supprimer les caracteres non valide de Last Name (e.g. &  < >)");
			form.lname.focus();
			return(false);
		}

        if(!form.email.value.match(/[a-zA-Z\.\@\d\_]/)) {
           alert('Adresse email invalide.');
  				form.email.focus();
         return false;
           }
		   if (!emailCheck (form.email.value) )
			{
				form.email.focus();
				return (false);
			}
		if(form.email.value.match(/[&<>]+/))
			{
				alert("Veuillez supprimer les caracteres non valide de Email (e.g. &  < >)");
				form.email.focus();
				return(false);
			}

		if(form.url.value.match(/[&<>]+/))
			{
				alert("Veuillez supprimer les caracteres non valide de URL (e.g. &  < >)");
				form.url.focus();
				return(false);
			}
	   
	   if (form.title.value == "") {
	   alert('Veuillez specifier Title.');
				form.title.focus();
	   return false;
	   }
		if(form.title.value.match(/[&<>]+/))
			{
				alert("Veuillez supprimer les caracteres non valide de Title (e.g. &  < >)");
				form.title.focus();
				return(false);
			}
	   
	   
	if (form.comments.value == "") {
	   alert('Veuillez specifier Comments/Feedback.');
	   form.comments.focus();
	   return false;
	   }
   		if(form.comments.value.match(/[&<>]+/))
		{
				alert("Veuillez supprimer les caracteres non valide de Comments/Feedback (e.g. &  < >)");
				form.comments.focus();
				return(false);
		}
	   return true;
  }