/* ========================================================================================
	::	General scripts
	$Id: ent_functions.js 342 2009-11-12 18:22:09Z Nico $
======================================================================================== */

	/*
		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 void
	 **/
	function reloadImage(sObj){
		var oImg = $(sObj);
		var sImgSrc = (arguments.length == 2 ? arguments[1] : oImg.src);
		if(oImg) oImg.src = sImgSrc+"?"+(new Date().getTime());
	}




	/**
	 *
	 * @access public
	 * @return void
	 **/
	function manageRessources(oElement){
		var oDiv	 = $(oElement).up('div');
		var aItem	 = oDiv.nextSiblings();
		var iItem	 = aItem.length;
		var sD		 = "";
		var bStop	 = false;
		var iLimit = oDiv.readAttribute("_iLevel");
		var bVisibility = oDiv.readAttribute("_bVisibility");
		//alert("## niveau : " + iLimit + " [visibilité: "+ bVisibility +" | nb d'items : " + iItem + "]\n");
		sD += "## niveau : " + iLimit + " [visibilité: "+ bVisibility +" | nb d'items : " + iItem + "]\n";
		for(i=0;i<iItem;i++){
			var oItem = aItem[i];
			var iLevel	 = oItem.readAttribute("_iLevel");
			var sType	 = oItem.readAttribute("_sType");
			var bState	 = oItem.readAttribute("_bVisibility");
			if((iLevel == iLimit && sType == "folder") || iLevel < iLimit){
				sD += "BREAK ################\n";
				bStop = true;
				break;
			}
			sD += " - {"+(bStop ? "stop" : "continue")+"}" + oItem.tagName + " [state: "+ bState + " | type: "+ sType +" | niveau: "+ iLevel +"]\n";

			if(bVisibility == "visible"){
				// On masque les sous-éléments
				oItem.hide();
				oItem.writeAttribute("_bVisibility","hidden");
			}else{
				// On affiche les sous-éléments
				oItem.show();
				oItem.writeAttribute("_bVisibility","visible");
			}
		}

		if(bVisibility == "visible"){
			// On masque les sous-éléments
			oDiv.writeAttribute("_bVisibility","hidden");
		}else{
			// On affiche les sous-éléments
			oDiv.writeAttribute("_bVisibility","visible");
		}

		//alert(sD);
	}




	/**
	 *
	 * @access public
	 * @return void
	 **/
	function updateShowerDate(sDate){

		var sId = (arguments.length > 1 ? arguments[1] : 'oShowerDate');
		var aDate = sDate.split('.');
		Element.update(sId,sDate);
		//Element.update(sId,aDate[2] + '.' + aDate[1] + '.' + aDate[0]);

	}




	/**
	 *
	 * @access public
	 * @return void
	 **/
	function checkHoraire(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 requis
		var f		   	 = oForm;						// référence au formulaire à analyser
		var choix	  	 = f.choix.value;				// choix en cours : "create" OU "update"

		$('sDivHoraire').next("span.help").update("").hide();
		if(f['res_horaire[]']) {
			if(!radioIsChecked('res_horaire[]')) {
				sErreur = sErreur + " - Choisissez au moins un horaire !\n";
				aFocus[iError] = null;
				iError++;
				$('sDivHoraire').next("span.help").show().update(" - Choisissez au moins un horaire !");
			}
		}else{
			sErreur = sErreur + " - Horaire requis !\n";
			aFocus[iError] = null;
			iError++;
			$('sDivHoraire').next("span.help").show().update(" - Horaire requis !");
		}

		//return {"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus };

	}


	/**
	 *
	 * @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 boolean
	 **/
	function radioIsChecked(cbName){

		var bIsChecked = false;

		// si une des cases est cochée on l'indique
		$$('input[name="' + cbName + '"]').each(function(oItem) {
			if(oItem.checked) bIsChecked = true;
		});

		return bIsChecked;

	}





	/**
	 *
	 * @access public
	 * @return void
	 **/
	function selectDeselectAll(o,cbCibleName){
		var sAction = (o.checked ? "coche":"decoche");
		if(arguments.length > 2){
			var cbCiblePrefix = arguments[2];
			cocheDecocheCbByPrefixOfId(cbCibleName,cbCiblePrefix,sAction);
		}else{
			cocheDecocheCb(cbCibleName,sAction);
		}
	}



	/**
	 *
	 * @access public
	 * @return void
	 **/
	function cocheDecocheCb(cbName,choix){

		// si le choix vaut 'coche' on coche la case
		$$('input[name="' + cbName + '"]').each(function(oItem) {
			// d'abord on fait l'inverse de ce que l'on souhaite
			//   - pour cocher les cases : on les décoche toutes
			//   - pour décocher les cases : on les coche toutes
			oItem.checked = !(choix == "coche");
			// ensuite on effectue un clic normal
			//   - si toutes les cases étaient décochées elles seront toutes cochées
			//   - si toutes les cases étaient cochées elles seront toutes décochées
			oItem.click();
		});

	}





	/**
	 *
	 * @access public
	 * @return void
	 **/
	function cocheDecocheCbByPrefixOfValue(cbName,cbPrefixValue,choix){

		// si la le choix vaut 'coche' on coche la case
		$$('input[name="' + cbName + '"]').each(function(oItem) {
			if(oItem.value.substr(0,cbPrefixValue.length) == cbPrefixValue){
				// d'abord on fait l'inverse de ce que l'on souhaite
				//   - pour cocher les cases : on les décoche toutes
				//   - pour décocher les cases : on les coche toutes
				oItem.checked = !(choix == "coche");
				// ensuite on effectue un clic normal
				//   - si toutes les cases étaient décochées elles seront toutes cochées
				//   - si toutes les cases étaient cochées elles seront toutes décochées
				oItem.click();
			}
		});

	}





	/**
	 *
	 * @access public
	 * @return void
	 **/
	function cocheDecocheCbByPrefixOfId(cbName,cbPrefixValue,choix){

		// si la le choix vaut 'coche' on coche la case
		$$('input[name="' + cbName + '"]').each(function(oItem) {
			if(oItem.id.substr(0,cbPrefixValue.length) == cbPrefixValue){
				// d'abord on fait l'inverse de ce que l'on souhaite
				//   - pour cocher les cases : on les décoche toutes
				//   - pour décocher les cases : on les coche toutes
				oItem.checked = !(choix == "coche");
				// ensuite on effectue un clic normal
				//   - si toutes les cases étaient décochées elles seront toutes cochées
				//   - si toutes les cases étaient cochées elles seront toutes décochées
				oItem.click();
			}
		});

	}




	/**
	 *
	 * @access public
	 * @return void
	 **/
	function changeUrl(url){
		document.location.href = url;
	}



