/**
 * TEST SI L'ADRESSE EMAIL FOURNIE EST VALIDE
 *
 * @var		messageConfirm		string		Le message a afficher
 * @var		lienURL				string		Le lien a atteindre après confirmation
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function emailValide(emailTest) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(emailTest);
} // END function emailValide 


/**
 * Demande une confirmation avant l'execution d'un lien
 *
 * @var		messageConfirm		string		Le message a afficher
 * @var		lienURL				string		Le lien a atteindre après confirmation
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function confirmLien(messageConfirm, lienURL) {
	
	if ( confirm(messageConfirm) ) {
		window.location = lienURL;
	}
	
} // END function confirmLien 


/**
 * Demande une confirmation avant de vider un element
 *
 * @var		messageConfirm		string		Le message a afficher
 * @var		idElement			string		L'ID de l'élément à vider
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function confirmViderDiv(messageConfirm, idElement) {
	
	if ( confirm(messageConfirm) ) {
		$(idElement).innerHTML = "";
	}
	
} // END function confirmViderDiv 

/**
 * Demande une confirmation avant de vider un formulaire
 *
 * @var		messageConfirm		string		Le message a afficher
 * @var		Formulaire			string		L'ID du formulaire à vider
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function confirmRAZForm(messageConfirm, Formulaire) {
	
	if ( confirm(messageConfirm) ) {
		$(Formulaire).reset();
	}
	
} // END function confirmViderDiv 

/**
 * Demande une confirmation avant de vider un formulaire et de la cacher
 *
 * @var		messageConfirm		string		Le message a afficher
 * @var		Formulaire			string		L'ID du formulaire à vider
 * @var		divFormulaire		string		L'ID du div contenant le formulaire formulaire
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function confirmRAZEtCacheForm(messageConfirm, Formulaire, divFormulaire) {
	
	if ( confirm(messageConfirm) ) {
		$(Formulaire).reset();
		$(divFormulaire).hide();
	}
	
} // END function confirmViderDiv

/**
 * Demande une confirmation avant d'executer un appel AJAX
 *
 * @var		messageConfirm		string		Le message a afficher
 * @var		Url					string		L'url du fichier à lancer
 * @var		champRetour			string		Le champ dans lequel afficher le résultat
 * @var		methodeEnvoie		string		La méthode d'envoie get / post
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function confirmUrlAjax(messageConfirm, Url, champRetour, methodeEnvoie) {
	
	if ( confirm(messageConfirm) ) {
		urlAjax (Url, champRetour, methodeEnvoie)
	}
	
} // END function confirmUrlAjax


/**
 * Ouvre un popup centré sur l'écran
 *
 * @var		lienURL			string			Le lien a afficher 
 * @var		largeurPopup	int				La largeur du popup
 * @var		hauteurPopup	int				La hauteur du popup
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function Popup(lienURL, largeurPopup, hauteurPopup) {
	
	largeurEcran = window.screen.availWidth;
	hauteurEcran = window.screen.availHeight;
	
	positionX = parseInt(largeurEcran / 2) - parseInt(largeurPopup / 2);
	positionY = parseInt(hauteurEcran / 2) - parseInt(hauteurPopup / 2);
	
	window.open(lienURL, "lePopup", "scrollbars=yes,resizable=yes,width=" + largeurPopup + ",height=" + hauteurPopup + ",top=" + positionY + ",left=" + positionX);
	
} // END function Popup

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

/**
 * Affiche / masque un element en chargeant son contenu via Ajax
 *
 * @var		idElement		string		L'id de l'element a afficher / masquer
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function afficheCacheAjax(idElement, Url, forcerAjax) {
	if ( $(idElement).getStyle('display') == "block" ) {
		$(idElement).hide();
	}
	else {
		$(idElement).show();
		
		if (forcerAjax == true || $(idElement).innerHTML == "") {
			urlAjax (Url, idElement, 'get');
		}
	}
} // END function afficheCacheAjax

/**
 * Affiche / masque un element en chargeant son contenu via Ajax
 *
 * @var		idElement		string		L'id de l'element a afficher / masquer
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function rafraichirDivCacheAjax(idElement, Url) {
	if ( $(idElement).getStyle('display') != "block" ) {
		$(idElement).show();
	}
	urlAjax (Url, idElement, 'get');
} // END function afficheCacheAjax


/**
 * Affiche / masque un element
 *
 * @var		idElement		string		L'id de l'element a afficher / masquer
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function afficherCacher(idElement) {
	if ( $(idElement).getStyle('display') == "block" ) {
		$(idElement).hide();
	}
	else {
		$(idElement).show();
	}
	
} // END function afficherFade


/**
 * Affiche un element avec un effet de Fade et le masque sans effet
 *
 * @var		idElement		string		L'id de l'element a afficher / masquer
 * @var		dureeFade		int			Le temps du Fade, par défaut : 0.3 sec
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function afficherFade(idElement) {
	if ( $(idElement).getStyle('display') == "block" ) {
		$(idElement).hide();
	}
	else {
		new Effect.Appear($(idElement));
	}
	
} // END function afficherFade 

/**
 * Ouvre et ferme un panneau en modifiant une image témoin
 *
 * @var			idPanneau		string		L'id de l'élément a ouvrir / fermer
 * @var			srcOuvert		string		URL de l'image "Ouvrir"
 * @var			srcFerme		string		URL de l'image "Fermer"
 * @var			effetFerme		string		Effet de fermeture
 * @var			effetOuvre		string		Effet de l'ouverture
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function ouvreFermePanneau(idPanneau, srcOuvert, srcFerme, effetFerme, effetOuvre) {
	
	var imageTemoin = $('Temoin_' + idPanneau);
	
	if ($(idPanneau).getStyle('display') == "block") {
		imageTemoin.src = srcOuvert;
		switch (effetFerme) {
			case 'Appear':
				new Effect.Fade($(idPanneau));
			break;

			case 'Slide' :
				new Effect.SlideUp($(idPanneau));
			break;

			default:
				$(idPanneau).hide();
			break;
		}
	}
	else {
		imageTemoin.src = srcFerme;
		switch (effetOuvre) {
			case 'Appear':
				new Effect.Appear($(idPanneau));
			break;

			case 'Slide' :
				new Effect.SlideDown($(idPanneau));
			break;

			default:
				$(idPanneau).show();
			break;
		}
	}
	
} // END function ouvreFermePanneau

/**
 * Valider un formulaire et affiche un message d'attente
 *
 * @var		leFormulaire		string		L'id du formulaire
 * @var		boutonValider		string		L'id du bouton de validation
 * @var		divInfos			string		L'id de la fenêtre d'infos
 * @var		messageInfos		string		Le message à afficher
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function validerFormulaire(leFormulaire, boutonValider, divInfos, messageInfos) {
	// console.log("Valider le formulaire");
	$(boutonValider).disabled = "disabled";
	$(divInfos).update("<p>" + messageInfos + "</p>");
	$(divInfos).show();
	$(leFormulaire).submit();
	
} // END function validerFormulaire

/**
 * Recherche les liens dont la class CSS est targetBlank et modifie le target pour le passer à "_blank"
 *
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function targetBlank () {
	listeLiens = $$('a.targetBlank');
	listeLiens.each( function(leLien) {
		leLien.target = "_blank";
	});
	
} // END function targetBlank 

function lienCalculateur () {
	listeLiens = $$('a.lienCalcultateur');
	listeLiens.each( function(leLien) {
		leLien.insert({before: '<img src="web/images/calculator.png" alt="" align="absmiddle"/> '});
	});
	
} // END function targetBlank 

/**
 * Affiche un onglet et cache les autres
 *
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function afficherOnglet (ongletEnCours, listeOnglets) {
	$(ongletEnCours).show();
	$("lien_" + ongletEnCours).addClassName("ongletEnCours");

	listeOnglets.each( function(Onglet) {
		if (Onglet != ongletEnCours) {
			$(Onglet).hide();
			$("lien_" + Onglet).removeClassName("ongletEnCours");
		}
	});
}

/**
 * REND LA LISTE ORDONNABLE POUR CLASSER LES RUBRIQUES
 * 
 * @laListe				La liste à ordonner
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste
 * @mid					L'id de la rubrique mère
 **************************************************************/
