//***********************************************************************
// 
// MODULE:       		valid.js
// NOM DE FICHIER:     		[Racine]\js\valid.js
// AUTEUR(S):       		Steve Desrochers
//
// DATE DE CRÉARION:	   	11 novembre2006
// DATE DE MODIFICATION:   	21 novembre 2006
//
// DESCRIPTION:
// 	Fonction permettant de faire la validation de la section d'inscription
//            
//***********************************************************************

function validerInscript(frm){
// Objectif : Déterminer si les informations entrés sont syntaxiquement correctes
//
// Type de la valeur de retour : Booléen
//
// Paramètres :
//	
// Nom		Type		Usage		Desc
// ---		----		-----		----
//
// frm		Formualire	  I			Formualire contenant les contrôles

	var err = "";
	var cpt;

	// Vérifier qu'il y a un mot de passe
	if (frm.PWD.value == "") {
		err = " - You must enter a password." + String.fromCharCode(13) + err;
		cpt = frm.PWD;
	} else {
		// Vérifier que le mot de passe est de la bonne longueur
		if ((frm.PWD.value.length < 6) || (frm.PWD.value.length > 8)) {
			err = " - You password must be between 6 and 8 characters." + String.fromCharCode(13) + err;
			cpt = frm.PWD;
		}
	}

	// Vérifier qu'il y a un identifiant
	if (frm.UID.value == "") {
		err = " - You must enter a user ID." + String.fromCharCode(13) + err;
		cpt = frm.UID;
	} else {
		if (frm.UID.value.length > 8) {
			err = " - You user ID must be less then 8 characters." + String.fromCharCode(13) + err;
			cpt = frm.UID;
		}
	}

	// Vérifier qu'il y a un numéro de magasin
	if (frm.idStore.value == "") {
		err = " - You must enter your store number." + String.fromCharCode(13) + err;
		cpt = frm.idStore;
	}

	// Vérifier qu'il y a un numéro d'employé
	if (frm.idEmployee.value == "") {
		err = " - You must enter your employee number." + String.fromCharCode(13) + err;
		cpt = frm.idEmployee;
	}

	// Vérifier que le courriel est confirmé
	if (frm.email2.value == "") {
		err = " - You must confirm your e-mail adress." + String.fromCharCode(13) + err;
		cpt = frm.email2;
	} else {
		// Vérifier que la confirmation est identique à l'adresse de courriel
		if (frm.email.value.toLowerCase() != frm.email2.value.toLowerCase()) {
			err = " - You confirmation e-mail must be identical to your e-mail adress." + String.fromCharCode(13) + err;
			cpt = frm.email2;
		}
	}

	// Vérifier qu'il y a un courriel
	if (frm.email.value == "") {
		err = " - You must enter an e-mail adress." + String.fromCharCode(13) + err;
		cpt = frm.email;
	} else {
		// Vérifier que le courriel à une syntaxe valide
		if(!validerCourriel(frm.email.value)) {
			err = " - You must enter a valid email adress." + String.fromCharCode(13) + err;
			cpt = frm.email;
		}
	}

	// Vérifier qu'il y a un numéro de téléphone
	if (frm.Tel.value == ""){
		err = " - You must enter you primary phone number." + String.fromCharCode(13) + err;
		cpt = frm.Tel;
	} else {
		if ((frm.Tel.value.length == 12) || (frm.Tel.value.length == 14)) {
		
		if (frm.Tel.value.length == 12) {
			if (!validerTelUSA(frm.Tel.value)) {
				err = " - The syntax of the primary phone number is incorrect, it must be : 000-000-0000." + String.fromCharCode(13) + err;
				cpt = frm.Tel;
			}
		}
		
		if (frm.Tel.value.length == 14) {
			if (!validerTelUSALgDist(frm.Tel.value)) {
				err = " - The syntax of the primary phone number is incorrect, it must be : 1-000-000-0000." + String.fromCharCode(13) + err;
				cpt = frm.Tel;
			}
		}
			
		} else {
			err = " - You must enter a primary phone number of 12 characters (000-000-0000) or 14 characters (1-000-000-0000)." + String.fromCharCode(13) + err;
			cpt = frm.Tel;
		}
	}

	// Vérifier qu'il y a un ZIP code
	if (frm.Zip.value == "") {
		err = " - You must enter a ZIP code." + String.fromCharCode(13) + err;
		cpt = frm.Zip;
	} else {
		// Vérifier que le ZIP code est de la bonne longueur
		if (frm.Zip.value.length != 5) {
			err = " - Your ZIP code must have 5 characters." + String.fromCharCode(13) + err;
			cpt = frm.Zip;
		} else {
			// Vérifier que le Zip code est numérique
			if(!estEntierValide(frm.Zip.value)) {
				err = " - Your ZIP code must be composed of numeric characters." + String.fromCharCode(13) + err;
				cpt = frm.Zip;
			}
		}
	}
 
	// Vérifier qu'il y a un état de sélectionné
	if (frm.State.selectedIndex == 0) {
		err = " - You must select a state." + String.fromCharCode(13) + err;
		cpt = frm.State;
	}

	// Vérifier qu'il y a une ville
	if (frm.City.value == ""){
		err = " - You must enter your city." + String.fromCharCode(13) + err;
		cpt = frm.City;
	}

	// Vérifier qu'il y a une adresse
	if (frm.Adress.value == ""){
		err = " - You must enter your adress." + String.fromCharCode(13) + err;
		cpt = frm.Adress;
	}


	// Vérifier qu'il y a un prénom
	if (frm.FirstName.value == ""){
		err = " - You must enter your firstname." + String.fromCharCode(13) + err;
		cpt = frm.FirstName;
	}

	// Vérifier qu'il y a un nom de famille
	if (frm.LastName.value == ""){
		err = " - You must enter your lastname." + String.fromCharCode(13) + err;
		cpt = frm.LastName;
	}

	if (err != ""){
		// Afficher les messages d'erreur
		alert("The following error(s) happended during the process : " + String.fromCharCode(13) + err);
		cpt.focus();
		return false;
	}
	else{
		return true;
	}
}

