var IE6 = false, IE7 = false,
 FIREFOX2  = false, FIREFOX  = false,
 NETSCAPE7 = false, NETSCAPE = false,
 OPERA9 = false, OPERA = false,
 AUTRE = false;

var strChUserAgent = navigator.userAgent;
var intSplitStart = strChUserAgent.indexOf("(",0);
var intSplitEnd = strChUserAgent.indexOf(")",0);
var strChStart = strChUserAgent.substring(0,intSplitStart);
var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
var strChEnd = strChUserAgent.substring(strChEnd);

if(strChMid.indexOf("MSIE 7") != -1)
 IE7 = true;
else if(strChMid.indexOf("MSIE 6") != -1)
 IE6 = true;
else if(strChEnd.indexOf("Firefox/2") != -1)
 FIREFOX2 = true;
else if(strChEnd.indexOf("Firefox") != -1)
 FIREFOX = true;
else if(strChEnd.indexOf("Netscape/7") != -1)
 NETSCAPE7 = true;
else if(strChEnd.indexOf("Netscape") != -1)
 NETSCAPE = true;
else if(strChStart.indexOf("Opera/9") != -1)
 OPERA9 = true;
else if(strChStart.indexOf("Opera") != -1)
 OPERA = true;
else
 AUTRE = true;


function urlencode(data) {
    return escape(data);
}

function urldecode(data) {
    return unescape(data.replace(/\+/g,  " "));
}

function getLeft(l){
  if (l.offsetParent) return (l.offsetLeft + getLeft(l.offsetParent));
  else return (l.offsetLeft);
}
function getTop(l){
  if (l.offsetParent) return (l.offsetTop + getTop(l.offsetParent));
  else return (l.offsetTop);
}

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/-/g, "\-");
    var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

function showDef(idDef, spanTerm){
    var divDef = document.getElementById(idDef);
	var scrX = document.body.clientWidth;
    var scrY = document.body.clientHeight;
	
	divDef.className = "DefGlosToolTip";
	var decal = ((typeof(window.pageYOffset) != "undefined") ? window.pageYOffset : document.body ? (document.body.scrollTop || 0): 0);
	var block = getTop(spanTerm)-decal+divDef.clientHeight;

	divDef.style.left = getLeft(spanTerm) + 32;
	divDef.style.top  = (block < (scrY-16) ? getTop(spanTerm) : getTop(spanTerm) - (block-(scrY-16))) + 8;
	
	spanTerm.onmouseout = function(){ hideDef(idDef); };
}

function hideDef(idDef){
	document.getElementById(idDef).className = "DefGlosToolTipInvisible";
}

function getParentBgcolor(elem){
    var bgColor = (IE6 || IE7) ? elem.parentNode.currentStyle.backgroundColor : document.defaultView.getComputedStyle(elem.parentNode, '').getPropertyValue("background-color");    
    return (bgColor == "transparent") ? getParentBgcolor(elem.parentNode) : bgColor;
}

function strColorToRgb(strColor){
    var rgb = new Object();
    rgb.r = 0;
    rgb.g = 0;
    rgb.b = 0;
    
    if(strColor.substr(0,1) == "#"){
        rgb.r = parseInt(strColor.substr(1,2), 16);
        rgb.g = parseInt(strColor.substr(3,2), 16);
        rgb.b = parseInt(strColor.substr(5,2), 16);
    }
    if(strColor.substr(0,4) == "rgb("){
        strColor = strColor.substr(4,strColor.indexOf(")")-4);
        rgb.r = parseInt(strColor.split(",")[0], 10);
        rgb.g = parseInt(strColor.split(",")[1], 10);
        rgb.b = parseInt(strColor.split(",")[2], 10);
    }
    return rgb;
}

function rgbColorToStr(rgbColor){
    return "#" + rgbColor.r.toString(16) + rgbColor.g.toString(16) + rgbColor.b.toString(16);
}

function highlightTerms(){
    var offset = 20;
    var terms = getElementsByClassName(document.getElementsByTagName("body")[0], "span", "TermeGlossaire");
    for(var i=0; i<terms.length; i++){
        var bgColor = strColorToRgb(getParentBgcolor(terms[i]));
        bgColor.r += (0xff-bgColor.r > offset ? offset : (0xff-bgColor.r)/2);
        bgColor.g += (0xff-bgColor.g > offset ? offset : (0xff-bgColor.g)/2);
        bgColor.b += (0xff-bgColor.b > offset ? offset : (0xff-bgColor.b)/2);
        terms[i].style.backgroundColor = rgbColorToStr(bgColor);
    }
}




