var timerZoomSur ; //Utilise pour faire defiler les zoom sur produit

/** ###################### FONCTION JS LIVREE PAR AGENCE 4 #################### */
function masquersousmenus() {
    var elements = document.getElementById('tete').getElementsByTagName('*');
    for (cpt = 0; cpt < elements.length; cpt++) {
        if (elements[cpt].className == 'sous-menu') elements[cpt].style.display = 'none';
        if (elements[cpt].className == 'menu over') elements[cpt].className = 'menu';
    }
}

function affichersousmenu(menu) {
    masquersousmenus();
    masquersousmenu = false;
    menu.className = 'menu over';
    menu.onmouseout = function() {
        masquersousmenu = true;
        setTimeout('if (masquersousmenu) masquersousmenus();', 50);
    }
    var elements = menu.parentNode.getElementsByTagName('div');
    for (cpt = 0; cpt < elements.length; cpt++)
        if (elements[cpt].className == 'sous-menu') {
            elements[cpt].style.left = trouvergauche(menu.parentNode) - 2 + 'px';
            elements[cpt].style.top = trouverbas(menu.parentNode) - 16 + 'px';
            elements[cpt].style.width = menu.parentNode.offsetWidth - 1 + 'px';
            elements[cpt].onmouseover = function() { masquersousmenu = false; }
            elements[cpt].onmouseout = menu.onmouseout;
            elements[cpt].style.display = 'block';
        }
}

function trouverbas(element) { return trouverhaut(element) + element.offsetHeight; }

function trouvergauche(element) {
    gauche = 0;
    if (element.offsetParent) do gauche += element.offsetLeft; while (element = element.offsetParent);
    return gauche;
}

function trouverhaut(element) {
    haut = 0;
    if (element.offsetParent) do haut += element.offsetTop; while (element = element.offsetParent);
    return haut;
}


/** ###################### FONCTION JS INTERNE DKT #################### */
/**
 Permet de gerer le menu innovation
*/
function changeMenuInnovation(_elementIdMenu, _newImg) {
    var eltMenu = getElement(_elementIdMenu, true, "") ;
    if(eltMenu){
        eltMenu.style.background = "url("+ _newImg +") no-repeat";
    }
}

/*
    Desc : Permet d'afficher le produit suivant
    lorsque le produit actuel est le dernier, il affiche le premier produit
    sinon, on affiche le produit suivant
*/
function afficherproduitsuivant(nameconteneur, namebalise, nameelement, isModeAuto) {
    if(!isModeAuto){
        clearTimeout(timerZoomSur) ;
    }
    
    if (!indexproduitactuel) {
        indexproduitactuel =  1;
    }
    indexproduitactuel = indexproduitactuel + 1;
    if (indexproduitactuel < 1) {
        indexproduitactuel = indexdernierproduit;
    }
    if (indexproduitactuel > indexdernierproduit) {
        indexproduitactuel = 1;
    }
    afficherProduit(indexproduitactuel, nameconteneur, namebalise, nameelement);
}

/*
    Desc : Permet d'afficher le produit suivant
    lorsque le produit actuel est le premier, il affiche le dernier produit
    sinon, on affiche le produit suivant
*/
function afficherproduitprecedent(nameconteneur, namebalise, nameelement, isModeAuto) {
    if(!isModeAuto){
        clearTimeout(timerZoomSur) ;
    }
    
    if (!indexproduitactuel) {
        indexproduitactuel =  1;
    }
    indexproduitactuel = indexproduitactuel - 1;
    if (indexproduitactuel < 1) {
        indexproduitactuel = indexdernierproduit;
    }
    if (indexproduitactuel > indexdernierproduit) {
        indexproduitactuel = 1;
    }
    afficherProduit(indexproduitactuel, nameconteneur, namebalise, nameelement);
}

/*
    Desc : Permet de faire un defilement auto des produits "zoom sur"
*/
function afficherProduitAuto() {

    var nameconteneur = 'zoom' ;
    var namebalise = 'div' ;
    var nameelement = 'product' ;
        
    afficherproduitprecedent(nameconteneur, namebalise, nameelement, true) ;
    timerZoomSur = setTimeout('afficherProduitAuto();', 5000) ;
}

/*
    Desc : Permet d'afficher le produit en fonction du numero indique en parametre
    On fait disparaitre l ensemble des elements et on fait apparaitre celui souhaite
    Param : indexproduct : index du produit : 1 si l element a afficher est product1
    Param : nameconteneur : zoom par exemple, si les elements sont contenus dans un element dont l id est zoom
    Param : namebalise : div par exemple, si les elements s appellent product1, product2, ..., productn sont des div
    Param : nameelement : product par exemple, si les elements s appellent product1, product2, ..., productn
*/
function afficherProduit(indexproduct, nameconteneur, namebalise, nameelement) {
    if(getElement(nameconteneur)){
        // on recupere les elements div presents dans l element dont l id est zoom
        var elements = getElement(nameconteneur).getElementsByTagName(namebalise);
        
        // pour chaque element, on verifie que l element est bien un element desire
        // si c est le cas, on le fait disparaitre
        for (cpt = 0; cpt < elements.length; cpt++) {
            if (elements[cpt].id.indexOf(nameelement) > -1) {
                elements[cpt].style.display = 'none';
            }
        }
        // enfin pour l element que l on souhaite afficher
        // on affiche directement grace a son index
        var element = document.getElementById('product' + indexproduct);
        if (element) {
            element.style.display = 'block';
        }
    }
}

