//<script language=javascript>
/*'---------------------------------------------------------------------------
' Projet           : +PROJET+
' Fichier          : GlobalLibJavacript.js
' Version ToolsBox : v2.0.0
' Auteur           : Edmundo Campos,Greg Serafino
' Date             : 2000-12-13,mai 2001
'
' Description      : Fichier contenant les fonctions d'usage general cote client.
'
' (c) 2002 Marcotte Multimédia, Inc. Tous droits reservés.
'---------------------------------------------------------------------------

'---------------------------------------------------------------------------
' Modifié par      : +AUTEURMODIF+
' En date du       : +DATEMODIF+
'
' Modification     : +MODIFICATION+
'-------------------------------------------------------------------------



*********************************************************************************
* Index des fonctions disponibles dans ce fichier (par ordre d'apparition):
* 
* Important:	Pour retrouver rapidement la fonction recherchee, faire une recherche
* 				sur le numero de la fonction + "-" ou par le nom de la fonction.
* _______________________________________________________________________________
* 
* 1- gf_ConfirmerQuitter()		- Affiche un message pour confirmer la sortie
* 1- gf_AfficherMsgConfirmation()- Affiche un message de confirmation
* 3- gf_Trim()					- Enlève les espaces en blanc dans une chaîne
* 2- gf_DetecterNavigateur()	- Detecte le navigateur utilise par le client
* 3- gf_ObtenirErrMsg()			- Pour obtenir un message d'erreur
* 4- gf_SelectChamp()			- Selectionne un champ dans un formulaire
* 5- gf_ValiderChamp()			- Appelle la validation unitaire d'un champ
* 6- gf_ValiderCodePostal()		- Valide un champ contenant un code postal
* 11- gf_ValiderContenuChamp()	- Valide si un champ a un contenu
* 12- gf_ValiderEmail()			- Valide les adresses email contenu dans un champs (obligatoire)
* 13- ouvrirFenetre				- Ouvre la fenetre d'edition d'entete de news letter
* 14- gf_Edit()					- Permet d'editer le pied de page et l'entete pour newsletter
* 17- IsPosInteger()			- Validation de nombre entier
* 18- isValidCP()				- Validation de Code Postal Canadien
* 19- isValidTel()				- Validation des numéro de téléphone
* 21 -lib_bwcheck		        - retourne un objet 'bw' pour faciliter le test des browsers (ex. if bw.ie5 ...)
* 22 -calculPremierePosition()  - retourne la position du premier element du menu
*********************************************************************************/

/*********************************************************************************
* Fonctions d'usage general
*********************************************************************************/

/*1-******************************************************************************
* Fonction:	gf_ConfirmerQuitter()
* 
* Entree(s):	Aucune
* Sortie(s):	Aucune
* 
* Description:	Affiche un message de confirmation avant de quitter
*********************************************************************************/
function gf_ConfirmerQuitter()
{
	if(gf_AfficherMsgConfirmation('CONFIRMER_QUITTER')){
		window.location.href="administration.asp";
	}
}

/*1-******************************************************************************
* Fonction:	gf_AfficherMsgConfirmation(ps_IdMsg)
* 
* Entree(s):	ps_IdMsg {String} - Indicateur du message à afficher
* Sortie(s):	True/False - Selon ce que l'utilisateur a choisi
* 
* Description:	Affiche un message de confirmation
*********************************************************************************/
function gf_AfficherMsgConfirmation(ps_IdMsg)
{
	if(confirm(gf_ObtenirErrMsg(ps_IdMsg))){return true;}
	else{return false;}
}

/*1-******************************************************************************
* Fonction:	gf_Trim(ps_Chaine)
* 
* Entree(s):	ps_Chaine {String} - Chaine à traiter
* Sortie(s):	{String} - Chaîne avec les espaces enlevés
* 
* Description:	Enlève les espaces en blanc dans une chaîne de caractères
*********************************************************************************/
function gf_Trim(ps_Chaine) {
	var s_RetVal = "";
	var i_Debut = 0;
	var i_Fin = 0;
	
	while ((i_Debut < ps_Chaine.length) && (ps_Chaine.charAt(i_Debut) == ' ')) {
		++i_Debut;
	}
	
	i_Fin = ps_Chaine.length;
	
	while ((i_Fin > 0) && (ps_Chaine.charAt(i_Fin - 1) == ' ')){--i_Fin;}
	
	s_RetVal = ps_Chaine.substring(i_Debut, i_Fin);
	
	return s_RetVal;
}

