/* Librairie JAVASCRIPT
Copyright LMC France - www.lmcfrance.com */

function menu_roll(quel, sens) {

	var sousMenu = getObjectById(quel);
	var lienSousMenu = getObjectById('a'+quel);
	
	if(sousMenu != null) {
		if (sens) {
			sousMenu.style.left = (getElementCoords(lienSousMenu).left-29) + 'px';
			sousMenu.style.top = (20+getElementCoords(lienSousMenu).top) + 'px';
			sousMenu.style.display='block';
			lienSousMenu.style.backgroundColor = '#0099cc';
'on' ;
			//alert(lienSousMenu.className);
		}
		else {
			sousMenu.style.display='none';
			lienSousMenu.style.backgroundColor = '#33ccff';
		}
	}

}


/*****************************************************************
* Méthodes multi-navigateur de sélection d'un Element via son id
**/
function checkBrowser()
{	
	this.ver=navigator.appVersion;
	this.dom=document.getElementById?1:0;
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
	this.ie55=((this.ver.indexOf("MSIE 5.5")>-1 || this.ie6) && this.dom)?1:0;
	this.ie5=((this.ver.indexOf("MSIE 5")>-1 || this.ie5 || this.ie6) && this.dom)?1:0;
	this.ie4=(document.all && !this.dom)?1:0;
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.ie4plus=(this.ie6 || this.ie5 || this.ie4);
	this.ie5plus=(this.ie6 || this.ie5)
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns5);
	return this;
}
			
function getObjectById(ID) 
{
	var obj;
	var bw = new checkBrowser();
	if (bw.dom)
		return document.getElementById(ID);
	else if (bw.ie4)
		return document.all(ID);
	else if (bw.ns4)
		return eval('document.' + ID);
}

/**************************************************************
Permt d'obtenir les coordonnées absolues d'un élément */

function getCSSProperty(mixed, sProperty) {
    
    oNode = (typeof mixed == "object") ?  mixed : document.getElementById(mixed);
    
    if(document.defaultView) {
        return document.defaultView.getComputedStyle(oNode, null).getPropertyValue(sProperty);
    }
    else if(oNode.currentStyle) {
        sProperty = sProperty.replace(/\-(\w)/g, function(m,c){return c.toUpperCase();});
        return oNode.currentStyle[sProperty];
    }
    else {
        return null;
    }
}

/**
 * Retourne les coordonnées d'un élément pour Internet Explorer.
 */
function ieGetCoords(elt) {
    var coords = elt.getBoundingClientRect();

    var border = getCSSProperty(document.getElementsByTagName('HTML')[0], 'border-width');
    var border = (border == 'medium') ? 2 : parseInt(border);

    var coordsModif = {left : 0, top : 0 };
    coordsModif.left = coords.left + Math.max(elt.ownerDocument.documentElement.scrollLeft, elt.ownerDocument.body.scrollLeft) - border;
    coordsModif.top  = coords.top + Math.max(elt.ownerDocument.documentElement.scrollTop, elt.ownerDocument.body.scrollTop) - border;
    
    return coordsModif;
}

/** 
 * Retourne les coordonnées d'un élément sur une page en fonction de tous ses éléments parents.
 * 
 * @param objet element
 * @param objet eltRef (optionnel)
 * @return json coords = {left:x, top:x}
 */
function getElementCoords(element, eltReferant) {
    
    var coords = {left: 0, top: 0};
    
    // IE pour résoudre le problème des marges (IE comptabilise dans offsetLeft la propriété marginLeft).
    if (element.getBoundingClientRect && !(navigator.appName.indexOf("Netscape")>-1)) {
        
        coords = ieGetCoords(element);
        
        if (typeof(eltReferant) == 'object') {
            var coords2 = ieGetCoords(eltReferant);
            
            coords.left -= coords2.left;
            coords.top  -= coords2.top;
            
            coords2 = null;
        }
    }
    // Les autres : récursivité sur offsetParent.
    else {
        
        while (element) {
            
            if (/^table$/i.test(element.tagName) && element.getElementsByTagName('CAPTION').length == 1 && getCSSProperty(element, 'position').toLowerCase() == 'relative') {
                coords.top += element.getElementsByTagName('CAPTION')[0].offsetHeight;
            }
            
            coords.left += element.offsetLeft;
            coords.top  += element.offsetTop;
            element      = element.offsetParent;
            
            if (typeof(eltReferant) == 'object' && element === eltReferant) {
                break;
            }
        }
    }
    
    return coords;
}


