
/* true = le menu sera vertical, à gauche.
   false = le menu sera horizontal, en haut. */
var vertical = true;

/* TRES IMPORTANT !
	Il faut mettre ici le nombre de menu_fiches, le script n'est pas capable de compter tout
	seul ! :-p Donc si votre code va jusqu'à <p id="menu_fiche5"...> il faut mettre 5. */
var nbmenu_fiche = 5;



/* Centrer le menu_fiche ? (true/false).
	Centre horizontalement ou verticalement suivant le mode choisi. */
var centrer_menu_fiche = false;

/* On est obligé de définir une largeur pour les menu_fiches.
	Pour mettre des menu_fiches de largeurs différentes :
	var largeur_menu_fiche = new Array(largeur menu_fiche1, largeur menu_fiche2, largeur menu_fiche3...)
	Il faut faire attention à mettre autant de valeurs que de nombre de menu_fiche !
	Attention, si vous êtes en menu_fiche vertical, mettez une largeur fixe (pas de Array) !
	*/
var largeur_menu_fiche = 148;

/* En mode vertical, on a besoin de connaître la hauteur de chaque menu_fiche.
	Même si les "cases" ne sont pas dimensionnées en hauteur.
	Ajustez cette variable si les menu_fiches sont trop rapprochés ou espacés en vertical.
	Pour mettre des menu_fiches de hauteurs différentes :
	var hauteur_menu_fiche = new Array(hauteur menu_fiche1, hauteur menu_fiche2, hauteur menu_fiche3...)
	Il faut faire attention à mettre autant de valeurs que de nombre de menu_fiche !
	Attention, si vous êtes en menu_fiche horizontal, mettez une largeur fixe (pas de Array) !
	*/
var hauteur_menu_fiche = 32;

/* En mode horizontal.
	Largeur des sous-menu_fiches, pour IE uniquement, les autres navigateurs respectent la largeur
	auto. Mettez "auto" uniquement si vous êtes sûr d'avoir mis des &nbsp; à la place des
	espace dans les items !
	Pour mettre des sous-menu_fiches de largeurs différentes :
	var largeur_sous_menu_fiche = new Array(largeur1, largeur2...).
	Il faut faire attention à mettre autant de valeurs que de menu_fiches.
	Si un menu_fiche n'a pas de sous-menu_fiches, il faut mettre quand même quelque chose !
	Il est possible de mettre "auto" dans certaines colonnes, à condition de respecter la
	consigne ci-dessus.
	*/
var largeur_sous_menu_fiche = 255;

/* Pour les navigateurs connaissant la largeur automatique (s'adapte au contenu), cette
	option (active par défaut) permet d'avoir une largeur automatique. En cas contraire
	(false), les sous menu_fiches auront la largeur largeur_sous_menu_fiche. */
var largeur_auto_ssmenu_fiche = false;

/* ... pour mettre un peu d'espace entre les menu_fiches ! */
var espace_entre_menu_fiches =-10;


/* position du menu_fiche par rapport au haut de l'écran ou de la page.
	0 = le menu_fiche est tout en haut. en px */
var top_menu_fiche = 235;
/* En version horizontale.
	position des sous-menu_fiches par rapport au haut de l'écran ou de la page. Il faut prévoir
	la hauteur des menu_fiches, donc ne pas mettre 0 et faire "à tâton". en px */
var top_ssmenu_fiche = top_menu_fiche + 32;

/* Position gauche du menu_fiche, en px. */
var left_menu_fiche = 835;
/* En version verticale.
	Position des sous-menu_fiches par rapport au bord gauche de l'écran. */
var left_ssmenu_fiche = largeur_menu_fiche+427;

/* Quand la souris quitte un sous-menu_fiche, si le sous-menu_fiche disparait immédiatement,
	cela gêne l'utilisateur. Alors on peut mettre un délai avant disparition du sous-menu_fiche.
	500 ms c'est bien :-) */
