1<!--// Michel Deboom septembre 2004 menu largeur auto,flèches txt 2 var delai,menu,dul,db,class_menu;pause=5500;D=document;wul1=0; 3 ie=D.all?1:0;op=window.opera?1:0;dtd=D.compatMode=="CSS1Compat"?1:0; 4 5// paramétrage : 6// flèches pour niveau horizontal, vertical ou vertical à droite 7flh=''; flg='›'; fld='‹'; //flh indique que le menu est déroulant, ex :... 8flc=ie?4:8 ;// espace pour la flèche 9//correction bug padding+border ie et opéra non dtd 10da=10 // des liens 11dul=(ie&!dtd)?0:0; // des ul 12danc=(ie&!dtd)?5:0;// hauteur du div "ancre_menu" 13 14function initMenu(id_menu,class_menu){ 15 de=ie&!op&&dtd?D.documentElement:D.body //exception IE6 dtd 16 fx=ie&!op?de.clientWidth:innerWidth-20 //l fenêtre 17 menu=D.getElementById(id_menu); 18 wul=[] // tableau des largeurs de sous-menus 19 as=menu.getElementsByTagName('a'); 20 sousMenu=menu.getElementsByTagName('ul'); 21 elem=document.getElementsByTagName('select'); 22 23 // ajoute a href="#" dans les li sans lien . 24 lis=menu.getElementsByTagName('li'); 25 for(i=0;i<lis.length;i++){var L=lis[i]; 26 if(L.firstChild.tagName!="A"){ 27 titre=L.firstChild.data;L.removeChild(L.firstChild); 28 L.innerHTML='<a href="#">'+titre+'<\/a>'+L.innerHTML;L.className="titre" 29 } 30 else L.className="lien" // avec url 31 } 32 //ajoute un id aux sous-menus 33 for(j=0;j<sousMenu.length;j++){sousMenu[j].id="ul"+j;wul[j]=0 34 } 35 //construction du menu : 36 for(i=0;i<as.length;i++){ 37 lien=as[i];wa=lien.offsetWidth; 38 smenu=lien.parentNode.getElementsByTagName('ul')[0]?1:0; 39 if (smenu)wa+=flc; 40 // 1er niveau horizontal 41 if(lien.parentNode.parentNode.id==id_menu){ 42 if(class_menu=="mh"){if(smenu&&lien.innerHTML!="")lien.innerHTML+=flh; 43 wa=lien.offsetWidth;wul1+=wa+da; 44 } 45 else { // vertical 46 if(wa>wul1){wul1=wa+da;}; 47 // ajoute les fléches 48 if(smenu){lien.innerHTML=(class_menu=="vd")?'<span class="fl">'+fld+'</span>'+
49 lien.innerHTML:lien.innerHTML+'<span class="fl">'+flg+'</span> ';} 50 } 51 } 52 //autres niveaux verticaux 53 else { 54 n=eval(lien.parentNode.parentNode.id.substr(2,2)); 55 if(wa>wul[n]){wul[n]=wa;}; 56 // ajoute les fléches 57 if(smenu)lien.innerHTML=(class_menu=="vd")?'<span class="fl">'+fld+'</span>'+ 58 lien.innerHTML:lien.innerHTML+'<span class="fl">'+flg+'</span> '; 59 } 60 //ajoute les évènements. 61 lien.onmouseover=lien.onfocus=function(){ 62 ul_parent=this.parentNode.parentNode; 63 ul=this.parentNode.getElementsByTagName('ul')[0] 64 ef(ul_parent); // cache tout après l'ul parent 65 if(ul){ul.style.visibility="visible";// montre l'ul enfant 66 (class_menu=="vd")?ul.style.right="100%": 67 (class_menu=="mh"&&ul_parent.id!=id_menu)||(class_menu=="vg")?ul.style.left="100%":0; 68 this.className="suivi"; // marquage du suivi de lien 69 voirSelect('hidden'); 70 } 71 }; lien.onmouseout=function(){delai=setTimeout('eftout()',pause)}; 72 } 73 74 //fixe la largeur du 1er menu : 75 if(wul1)menu.style.width=wul1+dul+"px"; 76 77 //largeur des sous-menu verticaux et de leurs liens : 78 for(var x=0;x<wul.length;x++){ 79 ula=sousMenu[x].getElementsByTagName('a');dda=(ie&!dtd)?da:0; 80 for(var i=0;i<ula.length;i++){ula[i].style.width=wul[x]+dda+"px"; 81 } 82 sousMenu[x].style.width=wul[x]+da+dul+"px"; 83 } 84 lien.onblur=D.onclick=eftout // pour navigation clavier IE 85 menu.className=class_menu; //activation retardée de la feuille de style 86 87 // replace les flèches des menus verticaux au bons endroits. 88 span = menu.getElementsByTagName('span'); 89 for(i=0;i<span.length;i++){A=span[i].parentNode;c=span[i].style; 90 if(span[i].className=="fl"){ 91 c.top=A.offsetTop+2+"px";c.left=(class_menu=="vd")?4+"px":A.offsetWidth-8+"px"; 92 } 93 } 94ancremenu(); 95} 96 97function ancremenu(){ancre=D.getElementById('ancre_menu'); 98 if(ancre){ 99 ancre.appendChild(menu); 100 with(ancre.style){ 101 height=menu.offsetHeight+danc+'px';width=menu.offsetWidth+dul+'px'; 102 } 103 } 104} 105 106function ef(ul) { //cache les uls qui suivent cet ul. 107 clearTimeout(delai); 108 var li=ul.getElementsByTagName('li'); 109 for(i=0;i<li.length;i++){ 110 var ul=li[i].getElementsByTagName('ul')[0]; 111 if(ul){ul.style.visibility="hidden"; 112 li[i].firstChild.className=""; //rétabli le marquage initial 113}}} 114 115function eftout(){ef(menu);voirSelect('visible'); 116menu.style.visibility="hidden";menu.style.visibility="visible";// bug ie 117} 118 119// bug ie corrigé : cache les <select> quand le menu est visible 120function voirSelect(v){ 121if(ie&!op){for(i=0;i<elem.length;i++)elem[i].style.visibility=v;} 122} 123 124//-->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.