/* ========================================================================================
	::	General scripts
======================================================================================== */

	/*
		oError = {
			// optionals
			"oFunction"		: Callback function,
			"oFunctionArgs"	: Callback function arguments,

			// required
			"oForm"			: Referencing the form object,
			"sError"		: Error message,
			"iError"		: Number of errors,
			"aFocus"		: Array storing the #id of elements which need the focus
		}
	*/
	function formErrorValidation(oError){

		var sError			 = "";							// Error message
		var f				 = oError.oForm;				// Referencing the form object
		var iError			 = oError.iError;				// Number of errors
		var oFunction		 = oError.oFunction;			// Callback function arguments
		var aFocus			 = oError.aFocus;				// Required elements Array
		var oFunctionArgs	 = oError.oFunctionArgs;		// Callback function arguments

		if(iError != 0) {

			// Callback function if exists
			if(oFunction != null) oFunction(oFunctionArgs);

			// Error message
			sError += "--------------------------------------------------------\n";
			sError += "*     "+(iError > 1 ? "Vous avez "+ iError +" erreurs à corriger !" : "Vous avez "+ iError +" erreur à corriger !")+" :     *\n";
			sError += "--------------------------------------------------------\n";
			sError += "                                                    \n";
			sError += oError.sErreur;
			//alert(sError);

			// Build the message
			if($('block_2')){

				// Positionning to the top of the window in order to see the displayed error message
				//new Effect.ScrollTo('top_page', { queue: { position: 'end', scope: 'verifForm' } });

				var oFocus = aFocus[0];

				// Positionning to first element required
				if(oFocus != null){
					new Effect.ScrollTo($(oFocus).previous("label").identify(), { queue: { position: 'end', scope: 'verifForm' } });
					$(oFocus).focus();
				}

				//new Effect.Appear($('block_2').update('<img id="closeBtnBlock2" class="closeImg pointer" src="./images/cancel.png" width="16" height="16" alt="Fermer" title="Fermer" />'+ (iError > 1 ? 'Vous avez '+ iError +' erreurs à corriger !' : 'Vous avez '+ iError +' erreur à corriger !')), { queue: { position: 'end', scope: 'verifForm' } });
				//$('closeBtnBlock2').onclick = function(){ new Effect.Fade(this.up()); };
			}

			return false;
		}else{
			return true;
		}
	}



	/**
	 *
	 * @access public
	 * @return boolean
	 **/
	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()-------------------------------------------------------




	/**
	 *
	 * @access public
	 * @return void
	 **/
	function reloadImage(sObj){
		var oImg = $(sObj);
		var sImgSrc = (arguments.length == 2 ? arguments[1] : oImg.src);
		if(oImg) oImg.src = sImgSrc+"?"+(new Date().getTime());
	}




/* ========================================================================================
	::	Nomenclature de description de fonction à utiliser à chaque création de fonction
======================================================================================== */

	/* 	- nomFonction() ----------------------------------------------------------
	|	Description :
	|		- Que fais la fonction
	|	Variables Globales Utilisées :
	|		-
	|	Aguments OBLIGATOIRES
	|		- argument n (type)	 : name		=>	description
	|	Aguments FACULTATIFS
	|		- argument n (type)	 : name		=>	description
	|	Fonctions appellées :
	|		- nomFonctionAppellees
	|	Pages appellantes :
	|		- chemin de la page
	|	Return :
	|		- valeurs retournée
	|	Infos :
	|		- informatiosn complémentaires
	------------------------------------------------------------------------------------ */

	// fin Fonction nomFonction(arguments)-----------------------------------------------






	/* 	- VARIABLES_nnn -------------------------------------------------------------------
	|	VARIABLES UTILISEES PAR LES FONCTIONS
	|		:: nomFonction()
	------------------------------------------------------------------------------------ */


/* fin Nomenclature de description de fonction========================================================== */







/* ========================================================================================
	::	Variables GLOBALES
======================================================================================== */

	var _G_ERROR_CLASSNAME	 = "_G_ERROR_CLASSNAME";
	var _G_CORRECT_CLASSNAME = "_G_CORRECT_CLASSNAME";
	var _G_MENU_DESCRIPTION	 = [
		"Elitiss met à votre disposition un coach pour vous accompagner dans l'élaboration de votre site internet et vous former aux techniques du web.",
		"Elitiss devient votre coach évènementiel et vous conseille dans le choix et la mise en place de votre évènement.",
		"Elitiss vous apporte ses conseils lors de l'élaboration de votre stratégie marketing.",
		"Elitiss établit un diagnostic de votre entreprise pour devenir votre coach particulier quant à la définition de votre stratégie de communication."
	]

/* fin Variables GLOBALES========================================================== */







/* ========================================================================================
	::	Fonctionnalités AJAX
======================================================================================== */


/* fin Fonctionnalités AJAX========================================================== */




