/**
 * DEMANDE UNE CONFIRMATION AVANT D'EXECUTER UN LIEN
 *
 * @MessageConfirme			Le mesage a afficher
 * @Lien					Le lien a lancer en cas 
 *							de confirmation
 **************************************************************/
function ConfirmLien(MessageConfirme, Lien) {
	if (confirm(MessageConfirme)) {
		window.location = Lien;
	}
}

/**
 * DEMANDE UNE CONFIRMATION AVANT DE VIDER UN DIV
 *
 * @MessageConfirme			Le mesage a afficher
 * @leDiv					Le div à vider 
 **************************************************************/
function ConfirmViderDiv(MessageConfirme, leDiv) {
	if (confirm(MessageConfirme)) {
		$(leDiv).innerHTML = "";
	}
}

/**
 * POPUP CENTREE SUR L'ECRAN
 *
 * @UrlPage				L'adresse de la page
 * @LargeurPopup		La largeur du popup
 * @HauteurPopup		La hauteur du popup
 **************************************************************/
function Popup(UrlPage, 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(UrlPage, "lePopup", "scrollbars=yes,resizable=yes,width="+LargeurPopup+",height="+HauteurPopup+",top="+PositionY+",left="+PositionX);
}

/**
 * FONCTION DE L'ADMIN QUI MET EN VALEUR L'ENREGISTREMENT QUI 
 * VIENT D'ETRE MODIFIE OU AJOUTE
 *
 * @idLigne			l'ID de la ligne a mettre en valeur
 **************************************************************/
function ligneFluo(idLigne) {
	laLigne = document.getElementById("Ligne_"+idLigne);
	if (laLigne != null) {
		console.log("Ligne Fluo => " + laLigne);
		new Effect.Pulsate(laLigne);
	}
	console.log($("messageRetour"));
	if ($("messageRetour") != null && $("messageRetour").innerHTML != "<p></p>") {
		new Effect.Fade('messageRetour', {delay: 3});
	}
	
}

/**
 * AFFICHE UN MESSAGE DANS UN DIV
 *
 * @leDiv			l'ID du div dans lequel afficher le Message
 * @texteMessage	Le message à afficher
 **************************************************************/
function infosDiv(leDiv, texteMessage) {
	$(leDiv).innerHTML = "<p>"+texteMessage+"&nbsp;</p>";
}

/**
 * EFFACE LE CONTENU D'UN DIV
 *
 * @leDiv			l'ID du div à vider
 **************************************************************/
function viderDiv(leDiv) {
	$(leDiv).innerHTML = "";
}

/**
 * FONCTION DE L'ADMIN PERMETTANT D'AFFICHER OU DE MASQUER LES 
 * INFOS SUPPLEMENTAIRES
 *
 * @numDiv		Le numéro du div contenant les infos
 **************************************************************/
function afficheMasqueFiche(numDiv) {
	if (document.getElementById("Infos_"+numDiv).style.display != "block") {
		document.getElementById("Infos_"+numDiv).style.display = "block";
		document.getElementById("imageArbo_"+numDiv).src = "images/arbo_moins.png";
	}
	else {
		document.getElementById("Infos_"+numDiv).style.display = "none";
		document.getElementById("imageArbo_"+numDiv).src = "images/arbo_plus.png";
	}
}

function updateUne(srcImage, fichierImage, nomPourForm) {
	document.getElementById("image_une").value = nomPourForm;
	document.getElementById("infosImageUne").innerHTML = '<img src="' + srcImage + '" alt="" /><br />';
	document.getElementById("infosImageUne").innerHTML += '<a href="#" onclick="EffacerFichier(\'' + fichierImage + '\', \'infosImageUne\', \'image_une\'); return false" />Effacer l\'image</a><br />';
	Fat.fade_element("infosImageUne", '30', '1000', '#FF6701', '#FFFFFF');
}

