// Raccourci et création d'un objet var d = document,     o = {}; 
// Définition des propriétés de l'objet o.Menu = {     
// Chargement du menu     __Load__: function()     {        
 // On lance le test pour s'assurer du bon fonctionnement         o.Menu.__Test__();     },    
 // Test d'existence des méthodes et de la syntaxe xhtml     __Test__: function()     {         
 // Si l'une des méthodes du script n'est pas interprétée ou si le menu n'existe pas, on stoppe le script.         if ( !d.getElementById ||          !d.getElementsByTagName ||          !d.createElement ||          !d.createTextNode ||          !d.getElementById('menu') ||          !d.getElementById('menu').setAttribute ||          !d.getElementById('menu').replaceChild ||          !d.getElementById('menu').appendChild ||          !d.getElementById('menu').getElementsByTagName('dl') ) return false; /*        ----- Tests facultatifs et non exhaustifs de bon augure ^^ -----         ----- Les codes contenus dans la zone suivante peuvent -----         ----- être virés si vous êtes sûr de votre syntaxe xhtml. ----- */        
 // Une fois le premier test effectué, on définit les variables nécessaires.         var iA, iB, iC, iD,             oMenu = d.getElementById('menu'),             oDl = oMenu.getElementsByTagName('dl');         // Pour chaque élément dl du tableau oDl,         for ( iA = oDl.length - 1; iA >= 0; iA-- )         {             // on récupère les éléments dt dans un tableau.             var oDt = oDl[iA].getElementsByTagName('dt');             // Si le tableau oDt est vide, on stoppe le script.             if ( !oDt ) return false;         }                  // Pour chaque élément dl du tableau oDl,         for ( iA = oDl.length - 1; iA >= 0; iA-- )         {             // on récupère les éléments dd dans un tableau oDd.             var oDd = oDl[iA].getElementsByTagName('dd');             // Si le tableau oDd est vide, on stoppe le script.             if ( !oDd ) return false;             // sinon             else             {                 // pour chaque élément dd du tableau oDd,                 for ( iB = oDd.length - 1; iB >= 0; iB-- )                 {                     // on récupère les éléments ul dans un tableau oUl.                     var oUl=oDd[iB].getElementsByTagName('ul');                     // S'il n'y a pas d'élément ul, on stoppe le script.                     if( !oUl ) return false;                     // sinon                     else                     {                         // pour chaque élément ul du tableau oUl,                         for ( iC = oUl.length - 1; iC >= 0; iC-- )                         {                             // on récupère les éléments li dans un tableau oLi.                             var oLi = oUl[iC].getElementsByTagName('li');                             // S'il n'y a aucun objet oLi, on stoppe le script.                             if( !oLi ) return false;                             // sinon                             else                             {                                 // pour chaque élément li du tableau oLi,                                 for ( iD = oLi.length - 1; iD >= 0; iD-- )                                 {                                     // on récupère l'élément a dans un objet oA.                                     var oA = oLi[iD].getElementsByTagName('a')[0];                                     // S'il n'y a pas d'objet oA, on stoppe le script.                                     if( !oA ) return false;                                 }                             }                         }                     }                 }             }         }          /*         ----- -----         ----- Fin des tests facultatifs de bon augure ^^ -----         ----- ----- */         // Une fois le test effectué, on initialise le menu.         return o.Menu.__Init__();     },     // Méthode d'initialisation du menu     __Init__:function()     {         // On définit les variables nécessaires.         var iA,             oMenu = d.getElementById('menu'),             oDl = oMenu.getElementsByTagName('dl');         // On cache tous les éléments dd en lançant la méthode dédiée à cette tâche.         o.Menu.__HideLists__();         // Pour chaque élément dl du tableau oDl,         for ( iA = oDl.length - 1; iA >= 0; iA-- )         {             // On récupère l'élément dt.             var oDt = oDl[iA].getElementsByTagName('dt')[0];             // On crée un élément dt et un élément a             var oNewDt = d.createElement('dt'),                 oA = d.createElement('a'),                 oTextA = d.createTextNode('');             // On définit les propriétés de l'objet oA             // (récupération du noeud texte de l'élément dt pour définir celui de l'élément a)             oA.setAttribute('href','#');             oTextA.data = oDt.firstChild.nodeValue;             // On constitue l'arbre DOM en remplaçant l'élément dt du code xhtml             // par celui qu'on vient de créer.             oA.appendChild(oTextA);             oNewDt.appendChild(oA);             oDl[iA].replaceChild(oNewDt,oDt);             // On définit des méthodes en fonction des actions de l'utilisateur.             oA.onclick = o.Menu.__Discard__;             oDl[iA].onmouseover = o.Menu.__MouseDisplay__;             oA.onfocus = o.Menu.__TabDisplay__;             oA.onkeypress = o.Menu.__TabDisplay__;         }     },     // Méthode d'affichage de l'élément dd lorsqu'on le survole.     __MouseDisplay__:function()     {         // On cache tous les éléments dd en lançant la méthode dédiée à cette tâche.         o.Menu.__HideLists__();         // On récupère l'élément dd de l'élément dl qu'on survole dans un objet.         var oDd = this.getElementsByTagName('dd')[0];         // On affecte la propriété css "display: block;" à l'objet oDd (affichage)         oDd.style.display = 'block';         // On cache l'élément dd lorsqu'on ne survole plus l'élément dl.         this.onmouseout = o.Menu.__HideLists__;     },     // Méthode d'affichage de l'élément dd lorsqu'il prend le focus.     __TabDisplay__:function()     {         // On cache tous les éléments dd en lançant la méthode dédiée à cette tâche.         o.Menu.__HideLists__();         // On récupère l'élément dd de l'élément dl qui a le focus dans un objet.         var oDd = this.parentNode.parentNode.getElementsByTagName('dd')[0];         // On affecte la propriété css "display: block;" à l'objet oDd (affichage)         oDd.style.display = 'block';         // On donne le focus au premier lien de l'élément dd traité.         oDd.getElementsByTagName('a')[0].focus();     },     // Méthode de masquage des éléments dd     __HideLists__:function()     {         // On définit les variables nécessaires.         var iA,             oDd = d.getElementById('menu').getElementsByTagName('dd');         // Pour chaque élément dd du tableau oDd,         for (iA = oDd.length - 1; iA >= 0; iA-- )         {             // On affecte la propriété css "display: none;" à l'objet oDd (masquage)             oDd[iA].style.display = 'none';         }     },     // Fonction d'annulation      __Discard__:function()     {         // On annule l'action.         return false;     } }; // Une fois que le document est chargé en mémoire, on charge le script. window.onload=o.Menu.__Load__; 