function ValidateProfile() 
{
	if (navigator.appName=="Microsoft Internet Explorer")
	{
		return (VerifyMSExplorer());
	}		
	else    
	{
		return (VerifyNetscape());
	}
} 

function VerifyMSExplorer(f)
{
	if (!CheckRequiredFields())
			return false;
	if (!(CheckInvalidInputs()))
	 		return false;
			
	var EMail = document.forms[0].Email.value;
	
	if (!verifEmail(EMail))   
	{
		alert('Veuillez saisir une adresse e-mail valide du format : joe@yahoo.com');
		document.forms[0].Email.focus();
		return false;
	}
	else if (document.forms[0].Password.value.length < 6)
	{
		alert('Le mot de passe doit contenir 6 caractères minimum.');
		document.forms[0].Password.focus();
		return false;
	}
	else if (document.forms[0].Password.value != document.forms[0].ConfirmPassword.value)
	{
		alert('Les mots de passes sont différents.');
		document.forms[0].Password.focus();
		return false;
	}
	return true;
} 


function CheckRequiredFields()
{
	var msg="";
	var empty_fields="";
	var oElemFocus = null;
	
	if (document.forms[0].Email.value == "") {
		empty_fields += "\n        Adresse e-mail";	
		if (oElemFocus == null)
			oElemFocus = document.forms[0].Email;
	}
	if (document.forms[0].LastName.value == "") {
		empty_fields += "\n        Nom";
		if (oElemFocus == null)
			oElemFocus = document.forms[0].LastName;
	}
	if (document.forms[0].Password.value == "") {
		empty_fields += "\n        Mot de passe";			
		if (oElemFocus == null)
			oElemFocus = document.forms[0].Password;
	}
	
	if (document.forms[0].ConfirmPassword.value == "") {
		empty_fields += "\n        Confirmation du mot de passe";			
		if (oElemFocus == null)
			oElemFocus = document.forms[0].ConfirmPassword;
	}	
	/*------------------------------------------------*/
	if (document.forms[0].Company.value == "") {
		empty_fields += "\n        Société";	
		if (oElemFocus == null)
			oElemFocus = document.forms[0].Company;
	}
	if (document.forms[0].City.value == "") {
		empty_fields += "\n        Ville";			
		if (oElemFocus == null)
			oElemFocus = document.forms[0].City;
	}
	
	if (document.forms[0].Phone.value == "") {
		empty_fields += "\n        Téléphone";			
		if (oElemFocus == null)
			oElemFocus = document.forms[0].Phone;
	}
	
	/*------------------------------------------------*/
	if (!empty_fields) {
		// If the contact ID is empty, ask user if we should auto-generate the ID for them.
		// If so, leave blank and we'll generate it at the back end.
		//if (isEmpty(document.forms[0].PartnerContactID.value) && document.forms[0].PartnerContactID.type == "text" && !document.forms[0].PartnerContactID.disabled) {
			//var bAutoGenerate = confirm("Do you want the system to automatically generate an unique ID for this customer?  (Click Cancel if you want to enter your own Customer ID)");
			//if (!bAutoGenerate)
			//	return false;
		//}
		return true;
		
	} else {	
	
		msg =  "_____________________________________________________________\n\n";
		msg += "Le formulaire n\'a pu être envoyé pour les raisons suivantes.\n";
		msg += "Veuillez corriger ces erreurs et soumettre à nouveau le formulaire.\n";
		msg += "_____________________________________________________________\n\n";
		msg += "Les champs suivants sont vides :" + empty_fields + "\n";
		alert(msg);

		if (oElemFocus != null)
			oElemFocus.focus();
			
		return false;
	}
	
}

function CheckInvalidInputs()
{

	if (!(ValidateSQLInput(document.forms[0].LastName.value,"Nom")))
	{
		document.forms[0].LastName.focus();
		return false;
	}
	if (!(ValidateEmailInput(document.forms[0].Email.value,"Adresse e-mail")))
	{
		document.forms[0].Email.focus();
		return false;
	}
	if (!(ValidateSQLInput(document.forms[0].Password.value,"Mot de passe")))
	{
		document.forms[0].Password.focus();
		return false;
	}
	if (!(ValidateSQLInput(document.forms[0].ConfirmPassword.value,"Confirmation du mot de passe")))
	{
		document.forms[0].ConfirmPassword.focus();
		return false;
	}
 return true;
}

