﻿// JScript File
// Written for BFD SA, by Jerome Lacambra 
// Version : 1.0.4
//
var gbIE = navigator.userAgent.indexOf("MSIE") >=0 ? true : false;
var gcnMAXDIVSSMENU = 4;
var gnDivSsMenuPrec = -1;
//---showDivSsMenu---//
function showDivSsMenu(p_oEvent, p_nMenu){
    if(document.getElementById("divssmenu"+p_nMenu)!=null){
        if(p_nMenu==0){
            if((document.getElementById("divssmenu"+p_nMenu).style.height != null) && (!isNaN(document.getElementById("divssmenu"+p_nMenu).style.height)))
                document.getElementById("divssmenu"+p_nMenu).style.height = document.documentElement.clientHeight;
            document.getElementById("divssmenu"+p_nMenu).style.visibility = "visible";
            return true;
        }
        
        //Cache le divssmenu précédemment affiché
        if(gnDivSsMenuPrec !=-1)
            document.getElementById("divssmenu"+gnDivSsMenuPrec).style.visibility = "hidden";
    
        //Calcule la position du divssmenu    
        //nTop : position sur l'axe Y
        //nLeft : position sur l'axe X
        var nTop, nLeft;
        
        if(!p_oEvent){
            //Cas IE
            p_oEvent =window.event;
        }
        
        if(p_oEvent.x !=null){//Cas IE
            //nHeight = la hauteur de l'élément qui a émis l'évènement
            var nHeight = p_oEvent.srcElement.offsetHeight -2;
            nTop = p_oEvent.y - p_oEvent.offsetY + nHeight;
            nLeft = p_oEvent.x - p_oEvent.offsetX - 2;
        }
        else{
            //target permet d'obtenir l'objet qui a émis l'évènement
            //p_oEvent.target = TD
            //p_oEvent.target.offsetParent = TABLE
            //offsetLeft = le nombre de pixel du bord gauche par rapport au parent
            //offsetTop = le nombre de pixel du bord haut par rapport au parent
            var oElt =p_oEvent.target.offsetParent;
            var nVal =0;
            var bContinue =true;
            
            //On remonte jusqu'au BODY pour avoir l'emplacement en nombre de pixel du bord haut de chaque élément 
            //depuis notre cellule qui a émis l'évènement
            while(bContinue){
                //parseInt transforme une string en nombre en base indiquée, soit 10 ici.
                nVal += parseInt(oElt.offsetTop, 10);
                if((oElt.tagName =="BODY") || (oElt==null))
                    //On est au niveau du BODY alors on arrête
                    bContinue = false;
                else
                    //Sinon on prend le parent
                    oElt =oElt.offsetParent;
            }

            //nTop =
            // nVal : la valeur calculée précédemment, soit le total des bords haut de chaque parent depuis le body jusqu'à la cellule
            // + p_oEvent.target.offsetTop : le bord haut de la cellule par rapport à son parent
            // + p_oEvent.target.clientHeight : la hauteur de la cellule
            //Ceci nous permet de placer le divssmenu juste en dessous du divHeader
            nTop = nVal + p_oEvent.target.offsetTop + p_oEvent.target.clientHeight;

            //nLeft =
            // p_oEvent.target.offsetLeft : le bord gauche de la cellule par rapport à son parent(TABLE) 
            // + p_oEvent.target.offsetParent.offsetLeft : le bord gauche de la table par rapport au body
            // + nVal : l'espacement entre les cellules
            nVal = parseInt(p_oEvent.target.offsetParent.getAttribute("cellspacing"), 10);
            nLeft = p_oEvent.target.offsetLeft + p_oEvent.target.offsetParent.offsetLeft + nVal;
        }

        if(document.getElementById("divssmenu"+p_nMenu).style.posTop != null){//Cas IE
            //Prise en compte de la nouvelle valeur dûe aux éventuelles barres de défilement
            nTop += document.documentElement.scrollTop;
            nLeft += document.documentElement.scrollLeft;
            document.getElementById("divssmenu"+p_nMenu).style.posTop = nTop;
            document.getElementById("divssmenu"+p_nMenu).style.posLeft = nLeft;
        }
        else{
            document.getElementById("divssmenu"+p_nMenu).style.top = nTop +"px";
            document.getElementById("divssmenu"+p_nMenu).style.left = nLeft +"px";
        }
        document.getElementById("divssmenu"+p_nMenu).style.visibility = "visible";
        
        gnDivSsMenuPrec = p_nMenu;
    }
}
//---hideDivSsMenu---//
function hideDivSsMenu(){
    if(document.getElementById("divssmenu0")!=null)
        document.getElementById("divssmenu0").style.visibility="hidden";
    if(gnDivSsMenuPrec!=-1){
        if(document.getElementById("divssmenu"+gnDivSsMenuPrec)!=null)
            document.getElementById("divssmenu"+gnDivSsMenuPrec).style.visibility="hidden";
    }
}
