/* SCRIPT EDITE SUR L'EDITEUR JAVACSRIPT (http://www.editeurjavascript.com)
*
* Modifié par Annecybernard :
*  - Adaptation pour PHP : remplissage à partir d'une BDD
*  - Adaptation écran : réglage suivant la résolution, intégration du menu dynamique n'importe où dans l'interface
*  - Définition de classes pour les fonds de cellules
*/

// Caractéristiques paramétrables en fonction du site
var posYmenu; // Position verticale du menu depuis le haut du document (en pixels)
var largeur;  // Largeur de tout le menu (en pixels)
var delai;    // Délai avant de cacher la popup (en ms)
              // Si valeur fournie, la popup disparaitra quand on sort de la cellule
			  // Sinon, elle disparaît quand on clique n'importe où dans le document

// Variables internes
var zlien;    // Tableau de liens
var nava;    // Calque version Netscape Navigator
var dom;     // Calque version ???
var iex;     // Calque version Internet Explorer
var skn;     // Calque correspondant à la popup
var horloge; // Horloge enclenchée pour cacher la popup un certain temps après avoir survolé le menu

document.write('<div class="popper" id="topdeck"></div>');

/* Affiche la popup avec les liens du menu survolé
*
* Paramètres
*	msg : menu survolé
*	pos : sa position horizontale depuis le bord gauche du document (en pixels)
*/
function pop(msg, pos) {
	skn.visibility = "hidden";
	a = true;
	skn.left = posXmenu+pos;
	var content = "<table cellpadding=\"0\" cellspacing=\"1\" style=\"width:150px; background-color:#ffffff;\">";
	pass = 0;
	while (pass < msg.length) {
		content += "<tr><td class=\"menu_haut_sstitre\" onmouseover=\"this.className='menu_haut_sstitre_survole'\" onmouseout=\"this.className='menu_haut_sstitre'\">"+msg[pass]+"</td></tr>";
		pass++;
	}
	content += "</table>";
	if (nava) {
		skn.document.write(content);
		skn.document.close();
		skn.visibility = "visible";
	}
	else if (dom) {
		document.getElementById("topdeck").innerHTML = content;
		skn.visibility = "visible";
	}
	else if (iex) {
		document.all("topdeck").innerHTML = content;
		skn.visibility = "visible";
	}
}

/* Efface la popup affichée
*/
function cacher(){
	skn.visibility = "hidden";
	if(horloge > 0){
		clearTimeout(horloge);
	}
}

/* Détruit la popup affichée
*/
function kill() {
	if(delai > 0){
		horloge = setTimeout("cacher()", delai);
	}
	else{
		skn.visibility = "hidden";
	}
}

/* Initialise les caractéristiques du menu, en fonction du site
*
* Paramètres
*	X_800 : position horizontale depuis le bord gauche du document (en pixels) pour un écran en 800 X 600
*	X_1024 : position horizontale depuis le bord gauche du document (en pixels) pour un écran en 1024 X 768
*	X_1152 : position horizontale depuis le bord gauche du document (en pixels) pour un écran en 1152 X 864
*	X_1280 : position horizontale depuis le bord gauche du document (en pixels) pour un écran en 1280 X 1024
*	Y : position verticale depuis le haut du document (en pixels)
*	decalY : nombre de pixels entre le sommet de la popup et le sommet du menu dynamique
*	centrer_menu : centrer le menu sur la largeur du document (booléen)
*	largeur_menu : largeur de tout le menu (en pixels)
*	delai_h : délai avant de cacher la popup (en ms)
*              - Si valeur non nulle, la popup disparaitra quand on sort de la cellule
*			   - Sinon, elle disparaît quand on clique n'importe où dans le document
*/
function initMenu(X_800, X_1024, X_1152, X_1280, Y, decalY, centrer_menu, largeur_menu, delai_h){
	// Caractéristiques paramétrables en fonction du site
	posYmenu = Y;
	decalageY = decalY;
	needcenter = centrer_menu;
	largeur = largeur_menu;
	delai = delai_h;

	if (!needcenter){
		switch(screen.width){
			case 1024:
				posXmenu = X_1024;
				break;
			case 1152:
				posXmenu = X_1152;
				break;
			case 1280:
				posXmenu = X_1280;
				break;
			case 800:
			default:
				posXmenu = X_800;
				break;
		}
	}
	else {
		if (document.all){
			posXmenu = (document.body.clientWidth/2)-(largeur/2);
		}
		else{
			posXmenu = (window.innerWidth/2)-(largeur/2);
		}
	}
	
	
	// Variables internes
	zlien = new Array;
	nava = (document.layers);
	dom = (document.getElementById);
	iex = (document.all);
	if (nava){
		skn = document.topdeck;
	}
	else if (dom){
		skn = document.getElementById("topdeck").style;
	}
	else if (iex){
		skn = topdeck.style;
	}
	skn.top = posYmenu + decalageY;
}

