//***********************************************************************
// 
// MODULE:       			validStoreLocator.js
// NOM DE FICHIER:     		[Racine]\js\validStoreLocator.js
// AUTEUR(S):       		Steve Desrochers
//
// DATE DE CRÉARION:	   	13 décembre 2006
// DATE DE MODIFICATION:   	16 décembre 2006
//
// DESCRIPTION:
// 	Fonction permettant de faire la validation du formulaire de
//	localisation de magasins
//            
//***********************************************************************

function validStoreLocator(frm, lang){
// 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			Formulaire contenant les contrôles 
//
// lang		Chaîne		  I			Langue du client

	var err = "";
	var cpt;	
	var CountryType = frm.CountryType.value;
	var PostalZipCode = frm.PostalZipCode.value;	

	// Vérifier qu'il y a un code postal / zip code
	if (PostalZipCode == ""){	   
		if(lang == "FR") {
			err = " - Vous devez entrer votre code postal/zip." + String.fromCharCode(13) + err;
		} else {
			err = " - You must enter your postal/zip code." + String.fromCharCode(13) + err;  
		}
	} else {			 

		// Vérifier le type
		if(CountryType == "Audio Plus") {

			// Vérifier la longueur	
			if(PostalZipCode.length == 5) {	   
		
				// Possiblement un zip code	 
				if (!estEntierValide(PostalZipCode)) {	
					if(lang == "FR") {
						err = " - Le code zip ne respecte pas le format spécifié." + String.fromCharCode(13) + err; 
					} else {	
						err = " - The zip code doesn't respect the specified format." + String.fromCharCode(13) + err;
					}
				}

			} else {	   
				if(lang == "FR") {
					err = " - La longueur du code zip est incorrecte." + String.fromCharCode(13) + err; 
				} else {			 
					err = " - The length of the zip code is incorrect." + String.fromCharCode(13) + err;
				}
			}
		
		} else {

			if(PostalZipCode.length == 6) {	   
			
				// Possiblement un code postal	 
				if (!validerCP(PostalZipCode.toUpperCase())) { 
					if(lang == "FR") {
						err = " - Le code postal ne respecte pas le format spécifié." + String.fromCharCode(13) + err; 
					} else {	 
						err = " - The postal code doesn't respect the specified format." + String.fromCharCode(13) + err; 
					}
				}
			} else {		 
				if(lang == "FR") {
					err = " - La longueur du code postal est incorrecte." + String.fromCharCode(13) + err;	
				} else {	  
					err = " - The length of the postal code is incorrect." + String.fromCharCode(13) + err;	
				}
			}
		}
	}
	 
	if (err != ""){
		// Afficher les messages d'erreur 
		if(lang == "FR") {
			alert("Les erreur(s) suivantes sont survenus lors du traitement : " + String.fromCharCode(13) + err); 
		} else {	 
			alert("The following error(s) happended during the process : " + String.fromCharCode(13) + err); 
		}
			
		return false;
	}
	else{
		return true;
	}	 
}			   

//*****			

function validAddPostalZipCode(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			Formulaire contenant les contrôles

	var err = "";
	var cpt;	 
			  			 			  
	// Vérifier qu'il y a une longitude		
	if (frm.Longitude.value == ""){
		err = " - You must enter a longitude for the city." + String.fromCharCode(13) + err;
	} else {
		
		// Vérifier que la longitude est un nombre réel
		if(!estReelValide(frm.Longitude.value)) {
			err = " - The longitude must be a real number." + String.fromCharCode(13) + err;
		} else {
		
			// Vérifier que la longitude est dans la plage valide
			if ((parseFloat(frm.Longitude.value) < -180) || (parseFloat(frm.Longitude.value) > 180)) {
				err = " - The longitude must be between -180 and 180 degrees." + String.fromCharCode(13) + err;
			}
		
		}
		
	}
						 
	// Vérifier qu'il y a une latitude		
	if (frm.Latitude.value == ""){
		err = " - You must enter a latitude for the city." + String.fromCharCode(13) + err;
	} else {
		
		// Vérifier que la latitude est un nombre réel
		if(!estReelValide(frm.Longitude.value)) {
			err = " - The latitude must be a real number." + String.fromCharCode(13) + err;
		} else {
				   
			// Vérifier que la latitude est dans la plage valide
			if ((parseFloat(frm.Latitude.value) < -180) || (parseFloat(frm.Latitude.value) > 180)) {
				err = " - The latitude must be between -180 and 180 degrees." + String.fromCharCode(13) + err;
			}
		
		}
		
	}
			  
	// Vérifier qu'il y a un nom de ville		  
	if (frm.City.value == ""){
		err = " - You must enter a city name." + String.fromCharCode(13) + err;
	}
			
	// Vérifier qu'il y a un code postal / zip code
	if (frm.PostalZipCode.value == ""){
		err = " - You must enter a postal/zip code." + String.fromCharCode(13) + err;
	}
				
	if (err != ""){
		// Afficher les messages d'erreur
		alert("The following error(s) happended during the process : " + String.fromCharCode(13) + err);
		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 estReelValide(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 estReel = true;

	// Ensemble des chiffres valides
  	var chiffresValides = "-.0123456789";

	// Vérifier que la chaîne n'est pas nulle
	if (num != null)
	{
		// Vérifier que le premier chiffre n'est pas un point et que s'il y a un point
		// ce n'est pas le dernier caractère
		if ((num.charAt(0) == '.') && (num.indexOf(unChiffre) == num.length)){
			estReel = false;
		} else {
			// 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) {
					estReel = false;
				}
  			}
		}
	}	
	return estReel;
}

//*****

function validerCP (cp){
// Objectif : Vérifier si un code postal à la bonne syntaxe
//
// Type de la valeur de retour : Booléen
//
// Paramètre(s) :
//
// Nom				Type		Usage		Description
// ---				----		-----		-----------
// 
// cp				Chaîne		  I			Code postal à valider

	var valide = !isNaN(cp.charAt(1));	
	valide = valide && !isNaN(cp.charAt(3));
	valide = valide && !isNaN(cp.charAt(5));
	valide = valide && estChaineMajusculeValide(cp.charAt(0));
	valide = valide && estChaineMajusculeValide(cp.charAt(2));
	valide = valide && estChaineMajusculeValide(cp.charAt(4));

	return valide;
}

//*****		   

function estChaineMajusculeValide(chaineMaj) {
// Objectif : Vérifie si une chaîne en lettres majuscules est valide
//
// Type de la valeur de retour : Booléen
//
// Paramètre(s) :
//
// Nom			Type		Usage		Description
// ---			----		-----		-----------
// 
// chaineMaj	Chaîne		Import		Chaîne composée de
//										lettres majuscules

	// Indicateur de chaîne composées de lettre majuscules valides
	var estChaineMajuscule = true;

	// Ensemble des caractères valides
	var lettresValides = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

	// Vérifier que tous les caractères sont des lettres majuscules
	for (var i= 0 ; i < chaineMaj.length; i++) {
		var lettre = chaineMaj.charAt(i).toUpperCase();

		if (lettresValides.indexOf(lettre) == -1) {
			estChaineMajuscule = false;
		}
	}
	return estChaineMajuscule
}

//*****
