/* iubito's menu - http://iubito.free.fr/prog/menu.php - configuration du javascript */
// onScroll pour Internet Explorer, le position:fixed fait ce boulot pour les autres navigateurs qui respectent les normes CSS...
window.onscroll = function() {
	if (suivre_le_scroll && (isIE || isIE5mac)) {
		if (isIE5mac) document.getElementById("header-menu").style.visibility="hidden";
		var cumul=0;
		for(i=1;i<=nbmenu;i++) {
			var scrollTop = (document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);
			if (!vertical) {
				document.getElementById("menu"+i).style.top = scrollTop + top_menu + "px";
				if (document.getElementById("ssmenu"+i)) document.getElementById("ssmenu"+i).style.top = scrollTop + top_ssmenu + "px";
			} else {
				document.getElementById("menu"+i).style.top = scrollTop +(((i-1)*espace_entre_menus)+cumul+top_menu)+"px";
				if (document.getElementById("ssmenu"+i)) document.getElementById("ssmenu"+i).style.top = scrollTop+(((i-1)*espace_entre_menus)+cumul+top_menu)+"px";
				cumul += isFinite(hauteur_menu)?hauteur_menu:hauteur_menu[i-1];
			}
		}
		if (isIE5mac) document.getElementById("header-menu").style.visibility="visible";
	}
}

function preChargement() {
	if (document.getElementById(idmenu)) document.getElementById("header-menu").style.visibility="hidden";
}

function Chargement() {
	//Compte nbmenu
	nbmenu = 0;
	while (document.getElementById("menu"+(nbmenu+1))) nbmenu++;
	document.getElementById(idmenu).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();
	CacherMenus();	
	//pour Safari, qui a du mal à afficher le menu parfois, le fait de changer la taille des caractères corrige le problème. Merci Stol ! http://iubito.free.fr/forum/read.php?id=705&f=2
	if(isSafari) document.getElementById(idmenu).style.fontSize='10px';
	// comme on a évité le clignotement, maintenant on fait apparaître le menu ;-)
	document.getElementById(idmenu).style.visibility='';
}
window.onresize = Chargement;

/* Place les éléments du menu correctement, au chargement, au scroll, au redimensionnement
 * de la fenêtre
 */
function positionne() {
	//Calcul hauteur et largeur fenêtre compatible avec certains doctypes IE
	var largeur_fenetre;
	if (document.documentElement && document.documentElement.clientWidth) largeur_fenetre = document.documentElement.clientWidth;
	else if (document.body && document.body.clientWidth) largeur_fenetre = document.body.clientWidth;
	else if (window.innerWidth) largeur_fenetre = window.innerWidth;

	var hauteur_fenetre;
	if (document.documentElement && document.documentElement.clientHeight) hauteur_fenetre = document.documentElement.clientHeight;
	else if (document.body && document.body.clientHeight) hauteur_fenetre = document.body.clientHeight;
	else if (window.innerHeight) hauteur_fenetre = window.innerHeight;

	if (centrer_menu) {
		if (!vertical) {
			var largeur_totale = espace_entre_menus * (nbmenu-1);
			if (isFinite(largeur_menu))	largeur_totale += largeur_menu * nbmenu;
			else for (i = 1; i <= nbmenu; i++) largeur_totale += largeur_menu[i-1];
			left_menu = (largeur_fenetre - largeur_totale)/2;
		} else {
			var hauteur_totale = espace_entre_menus * (nbmenu-1);
			if (isFinite(hauteur_menu))	hauteur_totale += hauteur_menu * nbmenu;
			else for (i = 1; i <= nbmenu; i++) hauteur_totale += hauteur_menu[i-1];
			top_menu = (hauteur_fenetre - hauteur_totale)/2;
		}
	}	
	//Menus
	var cumul = 0;
	for(i=1;i<=nbmenu;i++) {
		with(document.getElementById("menu"+i).style) {
			if (!vertical) {
				top=top_menu+"px";
				left=(((i-1)*espace_entre_menus)+cumul+left_menu)+"px";
			} else {
				top=(((i-1)*espace_entre_menus)+cumul+top_menu)+"px";
				left=left_menu+"px";
			}
			if (!suivre_le_scroll || isIE || isIE5mac) position="absolute";
			else position="fixed";
			//if (vertical) height=hauteur_menu+"px";
			margin="0";
			zIndex="2";
			if (vertical || isFinite(largeur_menu))
				width=largeur_menu+"px";
			else
				width=largeur_menu[i-1]+"px";
			if ((!vertical && isFinite(largeur_menu)) || (vertical && isFinite(hauteur_menu))) {
				cumul += (!vertical?largeur_menu:hauteur_menu);
			}
			else {
				cumul += (!vertical?largeur_menu[i-1]:hauteur_menu[i-1]);
				if (vertical) height=hauteur_menu[i-1]+"px";
			}
		}
	}	
	//Sous-menus
	cumul = 0;
	for(i=1;i<=nbmenu;i++) {
		if (document.getElementById("ssmenu"+i)){//undefined
			with(document.getElementById("ssmenu"+i).style) {
				if (!suivre_le_scroll || isIE || isIE5mac) position="absolute";
				else position="fixed";
				if (!vertical) {
					top=top_ssmenu+"px";
					left=(((i-1)*espace_entre_menus)+cumul+left_menu)+"px";
				} else {
					left=left_ssmenu+"px";
					top=(((i-1)*espace_entre_menus)+cumul+top_menu)+"px";
				}
				if (isIE || isOpera || isIE5mac || !largeur_auto_ssmenu) {
					if (isFinite(largeur_sous_menu)) width = largeur_sous_menu+(largeur_sous_menu!="auto"?"px":"");
					else width = largeur_sous_menu[i-1]+(largeur_sous_menu[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)) || (vertical && isFinite(hauteur_menu))) cumul += (!vertical?largeur_menu:hauteur_menu);
		else cumul += (!vertical?largeur_menu[i-1]:hauteur_menu[i-1]);
	}
}

function MontrerMenu(strMenu) {
	AnnulerCacher();
	CacherMenus();
	if (document.getElementById(strMenu)) with (document.getElementById(strMenu).style) visibility="visible";
	SelectVisible("hidden",document.getElementsByTagName('select'));
}

function CacherDelai() {
	timeout = setTimeout('CacherMenus()',delai);
}

function AnnulerCacher() {
	if (timeout) clearTimeout(timeout);
}

function CacherMenus() {
	for(i=1;i<=nbmenu;i++) if (document.getElementById("ssmenu"+i)) with(document.getElementById("ssmenu"+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(isIE5win) for(i=1;i<=nbmenu;i++) if (document.getElementById("ssmenu"+i)) with(document.getElementById("ssmenu"+i)) innerHTML = innerHTML.replace(/<LI>|<\/LI>/g,"");
}

function SelectVisible(v,elem) {
	if (cacher_les_select && (isIE||isIE5win)) for (var i=0;i<elem.length;i++) elem[i].style.visibility=v;
}