/* iubito's men - http://iubito.free.fr/prog/men.php - configuration du javascript */


/* true = le men sera vertical, &agrave; gauche.
   false = le men sera horizontal, en haut. */
var vertical = false;

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



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

/* On est oblig&eacute; de d&eacute;finir une largeur pour les mens.
	Pour mettre des mens de largeurs diff&eacute;rentes :
	var largeur_men = new Array(largeur men1, largeur men2, largeur men3...)
	Il faut faire attention &agrave; mettre autant de valeurs que de nombre de men !
	Attention, si vous &ecirc;tes en men vertical, mettez une largeur fixe (pas de Array) !
	*/
var largeur_men = 175;

/* En mode vertical, on a besoin de conna&icirc;tre la hauteur de chaque men.
	M&ecirc;me si les "cases" ne sont pas dimensionn&eacute;es en hauteur.
	Ajustez cette variable si les mens sont trop rapproch&eacute;s ou espac&eacute;s en vertical.
	Pour mettre des mens de hauteurs diff&eacute;rentes :
	var hauteur_men = new Array(hauteur men1, hauteur men2, hauteur men3...)
	Il faut faire attention &agrave; mettre autant de valeurs que de nombre de men !
	Attention, si vous &ecirc;tes en men horizontal, mettez une largeur fixe (pas de Array) !
	*/
var hauteur_men = 25;

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

/* Pour les navigateurs connaissant la largeur automatique (s'adapte au contenu), cette
	option (active par d&eacute;faut) permet d'avoir une largeur automatique. En cas contraire
	(false), les sous mens auront la largeur largeur_sous_men. */
var largeur_auto_ssmen = true;

/* ... pour mettre un peu d'espace entre les mens ! */
var espace_entre_mens = 5;


/* position du men par rapport au haut de l'&eacute;cran ou de la page.
	0 = le men est tout en haut. en px */
var top_men = 2;
/* En version horizontale.
	position des sous-mens par rapport au haut de l'&eacute;cran ou de la page. Il faut pr&eacute;voir
	la hauteur des mens, donc ne pas mettre 0 et faire "&agrave; t&acirc;ton". en px */
var top_ssmen = top_men + 29;

/* Position gauche du men, en px. */
var left_men = -3;
/* En version verticale.
	Position des sous-mens par rapport au bord gauche de l'&eacute;cran. */
var left_ssmen = largeur_men+1;

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

/* En version horizontale.
	Comme le men 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&eacute;rer un peu la page,
	une quarantaine de pixel c'est pas mal. en px*/
var marge_en_haut_de_page = top_men + 40;
/* En version verticale.
	On d&eacute;cale le document &agrave; droite pour pas que le men le superpose. */
var marge_a_gauche_de_la_page = largeur_men + 10;


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

/* Pour IE uniquement, les balises <select> passent toujours au-dessus du men, donc
	par d&eacute;faut on cache les listes d&eacute;roulantes quand le men est ouvert, puis on les fait
	r&eacute;appara&icirc;tre &agrave; la fermeture du men. Pour emp&ecirc;cher &ccedil;a, mettre &agrave; false. */
var cacher_les_select=true;


var timeout; //ne pas toucher, c'est pour d&eacute;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("conteneurmen").style.visibility="hidden";
		var cumul=0;
		for(i=1;i<=nbmen;i++)
		{
			if (!vertical) {
				document.getElementById("men"+i).style.top = document.body.scrollTop + top_men + "px";
				if (document.getElementById("ssmen"+i))//undefined
					document.getElementById("ssmen"+i).style.top = document.body.scrollTop + top_ssmen + "px";
			} else {
				document.getElementById("men"+i).style.top = document.body.scrollTop
							+(((i-1)*espace_entre_mens)+cumul+1+top_men)+"px";
				if (document.getElementById("ssmen"+i))//undefined
					document.getElementById("ssmen"+i).style.top = document.body.scrollTop
							+(((i-1)*espace_entre_mens)+cumul+1+top_men)+"px";
				cumul += isFinite(hauteur_men)?hauteur_men:hauteur_men[i-1];
			}
		}
		if (isIE5mac) document.getElementById("conteneurmen").style.visibility="visible";
	}
}