var delai = 500; // en milliseconde

/* En version horizontale.
	Comme le menu_fiche peut se superposer avec le texte de la page, il est possible de faire
	descendre un peu la page (on augmente la marge du haut) pour aérer un peu la page,
	une quarantaine de pixel c'est pas mal. en px*/
var marge_en_haut_de_page = top_menu_fiche + 250;
/* En version verticale.
	On décale le document à droite pour pas que le menu_fiche le superpose. */
var marge_a_gauche_de_la_page =  0;


/* Mettez à true si vous souhaitez que le menu_fiche soit toujours visible.
	Mettez false si vous ne le souhaitez pas, dans ce cas le menu_fiche "disparaîtra" quand vous
	descendrez dans la page. */
var suivre_le_scroll=false;

/* Pour IE uniquement, les balises <select> passent toujours au-dessus du menu_fiche, donc
	par défaut on cache les listes déroulantes quand le menu_fiche est ouvert, puis on les fait
	réapparaître à la fermeture du menu_fiche. Pour empêcher ça, mettre à false. */
var cacher_les_select=true;


var timeout; //ne pas toucher, c'est pour déclarer la variable
var agt = navigator.userAgent.toLowerCase();
var isMac = (agt.indexOf('mac') != -1);
var isOpera = (agt.indexOf("opera") != -1);
var IEver = parseInt(agt.substring(agt.indexOf('msie ') + 5));
var isIE = ((agt.indexOf('msie')!=-1 && !isOpera && (agt.indexOf('webtv')==-1)) && !isMac);
var isIE5win = (isIE && IEver == 5);
var isIE5mac = ((agt.indexOf("msie") != -1) && isMac);
var blnOk=true;
//pour enlever les "px" pour faire des calculs...
var reg = new RegExp("px", "g");

// onScroll pour Internet Explorer, le position:fixed fait ce boulot pour les autres navigateurs
// qui respectent les normes CSS...
window.onscroll = function()
{
	if (blnOk && suivre_le_scroll && (isIE || isIE5mac))
	{
		if (isIE5mac) document.getElementById("conteneurmenu_fiche").style.visibility="hidden";
		var cumul=0;
		for(i=1;i<=nbmenu_fiche;i++)
		{
			if (!vertical) {
				document.getElementById("menu_fiche"+i).style.top = document.body.scrollTop + top_menu_fiche + "px";
				if (document.getElementById("ssmenu_fiche"+i))//undefined
					document.getElementById("ssmenu_fiche"+i).style.top = document.body.scrollTop + top_ssmenu_fiche + "px";
			} else {
				document.getElementById("menu_fiche"+i).style.top = document.body.scrollTop
							+(((i-1)*espace_entre_menu_fiches)+cumul+1+top_menu_fiche)+"px";
				if (document.getElementById("ssmenu_fiche"+i))//undefined
					document.getElementById("ssmenu_fiche"+i).style.top = document.body.scrollTop
							+(((i-1)*espace_entre_menu_fiches)+cumul+1+top_menu_fiche)+"px";
				cumul += isFinite(hauteur_menu_fiche)?hauteur_menu_fiche:hauteur_menu_fiche[i-1];
			}
		}
		if (isIE5mac) document.getElementById("conteneurmenu_fiche").style.visibility="visible";
	}
}

function preChargement()
{
	if (document.getElementById("conteneurmenu_fiche"))
	{
		document.getElementById("conteneurmenu_fiche").style.visibility="hidden";
		//IE5 mac a un bug : quand un texte est dans un élément de style float, il n'apparait pas.
		/*if (isIE5mac)
		{
			document.getElementById("conteneurmenu_fiche").style="";
		}*/
	}
}