/* Ajoute une rubrique au menu dynamique
*
* Paramètres
*	titre : titre de la rubrique affiché dans le menu
*	lien : lien vers lequel on est dirigé quand on clique sur la rubrique
*	target : cible du lien
*	menu : indice correspondant dans la liste de rubriques
*	largeurCellule : largeur de la cellule dans laquelle on affiche le titre de la rubrique (en pixels)
*	posX :  position de cette cellule depuis le bord gauche du document (en pixels)
*/
function ajouterRubrique(titre, lien, target, menu, largeurCellule, posX){
	zlien[menu] = new Array;
	if(target == ''){
		target = '_top';
	}
	
	if(delai > 0){
		// Le onclick="return(false)" est enlevé de la balise <a>
		// kill() appelé avec l'évènement onMouseOver() sur la cellule
		document.write('<td class="menu_haut_titre" style="width: ' + largeurCellule + 'px;" onmouseover="this.className=\'menu_haut_titre_survole\';pop(zlien[' + menu + '], ' + posX + ')" onmouseout="this.className=\'menu_haut_titre\';kill();"><a onmouseover="pop(zlien[' + menu + '], ' + posX + ')" href="' + lien + '" target="' + target + '">' + titre + '</a></td>');
	}
	else{
		// Ici, kill() n'est pas exécuté avec l'évènement onMouseOver() sur la cellule
		document.write('<td class="menu_haut_titre" style="width: ' + largeurCellule + 'px;" onmouseover="this.className=\'menu_haut_titre_survole\';pop(zlien[' + menu + '], ' + posX + ')" onmouseout="this.className=\'menu_haut_titre\';"><a onmouseover="pop(zlien[' + menu + '], ' + posX + ')" href="' + lien + '" target="' + target + '">' + titre + '</a></td>');
	}
}

/* Ajoute une sous-rubrique à une rubrique principale
*
* Paramètres
*	titre : titre de la sous-rubrique
*	lien : lien vers lequel on est dirigé quand on clique sur la sous-rubrique
*	target : cible du lien
*	menu : indice correspondant à la rubrique à laquelle on ajoute la sous-rubrique
*	ssmenu : indice correspondant dans la liste de sous-rubriques
*/
function ajouterSousRubrique(titre, lien, target, menu, ssmenu){
	if(target == ''){
		target = '_top';
	}
	
	zlien[menu][ssmenu] = '<a href="' + lien + '" target="' + target + '">' + titre + '</a>';
}

/* Affiche le début du menu
*/
function debutBlocMenu(){
	document.write('<style type="text/css">');
	document.write('#topgauche { position:absolute; top:'+posYmenu+'px; left:'+posXmenu+'px; z-index:10; font-size: 10px;}')
	document.write('</style>')
	//document.write('<div class="popper" id="topdeck"></div>');
	
	if(delai == 0){
		document.onclick = kill;
	}
	
	document.write('<div id="topgauche"><table cellpadding="0" cellspacing="1" style="width:' + largeur+ 'px; height:20px;"><tr>');
}

/* Affiche la fin du menu
*/
function finBlocMenu(){
	document.write('</tr></table></div>');
}