function VerifyNetscape(f)
{
	if (!CheckRequiredFieldsNetscape())
			return false;
			
	var EMail = document.forms[0].Email.value
	
	if (EMail.indexOf('@') < 1 || EMail.indexOf('.') < 1) 
	{
		alert('Veuillez saisir une adresse e-mail valide du format : joe@yahoo.com');
		document.forms[0].Email.focus();
		return false;
	}
	else if (document.forms[0].Password.value.length < 6)
	{
		alert('Le mot de passe doit contenir 6 caractères minimum.');		
		document.forms[0].Password.focus();
		return false;
	}
	else if (document.forms[0].Password.value != document.forms[0].ConfirmPassword.value)
	{
		alert('Les mots de passes sont différents.');		
		document.forms[0].Password.focus();
		return false;
	}
	return true;
} 


function CheckRequiredFieldsNetscape()
{
	var msg="";
	var empty_fields="";
		
	if (document.forms[0].LastName.value == "") 
		empty_fields += "\n        Nom";
		
	if (document.forms[0].Email.value == "") 
		empty_fields += "\n        Adresse e-mail";	
		
	if (document.forms[0].Password.value == "") 
		empty_fields += "\n        Mot de passe";	

	if (document.forms[0].Company.value == "") 
		empty_fields += "\n        Société";	
	
	if (document.forms[0].City.value == "")
		empty_fields += "\n        Ville";			
	
	if (document.forms[0].Phone.value == "")
		empty_fields += "\n        Téléphone";			
		
	if (!empty_fields) return true;				
	
	msg =  "_____________________________________________________________\n\n";
	msg += "Le formulaire n\' a pas pu être envoyé.\n";
	msg += "Veuillez remplir les champs suivant :.\n";
	msg += "_____________________________________________________________\n\n";
	msg += "Les champs suivants sont vides :" + empty_fields + "\n";
	alert(msg);
	return false;
}


function isEmpty(s) {
	// Do not accept whitespace.
	if (s == null || s.length == 0 || s.search(/\S/) == -1)
		return true;
	return false;
	
}


function ValidateSQLInput(strText,Fname) 
{
	var str=new Array(23);
	 str[0] = "@@";
	 str[1] = ">";
	 str[2] = "';";
	str[3] = /:\\/;
    str[4] = "//";
	 str[5] = /\(/;
	 str[6] = /\)/;
	 str[7]=/\.\./;
	 str[8]=/\*/;
	 str[9]="<";
	 str[10]="xp_";
	 str[11]="%";
	 str[12]= "=";
	 str[13]= "--";
	 str[14]= "::";
	 str[15]= "=/";
	 str[16]= "0x";
	 str[17]= /\+/;
	 str[18]= /\?/;
	 str[19] = str[18]
	 str[20]= /\|/; 
	 str[21]=/\[/;
	 str[22]=/\]/;
	 msgstr= "@@  " + ">  " + "';  " +"\:  " + "\  "+ "(  " + ")  "+ "\..  " + "*  "+"<  " + "xp_  " + "%  " + "=  " + "--  " + "::  "+ "=/  "+ "0x  "+ "+  " +"?  "
	  
	for (i=0;i < str.length ;i++)
	{
	  if (strText.search(str[i])!= -1)
	    {
	     strText= "";
	     alert("Validation impossible pour le champ : " + Fname + "\r\n" + "Les caractères suivants ne sont pas autorisés"+ "\r\n"+ msgstr );
	     return false
	     }
	 }
	 strText= "";
	 return true 	
}



function ValidateEmailInput(strText, Fname) 
{
   
 //   '---- Email Input Fields ----
//	'< > ( ) [ ] \ ; :

    var str= new Array(9);
     str[0] = /</;
	 str[1] = />/;
	 str[2] = /\(/;
	 str[3] = /\)/;
	 str[4] = /\[/;
	 str[5] = /\]/;
	 str[6] = /\\/; // escape the backslash
	 str[7] = /;/;
	 str[8] = /:/;
	
	msgstremail= "<  "+">  "+"(  "+")  "+"[  "+"]  "+"\  "+";  "+":  ";
	
	for (i=0;i < str.length ;i++)
	{
	  if (strText.search(str[i])!= -1)
	    {
	     alert("Validation impossible pour le champ :" + Fname + "\r\n" +"Les caractères suivants ne sont pas autorisés" + "\r\n"+msgstremail);
	     return false
	     }
	 }
	 
	 return true			
}

// Entrée : mail - (String) - Email à analysé.
// Renvoyé : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux
 