function Chargement() {
	if (!blnOk) {
		if(document.body.style.backgroundColor!="") { blnOk=false; }
		if(document.body.style.color!="") { blnOk=false; }
		if(document.body.style.marginTop!="") { blnOk=false; }
		if(document.getElementById) {
			with(document.getElementById("conteneurmenu_fiche").style) {
				if(position!="" || top!="" || left!=""
						|| width!="" || height!="" || zIndex!=""
						|| margin!="" || visibility!="") {
					blnOk=false;
				}
			}
		}
		else{
			blnOk=false;
		}
	}

	if(blnOk)
	{
		document.getElementById("conteneurmenu_fiche").style.visibility="hidden";
		
		trimespaces();
		
		with(document.body.style) {
			if (!vertical) marginTop=marge_en_haut_de_page+"px";
			else		   marginLeft=marge_a_gauche_de_la_page+"px";
		}
		
		positionne();
		Cachermenu_fiches();
	}

	// comme on a évité le clignotement, maintenant on fait apparaître le menu_fiche ;-)
	document.getElementById("conteneurmenu_fiche").style.visibility='';
}
window.onresize = Chargement;

/*
 * Place les éléments du menu_fiche correctement, au chargement, au scroll, au redimensionnement
 * de la fenêtre
 */
function positionne() {
	var largeur_fenetre = (isIE?document.body.clientWidth:window.innerWidth);
	var hauteur_fenetre = (isIE?document.body.clientHeight:window.innerHeight);
	if (centrer_menu_fiche) {
		if (!vertical) {
			var largeur_totale = espace_entre_menu_fiches * (nbmenu_fiche-1);
			if (isFinite(largeur_menu_fiche))
				largeur_totale += largeur_menu_fiche * nbmenu_fiche;
			else {
				for (i = 1; i <= nbmenu_fiche; i++)
					largeur_totale += largeur_menu_fiche[i-1];
			}
			left_menu_fiche = (largeur_fenetre - largeur_totale)/2;
		} else {
			var hauteur_totale = espace_entre_menu_fiches * (nbmenu_fiche-1);
			if (isFinite(hauteur_menu_fiche))
				hauteur_totale += hauteur_menu_fiche * nbmenu_fiche;
			else {
				for (i = 1; i <= nbmenu_fiche; i++)
					hauteur_totale += hauteur_menu_fiche[i-1];
			}
			top_menu_fiche = (hauteur_fenetre - hauteur_totale)/2;
		}
	}
	
	//menu_fiches
	var cumul = 0;
	for(i=1;i<=nbmenu_fiche;i++) {
		with(document.getElementById("menu_fiche"+i).style) {
			if (!vertical) {
				top=top_menu_fiche+"px";
				//left=(((i-1)*(largeur_menu_fiche+espace_entre_menu_fiches))+1+left_menu_fiche)+"px";
				left=(((i-1)*espace_entre_menu_fiches)+cumul+1+left_menu_fiche)+"px";
			} else {
				//top=(((i-1)*(hauteur_menu_fiche+espace_entre_menu_fiches))+1+top_menu_fiche)+"px";
				top=(((i-1)*espace_entre_menu_fiches)+cumul+1+top_menu_fiche)+"px";
				left=left_menu_fiche+"px";
			}
			if (!suivre_le_scroll || isIE || isIE5mac)
				position="absolute";
			else position="fixed";
			//if (vertical) height=hauteur_menu_fiche+"px";
			margin="0";
			zIndex="2";
			if (vertical || isFinite(largeur_menu_fiche))
				width=largeur_menu_fiche+"px";
			else
				width=largeur_menu_fiche[i-1]+"px";
			if ((!vertical && isFinite(largeur_menu_fiche)) || (vertical && isFinite(hauteur_menu_fiche))) {
				cumul += (!vertical?largeur_menu_fiche:hauteur_menu_fiche);
			}
			else {
				cumul += (!vertical?largeur_menu_fiche[i-1]:hauteur_menu_fiche[i-1]);
				if (vertical) height=hauteur_menu_fiche[i-1]+"px";
			}
		}
	}
	
	//Sous-menu_fiches
	cumul = 0;
	for(i=1;i<=nbmenu_fiche;i++) {
		if (document.getElementById("ssmenu_fiche"+i))//undefined
		{
			with(document.getElementById("ssmenu_fiche"+i).style) {
				if (!suivre_le_scroll || isIE || isIE5mac)
					position="absolute";
				else position="fixed";
				if (!vertical) {
					top=top_ssmenu_fiche+"px";
					//left=(((i-1)*(largeur_menu_fiche+espace_entre_menu_fiches))+1+left_menu_fiche)+"px";
					left=(((i-1)*espace_entre_menu_fiches)+cumul+1+left_menu_fiche)+"px";
				} else {
					left=left_ssmenu_fiche+"px";
					//top=(((i-1)*(hauteur_menu_fiche+espace_entre_menu_fiches))+1+top_menu_fiche)+"px";
					top=(((i-1)*espace_entre_menu_fiches)+cumul+1+top_menu_fiche)+"px";
				}
				if (isIE || isOpera || isIE5mac || !largeur_auto_ssmenu_fiche) {
					if (isFinite(largeur_sous_menu_fiche))
						width = largeur_sous_menu_fiche+(largeur_sous_menu_fiche!="auto"?"px":"");
					else
						width = largeur_sous_menu_fiche[i-1]+(largeur_sous_menu_fiche[i-1]!="auto"?"px":"");
				}
				else width = "auto";
				if (!vertical && !isIE5mac) {
					//repositionnement si déborde à droite
					if ((width != "auto")
						&& ((left.replace(reg,'').valueOf()*1 + width.replace(reg,'').valueOf()*1) > largeur_fenetre))
						left = (largeur_fenetre-width.replace(reg,'').valueOf())+"px";
				}
				margin="0";
				zIndex="3";
			}
		}
		if ((!vertical && isFinite(largeur_menu_fiche)) || (vertical && isFinite(hauteur_menu_fiche))) {
			cumul += (!vertical?largeur_menu_fiche:hauteur_menu_fiche);
		}
		else {
			cumul += (!vertical?largeur_menu_fiche[i-1]:hauteur_menu_fiche[i-1]);
		}
	}
}


