﻿/*
nav.js
Fourni par : T@koma
Auteur : Pascal Sancho
*/

function creerArbre() {
    var elementTable;
    var contenantMenu = document.getElementById("menu");
    // preparer le tableau contenant la nav
    // creation du table du dossier
    elementTable = document.createElement("table");
    contenantMenu.insertBefore(elementTable,contenantMenu.firstChild);
    elementTable.className = 'nav';
    // dossiers niveau 1
    var indexN1 = 0;
    for (var i = 0; i < rubrique[racineID].rubriques.length; i++)
        if (rubrique[racineID].rubriques[i].active) {
            indexN1++ ;
            ajouteN1(elementTable,rubrique[racineID].rubriques[i],indexN1);
        }
    // creation du chemin
    if (moduleID) {
        contenantChemin = document.getElementById("chemin");
        chemin(rubrique[rubriqueID]);
    }
}

function ajouteN1(contenant,dossierCalcul,indexN1) {
    // contenant:     element HTML contenant la rubrique
    // dossierCalcul: objet rubrique a considerer
    // indexN1:       index du dossier dans la liste des dossiers visibles
    var elementP, elementA, elementImg, elementTable, elementTbody, elementTr, elementTd, i;
    var descendance = dossierCalcul.lien ?
        !dossierCalcul.lien :
        dossierCalcul.rubriques.length > 0 || dossierCalcul.modules.length > 0;
    // creation du tbody
    elementTbody = document.createElement("tbody");
    contenant.appendChild(elementTbody);
    if (dossierCalcul.lien) elementTbody.className = "N1lien"
    else if (contientModuleCourant(dossierCalcul, rubrique[rubriqueID])) elementTbody.className = "N1courant"
    else elementTbody.className = "N1"
    // creation du tr
    elementTr = document.createElement("tr");
    elementTbody.appendChild(elementTr);
    // creation du td contenant l'icone
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    /*elementTd.className = 'N1CaseIcone' + (indexN1 % 2 == 1 ? 'Impair' : 'Pair');*/
    /*elementTd.className = 'N1CaseIcone';*/
    // creation de l'icone (méthode sprite CSS)
    /*elementImg = document.createElement("div");
    elementTd.appendChild(elementImg);
    elementImg.className = 'N1Icone';*/
    elementTd.className = "N1icone";
    // creation du td contenant le titre de la rubrique et sa descendance
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "N1titre";
    // creation du P contenant le titre de rubrique
    elementP = document.createElement("p");
    elementTd.appendChild(elementP);
    if (dossierCalcul.lien) {
        // creation du lien si dossier-lien
        elementA = document.createElement("a");
        elementA.appendChild(document.createTextNode(dossierCalcul.titre));
        elementA.href = dossierCalcul.repertoire;
        elementP.appendChild(elementA);
    }
    // le dossier contient le module affiche
    else if (contientModuleCourant(dossierCalcul, rubrique[rubriqueID])) {
        elementP.appendChild(document.createTextNode(dossierCalcul.titre));
    // creation du tr interligne
    elementTr = document.createElement("tr");
    elementTbody.appendChild(elementTr);
    // creation des td interligne
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "N1interligne";
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "N1interligne";
        // creation du tbody
        elementTbody = document.createElement("tbody");
        contenant.appendChild(elementTbody);
        elementTbody.className = "N1contenu";
        // creation des liens sur modules
        for (i = 0; i < dossierCalcul.modules.length; i++)
            ajouteModule(elementTbody, dossierCalcul.modules[i], indexN1, dossierCalcul)
        for (i = 0; i < dossierCalcul.rubriques.length; i++)
            // rubriques filles
            if (dossierCalcul.rubriques[i].active)
                ajouteDossier(elementTbody, dossierCalcul.rubriques[i], indexN1)
    }
    // le dossier ne contient pas le module affiche
    else {
        var moduleLien = premierModule(dossierCalcul);
        // si le dossier contient un module dans sa descendance
        if (moduleLien) {
            // creer le lien
            elementA = document.createElement("a");
            elementP.appendChild(elementA);
            elementA.appendChild(document.createTextNode(dossierCalcul.titre));
            elementA.index = indexN1;
            if (mode == 'serveur')
                elementA.href =
                  'xml2html.asp?fichierXml='
                + moduleLien.rubrique.path + moduleLien.id
                + '.mom&fichierXsl=' + skinChemin + 'data.xsl'
            else if (mode == 'generation')
                elementA.href =
                  localHomePath + 'html/'
                + moduleLien.rubrique.path
                + moduleLien.id + '.html'
            else
                elementA.href = '[mode="'+mode+'"]'
        }
        // si la rubrique ne contient aucun module dans sa descendance
        else {
            elementP.className = "dossierN1vide";
            elementP.appendChild(document.createTextNode(dossierCalcul.titre));
        }
    }
    // creation du tr interligne
    elementTr = document.createElement("tr");
    elementTbody.appendChild(elementTr);
    // creation des td interligne
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "N1interligne";
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "N1interligne";
}

function contientModuleCourant(dossierTeste, dossierCalcul) {
    //   dossierTeste: objet rubrique dont on veut determiner si elle contient le module
    //   dossierCalcul: objet rubrique ascendant du module, en commençant par le dossier courant
    // return: true ou false
    // test si on est dans l'arbo
    if (!moduleID) return false
    else if (dossierCalcul == dossierTeste) return true
    else if (dossierCalcul.id == racineID) return false
    else return contientModuleCourant(dossierTeste, dossierCalcul.parent)
}

function premierModule(rubriqueTestee) {
    // rubriqueTestee: objet rubrique dont on cherche le premier module
    // premierModule: objet module (false si aucun module trouve)
    var i, retour;
    if (rubriqueTestee.lien) return false
    else if (rubriqueTestee.modules.length) return rubriqueTestee.modules[0]
    else if (rubriqueTestee.rubriques.length) {
        for (i=0 ; i<rubriqueTestee.rubriques.length ; i++) {
            if (rubriqueTestee.rubriques[i].active)
                retour = premierModule(rubriqueTestee.rubriques[i])
            if (retour) break 
        }
        return retour;
    }
    else return false
}

function N1Evenement(evenement) {
    // modification de l'arriere-plan sur mouseover
    evenement = (evenement) ? evenement : ((event) ? event : null);
    var element = (evenement.target) ? evenement.target : evenement.srcElement;
    if (element.nodeType == 3) element = element.parentNode
    // retrouver l'image de la puce
    var dossierPuceImg = document.getElementById("dossierPuce_" + element.index);
    switch (evenement.type) {
        case "mouseover": { dossierPuceImg.src = imagesChemin + "chapitrePuce.gif"; break }
        case "mouseout": dossierPuceImg.src = imagesChemin + "dummy.gif"
    }
}

/*
            ~\\|//~
            -(o o)-
+======oOOOo==(_)==oOOOo======+
|                             |
|   pascal.sancho@takoma.fr   |
|                             |
|        .oooO   Oooo.        |
+========(   )===(   )========+
          \ (     ) /
           \_)   (_/
*/
