Number.prototype.InRange=function(sR,eR,exc) {if((typeof(sR)!="number")||(typeof(eR)!="number")||(sR>eR)) return false;var c=(exc && (this>sR))?true:(!exc && (this>=sR))?true:false;if (!c) return false;var c=(exc && (this<eR))?true:(!exc && (this<=eR))?true:false;if (!c) return false;return true;};
Number.prototype.IsUShort=function() {if((this<0)||(this>65535)) return false;return true;};
Number.prototype.IsShort=function() {if((this<-32768)||(this>32767)) return false;return true;};
Number.prototype.IsInt=function() {if((this<-2147483648)||(this>2147483647)) return false;return true;};
String.prototype.Trim = function() {return this.replace(/^\s+|\s+$/g,"");};
String.prototype.LTrim = function() {return this.replace(/^\s+/,"");};
String.prototype.RTrim = function() {return this.replace(/\s+$/,"");};
String.prototype.StartsWith = function(txt,ics) {var rgx=(ics===true)?new RegExp("^"+txt,"i"):new RegExp("^"+txt);return this.match(rgx)!=null;}
String.prototype.EndsWith = function(txt,ics) {var rgx=(ics===true)?new RegExp(txt+"$","i"):new RegExp(txt+"$");return this.match(rgx)!=null; }
function AddListener(el, evType, handle){if(el.addEventListener)el.addEventListener(evType,handle,false);else if(el.attachEvent){el["e"+evType+handle]=handle;el[evType+handle]=function(){el["e"+evType+handle](window.event)};el.attachEvent("on" + evType, el[evType + handle]);};};
function RemoveListener(el,evType,handle){
    if(el.removeEventListener) 
    {
        try {
            el.removeEventListener(evType, handle, false);
        }
        catch(e) {}
    }
    else if(el.detachEvent){
        if(!IsNull(el[evType+handle])) {
            el.detachEvent("on"+evType,el[evType+handle]);
            el[evType+handle]=null;
            el["e"+evType+handle]=null;
        }
   };};