function verifEmail(mail) {
 
    var ret = true;                                            // retour boolean true ou false
    var car = "";                                              // caractère courant au fur et a mesure de l'analyse
    var carAfter = "";                                         // caractère place avant le @
    var carBefore = "";                                        // caractère place après le @
    var nbrcar = mail.length;                                  // nombre de caractères total
    var nbrat = 0;                                             // nombre de @ trouvés
    var nbrpoint = 0;                                          // nombre de . trouvés
    var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz";  // caractères authorisés
  
 
  for(cnt=0;cnt<nbrcar;cnt++) {                         // Boucle de l'analyse 
      var car = mail.substr(cnt,1);                     // Récupération du caractère courant
      if(goodcar.indexOf(car) >= 0) {                   // Si le caractère est authorisé
          carAfter = "";                                // On initialise les variables carAfter et carBefore à vide
          carBefore = "";
          if(car == "@") {                              // Si le caractère est @
              if((cnt-1) >= 0) {                        // Si le @ n'est pas le premier
                  carBefore = mail.substr((cnt-1),1);   // Récupération du caractère placé avant le @
              }
              if((cnt+1)<nbrcar) {                      // Si le @ n'est pas le dernier
                  carAfter = mail.substr((cnt+1),1);    // Récupération du caractère placé après le @
              }
              // Vérification que toutes les condition de @ sont respectées
              // conditions:
              //    - cnt>0                 : n'est pas placé en première position
              //    - nbrat==0         : est unique
              //    - cnt<(nbrcar-4)        : se trouve à une position max de 5 avant la fin
              //      (sachant que les domaines les plus petit sont : a.fr par ex.)
              //    - !(carBefore==".")     : qu'il n'y est pas de . avant le @
              //    - !(carAfter==".")      : qu'il n'y est pas de . après le @
              //    - !(carBefore=="-")     : qu'il n'y est pas de - avant le @
              //    - !(carAfter=="-")      : qu'il n'y est pas de - après le @
              //    - !(carBefore=="_")     : qu'il n'y est pas de _ avant le @
              //    - !(carAfter=="_")      : qu'il n'y est pas de _ après le @
              if(cnt>0 && nbrat==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
                  nbrat++;                              // On incrémente le @
              } else {
                  ret = false;                          // Affectation Faux à la var de retour
                  break;                                // On sort de la boucle 
              }
          }                                                 // Fin de l'analyse du @ 
          if(car == ".") {                                  // Si le caractère est .
              if((cnt-1) >= 0) {                            // Si le . n'est pas le premier
                  carBefore = mail.substr((cnt-1),1);       // Récupération du caractère placé avant le .
              }
              if((cnt+1)<nbrcar) {                          // Si le . n'est pas le dernier
                  carAfter = mail.substr((cnt+1),1);        // Récupération du caractère placé après le .
              }
              // Vérification que toutes les condition de @ sont respectées
              // conditions:
              //    - cnt>0                 : n'est pas placé en première position
              //    - cnt<(nbrcar-2)        : se trouve à une position max de 3 avant la fin
              //      (sachant que les domaines les plus petit sont : a.fr par ex.)
              //    - !(carBefore==".")     : qu'il n'y est pas de . avant le .
              //    - !(carAfter==".")      : qu'il n'y est pas de . après le .
              //    - !(carBefore=="-")     : qu'il n'y est pas de - avant le .
              //    - !(carAfter=="-")      : qu'il n'y est pas de - après le .
              //    - !(carBefore=="_")     : qu'il n'y est pas de _ avant le .
              //    - !(carAfter=="_")      : qu'il n'y est pas de _ après le .
              if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
                  nbrpoint++;                               // On incrémente le .
              } else {
                  ret = false;                              // Affectation Faux à la var de retour 
                  break;                                    // On sort de la boucle 
              }
          }                                                 // Fin de l'analyse du .
      } else {                                              // Caractère non autorisé
          ret = false;                                      // Affectation Faux à la var de retour 
          break;                                            // On sort de la boucle 
      }                                                     // Fin de l'analyse du caractère courant 
  }                                                         // Fin de boucle de l'analyse
  // Analyse du nombre de @ et de .
  // Si il n'y a aucun @ et aucun .
  // Si le 1er et le dernier caractère est .
  // Si le 1er et le dernier caractère est -
  // Si le 1er et le dernier caractère est _
  if(nbrat == 0 || nbrpoint == 0 || mail.substr(0,1) == "." || mail.substr(0,1) == "-" || mail.substr(0,1) == "_" || mail.substr((nbrcar-1),1) == "." || mail.substr((nbrcar-1),1) == "-" || mail.substr((nbrcar-1),1) == "_") {
      ret = false;                                          // Affectation Faux à la var de retour 
  }
  return ret;                                               // Renvoi de la valeur de la var de retour
}

//browser = navigator.appName;
//ie = "Microsoft Internet Explorer";
//netscape = "Netscape";