/*2-******************************************************************************
* Fonction:	gf_DetecterNavigateur()
* 
* Entree(s):	Aucune
* Sortie(s):	True
* 
* Description:	Detecte le navigateur utilise ainsi que la plateforme utilisée par
*				le client
*********************************************************************************/
function gf_DetecterNavigateur()
{
	if(navigator.appVersion.indexOf("Mac") != -1 ){
		document.form1.Mac.value = 1;
		document.form1.TailleChampPetit.value =10;
		document.form1.TailleChampMoyen.value =25;
		document.form1.TailleChampGrand.value =40;
	}
	else{
		document.form1.Mac.value = 0;
		document.form1.TailleChampPetit.value =15;
		document.form1.TailleChampMoyen.value =30;
		document.form1.TailleChampGrand.value =80;
	}
		
	if (navigator.appName == "Netscape"){document.form1.Netscape.value = 1;}
	else{document.form1.Netscape.value = 0;}
		
	return true;
}



/*4-******************************************************************************
* Fonction:	gf_SelectChamp(po_Champ)
* 
* Entree(s):	po_Champ {String} - Variable objet contenant le champ a valider
* Sortie(s):	Aucune
* 
* Description:	Met le focus sur le champ passé en paramètre
*********************************************************************************/
function gf_SelectChamp(po_Champ){
	po_Champ.select();	// Ne marche quavec netscape....
	po_champ.focus();	// Met le focus sur le champ	
}

/*********************************************************************************
* Fonctions concernant les VALIDATIONS UNITAIRES
*********************************************************************************/

/*5-******************************************************************************
* Fonction:	gf_ValiderChamp(po_Champ,pi_IdValid,pb_Obligatoire)
* 
* Entree(s):	po_Champ {String} - Variable objet contenant le champ a valider
*				pi_IdValid {String} - Identifiant du type de validation
*				pb_Obligatoire {String} - Flag pour savoir si champ obligatoire
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	Effectue l'appel a la validation unitaire du champ passe en parametre
*********************************************************************************/
function gf_ValiderChamp(po_Champ,pi_IdValid,pb_Obligatoire)
{
	switch(pi_IdValid){
		case 0: // Code Postal
			if(!gf_ValiderCodePostal(po_Champ)){
				alert(gf_ObtenirErrMsg('code_postal_invalide'));
				gf_SelectChamp(po_Champ);
			}
			break;
		default:
			break;
		
	}
}

/*6-******************************************************************************
* Fonction:	gf_ValiderCodePostal(po_Champ) - PAS BON! voir fonction 18 
* 
* Entree(s):	po_Champ {objet} - Variable objet contenant le champ a valider
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	Valide un code postal
*********************************************************************************/
function gf_ValiderCodePostal(po_Champ){

	var ls_CodePostal = po_Champ.value;
	var i;
	
	if(ls_CodePostal==''){return true;}
	
	for(i=0;i<ls_CodePostal.length;i++){
		if(!isNan(ls_CodePostal.charAt(i))){return false;}
		i++;
	}
	
	for(i=1;i<ls_CodePostal.length;i++){
		if(isNan(ls_CodePostal.charAt(i))){return false;}
		i++;
	}
	
	return true;
}