Browser =function() {
    var mX=0;var mY=0;
    //Gestionnaire pour l'événement mousemove permettant de récupérer la position de la souris dans la page
    function MouseMoveHandler(e){var eo=e||window.event; if(eo.pageX||eo.pageY){mX=eo.pageX;mY=eo.pageY;} else if((eo!=null)&&(document.body!=null)) {mX=eo.clientX+document.body.scrollLeft-document.body.clientLeft;mY=eo.clientY+document.body.scrollTop-document.body.clientTop;}};
    //Fonctions de récupération de la position de la souris
    this.GetMouseX=function() {return mX;};this.GetMouseY=function() {return mY;};        
    AddListener(document,"mousemove",MouseMoveHandler);
    //Fonctions de récupération de la taille de la fenêtre "utile" du navigateur
    this.GetWidth=function() {if(window.innerWidth) return parseInt(window.innerWidth); else if(document.documentElement && document.documentElement.clientWidth) return parseInt(document.documentElement.clientWidth); else if(document.body && document.body.clientWidth) return parseInt(document.body.clientWidth); else return 0;};
    this.GetHeight = function(){if(window.innerHeight) return parseInt(window.innerHeight); if(document.documentElement && document.documentElement.clientHeight) return parseInt(document.documentElement.clientHeight); if(document.body && document.body.clientHeight) return parseInt(document.body.clientHeight); else return 0;};
    //Fonctions de récupération de la position du scroller
    this.GetScrollX=function() {if(typeof(window.pageXOffset)=="number") return window.pageXOffset; else if(document.body && document.body.scrollLeft) return document.body.scrollLeft; else if(document.documentElement && document.documentElement.scrollLeft) return document.documentElement.scrollLeft; return 0;};        
    this.GetScrollY=function() {if(typeof(window.pageYOffset)=="number") return window.pageYOffset; else if(document.body && document.body.scrollTop) return document.body.scrollTop; else if(document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop; return 0;};
    
};
Browser = new Browser();
IsNull=function(ex) {if((ex==null)||(ex==window.undefined)) return true;return false;};
INES=function(ex) {if((typeof(ex)!="string")||(ex.length<=0)) return true;return false;};    
DomHelper = {
    GetMaxDepth:function(domElt) {
        mxd=1;
        function ParseChildNodes(nodes) {
            for(var node in nodes) {
                ns=node.style;
                if(!IsNull(ns) && ns.zIndex) {
                    mxd_t=parseInt(ns.zIndex);
                    if(mxd_t>mxd) mxd=mxd_t;
                }
                if(node.childNodes) ParseChildNodes(node.childNodes);
            }
       }
       if(IsNull(domElt)) domElt = document.getElementsByTagName("body")[0];
       if(domElt.style && domElt.style.zIndex) mxd=parseInt(domElt.style.zIndex);
       if(domElt.childNodes) ParseChildNodes(domElt.childNodes);
       return mxd;
    },
    GetAbsoluteY:function(domElt) {if (!IsNull(domElt)) {var curtop = 0;if (domElt.offsetParent) {do {curtop += domElt.offsetTop;} while (domElt = domElt.offsetParent);} return curtop;} return 0;},
    GetAbsoluteX:function(domElt) {if (!IsNull(domElt)) {var curleft = 0;if (domElt.offsetParent) { do {curleft += domElt.offsetLeft;} while (domElt = domElt.offsetParent);} return curleft;} return 0;},
    Visible:function(domElt,visible) {if(domElt && domElt.style) {domElt.style.visibility = (visible!==false)?"visible":"hidden";}},
    Display:function(domElt,displayed) {if(domElt && domElt.style) {domElt.style.display = (visible!==false)?"block":"none";}},
    GetWidth:function(domElt) {if(!IsNull(domElt) && !IsNull(domElt.offsetWidth)) return parseInt(domElt.offsetWidth);return 0;},
    GetHeight:function(domElt) {if(!IsNull(domElt) && !IsNull(domElt.offsetHeight)) return parseInt(domElt.offsetHeight);return 0;},
    IsFormElt:function(domElt) {if(domElt==null) return false;switch(domElt.nodeName.toLowerCase()) {case "select":return "select";case "input":return "input";case "button":return "button";case "textarea":return "textarea";} return false;},
    SetOpacity:function(domElt,opacity) {if(!IsNull(domElt) && (typeof(opacity)=="number" && opacity.InRange(0,100))) {domElt.opacity=(opacity==100)?99.999:opacity;domElt.style.filter="alpha(opacity:"+opacity+")";domElt.style.KHTMLOpacity=opacity/100;domElt.style.MozOpacity=opacity/100;domElt.style.opacity=opacity/100;}},
    GetStyle:function(domElt, styleEltName)
    {
      var sValue = "";
      if (document.defaultView && document.defaultView.getComputedStyle)
      {
        sValue = document.defaultView.getComputedStyle(domElt, "").getPropertyValue(styleEltName);
      }
      else if (domElt.currentStyle)
      {
        styleEltName = styleEltName.replace(/\-(\w)/g, function(sMatch, p1){ return p1.toUpperCase(); } );
        sValue = domElt.currentStyle[styleEltName];
      }
      return sValue;
    },
    DisablePage:function(bool,settings) {
        function SetDisablayingLayerSize() {
            if(!IsNull(dlayer)) {                
                dlayer.style.width = /*(Browser.IsIE)?Browser.GetWidth()+"px":*/"100%";
                dlayer.style.height=Browser.GetHeight()+"px";
            }
        }
        function SetDisablyingLayerPosition() {if(!IsNull(dlayer)) {dlayer.style.top = Browser.GetScrollY()+"px";dlayer.style.left = Browser.GetScrollX()+"px";}};
        var body = document.getElementsByTagName("body")[0];
        dlayerId = body.getAttribute("disablyingLayer");
        if(IsNull(dlayerId)) dlayerId = "dlayer_"+(Math.random()*Math.random()).toString().replace("0.","");
        var dlayer = document.getElementById(dlayerId);
        if(bool === true)
        {
            if(IsNull(dlayer)) 
            {
                dlayer = document.createElement("div");
                dlayer.setAttribute("id",dlayerId);
                body.appendChild(dlayer);
            }    
            dlayer.style.position="absolute";
            dlayer.style.zIndex = (!IsNull(settings) && !INES(settings["Depth"]))?parseInt(settings["Depth"]):1000000;
            DomHelper.SetOpacity(dlayer,(!IsNull(settings) && !IsNull(settings["Opacity"]))?settings["Opacity"]:50);
            dlayer.style.backgroundColor=(!IsNull(settings) && !INES(settings["Color"]))?settings["Color"]:"#000";
            dlayer.style.display = "block";
            SetDisablyingLayerPosition();
            SetDisablayingLayerSize();
            AddListener(window,"resize",SetDisablayingLayerSize);
            AddListener(window,"scroll",SetDisablyingLayerPosition);
            document.getElementsByTagName("body")[0].setAttribute("disablyingLayer",dlayerId);
        }
        else if(bool === false)
        {
            if(!IsNull(dlayer)) body.removeChild(dlayer); 
            body.removeAttribute("disablyingLayer");      
            RemoveListener(window,"resize",SetDisablayingLayerSize);
            RemoveListener(window,"scroll",SetDisablyingLayerPosition);                
        }
    }
}