function updateFichier(nomFichierFinal, dirFichier) {
	document.getElementById("fichier").value = nomFichierFinal;
	document.getElementById("infosFichier").innerHTML = nomFichierFinal + '<br />';
	document.getElementById("infosFichier").innerHTML += '<a href="#" onclick="EffacerFichier(\'' + dirFichier + '\', \'infosFichier\', \'fichier\'); return false" />Effacer le fichier</a><br />';
	Fat.fade_element("infosFichier", '30', '1000', '#FF6701', '#FFFFFF');
}

/**
 * SOUMISSION D'UN FORMULAIRE VIA L'AJAX
 * 
 * @Formulaire		L'ID du Formulaire
 * @Url				L'URL du fichier de traitement
 * @champRetour		Le champ dans lequel afficher le résultat
 * @methodeForm		Le méthode GET ou POST
 **************************************************************/
function formulaireAjax (Formulaire, Url, champRetour, methodeForm) {
	var contenuForm	= Form.serialize(Formulaire);
	var requeteAjax	= new Ajax.Updater(	champRetour, Url, {
															method: methodeForm, 
															parameters: contenuForm,
															evalScripts:true
															});
}

/**
 * LANCEMENT D'UNE URLVIA L'AJAX
 * 
 * @Url				L'URL du fichier
 * @champRetour		Le champ dans lequel afficher le résultat
 * @methodeForm		Le méthode GET ou POST
 **************************************************************/
function urlAjax (Url, champRetour, methodeForm) {
	var requeteAjax	= new Ajax.Updater(	champRetour, Url, {	method: methodeForm, 
															evalScripts:true
															});
}

/**
 * FONCTION DE VALIDATION D'UN FORMULAIRE
 *
 * @leFormulaire		L'ID du formuliare à valider
 * @divInfos			L'ID du div pour le message
 * @messageInfos		Le message a afficher
 **************************************************************/
function validerFormulaire (leFormulaire, divInfos, messageInfos) {
	//--> ON DESACTIVE LE BOUTONS DE VALIDATION
	$("btonValider").disabled = "disabled";
	
	//--> AFFICHAGE D'UN MESSAGE POUR L'UTILISATEUR
	$(divInfos).show();
	infosDiv(divInfos, '<img src="images/ajax-loader.gif" alt="Loagind" align="absmiddle"><br />' + messageInfos);
	
	//--> SOUMISSION DU FORMULAIRE
	$(leFormulaire).submit();
}





/* EFFET "MAC" POUR LA GESTION DE L'ARBORESCENCE
******************************************************************************************************************************************
******************************************************************************************************************************************
******************************************************************************************************************************************/

var nbVolets 		= 0;
var liensEnCours 	= new Array();
var LARGEUR_VOLET	= 270;
var DIV_INFOS		= "divFormRubrique";

/**
 * AFFICHE LE CONTENU D'UNE RUBRIQUE DANS UN NOUVEAU VOLET
 * 
 * @numVolet			Le numero du volet
 * @urlContenuAjax		L'URL du fichier qui va afficher le contenu
 *						de la rubrique
 **************************************************************/
function voletRubrique (numVolet, urlContenuAjax) {
	//--> VIDAGE D'UN EVENTUEL FORMLAIRE
	$(DIV_INFOS).innerHTML = "";
	
	//--> SUPPRESSION DES VOLET EN TROP
	if (nbVolets >= numVolet) {
		for (var i = numVolet; i < nbVolets; i++) {
			Element.remove("Volet_" + i);
		}
	}
	
	//--> MISE A JOUR DU NOMBRE DE VOLETS
	nbVolets = numVolet + 1;
	
	//--> CREATION DE LA NOUVELLE COLONNE
	codeColonne	= '<td valign="top" width="LARGEUR_VOLET" id="Volet_' + numVolet + '">';
	codeColonne	+= '<div id="Contenu_' + numVolet + '"><img src="images/small_indic.gif" alt="" /></div>';
	codeColonne	+= '</td>';
	var nouvelleColonne = new Insertion.Bottom("lesRubriques", codeColonne);
	
	//--> UTILISATION DE L'AJAX POUR INSERER DU CONTENU
	urlAjax(urlContenuAjax, "Contenu_" + numVolet, "get");
	
	//--> LE TABLEAU GAGNE EN LONGEUR
	largeurTableau = (LARGEUR_VOLET + 20) * (numVolet + 1);
	Element.setStyle("tableEffetMac", {width:largeurTableau + 'px;'});

	//--> ON SCROLL LE DIV POUR AFFICHER LES VOLETS A DROITE
	$("boiteScroll").scrollLeft = $("boiteScroll").scrollWidth;
}