/*6-******************************************************************************
* Fonction:	gf_ObtenirSeparateur(pi_IdCat,pi_IdSep)
* 
* Entree(s):	pi_IdCat {Integer} - Identifiant de la catégorie de séparateur
*				pi_IdSep {Integer} - Identifiant du séparateur
* Sortie(s):	{String} - Séparateur demandé
* 
* Description:	Gère les différents séparateurs, soit retourne un séparateur
*				correspodant aux différents identifiants passés en paramètre
*********************************************************************************/
function gf_ObtenirSeparateur(pi_IdCat,pi_IdSep)
{
	switch(pi_IdCat){
		case 0: // Numérique
			switch(pi_IdSep){
				case 0: // Virgule
					return ',';
					break;
				case 1: // Point
					return '.';
					break;
				default:
					return '';
					break;
			}
			break;
		case 1: // Date
			switch(pi_IdSep){
				case 0:
					return '-';
					break;
				case 1: 
					return '/';
					break;
				default:
					return '';
					break;
			}
			break;
		case 2: // Pour séparer des enregistrements dans une chaîne de caractères
			switch(pi_IdSep){
				case 0:	// Virgule
					return ',';
					break;
				case 1: // Astérisque
					return '*';
					break;
				default:
					return '';
					break;
			}
			break;
		default:
			return '';
			break;
	}

}
/*7-******************************************************************************
* Fonction:	gf_ConfirmSupp(ps_ASupp)
* 
* Entree(s):	ps_ASupp {string} - nom de l'objet a supprimer
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	confirmation de suppression 
*********************************************************************************/
function gf_ConfirmSupp(ps_ASupp) {
	if (confirm('Êtes-vous sûr de vouloir supprimer ' + ps_ASupp + ' ?') == 0) 
 		return false;
	else 
		return true;
}
/*7-******************************************************************************
* Fonction:	gf_ConfirmEffacer(ps_ASupp)
* 
* Entree(s):	ps_ASupp {string} - nom de l'objet a supprimer
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	confirmation de suppression 
*********************************************************************************/
function gf_ConfirmEffacer(ps_ASupp) {
	if (confirm('Êtes-vous sûr de vouloir effacer ' + ps_ASupp + ' ?') == 0) 
 		return false;
	else 
		return true;
}

/*7temp-******************************************************************************
* Fonction:	validation(NomObjet)
* 
* Entree(s):	NomObjet {string} - Variable objet contenant le champ a valider
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	confirmation de suppression 
*********************************************************************************/
function validation(NomObjet) {
	if (confirm('Êtes-vous sûr de vouloir supprimer ' + NomObjet + ' ?') == 0) 
 		return false;
	else 
		return true;
}

/*7temp-******************************************************************************
* Fonction:	confirmMessage(message)
* 
* Entree(s):	message {string} - Variable definit dans MsgValidationFr/En pour les messages
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	confirmation de suppression 
*********************************************************************************/
function confirmMessage(message) {
	if (confirm(gf_ObtenirErrMsg(message)) == 0) 
 		return false;
	else 
		return true;
}

/*8-******************************************************************************
* Fonction:	fermer()
* 
* Description:	Ferme la fenetre active 
*********************************************************************************/
function fermer(){

	window.close() 
}
/*9-******************************************************************************
* Fonction:	gf_OuvrirFenetre(ps_url,ps_nomWin,ps_paraWin)
* 
* Entree(s):	ps_url {string} - url de la page a ouvrir
*				ps_nomWin (string)- nom de la fenetre
*				ps_paraWin (string)- parametre de la fenetre
*
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	confirmation de suppression 
*********************************************************************************/
function gf_OuvrirFenetre(ps_url,ps_nomWin,ps_paraWin){
	 window.open(ps_url,ps_nomWin,ps_paraWin);
}
 
function NouvelleFenetre(ps_url){
	 window.open(ps_url);
}

/*10-******************************************************************************
* Fonction:	gf_makeLinkTo(s)
* 
* Entree(s):	s 	- nom du combo box
*
* 
* Description:	fait l action immediatement, supprime la necessite d un bouton "go"
*********************************************************************************/
function gf_makeLinkTo(s)
{
	if(s.options[s.selectedIndex].value == "")
	{
		alert("Sélectionnez une entreprise S.V.P.");
	}
	else
	{
		window.top.location.href = s.options[s.selectedIndex].value;
	}
	
}

