/***************************************
***************************************
		Fonctions de DOM communes à toutes les pages
***************************************
***************************************/


/******** openClose() ***********/
//Ferme/ouvre un block
function openClose(obj) {
	var display = getStyleInfo(obj,"display");
	if (display=="none") {
		obj.style.display = "block";
		return true;
	}
	else {
		obj.style.display = "none";
		return false;
	}
}


/********* popUp() ***************/
//Affiche/masque une pop-up
function popUp(obj) {
	//Si je l'ouvre, je masque les selects, sinon je les affiche
	if (openClose(obj)) hideSelectElements();
	else showSelectElements();	
}


/********* hideSelectElements() et showSelectElements()  ***************/
//IE (toujours lui) place les elements <select par dessus tout le reste, ils ne sont pas soumis au zIndex. 
//Je dois donc les masque pour ne pas gener l'affichage des fausses pop-up
function hideSelectElements() {
	initFunction("select", function(obj) { obj.style.visibility = "hidden" });
}
function showSelectElements() {
	initFunction("select", function(obj) { obj.style.visibility = "inherit" });
}


/********* makeShowTooltip() **********/
//Emulation du tooltip. Si possede la classe "show_tooltip" on créé un élément html avec le title (ou le texte alternatif) au survol
function makeShowTooltip(obj) {
	//je prends le texte dans le title, si vide dans le alt, si rien on s'arrete
	var txt =obj.getAttribute("title");
	if (!txt) txt = obj.getAttribute("alt");
	if (!txt) return;
	//On vire le alt qui va avec maintenant qu'on a amélioré le tooltip
	obj.title = "";
	
	//On affiche le tootlip au survol
	obj.onmouseover = function() {
		showTooltip(txt, this);		
	}
	//On le masque en partant
	obj.onmouseout = removeTooltip;
}
/************ showTooltip() *************/
function showTooltip(txt,obj,  x, y, width, height) {
	/*
	//Si le tooltip existe, on le fait disparaitre
	if (document.getElementById("tooltip")) removeTooltip();
	
	//On créé un tooltip avec le texte dedans et l'id/classe pour le masquer
	var tooltip = document.createElement("div");
	tooltip.setAttribute("id", "tooltip");
	tooltip.innerHTML = txt;
	*/
	if (txt=="") return;
	var tooltip = document.getElementById("tooltip");
	if (!tooltip) {
		tooltip = document.createElement("div");
		tooltip.setAttribute("id", "tooltip");
	}

	tooltip.innerHTML = txt;
	//On l'affiche
	tooltip.style.visibility = "visible";
	//Si j'ai précisé des dimensions, je redimensionne
	if (width) tooltip.style.width = width+"px";
	if (height) tooltip.style.height = height+"px";
	//On l'ajoute dans le document
	document.getElementById("conteneur").appendChild(tooltip);

	//Coords données, on le mets aux coords
	if (x || y) {
		tooltip.style.top = y+"px";
		tooltip.style.left = x+"px";
	}
	//Sinon on le mets juste au dessus du lien
	else {
		tooltip.style.top = (getY(obj) - tooltip.offsetHeight)+"px";
		tooltip.style.left = getX(obj)+"px";
	}	

}
/******* removeTooltip() ***********/
//On supprime le tooltip
function removeTooltip() {
	var tooltip = document.getElementById("tooltip");
	if (!tooltip) return;
	//On le supprime
	tooltip.style.visibility = "hidden";
}