function listeOrdonable(laListe, numVolet, mid, divActionAjax, urlSauveOrdre) {
	//--> AFFICHAGE DE L'AIDE ET DE LIEN POUR SAUVER L'ORDRE
	$("lienOrdre_" + numVolet).innerHTML = '<a href="#" onclick="sauverOrder(\'' + laListe + '\', \'' + urlSauveOrdre + '\', \'' + numVolet + '\', \'' + mid + '\', \'' + divActionAjax + '\'); return false;" class="lienSauver">Sauver l\'ordre</a>';
	infosDiv(divActionAjax, 'Cliquez sur <img src="images/icones/poignee_deplace.png" alt="Deplacer" align="absmiddle" /> pour déplacer les rubriques. Une fois les rubriques ordonnées cliquez sur <b>"Sauver l\'ordre"</b>');
	
	//--> AJOUT DES POIGNEES DE DEPLACEMENT POUR LES ELEMENTS DE LA LISTE
	for (i = 0; i < $(laListe).childNodes.length; i++ ){
		if ($(laListe).childNodes[i].nodeName == "LI") {
			$(laListe).childNodes[i].innerHTML = '<span class="Poignee"></span> ' + $(laListe).childNodes[i].innerHTML;
		}
	}
	
	//--> CREATION DE LA LISTE ORDONNABLE
	Sortable.create(laListe, {handle:'Poignee', constraint:'vertical'});
	Element.addClassName(laListe, "listeOrdonable");
}