/*11-******************************************************************************
* Auteur:	Edmundo Campos pour Marcotte Multimédia
*
* Fonction:	gf_ValiderContenuChamp(po_Champ)
* 
* Entree(s):	po_Champ {Objet}	- Objet à valider le contenu sous le format 
*									(document.Formulaire.NomChamp)
* Sortie(s):	true/false
* 
* Description:	Valide si un champ a un contenu
*********************************************************************************/
function gf_ValiderContenuChamp(po_Champ)
{
	if(po_Champ.value==''){return false;}
	else{return true;}	
}

/*12.1-******************************************************************************
* Fonction:	gf_ValiderEmail(po_Champ)
* 
* Entree(s):	po_Champ {objet} - Variable objet contenant le champ a valider
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	Valide un adresse email (obligatoire)
*********************************************************************************/
function gf_ValiderEmail(po_Champ){

	var lb_bon = 0 
	var ls_email = po_Champ.value;
	
	if (ls_email != "votre@courriel.com")
	{
		if(ls_email.search('@') > 0 && (ls_email.search('@') + 4) < ls_email.length)
		{
			if(ls_email.indexOf(".") > 0 && (ls_email.indexOf(".") + 1) < ls_email.length  )
			{
				if(ls_email.length > 7 )
				{
					lb_bon =1 ;
				}
				else{lb_bon = 0; }
			}
			else{lb_bon = 0 ;}
		}
		else{lb_bon = 0; }
	}
	else{lb_bon = 0; }
	
	
	if (lb_bon)
	{
		po_Champ.value = po_Champ.value.toLowerCase();
		return true;
	}
	else
	{
		alert("Entrez un courriel valide");
		po_Champ.select();
		return false;
	}
}

/*12.2-******************************************************************************
* Fonction:	gf_ValiderEmail2(po_Champ)
* différence: le champ est pas obligatoire....
* 
* Entree(s):	po_Champ {objet} - Variable objet contenant le champ a valider
* Sortie(s):	True/False - flag Succes/Echec
* 
* Description:	Valide un adresse email (obligatoire)
*********************************************************************************/
function gf_ValiderEmail2(po_Champ){

	var lb_bon = 0 
	var ls_email = po_Champ.value;
	
	if (ls_email.length > 0)
	{
		if (ls_email != "votre@courriel.com")
		{
			if(ls_email.search('@') > 0 && (ls_email.search('@') + 4) < ls_email.length)
			{
				if(ls_email.indexOf(".") > 0 && (ls_email.indexOf(".") + 1) < ls_email.length  )
				{
					if(ls_email.length > 7 )
					{
						lb_bon =1 ;
					}
					else{lb_bon = 0; }
				}
				else{lb_bon = 0 ;}
			}
			else{lb_bon = 0; }
		}
		else{lb_bon = 0; }
	}
	else{lb_bon = 1; }
	
	if (lb_bon)
	{
		po_Champ.value = po_Champ.value.toLowerCase();
		return true;
	}
	else
	{
		alert("Entrez un courriel valide");
		po_Champ.select();
		return false;
	}
}

/*13-******************************************************************************
* Fonction:	ouvrirFenetre
*
*Auteur: Annie Raymond, 15 janvier 2001
* Entree(s):	check1	- verifier si cocher ou non
*				id - id de l'entete de categorie
*				id_news	- id du newsletter a modifier l'entete de categorie
* 
* Description:	Permet la modification de l'entete ou bas de page dans newsletter
*********************************************************************************/

function ouvrirFenetre(check1,id,id_news,langue)
{
	
	
	if (check1.checked == false)
	{
		alert(gf_ObtenirErrMsg('CHECK_CAT'));
	}
	else   
	{
	window.open("modif_entete.asp?id="+id +"&id_news=" + id_news +"&langue=" + langue + "", "winX", "top=100, left=50,width=600,height=600,scrollbars=YES");
	}
	

}
/*16-******************************************************************************
* Fonction:	Edit
* 
* Auteur : Annie Raymond 26 janvier 2001
* Entree(s):	head_Bottom	- Pied ou entete a modifier
*				id_news	- id du newsletter a modifier l'entete ou le bas de page
* 
* Description:	Permet la modification de l'entete ou bas de page dans newsletter
*********************************************************************************/

