var largeur_menu = 177; var vertical = false; var nbmenu = 4; var centrer_menu = false; var hauteur_menu = 23; var largeur_sous_menu = 177; var largeur_auto_ssmenu = true; var espace_entre_menus = 10; var top_menu = 4; var top_ssmenu = top_menu + 20; var left_menu = 6; var left_ssmenu = largeur_menu+2; var delai = 200; // en milliseconde var marge_en_haut_de_page = 0; var marge_a_gauche_de_la_page = largeur_menu + 3000; var suivre_le_scroll=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 clientWidth=-10; 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").style.visibility="hidden"; var cumul=0; for(i=1;i<=nbmenu;i++) { if (!vertical) { document.getElementById("menu"+i).style.top = document.body.scrollTop + top_menu + "px"; if (document.getElementById("ssmenu"+i))//undefined document.getElementById("ssmenu"+i).style.top = document.body.scrollTop + top_ssmenu + "px"; } else { document.getElementById("menu"+i).style.top = document.body.scrollTop +(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px"; if (document.getElementById("ssmenu"+i))//undefined document.getElementById("ssmenu"+i).style.top = document.body.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"; //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").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").style) { if(position!="" || top!="" || left!="" || width!="" || height!="" || zIndex!="" || margin!="" || visibility!="") { blnOk=false; } } } else{ blnOk=false; } } if(blnOk) { document.getElementById("conteneurmenu").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(); } // comme on a évité le clignotement, maintenant on fait apparaître le menu ;-) document.getElementById("conteneurmenu").style.visibility=''; } window.onresize = Chargement; /* * Place les éléments du menu 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) { 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 + clientWidth; } 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)*(largeur_menu+espace_entre_menus))+1+left_menu)+"px"; left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px"; } else { //top=(((i-1)*(hauteur_menu+espace_entre_menus))+1+top_menu)+"px"; 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="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)*(largeur_menu+espace_entre_menus))+1+left_menu)+"px"; left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px"; } else { left=left_ssmenu+"px"; //top=(((i-1)*(hauteur_menu+espace_entre_menus))+1+top_menu)+"px"; top=(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px"; } 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) { if(blnOk) { AnnulerCacher(); CacherMenus(); if (document.getElementById(strMenu))//undefined with (document.getElementById(strMenu).style) visibility="visible"; } SelectVisible("hidden",document.getElementsByTagName('select')); } function CacherDelai() { if (blnOk) { timeout = setTimeout('CacherMenus()',delai); } } function AnnulerCacher() { if (blnOk && timeout) { clearTimeout(timeout); } } function CacherMenus() { if(blnOk) { 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
  • , donc on les vire ! if(blnOk&&isIE5win) { for(i=1;i<=nbmenu;i++) { if (document.getElementById("ssmenu"+i))//undefined with(document.getElementById("ssmenu"+i)) innerHTML = innerHTML.replace(/
  • |<\/LI>/g,""); } } } function SelectVisible(v,elem) { if (blnOk && cacher_les_select && (isIE||isIE5win)) for (var i=0;i