﻿/*
navData.js
Fourni par : T@koma
Auteur : Pascal Sancho
*/

var contenantChemin;

function ajouteModule(contenant, moduleCalcul, indexN1, dossierCalcul) {
    // contenant:     element HTML contenant le module
    // moduleCalcul:  objet module a considerer
    // indexN1:       index du dossier dans la liste des dossiers visibles
    // dossierCalcul: dossier contenant le module (pour tester si c'est le dossier courant)
    var elementTr, elementTd, elementImg, elementP, elementA;
    // creation du tr du module
    elementTr = document.createElement("tr");
    contenant.appendChild(elementTr);
    // creation du td de l'icone du module
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    // creation du td de titre du module
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = moduleCalcul.id == moduleID && dossierCalcul.id == rubriqueID ? "moduleTitreCourant" : "moduleTitre";
    // creation des p contenant les titres de modules
    elementP = document.createElement("p");
    elementTd.appendChild(elementP);
    // creation des liens sur les modules
    if (moduleCalcul.id == moduleID && dossierCalcul.id == rubriqueID) {
        elementP.appendChild(document.createTextNode(moduleCalcul.titre));
    }
    else {
        elementA = document.createElement("a");
        elementP.appendChild(elementA);
        elementA.appendChild(document.createTextNode(moduleCalcul.titre));
        if (mode == 'serveur')
            elementA.href =
              'xml2html.asp?fichierXml='
            + dossierCalcul.path + moduleCalcul.id
            + '.mom&fichierXsl=' + skinChemin + 'data.xsl'
        else if (mode == 'generation')
            elementA.href =
              localHomePath + 'html/'
            + dossierCalcul.path
            + moduleCalcul.id + '.html'
        else
            elementA.href = '[mode="'+mode+'"]'
    }
}

function ajouteDossier(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, elementTr, elementTd, elementDiv;
    var i;
    var descendance = (dossierCalcul.lien ? !dossierCalcul.lien : dossierCalcul.rubriques.length > 0 || dossierCalcul.modules.length > 0);
    // creation du tr
    elementTr = document.createElement("tr");
    contenant.appendChild(elementTr);
    // creation du td contenant l'icone
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "dossierPuce";
    // creation de l'icone
    elementImg = new Image(8,8);
    elementTd.appendChild(elementImg);
    if (dossierCalcul.lien) elementImg.src = imagesChemin + "fleche_droite.gif"
    else if (descendance) {
        elementImg.src = imagesChemin + (contientModuleCourant(dossierCalcul, rubrique[rubriqueID]) ? "fleche_bas.gif" : "fleche_droite.gif");
        elementImg.onclick = permuterDossier;
        elementImg.style.cursor = 'pointer';
    }
    else elementImg.src = imagesChemin + "vide.gif"
    // creation du td contenant le titre de la rubrique et sa descendance
    elementTd = document.createElement("td");
    elementTr.appendChild(elementTd);
    elementTd.className = "dossierTitre";
    // creation du P contenant le titre de rubrique
    elementP = document.createElement("p");
    elementTd.appendChild(elementP);
    if (dossierCalcul.lien) {
        // creation du lien si rubrique-lien
        elementA = document.createElement("a");
        elementA.appendChild(document.createTextNode(dossierCalcul.titre));
        elementA.href = dossierCalcul.repertoire;
        elementP.appendChild(elementA);
    }
    else {
        elementP.appendChild(document.createTextNode(dossierCalcul.titre));
        if (descendance) {
            elementP.onclick = permuterDossier;
            elementP.style.cursor = 'pointer';
        }
        var elementTable, elementTbody;
        // creation du table du dossier
        elementTable = document.createElement("table");
        elementTd.appendChild(elementTable);
        elementTable.cellPadding = 0;
        elementTable.cellSpacing = 0;
        elementTable.style.display = contientModuleCourant(dossierCalcul, rubrique[rubriqueID]) ? "block" : "none";
        // creation du tbody
        elementTbody = document.createElement("tbody");
        elementTable.appendChild(elementTbody);
        // creation des liens sur modules
        for (i = 0; i < dossierCalcul.modules.length; i++)
            ajouteModule(elementTbody, dossierCalcul.modules[i], indexN1, dossierCalcul)
        // rubriques filles
        for (i = 0; i < dossierCalcul.rubriques.length; i++)
            if (dossierCalcul.rubriques[i].active)
                ajouteDossier(elementTbody, dossierCalcul.rubriques[i], indexN1)
    }
}

function chemin(dossierCalcul) {
    var elementSpan, elementA;
    if (dossierCalcul.racine) {
        // creation du A contenant le lien vers l'accueil
        elementA = document.createElement("a");
        elementA.appendChild(document.createTextNode(dossierCalcul.titre));
        if (mode == 'serveur') elementA.href = 'default.asp'
        else if (mode == 'generation') elementA.href = localHomePath + 'accueil.html'
        else elementA.href = '[mode="'+mode+'"]'
        contenantChemin.appendChild(elementA);
    }
    else {
        chemin(dossierCalcul.parent);
        // creation du SPAN contenant la puce inter-chemin
        elementSpan = document.createElement("span");
        contenantChemin.appendChild(elementSpan);
        elementSpan.className = "puce";
        elementSpan.appendChild(document.createTextNode(" > "));
        // si la rubrique contient un module
        if (dossierCalcul.modules.length) {
            // creation du A contenant le lien vers le premier module de la rubrique
            elementA = document.createElement("a");
            contenantChemin.appendChild(elementA);
            elementA.appendChild(document.createTextNode(dossierCalcul.titre));
            if (mode == 'serveur')
                elementA.href =
                  'xml2html.asp?fichierXml='
                + dossierCalcul.path + dossierCalcul.modules[0].id
                + '.mom&fichierXsl=' + skinChemin + 'data.xsl'
            else if (mode == 'generation')
                elementA.href =
                  localHomePath + 'html/'
                + dossierCalcul.path
                + dossierCalcul.modules[0].id + '.html'
            else
                elementA.href = '[mode="'+mode+'"]'
        }
        // si la rubrique ne contient de module
        else {
            // creation du Span contenant le titre de la rubrique
            elementSpan = document.createElement("span");
            contenantChemin.appendChild(elementSpan);
            elementSpan.appendChild(document.createTextNode(dossierCalcul.titre));
            elementSpan.className = "dummy";
            elementSpan.title = libelle[langueDossierDepart][5];
        }
    }
}

function permuterDossier(evenement) {
    evenement = (evenement) ? evenement : ((event) ? event : null);
    var elementDeclenchant = (evenement.target) ? evenement.target : evenement.srcElement;
    if (elementDeclenchant.nodeType == 3) elementDeclenchant = elementDeclenchant.parentNode
    var elementIcone = (elementDeclenchant.tagName == 'IMG') ? elementDeclenchant : elementDeclenchant.parentNode.previousSibling.firstChild;
    var elementCible = elementDeclenchant.tagName == 'P' ?
        elementDeclenchant.parentNode.lastChild :
        elementDeclenchant.parentNode.nextSibling.lastChild;
    if (elementCible.style.display == "block") {
        elementCible.style.display = "none";
        elementIcone.src = imagesChemin + "fleche_droite.gif";
    }
    else {
        elementCible.style.display = "block";
        elementIcone.src = imagesChemin + "fleche_bas.gif";
    }
}

/*
            ~\\|//~
            -(o o)-
+======oOOOo==(_)==oOOOo======+
|                             |
|   pascal.sancho@takoma.fr   |
|                             |
|        .oooO   Oooo.        |
+========(   )===(   )========+
          \ (     ) /
           \_)   (_/
*/

