/* ========================================================================================
	::	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()-------------------------------------------------------





/* ========================================================================================
	::	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 aType = Array();
	var aSurface = Array();

/* fin Variables GLOBALES========================================================== */







/* ========================================================================================
	::	Fonctionnalités AJAX
======================================================================================== */


/* fin Fonctionnalités AJAX========================================================== */




/* ========================================================================================
	::	Vérification de formulaires en mode AJOUT/MODIFICATION
======================================================================================== */


	/* 	- verifFormConnexionMembre() ----------------------------------------------------------
	|	Description :
	|		 -	Vérification du formulaire de Connexion des Membres
	|	Pages appellantes :
	|		 - inc/membre.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 verifFormConnexionMembre(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

		$("login").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.login.value == "") {
			sErreur = sErreur + " - Identifiant requis !\n";
			aFocus[iError] = "login";
			iError++;
			f.login.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Identifiant requis !\n");
		}

		$("pwd").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
		if(f.pwd.value == "") {
			sErreur = sErreur + " - Mot de passe requis !\n";
			aFocus[iError] = "pwd";
			iError++;
			f.pwd.addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Mot de passe requis !\n");
		}

		return formErrorValidation({"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus });

	}
	// fin Vérification du formulaire de Contact------------------------------------------

	/**
	 *
	 * @access public
	 * @return void
	 **/
	function deleteZipFile(sFile){

		if(sFile){

			new Ajax.Request(
				'./ajax/ajax_deleteZipFile.php',
				{
					asynchronous: false,
					method: 'post',
					parameters: {
						sFile : escape(sFile)
					},
					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
			                + "=> sMsg : " + unescape(json.root.sMsg)
			                + "=> bResult : " + json.root.bResult
			                + "=> bResponse : " + json.root.bResponse
						);
						*/
						if(bJson && json.root.bResponse && json.root.bResult) {
							/*
							Modalbox.show(
							  unescape(json.root.sMsg),
							  {
							    title : "Suppresion de l'archive .zip temporaire",
							    overlayClose : true,
							    width : 500,
							    height : 300,
							    autoFocusing : false,
							    loadingString : "Merci de patienter, chargement en cours ...",
							    closeString : "Fermer la fenêtre"
							  }
							);
							*/
						}
		            }
		        }
			);

		}


	}


	/**
	 *
	 * @access public
	 * @return void
	 **/
	function updateNbPieces(oForm, sType){

		var f = oForm;
		var sDbg = "";

		sDbg += " - sType : "+sType+"\n";
		switch(sType){
			case "a":
				f.nb_pieces.options[0].disabled = false;
				f.nb_pieces.options[7].disabled = true;
				sDbg += " - 0 : actif\n - 7 : inactif\n";
				sDbg += " - 0 : "+ (f.nb_pieces.options[0].disabled ? "disabled" : "enabled") +"\n";
				sDbg += " - 7 : "+ (f.nb_pieces.options[7].disabled ? "disabled" : "enabled") +"\n";
				if(f.nb_pieces.options.selectedIndex == 7) f.nb_pieces.options.selectedIndex = 6;
			break;
			case "m":
			default:
				f.nb_pieces.options[0].disabled = true;
				f.nb_pieces.options[7].disabled = false;
				sDbg += " - 0 : inactif\n - 7 : actif\n";
				if(f.nb_pieces.options.selectedIndex == 0) f.nb_pieces.options.selectedIndex = 1;
			break;
		}

		//alert(sDbg);

	}


	/**
	 *
	 * @access public
	 * @return void
	 **/
	function hideResult(oForm){
		var aCB = oForm.elements;
		var iCB = aCB.length;
		var sCB = "";

		/*
		var bTypeBien_A = true;
		var bTypeBien_M = true;

		for(i=0;i<iCB;i++){
			var oCB = aCB[i];
			if(oCB.type == "checkbox" && oCB.checked){
				sCB += " - " + oCB.id + " A:["+ (oCB.readAttribute('tb_a') == "-1" ? "NON" : "OUI" ) + ";  M:["+ (oCB.readAttribute('tb_m') == "-1" ? "NON" : "OUI" ) + "]\n";
				if(oCB.readAttribute('tb_a') == "-1") bTypeBien_A = false;
				if(oCB.readAttribute('tb_m') == "-1") bTypeBien_M = false;

			}
 		}
		//alert(sCB);

		if(!bTypeBien_A){

		}
		if(!bTypeBien_M){

		}
		*/

		if($("resultat_calcul")) $("resultat_calcul").hide();
		if($("spacer_resultat_calcul")) $("spacer_resultat_calcul").show();
	}



	/**
	 *
	 * @access public
	 * @return void
	 **/
	function disableDiagnostic(oForm){

		var f = oForm;


		var aCB = f.elements;
		var iCB = aCB.length;
		var sCB = "";

		// Activation de touts les diagnostics
		for(i=0;i<iCB;i++){
			var oCB = aCB[i];
			if(oCB.type == "checkbox") oCB.disabled = false;
 		}

		// Désactivation des diagnostics en fonction du type de bien
		var iType = aType.length;
		var sDbg = "";
		for(i=0;i<iType;i++){
			var oType = aType[i];
			var sType = oType.sType;
			var sId = oType.sId;
			sDbg += " - id:" + sId + "; type:" + sType + "\n";
			switch(sType){
				case "a":
					if(f.type_bien.options.selectedIndex == 0){
						$(sId).disabled = true;
						$(sId).checked = false;
					}
				break;
				case "m":
				default:
					if(f.type_bien.options.selectedIndex == 1){
						$(sId).disabled = true;
						$(sId).checked = false;
					}
				break;
			}
 		}

		// Désactivation des diagnostics en fonction du nombre de pièces
		var iSurface = aSurface.length;
		sDbg += "\n\n########################\n\n";
		for(i=0;i<iSurface;i++){
			var oSurface = aSurface[i];
			var sType = oSurface.sType;
			var iPiece = oSurface.iPiece;
			var sId = oSurface.sId;
			sDbg += " - id:" + sId + "; type:" + sType + "; pieces:" + iPiece + "\n";
			switch(sType){
				case "a":
					if(f.type_bien.options.selectedIndex == 0){
						if(f.nb_pieces.options.selectedIndex == (iPiece-1)){
							$(sId).disabled = true;
							$(sId).checked = false;
						}
					}
				break;
				case "m":
				default:
					if(f.type_bien.options.selectedIndex == 1){
						if(f.nb_pieces.options.selectedIndex == (iPiece-1)){
							$(sId).disabled = true;
							$(sId).checked = false;
						}
					}
				break;
			}
 		}

		//alert(sDbg);

	}
	/*
	function disableDiagnostic(oForm,sType,sId){

		var f = oForm;

		var aCB = f.elements;
		var iCB = aCB.length;
		var sCB = "";
		for(i=0;i<iCB;i++){
			var oCB = aCB[i];
			if(oCB.type == "checkbox") oCB.disabled = false;
 		}

		switch(sType){
			case "a":
				if(f.type_bien.options.selectedIndex == 0){
					$(sId).disabled = true;
					$(sId).checked = false;
				}
			break;
			case "m":
			default:
				if(f.type_bien.options.selectedIndex == 1){
					$(sId).disabled = true;
					$(sId).checked = false;
				}
			break;
		}

	}
	*/

	/**
	 *
	 * @access public
	 * @return void
	 **/
	/*
	function disableDiagnosticForSurface(oForm,sType,iPiece,sId){

		var f = oForm;
		var sDebug ="";
		var aCB = f.elements;
		var iCB = aCB.length;
		var sCB = "";
		for(i=0;i<iCB;i++){
			var oCB = aCB[i];
			sDebug += " - "+i+"# type : " + oCB.type + "\n";
			if(oCB.type == "checkbox"){
				oCB.disabled = false;
				sDebug += " - "+i+"# oCB.disabled = false;\n";
			}
 		}
		sDebug += " - sType : "+ sType +"\n";
		switch(sType){
			case "a":
				if(f.type_bien.options.selectedIndex == 0 && f.nb_pieces.options.selectedIndex == (iPiece-1)){
					$(sId).disabled = true;
					$(sId).checked = false;
					sDebug += " - COOL\n";
				}else{
					sDebug += " - PAS DU TOUT COOL\n";
				}
			break;
			case "m":
			default:
				if(f.type_bien.options.selectedIndex == 1 == 0 && f.nb_pieces.options.selectedIndex == (iPiece-1)){
					$(sId).disabled = true;
					$(sId).checked = false;
					sDebug += " - COOL(b)\n";
				}else{
					sDebug += " - PAS DU TOUT COOL(b)\n";
				}
			break;
		}

		alert(sDebug);


	}
	*/



	/**
	 *
	 * @access public
	 * @return void
	 **/
	/*
	function manageRessources(oElement){
		var oDiv	 = $(oElement).up("div.mem_folder");
		var aItem	 = oDiv.nextSiblings();
		var iItem	 = aItem.length;
		var sD		 = "";
		var bStop	 = false;
		var iLimit	 = parseInt(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	 = parseInt(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 +" | limite : "+iLimit+" | "+(iLevel < iLimit ? "iLevel < iLimit":"iLevel !< iLimit")+"]\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);
	}
	*/
	function manageRessources(oElement){
		var bInit	 = (arguments.length > 1 ? arguments[1] : false);
		var oDiv	 = $(oElement).up("div.mem_folder");
		var aItem	 = oDiv.nextSiblings();
		var iItem	 = aItem.length;
		var sD		 = "";
		var bStop	 = false;
		var iLimit	 = parseInt(oDiv.readAttribute("_iLevel"));
		var bVisibility = oDiv.readAttribute("_bVisibility");

		sD += (bInit ? "INITIALISATION":"NAVIGATION NORMALE")+"\n";
		sD += "## niveau : " + iLimit + " [visibilité: "+ bVisibility +" | nb d'items : " + iItem + "]\n";

		for(i=0;i<iItem;i++){
			var oItem	 = aItem[i];
			var iLevel	 = parseInt(oItem.readAttribute("_iLevel"));
			var sType	 = oItem.readAttribute("_sType");
			var bState	 = oItem.readAttribute("_bVisibility");
			/*
			if(!bInit){
				if((iLevel >= iLimit+1 && sType == "file")){
					continue;
				}
				if((iLevel > iLimit+1 && sType == "folder")){
					continue;
				}
				if((iLevel <= iLimit && sType == "folder")){
					sD += "BREAK ################\n";
					bStop = true;
					break;
				}
			}else{
				if((iLevel == iLimit && sType == "folder") || iLevel < iLimit){
					sD += "BREAK ################\n";
					bStop = true;
					break;
				}
			}
			*/

			// Si on est en cours d'initialisation
			if(bInit){
				if((iLevel == iLimit && sType == "folder") || iLevel < iLimit){
					sD += "BREAK ################\n";
					bStop = true;
					break;
				}
			// Sinon lorsqu'on clique manuelleent sur des dossiers / sous-dossiers
			}else{
				if(bVisibility == "visible"){
					if((iLevel <= iLimit && sType == "folder")){
						sD += "BREAK ################\n";
						bStop = true;
						break;
					}
				}else{
					if((iLevel >= iLimit+1 && sType == "file")){
						continue;
					}
					if((iLevel > iLimit+1 && sType == "folder")){
						continue;
					}
					if((iLevel <= iLimit && sType == "folder")){
						sD += "BREAK ################\n";
						bStop = true;
						break;
					}
				}
			}

			if((iLevel > iLimit && sType == "folder")){
				// Afficher / Masquer l'élément par rapport à la visibilité de l'élément cliqué
				if(bVisibility == "visible"){
					// On masque l'élément
					oItem.hide().writeAttribute("_bVisibility","hidden");
				}else{
					// On affiche l'élément
					//oItem.show().writeAttribute("_bVisibility","visible");
					oItem.show().writeAttribute("_bVisibility","hidden");
				}
			}else{
				// Afficher / Masquer l'élément par rapport à la visibilité de l'élément cliqué
				if(bVisibility == "visible"){
					// On masque l'élément
					oItem.hide().writeAttribute("_bVisibility","hidden");
				}else{
					// On affiche l'élément
					oItem.show().writeAttribute("_bVisibility","visible");
				}
			}

			sD += " - {"+(bStop ? "stop" : "continue")+"} ["+ sType +"#"+ iLevel +" de "+ bState + " à "+ oItem.readAttribute("_bVisibility") +" | limite : "+iLimit+"]\n";

		}


		// Indication sur comment apparaissent les sous-éléments ?
		if(bVisibility == "visible"){
			// On indique que les sous-éléments sont à présent masqué
			oDiv.writeAttribute("_bVisibility","hidden");
		}else{
			// On indique que les sous-éléments sont à présent affichés
			oDiv.writeAttribute("_bVisibility","visible");
		}

		sD += "## niveau : " + iLimit + " [visibilité: de "+ bVisibility +" à "+ oDiv.readAttribute("_bVisibility") +" | nb d'items : " + iItem + "]\n";

		//alert(sD);
	}



	/**
	 *
	 * @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 !\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_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 !\n");
				}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)!\n");
					}
				}
				*/
				$("con_tel").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_tel.value != "") {
					// 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)!\n");
					}
				}
			break;
			/*
			case "con_adresse":
				$("con_adresse").removeClassName(_G_ERROR_CLASSNAME).next("span.help").update("").hide();
				if(f.con_adresse.value == "") {
					sErreur = sErreur + " - Adresse requise !\n";
					aFocus[iError] = "con_adresse";
					iError++;
					$("con_adresse").addClassName(_G_ERROR_CLASSNAME).next("span.help").show().update(" - Adresse requise !\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;
		}

		return {"oForm":f, "sErreur":sErreur, "iError":iError, "aFocus":aFocus };

	}


/* ========================================================================================
	::	Global vars
======================================================================================== */

	/* 	- VARS_001 -------------------------------------------------------------------
	|	VARS USED IN THE FUNCTIONS
	|		:: functionName()
	------------------------------------------------------------------------------------ */

/* end Global vars=============================================================================== */