/***** JS Common fonctions *****/

    /* Novigator detection */
    var agent_ie6 = false, agent_ie7 = false,
     agent_firefox2  = false, agent_firefox  = false,
     agent_netscape7 = false, agent_netscape = false, 
     agent_opera9 = false, agent_opera = false, 
     agent_other = 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)
     agent_ie7 = true;
    else if(strChMid.indexOf("MSIE 6") != -1)
     agent_ie6 = true;
    else if(strChEnd.indexOf("Firefox/2") != -1)
     agent_firefox2 = true;
    else if(strChEnd.indexOf("Firefox") != -1)
     agent_firefox = true;
    else if(strChEnd.indexOf("Netscape/7") != -1)
     agent_netscape7 = true;
    else if(strChEnd.indexOf("Netscape") != -1)
     agent_netscape = true;
    else if(strChStart.indexOf("Opera/9") != -1)
     agent_opera9 = true;
    else if(strChStart.indexOf("Opera") != -1)
     agent_opera = true;
    else
     agent_other = true;

    // global navigator differentiation
    var ie=document.all;
    var nn6=document.getElementById&&!document.all;
    
    /* String fonctions */
	function trimStr(str) {
		str = this != window? this : str;
		return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
	}
	
	function breakHtmlToStr(str) {
		str = this != window? this : str;
		return str.replace(/<br>/gi,'\n').replace(/\n[ ]+/gi, '\n').replace(/[ ]+\n/gi, '\n');
	}
	
	function breakStrToHtml(str) {
		str = this != window? this : str;
		return str.replace(/\n/gi,'<br>');
	}
	
    /* AJAX fonctions */
    function ajaxReq(file)
    {
        if(window.XMLHttpRequest) // FIREFOX
            xhr_object = new XMLHttpRequest(); 
        else if(window.ActiveXObject) // IE
            xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
        else 
            return(false); 
            
        xhr_object.open("GET", file, false);
        xhr_object.send(null); 
        if(xhr_object.readyState == 4) return(xhr_object.responseXML);
        else return(false);
    }
    
    function ajaxReqText(file)
    {
        if(window.XMLHttpRequest) // FIREFOX
            xhr_object = new XMLHttpRequest(); 
        else if(window.ActiveXObject) // IE
            xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
        else 
            return(false); 
            
        xhr_object.open("GET", file, false);
        xhr_object.send(null); 
        if(xhr_object.readyState == 4) return(xhr_object.responseText);
        else return(false);
    }
    
    /* Localisation fonctions */
    function mouseX(e) {
        x = nn6 ? e.clientX : event.clientX;
        x = x + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
        return x;
    }
    function mouseY(e) {
        y = nn6 ? e.clientY : event.clientY;
        y = y + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
        return y;
    }

    function total_offsetTop(obj) {
        var total = obj.offsetTop;
        obj = obj.offsetParent
        
        while(obj) {
            total += obj.offsetTop;
            obj = obj.offsetParent;
        }
        
        return total;
    }
    
    function total_offsetLeft(obj) {
        var total = obj.offsetLeft;
        obj = obj.offsetParent
        
        while(obj) {
            total += obj.offsetLeft;
            obj = obj.offsetParent;
        }
        
        return total;
    }