/**
 * 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) {

	//--> AFFICHAGE DE L'AIDE ET DE LIEN POUR SAUVER L'ORDRE
	$("lienOrdre_" + numVolet).innerHTML = '<a href="#" onclick="sauverOrder(\'' + laListe + '\', \'' + numVolet + '\', \'' + mid + '\'); return false;" class="lienSauverOrdre">Sauver l\'ordre</a>';
	infosDiv(DIV_INFOS, 'Cliquez sur <img src="images/poignee_deplace.png" alt="" 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, numVolet, mid) {
	$("lienOrdre_" + numVolet).innerHTML = '<a href="#" onclick="listeOrdonable(\'' + laListe + '\', \'' + numVolet + '\'); return false;">Ordoner les rubriques</a>';
	urlAjax ("pages/arborescence.ajax.php?Action=ordoner&numVolet=" + numVolet + "&mid=" + mid + "&ordre=" + Sortable.sequence(laListe), DIV_INFOS, "get");
}

/**
 * MISE EN VALEUR DE LA RUBRIQUE SELECTIONNEE
 *
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste
 * @idLien				l'ID du lien
 **************************************************************/
function selectionerLien(numVolet, idLien) {
	leLien = "Lien_" + idLien;
	// MISE A JOUR DE PRECEDENT LIEN
	if (liensEnCours[numVolet] != "") {
		Element.removeClassName(liensEnCours[numVolet], "lienEnCours");
	}
	Element.addClassName(leLien, "lienEnCours");
	liensEnCours[numVolet] = leLien;
}

/**
 * MISE A JOUR DES VOLETS QUAND ON AFFICHE LE FORMULAIRE
 * OU QUANDON EFFACE UNE RUBRIQUE
 *
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste
 **************************************************************/
function majVoletsActionForm(numVolet) {
	//--> SUPPRESSION DES VOLET EN TROP
	for (var i = (nbVolets-1); i > numVolet; i--) {
		Element.remove("Volet_" + i);
	}
	
	//--> MISE A JOUR DU NOMBRE DE VOLETS
	nbVolets = numVolet + 1;

	//--> LE TABLEAU GAGNE EN LONGEUR
	largeurTableau = (LARGEUR_VOLET + 20) * (nbVolets);
	Element.setStyle("tableEffetMac", {width:largeurTableau + 'px;'});
}

/**
 * DEMANDE DE CONFIRMATION AVANT DE SUPPRIMER UNE RUBRIQUE
 *
 * @messageConfirme		Le message de confirmation
 * @urlDelete			L'URL du fichier aui efface la rubrique
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste 
 **************************************************************/
function confirmSupprRubrique(messageConfirme, urlDelete, numVolet) {
	if (confirm(messageConfirme)) {
		majVoletsActionForm(numVolet);
		urlAjax(urlDelete, DIV_INFOS, "get");
	}
}

/**
 * MISE EN PLACE DU FORMULAIRE D'AJOUT
 *
 * @mid					L'ID de la rubrique mère
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste
 **************************************************************/
function formAjoutRubrique(mid, numVolet) {
	majVoletsActionForm(numVolet);
	urlAjax ("pages/arborescence.ajax.php?Action=form&mid=" + mid + "&numVolet=" + numVolet, DIV_INFOS, "get");
}

/**
 * MISE EN PLACE DU FORMULAIRE DE MISE A JOUR
 *
 * @uid					L'ID de la rubrique a mettre à jour
 * @mid					L'ID de la rubrique mère
 * @numVolet			Le numero du volet dans lequel
 *						se trouve la liste
 **************************************************************/
