//  PC-Kiim2008-Engine.js Release 1.00
//  For KIIM2008 engine (http://www.kiim.info/)
//  To be used under a commercial license only.
//  Copyright (c) 1999-2010 Les éditions plaisirs de la connaissance inc.

var cData = "";
var ua = navigator.userAgent.toLowerCase();
var xmlhttp = "";
var kF = new Array();

function KiimAjaxMessage(obj, method, args) {
    if (kF.length > 0) {
        kF.splice(0, kF.length);
    }
    var kmAjaxMsg = new Object();
    kmAjaxMsg.grid = kmGridId;
    kmAjaxMsg.datakey = kmKey;
    kmAjaxMsg.method = method;
    kmAjaxMsg.sourceid = kmCache.cId;
    kmAjaxMsg.oldvalue = "<![CDATA[" + kmCache.cValue + "]]>";
    kmAjaxMsg.newvalue = "<![CDATA[" + args + "]]>";
    kF.push('<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>');
    kF.push('<arguments xmlns:tns=\"http:\/\/www.kiim.info\/ajax\/">');
    kF.push(KiimAjaxXml(kmAjaxMsg));
    kF.push('</arguments>');
    return kF.join('');
}
function KiimAjaxXml(data) {
    var str = "";
    var i;
    for (i in data) {
        str += "<" + i + ">" + kmStripUnicode(data[i]) + "</" + i + ">";
    }
    return str;
}
function KiimRPC(method, httpmethod, sdata, mode, loadtype, ctx) {
    //method = methodname
    //httpmethod = GET/POST/SOAP
    //sdata = String/Soap Message
    //mode  = XML/TEXT
    //loadtype = 0 synchronous / 1 asynchronous
    //ctx = Any data pertinent to the call

    xmlhttp = KiimRPCInit();
    switch (httpmethod.toUpperCase()) {
        case "GET":
            if (loadtype == "0") {
                xmlhttp.open("GET", soapHref, false);
            }
            else {
                xmlhttp.open("GET", soapHref, true);
            }
            xmlhttp.setRequestHeader("Content-Type", "text/plain");
            xmlhttp.setRequestHeader("Charset", "ISO-8859-1");
            xmlhttp.setRequestHeader("User-Agent", "XMLHTTP/1.0");
            break;
        case "SOAP":
            if (loadtype == "0") {
                xmlhttp.open("POST", soapHref, false);
            }
            else {
                xmlhttp.open("POST", soapHref, true);
            }
            if (ua.indexOf("mac os x") > -1) {
                xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            }
            else {
                xmlhttp.setRequestHeader("Content-Type", "text/XML; Charset=utf-8");
            }
            xmlhttp.setRequestHeader("SOAPAction", baseSoapXMLns + method);
            xmlhttp.setRequestHeader("User-Agent", "XMLHTTP/1.0");
            break;
        case "POST":
            if (loadtype == "0") {
                xmlhttp.open("POST", soapHref, false);
            }
            else {
                xmlhttp.open("POST", soapHref, true);
            }
            xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlhttp.setRequestHeader("Content-Type", "text/XML; Charset=utf-8");
            break;
        default:
            xmlhttp.open("GET", soapHref, true);
            xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=iso-8859-1");
            xmlhttp.setRequestHeader("User-Agent", "XMLHTTP/1.0");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {

            if (xmlhttp.status == "200") {

                if (mode.toUpperCase() == "XML") {

                    top.KiimRPCXml(xmlhttp.responseXML, ctx);
                }
                else {
                    top.KiimRPCText(xmlhttp.responseText, sdata, ctx);
                }
            }
            else {
                top.KiimRPCAlert("There was a problem retrieving the XML data: " + xmlhttp.statusText);
            }
        }
    };
    try {
        if (httpmethod.toUpperCase() == "GET") {
            if (ua.indexOf("mac os x") > -1) {
                xmlhttp.send(null);
            }
            else {
                xmlhttp.send();
            }
        }
        else {
            if (ua.indexOf("mac os x") > -1) {
                sdata = 'message=' + escape(sdata);
            }
            xmlhttp.send(sdata);
        }
    }
    catch (e) {
        top.KiimRPCAlert("There was a problem sending the data...");
    }
    return;
}
function KiimRPCAlert(msg) {
    alert(msg);
    return true;
}
function KiimRPCDelete() {
    delete xmlhttp;
    delete RPCobj;
    return true;
}
function KiimRPCCallback(dat, str, ctx) {

    if (ua.indexOf("windows") > -1) {
        var scriptTag = document.getElementById('JSCallback');
        var head = document.getElementsByTagName('head').item(0);
        if (scriptTag) {
            head.removeChild(scriptTag);
        }
        script = document.createElement('script');
        script.setAttribute('id', 'JSCallback');
        if (ua.indexOf("windows") > -1) {
            script.setAttribute('type', 'text/javascript');
            if (dat != "null") {
                script.text = dat + str;
            }
            else {
                script.text = str;
            }
        }
        head.appendChild(script);
    }
    if (ua.indexOf("mac os x") > -1) {
        if (typeof window.frames["macCache"] == "undefined") {
            KiimMacIFrame();
            macIFrame = window.frames["macCache"];
        }
        if (dat == "null") {
            dat = "";
        }
        if (str == "null") {
            str = "";
        }
        var objMacDoc = (macIFrame.contentDocument) ? macIFrame.contentDocument : (macIFrame.contentWindow) ? macIFrame.contentWindow.document : (window.frames && window.frames['macCache']) ? window.frames['macCache'].document : (macIFrame.document) ? macIFrame.document : null;
        objMacDoc.clear();
        objMacDoc.open();
        objMacDoc.write('<scr' + 'ipt defer="defer" type="text/javascript" id="JSCallback">');
        objMacDoc.write(dat + str);
        objMacDoc.write('<\/scr' + 'ipt>\n');
        objMacDoc.close();
    }
    return;
}
function KiimMacIFrame() {
    var tempIFrame = document.createElement('iframe');
    tempIFrame.setAttribute('id', 'macCache');
    tempIFrame.setAttribute('name', 'macCache');
    tempIFrame.setAttribute('src', 'blank.asp?id=newframe');
    tempIFrame.style.border = '0px';
    tempIFrame.style.width = '0px';
    tempIFrame.style.height = '0px';
    document.body.appendChild(tempIFrame);
    return;
}
function KiimRPCInit() {
    if (window.XMLHttpRequest) {
        RPCobj = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        try {
            RPCobj = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) { }
    }
    return RPCobj;
}
function KiimRPCXml(xmlDoc, ctx) {
    var callback = "";
    method = xmlDoc.documentElement.childNodes;
    if (method.item(0).firstChild.nodeName == "SOAP-ENV:Fault") {
        var mFaultCode = xmlDoc.getElementsByTagName("faultcode")[0].firstChild.nodeValue;
        var mFaultString = xmlDoc.getElementsByTagName("faultstring")[0].firstChild.nodeValue;
        callback = xmlDoc.getElementsByTagName("callback")[0].firstChild.nodeValue;
        if (mFaultString != "null") {
            KiimRPCAlert(mFaultString);
        }
        if (callback != "null") {
            KiimRPCCallback("null", callback, ctx);
        }
    }
    else {
        var js = xmlDoc.getElementsByTagName("js")[0].firstChild.nodeValue;
        var data = xmlDoc.getElementsByTagName("data")[0].firstChild.nodeValue;
        callback = xmlDoc.getElementsByTagName("callback")[0].firstChild.nodeValue;
        var cData = xmlDoc.documentElement.firstChild.firstChild.lastChild.lastChild.firstChild;
        if (callback != "null") {
            KiimRPCCallback(js, callback, ctx);
        }
    }
    KiimRPCDelete();
    return true;
}
function KiimRPCText(str, sdiv, ctx) {
    try {
        document.getElementById("" + sdiv + "").innerHTML = str;
    }
    catch (e) { }
    KiimRPCDelete();
    return true;
}
// Utils
function KiimStripUnicode(s) {
    o = "";
    for (m = 0; s.charAt(m); ++m) {
        if ((c = s.charCodeAt(m)) < 128 && c != 38) {
            o += s.charAt(m);
        }
        else if (c == 38) {
            o += "&";
        }
        else {
            o += "&#" + c + ";";
        }
    }
    return o;
}
// Soap Objects
function KiimSoapCredentials(licence, userdomain, userenv, username, userpassword, timestamp, usertoken) {
    this.licence = licence || 0;
    this.userdomain = userdomain || "Kiim";
    this.userenv = userenv;
    this.username = userpassword;
    this.userpassword = userpassword;
    this.timestamp = timestamp || Date();
    this.usertoken = usertoken;
    return this;
}
function KiimSoapMessage(methodname) {
    this.method = methodname || "listMethods";
    this.params = [];
    return this;
}
KiimSoapMessage.doStructXML = function (data) {
    var str = "";
    var i;
    for (i in data) {
        str += "<tns:" + i + ">" + KiimStripUnicode(data[i]) + "</tns:" + i + ">";
    }
    return str;
};
KiimSoapMessage.prototype.addParameter = function (data) {
    if (arguments.length === 0) {
        return;
    }
    this.params[this.params.length] = data;
};
KiimSoapMessage.prototype.setMethod = function (methodName) {
    if (!methodName) {
        return;
    }
    this.method = methodName;
};
KiimSoapMessage.prototype.xml = function () {
    var method = this.method;
    var xml = "";
    var i;
    var stri;
    xml += '<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>';
    xml += '<!--Request From KIIM 2008 SOAP Client Version 12.0 - Revision 2008-03-18 Copyright 1999-2008 Les &Eacute;ditions Plaisirs De La Connaissance Inc.-->';
    xml += '<soap:Envelope xmlns:soap="http:\/\/schemas.xmlsoap.org\/soap/envelope\/" xmlns:xsi="http:\/\/www.w3.org\/2001\/XMLSchema-instance" xmlns:xsd="http:\/\/www.w3.org\/2001\/XMLSchema" xmlns:tns="http:\/\/www.kiim.info\/soap\/">';
    xml += '<soap:Header>';
    xml += '<tns:KiimSoapCredentials>';
    xml += KiimSoapMessage.doStructXML(this.params[0]);
    xml += '<\/tns:KiimSoapCredentials>';
    xml += '<\/soap:Header>';
    xml += '<soap:Body>';
    xml += '<tns:' + method + '>';
    xml += KiimSoapMessage.doStructXML(this.params[1]);
    xml += '<\/tns:' + method + '>';
    xml += '<\/soap:Body>';
    xml += '<\/soap:Envelope>';
    return xml;
};
KiimSoapMessage.prototype.xml2 = function () {
    var method = this.method;
    var xml = "";
    var i;
    var stri;
    xml += '{';
    xml += KiimSoapMessage.doStructXML2(this.params[0]);

    xml += KiimSoapMessage.doStructXML2(this.params[1]);
    xml += '}';
    return xml;
};

