var vertical = false;
var centrer_menu = true;
var suivre_le_scroll = false;

//var nbmenu=7;
var delai = 700; // en milliseconde // 500 ms c'est bien
var espace_entre_menus = 3;

var top_menu = 98;
var top_ssmenu = top_menu + 32;

var marge_a_gauche = 265;
var marge_en_haut_de_page = 0;

var largeur_du_site = 992;
var largeur_menu = 77;
/* On est obligé de définir une largeur pour les menus. Pour mettre des menus de largeurs différentes :
	var largeur_menu = new Array(largeur menu1, largeur menu2, largeur menu3...)
	Il faut faire attention à mettre autant de valeurs que de nombre de menu !
	Attention, si vous êtes en menu vertical, mettez une largeur fixe (pas de Array) !
	*/

/* 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 menus auront la largeur largeur_sous_menu. */
var largeur_sous_menu = 220;
var largeur_auto_ssmenu = true;

/* Pour IE uniquement, les balises <select> passent toujours au-dessus du menu, donc
	par défaut on cache les listes déroulantes quand le menu est ouvert, puis on les fait
	réapparaître à la fermeture du menu. Pour empêcher ça, mettre à false. */
var cacher_les_select=false;



//var left_menu = 0; //Position gauche du menu, en px. 320 sur le code de base */
/* En mode vertical, on a besoin de connaître la hauteur de chaque menu. Même si les "cases" ne sont pas dimensionnées en hauteur.
	Ajustez cette variable si les menus sont trop rapprochés ou espacés en vertical. Pour mettre des menus de hauteurs différentes :
	var hauteur_menu = new Array(hauteur menu1, hauteur menu2, hauteur menu3...) 
	Il faut faire attention à mettre autant de valeurs que de nombre de menu ! Attention, si vous êtes en menu horizontal, mettez une largeur fixe (pas de Array) !*/
//var hauteur_menu = 25;
/* En version verticale.Position des sous-menus par rapport au bord gauche de l'écran. */
//var left_ssmenu = largeur_menu+2;
/* En version verticale.
	On décale le document à droite pour pas que le menu le superpose. */
//var marge_a_gauche_de_la_page = largeur_menu + 10;

var nbmenu = 0; //Auto-calculé
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 isSafari = (agt.indexOf('safari') != -1);

//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 (suivre_le_scroll && (isIE || isIE5mac))
	{
		if (isIE5mac) document.getElementById("conteneurmenu").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))//undefined
					document.getElementById("ssmenu"+i).style.top = scrollTop + top_ssmenu + "px";
			} else {
				document.getElementById("menu"+i).style.top = scrollTop
							+(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
				if (document.getElementById("ssmenu"+i))//undefined
					document.getElementById("ssmenu"+i).style.top = scrollTop
							+(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
				cumul += isFinite(hauteur_menu)?hauteur_menu:hauteur_menu[i-1];
			}
		}
		if (isIE5mac) document.getElementById("conteneurmenu").style.visibility="visible";
	}
}

function preChargement()
{
	if (document.getElementById("conteneurmenu"))
		document.getElementById("conteneurmenu").style.visibility="hidden";	
		
}

function Chargement() {
	nbmenu = 0;
	while (document.getElementById("menu"+(nbmenu+1)))
		nbmenu++;	
	document.getElementById("conteneurmenu").style.visibility="hidden";
	trimespaces();
	with(document.body.style) {
		if (!vertical) marginTop=marge_en_haut_de_page+"px";
		//else		   marginLeft="100px";	
		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('conteneurmenu').style.fontSize='10px';
	// comme on a évité le clignotement, maintenant on fait apparaître le menu ;-)
	document.getElementById("conteneurmenu").style.visibility='';
}


window.onload = preChargement;
window.onload = Chargement;
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];
			}


			// Une fonction pour positionner le menu selon la taille de l'écran
			if (largeur_fenetre > largeur_du_site) {
			// Calcul de la marge à gauche selon la taill de l'ecran et la largeur de l'interface du site
				left_menu = ((largeur_fenetre - largeur_du_site)/2) + marge_a_gauche;
			} else {
			// Ici on inscrit la marge gauche quand la page est réduite dans le navigateur
				left_menu = marge_a_gauche;
			}


		} 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+1+left_menu)+"px";
			} else {
				top=(((i-1)*espace_entre_menus)+cumul+1+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="1";
			
			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+1+left_menu)+"px";
				} else {
					left=left_ssmenu+"px";
					top=(((i-1)*espace_entre_menus)+cumul+1+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="1";
			}
		}
		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))//undefined
		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))//undefined
			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))//undefined
				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;
}