/* ========================================================================================
	::	Vérification de formulaires en mode AJOUT/MODIFICATION
======================================================================================== */


	/* 	- verifFormContact() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de Contact
	|	Pages appellantes :
	|		 - inc/pages.inc.php
	|	Return :
	|		 - true		 : si tous les champs obligatoires sont complétés
	|		 - false	 : si au moins un des champs obligatoires n'est pas complété
	------------------------------------------------------------------------------------ */
	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

		f.con_nom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_nom.value == "") {
			sErreur = sErreur + " - Nom manquant !\n";
			aFocus[iError] = "con_nom";
			iError++;
			f.con_nom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
		}

		f.con_prenom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_prenom.value == "") {
			sErreur = sErreur + " - Prénom manquant !\n";
			aFocus[iError] = "con_prenom";
			iError++;
			f.con_prenom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !");
		}

		f.con_tel.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_tel.value == "") {
			sErreur = sErreur + " - N° de téléphone manquant !\n";
			aFocus[iError] = "con_tel";
			iError++;
			f.con_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - N° de téléphone requis !");
		}else{
			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[0-9]{10}$",f.con_tel.value)){
				sErreur = sErreur + " - Le format du n° de téléphone est incorrect (10 chiffres requis)!\n";
				aFocus[iError] = "con_tel";
				iError++;
				f.con_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format du n° de téléphone est incorrect (10 chiffres requis) !");
			}
		}

		f.con_email.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_email.value == "") {
			sErreur = sErreur + " - Adresse email manquante !\n";
			aFocus[iError] = "con_email";
			iError++;
			f.con_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !");
		}else{
			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.con_email.value)){
				sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
				aFocus[iError] = "con_email";
				iError++;
				f.con_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !");
			}
		}

		f.con_precisions.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_sujet.value == "autre" && f.con_precisions.value == "") {
			sErreur = sErreur + " - Précisez le sujet de votre email !\n";
			aFocus[iError] = "con_precisions";
			iError++;
			f.con_precisions.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Précisez le sujet de votre email !");
		}

		f.con_message.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_message.value == "") {
			sErreur = sErreur + " - Message manquant !\n";
			aFocus[iError] = "con_message";
			iError++;
			f.con_message.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Message requis !");
		}

		/*
		f.code.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.code.value == "") {
			sErreur = sErreur + " - Code de sécurité requis !\n";
			aFocus[iError] = "code";
			iError++;
			f.code.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Code de sécurité requis !");
		}
		*/

		f.zzhpClearText.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.zzhpClearText.value == "") {
			sErreur = sErreur + " - Code de sécurité requis !\n";
			aFocus[iError] = "zzhpClearText";
			iError++;
			f.zzhpClearText.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Code de sécurité requis !");
		}


		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Contact------------------------------------------




	/* 	- verifFormDevis() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de Devis
	|	Pages appellantes :
	|		 - inc/pages.inc.php
	|	Return :
	|		 - true		 : si tous les champs obligatoires sont complétés
	|		 - false	 : si au moins un des champs obligatoires n'est pas complété
	------------------------------------------------------------------------------------ */
	function verifFormDevis(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

		f.dev_nom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.dev_nom.value == "") {
			sErreur = sErreur + " - Nom manquant !\n";
			aFocus[iError] = "dev_nom";
			iError++;
			f.dev_nom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
		}

		f.dev_prenom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.dev_prenom.value == "") {
			sErreur = sErreur + " - Prénom manquant !\n";
			aFocus[iError] = "dev_prenom";
			iError++;
			f.dev_prenom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !");
		}

		f.dev_tel.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.dev_tel.value == "") {
			sErreur = sErreur + " - N° de téléphone manquant !\n";
			aFocus[iError] = "dev_tel";
			iError++;
			f.dev_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - N° de téléphone requis !");
		}else{
			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[0-9]{10}$",f.dev_tel.value)){
				sErreur = sErreur + " - Le format du n° de téléphone est incorrect (10 chiffres requis)!\n";
				aFocus[iError] = "dev_tel";
				iError++;
				f.dev_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format du n° de téléphone est incorrect (10 chiffres requis) !");
			}
		}

		f.dev_email.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.dev_email.value == "") {
			sErreur = sErreur + " - Adresse email manquante !\n";
			aFocus[iError] = "dev_email";
			iError++;
			f.dev_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !");
		}else{
			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.dev_email.value)){
				sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
				aFocus[iError] = "dev_email";
				iError++;
				f.dev_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !");
			}
		}

		/*
		f.code.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.code.value == "") {
			sErreur = sErreur + " - Code de sécurité requis !\n";
			aFocus[iError] = "code";
			iError++;
			f.code.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Code de sécurité requis !");
		}
		*/

		f.zzhpClearText.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.zzhpClearText.value == "") {
			sErreur = sErreur + " - Code de sécurité requis !\n";
			aFocus[iError] = "zzhpClearText";
			iError++;
			f.zzhpClearText.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Code de sécurité requis !");
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Devis------------------------------------------





	/**
	 *
	 * @access public
	 * @return void
	 **/
	function checkField(oField){

		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 requis
		var sField	   	 = oField.identify();			// identification du champ #id
		var f		   	 = oField.up("form");			// référence au formulaire à analyser
		var bMailDuplicated = false;					// le mail n'est pas encore dupliqué

		switch(sField){
			/* MAIL */
			case "con_nom":
				$("con_nom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_nom.value == "") {
					sErreur = sErreur + " - Nom requis !\n";
					aFocus[iError] = "con_nom";
					iError++;
					$("con_nom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
				}
			break;
			case "con_prenom":
				$("con_prenom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_prenom.value == "") {
					sErreur = sErreur + " - Prénom requis !\n";
					aFocus[iError] = "con_prenom";
					iError++;
					$("con_prenom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !");
				}
			break;
			case "con_tel":
				$("con_tel").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_tel.value == "") {
					sErreur = sErreur + " - N° de téléphone requis !\n";
					aFocus[iError] = "con_tel";
					iError++;
					$("con_tel").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - N° de téléphone requis !");
				}else{
					// on teste le format "0123456789"
					if(!testerMotif("^[0-9]{10}$",f.con_tel.value)){
						sErreur = sErreur + " - Le format du n° de téléphone est incorrect (10 chiffres requis)!\n";
						aFocus[iError] = "con_tel";
						iError++;
						f.con_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format du n° de téléphone est incorrect (10 chiffres requis) !");
					}
				}
			break;
			case "con_email":
				$("con_email").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_email.value != "") {
					// on teste le format "aa@aa.aa"
					if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.con_email.value)){
						sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
						aFocus[iError] = "con_email";
						iError++;
						$("con_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !");
					}
				}else{
					sErreur = sErreur + " - Adresse email requise !\n";
					aFocus[iError] = "con_email";
					iError++;
					$("con_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !");
				}
			break;
			case "con_sujet":
			case "con_precisions":
				$("con_precisions").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_sujet.value == "autre" && f.con_precisions.value == "") {
					sErreur = sErreur + " - Précisez le sujet de votre email !\n";
					aFocus[iError] = "con_precisions";
					iError++;
					$("con_precisions").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Précisez le sujet de votre email !");
				}
			break;
			case "con_message":
				$("con_message").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_message.value == "") {
					sErreur = sErreur + " - Message requis !\n";
					aFocus[iError] = "con_message";
					iError++;
					$("con_message").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Message requis !");
				}
			break;
			case "code":
				$("code").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.code.value == "") {
					sErreur = sErreur + " - Code de sécurité requis !\n";
					aFocus[iError] = "code";
					iError++;
					$("code").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Code de sécurité requis !");
				}
			break;
			case "zzhpClearText":
				$("zzhpClearText").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.zzhpClearText.value == "") {
					sErreur = sErreur + " - Code de sécurité requis !\n";
					aFocus[iError] = "zzhpClearText";
					iError++;
					$("zzhpClearText").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Code de sécurité requis !");
				}
			break;



			/* DEVIS */
			case "dev_nom":
				$("dev_nom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.dev_nom.value == "") {
					sErreur = sErreur + " - Nom requis !\n";
					aFocus[iError] = "dev_nom";
					iError++;
					$("dev_nom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
				}
			break;
			case "dev_prenom":
				$("dev_prenom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.dev_prenom.value == "") {
					sErreur = sErreur + " - Prénom requis !\n";
					aFocus[iError] = "dev_prenom";
					iError++;
					$("dev_prenom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !");
				}
			break;
			case "dev_tel":
				$("dev_tel").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.dev_tel.value == "") {
					sErreur = sErreur + " - N° de téléphone requis !\n";
					aFocus[iError] = "dev_tel";
					iError++;
					$("dev_tel").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - N° de téléphone requis !");
				}else{
					// on teste le format "0123456789"
					if(!testerMotif("^[0-9]{10}$",f.dev_tel.value)){
						sErreur = sErreur + " - Le format du n° de téléphone est incorrect (10 chiffres requis)!\n";
						aFocus[iError] = "dev_tel";
						iError++;
						f.dev_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format du n° de téléphone est incorrect (10 chiffres requis) !");
					}
				}
			break;
			case "dev_email":
				$("dev_email").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.dev_email.value != "") {
					// on teste le format "aa@aa.aa"
					if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.dev_email.value)){
						sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
						aFocus[iError] = "dev_email";
						iError++;
						$("dev_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !");
					}
				}else{
					sErreur = sErreur + " - Adresse email requise !\n";
					aFocus[iError] = "dev_email";
					iError++;
					$("dev_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !");
				}
			break;

		}

		return {"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus };

	}


/* ========================================================================================
	::	Global vars
======================================================================================== */

	/* 	- VARS_001 -------------------------------------------------------------------
	|	VARS USED IN THE FUNCTIONS
	|		:: functionName()
	------------------------------------------------------------------------------------ */

/* end Global vars=============================================================================== */