/**
 * SAUVEGARDE DE L'ORDRE 
 *
 * @laListe				La liste à ordonner
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste
 * @mid					L'id de la rubrique mère
 **************************************************************/
function sauverOrder(laListe, urlSauveOrdre, numVolet, mid, divActionAjax) {
	urlAjax (urlSauveOrdre + "ordre=" + Sortable.sequence(laListe), divActionAjax, "get");
}

/**
 * Execute une page via Ajax
 *
 * @var		Url				string		L'url du fichier à lancer
 * @var		champRetour		string		Le champ dans lequel afficher le résultat
 * @var		methodeEnvoie	string		La méthode d'envoie get / post
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function urlAjax (Url, champRetour, methodeEnvoie, flashFin, voirChargement) {
	
	if (voirChargement != false) {
		Element.show('ajaxEnCours');
	};
	
	var requeteAjax	= new Ajax.Updater(	champRetour, Url, {	method: methodeEnvoie, 
															evalScripts:true,
															onComplete:function () {
																
																if (flashFin == true) {
																	new Effect.Highlight(champRetour, {startcolor:'#ffff99', duration:2});
																}
																
																if(voirChargement != false){
																	Element.hide('ajaxEnCours');
																}
															},
															on404:function () {
																Element.hide('ajaxEnCours');
															},
															onFailure:function () {
																Element.hide('ajaxEnCours');
															}});
} // END function urlAjax

/**
 * Soumission d'un formulaire via Ajax
 *
 * @var		Formulaire		string		L'id du formulaire
 * @var		Url				string		L'url du fichier à lancer
 * @var		champRetour		string		Le champ dans lequel afficher le résultat
 * @var		methodeEnvoie	string		La méthode d'envoie get / post
 *
 * @return void
 * @author Pierre-Louis Hubert
 **/
function formulaireAjax (Formulaire, Url, champRetour, methodeForm, flashFin, voirChargement) {
	
	if (voirChargement != false) {
		Element.show('ajaxEnCours');
	};
	
	var contenuForm	= Form.serialize(Formulaire);
	var requeteAjax	= new Ajax.Updater(	champRetour, Url, {
															method: methodeForm, 
															parameters: contenuForm,
															evalScripts:true,
															onComplete:function () {
 																if (flashFin == true) {
																	new Effect.Highlight(champRetour, {startcolor:'#ffff99', duration:2});
																}
																
																if(voirChargement != false){
																	Element.hide('ajaxEnCours');
																}
															},
															on404:function () {
																Element.hide('ajaxEnCours');
															},
															onFailure:function () {
																Element.hide('ajaxEnCours');
															}});
} // END function formulaireAjax

function AjaxSmallIndicCible (Url, champRetour, methodeEnvoie, Formulaire) {
	
	var contenuForm = (Formulaire != undefined && Formulaire != "") ? Form.serialize(Formulaire) : "";
	
	var requeteAjax	= new Ajax.Updater(	champRetour, Url, {	method: methodeEnvoie,
															parameters: contenuForm, 
															evalScripts:true,
															onCreate: function () {
																$(champRetour).update('<img src="smallindic.gif" alt="" />')
															},
															
															onComplete:function () {
																new Effect.Highlight(champRetour, {startcolor:'#ffff99', duration:2});
															}});
} // END function urlAjaxSmallIndicCible

function messageErreurFlottant(messageErreur) {
	$("attendreLoading").update(messageErreur + '<br /><a href="#" onclick="fermerMessageFlottant(); return false;">OK</a>');
	$("attendreLoading").show();
}

function fermerMessageFlottant () {
	$("attendreLoading").hide();
}

function voirFormAlternatif (idForm, typeForm) {
	if (typeForm == "html") {
		$("divUpload_" + idForm).hide();
		$("divUploadAlt_" + idForm).show();
	}
	else {
		$("divUpload_" + idForm).show();
		$("divUploadAlt_" + idForm).hide();
	}
}


// Event.observe(window, 'load', targetBlank);

function marquerActif (divPere, elementActif) {
	$(divPere).immediateDescendants().each( function (elementListe) {
		$(elementListe).removeClassName("lienActif");
	});
	$(elementActif).addClassName("lienActif");
}

function copierChampDans (champOrigine, champCible, forcerCopie) {	
	if ($(champCible).value == "" || forcerCopie == true) {
		$(champCible).value = $(champOrigine).value;
	};
}

function afficheCacheSelonRadio (elementRadio, divCible) {
	if ($F(elementRadio) == 1) {
		$(divCible).show();
	}
	else {
		$(divCible).hide();
	}
}