KiimSoapMessage.doStructXML2 = function (data) {
    var str = "";
    var i;
    //str += '"' + i +'":' + KiimStripUnicode(data[i]) +'"';
    for (i in data) {
        str += "\"" + i + "\":\"" + KiimStripUnicode(data[i]) + "\"";
    }
    return str;
};

/* Kiim2008.js */

var kmMpWorkspaceH = 0;
var kmMpHeaderAdSpace = 0;
var kmMpMenuBar = 0;
var kmUa = navigator.userAgent.toLowerCase();
var kmState = 'none';

if (!document.all) {
    HTMLElement.prototype.click = function () {
        var evt = this.ownerDocument.createEvent('MouseEvents');
        evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
        this.dispatchEvent(evt);
    };
}
function kmDisableEnter(e) {
    var key;
    if (window.event) {
        try {
            key = window.event.keycode;
        }
        catch (e) {
            key = e.charCode;
        }
    }
    else {
        key = e.which;
    }
    if (kmUa.indexOf("safari") !== 0) {
        key = e.charCode;
    }
    if (key == 13) {
        return false;
    }
    else {
        return true;
    }
}
function kmCenterPopUp(mypage, myname, w, h, scroll, lbl, col) {
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - h) / 2;
    winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable=yes';
    win = window.open(mypage, myname, winprops);
    if (parseInt(navigator.appVersion) >= 4) {
        win.window.focus();
    }
    return;
}