function Montrermenu_fiche(strmenu_fiche) {
	if(blnOk) {
		AnnulerCacher();
		Cachermenu_fiches();
		if (document.getElementById(strmenu_fiche))//undefined
			with (document.getElementById(strmenu_fiche).style)
				visibility="visible";
	}
	SelectVisible("hidden",document.getElementsByTagName('select'));
}

function CacherDelai() {
	if (blnOk) {
		timeout = setTimeout('Cachermenu_fiches()',delai);
	}
}
function AnnulerCacher() {
	if (blnOk && timeout) {
		clearTimeout(timeout);
	}
}
function Cachermenu_fiches() {
	if(blnOk) {
		for(i=1;i<=nbmenu_fiche;i++) {
			if (document.getElementById("ssmenu_fiche"+i))//undefined
				with(document.getElementById("ssmenu_fiche"+i).style)
					visibility="hidden";
		}
	}
	SelectVisible("visible",document.getElementsByTagName('select'));
}

function trimespaces() {
	//Contourne un bug d'IE5/win... il ne capte pas bien les css pour les <li>, donc on les vire !
	if(blnOk&&isIE5win) {
		for(i=1;i<=nbmenu_fiche;i++) {
			if (document.getElementById("ssmenu_fiche"+i))//undefined
				with(document.getElementById("ssmenu_fiche"+i))
					innerHTML = innerHTML.replace(/<LI>|<\/LI>/g,"");
		}
	}
}

function SelectVisible(v,elem) {
	if (blnOk && cacher_les_select && (isIE||isIE5win))
		for (var i=0;i<elem.length;i++) elem[i].style.visibility=v;
}