/* ========================================================================================
	::	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";

/* fin Variables GLOBALES========================================================== */







/* ========================================================================================
	::	Fonctionnalités AJAX
======================================================================================== */




	/**
	 * @example swapPublication({'iIdf':1, 'sIndicateur':'new_idc_publie', 'sModule':'News'})
	 * @access public
	 * @return void
	 **/
	function swapPublication(oParam){

		// Changement de la valeur booléenne du champ sIndicateur dans le module sModule
		//	- si elle valait 0 : devient 1
		//	- si elle valait 1 : devient 0
		var iIdf			= oParam.iIdf;
		var sIndicateur		= oParam.sIndicateur;
		var sModule			= oParam.sModule;

		new Ajax.Request(
			'./admin/prive/ajax/ajax_swap'+ sModule + 'Statut.php',
			{
				asynchronous: false,
				method: 'post',
				parameters: {
					indicateur	 : escape(sIndicateur),
                    idf			 : iIdf,
					sSession	 : 'FO'
				},
				onSuccess: function(transport, json) {
					var bText	 = (transport.responseText	 ? true : false);
					var bXML	 = (transport.responseXML	 ? true : false);
					var bJson	 = (json	 ? true : false);
					/*
					alert(" 2. On obtient la réponse :\n"
						+ "=> transport.responseText : " + transport.responseText + "\n"
		                + "=> transport.responseXML : " + transport.responseXML + "\n"
		                + "=> json : " + json
		                + "=> bResponse : " + json.root.bResponse
		                + "=> bResult : " + json.root.bResult
					);
					*/
					if(bJson && json.root.bResult) changeUrl(document.location.href);
	            }
	        }
		);

	}



	/**
	 *
	 * @access public
	 * @return void
	 **/
	function manageReservant(oForm, sTr){

		var f = oForm;
		var iIdfMembre	 = f.res_idf_membre.value;

		// Affichage de la liste de sélection des menus
		new Ajax.Request(
			'./admin/prive/ajax/ajax_checkMembreIsFoot5.php',
			{
				asynchronous: false,
				method: 'post',
				parameters: {
					idf_membre : iIdfMembre
				},
				onSuccess: function(transport, json) {
					var bText	 = (transport.responseText	 ? true : false);
					var bXML	 = (transport.responseXML	 ? true : false);
					var bJson	 = (json	 ? true : false);
					/*
					alert(" 2. On obtient la réponse :"
						+ "\n=> transport.responseText : " + transport.responseText
		                + "\n=> transport.responseXML : " + transport.responseXML
		                + "\n=> json : " + json
		                + "\n=> bResponse : " + json.root.bResponse
		                + "\n=> sReq : " + json.root.sReq
		                + "\n=> bIsFoot5 : " + json.root.bIsFoot5
					);
					*/
					if(bJson && json.root.bResponse){
						if(json.root.bIsFoot5 == "true"){
							$(sTr).show();
						}else{
							$(sTr).hide();
						}
					}
	            }
	        }
		);

	}


	/**
	 *
	 * @access public
	 * @return void
	 **/
	function manageHoraireReservation(oForm, sDiv){

		var f = oForm;
		var iIdfMembre	 = f.res_idf_membre.value;
		var sInfos		 = (f.res_infos ? f.res_infos.value : "");
		var sTerrain	 = f.res_terrain.value;
		var sDate		 = f.res_date.value;
		var sCB			 = "";

		$(sDiv).startWaiting('blackWaiting');

		if(   iIdfMembre == ""
		   || iIdfMembre == -1
		   || sTerrain == ""
		   || sTerrain == -1
		   || sDate == ""
		   || !testerMotif("^[0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4}$",sDate) ){

			sCB += "La liste des horaires disponible sera construite automatiquement une fois que vous aurez sélectionné un terrain et indiqué une date pour votre réservation.";

		}else{

			// Affichage de la liste de sélection des menus
			new Ajax.Request(
				'./admin/prive/ajax/ajax_manageReservation.php',
				{
					asynchronous: false,
					method: 'post',
					parameters: {
						iIdfMembre	 : iIdfMembre,
						sInfos		 : escape(sInfos),
						sTerrain	 : sTerrain,
						sDate		 : sDate
					},
					onSuccess: function(transport, json) {
						var bText	 = (transport.responseText	 ? true : false);
						var bXML	 = (transport.responseXML	 ? true : false);
						var bJson	 = (json	 ? true : false);
						/*
						alert(" 2. On obtient la réponse :"
							+ "\n=> transport.responseText : " + transport.responseText
			                + "\n=> transport.responseXML : " + transport.responseXML
			                + "\n=> json : " + json
			                + "\n=> bResponse : " + json.root.bResponse
			                + "\n=> sHorairePris : " + json.root.sHorairePris
			                + "\n=> sHoraire : " + json.root.sHoraire
			                + "\n=> sCB : " + json.root.sCB
						);
						*/
						if(bJson && json.root.bResponse) sCB = unescape(json.root.sCB);
		            }
		        }
			);

		}

		Element.update(sDiv,sCB);
		window.setTimeout($(sDiv).stopWaiting.bind($(sDiv)), 250);

	}






