function rollout(objMenuitem, objEvent) {
  var iKeyCode;
 
  // Vérifie si le navigateur sait gérer l'évènement "keypress".
  if (objEvent && objEvent.type == 'keypress') {
    if (objEvent.keyCode)
      iKeyCode = objEvent.keyCode;
    else if (objEvent.which)
      iKeyCode = objEvent.which;
 
    // Si la touche pressée ne correspond ni au bouton "Entrée" ni à la barre "Espace", la fonction sera alors ignorée.
    if (iKeyCode != 13 && iKeyCode != 32)
      return true;
  }
 
  // On vérifie si la liste du titre choisi est affichée ou non, et on garde en mémoire l'état inverse.
  if (objMenuitem.nextSibling.style.display == 'block')
    var strDisplay = 'none'
  else
    var strDisplay = 'block';
 
  var objMenu = document.getElementById('menu_collectivite');
  var objNested = objMenu.getElementsByTagName('ul');
 
  // Cache l'ensemble des listes
  for (var i=0; i<objNested.length; i++) {
    if (objNested[i].style.display == 'block')
      objNested[i].style.display = 'none';
  }
 
  // On applique l'état gardé en mémoire sur la liste du titre choisi.
  objMenuitem.nextSibling.style.display = strDisplay;
 
  // Laisse les listes parentes de l'élément choisi affichée.
  while (objMenuitem.parentNode.parentNode.id != 'menu_collectivite') {
    objMenuitem = objMenuitem.parentNode.parentNode;
    objMenuitem.style.display = 'block';
  }
 
  return false;
}
 
function initMenus() {
  var bRollup, objLinks, objNode, objAnchor;
 
  // Vérifie si le navigateur est compatible avec le DOM.
  if (document.getElementById && document.createElement) {
    var strLocation = window.location;
    var objMenu = document.getElementById('menu_collectivite');
    var objNested = objMenu.getElementsByTagName('ul');
 
    // Vérifie l'ensemble des listes du menu.
    for (var i=0; i<objNested.length; i++) {
      bRollup = true;
      objLinks = objNested[i].getElementsByTagName('a');
 
      // Vérifie l'ensemble des liens contenus dans les listes.
      for (var j=0; j<objLinks.length; j++) {
 
        // On supprime le lien lorsque celui-ci correspondant à l'url de la page et on le place dans une balise "strong".
        if (objLinks[j].href == strLocation) {
          bRollup = false;
          objNode = objLinks[j];
          strContent = objNode.firstChild.data;
          var objCurrentPage = document.createElement('strong');
          objCurrentPage.appendChild(document.createTextNode(strContent));
          objNode.parentNode.replaceChild(objCurrentPage, objNode);
 
          // On donne un id à la liste devant rester ouverte.
          objCurrentPage.id = 'keepOpen';
        }
      }
 
      // Si la liste contient l'url de la page on l'affiche, sinon on la cache.
      if (bRollup == true)
        objNested[i].style.display = 'none';
      else
        objNested[i].style.display = 'block';
 
      // Transforme le titre de la liste en lien
      objNode = objNested[i].parentNode;
      strContent = objNode.firstChild.data;
      objAnchor = document.createElement('a');
      objAnchor.href = '#';
      objAnchor.onclick = function(event) {
        return rollout(this, event);
      }
      objAnchor.onkeypress = function(event) {
        return rollout(this, event);
      }
      objAnchor.appendChild(document.createTextNode(strContent));
      objNode.replaceChild(objAnchor, objNode.firstChild);
    }
 
   
  }
}
 
window.onload = function () {
  initMenus();
   // Affiche les listes parentes du lien correspondant à l'url.
    if (document.getElementById('keepOpen')) {
      var objKeepOpen = document.getElementById('keepOpen');
      while (objKeepOpen.parentNode.id != 'menu_collectivite') {
      //  alert('ok');
		objKeepOpen = objKeepOpen.parentNode;
        objKeepOpen.style.display = 'block';
      }
    }
};