function kmGetElementLeft(e) {
    var nLeftPos = e.offsetLeft;
    var eParElement = e.offsetParent;
    while (eParElement !== null) {
        nLeftPos += eParElement.offsetLeft;
        eParElement = eParElement.offsetParent;
    }
    return nLeftPos;
}
function kmGetElementTop(e) {
    var nTopPos = e.offsetTop;
    var eParElement = e.offsetParent;
    while (eParElement !== null) {
        nTopPos += eParElement.offsetTop;
        eParElement = eParElement.offsetParent;
    }
    return nTopPos;

}
function kmFormatDecimal(expr, decplaces) {
    var re = new RegExp(',');
    var sformat = expr.replace(re, '.');
    var str = "" + Math.round(eval(sformat) * Math.pow(10, decplaces));
    while (str.length <= decplaces) {
        str = "0" + str;
    }
    var decpoint = str.length - decplaces;
    return str.substring(0, decpoint) + "." + str.substring(decpoint, str.length);
}
function kmGPS(obj) {
    kmCache.cId = obj.id;
    kmCache.cName = obj.name;
    try {
        if (typeof obj.value == "undefined") {
            kmCache.cValue = obj.innerHTML;
        }
        else {
            kmCache.cValue = obj.value;
        }
    }
    catch (e) {
        kmCache.cValue = obj.innerHTML;
    }
    kmCache.cTabIndex = obj.tabIndex;
    kmCache.cClass = document.getElementById("" + obj.id + "").className;
    kmCache.cX = kmGetElementLeft(obj);
    kmCache.cY = kmGetElementTop(obj);
    return;
}
function kmGetW() {
    var w;
    if (document.innerWidth) {
        w = document.innerWidth;
    }
    else if (document.documentElement.clientWidth) {
        w = document.documentElement.clientWidth;
    }
    else if (document.body) {
        w = document.body.clientWidth;
    }
    return w;
}
function kmGetH() {
    var h;
    if (document.innerHeight) {
        h = document.innerHeight;
    }
    else if (document.documentElement.clientHeight) {
        h = document.documentElement.clientHeight;
    }
    else if (document.body) {
        h = document.body.clientHeight;
    }
    return h;

}
function kmLeft(str, n) {
    if (n <= 0) {
        return "";
    }
    else {
        if (n > String(str).length) {
            return str;
        }
        else {
            return String(str).substring(0, n);
        }
    }
}
function kmObject(a, b, c, d, e, f, g, h, i, j, k, l) {
    this.cClass = a || "";
    this.cId = b || "";
    this.cName = c || "";
    this.cRecCount = d || 0;
    this.cState = e || -1;
    this.cTabIndex = f || "0";
    this.cValue = g || "";
    this.cX = g || 0;
    this.cxXml = h || "";
    this.cY = i || 0;
    this.XmlData = k;
    this.cKey = l;
    //this.trace = kmTrace(l)
    return this;

}
function kmPopPic(picURL, picWidth, picHeight, capt, msg) {
    var newWindow;
    newWindow = window.open(picURL, 'newWin', 'toolbar=no,width=' + picWidth + ',height=' + picHeight + ',scrollbars=yes,resizable=yes');
    newWindow.document.write('<head><title>' + capt + '<\/title><\/head>');
    newWindow.document.write('<body style="overflow:auto;margin:0px;" bgcolor="#000000">');
    newWindow.document.write('<center><img src="' + picURL + '" border="0" alt="' + capt + '"><\/center>');
    newWindow.document.write('<p align="center"><font color="#E7BA83" face="Verdana" size="3"><b>' + capt + '<\/b><\/font><\/p>');
    newWindow.document.write('<center><font face="Verdana" size="2"><a href="javascript:window.close();"><font color="#C0C0C0">' + msg + '<\/font><\/a><\/font><p>&nbsp;<\/p><\/center>');
    newWindow.document.write('<\/body><\/html>');
    newWindow.resizeBy(picWidth - newWindow.document.body.clientWidth, picHeight - newWindow.document.body.clientHeight);
    newWindow.focus();
}
function kmQuickEditPosition(obj) {
    document.getElementById("kmFckX").value = kmGetElementLeft(document.getElementById("kmCText"));
    document.getElementById("kmFckY").value = kmGetElementTop(document.getElementById("kmCText")) - 14;
    return;

}
function kmRight(str, n) {
    if (n <= 0) {
        return "";
    }
    else {
        if (n > String(str).length) {
            return str;
        }
        else {
            var iLen = String(str).length;
            return String(str).substring(iLen, iLen - n);
        }
    }
}
function kmShowHide(src, layer_ref) {
    if (kmState == 'block') {
        kmState = 'none';
        document.getElementById("" + src.id + "").src = "_assets/images/icon_plus.gif";
    } else {
        kmState = 'block';
        document.getElementById("" + src.id + "").src = "_assets/images/icon_minus.gif";
    }
    if (document.all) { //IS IE 4 or 5 (or 6 beta) 
        eval("document.all." + layer_ref + ".style.display = kmState");
    }
    if (document.layers) { //IS NETSCAPE 4 or below 
        document.layers[layer_ref].display = kmState;
    }
    if (document.getElementById && !document.all) {
        hza = document.getElementById(layer_ref);
        hza.style.display = kmState;
    }
}
function kmStripUnicode(s) {
    o = "";
    for (m = 0; s.charAt(m); ++m) {
        if ((c = s.charCodeAt(m)) < 128 && c != 38) {
            o += s.charAt(m);
        }
        else if (c == 38) {
            o += "&";
        }
        else {
            o += "&#" + c + ";";
        }
    }
    return o;
}