function prechargement()
{
	if (document.getElementById("conteneurmen"))
	{
		document.getElementById("conteneurmen").style.visibility="hidden";
		//IE5 mac a un bug : quand un texte est dans un &eacute;l&eacute;ment de style float, il n'apparait pas.
		/*if (isIE5mac)
		{
			document.getElementById("conteneurmen").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("conteneurmen").style) {
				if(position!="" || top!="" || left!=""
						|| width!="" || height!="" || zIndex!=""
						|| margin!="" || visibility!="") {
					blnOk=false;
				}
			}
		}
		else{
			blnOk=false;
		}
	}

	if(blnOk)
	{
		document.getElementById("conteneurmen").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";
		}
		
		positione();
		cachermens();
	}

	// comme on a &eacute;vit&eacute; le clignotement, maintenant on fait appara&icirc;tre le men ;-)
	document.getElementById("conteneurmen").style.visibility='';
}
window.onresize = chargement;

/*
 * Place les &eacute;l&eacute;ments du men correctement, au chargement, au scroll, au redimensionnement
 * de la fen&ecirc;tre
 */
function positione() {
	var largeur_fenetre = (isIE?document.body.clientWidth:window.innerWidth);
	var hauteur_fenetre = (isIE?document.body.clientHeight:window.innerHeight);
	if (centrer_men) {
		if (!vertical) {
			var largeur_totale = espace_entre_mens * (nbmen-1);
			if (isFinite(largeur_men))
				largeur_totale += largeur_men * nbmen;
			else {
				for (i = 1; i <= nbmen; i++)
					largeur_totale += largeur_men[i-1];
			}
			left_men = (largeur_fenetre - largeur_totale)/2;
		} else {
			var hauteur_totale = espace_entre_mens * (nbmen-1);
			if (isFinite(hauteur_men))
				hauteur_totale += hauteur_men * nbmen;
			else {
				for (i = 1; i <= nbmen; i++)
					hauteur_totale += hauteur_men[i-1];
			}
			top_men = (hauteur_fenetre - hauteur_totale)/2;
		}
	}
	
	//mens
	var cumul = 0;
	for(i=1;i<=nbmen;i++) {
		with(document.getElementById("men"+i).style) {
			if (!vertical) {
				top=top_men+"px";
				//left=(((i-1)*(largeur_men+espace_entre_mens))+1+left_men)+"px";
				left=(((i-1)*espace_entre_mens)+cumul+1+left_men)+"px";
			} else {
				//top=(((i-1)*(hauteur_men+espace_entre_mens))+1+top_men)+"px";
				top=(((i-1)*espace_entre_mens)+cumul+1+top_men)+"px";
				left=left_men+"px";
			}
			if (!suivre_le_scroll || isIE || isIE5mac)
				position="absolute";
			else position="fixed";
			//if (vertical) height=hauteur_men+"px";
			margin="0";
			zIndex="2";
			if (vertical || isFinite(largeur_men))
				width=largeur_men+"px";
			else
				width=largeur_men[i-1]+"px";
			if ((!vertical && isFinite(largeur_men)) || (vertical && isFinite(hauteur_men))) {
				cumul += (!vertical?largeur_men:hauteur_men);
			}
			else {
				cumul += (!vertical?largeur_men[i-1]:hauteur_men[i-1]);
				if (vertical) height=hauteur_men[i-1]+"px";
			}
		}
	}
	
	//Sous-mens
	cumul = 0;
	for(i=1;i<=nbmen;i++) {
		if (document.getElementById("ssmen"+i))//undefined
		{
			with(document.getElementById("ssmen"+i).style) {
				if (!suivre_le_scroll || isIE || isIE5mac)
					position="absolute";
				else position="fixed";
				if (!vertical) {
					top=top_ssmen+"px";
					//left=(((i-1)*(largeur_men+espace_entre_mens))+1+left_men)+"px";
					left=(((i-1)*espace_entre_mens)+cumul+1+left_men)+"px";
				} else {
					left=left_ssmen+"px";
					//top=(((i-1)*(hauteur_men+espace_entre_mens))+1+top_men)+"px";
					top=(((i-1)*espace_entre_mens)+cumul+1+top_men)+"px";
				}
				if (isIE || isOpera || isIE5mac || !largeur_auto_ssmen) {
					if (isFinite(largeur_sous_men))
						width = largeur_sous_men+(largeur_sous_men!="auto"?"px":"");
					else
						width = largeur_sous_men[i-1]+(largeur_sous_men[i-1]!="auto"?"px":"");
				}
				else width = "auto";
				if (!vertical && !isIE5mac) {
					//repositionement si d&eacute;borde &agrave; 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_men)) || (vertical && isFinite(hauteur_men))) {
			cumul += (!vertical?largeur_men:hauteur_men);
		}
		else {
			cumul += (!vertical?largeur_men[i-1]:hauteur_men[i-1]);
		}
	}
}


function montrermen(strmen) {
	if(blnOk) {
		annulercacher();
		cachermens();
		if (document.getElementById(strmen))//undefined
			with (document.getElementById(strmen).style)
				visibility="visible";
	}
	SelectVisible("hidden",document.getElementsByTagName('select'));
}

function cacherdelai() {
	if (blnOk) {
		timeout = setTimeout('cachermens()',delai);
	}
}
function annulercacher() {
	if (blnOk && timeout) {
		clearTimeout(timeout);
	}
}
function cachermens() {
	if(blnOk) {
		for(i=1;i<=nbmen;i++) {
			if (document.getElementById("ssmen"+i))//undefined
				with(document.getElementById("ssmen"+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<=nbmen;i++) {
			if (document.getElementById("ssmen"+i))//undefined
				with(document.getElementById("ssmen"+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;
}

