/*
    Gestion de l'arborscence

    Auteur original :  Rui Nibau (RNB) <rui.nibau@omacronides.com> (http://www.omacronides.com/informatique/web/arbre-hierarchique-js)
    Repris par hugo pour Hyla
 */

/*  Création de l'arbre
 */
function arbre() {
    // Choix de la balise contenant le texte. <strong> par défaut.
    balise = "SPAN";

    // Présentation de l'arbre au départ : déployé ('yes') ou fermé ('no')
    extend = "no";

    // Récupération de tous les arbres de la page
    $("ul#arbre ul").each(function(i) {
        processULEL(this);
    });
}

/*  Analyse de l'arbre
 */
function processULEL(ul, pouf) {

    if (!ul.childNodes || ul.childNodes.length == 0)
        return;

    // Iterate LIs
    for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {

        var item = ul.childNodes[itemi];

        if (item.nodeName == "LI") {

            // Contenu des balises LI
            var a;
            var subul;
            subul = "";
            for (var sitemi = 0; sitemi < item.childNodes.length ; sitemi++) {

                // Enfants des li : balise ou sous-ul
                var sitem = item.childNodes[sitemi];
                switch (sitem.nodeName) {
                    case balise:
                        a = sitem;
                        break;

                    case "UL":
                        subul = sitem;
                        if (extend != "yes" && sitem.className != "tree_current") {
                            sitem.className = 'hide';
                        }

                        a.className = (extend == "yes" || sitem.className == "tree_current") ? 'arbre-minus' : 'arbre-plus';
                        associateEL(a, subul);
                        break;
                }
            }
        }
    }
}

/*  Swicth des noeuds
 */
function associateEL(a, ul) {
    a.onclick = function () {
        this.className = (ul.className == 'hide') ? 'arbre-minus' : 'arbre-plus';
        ul.className = (ul.className == 'hide') ? '' : 'hide';
        return false;
    }
}

/*  Créer l'arbre
 */
window.onload = function() {
    arbre();
}