//*****

function estEntierValide(num)
{
// Objectif : Vérifie si une chaîne numérique est valide
//
// Type de la valeur de retour : Booléen
//
// Paramètre(s) :
//
// Nom			Type		Usage		Description
// ---			----		-----		-----------
// 
// num			Chaîne		Import		Chaîne composée de
//										caractères numériques

	// Indicateur de chaîne numérique non signée valides
	var estEntier = true;

	// Ensemble des chiffres valides
  	var chiffresValides = "0123456789";

	// Vérifier que la chaîne n'est pas nulle
	if (num != null)
	{

		// Vérifier que tous les caractères sont des chiffres
  		for (var i = 0; i < num.length; i++) {

    			var unChiffre = num.charAt(i);

    			if (chiffresValides.indexOf(unChiffre) == -1)
			{
				estEntier = false;
			}
  		}
	}	


	return estEntier;
}

//*****

function validerTelUSA(tel){
// Objectif : Vérifie si un numéro de téléphone américain
//			  (ou américain) comporte la bonne syntaxe
//
// Type de la valeur de retour : Booléen
//
// Paramètre(s) :
//
// Nom		Type		Usage		Description
// ---		----		-----		-----------
// 
// tel		Chaîne		  I			Numéro de téléphone à valider

	var valide = (tel.length == 12)
	valide = valide && !isNaN(tel.charAt(0) + tel.charAt(1) + tel.charAt(2));
	valide = valide && (tel.charAt(3) == '-');
	valide = valide && !isNaN(tel.charAt(4) + tel.charAt(5) + tel.charAt(6));
	valide = valide && (tel.charAt(7) == '-');
	valide = valide && !isNaN(tel.charAt(8) + tel.charAt(9) + tel.charAt(10) + tel.charAt(11));
	return valide;
}

//*****

function validerTelUSALgDist(tel){
// Objectif : Vérifie si un numéro de téléphone américain
//			  (ou américain) comporte la bonne syntaxe
//
// Type de la valeur de retour : Booléen
//
// Paramètre(s) :
//
// Nom		Type		Usage		Description
// ---		----		-----		-----------
// 
// tel		Chaîne		  I			Numéro de téléphone à valider

	var valide = (tel.length == 14)
	valide = valide && !isNaN(tel.charAt(0));
	valide = valide && (tel.charAt(1) == '-');
	valide = valide && !isNaN(tel.charAt(2) + tel.charAt(3) + tel.charAt(4));
	valide = valide && (tel.charAt(5) == '-');
	valide = valide && !isNaN(tel.charAt(6) + tel.charAt(7) + tel.charAt(8));
	valide = valide && (tel.charAt(9) == '-');
	valide = valide && !isNaN(tel.charAt(10) + tel.charAt(11) + tel.charAt(12) + tel.charAt(13));
	return valide;
}

//*****

function validerCourriel(str_adrCourriel) {
// Objectif : Vérifier si une adresse de courriel à la bonne syntaxe
//
// Type de la valeur de retour : Booléen
//
// Paramètre(s) :
//
// Nom				Type		Usage		Description
// ---				----		-----		-----------
// 
// str_adrCourriel	Chaîne		  I			Adresse de courriel à valider

	// Indicateur d'erreur
	var err = true;

	if ( str_adrCourriel.length == 0 ) {err = true}
	else {
       // Vérifier que l'adresse de courriel à la longueur minimale
       //     Ex : a@a.fr = une longueur de 5 caractères
       if ( str_adrCourriel.length < 5 ) {err = true}
       else {
              // Vérifier la présence d'un @ et d'un point placé adéquatement
              if ( (str_adrCourriel.indexOf("@") < 2) || (str_adrCourriel.indexOf(".") < 1 ) ||
                     (str_adrCourriel.indexOf("@") > str_adrCourriel.lastIndexOf(".")) )
              {err = true}
              else {err = false;}
       }
	}         
	return !err;
}

//*****