/********** makeZoom() **********/
function makeZoom(obj) {
	obj.onclick = zoomShow
}
/**********  zoomShow() *******/
//On affiche une image en grand format au milieu de l'écran
function zoomShow() {
	//On créé un div pour le zoom
	var div = document.getElementById("zoom");
	//S'il existe déjà, on le cache
	if (div) return openClose(div);
	//Sinon on le crée
	div = document.createElement("div");
	div.setAttribute("id", "zoom");
		
	//On crée un lien "fermer"
	var fermer = document.createElement("a");
	setClass(fermer, "fermer");
	fermer.innerHTML = "Fermer";
	fermer.href = "#";
	fermer.onclick = function() { openClose(div); return false; };
	div.appendChild(fermer);
	
	//On mets l'image dedans
	var img = document.createElement("img");
	img.alt = this.alt;
	//On le mets un peu à partir du haut
	div.style.top = "120px";
			
	//On centre le div une fois l'image chargée (sinon il trouve pas le width correct)
	img.onload = function() {
		//On le mets au milieu (on prends la largeur de la page divisée par deux moins la moitié de sa largeur )
		var pageWidth = getPageWidth(); //Largeur de la page
		//On peut pas trouver la largeur du div avec IE (il mets "auto") on prends donc juste la largeur de l'image
		var divWidth = getStyleInfo(div, "width");
		if (divWidth=="auto") {
			this.style.pixelWidth; //Bizarrement... Rien que de faire appel à cette ligne me permet d'avoir le résultat de getStyleInfo(img, "width"). 
			//Sans cette ligne je n'ai rien du tout (IE), il doit donner un layout... je sais pas...
			divWidth = img.offsetWidth;
		}
		else divWidth = divWidth.removePx();
		//On le place donc au centre !	
		div.style.left = ((pageWidth/2) - (divWidth/2)) + "px"
		return;
	}
		
	
	//Le grand format est de la forme XXXX_full.jpg
	//On dit où chercher (Ie le charge à ce moment là, même s'il n'est pas mis dans le DOM)
	var dotPosition = this.src.lastIndexOf(".");
	img.src = this.src.substring(0, dotPosition) + "_full.jpg";
	//img.src = this.src.substring(0, hyphenPosition) + "-full" + this.src.substring(hyphenPosition);
	
	//On ferme le fenetre en cliquant sur l'image
	img.onclick = function() { openClose(div) }
	
	//On ajoute l'image au div
	div.appendChild(img);
	//On ajoute le div à la page
	document.getElementsByTagName("body")[0].appendChild(div);	
	
}






/*******************************************
********************************************
	Fonctions de DOM particulières à certaines pages 
********************************************
*******************************************/

/********* CONTACTEZ-NOUS **********/
//Ouvre/ferme la pop-up d'envoie de mail
function popUpContact() {
	popUp(document.getElementById("pop-up_mail"));
}
//On va ajouter sur chaque lien avec la classe link_pop-up_mail l'ouverture de la pop-up
function initContact() {
	initFunction("a.link_pop-up_mail", makeContact);
}
//On ajoute une ouverture de pop-up et remplissage de champ lors du clic
function makeContact(obj) {
	//Adresse mail
	var mail = obj.href.substr(obj.href.indexOf("#")+1);
	
	obj.onclick = function() {
		//On ouvre la pop-up
		popUpContact();
		//On remplit le champ visible
		document.getElementById("pop-up_mail_for_display").innerHTML = mail;
		//On remplit le champ hidden
		getElementsBySelector("#pop-up_mail form input#mail_to")[0].value = mail;
	}
}

/******* CONFIRMATION RECEVOIR UN CATALOGUE PAPIER *****/
//On affiche masque la pop-up
function cataloguePapier() {
	popUp(document.getElementById("pop-up_catalogue_papier"));
}


/********** ZOOM DE L'IMAGE ***********/
function popUpZoom(obj) {
	//Si je passe un param, je mets des trucs dans la pop-up
	if (obj) {
		var	zoom = getElementsBySelector("#pop-up_zoom .zoom img")[0];
		zoom.src = obj.src
		zoom.alt = obj.alt;
		zoom.style.display = "inline";
	}
	popUp(document.getElementById("pop-up_zoom"));	
}


/********* ACCES AUX AUTRES ESPACES ***********/
function makeMenuEspaces(obj) {
	//removeEmptyTextNodesChild(obj);
	var a = obj.getElementsByTagName("a")[0];
	var ul = obj.getElementsByTagName("ul")[0];
	a.onclick = function() {
		openClose(ul);
		return false;
	}
}

/********* makeOpenSousMenu ***************/
//On fait ouvrir/fermer les sous-ul du menu au clic sur le a correspondant
function makeOpenSousMenu(obj) {
	removeEmptyTextNodesChild(obj.parentNode);
	//On ne l'applique que aux éléments qui ont un <ul> en nextSibling
	if (obj.nextSibling && obj.nextSibling.nodeName=="UL") obj.onclick = openSousMenu;
}
/******* openSousMenu *************/
//On ouvre le ul qui suit
function openSousMenu() {
	var ul = this.nextSibling;
	openClose(ul);
	return false;
}