/* fin Fonctionnalités AJAX========================================================== */




/* ========================================================================================
	::	Vérification de formulaires en mode AJOUT/MODIFICATION
======================================================================================== */






	/* 	- verifFormCreateInscription() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de inscriptions
	|	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 verifFormCreateInscription(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

		if(f.ins_idf_tournois.type == "hidden") f.ins_idf_tournois.removeClassName(_G_ERROR_CLASSNAME);
		else f.ins_idf_tournois.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.ins_idf_tournois.value == "" || f.ins_idf_tournois.value == -1) {
			sErreur = sErreur + " - Tournois requis !\n";
			aFocus[iError] = "ins_idf_tournois";
			iError++;
			if(f.ins_idf_tournois.type == "hidden") f.ins_idf_tournois.addClassName(_G_ERROR_CLASSNAME);
			else f.ins_idf_tournois.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Tournois requis !\n");;
		}

		if(f.ins_idf_equipe.type == "hidden") f.ins_idf_equipe.removeClassName(_G_ERROR_CLASSNAME);
		else f.ins_idf_equipe.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.ins_idf_equipe.value == "" || f.ins_idf_equipe.value == -1) {
			sErreur = sErreur + " - Equipe requise !\n";
			aFocus[iError] = "ins_idf_equipe";
			iError++;
			if(f.ins_idf_equipe.type == "hidden") f.ins_idf_equipe.addClassName(_G_ERROR_CLASSNAME);
			else f.ins_idf_equipe.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Equipe requise !\n");;
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Rappel des identifiants------------------------------------------



	/* 	- verifFormCreateReservation() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de réservation
	|	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 verifFormCreateReservation(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

		if(f.res_terrain.type == "hidden") f.res_terrain.removeClassName(_G_ERROR_CLASSNAME);
		else f.res_terrain.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.res_terrain.value == "" || f.res_terrain.value == -1) {
			sErreur = sErreur + " - Terrain requis !\n";
			aFocus[iError] = (f.res_terrain.type == "hidden" ? null : "res_terrain");
			iError++;
			if(f.res_terrain.type == "hidden") f.res_terrain.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Terrain requis !\n");
			else f.res_terrain.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Terrain requis !\n");
		}

		f.res_date.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.res_date.value == "") {
			sErreur = sErreur + " - Date requise !\n";
			aFocus[iError] = "res_date";
			iError++;
			f.res_date.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Date requise !");
		}else{
			// on teste le format "00.00.0000"
			if(!testerMotif("^[0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4}$",f.res_date.value)){
				sErreur = sErreur + " - Le format de la date est incorrect !\n";
				aFocus[iError] = "res_date";
				iError++;
				f.res_date.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de la date est incorrect !");
			}
		}

		$('sDivHoraire').next("span.help").update("").hide();
		if(f['res_horaire[]']) {
			if(!radioIsChecked('res_horaire[]')) {
				sErreur = sErreur + " - Choisissez au moins un horaire !\n";
				aFocus[iError] = null;
				iError++;
				$('sDivHoraire').next("span.help").show().update(" - Choisissez au moins un horaire !");
			}
		}else{
			sErreur = sErreur + " - Horaire requis !\n";
			aFocus[iError] = null;
			iError++;
			$('sDivHoraire').next("span.help").show().update(" - Horaire requis !");
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Rappel des identifiants------------------------------------------



	/* 	- verifFormCreateChallenge() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de création de challenges
	|	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 verifFormCreateChallenge(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.cha_idf_membre_createur.removeClassName(_G_ERROR_CLASSNAME);
		if(f.cha_idf_membre_createur.value == "" || f.cha_idf_membre_createur.value == -1) {
			sErreur = sErreur + " - Créateur requis !\n";
			aFocus[iError] = null;
			iError++;
			f.cha_idf_membre_createur.addClassName(_G_ERROR_CLASSNAME);
		}

		f.cha_idf_membre_invite.removeClassName(_G_ERROR_CLASSNAME);
		if(f.cha_idf_membre_invite.value == "" || f.cha_idf_membre_invite.value == -1) {
			sErreur = sErreur + " - Invité requis !\n";
			aFocus[iError] = null;
			iError++;
			f.cha_idf_membre_invite.addClassName(_G_ERROR_CLASSNAME);
		}

		if(f.cha_reponse_createur.value == "" || f.cha_reponse_createur.value == -1) {
			sErreur = sErreur + " - Réponse du créateur requise !\n";
			aFocus[iError] = null;
			iError++;
		}

		if(f.cha_reponse_invite.value == "" || f.cha_reponse_invite.value == -1) {
			sErreur = sErreur + " - Réponse de l'invité requise !\n";
			aFocus[iError] = null;
			iError++;
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de création des challenges------------------------------------------




	/* 	- verifFormCreateEquipe() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de <création d'équipes
	|	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 verifFormCreateEquipe(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.equ_nom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.equ_nom.value == "") {
			sErreur = sErreur + " - Nom requis !\n";
			aFocus[iError] = "equ_nom";
			iError++;
			f.equ_nom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !\n");
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Rappel des identifiants------------------------------------------




	/* 	- verifFormRappelIdentifiant() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de Rappel des Identifiants d'un Membre
	|	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 verifFormRappelIdentifiant(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.rem_email.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.rem_email.value == "") {
			sErreur = sErreur + " - Adresse email requise !\n";
			aFocus[iError] = "rem_email";
			iError++;
			f.rem_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !\n");
		}else{
			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.rem_email.value)){
				sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
				aFocus[iError] = "rem_email";
				iError++;
				f.rem_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !\n");
			}
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Rappel des identifiants------------------------------------------



	/* 	- 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 requis !\n";
			aFocus[iError] = "con_nom";
			iError++;
			f.con_nom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !\n");
		}

		f.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++;
			f.con_prenom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !\n");
		}

		f.con_email.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_email.value == "") {
			sErreur = sErreur + " - Adresse email requise !\n";
			aFocus[iError] = "con_email";
			iError++;
			f.con_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !\n");
		}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 !\n");
			}
		}

		f.con_objet.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.con_objet.value == "") {
			sErreur = sErreur + " - Objet requis !\n";
			aFocus[iError] = "con_objet";
			iError++;
			f.con_objet.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Objet requis !\n");
		}

		f.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++;
			f.con_message.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Message requis !\n");
		}

		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 !");
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Contact------------------------------------------


	/* 	- verifFormConnexion() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de Connexion des Membres
	|	Pages appellantes :
	|		 - index.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 verifFormConnexion(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 requis
		var f		   	 = oForm;						// référence au formulaire à analyser

		//f.login.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		f.login.removeClassName(_G_ERROR_CLASSNAME);
		if(f.login.value == "") {
			sErreur = sErreur + " - Identifiant requis !\n";
			aFocus[iError] = null;
			iError++;
			//f.login.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
			f.login.addClassName(_G_ERROR_CLASSNAME);
		}

		//f.pwd.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		f.pwd.removeClassName(_G_ERROR_CLASSNAME);
		if(f.pwd.value == "") {
			sErreur = sErreur + " - Mot de passe requis !\n";
			aFocus[iError] = null;
			iError++;
			//f.pwd.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
			f.pwd.addClassName(_G_ERROR_CLASSNAME);
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire des Membres------------------------------------------






	/* 	- verifFormMembre() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire des Membres
	|	Pages appellantes :
	|		 - prive/membres.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 verifFormMembre(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 requis
		var f		   	 = oForm;						// référence au formulaire à analyser
		var choix	  	 = f.choix.value;				// choix en cours : "create" OU "update"
		var bMailDuplicated = false;					// le mail n'est pas encore dupliqué

		f.mem_nom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_nom.value == "") {
			sErreur = sErreur + " - Nom requis !\n";
			aFocus[iError] = "mem_nom";
			iError++;
			f.mem_nom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
		}

		f.mem_prenom.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_prenom.value == "") {
			sErreur = sErreur + " - Prénom requis !\n";
			aFocus[iError] = "mem_prenom";
			iError++;
			f.mem_prenom.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !");
		}

		f.mem_pseudo.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_pseudo.value == "") {
			sErreur = sErreur + " - Pseudo requis !\n";
			aFocus[iError] = "mem_pseudo";
			iError++;
			f.mem_pseudo.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Pseudo requis !");
		}

		f.mem_tel.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_tel.value != "") {
			// on teste le format "00.00.0000"
			if(!testerMotif("^[0-9]{10}$",f.mem_tel.value)){
				sErreur = sErreur + " - Le format du numéro de téléphone est incorrect !\n";
				aFocus[iError] = "mem_tel";
				iError++;
				f.mem_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format du numéro de téléphone est incorrect !");
			}
		}else{
			sErreur = sErreur + " - Numéro de téléphone requis !\n";
			aFocus[iError] = "mem_tel";
			iError++;
			f.mem_tel.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Numéro de téléphone requis !");
		}

		f.mem_date_naissance.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_date_naissance.value != "") {
			// on teste le format "00.00.0000"
			if(!testerMotif("^[0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4}$",f.mem_date_naissance.value)){
				sErreur = sErreur + " - Le format de la date de naissance est incorrect !\n";
				aFocus[iError] = "mem_date_naissance";
				iError++;
				f.mem_date_naissance.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de la date de naissance est incorrect !");
			}
		}else{
			sErreur = sErreur + " - Date de naissance requise !\n";
			aFocus[iError] = "mem_date_naissance";
			iError++;
			f.mem_date_naissance.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Date de naissance requise !");
		}

		f.mem_email.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_email.value != "") {

			// on teste le format "aa@aa.aa"
			if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.mem_email.value)){
				sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
				aFocus[iError] = "mem_email";
				iError++;
				f.mem_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !");
			}else{

				// Test d'unicité de l'adresse mail
				var iIdfMembre			= f.mem_idf_membre.value;
				var sMail				= f.mem_email.value;

				new Ajax.Request(
					'./admin/prive/ajax/ajax_checkMembreMail.php',
					{
						asynchronous: false,
						method: 'post',
						parameters: {
							mail : escape(sMail),
		                    idf_membre : iIdfMembre
						},
						onSuccess: function(transport, json) {
							var bText	 = (transport.responseText	 ? true : false);
							var bXML	 = (transport.responseXML	 ? true : false);
							var bJson	 = (json	 ? true : false);
							if(bJson && json.root.bResult) {
								sErreur = sErreur + " - Cette adresse email est déjà utilisée !\n";
								aFocus[iError] = "mem_email";
								iError++;
								f.mem_email.value = "";
								bMailDuplicated = true;
								f.mem_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Cette adresse email est déjà utilisée !");
							}
							//alert(sData);
			            }
			        }
				);

			}
		}else{
			sErreur = sErreur + " - Adresse email requise !\n";
			aFocus[iError] = "mem_email";
			iError++;
			f.mem_email.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !");
		}

		f.mem_login.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.mem_login.value == "") {
			sErreur = sErreur + " - Identifiant requis !\n";
			aFocus[iError] = "mem_login";
			iError++;
			f.mem_login.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Identifiant requis !");
		}else{

      		// Vérification que le login choisi n'existe pas déjà !
			var iIdfMembre			= f.mem_idf_membre.value;
			var sLogin				= f.mem_login.value;

			new Ajax.Request(
				'./admin/prive/ajax/ajax_checkMembreLogin.php',
				{
					asynchronous: false,
					method: 'post',
					parameters: {
						idf_membre : iIdfMembre,
	                    login : escape(sLogin)
					},
					onSuccess: function(transport, json) {
						var bText	 = (transport.responseText	 ? true : false);
						var bXML	 = (transport.responseXML	 ? true : false);
						var bJson	 = (json	 ? true : false);
						if(bJson && json.root.bResult) {
							sErreur = sErreur + " - Identifiant déjà utilisé !\n";
							aFocus[iError] = "mem_login";
							iError++;
							f.mem_login.value = "";
							f.mem_login.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Identifiant déjà utilisé !");
						}
		            }
		        }
			);

		}

		if(choix == "create"){
			f.mem_pwd.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
			if(f.mem_pwd.value == "") {
				sErreur = sErreur + " - Mot de passe requis !\n";
				aFocus[iError] = "mem_pwd";
				iError++;
				f.mem_pwd.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Mot de passe requis !");
			}else{
				f.mem_pwd_repeat.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				// Test de vérification du password
				if(f.mem_pwd.value != f.mem_pwd_repeat.value) {
					sErreur = sErreur + " - Répétez votre mot de passe !\n";
					aFocus[iError] = "mem_pwd_repeat";
					iError++;
					f.mem_pwd_repeat.value = "";
					f.mem_pwd_repeat.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Répétez votre mot de passe !");
				}
			}
		}else{
			// On ne demande le mot de passe qui s'il doit être modifié
			f.mem_pwd_repeat.removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
			if(f.mem_pwd.value != "" && f.mem_pwd.value != f.mem_pwd_repeat.value) {
				sErreur = sErreur + " - Répétez votre mot de passe !\n";
				aFocus[iError] = "mem_pwd_repeat";
				iError++;
				f.mem_pwd_repeat.value = "";
				f.mem_pwd_repeat.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Répétez votre mot de passe !");
			}
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire des Membres------------------------------------------







	/**
	 *
	 * @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é
		var choix	 	 = (f.choix ? f.choix.value : "");

		switch(sField){

			/* CREATION D'UN CHALLENGE */
			case "cha_idf_membre_createur":
				$("cha_idf_membre_createur").removeClassName(_G_ERROR_CLASSNAME);
				if(f.cha_idf_membre_createur.value == "" || f.cha_idf_membre_createur.value == -1) {
					sErreur = sErreur + " - Créateur requis !\n";
					aFocus[iError] = null;
					iError++;
					$("cha_idf_membre_createur").addClassName(_G_ERROR_CLASSNAME);
				}
			break;
			case "cha_idf_membre_invite":
				if(f.cha_idf_membre_invite.type == "hidden") $("cha_idf_membre_invite").removeClassName(_G_ERROR_CLASSNAME);
				else $("cha_idf_membre_invite").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.cha_idf_membre_invite.value == "" || f.cha_idf_membre_invite.value == -1) {
					sErreur = sErreur + " - Invité requis !\n";
					aFocus[iError] = (f.cha_idf_membre_invite.type == "hidden" ? null : "cha_idf_membre_invite");
					iError++;
					if(f.cha_idf_membre_invite.type == "hidden") $("cha_idf_membre_invite").addClassName(_G_ERROR_CLASSNAME);
					else $("cha_idf_membre_invite").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Invité requis !");
				}
			break;
			case "cha_reponse_createur":
				if(f.cha_reponse_createur.type == "hidden") $("cha_reponse_createur").removeClassName(_G_ERROR_CLASSNAME);
				else $("cha_reponse_createur").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.cha_reponse_createur.value == "" || f.cha_reponse_createur.value == -1) {
					sErreur = sErreur + " - Réponse du créateur requise !\n";
					aFocus[iError] = (f.cha_reponse_createur.type == "hidden" ? null : "cha_reponse_createur");
					iError++;
					if(f.cha_reponse_createur.type == "hidden") $("cha_reponse_createur").addClassName(_G_ERROR_CLASSNAME);
					else $("cha_reponse_createur").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Réponse du créateur requise !");
				}
			break;
			case "cha_reponse_invite":
				if(f.cha_reponse_invite.type == "hidden") $("cha_reponse_invite").removeClassName(_G_ERROR_CLASSNAME);
				else $("cha_reponse_invite").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.cha_reponse_invite.value == "" || f.cha_reponse_invite.value == -1) {
					sErreur = sErreur + " - Réponse de l'invité requise !\n";
					aFocus[iError] = (f.cha_reponse_invite.type == "hidden" ? null : "cha_reponse_invite");
					iError++;
					if(f.cha_reponse_invite.type == "hidden") $("cha_reponse_invite").addClassName(_G_ERROR_CLASSNAME);
					else $("cha_reponse_invite").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Réponse de l'invité requise !");
				}
			break;

			/* CREATION EQUIPE */
			case "equ_nom":
				$("equ_nom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.equ_nom.value == "") {
					sErreur = sErreur + " - Nom requis !\n";
					aFocus[iError] = "equ_nom";
					iError++;
					$("equ_nom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
				}
			break;

			/* CONNEXION */
			case "login":
				//$("login").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				$("login").removeClassName(_G_ERROR_CLASSNAME);
				if(f.login.value == "") {
					sErreur = sErreur + " - Identifiant requis !\n";
					aFocus[iError] = null;
					iError++;
					//$("login").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Identifiant requis !");
					$("login").addClassName(_G_ERROR_CLASSNAME);
				}
			break;
			case "pwd":
				//$("pwd").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				$("pwd").removeClassName(_G_ERROR_CLASSNAME);
				if(f.pwd.value == "") {
					sErreur = sErreur + " - Mot de passe requis !\n";
					aFocus[iError] = null;
					iError++;
					//$("pwd").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Mot de passe requis !");
					$("pwd").addClassName(_G_ERROR_CLASSNAME);
				}
			break;


			/* INSCRIPTIONS MEMBRES */
			case "mem_nom":
				$("mem_nom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_nom.value == "") {
					sErreur = sErreur + " - Nom requis !\n";
					aFocus[iError] = "mem_nom";
					iError++;
					$("mem_nom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Nom requis !");
				}
			break;
			case "mem_prenom":
				$("mem_prenom").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_prenom.value == "") {
					sErreur = sErreur + " - Prénom requis !\n";
					aFocus[iError] = "mem_prenom";
					iError++;
					$("mem_prenom").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Prénom requis !");
				}
			break;
			case "mem_pseudo":
				$("mem_pseudo").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_pseudo.value == "") {
					sErreur = sErreur + " - Pseudo requis !\n";
					aFocus[iError] = "mem_pseudo";
					iError++;
					$("mem_pseudo").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Pseudo requis !");
				}
			break;
			case "mem_tel":
				$("mem_tel").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_tel.value != "") {
					// on teste le format "00.00.0000"
					if(!testerMotif("^[0-9]{10}$",f.mem_tel.value)){
						sErreur = sErreur + " - Le format du numéro de téléphone est incorrect !\n";
						aFocus[iError] = "mem_tel";
						iError++;
						$("mem_tel").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format du numéro de téléphone est incorrect !");
					}
				}else{
					sErreur = sErreur + " - Téléphone requis !\n";
					aFocus[iError] = "mem_tel";
					iError++;
					$("mem_tel").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Téléphone requis !");
				}
			break;
			case "mem_date_naissance":
				$("mem_date_naissance").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_date_naissance.value != "") {
					// on teste le format "00.00.0000"
					if(!testerMotif("^[0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4}$",f.mem_date_naissance.value)){
						sErreur = sErreur + " - Le format de la date de naissance est incorrect !\n";
						aFocus[iError] = "mem_date_naissance";
						iError++;
						$("mem_date_naissance").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de la date de naissance est incorrect !");
					}
				}else{
					sErreur = sErreur + " - Date de naissance requise !\n";
					aFocus[iError] = "mem_date_naissance";
					iError++;
					$("mem_date_naissance").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Date de naissance requise !");
				}
			break;
			case "mem_email":
				$("mem_email").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_email.value != "") {

					// on teste le format "aa@aa.aa"
					if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.mem_email.value)){
						sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
						aFocus[iError] = "mem_email";
						iError++;
						$("mem_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !");
					}else{

						// Test d'unicité de l'adresse mail
						var iIdfMembre			= f.mem_idf_membre.value;
						var sMail				= f.mem_email.value;

						new Ajax.Request(
							'./admin/prive/ajax/ajax_checkMembreMail.php',
							{
								asynchronous: false,
								method: 'post',
								parameters: {
									mail : escape(sMail),
				                    idf_membre : iIdfMembre
								},
								onSuccess: function(transport, json) {
									var bText	 = (transport.responseText	 ? true : false);
									var bXML	 = (transport.responseXML	 ? true : false);
									var bJson	 = (json	 ? true : false);
									/*
									alert(" 2. On obtient la réponse :\n"
										+ "=> transport.responseText : " + transport.responseText + "\n"
						                + "=> transport.responseXML : " + transport.responseXML + "\n"
						                + "=> json : " + json
						                + "=> bResponse : " + json.root.bResponse
						                + "=> sRequest : " + json.root.sRequest
						                + "=> bResult : " + json.root.bResult
					                	+ "=> iResult : " + json.root.iResult
									);
									*/
									/*
									// Si le login existe déjà on indique l'erreur
									if(bText) {
										var sResponse = transport.responseText;
										if(sResponse == "true"){
											sErreur = sErreur + " - Cette adresse email est déjà utilisée !\n";
											aFocus[iError] = "mem_email";
											iError++;
											f.mem_email.value = "";
											bMailDuplicated = true;
										}
									}
									if(bXML) {

									}
									*/
									if(bJson && json.root.bResult) {
										sErreur = sErreur + " - Cette adresse email est déjà utilisée ("+sMail+")!\n";
										aFocus[iError] = "mem_email";
										iError++;
										f.mem_email.value = "";
										bMailDuplicated = true;
										$("mem_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Cette adresse email est déjà utilisée ("+sMail+") !");
									}
									//alert(sData);
					            }
					        }
						);

					}
				}else{
					sErreur = sErreur + " - Adresse email requise !\n";
					aFocus[iError] = "mem_email";
					iError++;
					$("mem_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !");
				}
			break;
			case "mem_login":
				$("mem_login").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.mem_login.value == "") {
					sErreur = sErreur + " - Identifiant requis !\n";
					aFocus[iError] = "mem_login";
					iError++;
					$("mem_login").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Identifiant requis !");
				}else{

		      		// Vérification que le login choisi n'existe pas déjà !
					var iIdfMembre			= f.mem_idf_membre.value;
					var sLogin				= f.mem_login.value;

					new Ajax.Request(
						'./admin/prive/ajax/ajax_checkMembreLogin.php',
						{
							asynchronous: false,
							method: 'post',
							parameters: {
								idf_membre : iIdfMembre,
			                    login : escape(sLogin)
							},
							onSuccess: function(transport, json) {
								var bText	 = (transport.responseText	 ? true : false);
								var bXML	 = (transport.responseXML	 ? true : false);
								var bJson	 = (json	 ? true : false);
								/*
								alert(" 2. On obtient la réponse :\n"
									+ "=> transport.responseText : " + transport.responseText + "\n"
					                + "=> transport.responseXML : " + transport.responseXML + "\n"
					                + "=> json : " + json
					                + "=> bResponse : " + json.root.bResponse
					                + "=> sRequest : " + json.root.sRequest
					                + "=> bResult : " + json.root.bResult
					                + "=> iResult : " + json.root.iResult
								);
								*/
								/*
								// Si le login existe déjà on indique l'erreur
								if(bText) {
									var sResponse = transport.responseText;
									if(sResponse == "true"){
										sErreur = sErreur + " - Identifiant déjà utilisé !\n";
										aFocus[iError] = "mem_login";
										iError++;
										f.mem_login.value = "";
									}
								}
								if(bXML) {

								}
								*/
								if(bJson && json.root.bResult) {
									sErreur = sErreur + " - Identifiant déjà utilisé !\n";
									aFocus[iError] = "mem_login";
									iError++;
									f.mem_login.value = "";
									$("mem_login").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Identifiant déjà utilisé !");
								}
								//alert(sData);
				            }
				        }
					);

				}
			break;
			case "mem_pwd":
			case "mem_pwd_repeat":
				if(choix == "create"){
					$("mem_pwd").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
					if(f.mem_pwd.value == "") {
						sErreur = sErreur + " - Mot de passe requis !\n";
						aFocus[iError] = "mem_pwd";
						iError++;
						$("mem_pwd").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Mot de passe requis !");
					}else{
						$("mem_pwd_repeat").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
						// Test de vérification du password
						if(f.mem_pwd.value != f.mem_pwd_repeat.value) {
							sErreur = sErreur + " - Répétez votre mot de passe !\n";
							aFocus[iError] = "mem_pwd_repeat";
							iError++;
							f.mem_pwd_repeat.value = "";
							$("mem_pwd_repeat").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Répétez votre mot de passe !");
						}
					}
				}else{
					// On ne demande le mot de passe qui s'il doit être modifié
					$("mem_pwd_repeat").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
					if(f.mem_pwd.value != "" && f.mem_pwd.value != f.mem_pwd_repeat.value) {
						sErreur = sErreur + " - Répétez votre mot de passe !\n";
						aFocus[iError] = "mem_pwd_repeat";
						iError++;
						f.mem_pwd_repeat.value = "";
						$("mem_pwd_repeat").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Répétez votre mot de passe !");
					}
				}
			break;


			/* CONTACT */
			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 !\n");
				}
			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 !\n");
				}
			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 !\n");
					}
				}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 !\n");
				}
			break;
			case "con_objet":
				$("con_objet").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_objet.value == "") {
					sErreur = sErreur + " - Objet requis !\n";
					aFocus[iError] = "con_objet";
					iError++;
					$("con_objet").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Objet requis !\n");
				}
			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 !\n");
				}
			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;

			/* INSCRIPTIONS A UN TOURNOIS */
			case "ins_idf_tournois":
				if(f.ins_idf_tournois.type == "hidden") $("ins_idf_tournois").removeClassName(_G_ERROR_CLASSNAME);
				else $("ins_idf_tournois").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.ins_idf_tournois.value == "" || f.ins_idf_tournois.value == -1) {
					sErreur = sErreur + " - Tournois requis !\n";
					aFocus[iError] = "ins_idf_tournois";
					iError++;
					if(f.ins_idf_tournois.type == "hidden") $("ins_idf_tournois").addClassName(_G_ERROR_CLASSNAME);
					else $("ins_idf_tournois").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Tournois requis !");
				}
			break;
			case "ins_idf_equipe":
				if(f.ins_idf_equipe.type == "hidden") $("ins_idf_equipe").removeClassName(_G_ERROR_CLASSNAME);
				else $("ins_idf_equipe").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.ins_idf_equipe.value == "" || f.ins_idf_equipe.value == -1) {
					sErreur = sErreur + " - Equipe requise !\n";
					aFocus[iError] = "ins_idf_equipe";
					iError++;
					if(f.ins_idf_equipe.type == "hidden") $("ins_idf_equipe").addClassName(_G_ERROR_CLASSNAME);
					else $("ins_idf_equipe").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Equipe requise !");
				}
			break;

			/* RESERVATIONS */
			case "res_terrain":
				if(f.res_terrain.type == "hidden") $("res_terrain").removeClassName(_G_ERROR_CLASSNAME);
				else $("res_terrain").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.res_terrain.value == "" || f.res_terrain.value == -1) {
					sErreur = sErreur + " - Terrain requis !\n";
					aFocus[iError] = "res_terrain";
					iError++;
					if(f.res_terrain.type == "hidden") $("res_terrain").addClassName(_G_ERROR_CLASSNAME);
					else $("res_terrain").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Terrain requis !");
				}
				checkHoraire(f);
			break;
			case "res_date":
				$("res_date").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.res_date.value == "") {
					sErreur = sErreur + " - Date requise !\n";
					aFocus[iError] = "res_date";
					iError++;
					$("res_date").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Date requise !");
				}else{
					// on teste le format "00.00.0000"
					if(!testerMotif("^[0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4}$",$("res_date").value)){
						sErreur = sErreur + " - Le format de la date est incorrect !\n";
						aFocus[iError] = "res_date";
						iError++;
						$("res_date").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de la date est incorrect !");
					}
				}
				checkHoraire(f);
			break;


			/* RAPPEL DES IDENTIFIANTS */
			case "rem_email":
				$("rem_email").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.rem_email.value != "") {
					// on teste le format "aa@aa.aa"
					if(!testerMotif("^[a-z0-9\-_\.]+@[a-z0-9\-]+[\.]{1}[a-z]{2,5}$",f.rem_email.value)){
						sErreur = sErreur + " - Le format de l'adresse email est incorrect !\n";
						aFocus[iError] = "rem_email";
						iError++;
						$("rem_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Le format de l'adresse email est incorrect !\n");
					}
				}else{
					sErreur = sErreur + " - Adresse email requise !\n";
					aFocus[iError] = "rem_email";
					iError++;
					$("rem_email").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse email requise !\n");
				}
			break;
		}

		return {"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus };

	}






