﻿// Gestion du javascript desactive par CSS
document.documentElement.className+=" hasJS"

function Menu_OuvrirFermer(spanNode, img, imgOff, level)
{
    var liNode = spanNode.parentNode;
    var ulNode = liNode.childNodes[1];
    if (liNode.className != "actif")
    {
        Menu_Ouvrir(liNode, img, imgOff, level);
        // On change l'image uniquement si l'on est au niveau 1 (sous-menu actif)
        //if (level == 1) liNode.childNodes[0].childNodes[0].src = img;
        liNode.childNodes[0].childNodes[0].src = img;
    }
    else
    {
        Menu_Fermer(liNode);
        Menu_childNodes(liNode, img, imgOff);
        for (var i=0; i<ulNode.childNodes.length; i++)
        {
            var source = ulNode.childNodes[i].childNodes[0].childNodes[0].src;
            if (source != undefined)
            {
                if (source.slice(source.length - img.length, source.length) == img)
                {
                    ulNode.childNodes[i].childNodes[0].childNodes[0].src = imgOff;
                }
            }
        }
        //if (level == 1) liNode.childNodes[0].childNodes[0].src = imgOff;
        liNode.childNodes[0].childNodes[0].src = imgOff;
    }
}

function Menu_Ouvrir(liNode, img, imgOff, level)
{
    liNode.className = "actif";
    
    // On ouvre le noeud courant et on ferme ses fils
    if (liNode.childNodes.length == 2)
    {
        var ulNode = liNode.childNodes[1];
        ulNode.style.display = "block";
    }
    
    // On ferme les noeuds frères
    var parentUlNode = liNode.parentNode;
    for (var i=0; i<parentUlNode.childNodes.length; i++)
    {
        var siblingLiNode = parentUlNode.childNodes[i];
        if (siblingLiNode != liNode)
        {
            Menu_Fermer(siblingLiNode);
            if (level == 0) Menu_childNodes(siblingLiNode, img, imgOff);
            if (level == 1) siblingLiNode.childNodes[0].childNodes[0].src = imgOff;
        }
    }
}


function Menu_childNodes(liNode, img, imgOff)
{
    // On remplace l'image du noeud ouvert par celle du noeud ferme
    if (liNode.src != undefined)
    {
        var source = liNode.src;
        if (source.slice(source.length - img.length, source.length) == img)
        {
            liNode.src = imgOff;
        }
    }
    
    // On ferme les noeuds fils
    if (liNode.childNodes.length > 0)
    {
        for (var i=0; i<liNode.childNodes.length;i++)
        {
            Menu_childNodes(liNode.childNodes[i], img, imgOff);
            if ((liNode.childNodes.length > 1) && (liNode.className == "actif"))
            {
                var nomClasse = liNode.childNodes[i].className;
                var reg = new RegExp("^menu2.*$","i");
                // On compare le debut de la classe avec "menu2"
                if (nomClasse.match(reg))
                {
                    Menu_Fermer(liNode);
                }
            }
        }
    }
}


function Menu_Fermer(liNode)
{   
    if (liNode.childNodes.length == 2)
    {
        if (liNode.className != undefined) liNode.className = "";

        var childUlNode = liNode.childNodes[1];
        childUlNode.style.display = "none";
    }    
}