function gf_Edit(head_Bottom,id_news)
{
	
	
	if (head_Bottom == 'Entete')
	{
		window.open("modif_enteteNL.asp?flag=1&id_news=" + id_news + "", "winX", "top=100, left=50,width=600,height=600,scrollbars=yes");
	}
	else
	{
	window.open("modif_enteteNL.asp?flag=2&id_news=" + id_news + "", "winX", "top=100, left=50,width=600,height=600,scrollbars=yes");
	}
	

}

/*17-******************************************************************************
* Fonction:	isPosInteger
* 
* Auteur : JF Lanouette 6 février 2001
* Entree(s):	inputVal -> Champ qui doit etre numerique positif
*				
* 
* Description:	Peremt de faire de la validation sur les champs numérique
*********************************************************************************/
function isPosInteger(inputVal)
{
	inputStr = inputVal.toString()
	for (var i =0; i <inputStr.length; i++){
		var oneChar = inputStr.charAt(i)
		if (oneChar < "0" || oneChar > "9"){
			return false
		}
	}
	return true
}




/*20-******************************************************************************
* Fonction:	doublerCaractAvantInsert
* 
* Auteur : JF Lanouette 8 février 2001
* Entree(s):	inputVal -> Numero de telephone
*				
* 
* Description:	Anciennement utiliser pout les insert dans les bd mais peu etre utile dans d'autre circonstance
*********************************************************************************/		
		
		function doublerCaractAvantInsert(strString)
		{
			//Ex. :       doublerCaractAvantInsert("It's me!!")
			//donnerais : "It''s me!!"
			var result = "";
			var i = 0;
			var caract = "";
			//Inserer ,A, pour chaque caractere à doubler avant une insertion dans BD
			var aDoubler = ",',";
			
			for(i = 0; i < strString.length; i++)
			{
				caract = strString.charAt(i);
				if(aDoubler.indexOf("," + caract + ",") >= 0)
					result = "" + result + caract + caract;
				else
					result += "" + caract;
			}
			return result;
		}
		
/*21-******************************************************************************
* Fonction:	lib_bwcheck
* 
* Auteur : Nabil Alaoui 
* Entree(s):
*				
* 
* Description:	retourne un objet 'bw' pour faciliter le test des browsers (ex. if bw.ie5 ...)
*********************************************************************************/		

		//Browsercheck ***************
		function lib_bwcheck(){ 
		  this.ver=navigator.appVersion
		  this.agent=navigator.userAgent
		  this.dom=document.getElementById?1:0
		  this.opera5=this.agent.indexOf("Opera 5")>-1
		  this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
		  this.ie55=(this.ver.indexOf("MSIE 5.5")>-1 && this.dom && !this.opera5)?1:0; 
		  this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
		  this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
		  this.ie=this.ie4||this.ie5||this.ie6
		  this.mac=this.agent.indexOf("Mac")>-1
		  this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
		  this.ns4=(document.layers && !this.dom)?1:0;
		  this.bw=(this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera5)
		  return this
		}
		//bw=new lib_bwcheck() //Browsercheck object
		

/*22-******************************************************************************
* Fonction:	calculPremierePosition()
* 
* Auteur : Nabil Alaoui 
* Entree(s):
*				
* 
* Description:	retourne la position du premier element du menu
*********************************************************************************/		
		
		//Position du menu
		function calculPremierePosition(tailleFixe){

			//récupère la largeur de la fenetre
			if (bw.ns4 || bw.ns6)
				var allWidth = window.innerWidth;
			else
				var allWidth = document.body.clientWidth;

			//calcul la position du premier élément
			var firstElPos = (( allWidth - tailleFixe) / 2);
			
			//Ajustement de la position pour netscape 4 / PC
			if (bw.ns4 && !bw.mac)
					firstElPos -=8
			
			if (firstElPos < 0){
				firstElPos = 0;
			}
			
			return firstElPos;
		}

