function ClientLogger(config) {
    var _handlerUrl = config.handlerUrl; var _sessionID = config.sessionID; var _xmlHttp; function Log(message, url, line)
    { var data = "jsmessage=" + encodeURIComponent(message); data += "&jsurl=" + encodeURIComponent(url); data += "&jsline=" + encodeURIComponent(line); data += "&pageurl=" + encodeURIComponent(location.href); data += "&useragent=" + encodeURIComponent(navigator.userAgent); _Callback(_handlerUrl, null, data); }; function _AbortCallback() {
        if (_xmlHttp && _xmlHttp.readyState != 0)
        { _xmlHttp.onreadystatechange = function() { }; _xmlHttp.abort(); } 
    }; function _Callback(url, changeEvent, formData)
    { _AbortCallback(); var method = (formData) ? "POST" : "GET"; _xmlHttp = _GetXmlHttp(); _xmlHttp.onreadystatechange = changeEvent || function() { }; _xmlHttp.open(method, url, true); _xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); _xmlHttp.setRequestHeader("ClientLogger", "true"); _xmlHttp.send(formData); }; function _GetXmlHttp() {
        var a = null; try { a = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch (e) {
            try { a = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (oc) { } 
        }
        if (!a && typeof XMLHttpRequest != "undefined") { a = new XMLHttpRequest(); }
        return a;
    }; this.Log = Log; return this;
};