/* ========================================================================================
	::	Vérification de formulaires en mode SUPPRESSION
======================================================================================== */

	/**
	 *
	 * @access public
	 * @return boolean
	 **/
	function verifSuppr(cbName,sError)
	{
		var texte		= "";
		var elt			= document.getElementsByName(cbName);
		var isChecked	= false;
		var f			= (arguments.length>2 ? arguments[2] : document.formDeleteUpdate);	// référence au formulaire à analyser
		var choix		= f.choix.value;				// choix en cours : "create" OU "update"

		switch(choix){
			case "delete":
				var bConfirmDelete = confirm("Etes-vous sûr de vouloir supprimer les enregistrements sélectionnés ?");
				if(bConfirmDelete){
					isChecked = radioIsChecked(cbName);
					if(!isChecked){
						alert(sError);
						// Réactiver les boutons de formulaire une fois cliqués
						var aBtn = $$("a.btnDelete");
						aBtn.each(function(oItem) {
							oItem.dontWait();
						});
					}
					return isChecked;
				}else{
					// Réactiver les boutons de formulaire une fois cliqués
					var aBtn = $$("a.btnDelete");
					aBtn.each(function(oItem) {
						oItem.dontWait();
					});
					return false;
				}
			break;
			default:
				return true;
			break;
		}

	}

/* fin Vérification de formulaires en mode SUPPRESSION=================================================== */


/* ========================================================================================
	::	Global vars
======================================================================================== */

	/* 	- VARS_001 -------------------------------------------------------------------
	|	VARS USED IN THE FUNCTIONS
	|		:: functionName()
	------------------------------------------------------------------------------------ */

/* end Global vars=============================================================================== */