function kmStripHTML(s) {
    var matchTag = /<(?:.|\s)*?>/g;
    return s.replace(matchTag, "");
}

function kmEncodeUtf8(s) {
    return unescape(encodeURIComponent(s));
}
function kmDecodeUtf8(s) {
    return decodeURIComponent(escape(s));
}

//var generator=window.open('','name','height=400,width=500');
//generator.document.write(KiimAjaxMessage(obj,obj.options[kmSelectKey].value));
//generator.document.close();

/* CMS Layout */
function kmResetCTextMargin() {
    try {
        //document.getElementById("kmCText").style.marginRight = "380px";
    }
    catch (e) { }

    return;
}
function kmResetMainMargin() {
    try {
        document.getElementById("kmSidebar").style.width = "0px";
        document.getElementById("kmSecondary").style.width = "0px";
        document.getElementById("kmMain").style.marginLeft = "0px";
        document.getElementById("kmMain").style.marginRight = "0px";
    }
    catch (e) { }
    return;
}
function kmResetSidebarMargin() {
    try {
        document.getElementById("kmSidebar").style.width = "0px";
        document.getElementById("kmMain").style.marginLeft = "0px";
    }
    catch (e) { }
    return;
}
function kmResetSecondaryMargin() {
    try {
        document.getElementById("kmSecondary").style.width = "0px";
        document.getElementById("kmMain").style.marginRight = "0px";
    }
    catch (e) { }
    return;
}