/*
    Desc : Permet de selectionner un lien dans le menu services
    Param : idMenu : id du menu services
    Param : namebalise : a par exemple, si les elements sont des liens
    Param : urlPageCourante : url de page actuelle
*/
function initialiseMenuServices(idMenu, namebalise, urlPageCourante) {
    if(getElement(idMenu) && urlPageCourante != ''){
        // on recupere les elements div presents dans l element dont l id est zoom
        var elements = getElement(idMenu).getElementsByTagName(namebalise);
        
        // pour chaque element, on verifie que l element est bien un element desire
        // si c est le cas, on le fait disparaitre
        for (cpt = 0; cpt < elements.length; cpt++) {
            if(elements[cpt].attributes["href"]){
                var hrefValue = elements[cpt].attributes["href"].nodeValue ;
                                
                if (hrefValue.indexOf(urlPageCourante) > -1) {
                    elements[cpt].className = "selectionne";
                }
            }
        }
    }
}

/**
 * Permet d'initialiser le plan du site
 * param : nbElementsParLigne : nb de blocs par ligne
 */
function initialisePlanSite(nbElementsParLigne) {
    // on recupere les elements div presents dans l element dont l id est bookmarks
    var blocliens = document.getElementById('bookmarks').getElementsByTagName('div');
    if (blocliens) {
        // pour chaque element, on verifie que l element est bien un element avec la classe souhaitee
        for (cpt = 0; cpt < blocliens.length; cpt++) {
            if (blocliens[cpt].className == 'bloc-lien') {
                // la taille maximale constatee pour un bloc de la ligne
                var maxRow = 0;
                // index du dernier element de la derniere ligne analysee
                var dernierIndex = -1;
                // pour chaque sous element, on verifie que l element est bien un element avec la classe souhaitee
                var sousblocliens = blocliens[cpt].getElementsByTagName('div');
                if (sousblocliens) {
                    for (j = 0; j < sousblocliens.length; j++) {
                        if (sousblocliens[j].className == 'sous-bloc-lien') {
                            // on verifie la taille du bloc en cours, on prend en compte sa taille maximale
                            var heightRow = sousblocliens[j].offsetHeight;
                            if (heightRow > maxRow) {
                                maxRow = heightRow;
                            }
                        }
                        // lorsque l element est le dernier d une ligne
                        if ((j != 0) && ((j+1) % nbElementsParLigne) == 0) {
                            // on enregistre cet element
                            dernierIndex = j;
                            var index = j;
                            // on traite les elements de la ligne
                            for ( ; index >= (j+1)-nbElementsParLigne; index--) {
                                sousblocliens[index].style.height = maxRow+"px";
                                sousblocliens[index].style.visibility = "visible";
                            }
                            // on réinitialise la taille maximale
                            maxRow = 0;
                        }
                        // traitement des elements de la derniere ligne (lorsque celle ci n est pas complete)
                        if ((j+1) == sousblocliens.length) {
                            var index = j;
                            for ( ; index >= dernierIndex+1 ; index--) {
                                sousblocliens[index].style.height = maxRow+"px";
                                sousblocliens[index].style.visibility = "visible";
                            }
                            // on réinitialise la taille maximale
                            maxRow = 0;
                        }
                    }
                }
            }
        }
    }
}


/**
 Permet d'inserer le menu conseils dans les pages "Fiche Conseil"
*/
function insertMenuConseils(_urlPageSommaire){
    var urlPageSommaire = _urlPageSommaire + "index.shtml" ;
    
    var func = function loadMenuConseils(xmlHttp, httpstatus){
        if(httpstatus == 200){
            var oHtmlDoc = xmlHttp.responseText ;
            if( oHtmlDoc == null) {
                return;
            } 
            else {
                try {
                    var menuConseilsObj = getElement("menuConseils") ;
                    
                    if(menuConseilsObj){
                        var menuConseilHtml = oHtmlDoc.split('<ul class="listeconseils">') ;
                        if(menuConseilHtml[1]){
                            menuConseilHtml = menuConseilHtml[1].split("</ul>")[0] ;
                            
                            menuConseilsObj.innerHTML = menuConseilHtml ;
                        }
                    }
                }
                catch(e){}
            }
        }
    }
    var ajaxProc = new IAjaxProcess(urlPageSommaire, func) ;
    ajaxProc.run() ;
    
    return true ;
}
