// JavaScript DANIVAL


/* ========================================================================================
	::	Variables globales
======================================================================================== */

	/* 	- VARIABLES_001 -------------------------------------------------------------------
	|	VARIABLES UTILISEES PAR LES FONCTIONS
	|		:: nomFonction()
	------------------------------------------------------------------------------------ */
	var menuActif	= "";
	var sTexte		= "";
	var nav			= "";


	// Détection du navigateur
	switch(window.navigator.appName){
		case "Netscape":
			switch(window.navigator.vendor){
				case "Firefox": nav = "Firefox" ; break; // FireFox
				case "Netscape": // Netscape
				default: nav = "Netscape"; break;
			}
		break;
		case "Microsoft Internet Explorer": // Internet Explorer
		default: nav = "IE"; break;
	}


	var ns4 = (document.layers)?true:false;
	var ie4 = (document.all)?true:false;
	var dom = (document.getElementById)?true:false; // NS 7.02, Mozilla FireFox, Mozilla, IE6

/* fin Variables globales=============================================================================== */










/* ========================================================================================
	::	Scripts Généraux
======================================================================================== */

	/*
		oError = {
			"oForm":,
			"iError":,
			"aFocus":
		}
	*/
	function formErrorValidation(oError){

		var sError		 = "";							// construction du message d'erreur par concaténation successives
		var f			 = oError.oForm;				// référence au formulaire à analyser
		var iError		 = oError.iError;				// nombre d'erreurs
		var oBtnSubmit	 = oError.oBtnSubmit;			// référence au bouton pour soumettre le formulaire

		if(iError != 0) {
			/*
			sError += "--------------------------------------------------------\n";
			sError += "*     Vous avez "+iError+" erreur"+(iError > 1 ? 's':'')+" à corriger :     *\n";
			sError += "--------------------------------------------------------\n";
			sError += "                                                    \n";
			*/
			sError += oError.sErreur;
			alert(sError);
			if(oError.aFocus[0]!=null) eval("f." + oError.aFocus[0]).focus();
			if(oBtnSubmit) oBtnSubmit.disabled = false; // on réactive le bouton le cas échéant
			return false;
		}else{
			return true;
		}
	}



	var _bFORM_PROTECTED = true;
	function testerCaptcha(sCaptcha){

		if(sCaptcha == "") return false;

		var xhr_object	 = getHTTPObject();
		if (!xhr_object) return;

		var method		 = "POST";
		var action		 = "tester_captcha.php";
		var data 		 = null;

		// récupération des données à enregistrer
		data = "sCaptcha="+escape(sCaptcha);

		// Ouverture de la connexion au fichier avec la méthode choisie
		// en mode synchrone car le script doir être bloquant
		xhr_object.open(method, action, false);

		// Quand les données sont traitées
		// on affiche la réponse de l'enregistrement du fichier
		xhr_object.onreadystatechange = function () {
			if(xhr_object.readyState == 4) {
				_bFORM_PROTECTED = xhr_object.responseText;
			}
		};

		// Ajout des en-têtes nécessaires à la requête en POST
		if(method == "POST") xhr_object.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

		// Envoi des données
		xhr_object.send(data);

	}




	/**
	 *
	 * @access public
	 * @return void
	 **/
	function verifFormContact(oForm){

		var sErreur	 = "";							// construction du message d'erreur par concaténation successives
		var iError	 = 0;							// comptabilisation des erreurs
		var aFocus	 = new Array();					// tableau de mémorisation du focus pour se repositionner sur le premier éléments manquant
		var f		 = oForm;						// référence au formulaire à analyser

		// Les messages d'erreur et libellé allemands et néerlandais sont affichés en anglais
		if(_aDefault_Lang == "DE" || _aDefault_Lang == "NE") _aTranslation = _aTranslation_EN;

		// On désactive le bouton de soumission du formulaire
		// pour éviter les envois multiples
		var oBtnSubmit = getObjet("btnSubmit");
		if(oBtnSubmit) oBtnSubmit.disabled = true;

		if(f.sNom.value == "") {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["001_missing_LastName"] +"!\n";
			aFocus[iError] = "sNom";
			iError++;
		}

		if(f.sAdresse.value == "") {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["002_missing_Adress"] +"!\n";
			aFocus[iError] = "sAdresse";
			iError++;
		}

		if(f.sCP.value == "") {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["003_missing_CP"] +"!\n";
			aFocus[iError] = "sCP";
			iError++;
		}else{
			// on teste le format "0000" || "00000"
			if(!testerMotif("^[0-9]{4,5}$",f.sCP.value)){
				sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["003_error_CP"] +"!\n";
				aFocus[iError] = "sCP";
				iError++;
			}
		}

		if(f.sVille.value == "") {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["004_missing_Town"] +"!\n";
			aFocus[iError] = "sVille";
			iError++;
		}

		if(f.sMail.value == "") {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["005_missing_Mail"] +"!\n";
			aFocus[iError] = "sMail";
			iError++;
		}else{
			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.sMail.value)){
				sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["005_error_Mail"] +"!\n";
				aFocus[iError] = "sMail";
				iError++;
			}
		}

		if(f.sMessage.value == "") {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["006_missing_Message"] +"!\n";
			aFocus[iError] = "sMessage";
			iError++;
		}

		// Test de l'image de Protection Système CAPTCHA
		if(f.sCaptcha.value == "" || f.sCaptcha.value.length != 5) {
			sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["007_missing_Captcha"] +"!\n";
			aFocus[iError] = "sCaptcha";
			iError++;
		}else{
			// le numéro captcha doit correspondre au code stockée en variable de session
			testerCaptcha(f.sCaptcha.value);
			if(!_bFORM_PROTECTED){
				sErreur = sErreur + " - "+ _aTranslation["verifFormContact"]["007_error_Captcha"] +"!\n";
				aFocus[iError] = "sCaptcha";
				iError++;
			}
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus, "oBtnSubmit":oBtnSubmit });

	}




	/* 	- generateProtectionImage() ----------------------------------------------------------
	|	Description :
	|		-	Générer une nouvelle image de protection de formulaire
	|	Fonctions appellées :
	|		- getObjet()
	|	Pages appellantes :
	|		- inc/clients_partenaires.php
	|	Return :
	|		- NULL
	------------------------------------------------------------------------------------ */
	function generateProtectionImage(oId,sSrc){

		var oImg = getObjet(oId);
		if(oImg) reloadImage(oId,sSrc);

	}




	function reloadImage(sId,sImgSrc){
		var oImg = getObjet(sId);
		if(oImg){
			oImg.src = sImgSrc+"?"+(new Date().getTime());
		}
	}



	/**
	 *
	 * @access public
	 * @return void
	 **/
	function initField(oField,sAction,sDefaultValue){

		switch(sAction){
			case "in":
				if(oField.value == sDefaultValue) oField.value = "";
			break;
			case "out":
				if(oField.value == "") oField.value = sDefaultValue;
			break;
		}

	}






	/* 	- changeClassName() -------------------------------------------------------
	|	Description :
	|		-	Modifier la classe d'un objet
	|	Aguments OBLIGATOIRES
	|		- argument 0 (string)	 : objId		=>	identifiant de l'objet sur lequel agir
	|		- argument 1 (string)	 : newClassName	=>	nom de la nouvelle classe de style à appliquer
	|	Return :
	|		- NULL
	------------------------------------------------------------------------------------ */
	function changeClassName(objId,newClassName){

		var o = getObjet(objId);
		if(o){
			o.setAttribute("class",newClassName);
			o.setAttribute("className",newClassName);
		}

	}
	// fin Fonction changeClassName(objId,newClassName)--------------------------------------







	/* 	- changeUrl() ----------------------------------------------------------
	|	Description :
	|		-	Fonction utilisée pour recharger une nouvelle url et donc changer de page.
	|	Aguments OBLIGATOIRES
	|		- argument 0 (string)	 : url	=>	url de la nouvelle page à charger
	|	Fonctions appellées :
	|		- changeClassName()
	|	Pages appellantes :
	|		- prive/groupes_utilisateurs.php
	|	Return :
	|		- NULL
	------------------------------------------------------------------------------------ */
	function changeUrl(url){

		document.location.href = url;

	}
	// fin Fonction changeUrl(url)-------------------------------------------------------






	/* 	- getHTTPObject() ----------------------------------------------------------
	|	Description :
	|		-	Instanciation d'un objet XmlHttpRequest
	|			quelque soit le navigateur
	|	Return :
	|		- référence à un objet XmlHttpRequest
	------------------------------------------------------------------------------------ */
	function getHTTPObject(){

		var xmlhttp = false;

		// Compilation conditionnelle d'IE
		/*@cc_on
		@if (@_jscript_version >= 5)
			try{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (E){
					xmlhttp = false;
				}
			}
		@else
			xmlhttp = false;
		@end @*/

		// on essaie de créer l'objet si ce n'est pas déjà fait
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined'){
			try{
				xmlhttp = new XMLHttpRequest();
			}catch (e){
				xmlhttp = false;
			}
		}

		if (xmlhttp){
			// on définit ce qui doit se passer quand la page répondra
			xmlhttp.onreadystatechange = function(){
				// 4 : état "complete"
				if (xmlhttp.readyState == 4){
					// 200 : code HTTP pour OK
					if (xmlhttp.status == 200){
						/*
						Traitement de la réponse.
						Ici on affiche la réponse dans une boîte de dialogue.
						*/
						alert(xmlhttp.responseText);
					}
				}
			}
		}

		return xmlhttp;

	}
	// fin Fonction getHTTPObject()-----------------------------------------------






	/* 	- getObjet() -----------------------------------------------------------------------
	|	Description :
	|		-	Atteindre un objet en fonction du navigateur utilisé
	|	Variables Globales Utilisées :
	|		- dom (bool)
	|	Aguments OBLIGATOIRES
	|		- argument 0 (string)	 : id		=>	id de l'objet à atteindre
	|	Return :
	|		- une référence à l'objet dont l'id est passé en paramètre
	|	Infos :
	|		- plusieurs fonction utilisent cette fonction dans leur scripts
	------------------------------------------------------------------------------------ */
	function getObjet(id){

		if(id){
			if (dom) obj = window.document.getElementById(id);
			else if (ie4) obj = window.document.all[id];
			else if (ns4) obj = window.document.layers[id];
		}else{
			obj = false;
		}
		return obj;

	}
	// fin Fonction getObjet(id)-----------------------------------------------------------





	/* 	- setValue() ----------------------------------------------------------
	|	Description :
	|		-	Modifier la valeur d'une balise
	|	Aguments OBLIGATOIRES
	|		- argument 0 (string)	 : idObj		=>	identifiant de l'objet à modifier
	|		- argument 1 (string)	 : newValue		=>	nouvelle valeur de l'objet
	|	Fonctions appellées :
	|		- getObjet()
	|	Pages appellantes :
	|		- toutes les pages avec des formulaires d'ajout/modification/suppression
	|	Return :
	|		- NULL
	------------------------------------------------------------------------------------ */
	function setValue(idObj,newValue){

		var obj = getObjet(idObj);
		if(obj)	{
			obj.value = newValue;
		}

	}
	// fin Fonction setValue(idObj,newValue)-----------------------------------------------




	/* 	- testerMotif() ----------------------------------------------------------
	|	Description :
	|		-	Fonction utilisée pour vérifier le motif d'un masque sur une expression à tester
	|			dans le module d'inscription des sociétés.
	|	Aguments OBLIGATOIRES
	|		- argument 0 (string)	 : sMotif		=>	motif à tester
	|		- argument 0 (string)	 : sExpression	=>	expression sur laquelle tester le motif
	|	Pages appellantes :
	|		- inc/clients_partenaires.php
	|	Return :
	|		- true : si l'expression testée respecte le motif
	|		- false: si l'expression testée ne respecte pas le motif
	------------------------------------------------------------------------------------ */
	function testerMotif(sMotif,sExpression){

		// Création de l'expression régulière
		var rControle = new RegExp(sMotif);

		// Test du motif
		return rControle.test(sExpression);

	}
	// fin Fonction testerMotif()-------------------------------------------------------




	function el_id_by_name(el) {
		var els = new Array();
		var sDebug = "";
		for (i=0;i<el.length;i++) {
			if (el[i].name) {
				els[el[i].name] = i;
				sDebug += " - "+i+" : els["+ el[i].name +"] = "+i+"\n";
			}
		}
		//alert(sDebug);
		return els;
	}