// Object Oriented

function km() { }

// Web Grid
var kmUserData = {};
var kmUserRow = { "rowid": "-1", "index": "-1", "contents": "-1", "event": "-1" };
var kmTblId = 0;
var kmIsNewFormDialog = true;
var kmIE = /*@cc_on!@*/false;

km.CheckRowsDelete = function (rowid) {
    var selArr = $("#kmJQGrid").getGridParam("selarrrow");
    if (selArr.length !== 0) {
        var msg = "Are you sure that you want to delete ";
        if (selArr.length > 1) {
            msg += "theses " + selArr.length + " rows?";
        }
        else {
            msg += "this row?";
        }
        var answer = confirm(msg);
        // See j_grid.ascx for  km.GetJqGridRowIds function
        if (answer) {
            $.ajax({
                type: "POST",
                url: "webmethods/dbhelper.ashx",
                data: { cmd: 'del', tid: '' + strDbTable + '', guid: '' + strGuid + '', keyvalues: '' + km.GetJqGridRowIds(strDbTable, selArr) + '' },
                contentType: "application/x-www-form-urlencoded; charset=utf-8",
                processData: true,
                dataType: "json",
                success: function (msg) {
                    switch (msg.status) {
                        case "Error":
                            alert(msg.params.Msg);
                            break;
                        default:
                            alert(msg.params.Msg);
                            jQuery("#kmJQGrid").trigger("reloadGrid");
                            break;
                    }
                },
                dataFilter: function (data) {
                    var msg;
                    if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
                        msg = JSON.parse(data);
                    }
                    else {
                        msg = eval('(' + data + ')');
                        if (msg.hasOwnProperty('d')) {
                            return msg.d;
                        }
                        else {
                            return msg;
                        }
                    }
                }
            });
        }
        else {
            return false;
        }
    }
    else {
        alert('Please select at least one row');
    }

    return false;
};
km.DoubleClickRow = function () {
    return true;
};
km.GridCookieName = '.etatsdirgMk';
km.GridConfig = { Id: '', Table: '', PageSize: 10, KeyField: 'Id' };
km.GridCellClick = function (rowid, index, contents, event) {
    kmUserRow.rowid = rowid;
    kmUserRow.index = index;
    kmUserRow.contents = contents;
    kmUserRow.event = event;
    var key = "Id";
    try {
        var id = $('#kmJQGrid').getCell(rowid, 'Id');
        key = "Id";
    }
    catch (err) {
        var id = $('#kmJQGrid').getCell(rowid, 'LineNumber');
        key = "LineNumber";
    }
    kmTblKey = id;
    switch (index) {
        case undefined:
            break;
        case 0:
            break;
        case 1:
            break;
        default:
            var params = "";
            var pageid = 1;
            params = "tid=" + strDbTable + "&key=" + key + "&keyvalue=" + id + "&filter=" + strDbFilter + "&smartview=" + strDbSmartView;
            switch (strDbTable.toLowerCase()) {
                case "pud1":
                    pageid = 15;
                    break;
                case "puwp1":
                    pageid = 12;
                    break;
                default:
                    pageid = 16;
                    break;
            }
            window.location = strBaseHref + 'page' + pageid + ".aspx?" + params;
            break;
    }
};
km.GridLoadComplete = function () {
    //alert('');
    //var grid = jQuery("#kmJQGrid1");
    //jQuery("#kmJQGrid1").setCell(3, 'PageTitle', 'allo','', { title: 'Test' });
    //alert('');
    jQuery("#kmJQGrid1").jqGrid('setGridParam', { datatype: 'local' });
    //alert('');
    return true;
};
km.GridRemoveTitle = function () {
    //$("td", this).removeAttr("title");
    //var grid = jQuery("#kmJQGrid1");
    //jQuery("#kmJQGrid1").setCell(3, 'PageTitle', 'allo','', { title: 'Test' });
    var rowid;
    $(".jqgrow").mouseover(function (e) {
        rowid = $(e.target)
                .parents("tr:first")
                .attr('Id');
        var rowData = jQuery("#kmJQGrid1").jqGrid('getRowData', rowid);
        var txt = rowData["ProjectName"] + " | " + rowData["ProjectName"] + " | " + rowData["TaskName"]
        jQuery("#kmJQGrid1").jqGrid('setCaption', txt);
    });
    $(".jqgrow").mouseout(function (e) {
        jQuery("#kmJQGrid1").jqGrid('setCaption', "Timesheet");
    });

    //jQuery("#kmJQGrid1").setCell(rowid, 'PageTitle', 'allo', '', { title: 'Test' });
    $(".jqgrow").css({ cursor: 'pointer' });

}
km.GridSelectRow = function () {
    var grid = jQuery("#kmJQGrid");
    var rowKey = grid.getGridParam("selrow");
    var rowData = jQuery("#kmJQGrid").jqGrid('getRowData', rowKey);
    var cellValueRfiNo = rowData["PageTitle"];
    if (rowKey) {
        var params = "";
        var pageid = 1;
        params = "tid=" + strDbTable + "&key=Id&keyvalue=" + rowKey + "&filter=" + strDbFilter + "&smartview=" + strDbSmartView;
        switch (strDbTable.toLowerCase()) {
            case "pud1":
                pageid = 15;
                break;
            case "puwp1":
                pageid = 12;
                break;
            default:
                pageid = 16;
                break;
        }
        window.location = strBaseHref + 'page' + pageid + ".aspx?" + params;
    }
    return true;
};
km.GridSubGridExpanded = function (subgrid_id, row_id) {
    //alert(subgrid_id);
    return true;
};
km.GridPrefs = {
    data: {},
    load: function () {
        var the_cookie = document.cookie.split(';');
        if (the_cookie[0]) {
            this.data = the_cookie[0];
        }
        return this.data;
    },
    save: function (expires, path) {
        var val = "";
        try {
            val = this.data.scol + "|" + this.data.sord + "|" + this.data.page + "|" + this.data.rows + "|" + this.data.table + "|" + this.data.filter + "|" + this.data.smartview;
        }
        catch (e) {
            val = "-99";
        }
        km.SetGridState(km.GridCookieName, val, null);
    }
};
km.InitJQGrid = function (idx, div) {
    
    var dv1 = document.createElement("div");
    dv1.id = "kmGridWrap" + idx;
    dv1.className = "content";
    
    if (div == "") {
        var by = document.body;
        by.appendChild(dv1);
    }
    else {
        var byDiv = document.getElementById("" + div + "");
        byDiv.appendChild(dv1);
    }
    
    var dv2 = document.createElement("div");
    dv2.id = "kmGridHolder" + idx;
    document.getElementById("kmGridWrap" + idx).appendChild(dv2);

    var tbl = document.createElement("table");
    tbl.id = "kmJQGrid" + idx;
    document.getElementById("kmGridHolder" + idx).appendChild(tbl);

    var dv3 = document.createElement("div");
    dv3.id = "kmJQGrid" + idx + "_Pager";
    document.getElementById("kmGridHolder" + idx).appendChild(dv3);

    var dv4 = document.createElement("div");
    dv4.id = "kmJQfilter";
    dv4.style.marginLeft = "30%";
    dv4.style.display = "none";
    document.getElementById("kmGridWrap" + idx).appendChild(dv4);
};
km.RightClickRow = function () {
    return true;
};
km.RowDateFormatter = function (cellValue, options, rowObject) {
    var tmp = "&nbsp;";
    try {
        var time = cellValue.replace(/\/Date\(([0-9]*)\)\//, '$1');
        var date = new Date();
        date.setTime(time);
        tmp = date.toDateString();
    }
    catch (e) {
    }
    return tmp;
};
km.SetGridState = function (c_name, value, expiredays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays === null) ? "" : ";expires=" + exdate.toGMTString());
};
km.ShowEditForm = function (idx, filter, smartview) {
    var params = "";
    var pageid = 1;
    params = "dbtable=" + km.GridConfig.Table + "&key=" + km.GridConfig.KeyField + "&keyvalue=" + idx + "&filter=" + filter + "&smartview=" + smartview;
    switch (km.GridConfig.Table.toLowerCase()) {
        case "plaisirs$use_document":
            pageid = 15;
            break;
        case "plaisirs$use_web_page":
            pageid = 12;
            break;
        default:
            pageid = 16;
            break;
    }
    km.SetGridState(km.GridCookieName, intPageIndex, 1);
    window.location = '<%=ConfigurationManager.AppSettings("BaseHref").ToString()%>page' + pageid + ".aspx?" + params;
    return true;
};
km.ShowFormDialog = function (id, label, w, h) {
    if (kmIsNewFormDialog === true) {
        $('#' + id).dialog({
            autoOpen: false,
            width: w,
            height: h,
            modal: true,
            draggable: true,
            title: label,
            buttons: {
                "Ok": function () {
                    $(this).dialog("close");
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            },
            open: function (type, data) {
                $(this).parent().appendTo("form");
            }
        });
        document.getElementById("" + id + "").style.display = "block";
        kmIsNewFormDialog = false;
        $('#' + id).dialog("open");
    }
    else {
        if ($('#' + id).dialog("isOpen") === undefined) {
            kmIsNewFormDialog = true;
            km.ShowFormDialog(id, label, w, h);
        }
        $('#' + id).dialog({width: w,height: h});
        $('#' + id).dialog("open");
    }
    return false;
};
// Utilities functions
km.Array1dToJson = function (a, p) {
    var i, s = '[';
    for (i = 0; i < a.length; ++i) {
        if (typeof a[i] == 'string') {
            s += '"' + a[i] + '"';
        }
        else { // assume number type
            s += a[i];
        }
        if (i < a.length - 1) {
            s += ',';
        }
    }
    s += ']';
    if (p) {
        return '{"' + p + '":' + s + '}';
    }
    return s;
};
km.Array2dToJson = function (a, p, nl) {
    var i, j, s = '{"' + p + '":[';
    nl = nl || '';
    for (i = 0; i < a.length; ++i) {
        s += nl + km.Array1dToJson(a[i]);
        if (i < a.length - 1) {
            s += ',';
        }
    }
    s += nl + ']}';
    return s;
};
km.CenterPopUp = function (mypage, myname, w, h, scroll, lbl, col) {
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - h) / 2;
    winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable=yes,menubar=yes';
    win = window.open(mypage, myname, winprops);
    return;
};
// JQuery Modal
km.CloseFormDialog = function (id) {
    $('#' + id).dialog("close");
    return true;
};
// For use with JQuery DatePicker
km.CorrectDateFormat = function (obj) {
    document.getElementById("" + obj.id + "").value = km.EnglishIsoToDateFormat(obj.value);
    return true;
};
km.DoNothing = function (arg) {
    return false;
};
km.EnglishIsoToDateFormat = function (dte) {
    if (dte.indexOf("/") !== 0) {
        var tmp = dte.split("/");
        var isoDate = tmp[2] + "-";
        if (tmp[0].length == 1) {
            isoDate = isoDate + "0" + tmp[0] + "-";
        }
        else {
            isoDate = isoDate + tmp[0] + "-";
        }
        if (tmp[1].length == 1) {
            isoDate = isoDate + "0" + tmp[1];
        }
        else {
            isoDate = isoDate + tmp[1];
        }
        return isoDate;
    }
    else {
        return dte;
    }
    return;
};
km.GetStringPixels = function (s) {
    var aDiv = document.getElementById('aDiv');
    aDiv.style.fontFamily = 'menu';
    aDiv.style.fontSize = 9 + 'px';
    aDiv.fontWeight = "normal";
    aDiv.fontStyle = "normal";
    aDiv.innerHTML = s;
    return aDiv.clientWidth;
};
km.JSONFilter = function (data) {
    var msg;
    if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
        msg = JSON.parse(data);
    }
    else {
        msg = eval('(' + data + ')');
        if (msg.hasOwnProperty('d')) {
            return msg.d;
        }
        else {
            return msg;
        }
    }
};
km.SessionKeepAlive = function () {
    var ska = { sguid: kmSessionGuid };
    $.post("../../webmethods/SessionKeepAlive.ashx", ska, km.SessionKeepAliveCallback);
};
km.SessionKeepAliveCallback = function (executor, eventArgs) {
    // Not implemented
    return true;
};
km.WindowCenter = function () {
    var hWnd = (arguments[0] !== null) ? arguments[0] : { width: 0, height: 0 };
    var _x = 0;
    var _y = 0;
    var offsetX = 0;
    var offsetY = 0;
    //IE
    if (!window.pageYOffset) {
        //strict mode
        if (!(document.documentElement.scrollTop === 0)) {
            offsetY = document.documentElement.scrollTop;
            offsetX = document.documentElement.scrollLeft;
        }
        //quirks mode
        else {
            offsetY = document.body.scrollTop;
            offsetX = document.body.scrollLeft;
        }
    }
    //w3c
    else {
        offsetX = window.pageXOffset;
        offsetY = window.pageYOffset;
    }

    _x = ((this.size().width - hWnd.width) / 2) + offsetX;
    _y = ((this.size().height - hWnd.height) / 2) + offsetY;

    return { x: _x, y: _y };
};
km.WindowSize = function () {
    var w = 0;
    var h = 0;

    //IE
    if (!window.innerWidth) {
        //strict mode
        if (!(document.documentElement.clientWidth === 0)) {
            w = document.documentElement.clientWidth;
            h = document.documentElement.clientHeight;
        }
        //quirks mode
        else {
            w = document.body.clientWidth;
            h = document.body.clientHeight;
        }
    }
    //w3c
    else {
        w = window.innerWidth;
        h = window.innerHeight;
    }
    return { width: w, height: h };
};