/********** makeOpenReponse ********/
function makeOpenReponse(obj) {
	obj.onclick= openReponse;
}
function openReponse() {
	var reponse = 	document.getElementById(this.href.substr(this.href.indexOf("#")+1));
	if (reponse) openClose(reponse);
}

/******** makeGoToPays **/
function makeGoToPays(obj) {
	obj.onchange = function() { document.location.hash = this.value; }
}

/*********** makeOpenOuvrages **********/
function makeOpenOuvrages(obj) {
	obj.onclick = openOuvrages;
}
function openOuvrages() {
	//Le div à faire apparaitre/disparaitre (le contenu, la liste des rubriques)
	var inside = getElementsBySelector(".inside", this.parentNode)[0];
	//Je fais apparaitre/disparaitre le contenu
	if (inside) var open = openClose(inside);
	
	//Je vais ajouter un nouveau titre avec uniquement le haut d'arrondi
	var newH4 = getElementsBySelector(".newH4", this.parentNode)[0];
	//S'il n'existe pas, on le créé
	if (!newH4) {
		newH4 = document.createElement("h4");
		this.parentNode.insertBefore(newH4, this);
		newH4.innerHTML = "";
		newH4.innerHTML = "Nos ouvrages";
		newH4.onclick = openOuvrages;
		setClass(newH4, "newH4 background-color1 roundBorderFill tl tr");
		makeRoundCorners(newH4);
		newH4.style.display = "none";
	}
	
	//On masque l'ancien (tout arrondi) et on fait apparaitre le nouveau (arrondi en haut). Puis vice versa le coup d'après, etc, etc
	var oldH4 = this.parentNode.getElementsByTagName("h4")[1];
	openClose(oldH4);
	openClose(newH4);
	
}


/********** makeShowWorldTooltip *************/
function makeShowWorldTooltip(obj) {
	//On affiche le tooltip à la souris
	obj.onmousemove = showWorldTooltip;
	obj.onmouseout = removeTooltip;
	//Commeje rajoute déjà mes propres tooltips, je dois effacer les tooltips des area et de l'image  des browsers
	obj.titre = obj.title;
	obj.title = "";
	//On enleve le alt de l'image
	document.getElementById("map_"+obj.parentNode.name).alt ="";
}
function showWorldTooltip() {
	showTooltip(this.titre, this, globalMouseX+10, globalMouseY+10);	
}

/******** DONNER SON AVIS **********/
//Affiche la fenetre pour donner son avis
function donnerAvis() {
	popUp(document.getElementById("donner_avis"));
}
function aideRecherche() {
	popUp(document.getElementById("pop-up_aide_recherche"));
}	
	/********** LISTE DE MENUS / TEXTES *************/
//On va ajouter les fonctions d'affichage/masquage sur les textes/liens des pages a plusieurs menus
function initMenuTexteAffichage() {
	initFunction(".colonne_menu ul li a", makeMenuTexteAffichage);
}

//On masque le texte correspondant, et on ajoute la fonction d'affichage du texte
function makeMenuTexteAffichage(obj) {
	//On masque déjà le texte correspondant
	document.getElementById("texte_"+obj.id).style.display = "none";	
	//Maintenant j'ajoute la fonction au clic => afficher le texte correspondant dans le champ réservé
	obj.onclick = function() {
		//On masque tout les divs de la clonne de texte sauf celui qu'on veut
		var div = getElementsBySelector(".colonne_texte div");
		//On masque tous les #texte_
		for (var i=0;i!=div.length;i++) {
			if (div[i].id.substring(0,6)=="texte_") div[i].style.display = "none";
		}
		//On affiche celui qui correspond au lien
		document.getElementById("texte_"+obj.id).style.display = "block";
		// début surbrillance dans le menu (22/04/2010)
		//On intialise en couleur noire et fonte normale tous les liens du menu
		var liens = getElementsBySelector(".colonne_menu ul li a");
		for (var k=0;k!=liens.length;k++) {
			liens[k].style.fontWeight = "normal";
			liens[k].style.color = "#000000";
			if (liens[k].id == "offre_decouverte") liens[k].style.color = "#CC6633";

		}
		// On met en gras le lien du menu sélectionné
		document.getElementById(obj.id).style.fontWeight = "bold";
		// On met en bleu le lien du menu sélectionné (sauf offredecouverte qui reste orange)
		if (obj.id != "offre_decouverte") document.getElementById(obj.id).style.color = "#1A4396";
		// fin surbrillance dans le menu
		
	}
	
}	