/* fin Scripts Généraux================================================================================= */










/* ========================================================================================
	::	Scripts Développeur
======================================================================================== */




	/* 	- VoirPropriete() ----------------------------------------------------------
	|	Description :
	|		-	Fonction permettant de voir toutes les propriétés des objets pour
	|			lesquels l'objet parent est passé en paramètre.
	|	Aguments OBLIGATOIRES
	|		- argument 0 (objet)	 : f		=>	l'objet parent à Analyser et à parcourrir
	|	Return :
	|		- toutes les propriétés de l'objet ainsi que celles des objets enfants
	------------------------------------------------------------------------------------ */
	function VoirPropriete(f) {
		var object = eval(f.object.value);
		w = open("","popup","width=400,height=400,scrollbars=yes,resizable=yes");
		w.document.write("<HTML><HEAD><TITLE>Propriétés de "+f.object.value+"</TITLE></HEAD>");
		w.document.write("<BODY><FONT face='arial' size=1>");
		if (object) {
			for (var i in object) {
				w.document.write("<B>"+i+"</B> = "+object[i]+"<BR>");
			}
		} else {
			w.document.write("L'objet <B>"+f.object.value+"</B> n'existe pas...<BR> Vérifiez votre saisie.");
		}
		w.document.write("</FONT></BODY></HTML>");
		w.document.close();
		w.focus();
	}
	// fin Fonction VoirPropriete(f)-----------------------------------------------------




/* fin Scripts Développeur=============================================================================== */