function formMajRubrique(uid, mid, numVolet) {
	
	majVoletsActionForm(numVolet);
	
	//--> MISE EN VALEUR DE LA RUBRIQUE CHOISIE
	selectionerLien(numVolet, uid);
	urlAjax ("pages/arborescence.ajax.php?Action=form&uid=" + uid + "&mid=" + mid + "&numVolet=" + numVolet, DIV_INFOS, "get");
}






/* SYSTEME D'ONGLETS
******************************************************************************************************************************************
******************************************************************************************************************************************
******************************************************************************************************************************************/

/**
 * MISE EN VALEUR DE L'ONGLET SELECTIONNE
 *
 * @Onglet		L'ID de l'onglet à sélectionner
 **************************************************************/
function selectionnerOnglet (Onglet) {
	lesOnglets = document.getElementsByClassName("ongletSelectionne");
	for(i = 0; i < lesOnglets.length; i++) {
	    lesOnglets[i].removeClassName("ongletSelectionne");
	}
	Element.addClassName($(Onglet), "ongletSelectionne");
}

/**
 * AFFICHAGE DU CONTENU D'UN ONGLET
 *
 * @nom			L'ID du div a afficher
 **************************************************************/
function afficherDiv(contenuOnglet) {
	faireApparaitre = false;
	lesContenus = document.getElementsByClassName("ongletEnCours");
	for(i = 0; i < lesContenus.length; i++) {
		if ($(contenuOnglet) != lesContenus[i]) {
			new Effect.Fade(lesContenus[i], {duration:0.5});
			lesContenus[i].removeClassName("ongletEnCours");
			faireApparaitre = true;
		}
	}
	if (faireApparaitre == true) {
		Element.addClassName(contenuOnglet, "ongletEnCours");
		new Effect.Appear(contenuOnglet, {duration: 0.8, delay: 0.4});
	}
}






/* FONCTIONS SPECIFIQUES AUX FORMULAIRES DES PAGES ET POPUPS
******************************************************************************************************************************************
******************************************************************************************************************************************
******************************************************************************************************************************************/
function renseignerTitreHead(titrePage) {
	if (titreHeadPerso == false) {
		$("titre_site").value = titrePage;
	}
}

function titrePerso() {
	titreHeadPerso = true;
}

function choisirPopup(idPopup) {
	var champForm = window.opener.document.getElementById("popupurl");
	champForm.value = "pages/popup.php?uid=" + idPopup;
	window.opener.buildOnClick();
	window.close(this);
}

/* PIED DE PAGE
******************************************************************************************************************************************
******************************************************************************************************************************************
******************************************************************************************************************************************/
function getWindowHeight() {
	var windowHeight = 0;
	if (typeof(window.innerHeight) == 'number') {
		windowHeight = window.innerHeight;
	}
	else {
		if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}
		else {
			if (document.body && document.body.clientHeight) {
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}

function setFooter() {
	if (document.getElementById) {
		var windowHeight = getWindowHeight();
		if (windowHeight > 0) {
			var contentHeight = document.getElementById('blocSite').offsetHeight;
			var footerElement = document.getElementById('piedPage');
			var footerHeight  = footerElement.offsetHeight;
			if (windowHeight - (contentHeight + footerHeight) >= 0) {
				footerElement.style.position = 'relative';
				footerElement.style.top = (windowHeight - (contentHeight + footerHeight)) + 'px';
			}
			else {
				footerElement.style.position = 'static';
			}
		}
	}
}

/**
 * FONCTIONS LANCEES VIA DES EVENEMENTS
 *
 ****************************************************************************************************************************/
function cacherLoader () {
	$("attendreLoading").hide();
}

/**
 * LANCE LES FONCTIONS NECESSAIRES A L'INITIALISATION DE L'ADMIN
 *
 **************************************************************/
function initAdmin () {
	ligneFluo(UID_LIGNE); 
	// setFooter(); 
	cacherLoader();
}
// Event.observe(window, "resize", setFooter);
// Event.observe(window, "load", initAdmin);

/**
 * AFFICHAGE D'UN AJAX EN COURS
 **************************************************************/
var myGlobalHandlers = {
	onCreate: function(){
		Element.show('ajaxEnCours');
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('ajaxEnCours');
		}
	}
};

Ajax.Responders.register(myGlobalHandlers);
