/*
* jqGrid  3.6.4 - jQuery Grid
* Copyright (c) 2008, Tony Tomov, tony@trirand.com
* Dual licensed under the MIT and GPL licenses
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* Date:2010-02-14
* Modules: grid.base.js; jquery.fmatter.js; grid.custom.js; grid.common.js; grid.formedit.js; jquery.searchFilter.js; grid.inlinedit.js; grid.celledit.js; jqModal.js; jqDnR.js; grid.subgrid.js; grid.treegrid.js; grid.import.js; JsonXml.js; grid.setcolumns.js; grid.postext.js; grid.tbltogrid.js; grid.jqueryui.js;
*/
 (function(b) {
    b.jgrid = b.jgrid || {};
    b.extend(b.jgrid, {
        htmlDecode: function(f) {
            if (f == "&nbsp;" || f == "&#160;" || f.length == 1 && f.charCodeAt(0) == 160) return "";
            return ! f ? f: String(f).replace(/&amp;/g, "&").replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, '"')
        },
        htmlEncode: function(f) {
            return ! f ? f: String(f).replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/\"/g, "&quot;")
        },
        format: function(f) {
            var k = b.makeArray(arguments).slice(1);
            if (f === undefined) f = "";
            return f.replace(/\{(\d+)\}/g,
            function(i,
            h) {
                return k[h]
            })
        },
        getCellIndex: function(f) {
            f = b(f);
            f = (!f.is("td") && !f.is("th") ? f.closest("td,th") : f)[0];
            if (b.browser.msie) return b.inArray(f, f.parentNode.cells);
            return f.cellIndex
        },
        stripHtml: function(f) {
            f += "";
            var k = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
            if (f) return (f = f.replace(k, "")) && f !== "&nbsp;" && f !== "&#160;" ? f: "";
            else return f
        },
        stringToDoc: function(f) {
            var k;
            if (typeof f !== "string") return f;
            try {
                k = (new DOMParser).parseFromString(f, "text/xml")
            } catch(i) {
                k = new ActiveXObject("Microsoft.XMLDOM");
                k.async = false;
                k.loadXML(f)
            }
            return k && k.documentElement && k.documentElement.tagName != "parsererror" ? k: null
        },
        parse: function(f) {
            f = f;
            if (f.substr(0, 9) == "while(1);") f = f.substr(9);
            if (f.substr(0, 2) == "/*") f = f.substr(2, f.length - 4);
            f || (f = "{}");
            f = b.jgrid.useJSON === true && typeof JSON === "object" && typeof JSON.parse === "function" ? JSON.parse(f) : eval("(" + f + ")");
            return f.hasOwnProperty("d") ? f.d: f
        },
        empty: function() {
            for (; this.firstChild;) this.removeChild(this.firstChild)
        },
        jqID: function(f) {
            f += "";
            return f.replace(/([\.\:\[\]])/g, "\\$1")
        },
        ajaxOptions: {},
        extend: function(f) {
            b.extend(b.fn.jqGrid, f);
            this.no_legacy_api || b.fn.extend(f)
        }
    });
    b.fn.jqGrid = function(f) {
        if (typeof f == "string") {
            var k = b.fn.jqGrid[f];
            if (!k) throw "jqGrid - No such method: " + f;
            var i = b.makeArray(arguments).slice(1);
            return k.apply(this, i)
        }
        return this.each(function() {
            if (!this.grid) {
                var h = b.extend(true, {
                    url: "",
                    height: 150,
                    page: 1,
                    rowNum: 20,
                    records: 0,
                    pager: "",
                    pgbuttons: true,
                    pginput: true,
                    colModel: [],
                    rowList: [],
                    colNames: [],
                    sortorder: "asc",
                    sortname: "",
                    datatype: "xml",
                    mtype: "GET",
                    altRows: false,
                    selarrrow: [],
                    savedRow: [],
                    shrinkToFit: true,
                    xmlReader: {},
                    jsonReader: {},
                    subGrid: false,
                    subGridModel: [],
                    reccount: 0,
                    lastpage: 0,
                    lastsort: 0,
                    selrow: null,
                    beforeSelectRow: null,
                    onSelectRow: null,
                    onSortCol: null,
                    ondblClickRow: null,
                    onRightClickRow: null,
                    onPaging: null,
                    onSelectAll: null,
                    loadComplete: null,
                    gridComplete: null,
                    loadError: null,
                    loadBeforeSend: null,
                    afterInsertRow: null,
                    beforeRequest: null,
                    onHeaderClick: null,
                    viewrecords: false,
                    loadonce: false,
                    multiselect: false,
                    multikey: false,
                    editurl: null,
                    search: false,
                    caption: "",
                    hidegrid: true,
                    hiddengrid: false,
                    postData: {},
                    userData: {},
                    treeGrid: false,
                    treeGridModel: "nested",
                    treeReader: {},
                    treeANode: -1,
                    ExpandColumn: null,
                    tree_root_level: 0,
                    prmNames: {
                        page: "page",
                        rows: "rows",
                        sort: "sidx",
                        order: "sord",
                        search: "_search",
                        nd: "nd",
                        id: "id",
                        oper: "oper",
                        editoper: "edit",
                        addoper: "add",
                        deloper: "del"
                    },
                    forceFit: false,
                    gridstate: "visible",
                    cellEdit: false,
                    cellsubmit: "remote",
                    nv: 0,
                    loadui: "enable",
                    toolbar: [false, ""],
                    scroll: false,
                    multiboxonly: false,
                    deselectAfterSort: true,
                    scrollrows: false,
                    autowidth: false,
                    scrollOffset: 18,
                    cellLayout: 5,
                    subGridWidth: 20,
                    multiselectWidth: 20,
                    gridview: false,
                    rownumWidth: 25,
                    rownumbers: false,
                    pagerpos: "center",
                    recordpos: "right",
                    footerrow: false,
                    userDataOnFooter: false,
                    hoverrows: true,
                    altclass: "ui-priority-secondary",
                    viewsortcols: [false, "vertical", true],
                    resizeclass: "",
                    autoencode: false,
                    remapColumns: [],
                    ajaxGridOptions: {},
                    direction: "ltr",
                    toppager: false
                },
                b.jgrid.defaults, f || {}),
                g = {
                    headers: [],
                    cols: [],
                    footers: [],
                    dragStart: function(c, d, e) {
                        this.resizing = {
                            idx: c,
                            startX: d.clientX,
                            sOL: e[0]
                        };
                        this.hDiv.style.cursor = "col-resize";
                        this.curGbox = b("#rs_m" + h.id, "#gbox_" + h.id);
                        this.curGbox.css({
                            display: "block",
                            left: e[0],
                            top: e[1],
                            height: e[2]
                        });
                        b.isFunction(h.resizeStart) && h.resizeStart.call(this, d, c);
                        document.onselectstart = new Function("return false")
                    },
                    dragMove: function(c) {
                        if (this.resizing) {
                            var d = c.clientX - this.resizing.startX;
                            c = this.headers[this.resizing.idx];
                            var e = h.direction === "ltr" ? c.width + d: c.width - d,
                            l;
                            if (e > 33) {
                                this.curGbox.css({
                                    left: this.resizing.sOL + d
                                });
                                if (h.forceFit === true) {
                                    l = this.headers[this.resizing.idx +
                                    h.nv];
                                    d = h.direction === "ltr" ? l.width - d: l.width + d;
                                    if (d > 33) {
                                        c.newWidth = e;
                                        l.newWidth = d
                                    }
                                } else {
                                    this.newWidth = h.direction === "ltr" ? h.tblwidth + d: h.tblwidth - d;
                                    c.newWidth = e
                                }
                            }
                        }
                    },
                    dragEnd: function() {
                        this.hDiv.style.cursor = "default";
                        if (this.resizing) {
                            var c = this.resizing.idx,
                            d = this.headers[c].newWidth || this.headers[c].width;
                            d = parseInt(d, 10);
                            this.resizing = false;
                            b("#rs_m" + h.id).css("display", "none");
                            h.colModel[c].width = d;
                            this.headers[c].width = d;
                            this.headers[c].el.style.width = d + "px";
                            if (this.cols.length > 0) this.cols[c].style.width =
                            d + "px";
                            if (this.footers.length > 0) this.footers[c].style.width = d + "px";
                            if (h.forceFit === true) {
                                d = this.headers[c + h.nv].newWidth || this.headers[c + h.nv].width;
                                this.headers[c + h.nv].width = d;
                                this.headers[c + h.nv].el.style.width = d + "px";
                                if (this.cols.length > 0) this.cols[c + h.nv].style.width = d + "px";
                                if (this.footers.length > 0) this.footers[c + h.nv].style.width = d + "px";
                                h.colModel[c + h.nv].width = d
                            } else {
                                h.tblwidth = this.newWidth || h.tblwidth;
                                b("table:first", this.bDiv).css("width", h.tblwidth + "px");
                                b("table:first", this.hDiv).css("width",
                                h.tblwidth + "px");
                                this.hDiv.scrollLeft = this.bDiv.scrollLeft;
                                if (h.footerrow) {
                                    b("table:first", this.sDiv).css("width", h.tblwidth + "px");
                                    this.sDiv.scrollLeft = this.bDiv.scrollLeft
                                }
                            }
                            b.isFunction(h.resizeStop) && h.resizeStop.call(this, d, c)
                        }
                        this.curGbox = null;
                        document.onselectstart = new Function("return true")
                    },
                    populateVisible: function() {
                        g.timer && clearTimeout(g.timer);
                        g.timer = null;
                        var c = b(g.bDiv).height();
                        if (c) {
                            var d = b("table:first", g.bDiv),
                            e = b("> tbody > tr:visible:first", d).outerHeight() || g.prevRowHeight;
                            if (e) {
                                g.prevRowHeight =
                                e;
                                var l = h.rowNum,
                                n = g.scrollTop = g.bDiv.scrollTop,
                                s = Math.round(d.position().top) - n,
                                p = s + d.height();
                                e = e * l;
                                var w,
                                r,
                                o;
                                if (s <= 0 && p < c && (h.lastpage == null || parseInt((p + n + e - 1) / e, 10) < h.lastpage)) {
                                    r = parseInt((c - p + e - 1) / e, 10);
                                    if (p >= 0 || r < 2 || h.scroll === true) {
                                        w = Math.round((p + n) / e) + 1;
                                        s = -1
                                    } else s = 1
                                }
                                if (s > 0) {
                                    w = parseInt(n / e, 10) + 1;
                                    r = parseInt((n + c) / e, 10) + 2 - w;
                                    o = true
                                }
                                if (r) if (! (h.lastpage && w > h.lastpage)) if (g.hDiv.loading) g.timer = setTimeout(g.populateVisible, 200);
                                else {
                                    h.page = w;
                                    if (o) {
                                        g.selectionPreserver(d[0]);
                                        g.emptyRows(g.bDiv)
                                    }
                                    g.populate(r)
                                }
                            }
                        }
                    },
                    scrollGrid: function() {
                        if (h.scroll) {
                            var c = g.bDiv.scrollTop;
                            if (c != g.scrollTop) {
                                g.scrollTop = c;
                                g.timer && clearTimeout(g.timer);
                                g.timer = setTimeout(g.populateVisible, 200)
                            }
                        }
                        g.hDiv.scrollLeft = g.bDiv.scrollLeft;
                        if (h.footerrow) g.sDiv.scrollLeft = g.bDiv.scrollLeft
                    },
                    selectionPreserver: function(c) {
                        var d = c.p,
                        e = d.selrow,
                        l = d.selarrrow ? b.makeArray(d.selarrrow) : null,
                        n = c.grid.bDiv.scrollLeft,
                        s = d.gridComplete;
                        d.gridComplete = function() {
                            d.selrow = null;
                            d.selarrrow = [];
                            if (d.multiselect && l && l.length > 0) for (var p = 0; p < l.length; p++) l[p] !=
                            e && b(c).jqGrid("setSelection", l[p], false);
                            e && b(c).jqGrid("setSelection", e, false);
                            c.grid.bDiv.scrollLeft = n;
                            if (d.gridComplete = s) s()
                        }
                    }
                };
                this.p = h;
                var j,
                m,
                a;
                if (this.p.colNames.length === 0) for (j = 0; j < this.p.colModel.length; j++) this.p.colNames[j] = this.p.colModel[j].label || this.p.colModel[j].name;
                if (this.p.colNames.length !== this.p.colModel.length) alert(b.jgrid.errors.model);
                else {
                    var q = b("<div class='ui-jqgrid-view'></div>"),
                    u,
                    y = b.browser.msie ? true: false,
                    B = b.browser.safari ? true: false;
                    a = this;
                    a.p.direction = b.trim(a.p.direction.toLowerCase());
                    if (b.inArray(a.p.direction, ["ltr", "rtl"]) == -1) a.p.direction = "ltr";
                    m = a.p.direction;
                    b(q).insertBefore(this);
                    b(this).appendTo(q).removeClass("scroll");
                    var K = b("<div class='ui-jqgrid ui-widget ui-widget-content ui-corner-all'></div>");
                    b(K).insertBefore(q).attr({
                        id: "gbox_" + this.id,
                        dir: m
                    });
                    b(q).appendTo(K).attr("id", "gview_" + this.id);
                    u = y && b.browser.version <= 6 ? '<iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\'0\');" src="javascript:false;"></iframe>': "";
                    b("<div class='ui-widget-overlay jqgrid-overlay' id='lui_" +
                    this.id + "'></div>").append(u).insertBefore(q);
                    b("<div class='loading ui-state-default ui-state-active' id='load_" + this.id + "'>" + this.p.loadtext + "</div>").insertBefore(q);
                    b(this).attr({
                        cellSpacing: "0",
                        cellPadding: "0",
                        border: "0",
                        role: "grid",
                        "aria-multiselectable": !!this.p.multiselect,
                        "aria-labelledby": "gbox_" + this.id
                    });
                    var J = function(c, d) {
                        c = parseInt(c, 10);
                        return isNaN(c) ? d ? d: 0: c
                    },
                    F = function(c, d) {
                        var e = a.p.colModel[c].align,
                        l = 'style="',
                        n = a.p.colModel[c].classes;
                        if (e) l += "text-align:" + e + ";";
                        if (a.p.colModel[c].hidden ===
                        true) l += "display:none;";
                        if (d === 0) l += "width: " + g.headers[c].width + "px;";
                        return l + '"' + (n !== undefined ? ' class="' + n + '"': "")
                    },
                    S = function(c, d, e, l, n) {
                        c = M(c, d, e, n, "add");
                        return '<td role="gridcell" ' + F(e, l) + ' title="' + b.jgrid.stripHtml(c) + '">' + c + "</td>"
                    },
                    M = function(c, d, e, l, n) {
                        e = a.p.colModel[e];
                        if (typeof e.formatter !== "undefined") {
                            c = {
                                rowId: c,
                                colModel: e,
                                gid: a.p.id
                            };
                            d = b.isFunction(e.formatter) ? e.formatter.call(a, d, c, l, n) : b.fmatter ? b.fn.fmatter(e.formatter, d, c, l, n) : t(d)
                        } else d = t(d);
                        return d
                    },
                    t = function(c) {
                        return c ===
                        undefined || c === null || c === "" ? "&#160;": a.p.autoencode ? b.jgrid.htmlEncode(c) : c + ""
                    },
                    ia = function(c, d, e) {
                        c = '<input type="checkbox" id="jqg_' + c + '" class="cbox" name="jqg_' + c + '"/>';
                        return "<td role='gridcell' " + F(d, e) + ">" + c + "</td>"
                    },
                    aa = function(c, d, e, l) {
                        e = (parseInt(e, 10) - 1) * parseInt(l, 10) + 1 + d;
                        return '<td role="gridcell" class="ui-state-default jqgrid-rownum" ' + F(c, d) + ">" + e + "</td>"
                    },
                    ja = function(c) {
                        var d,
                        e = [],
                        l = 0,
                        n;
                        for (n = 0; n < a.p.colModel.length; n++) {
                            d = a.p.colModel[n];
                            if (d.name !== "cb" && d.name !== "subgrid" && d.name !==
                            "rn") {
                                e[l] = c == "xml" ? d.xmlmap || d.name: d.jsonmap || d.name;
                                l++
                            }
                        }
                        return e
                    },
                    pa = function(c) {
                        var d = a.p.remapColumns;
                        if (!d || !d.length) d = b.map(a.p.colModel,
                        function(e, l) {
                            return l
                        });
                        if (c) d = b.map(d,
                        function(e) {
                            return e < c ? null: e - c
                        });
                        return d
                    },
                    $ = function(c, d) {
                        var e = b("tbody:first", c);
                        if (!a.p.gridview || a.p.jqgdnd) b("*", e).children().unbind();
                        if (y) b.jgrid.empty.apply(e[0]);
                        else e[0].innerHTML = "";
                        if (d && a.p.scroll) {
                            b(">div:first", c).css({
                                height: "auto"
                            }).children("div:first").css({
                                height: 0,
                                display: "none"
                            });
                            c.scrollTop =
                            0
                        }
                    },
                    T = function(c, d) {
                        var e,
                        l,
                        n;
                        e = c[d];
                        if (e === undefined) {
                            if (typeof d === "string") n = d.split(".");
                            try {
                                if (n.length) for (e = c; e && n.length;) {
                                    l = n.shift();
                                    e = e[l]
                                }
                            } catch(s) {}
                        }
                        return e
                    },
                    qa = function(c, d, e, l, n) {
                        var s = new Date;
                        a.p.reccount = 0;
                        if (b.isXMLDoc(c)) {
                            if (a.p.treeANode === -1 && !a.p.scroll) {
                                $(d);
                                e = 0
                            } else e = e > 0 ? e: 0;
                            var p,
                            w = 0,
                            r,
                            o,
                            v = 0,
                            x = 0,
                            z = 0,
                            D,
                            N,
                            L = [],
                            P,
                            G = {},
                            ba = a.rows.length,
                            E,
                            V,
                            C = [],
                            Q = 0,
                            da = a.p.altRows === true ? " " + a.p.altclass: "";
                            a.p.xmlReader.repeatitems || (L = ja("xml"));
                            D = a.p.keyIndex === false ? a.p.xmlReader.id: a.p.keyIndex;
                            if (L.length > 0 && !isNaN(D)) {
                                if (a.p.remapColumns && a.p.remapColumns.length) D = b.inArray(D, a.p.remapColumns);
                                D = L[D]
                            }
                            N = (D + "").indexOf("[") === -1 ? L.length ?
                            function(W, U) {
                                return b(D, W).text() || U
                            }: function(W, U) {
                                return b(a.p.xmlReader.cell, W).eq(D).text() || U
                            }: function(W, U) {
                                return W.getAttribute(D.replace(/[\[\]]/g, "")) || U
                            };
                            b(a.p.xmlReader.page, c).each(function() {
                                a.p.page = this.textContent || this.text || 1
                            });
                            b(a.p.xmlReader.total, c).each(function() {
                                a.p.lastpage = this.textContent || this.text;
                                if (a.p.lastpage === undefined) a.p.lastpage =
                                1
                            });
                            b(a.p.xmlReader.records, c).each(function() {
                                a.p.records = this.textContent || this.text || 0
                            });
                            b(a.p.xmlReader.userdata, c).each(function() {
                                a.p.userData[this.getAttribute("name")] = this.textContent || this.text
                            });
                            c = b(a.p.xmlReader.root + " " + a.p.xmlReader.row, c);
                            var ea = c.length,
                            O = 0;
                            if (c && ea) {
                                var ka = parseInt(a.p.rowNum, 10),
                                wa = a.p.scroll ? (parseInt(a.p.page, 10) - 1) * ka + 1: 1;
                                if (n) ka *= n + 1;
                                for (n = b.isFunction(a.p.afterInsertRow); O < ea;) {
                                    E = c[O];
                                    V = N(E, wa + O);
                                    p = e == 0 ? 0: e + 1;
                                    p = (p + O) % 2 == 1 ? da: "";
                                    C[Q++] = '<tr id="' + V + '" role="row" class ="ui-widget-content jqgrow ui-row-' +
                                    a.p.direction + "" + p + '">';
                                    if (a.p.rownumbers === true) {
                                        C[Q++] = aa(0, O, a.p.page, a.p.rowNum);
                                        z = 1
                                    }
                                    if (a.p.multiselect === true) {
                                        C[Q++] = ia(V, z, O);
                                        v = 1
                                    }
                                    if (a.p.subGrid === true) {
                                        C[Q++] = b(a).jqGrid("addSubGridCell", v + z, O + e);
                                        x = 1
                                    }
                                    if (a.p.xmlReader.repeatitems) {
                                        P || (P = pa(v + x + z));
                                        var Aa = b(a.p.xmlReader.cell, E);
                                        b.each(P,
                                        function(W) {
                                            var U = Aa[this];
                                            if (!U) return false;
                                            r = U.textContent || U.text;
                                            G[a.p.colModel[W + v + x + z].name] = r;
                                            C[Q++] = S(V, r, W + v + x + z, O + e, E)
                                        })
                                    } else for (p = 0; p < L.length; p++) {
                                        r = b(L[p], E).text();
                                        G[a.p.colModel[p + v + x + z].name] =
                                        r;
                                        C[Q++] = S(V, r, p + v + x + z, O + e, E)
                                    }
                                    C[Q++] = "</tr>";
                                    if (a.p.gridview === false) {
                                        if (a.p.treeGrid === true) {
                                            p = a.p.treeANode >= -1 ? a.p.treeANode: 0;
                                            o = b(C.join(""))[0];
                                            try {
                                                b(a).jqGrid("setTreeNode", G, o)
                                            } catch(Ga) {}
                                            ba === 0 ? b("tbody:first", d).append(o) : b(a.rows[O + p + e]).after(o)
                                        } else b("tbody:first", d).append(C.join(""));
                                        if (a.p.subGrid === true) try {
                                            b(a).jqGrid("addSubGrid", a.rows[a.rows.length - 1], v + z)
                                        } catch(Ha) {}
                                        n && a.p.afterInsertRow.call(a, V, G, E);
                                        C = [];
                                        Q = 0
                                    }
                                    G = {};
                                    w++;
                                    O++;
                                    if (w == ka) break
                                }
                            }
                            a.p.gridview === true && b("tbody:first",
                            d).append(C.join(""));
                            a.p.totaltime = new Date - s;
                            if (w > 0) {
                                a.grid.cols = a.rows[0].cells;
                                if (a.p.records === 0) a.p.records = ea
                            }
                            C = null;
                            if (!a.p.treeGrid && !a.p.scroll) a.grid.bDiv.scrollTop = 0;
                            a.p.reccount = w;
                            a.p.treeANode = -1;
                            a.p.userDataOnFooter && b(a).jqGrid("footerData", "set", a.p.userData, true);
                            l || la(false, true)
                        }
                    },
                    ra = function(c, d, e, l, n) {
                        var s = new Date;
                        a.p.reccount = 0;
                        if (c) {
                            if (a.p.treeANode === -1 && !a.p.scroll) {
                                $(d);
                                e = 0
                            } else e = e > 0 ? e: 0;
                            var p = 0,
                            w,
                            r,
                            o,
                            v = [],
                            x,
                            z = 0,
                            D = 0,
                            N = 0,
                            L,
                            P,
                            G,
                            ba = {},
                            E,
                            V = a.rows.length,
                            C;
                            o = [];
                            E = 0;
                            var Q =
                            a.p.altRows === true ? " " + a.p.altclass: "";
                            a.p.page = T(c, a.p.jsonReader.page) || 1;
                            G = T(c, a.p.jsonReader.total);
                            a.p.lastpage = G === undefined ? 1: G;
                            a.p.records = T(c, a.p.jsonReader.records) || 0;
                            a.p.userData = T(c, a.p.jsonReader.userdata) || {};
                            a.p.jsonReader.repeatitems || (x = v = ja("json"));
                            G = a.p.keyIndex === false ? a.p.jsonReader.id: a.p.keyIndex;
                            if (v.length > 0 && !isNaN(G)) {
                                if (a.p.remapColumns && a.p.remapColumns.length) G = b.inArray(G, a.p.remapColumns);
                                G = v[G]
                            }
                            if (P = T(c, a.p.jsonReader.root)) {
                                L = P.length;
                                c = 0;
                                var da = parseInt(a.p.rowNum,
                                10),
                                ea = a.p.scroll ? (parseInt(a.p.page, 10) - 1) * da + 1: 1;
                                if (n) da *= n + 1;
                                for (var O = b.isFunction(a.p.afterInsertRow); c < L;) {
                                    n = P[c];
                                    C = n[G];
                                    if (C === undefined) {
                                        C = ea + c;
                                        if (v.length === 0) if (a.p.jsonReader.cell) C = n[a.p.jsonReader.cell][G] || C
                                    }
                                    w = e == 0 ? 0: e + 1;
                                    w = (w + c) % 2 == 1 ? Q: "";
                                    o[E++] = '<tr id="' + C + '" role="row" class= "ui-widget-content jqgrow ui-row-' + a.p.direction + "" + w + '">';
                                    if (a.p.rownumbers === true) {
                                        o[E++] = aa(0, c, a.p.page, a.p.rowNum);
                                        N = 1
                                    }
                                    if (a.p.multiselect) {
                                        o[E++] = ia(C, N, c);
                                        z = 1
                                    }
                                    if (a.p.subGrid) {
                                        o[E++] = b(a).jqGrid("addSubGridCell",
                                        z + N, c + e);
                                        D = 1
                                    }
                                    if (a.p.jsonReader.repeatitems) {
                                        if (a.p.jsonReader.cell) n = T(n, a.p.jsonReader.cell);
                                        x || (x = pa(z + D + N))
                                    }
                                    for (r = 0; r < x.length; r++) {
                                        w = T(n, x[r]);
                                        o[E++] = S(C, w, r + z + D + N, c + e, n);
                                        ba[a.p.colModel[r + z + D + N].name] = w
                                    }
                                    o[E++] = "</tr>";
                                    if (a.p.gridview === false) {
                                        if (a.p.treeGrid === true) {
                                            E = a.p.treeANode >= -1 ? a.p.treeANode: 0;
                                            o = b(o.join(""))[0];
                                            try {
                                                b(a).jqGrid("setTreeNode", ba, o)
                                            } catch(ka) {}
                                            V === 0 ? b("tbody:first", d).append(o) : b(a.rows[c + E + e]).after(o)
                                        } else b("tbody:first", d).append(o.join(""));
                                        if (a.p.subGrid === true) try {
                                            b(a).jqGrid("addSubGrid",
                                            a.rows[a.rows.length - 1], z + N)
                                        } catch(wa) {}
                                        O && a.p.afterInsertRow.call(a, C, ba, n);
                                        o = [];
                                        E = 0
                                    }
                                    ba = {};
                                    p++;
                                    c++;
                                    if (p == da) break
                                }
                                a.p.gridview === true && b("tbody:first", d).append(o.join(""));
                                a.p.totaltime = new Date - s;
                                if (p > 0) {
                                    a.grid.cols = a.rows[0].cells;
                                    if (a.p.records === 0) a.p.records = L
                                }
                            }
                            if (!a.p.treeGrid && !a.p.scroll) a.grid.bDiv.scrollTop = 0;
                            a.p.reccount = p;
                            a.p.treeANode = -1;
                            a.p.userDataOnFooter && b(a).jqGrid("footerData", "set", a.p.userData, true);
                            l || la(false, true)
                        }
                    },
                    la = function(c, d) {
                        var e,
                        l,
                        n,
                        s,
                        p,
                        w,
                        r,
                        o = "";
                        n = (parseInt(a.p.page,
                        10) - 1) * parseInt(a.p.rowNum, 10);
                        p = n + a.p.reccount;
                        if (a.p.scroll) {
                            e = b("tbody:first > tr", a.grid.bDiv);
                            n = p - e.length;
                            if (l = e.outerHeight()) {
                                e = n * l;
                                l = parseInt(a.p.records, 10) * l;
                                b(">div:first", a.grid.bDiv).css({
                                    height: l
                                }).children("div:first").css({
                                    height: e,
                                    display: e ? "": "none"
                                })
                            }
                        }
                        o = a.p.pager ? a.p.pager: "";
                        o += a.p.toppager ? o ? "," + a.p.toppager: a.p.toppager: "";
                        if (o) {
                            r = b.jgrid.formatter.integer || {};
                            if (a.p.loadonce) {
                                e = l = 1;
                                a.p.lastpage = a.page = 1;
                                b(".selbox", o).attr("disabled", true)
                            } else {
                                e = J(a.p.page, 1);
                                l = J(a.p.lastpage,
                                1);
                                b(".selbox", o).attr("disabled", false)
                            }
                            if (a.p.pginput === true) {
                                b(".ui-pg-input", o).val(a.p.page);
                                b("#sp_1", o).html(b.fmatter ? b.fmatter.util.NumberFormat(a.p.lastpage, r) : a.p.lastpage)
                            }
                            if (a.p.viewrecords) if (a.p.reccount === 0) b(".ui-paging-info", o).html(a.p.emptyrecords);
                            else {
                                s = n + 1;
                                w = a.p.records;
                                if (b.fmatter) {
                                    s = b.fmatter.util.NumberFormat(s, r);
                                    p = b.fmatter.util.NumberFormat(p, r);
                                    w = b.fmatter.util.NumberFormat(w, r)
                                }
                                b(".ui-paging-info", o).html(b.jgrid.format(a.p.recordtext, s, p, w))
                            }
                            if (a.p.pgbuttons === true) {
                                if (e <=
                                0) e = l = 1;
                                if (e == 1) {
                                    b("#first, #prev", a.p.pager).addClass("ui-state-disabled").removeClass("ui-state-hover");
                                    a.p.toppager && b("#first_t, #prev_t", a.p.toppager).addClass("ui-state-disabled").removeClass("ui-state-hover")
                                } else {
                                    b("#first, #prev", a.p.pager).removeClass("ui-state-disabled");
                                    a.p.toppager && b("#first_t, #prev_t", a.p.toppager).removeClass("ui-state-disabled")
                                }
                                if (e == l) {
                                    b("#next, #last", a.p.pager).addClass("ui-state-disabled").removeClass("ui-state-hover");
                                    a.p.toppager && b("#next_t, #last_t", a.p.toppager).addClass("ui-state-disabled").removeClass("ui-state-hover")
                                } else {
                                    b("#next, #last",
                                    a.p.pager).removeClass("ui-state-disabled");
                                    a.p.toppager && b("#next_t, #last_t", a.p.toppager).removeClass("ui-state-disabled")
                                }
                            }
                        }
                        c === true && a.p.rownumbers === true && b("td.jqgrid-rownum", a.rows).each(function(v) {
                            b(this).html(n + 1 + v)
                        });
                        d && a.p.jqgdnd && b(a).jqGrid("gridDnD", "updateDnD");
                        b.isFunction(a.p.gridComplete) && a.p.gridComplete.call(a)
                    },
                    X = function(c) {
                        if (!a.grid.hDiv.loading) {
                            var d = a.p.scroll && c == false,
                            e = {},
                            l,
                            n = a.p.prmNames;
                            if (n.search !== null) e[n.search] = a.p.search;
                            if (n.nd != null) e[n.nd] = (new Date).getTime();
                            if (n.rows !== null) e[n.rows] = a.p.rowNum;
                            if (n.page !== null) e[n.page] = a.p.page;
                            if (n.sort !== null) e[n.sort] = a.p.sortname;
                            if (n.order !== null) e[n.order] = a.p.sortorder;
                            var s = a.p.loadComplete,
                            p = b.isFunction(s);
                            p || (s = null);
                            var w = 0;
                            c = c || 1;
                            if (c > 1) if (n.npage != null) {
                                e[n.npage] = c;
                                w = c - 1;
                                c = 1
                            } else s = function(o) {
                                p && a.p.loadComplete.call(a, o);
                                a.grid.hDiv.loading = false;
                                a.p.page++;
                                X(c - 1)
                            };
                            else n.npage != null && delete a.p.postData[n.npage];
                            b.extend(a.p.postData, e);
                            var r = !a.p.scroll ? 0: a.rows.length - 1;
                            if (b.isFunction(a.p.datatype)) a.p.datatype.call(a,
                            a.p.postData, "load_" + a.p.id);
                            else {
                                b.isFunction(a.p.beforeRequest) && a.p.beforeRequest.call(a);
                                l = a.p.datatype.toLowerCase();
                                switch (l) {
                                case "json":
                                case "jsonp":
                                case "xml":
                                case "script":
                                    b.ajax(b.extend({
                                        url:
                                        a.p.url,
                                        type: a.p.mtype,
                                        dataType: l,
                                        data: b.isFunction(a.p.serializeGridData) ? a.p.serializeGridData.call(a, a.p.postData) : a.p.postData,
                                        complete: function(o, v) {
                                            if (v == "success" || o.statusText == "OK" && o.status == "200") {
                                                l === "xml" ? qa(o.responseXML, a.grid.bDiv, r, c > 1, w) : ra(b.jgrid.parse(o.responseText), a.grid.bDiv,
                                                r, c > 1, w);
                                                s && s.call(a, o);
                                                d && a.grid.populateVisible()
                                            }
                                            fa()
                                        },
                                        error: function(o, v, x) {
                                            b.isFunction(a.p.loadError) && a.p.loadError.call(a, o, v, x);
                                            fa()
                                        },
                                        beforeSend: function(o) {
                                            ma();
                                            b.isFunction(a.p.loadBeforeSend) && a.p.loadBeforeSend.call(a, o)
                                        }
                                    },
                                    b.jgrid.ajaxOptions, a.p.ajaxGridOptions));
                                    if (a.p.loadonce || a.p.treeGrid) a.p.datatype = "local";
                                    break;
                                case "xmlstring":
                                    ma();
                                    e = b.jgrid.stringToDoc(a.p.datastr);
                                    p && a.p.loadComplete.call(a, e);
                                    qa(e, a.grid.bDiv);
                                    a.p.datatype = "local";
                                    a.p.datastr = null;
                                    fa();
                                    break;
                                case "jsonstring":
                                    ma();
                                    e = typeof a.p.datastr == "string" ? b.jgrid.parse(a.p.datastr) : a.p.datastr;
                                    p && a.p.loadComplete.call(a, e);
                                    ra(e, a.grid.bDiv);
                                    a.p.datatype = "local";
                                    a.p.datastr = null;
                                    fa();
                                    break;
                                case "local":
                                case "clientside":
                                    ma();
                                    a.p.datatype = "local";
                                    p && a.p.loadComplete.call(a, "");
                                    Ba();
                                    la(true, true);
                                    fa();
                                    break
                                }
                            }
                        }
                    },
                    ma = function() {
                        a.grid.hDiv.loading = true;
                        if (!a.p.hiddengrid) switch (a.p.loadui) {
                        case "disable":
                            break;
                        case "enable":
                            b("#load_" + a.p.id).show();
                            break;
                        case "block":
                            b("#lui_" + a.p.id).show();
                            b("#load_" + a.p.id).show();
                            break
                        }
                    },
                    fa = function() {
                        a.grid.hDiv.loading = false;
                        switch (a.p.loadui) {
                        case "disable":
                            break;
                        case "enable":
                            b("#load_" + a.p.id).hide();
                            break;
                        case "block":
                            b("#lui_" + a.p.id).hide();
                            b("#load_" + a.p.id).hide();
                            break
                        }
                    },
                    Ba = function() {
                        var c = /[\$,%]/g,
                        d = [],
                        e = 0,
                        l,
                        n,
                        s,
                        p = a.p.sortorder == "asc" ? 1: -1;
                        b.each(a.p.colModel,
                        function(r) {
                            if (this.index == a.p.sortname || this.name == a.p.sortname) {
                                e = a.p.lastsort = r;
                                l = this.sorttype;
                                return false
                            }
                        });
                        s = l == "float" || l == "number" || l == "currency" ?
                        function(r) {
                            r = parseFloat(r.replace(c, ""));
                            return isNaN(r) ?
                            0: r
                        }: l == "int" || l == "integer" ?
                        function(r) {
                            return J(r.replace(c, ""), 0)
                        }: l == "date" || l == "datetime" ?
                        function(r) {
                            return Ca(a.p.colModel[e].datefmt || "Y-m-d", r).getTime()
                        }: function(r) {
                            return b.trim(r.toUpperCase())
                        };
                        b.each(a.rows,
                        function(r, o) {
                            try {
                                n = b.unformat(b(o).children("td").eq(e), {
                                    rowId: o.id,
                                    colModel: a.p.colModel[e]
                                },
                                e, true)
                            } catch(v) {
                                n = b(o).children("td").eq(e).text()
                            }
                            o.sortKey = s(n);
                            d[r] = this
                        });
                        if (a.p.treeGrid) b(a).jqGrid("SortTree", p);
                        else {
                            d.sort(function(r, o) {
                                if (r.sortKey < o.sortKey) return - p;
                                if (r.sortKey >
                                o.sortKey) return p;
                                return 0
                            });
                            if (d[0]) {
                                b("td", d[0]).each(function(r) {
                                    b(this).css("width", g.headers[r].width + "px")
                                });
                                a.grid.cols = d[0].cells
                            }
                            var w = "";
                            if (a.p.altRows) w = a.p.altclass;
                            b.each(d,
                            function(r, o) {
                                if (w) r % 2 == 1 ? b(o).addClass(w) : b(o).removeClass(w);
                                b("tbody", a.grid.bDiv).append(o);
                                o.sortKey = null
                            })
                        }
                        a.grid.bDiv.scrollTop = 0
                    },
                    Ca = function(c, d) {
                        var e = {
                            m: 1,
                            d: 1,
                            y: 1970,
                            h: 0,
                            i: 0,
                            s: 0
                        },
                        l,
                        n,
                        s;
                        d = d.split(/[\\\/:_;.\t\T\s-]/);
                        c = c.split(/[\\\/:_;.\t\T\s-]/);
                        var p = b.jgrid.formatter.date.monthNames;
                        l = 0;
                        for (n = c.length; l <
                        n; l++) {
                            if (c[l] == "M") {
                                s = b.inArray(d[l], p);
                                if (s !== -1 && s < 12) d[l] = s + 1
                            }
                            if (c[l] == "F") {
                                s = b.inArray(d[l], p);
                                if (s !== -1 && s > 11) d[l] = s + 1 - 12
                            }
                            e[c[l].toLowerCase()] = parseInt(d[l], 10)
                        }
                        e.m = parseInt(e.m, 10) - 1;
                        c = e.y;
                        if (c >= 70 && c <= 99) e.y = 1900 + e.y;
                        else if (c >= 0 && c <= 69) e.y = 2E3 + e.y;
                        return new Date(e.y, e.m, e.d, e.h, e.i, e.s, 0)
                    };
                    u = function(c, d) {
                        var e = "",
                        l = "<table cellspacing='0' cellpadding='0' border='0' style='table-layout:auto;' class='ui-pg-table'><tbody><tr>",
                        n = "",
                        s,
                        p,
                        w,
                        r,
                        o = function(v) {
                            a.p.selrow = null;
                            if (a.p.multiselect) {
                                a.p.selarrrow =
                                [];
                                b("#cb_" + b.jgrid.jqID(a.p.id), a.grid.hDiv).attr("checked", false)
                            }
                            a.p.savedRow = [];
                            if (b.isFunction(a.p.onPaging)) if (a.p.onPaging.call(a, v) == "stop") return false;
                            return true
                        };
                        c = c.substr(1);
                        s = "pg_" + c;
                        p = c + "_left";
                        w = c + "_center";
                        r = c + "_right";
                        b("#" + c).append("<div id='" + s + "' class='ui-pager-control' role='group'><table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table' style='width:100%;table-layout:fixed;' role='row'><tbody><tr><td id='" + p + "' align='left'></td><td id='" + w + "' align='center' style='white-space:pre;'></td><td id='" +
                        r + "' align='right'></td></tr></tbody></table></div>").attr("dir", "ltr");
                        if (a.p.rowList.length > 0) {
                            n = "<td dir='" + m + "'>";
                            n += "<select class='ui-pg-selbox' role='listbox'>";
                            for (p = 0; p < a.p.rowList.length; p++) n += "<option role='option' value='" + a.p.rowList[p] + "'" + (a.p.rowNum == a.p.rowList[p] ? " selected": "") + ">" + a.p.rowList[p] + "</option>";
                            n += "</select></td>"
                        }
                        if (m == "rtl") l += n;
                        if (a.p.pginput === true) e = "<td dir='" + m + "'>" + b.jgrid.format(a.p.pgtext || "", "<input class='ui-pg-input' type='text' size='2' maxlength='7' value='0' role='textbox'/>",
                        "<span id='sp_1'></span>") + "</td>";
                        if (a.p.pgbuttons === true) {
                            p = ["first" + d, "prev" + d, "next" + d, "last" + d];
                            m == "rtl" && p.reverse();
                            l += "<td id='" + p[0] + "' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-first'></span></td>";
                            l += "<td id='" + p[1] + "' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-prev'></span></td>";
                            l += e != "" ? "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>" + e + "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>":
                            "";
                            l += "<td id='" + p[2] + "' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-next'></span></td>";
                            l += "<td id='" + p[3] + "' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-end'></span></td>"
                        } else if (e != "") l += e;
                        if (m == "ltr") l += n;
                        l += "</tr></tbody></table>";
                        a.p.viewrecords === true && b("td#" + c + "_" + a.p.recordpos, "#" + s).append("<div dir='" + m + "' style='text-align:" + a.p.recordpos + "' class='ui-paging-info'></div>");
                        b("td#" + c + "_" + a.p.pagerpos, "#" + s).append(l);
                        n = b(".ui-jqgrid").css("font-size") ||
                        "11px";
                        b("body").append("<div id='testpg' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:" + n + ";visibility:hidden;' ></div>");
                        l = b(l).clone().appendTo("#testpg").width();
                        b("#testpg").remove();
                        if (l > 0) {
                            if (e != "") l += 50;
                            b("td#" + c + "_" + a.p.pagerpos, "#" + s).width(l)
                        }
                        a.p._nvtd = [];
                        a.p._nvtd[0] = l ? Math.floor((a.p.width - l) / 2) : Math.floor(a.p.width / 3);
                        a.p._nvtd[1] = 0;
                        l = null;
                        b(".ui-pg-selbox", "#" + s).bind("change",
                        function() {
                            a.p.page = Math.round(a.p.rowNum * (a.p.page - 1) / this.value - 0.5) + 1;
                            a.p.rowNum = this.value;
                            if (d) b(".ui-pg-selbox", a.p.pager).val(this.value);
                            else a.p.toppager && b(".ui-pg-selbox", a.p.toppager).val(this.value);
                            if (!o("records")) return false;
                            X();
                            return false
                        });
                        if (a.p.pgbuttons === true) {
                            b(".ui-pg-button", "#" + s).hover(function() {
                                if (b(this).hasClass("ui-state-disabled")) this.style.cursor = "default";
                                else {
                                    b(this).addClass("ui-state-hover");
                                    this.style.cursor = "pointer"
                                }
                            },
                            function() {
                                if (!b(this).hasClass("ui-state-disabled")) {
                                    b(this).removeClass("ui-state-hover");
                                    this.style.cursor = "default"
                                }
                            });
                            b("#first" +
                            d + ", #prev" + d + ", #next" + d + ", #last" + d, "#" + c).click(function() {
                                var v = J(a.p.page, 1),
                                x = J(a.p.lastpage, 1),
                                z = false,
                                D = true,
                                N = true,
                                L = true,
                                P = true;
                                if (x === 0 || x === 1) P = L = N = D = false;
                                else if (x > 1 && v >= 1) if (v === 1) N = D = false;
                                else {
                                    if (! (v > 1 && v < x)) if (v === x) P = L = false
                                } else if (x > 1 && v === 0) {
                                    P = L = false;
                                    v = x - 1
                                }
                                if (this.id === "first" + d && D) {
                                    a.p.page = 1;
                                    z = true
                                }
                                if (this.id === "prev" + d && N) {
                                    a.p.page = v - 1;
                                    z = true
                                }
                                if (this.id === "next" + d && L) {
                                    a.p.page = v + 1;
                                    z = true
                                }
                                if (this.id === "last" + d && P) {
                                    a.p.page = x;
                                    z = true
                                }
                                if (z) {
                                    if (!o(this.id)) return false;
                                    X()
                                }
                                return false
                            })
                        }
                        a.p.pginput ===
                        true && b("input.ui-pg-input", "#" + s).keypress(function(v) {
                            if ((v.charCode ? v.charCode: v.keyCode ? v.keyCode: 0) == 13) {
                                a.p.page = b(this).val() > 0 ? b(this).val() : a.p.page;
                                if (!o("user")) return false;
                                X();
                                return false
                            }
                            return this
                        })
                    };
                    var xa = function(c, d, e, l) {
                        if (a.p.colModel[d].sortable) if (! (a.p.savedRow.length > 0)) {
                            if (!e) {
                                if (a.p.lastsort == d) if (a.p.sortorder == "asc") a.p.sortorder = "desc";
                                else {
                                    if (a.p.sortorder == "desc") a.p.sortorder = "asc"
                                } else a.p.sortorder = "asc";
                                a.p.page = 1
                            }
                            if (l) if (a.p.lastsort == d && a.p.sortorder == l) return;
                            else a.p.sortorder = l;
                            e = b("thead:first", a.grid.hDiv).get(0);
                            b("tr th:eq(" + a.p.lastsort + ") span.ui-grid-ico-sort", e).addClass("ui-state-disabled");
                            b("tr th:eq(" + a.p.lastsort + ")", e).attr("aria-selected", "false");
                            b("tr th:eq(" + d + ") span.ui-icon-" + a.p.sortorder, e).removeClass("ui-state-disabled");
                            b("tr th:eq(" + d + ")", e).attr("aria-selected", "true");
                            if (!a.p.viewsortcols[0]) if (a.p.lastsort != d) {
                                b("tr th:eq(" + a.p.lastsort + ") span.s-ico", e).hide();
                                b("tr th:eq(" + d + ") span.s-ico", e).show()
                            }
                            a.p.lastsort = d;
                            c = c.substring(5);
                            a.p.sortname = a.p.colModel[d].index || c;
                            e = a.p.sortorder;
                            if (b.isFunction(a.p.onSortCol)) if (a.p.onSortCol.call(a, c, d, e) == "stop") return;
                            if (a.p.datatype == "local") a.p.deselectAfterSort && b(a).jqGrid("resetSelection");
                            else {
                                a.p.selrow = null;
                                a.p.multiselect && b("#cb_" + b.jgrid.jqID(a.p.id), a.grid.hDiv).attr("checked", false);
                                a.p.selarrrow = [];
                                a.p.savedRow = [];
                                a.p.scroll && $(a.grid.bDiv, true)
                            }
                            a.p.subGrid && a.p.datatype == "local" && b("td.sgexpanded", "#" + a.p.id).each(function() {
                                b(this).trigger("click")
                            });
                            X();
                            if (a.p.sortname !=
                            c && d) a.p.lastsort = d
                        }
                    },
                    Da = function(c) {
                        var d = c,
                        e;
                        for (e = c + 1; e < a.p.colModel.length; e++) if (a.p.colModel[e].hidden !== true) {
                            d = e;
                            break
                        }
                        return d - c
                    },
                    Ea = function(c) {
                        var d,
                        e = {},
                        l = B ? 0: a.p.cellLayout;
                        for (d = e[0] = e[1] = e[2] = 0; d <= c; d++) if (a.p.colModel[d].hidden === false) e[0] += a.p.colModel[d].width + l;
                        if (a.p.direction == "rtl") e[0] = a.p.width - e[0];
                        e[0] -= a.grid.bDiv.scrollLeft;
                        if (b(a.grid.cDiv).is(":visible")) e[1] += b(a.grid.cDiv).height() + parseInt(b(a.grid.cDiv).css("padding-top"), 10) + parseInt(b(a.grid.cDiv).css("padding-bottom"),
                        10);
                        if (a.p.toolbar[0] == true && (a.p.toolbar[1] == "top" || a.p.toolbar[1] == "both")) e[1] += b(a.grid.uDiv).height() + parseInt(b(a.grid.uDiv).css("border-top-width"), 10) + parseInt(b(a.grid.uDiv).css("border-bottom-width"), 10);
                        if (a.p.toppager) e[1] += b(a.grid.topDiv).height() + parseInt(b(a.grid.topDiv).css("border-bottom-width"), 10);
                        e[2] += b(a.grid.bDiv).height() + b(a.grid.hDiv).height();
                        return e
                    };
                    this.p.id = this.id;
                    if (b.inArray(a.p.multikey, ["shiftKey", "altKey", "ctrlKey"]) == -1) a.p.multikey = false;
                    a.p.keyIndex = false;
                    for (j = 0; j < a.p.colModel.length; j++) if (a.p.colModel[j].key === true) {
                        a.p.keyIndex = j;
                        break
                    }
                    a.p.sortorder = a.p.sortorder.toLowerCase();
                    if (this.p.treeGrid === true) try {
                        b(this).jqGrid("setTreeGrid")
                    } catch(Ia) {}
                    if (this.p.subGrid) try {
                        b(a).jqGrid("setSubGrid")
                    } catch(Ja) {}
                    if (this.p.multiselect) {
                        this.p.colNames.unshift("<input id='cb_" + this.p.id + "' class='cbox' type='checkbox'/>");
                        this.p.colModel.unshift({
                            name: "cb",
                            width: B ? a.p.multiselectWidth + a.p.cellLayout: a.p.multiselectWidth,
                            sortable: false,
                            resizable: false,
                            hidedlg: true,
                            search: false,
                            align: "center",
                            fixed: true
                        })
                    }
                    if (this.p.rownumbers) {
                        this.p.colNames.unshift("");
                        this.p.colModel.unshift({
                            name: "rn",
                            width: a.p.rownumWidth,
                            sortable: false,
                            resizable: false,
                            hidedlg: true,
                            search: false,
                            align: "center",
                            fixed: true
                        })
                    }
                    a.p.xmlReader = b.extend(true, {
                        root: "rows",
                        row: "row",
                        page: "rows>page",
                        total: "rows>total",
                        records: "rows>records",
                        repeatitems: true,
                        cell: "cell",
                        id: "[id]",
                        userdata: "userdata",
                        subgrid: {
                            root: "rows",
                            row: "row",
                            repeatitems: true,
                            cell: "cell"
                        }
                    },
                    a.p.xmlReader);
                    a.p.jsonReader = b.extend(true,
                    {
                        root: "rows",
                        page: "page",
                        total: "total",
                        records: "records",
                        repeatitems: true,
                        cell: "cell",
                        id: "id",
                        userdata: "userdata",
                        subgrid: {
                            root: "rows",
                            repeatitems: true,
                            cell: "cell"
                        }
                    },
                    a.p.jsonReader);
                    if (a.p.scroll) {
                        a.p.pgbuttons = false;
                        a.p.pginput = false;
                        a.p.rowList = []
                    }
                    var H = "<thead><tr class='ui-jqgrid-labels' role='rowheader'>",
                    ya,
                    ga,
                    sa,
                    ha,
                    na,
                    I,
                    A,
                    ca;
                    ga = ca = "";
                    if (a.p.shrinkToFit === true && a.p.forceFit === true) for (j = a.p.colModel.length - 1; j >= 0; j--) if (!a.p.colModel[j].hidden) {
                        a.p.colModel[j].resizable = false;
                        break
                    }
                    if (a.p.viewsortcols[1] ==
                    "horizontal") {
                        ca = " ui-i-asc";
                        ga = " ui-i-desc"
                    }
                    ya = y ? "class='ui-th-div-ie'": "";
                    ca = "<span class='s-ico' style='display:none'><span sort='asc' class='ui-grid-ico-sort ui-icon-asc" + ca + " ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-" + m + "'></span>";
                    ca += "<span sort='desc' class='ui-grid-ico-sort ui-icon-desc" + ga + " ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-" + m + "'></span></span>";
                    for (j = 0; j < this.p.colNames.length; j++) {
                        H += "<th role='columnheader' class='ui-state-default ui-th-column ui-th-" +
                        m + "'>";
                        ga = a.p.colModel[j].index || a.p.colModel[j].name;
                        H += "<div id='jqgh_" + a.p.colModel[j].name + "' " + ya + ">" + a.p.colNames[j];
                        if (ga == a.p.sortname) a.p.lastsort = j;
                        H += ca + "</div></th>"
                    }
                    H += "</tr></thead>";
                    b(this).append(H);
                    b("thead tr:first th", this).hover(function() {
                        b(this).addClass("ui-state-hover")
                    },
                    function() {
                        b(this).removeClass("ui-state-hover")
                    });
                    if (this.p.multiselect) {
                        var za = true,
                        ta = [],
                        oa;
                        if (typeof a.p.onSelectAll !== "function") za = false;
                        b("#cb_" + b.jgrid.jqID(a.p.id), this).bind("click",
                        function() {
                            if (this.checked) {
                                b("[id^=jqg_]",
                                a.rows).attr("checked", true);
                                b(a.rows).each(function(c) {
                                    if (!b(this).hasClass("subgrid")) {
                                        b(this).addClass("ui-state-highlight").attr("aria-selected", "true");
                                        a.p.selarrrow[c] = a.p.selrow = this.id
                                    }
                                });
                                oa = true;
                                ta = []
                            } else {
                                b("[id^=jqg_]", a.rows).attr("checked", false);
                                b(a.rows).each(function(c) {
                                    if (!b(this).hasClass("subgrid")) {
                                        b(this).removeClass("ui-state-highlight").attr("aria-selected", "false");
                                        ta[c] = this.id
                                    }
                                });
                                a.p.selarrrow = [];
                                a.p.selrow = null;
                                oa = false
                            }
                            if (za) a.p.onSelectAll.call(a, oa ? a.p.selarrrow: ta, oa)
                        })
                    }
                    b.each(a.p.colModel,
                    function() {
                        if (!this.width) this.width = 150;
                        this.width = parseInt(this.width, 10)
                    });
                    if (a.p.autowidth === true) {
                        H = b(K).innerWidth();
                        a.p.width = H > 0 ? H: "nw"
                    } (function() {
                        var c = 0,
                        d = a.p.cellLayout,
                        e = 0,
                        l,
                        n = a.p.scrollOffset,
                        s,
                        p = false,
                        w,
                        r = 0,
                        o = 0,
                        v = 0,
                        x;
                        if (B) d = 0;
                        b.each(a.p.colModel,
                        function() {
                            if (typeof this.hidden === "undefined") this.hidden = false;
                            if (this.hidden === false) {
                                c += J(this.width, 0);
                                if (this.fixed) {
                                    r += this.width;
                                    o += this.width + d
                                } else e++;
                                v++
                            }
                        });
                        if (isNaN(a.p.width)) a.p.width = g.width = c;
                        else g.width = a.p.width;
                        a.p.tblwidth =
                        c;
                        if (a.p.shrinkToFit === false && a.p.forceFit === true) a.p.forceFit = false;
                        if (a.p.shrinkToFit === true && e > 0) {
                            w = g.width - d * e - o;
                            if (!isNaN(a.p.height)) {
                                w -= n;
                                p = true
                            }
                            c = 0;
                            b.each(a.p.colModel,
                            function(z) {
                                if (this.hidden === false && !this.fixed) {
                                    this.width = s = Math.floor(w / (a.p.tblwidth - r) * this.width);
                                    c += s;
                                    l = z
                                }
                            });
                            x = 0;
                            if (p) {
                                if (g.width - o - (c + d * e) !== n) x = g.width - o - (c + d * e) - n
                            } else if (!p && Math.abs(g.width - o - (c + d * e)) !== 1) x = g.width - o - (c + d * e);
                            a.p.colModel[l].width += x;
                            a.p.tblwidth = c + x + r + v * d
                        }
                    })();
                    b(K).css("width", g.width + "px").append("<div class='ui-jqgrid-resize-mark' id='rs_m" +
                    a.p.id + "'>&#160;</div>");
                    b(q).css("width", g.width + "px");
                    H = b("thead:first", a).get(0);
                    var ua = "<table role='grid' style='width:" + a.p.tblwidth + "px' class='ui-jqgrid-ftable' cellspacing='0' cellpadding='0' border='0'><tbody><tr role='row' class='ui-widget-content footrow footrow-" + m + "'>";
                    q = b("tr:first", H);
                    a.p.disableClick = false;
                    b("th", q).each(function(c) {
                        b("div", this);
                        sa = a.p.colModel[c].width;
                        if (typeof a.p.colModel[c].resizable === "undefined") a.p.colModel[c].resizable = true;
                        if (a.p.colModel[c].resizable) {
                            ha =
                            document.createElement("span");
                            b(ha).html("&#160;").addClass("ui-jqgrid-resize ui-jqgrid-resize-" + m); ! b.browser.opera && b(ha).css("cursor", "col-resize");
                            b(this).addClass(a.p.resizeclass)
                        } else ha = "";
                        b(this).css("width", sa + "px").prepend(ha);
                        a.p.colModel[c].hidden && b(this).css("display", "none");
                        g.headers[c] = {
                            width: sa,
                            el: this
                        };
                        na = a.p.colModel[c].sortable;
                        if (typeof na !== "boolean") na = a.p.colModel[c].sortable = true;
                        var d = a.p.colModel[c].name;
                        d == "cb" || d == "subgrid" || d == "rn" || a.p.viewsortcols[2] && b("div", this).addClass("ui-jqgrid-sortable");
                        if (na) if (a.p.viewsortcols[0]) {
                            b("div span.s-ico", this).show();
                            c == a.p.lastsort && b("div span.ui-icon-" + a.p.sortorder, this).removeClass("ui-state-disabled")
                        } else if (c == a.p.lastsort) {
                            b("div span.s-ico", this).show();
                            b("div span.ui-icon-" + a.p.sortorder, this).removeClass("ui-state-disabled")
                        }
                        ua += "<td role='gridcell' " + F(c, 0) + ">&#160;</td>"
                    }).mousedown(function(c) {
                        if (b(c.target).closest("th>span.ui-jqgrid-resize").length == 1) {
                            var d = b.jgrid.getCellIndex(this);
                            if (a.p.forceFit === true) a.p.nv = Da(d);
                            g.dragStart(d,
                            c, Ea(d));
                            return false
                        }
                    }).click(function(c) {
                        if (a.p.disableClick) return a.p.disableClick = false;
                        var d = "th>div.ui-jqgrid-sortable",
                        e,
                        l;
                        a.p.viewsortcols[2] || (d = "th>div>span>span.ui-grid-ico-sort");
                        c = b(c.target).closest(d);
                        if (c.length == 1) {
                            d = b.jgrid.getCellIndex(this);
                            if (!a.p.viewsortcols[2]) {
                                e = true;
                                l = c.attr("sort")
                            }
                            xa(b("div", this)[0].id, d, e, l);
                            return false
                        }
                    });
                    if (a.p.sortable && b.fn.sortable) try {
                        b(a).jqGrid("sortableColumns", q)
                    } catch(Ka) {}
                    ua += "</tr></tbody></table>";
                    this.appendChild(document.createElement("tbody"));
                    b(this).addClass("ui-jqgrid-btable");
                    q = b("<table class='ui-jqgrid-htable' style='width:" + a.p.tblwidth + "px' role='grid' aria-labelledby='gbox_" + this.id + "' cellspacing='0' cellpadding='0' border='0'></table>").append(H);
                    var R = a.p.caption && a.p.hiddengrid === true ? true: false;
                    H = b("<div class='ui-jqgrid-hbox" + (m == "rtl" ? "-rtl": "") + "'></div>");
                    g.hDiv = document.createElement("div");
                    b(g.hDiv).css({
                        width: g.width + "px"
                    }).addClass("ui-state-default ui-jqgrid-hdiv").append(H);
                    b(H).append(q);
                    R && b(g.hDiv).hide();
                    if (a.p.pager) {
                        if (typeof a.p.pager ==
                        "string") {
                            if (a.p.pager.substr(0, 1) != "#") a.p.pager = "#" + a.p.pager
                        } else a.p.pager = "#" + b(a.p.pager).attr("id");
                        b(a.p.pager).css({
                            width: g.width + "px"
                        }).appendTo(K).addClass("ui-state-default ui-jqgrid-pager ui-corner-bottom");
                        R && b(a.p.pager).hide();
                        u(a.p.pager, "")
                    }
                    a.p.cellEdit === false && a.p.hoverrows === true && b(a).bind("mouseover",
                    function(c) {
                        A = b(c.target).closest("tr.jqgrow");
                        b(A).attr("class") !== "subgrid" && b(A).addClass("ui-state-hover");
                        return false
                    }).bind("mouseout",
                    function(c) {
                        A = b(c.target).closest("tr.jqgrow");
                        b(A).removeClass("ui-state-hover");
                        return false
                    });
                    var Y,
                    Z;
                    b(a).before(g.hDiv).click(function(c) {
                        I = c.target;
                        var d = b(I).hasClass("cbox");
                        A = b(I, a.rows).closest("tr.jqgrow");
                        if (b(A).length === 0) return this;
                        var e = true;
                        if (b.isFunction(a.p.beforeSelectRow)) e = a.p.beforeSelectRow.call(a, A[0].id, c);
                        if (I.tagName == "A" || (I.tagName == "INPUT" || I.tagName == "TEXTAREA" || I.tagName == "OPTION" || I.tagName == "SELECT") && !d) return true;
                        if (e === true) {
                            if (a.p.cellEdit === true) if (a.p.multiselect && d) b(a).jqGrid("setSelection", A[0].id,
                            true);
                            else {
                                Y = A[0].rowIndex;
                                Z = b.jgrid.getCellIndex(I);
                                try {
                                    b(a).jqGrid("editCell", Y, Z, true)
                                } catch(l) {}
                            } else if (a.p.multikey) if (c[a.p.multikey]) b(a).jqGrid("setSelection", A[0].id, true);
                            else {
                                if (a.p.multiselect && d) {
                                    d = b("[id^=jqg_]", A).attr("checked");
                                    b("[id^=jqg_]", A).attr("checked", !d)
                                }
                            } else {
                                if (a.p.multiselect && a.p.multiboxonly) if (!d) {
                                    b(a.p.selarrrow).each(function(n, s) {
                                        n = a.rows.namedItem(s);
                                        b(n).removeClass("ui-state-highlight");
                                        b("#jqg_" + b.jgrid.jqID(s), n).attr("checked", false)
                                    });
                                    a.p.selarrrow = [];
                                    b("#cb_" +
                                    b.jgrid.jqID(a.p.id), a.grid.hDiv).attr("checked", false)
                                }
                                b(a).jqGrid("setSelection", A[0].id, true)
                            }
                            if (b.isFunction(a.p.onCellSelect)) {
                                Y = A[0].id;
                                Z = b.jgrid.getCellIndex(I);
                                a.p.onCellSelect.call(a, Y, Z, b(I).html(), c)
                            }
                        }
                        c.stopPropagation()
                    }).bind("reloadGrid",
                    function(c, d) {
                        if (a.p.treeGrid === true) a.p.datatype = a.p.treedatatype;
                        d && d.current && a.grid.selectionPreserver(a);
                        if (a.p.datatype == "local") b(a).jqGrid("resetSelection");
                        else if (!a.p.treeGrid) {
                            a.p.selrow = null;
                            if (a.p.multiselect) {
                                a.p.selarrrow = [];
                                b("#cb_" +
                                b.jgrid.jqID(a.p.id), a.grid.hDiv).attr("checked", false)
                            }
                            a.p.savedRow = [];
                            a.p.scroll && $(a.grid.bDiv)
                        }
                        if (d && d.page) {
                            c = d.page;
                            if (c > a.p.lastpage) c = a.p.lastpage;
                            if (c < 1) c = 1;
                            a.p.page = c;
                            a.grid.bDiv.scrollTop = a.grid.prevRowHeight ? (c - 1) * a.grid.prevRowHeight * a.p.rowNum: 0
                        }
                        if (a.grid.prevRowHeight && a.p.scroll) {
                            delete a.p.lastpage;
                            a.grid.populateVisible()
                        } else a.grid.populate();
                        return false
                    });
                    b.isFunction(this.p.ondblClickRow) && b(this).dblclick(function(c) {
                        I = c.target;
                        A = b(I, a.rows).closest("tr.jqgrow");
                        if (b(A).length ===
                        0) return false;
                        Y = A[0].rowIndex;
                        Z = b.jgrid.getCellIndex(I);
                        a.p.ondblClickRow.call(a, b(A).attr("id"), Y, Z, c);
                        return false
                    });
                    b.isFunction(this.p.onRightClickRow) && b(this).bind("contextmenu",
                    function(c) {
                        I = c.target;
                        A = b(I, a.rows).closest("tr.jqgrow");
                        if (b(A).length === 0) return false;
                        a.p.multiselect || b(a).jqGrid("setSelection", A[0].id, true);
                        Y = A[0].rowIndex;
                        Z = b.jgrid.getCellIndex(I);
                        a.p.onRightClickRow.call(a, b(A).attr("id"), Y, Z, c);
                        return false
                    });
                    g.bDiv = document.createElement("div");
                    b(g.bDiv).append(b('<div style="position:relative;' +
                    (y && b.browser.version < 8 ? "height:0.01%;": "") + '"></div>').append("<div></div>").append(this)).addClass("ui-jqgrid-bdiv").css({
                        height: a.p.height + (isNaN(a.p.height) ? "": "px"),
                        width: g.width + "px"
                    }).scroll(g.scrollGrid);
                    b("table:first", g.bDiv).css({
                        width: a.p.tblwidth + "px"
                    });
                    if (y) {
                        b("tbody", this).size() == 2 && b("tbody:first", this).remove();
                        a.p.multikey && b(g.bDiv).bind("selectstart",
                        function() {
                            return false
                        })
                    } else a.p.multikey && b(g.bDiv).bind("mousedown",
                    function() {
                        return false
                    });
                    R && b(g.bDiv).hide();
                    g.cDiv = document.createElement("div");
                    var va = a.p.hidegrid === true ? b("<a role='link' href='javascript:void(0)'/>").addClass("ui-jqgrid-titlebar-close HeaderButton").hover(function() {
                        va.addClass("ui-state-hover")
                    },
                    function() {
                        va.removeClass("ui-state-hover")
                    }).append("<span class='ui-icon ui-icon-circle-triangle-n'></span>").css(m == "rtl" ? "left": "right", "0px") : "";
                    b(g.cDiv).append(va).append("<span class='ui-jqgrid-title" + (m == "rtl" ? "-rtl": "") + "'>" + a.p.caption + "</span>").addClass("ui-jqgrid-titlebar ui-widget-header ui-corner-top ui-helper-clearfix");
                    b(g.cDiv).insertBefore(g.hDiv);
                    if (a.p.toolbar[0]) {
                        g.uDiv = document.createElement("div");
                        if (a.p.toolbar[1] == "top") b(g.uDiv).insertBefore(g.hDiv);
                        else a.p.toolbar[1] == "bottom" && b(g.uDiv).insertAfter(g.hDiv);
                        if (a.p.toolbar[1] == "both") {
                            g.ubDiv = document.createElement("div");
                            b(g.uDiv).insertBefore(g.hDiv).addClass("ui-userdata ui-state-default").attr("id", "t_" + this.id);
                            b(g.ubDiv).insertAfter(g.hDiv).addClass("ui-userdata ui-state-default").attr("id", "tb_" + this.id);
                            R && b(g.ubDiv).hide()
                        } else b(g.uDiv).width(g.width).addClass("ui-userdata ui-state-default").attr("id",
                        "t_" + this.id);
                        R && b(g.uDiv).hide()
                    }
                    if (a.p.toppager) {
                        a.p.toppager = a.p.id + "_toppager";
                        g.topDiv = b("<div id='" + a.p.toppager + "'></div>")[0];
                        a.p.toppager = "#" + a.p.toppager;
                        b(g.topDiv).insertBefore(g.hDiv).addClass("ui-state-default ui-jqgrid-toppager").width(g.width);
                        u(a.p.toppager, "_t")
                    }
                    if (a.p.footerrow) {
                        g.sDiv = b("<div class='ui-jqgrid-sdiv'></div>")[0];
                        H = b("<div class='ui-jqgrid-hbox" + (m == "rtl" ? "-rtl": "") + "'></div>");
                        b(g.sDiv).append(H).insertAfter(g.hDiv).width(g.width);
                        b(H).append(ua);
                        g.footers = b(".ui-jqgrid-ftable",
                        g.sDiv)[0].rows[0].cells;
                        if (a.p.rownumbers) g.footers[0].className = "ui-state-default jqgrid-rownum";
                        R && b(g.sDiv).hide()
                    }
                    if (a.p.caption) {
                        var Fa = a.p.datatype;
                        if (a.p.hidegrid === true) {
                            b(".ui-jqgrid-titlebar-close", g.cDiv).click(function(c) {
                                var d = b.isFunction(a.p.onHeaderClick);
                                if (a.p.gridstate == "visible") {
                                    b(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv", "#gview_" + a.p.id).slideUp("fast");
                                    a.p.pager && b(a.p.pager).slideUp("fast");
                                    a.p.toppager && b(a.p.toppager).slideUp("fast");
                                    if (a.p.toolbar[0] === true) {
                                        a.p.toolbar[1] ==
                                        "both" && b(g.ubDiv).slideUp("fast");
                                        b(g.uDiv).slideUp("fast")
                                    }
                                    a.p.footerrow && b(".ui-jqgrid-sdiv", "#gbox_" + a.p.id).slideUp("fast");
                                    b("span", this).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
                                    a.p.gridstate = "hidden";
                                    if (d) R || a.p.onHeaderClick.call(a, a.p.gridstate, c)
                                } else if (a.p.gridstate == "hidden") {
                                    b(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv", "#gview_" + a.p.id).slideDown("fast");
                                    a.p.pager && b(a.p.pager).slideDown("fast");
                                    a.p.toppager && b(a.p.toppager).slideDown("fast");
                                    if (a.p.toolbar[0] ===
                                    true) {
                                        a.p.toolbar[1] == "both" && b(g.ubDiv).slideDown("fast");
                                        b(g.uDiv).slideDown("fast")
                                    }
                                    a.p.footerrow && b(".ui-jqgrid-sdiv", "#gbox_" + a.p.id).slideDown("fast");
                                    b("span", this).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");
                                    if (R) {
                                        a.p.datatype = Fa;
                                        X();
                                        R = false
                                    }
                                    a.p.gridstate = "visible";
                                    d && a.p.onHeaderClick.call(a, a.p.gridstate, c)
                                }
                                return false
                            });
                            if (R) {
                                a.p.datatype = "local";
                                b(".ui-jqgrid-titlebar-close", g.cDiv).trigger("click")
                            }
                        }
                    } else b(g.cDiv).hide();
                    b(g.hDiv).after(g.bDiv).mousemove(function(c) {
                        if (g.resizing) {
                            g.dragMove(c);
                            return false
                        }
                    });
                    b(".ui-jqgrid-labels", g.hDiv).bind("selectstart",
                    function() {
                        return false
                    });
                    b(document).mouseup(function() {
                        if (g.resizing) {
                            g.dragEnd();
                            return false
                        }
                        return true
                    });
                    this.updateColumns = function() {
                        var c = this.rows[0],
                        d = this;
                        if (c) {
                            b("td", c).each(function(e) {
                                b(this).css("width", d.grid.headers[e].width + "px")
                            });
                            this.grid.cols = c.cells
                        }
                        return this
                    };
                    a.formatCol = F;
                    a.sortData = xa;
                    a.updatepager = la;
                    a.formatter = function(c, d, e, l, n) {
                        return M(c, d, e, l, n)
                    };
                    b.extend(g, {
                        populate: X,
                        emptyRows: $
                    });
                    this.grid = g;
                    a.addXmlData =
                    function(c) {
                        qa(c, a.grid.bDiv)
                    };
                    a.addJSONData = function(c) {
                        ra(c, a.grid.bDiv)
                    };
                    X();
                    a.p.hiddengrid = false;
                    b(window).unload(function() {
                        b(this).empty();
                        this.p = this.grid = null
                    })
                }
            }
        })
    };
    b.jgrid.extend({
        getGridParam: function(f) {
            var k = this[0];
            if (k.grid) return f ? typeof k.p[f] != "undefined" ? k.p[f] : null: k.p
        },
        setGridParam: function(f) {
            return this.each(function() {
                this.grid && typeof f === "object" && b.extend(true, this.p, f)
            })
        },
        getDataIDs: function() {
            var f = [],
            k = 0,
            i;
            this.each(function() {
                if ((i = this.rows.length) && i > 0) for (; k < i;) {
                    f[k] =
                    this.rows[k].id;
                    k++
                }
            });
            return f
        },
        setSelection: function(f, k) {
            return this.each(function() {
                function i(a, q) {
                    var u = b(h.grid.bDiv)[0].clientHeight,
                    y = b(h.grid.bDiv)[0].scrollTop,
                    B = h.rows[a].offsetTop + h.rows[a].clientHeight;
                    a = h.rows[a].offsetTop;
                    if (q == "d") if (B >= u) b(h.grid.bDiv)[0].scrollTop = y + B - a;
                    if (q == "u") if (a < y) b(h.grid.bDiv)[0].scrollTop = y - B + a
                }
                var h = this,
                g,
                j,
                m;
                if (f !== undefined) {
                    k = k === false ? false: true;
                    j = h.rows.namedItem(f + "");
                    if (j !== null) {
                        if (h.p.selrow && h.p.scrollrows === true) {
                            g = h.rows.namedItem(h.p.selrow).rowIndex;
                            m = h.rows.namedItem(f).rowIndex;
                            if (m >= 0) m > g ? i(m, "d") : i(m, "u")
                        }
                        if (h.p.multiselect) {
                            h.p.selrow = j.id;
                            m = b.inArray(h.p.selrow, h.p.selarrrow);
                            if (m === -1) {
                                j.className !== "ui-subgrid" && b(j).addClass("ui-state-highlight").attr("aria-selected", "true");
                                g = true;
                                b("#jqg_" + b.jgrid.jqID(h.p.selrow), h.rows[j.rowIndex]).attr("checked", g);
                                h.p.selarrrow.push(h.p.selrow);
                                h.p.onSelectRow && k && h.p.onSelectRow.call(h, h.p.selrow, g)
                            } else {
                                j.className !== "ui-subgrid" && b(j).removeClass("ui-state-highlight").attr("aria-selected", "false");
                                g = false;
                                b("#jqg_" + b.jgrid.jqID(h.p.selrow), h.rows[j.rowIndex]).attr("checked", g);
                                h.p.selarrrow.splice(m, 1);
                                h.p.onSelectRow && k && h.p.onSelectRow.call(h, h.p.selrow, g);
                                j = h.p.selarrrow[0];
                                h.p.selrow = j === undefined ? null: j
                            }
                        } else if (j.className !== "ui-subgrid") {
                            h.p.selrow && b("tr#" + b.jgrid.jqID(h.p.selrow), h.grid.bDiv).removeClass("ui-state-highlight").attr("aria-selected", "false");
                            h.p.selrow = j.id;
                            b(j).addClass("ui-state-highlight").attr("aria-selected", "true");
                            h.p.onSelectRow && k && h.p.onSelectRow.call(h, h.p.selrow,
                            true)
                        }
                    }
                }
            })
        },
        resetSelection: function() {
            return this.each(function() {
                var f = this,
                k;
                if (f.p.multiselect) {
                    b(f.p.selarrrow).each(function(i, h) {
                        k = f.rows.namedItem(h);
                        b(k).removeClass("ui-state-highlight").attr("aria-selected", "false");
                        b("#jqg_" + b.jgrid.jqID(h), k).attr("checked", false)
                    });
                    b("#cb_" + b.jgrid.jqID(f.p.id), f.grid.hDiv).attr("checked", false);
                    f.p.selarrrow = []
                } else if (f.p.selrow) {
                    b("tr#" + b.jgrid.jqID(f.p.selrow), f.grid.bDiv).removeClass("ui-state-highlight").attr("aria-selected", "false");
                    f.p.selrow =
                    null
                }
                f.p.savedRow = []
            })
        },
        getRowData: function(f) {
            var k = {},
            i,
            h = false,
            g,
            j = 0;
            this.each(function() {
                var m = this,
                a,
                q;
                if (typeof f == "undefined") {
                    h = true;
                    i = [];
                    g = m.rows.length
                } else {
                    q = m.rows.namedItem(f);
                    if (!q) return k;
                    g = 1
                }
                for (; j < g;) {
                    if (h) q = m.rows[j];
                    b("td", q).each(function(u) {
                        a = m.p.colModel[u].name;
                        if (a !== "cb" && a !== "subgrid") if (m.p.treeGrid === true && a == m.p.ExpandColumn) k[a] = b.jgrid.htmlDecode(b("span:first", this).html());
                        else try {
                            k[a] = b.unformat(this, {
                                rowId: q.id,
                                colModel: m.p.colModel[u]
                            },
                            u)
                        } catch(y) {
                            k[a] = b.jgrid.htmlDecode(b(this).html())
                        }
                    });
                    j++;
                    if (h) {
                        i.push(k);
                        k = {}
                    }
                }
            });
            return i ? i: k
        },
        delRowData: function(f) {
            var k = false,
            i,
            h,
            g;
            this.each(function() {
                var j = this;
                if (i = j.rows.namedItem(f)) {
                    g = i.rowIndex;
                    b(i).remove();
                    j.p.records--;
                    j.p.reccount--;
                    j.updatepager(true, false);
                    k = true;
                    if (j.p.multiselect) {
                        h = b.inArray(f, j.p.selarrrow);
                        h != -1 && j.p.selarrrow.splice(h, 1)
                    }
                    if (f == j.p.selrow) j.p.selrow = null
                } else return false;
                g == 0 && k && j.updateColumns();
                if (j.p.altRows === true && k) {
                    var m = j.p.altclass;
                    b(j.rows).each(function(a) {
                        a % 2 == 1 ? b(this).addClass(m) : b(this).removeClass(m)
                    })
                }
            });
            return k
        },
        setRowData: function(f, k, i) {
            var h,
            g = false;
            this.each(function() {
                var j = this,
                m,
                a,
                q = typeof i;
                if (!j.grid) return false;
                a = j.rows.namedItem(f);
                if (!a) return false;
                k && b(this.p.colModel).each(function(u) {
                    h = this.name;
                    if (k[h] != undefined) {
                        m = j.formatter(f, k[h], u, k, "edit");
                        j.p.treeGrid === true && h == j.p.ExpandColumn ? b("td:eq(" + u + ") > span:first", a).html(m).attr("title", b.jgrid.stripHtml(m)) : b("td:eq(" + u + ")", a).html(m).attr("title", b.jgrid.stripHtml(m));
                        g = true
                    }
                });
                if (q === "string") b(a).addClass(i);
                else q === "object" &&
                b(a).css(i)
            });
            return g
        },
        addRowData: function(f, k, i, h) {
            i || (i = "last");
            var g = false,
            j,
            m,
            a,
            q,
            u,
            y,
            B,
            K,
            J = "",
            F,
            S,
            M;
            if (k) {
                if (b.isArray(k)) {
                    F = true;
                    i = "last";
                    S = f
                } else {
                    k = [k];
                    F = false
                }
                this.each(function() {
                    var t = this,
                    ia = k.length;
                    u = t.p.rownumbers === true ? 1: 0;
                    a = t.p.multiselect === true ? 1: 0;
                    q = t.p.subGrid === true ? 1: 0;
                    if (!F) if (typeof f != "undefined") f += "";
                    else {
                        f = t.p.records + 1 + "";
                        if (t.p.keyIndex !== false) {
                            cmn = t.p.colModel[t.p.keyIndex + a + q + u].name;
                            if (typeof k[0][cmn] != "undefined") f = k[0][cmn]
                        }
                    }
                    M = t.p.altclass;
                    for (var aa = 0, ja = b.isFunction(t.p.afterInsertRow) ?
                    true: false; aa < ia;) {
                        data = k[aa];
                        m = "";
                        if (F) {
                            try {
                                f = data[S]
                            } catch(pa) {
                                f = t.p.records + 1
                            }
                            var $ = t.p.altRows === true ? (t.rows.length - 1) % 2 == 0 ? M: "": ""
                        }
                        if (u) {
                            J = t.formatCol(u, 1);
                            m += '<td role="gridcell" class="ui-state-default jqgrid-rownum" ' + J + ">0</td>"
                        }
                        if (a) {
                            K = '<input type="checkbox" id="jqg_' + f + '" class="cbox"/>';
                            J = t.formatCol(u, 1);
                            m += '<td role="gridcell" ' + J + ">" + K + "</td>"
                        }
                        if (q) m += b(t).jqGrid("addSubGridCell", a + u, 1);
                        for (B = a + q + u; B < this.p.colModel.length; B++) {
                            j = this.p.colModel[B].name;
                            K = t.formatter(f, data[j], B,
                            data, "add");
                            J = t.formatCol(B, 1);
                            m += '<td role="gridcell" ' + J + ' title="' + b.jgrid.stripHtml(K) + '">' + K + "</td>"
                        }
                        m = '<tr id="' + f + '" role="row" class="ui-widget-content jqgrow ui-row-' + t.p.direction + " " + $ + '">' + m + "</tr>";
                        if (t.p.subGrid === true) {
                            m = b(m)[0];
                            b(t).jqGrid("addSubGrid", m, a + u)
                        }
                        if (t.rows.length === 0) b("table:first", t.grid.bDiv).append(m);
                        else switch (i) {
                        case "last":
                            b(t.rows[t.rows.length - 1]).after(m);
                            break;
                        case "first":
                            b(t.rows[0]).before(m);
                            break;
                        case "after":
                            if (y = t.rows.namedItem(h)) b(t.rows[y.rowIndex +
                            1]).hasClass("ui-subgrid") ? b(t.rows[y.rowIndex + 1]).after(m) : b(y).after(m);
                            break;
                        case "before":
                            if (y = t.rows.namedItem(h)) {
                                b(y).before(m);
                                y = y.rowIndex
                            }
                            break
                        }
                        t.p.records++;
                        t.p.reccount++;
                        if (!t.grid.cols || !t.grid.cols.length) t.grid.cols = t.rows[0].cells;
                        if (i === "first" || i === "before" && y <= 1 || t.rows.length === 1) t.updateColumns();
                        ja && t.p.afterInsertRow(t, f, data);
                        aa++
                    }
                    if (t.p.altRows === true && !F) if (i == "last")(t.rows.length - 1) % 2 == 1 && b(t.rows[t.rows.length - 1]).addClass(M);
                    else b(t.rows).each(function(T) {
                        T % 2 == 1 ? b(this).addClass(M) :
                        b(this).removeClass(M)
                    });
                    t.updatepager(true, true);
                    g = true
                })
            }
            return g
        },
        footerData: function(f, k, i) {
            function h(a) {
                for (var q in a) return false;
                return true
            }
            var g,
            j = false,
            m = {};
            if (typeof f == "undefined") f = "get";
            if (typeof i != "boolean") i = true;
            f = f.toLowerCase();
            this.each(function() {
                var a = this,
                q;
                if (!a.grid || !a.p.footerrow) return false;
                if (f == "set") if (h(k)) return false;
                j = true;
                b(this.p.colModel).each(function(u) {
                    g = this.name;
                    if (f == "set") {
                        if (k[g] != undefined) {
                            q = i ? a.formatter("", k[g], u, k, "edit") : k[g];
                            b("tr.footrow td:eq(" +
                            u + ")", a.grid.sDiv).html(q).attr("title", b.jgrid.stripHtml(q));
                            j = true
                        }
                    } else if (f == "get") m[g] = b("tr.footrow td:eq(" + u + ")", a.grid.sDiv).html()
                })
            });
            return f == "get" ? m: j
        },
        ShowHideCol: function(f, k) {
            return this.each(function() {
                var i = this,
                h = false;
                if (i.grid) {
                    if (typeof f === "string") f = [f];
                    k = k != "none" ? "": "none";
                    var g = k == "" ? true: false;
                    b(this.p.colModel).each(function(j) {
                        if (b.inArray(this.name, f) !== -1 && this.hidden === g) {
                            b("tr", i.grid.hDiv).each(function() {
                                b("th:eq(" + j + ")", this).css("display", k)
                            });
                            b(i.rows).each(function(m) {
                                b("td:eq(" +
                                j + ")", i.rows[m]).css("display", k)
                            });
                            i.p.footerrow && b("td:eq(" + j + ")", i.grid.sDiv).css("display", k);
                            if (k == "none") i.p.tblwidth -= this.width;
                            else i.p.tblwidth += this.width;
                            this.hidden = !g;
                            h = true
                        }
                    });
                    if (h === true) {
                        b("table:first", i.grid.hDiv).width(i.p.tblwidth);
                        b("table:first", i.grid.bDiv).width(i.p.tblwidth);
                        i.grid.hDiv.scrollLeft = i.grid.bDiv.scrollLeft;
                        if (i.p.footerrow) {
                            b("table:first", i.grid.sDiv).width(i.p.tblwidth);
                            i.grid.sDiv.scrollLeft = i.grid.bDiv.scrollLeft
                        }
                    }
                }
            })
        },
        hideCol: function(f) {
            return this.each(function() {
                b(this).jqGrid("ShowHideCol",
                f, "none")
            })
        },
        showCol: function(f) {
            return this.each(function() {
                b(this).jqGrid("ShowHideCol", f, "")
            })
        },
        remapColumns: function(f, k, i) {
            function h(m) {
                var a;
                a = m.length ? b.makeArray(m) : b.extend({},
                m);
                b.each(f,
                function(q) {
                    m[q] = a[this]
                })
            }
            function g(m, a) {
                b(">tr" + (a || ""), m).each(function() {
                    var q = this,
                    u = b.makeArray(q.cells);
                    b.each(f,
                    function() {
                        var y = u[this];
                        y && q.appendChild(y)
                    })
                })
            }
            var j = this.get(0);
            h(j.p.colModel);
            h(j.p.colNames);
            h(j.grid.headers);
            g(b("thead:first", j.grid.hDiv), i && ":not(.ui-jqgrid-labels)");
            k && g(b("tbody:first",
            j.grid.bDiv), ".jqgrow");
            j.p.footerrow && g(b("tbody:first", j.grid.sDiv));
            if (j.p.remapColumns) if (j.p.remapColumns.length) h(j.p.remapColumns);
            else j.p.remapColumns = b.makeArray(f);
            j.p.lastsort = b.inArray(j.p.lastsort, f);
            if (j.p.treeGrid) j.p.expColInd = b.inArray(j.p.expColInd, f)
        },
        setGridWidth: function(f, k) {
            return this.each(function() {
                var i = this,
                h,
                g = 0,
                j = i.p.cellLayout,
                m,
                a = 0,
                q = false,
                u = i.p.scrollOffset,
                y,
                B = 0,
                K = 0,
                J = 0,
                F;
                if (i.grid) {
                    if (typeof k != "boolean") k = i.p.shrinkToFit;
                    if (!isNaN(f)) {
                        f = parseInt(f, 10);
                        i.grid.width =
                        i.p.width = f;
                        b("#gbox_" + i.p.id).css("width", f + "px");
                        b("#gview_" + i.p.id).css("width", f + "px");
                        b(i.grid.bDiv).css("width", f + "px");
                        b(i.grid.hDiv).css("width", f + "px");
                        i.p.pager && b(i.p.pager).css("width", f + "px");
                        if (i.p.toolbar[0] === true) {
                            b(i.grid.uDiv).css("width", f + "px");
                            i.p.toolbar[1] == "both" && b(i.grid.ubDiv).css("width", f + "px")
                        }
                        i.p.footerrow && b(i.grid.sDiv).css("width", f + "px");
                        if (k === false && i.p.forceFit == true) i.p.forceFit = false;
                        if (k === true) {
                            if (b.browser.safari) j = 0;
                            b.each(i.p.colModel,
                            function() {
                                if (this.hidden ===
                                false) {
                                    g += parseInt(this.width, 10);
                                    if (this.fixed) {
                                        K += this.width;
                                        B += this.width + j
                                    } else a++;
                                    J++
                                }
                            });
                            if (a != 0) {
                                i.p.tblwidth = g;
                                y = f - j * a - B;
                                if (!isNaN(i.p.height)) if (b(i.grid.bDiv)[0].clientHeight < b(i.grid.bDiv)[0].scrollHeight) {
                                    q = true;
                                    y -= u
                                }
                                g = 0;
                                var S = i.grid.cols.length > 0;
                                b.each(i.p.colModel,
                                function(M) {
                                    if (this.hidden === false && !this.fixed) {
                                        this.width = h = Math.floor(y / (i.p.tblwidth - K) * this.width);
                                        g += h;
                                        i.grid.headers[M].width = h;
                                        i.grid.headers[M].el.style.width = h + "px";
                                        if (i.p.footerrow) i.grid.footers[M].style.width =
                                        h + "px";
                                        if (S) i.grid.cols[M].style.width = h + "px";
                                        m = M
                                    }
                                });
                                F = 0;
                                if (q) {
                                    if (f - B - (g + j * a) !== u) F = f - B - (g + j * a) - u
                                } else if (Math.abs(f - B - (g + j * a)) !== 1) F = f - B - (g + j * a);
                                i.p.colModel[m].width += F;
                                h = i.p.colModel[m].width;
                                i.grid.headers[m].width = h;
                                i.grid.headers[m].el.style.width = h + "px";
                                if (S) i.grid.cols[m].style.width = h + "px";
                                i.p.tblwidth = g + F + K + j * J;
                                b("table:first", i.grid.bDiv).css("width", i.p.tblwidth + "px");
                                b("table:first", i.grid.hDiv).css("width", i.p.tblwidth + "px");
                                i.grid.hDiv.scrollLeft = i.grid.bDiv.scrollLeft;
                                if (i.p.footerrow) {
                                    i.grid.footers[m].style.width =
                                    h + "px";
                                    b("table:first", i.grid.sDiv).css("width", i.p.tblwidth + "px")
                                }
                            }
                        }
                    }
                }
            })
        },
        setGridHeight: function(f) {
            return this.each(function() {
                var k = this;
                if (k.grid) {
                    b(k.grid.bDiv).css({
                        height: f + (isNaN(f) ? "": "px")
                    });
                    k.p.height = f;
                    k.p.scroll && k.grid.populateVisible()
                }
            })
        },
        setCaption: function(f) {
            return this.each(function() {
                this.p.caption = f;
                b("span.ui-jqgrid-title", this.grid.cDiv).html(f);
                b(this.grid.cDiv).show()
            })
        },
        setLabel: function(f, k, i, h) {
            return this.each(function() {
                var g = this,
                j = -1;
                if (g.grid) {
                    if (isNaN(f)) b(g.p.colModel).each(function(q) {
                        if (this.name ==
                        f) {
                            j = q;
                            return false
                        }
                    });
                    else j = parseInt(f, 10);
                    if (j >= 0) {
                        var m = b("tr.ui-jqgrid-labels th:eq(" + j + ")", g.grid.hDiv);
                        if (k) {
                            var a = b(".s-ico", m);
                            b("[id^=jqgh_]", m).empty().html(k).append(a);
                            g.p.colNames[j] = k
                        }
                        if (i) typeof i === "string" ? b(m).addClass(i) : b(m).css(i);
                        typeof h === "object" && b(m).attr(h)
                    }
                }
            })
        },
        setCell: function(f, k, i, h, g) {
            return this.each(function() {
                var j = this,
                m = -1,
                a;
                if (j.grid) {
                    if (isNaN(k)) b(j.p.colModel).each(function(u) {
                        if (this.name == k) {
                            m = u;
                            return false
                        }
                    });
                    else m = parseInt(k, 10);
                    if (m >= 0) if (a = j.rows.namedItem(f)) {
                        var q =
                        b("td:eq(" + m + ")", a);
                        if (i !== "") {
                            a = j.formatter(f, i, m, a, "edit");
                            j.p.treeGrid && b(".tree-wrap", b(q)).length > 0 ? b("span", b(q)).html(a).attr("title", b.jgrid.stripHtml(a)) : b(q).html(a).attr("title", b.jgrid.stripHtml(a))
                        }
                        if (typeof h === "string") h ? b(q).addClass(h) : b(q).removeClass();
                        else h && b(q).css(h);
                        typeof g === "object" && b(q).attr(g)
                    }
                }
            })
        },
        getCell: function(f, k) {
            var i = false;
            this.each(function() {
                var h = this,
                g = -1;
                if (h.grid) {
                    if (isNaN(k)) b(h.p.colModel).each(function(a) {
                        if (this.name === k) {
                            g = a;
                            return false
                        }
                    });
                    else g =
                    parseInt(k, 10);
                    if (g >= 0) {
                        var j = h.rows.namedItem(f);
                        if (j) try {
                            i = b.unformat(b("td:eq(" + g + ")", j), {
                                rowId: j.id,
                                colModel: h.p.colModel[g]
                            },
                            g)
                        } catch(m) {
                            i = b.jgrid.htmlDecode(b("td:eq(" + g + ")", j).html())
                        }
                    }
                }
            });
            return i
        },
        getCol: function(f, k, i) {
            var h = [],
            g,
            j = 0;
            k = typeof k != "boolean" ? false: k;
            if (typeof i == "undefined") i = false;
            this.each(function() {
                var m = this,
                a = -1;
                if (m.grid) {
                    if (isNaN(f)) b(m.p.colModel).each(function(B) {
                        if (this.name === f) {
                            a = B;
                            return false
                        }
                    });
                    else a = parseInt(f, 10);
                    if (a >= 0) {
                        var q = m.rows.length,
                        u = 0;
                        if (q && q >
                        0) {
                            for (; u < q;) {
                                try {
                                    g = b.unformat(b(m.rows[u].cells[a]), {
                                        rowId: m.rows[u].id,
                                        colModel: m.p.colModel[a]
                                    },
                                    a)
                                } catch(y) {
                                    g = b.jgrid.htmlDecode(m.rows[u].cells[a].innerHTML)
                                }
                                i ? (j += parseFloat(g)) : k ? h.push({
                                    id: m.rows[u].id,
                                    value: g
                                }) : (h[u] = g);
                                u++
                            }
                            if (i) switch (i.toLowerCase()) {
                            case "sum":
                                h = j;
                                break;
                            case "avg":
                                h = j / q;
                                break;
                            case "count":
                                h = q;
                                break
                            }
                        }
                    }
                }
            });
            return h
        },
        clearGridData: function(f) {
            return this.each(function() {
                var k = this;
                if (k.grid) {
                    if (typeof f != "boolean") f = false;
                    b("tbody:first tr", k.grid.bDiv).remove();
                    k.p.footerrow &&
                    f && b(".ui-jqgrid-ftable td", k.grid.sDiv).html("&#160;");
                    k.p.selrow = null;
                    k.p.selarrrow = [];
                    k.p.savedRow = [];
                    k.p.records = 0;
                    k.p.page = "0";
                    k.p.lastpage = "0";
                    k.p.reccount = 0;
                    k.updatepager(true, false)
                }
            })
        },
        getInd: function(f, k) {
            var i = false,
            h;
            this.each(function() {
                if (h = this.rows.namedItem(f)) i = k === true ? h: h.rowIndex
            });
            return i
        }
    })
})(jQuery);
 (function(c) {
    function u(a, b, d, e, h) {
        var g = b;
        if (c.fn.fmatter[a]) g = c.fn.fmatter[a](b, d, e, h);
        return g
    }
    c.fmatter = {};
    c.fn.fmatter = function(a, b, d, e, h) {
        d = c.extend({},
        c.jgrid.formatter, d);
        return u(a, b, d, e, h)
    };
    c.fmatter.util = {
        NumberFormat: function(a, b) {
            isNumber(a) || (a *= 1);
            if (isNumber(a)) {
                var d = a < 0,
                e = a + "",
                h = b.decimalSeparator ? b.decimalSeparator: ".";
                if (isNumber(b.decimalPlaces)) {
                    var g = b.decimalPlaces;
                    e = Math.pow(10, g);
                    e = Math.round(a * e) / e + "";
                    a = e.lastIndexOf(".");
                    if (g > 0) {
                        if (a < 0) {
                            e += h;
                            a = e.length - 1
                        } else if (h !== ".") e =
                        e.replace(".", h);
                        for (; e.length - 1 - a < g;) e += "0"
                    }
                }
                if (b.thousandsSeparator) {
                    g = b.thousandsSeparator;
                    a = e.lastIndexOf(h);
                    a = a > -1 ? a: e.length;
                    h = e.substring(a);
                    for (var f = -1, i = a; i > 0; i--) {
                        f++;
                        if (f % 3 === 0 && i !== a && (!d || i > 1)) h = g + h;
                        h = e.charAt(i - 1) + h
                    }
                    e = h
                }
                e = b.prefix ? b.prefix + e: e;
                return e = b.suffix ? e + b.suffix: e
            } else return a
        },
        DateFormat: function(a, b, d, e) {
            var h = function(m, r) {
                m = String(m);
                for (r = parseInt(r) || 2; m.length < r;) m = "0" + m;
                return m
            },
            g = {
                m: 1,
                d: 1,
                y: 1970,
                h: 0,
                i: 0,
                s: 0
            },
            f = 0,
            i,
            k,
            j = ["i18n"];
            j.i18n = {
                dayNames: e.dayNames,
                monthNames: e.monthNames
            };
            if (a in e.masks) a = e.masks[a];
            b = b.split(/[\\\/:_;.\t\T\s-]/);
            a = a.split(/[\\\/:_;.\t\T\s-]/);
            i = 0;
            for (k = a.length; i < k; i++) {
                if (a[i] == "M") {
                    f = c.inArray(b[i], j.i18n.monthNames);
                    if (f !== -1 && f < 12) b[i] = f + 1
                }
                if (a[i] == "F") {
                    f = c.inArray(b[i], j.i18n.monthNames);
                    if (f !== -1 && f > 11) b[i] = f + 1 - 12
                }
                g[a[i].toLowerCase()] = parseInt(b[i], 10)
            }
            g.m = parseInt(g.m) - 1;
            f = g.y;
            if (f >= 70 && f <= 99) g.y = 1900 + g.y;
            else if (f >= 0 && f <= 69) g.y = 2E3 + g.y;
            f = new Date(g.y, g.m, g.d, g.h, g.i, g.s, 0);
            if (d in e.masks) d = e.masks[d];
            else d || (d = "Y-m-d");
            g = f.getHours();
            a = f.getMinutes();
            b = f.getDate();
            i = f.getMonth() + 1;
            k = f.getTimezoneOffset();
            var l = f.getSeconds(),
            o = f.getMilliseconds(),
            n = f.getDay(),
            p = f.getFullYear(),
            q = (n + 6) % 7 + 1,
            s = (new Date(p, i - 1, b) - new Date(p, 0, 1)) / 864E5,
            t = {
                d: h(b),
                D: j.i18n.dayNames[n],
                j: b,
                l: j.i18n.dayNames[n + 7],
                N: q,
                S: e.S(b),
                w: n,
                z: s,
                W: q < 5 ? Math.floor((s + q - 1) / 7) + 1: Math.floor((s + q - 1) / 7) || (((new Date(p - 1, 0, 1)).getDay() + 6) % 7 < 4 ? 53: 52),
                F: j.i18n.monthNames[i - 1 + 12],
                m: h(i),
                M: j.i18n.monthNames[i - 1],
                n: i,
                t: "?",
                L: "?",
                o: "?",
                Y: p,
                y: String(p).substring(2),
                a: g < 12 ? e.AmPm[0] :
                e.AmPm[1],
                A: g < 12 ? e.AmPm[2] : e.AmPm[3],
                B: "?",
                g: g % 12 || 12,
                G: g,
                h: h(g % 12 || 12),
                H: h(g),
                i: h(a),
                s: h(l),
                u: o,
                e: "?",
                I: "?",
                O: (k > 0 ? "-": "+") + h(Math.floor(Math.abs(k) / 60) * 100 + Math.abs(k) % 60, 4),
                P: "?",
                T: (String(f).match(/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g) || [""]).pop().replace(/[^-+\dA-Z]/g, ""),
                Z: "?",
                c: "?",
                r: "?",
                U: Math.floor(f / 1E3)
            };
            return d.replace(/\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g,
            function(m) {
                return m in
                t ? t[m] : m.substring(1)
            })
        }
    };
    c.fn.fmatter.defaultFormat = function(a, b) {
        return isValue(a) && a !== "" ? a: b.defaultValue ? b.defaultValue: "&#160;"
    };
    c.fn.fmatter.email = function(a, b) {
        return isEmpty(a) ? c.fn.fmatter.defaultFormat(a, b) : '<a href="mailto:' + a + '">' + a + "</a>"
    };
    c.fn.fmatter.checkbox = function(a, b) {
        var d = c.extend({},
        b.checkbox);
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        b = d.disabled === true ? "disabled": "";
        if (isEmpty(a) || isUndefined(a)) a = c.fn.fmatter.defaultFormat(a, d);
        a += "";
        a = a.toLowerCase();
        return '<input type="checkbox" ' + (a.search(/(false|0|no|off)/i) < 0 ? " checked='checked' ": "") + ' value="' + a + '" offval="no" ' + b + "/>"
    };
    c.fn.fmatter.link = function(a, b) {
        var d = {
            target: b.target
        },
        e = "";
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        if (d.target) e = "target=" + d.target;
        return isEmpty(a) ? c.fn.fmatter.defaultFormat(a, b) : "<a " + e + ' href="' + a + '">' + a + "</a>"
    };
    c.fn.fmatter.showlink = function(a, b) {
        var d = {
            baseLinkUrl: b.baseLinkUrl,
            showAction: b.showAction,
            addParam: b.addParam || "",
            target: b.target,
            idName: b.idName
        },
        e = "";
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        if (d.target) e = "target=" + d.target;
        idUrl = d.baseLinkUrl + d.showAction + "?" + d.idName + "=" + b.rowId + d.addParam;
        return isString(a) ? "<a " + e + ' href="' + idUrl + '">' + a + "</a>": c.fn.fmatter.defaultFormat(a, b)
    };
    c.fn.fmatter.integer = function(a, b) {
        var d = c.extend({},
        b.integer);
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        if (isEmpty(a)) return d.defaultValue;
        return c.fmatter.util.NumberFormat(a, d)
    };
    c.fn.fmatter.number = function(a, b) {
        var d = c.extend({},
        b.number);
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        if (isEmpty(a)) return d.defaultValue;
        return c.fmatter.util.NumberFormat(a, d)
    };
    c.fn.fmatter.currency = function(a, b) {
        var d = c.extend({},
        b.currency);
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        if (isEmpty(a)) return d.defaultValue;
        return c.fmatter.util.NumberFormat(a, d)
    };
    c.fn.fmatter.date =
    function(a, b, d, e) {
        d = c.extend({},
        b.date);
        isUndefined(b.colModel.formatoptions) || (d = c.extend({},
        d, b.colModel.formatoptions));
        return ! d.reformatAfterEdit && e == "edit" ? c.fn.fmatter.defaultFormat(a, b) : isEmpty(a) ? c.fn.fmatter.defaultFormat(a, b) : c.fmatter.util.DateFormat(d.srcformat, a, d.newformat, d)
    };
    c.fn.fmatter.select = function(a, b) {
        a += "";
        var d = false,
        e = [];
        if (!isUndefined(b.colModel.editoptions)) d = b.colModel.editoptions.value;
        if (d) {
            var h = b.colModel.editoptions.multiple === true ? true: false,
            g = [],
            f;
            if (h) {
                g = a.split(",");
                g = c.map(g,
                function(l) {
                    return c.trim(l)
                })
            }
            if (isString(d)) for (var i = d.split(";"), k = 0, j = 0; j < i.length; j++) {
                f = i[j].split(":");
                if (f.length > 2) f[1] = jQuery.map(f,
                function(l, o) {
                    if (o > 0) return l
                }).join(":");
                if (h) {
                    if (jQuery.inArray(f[0], g) > -1) {
                        e[k] = f[1];
                        k++
                    }
                } else if (c.trim(f[0]) == c.trim(a)) {
                    e[0] = f[1];
                    break
                }
            } else if (isObject(d)) if (h) e = jQuery.map(g,
            function(l) {
                return d[l]
            });
            else e[0] = d[a] || ""
        }
        a = e.join(", ");
        return a == "" ? c.fn.fmatter.defaultFormat(a, b) : a
    };
    c.fn.fmatter.rowactions = function(a, b, d, e) {
        switch (d) {
        case "edit":
            d =
            function() {
                c(".ui-inline-edit, .ui-inline-del", "#" + a).show();
                c(".ui-inline-save, .ui-inline-cancel", "#" + a).hide()
            };
            c("#" + b).jqGrid("editRow", a, e, null, null, null, {
                oper: "edit"
            },
            d, null, d);
            c(".ui-inline-edit, .ui-inline-del", "#" + a).hide();
            c(".ui-inline-save, .ui-inline-cancel", "#" + a).show();
            break;
        case "save":
            c("#" + b).jqGrid("saveRow", a, null, null, {
                oper: "edit"
            });
            c(".ui-inline-edit, .ui-inline-del", "#" + a).show();
            c(".ui-inline-save, .ui-inline-cancel", "#" + a).hide();
            break;
        case "cancel":
            c("#" + b).jqGrid("restoreRow",
            a);
            c(".ui-inline-edit, .ui-inline-del", "#" + a).show();
            c(".ui-inline-save, .ui-inline-cancel", "#" + a).hide();
            break
        }
    };
    c.fn.fmatter.actions = function(a, b) {
        var d = {
            keys: false
        };
        isUndefined(b.colModel.formatoptions) || (d = c.extend(d, b.colModel.formatoptions));
        a = b.rowId;
        if (typeof a == "undefined" || isEmpty(a)) return "";
        d = "onclick=$.fn.fmatter.rowactions('" + a + "','" + b.gid + "','edit'," + d.keys + ");";
        var e = "<div style='margin-left:8px;'><div title='" + c.jgrid.nav.edittitle + "' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' " +
        d + "><span class='ui-icon ui-icon-pencil'></span></div>";
        d = "onclick=jQuery('#" + b.gid + "').jqGrid('delGridRow','" + a + "');";
        e = e + "<div title='" + c.jgrid.nav.deltitle + "' style='float:left;margin-left:5px;' class='ui-pg-div ui-inline-del' " + d + "><span class='ui-icon ui-icon-trash'></span></div>";
        d = "onclick=$.fn.fmatter.rowactions('" + a + "','" + b.gid + "','save',false);";
        e = e + "<div title='" + c.jgrid.edit.bSubmit + "' style='float:left;display:none' class='ui-pg-div ui-inline-save'><span class='ui-icon ui-icon-disk' " +
        d + "></span></div>";
        d = "onclick=$.fn.fmatter.rowactions('" + a + "','" + b.gid + "','cancel',false);";
        return e = e + "<div title='" + c.jgrid.edit.bCancel + "' style='float:left;display:none;margin-left:5px;' class='ui-pg-div ui-inline-cancel'><span class='ui-icon ui-icon-cancel' " + d + "></span></div></div>"
    };
    c.unformat = function(a, b, d, e) {
        var h,
        g = b.colModel.formatter,
        f = b.colModel.formatoptions || {},
        i = /([\.\*\_\'\(\)\{\}\+\?\\])/g;
        unformatFunc = b.colModel.unformat || c.fn.fmatter[g] && c.fn.fmatter[g].unformat;
        if (typeof unformatFunc !==
        "undefined" && isFunction(unformatFunc)) h = unformatFunc(c(a).text(), b, a);
        else if (typeof g !== "undefined" && isString(g)) {
            h = c.jgrid.formatter || {};
            switch (g) {
            case "integer":
                f = c.extend({},
                h.integer, f);
                b = f.thousandsSeparator.replace(i, "\\$1");
                b = new RegExp(b, "g");
                h = c(a).text().replace(b, "");
                break;
            case "number":
                f = c.extend({},
                h.number, f);
                b = f.thousandsSeparator.replace(i, "\\$1");
                b = new RegExp(b, "g");
                h = c(a).text().replace(b, "").replace(f.decimalSeparator, ".");
                break;
            case "currency":
                f = c.extend({},
                h.currency, f);
                b = f.thousandsSeparator.replace(i,
                "\\$1");
                b = new RegExp(b, "g");
                h = c(a).text().replace(b, "").replace(f.decimalSeparator, ".").replace(f.prefix, "").replace(f.suffix, "");
                break;
            case "checkbox":
                f = b.colModel.editoptions ? b.colModel.editoptions.value.split(":") : ["Yes", "No"];
                h = c("input", a).attr("checked") ? f[0] : f[1];
                break;
            case "select":
                h = c.unformat.select(a, b, d, e);
                break;
            case "actions":
                return "";
            default:
                h = c(a).text()
            }
        }
        return h ? h: e === true ? c(a).text() : c.jgrid.htmlDecode(c(a).html())
    };
    c.unformat.select = function(a, b, d, e) {
        d = [];
        a = c(a).text();
        if (e == true) return a;
        b = c.extend({},
        b.colModel.editoptions);
        if (b.value) {
            var h = b.value;
            b = b.multiple === true ? true: false;
            e = [];
            var g;
            if (b) {
                e = a.split(",");
                e = c.map(e,
                function(j) {
                    return c.trim(j)
                })
            }
            if (isString(h)) for (var f = h.split(";"), i = 0, k = 0; k < f.length; k++) {
                g = f[k].split(":");
                if (b) {
                    if (jQuery.inArray(g[1], e) > -1) {
                        d[i] = g[0];
                        i++
                    }
                } else if (c.trim(g[1]) == c.trim(a)) {
                    d[0] = g[0];
                    break
                }
            } else if (isObject(h)) {
                b || (e[0] = a);
                d = jQuery.map(e,
                function(j) {
                    var l;
                    c.each(h,
                    function(o, n) {
                        if (n == j) {
                            l = o;
                            return false
                        }
                    });
                    if (l) return l
                })
            }
            return d.join(", ")
        } else return a ||
        ""
    };
    isValue = function(a) {
        return isObject(a) || isString(a) || isNumber(a) || isBoolean(a)
    };
    isBoolean = function(a) {
        return typeof a === "boolean"
    };
    isNull = function(a) {
        return a === null
    };
    isNumber = function(a) {
        return typeof a === "number" && isFinite(a)
    };
    isString = function(a) {
        return typeof a === "string"
    };
    isEmpty = function(a) {
        if (!isString(a) && isValue(a)) return false;
        else if (!isValue(a)) return true;
        a = c.trim(a).replace(/\&nbsp\;/ig, "").replace(/\&#160\;/ig, "");
        return a === ""
    };
    isUndefined = function(a) {
        return typeof a === "undefined"
    };
    isObject = function(a) {
        return a && (typeof a === "object" || isFunction(a)) || false
    };
    isFunction = function(a) {
        return typeof a === "function"
    }
})(jQuery);
 (function(a) {
    a.jgrid.extend({
        getColProp: function(d) {
            var o = {},
            b = this[0];
            if (b.grid) {
                b = b.p.colModel;
                for (var l = 0; l < b.length; l++) if (b[l].name == d) {
                    o = b[l];
                    break
                }
                return o
            }
        },
        setColProp: function(d, o) {
            return this.each(function() {
                if (this.grid) if (o) for (var b = this.p.colModel, l = 0; l < b.length; l++) if (b[l].name == d) {
                    a.extend(this.p.colModel[l], o);
                    break
                }
            })
        },
        sortGrid: function(d, o, b) {
            return this.each(function() {
                var l = this,
                s = -1;
                if (l.grid) {
                    if (!d) d = l.p.sortname;
                    for (var p = 0; p < l.p.colModel.length; p++) if (l.p.colModel[p].index ==
                    d || l.p.colModel[p].name == d) {
                        s = p;
                        break
                    }
                    if (s != -1) {
                        p = l.p.colModel[s].sortable;
                        if (typeof p !== "boolean") p = true;
                        if (typeof o !== "boolean") o = false;
                        p && l.sortData("jqgh_" + d, s, o, b)
                    }
                }
            })
        },
        GridDestroy: function() {
            return this.each(function() {
                if (this.grid) {
                    this.p.pager && a(this.p.pager).remove();
                    var d = this.id;
                    try {
                        a("#gbox_" + d).remove()
                    } catch(o) {}
                }
            })
        },
        GridUnload: function() {
            return this.each(function() {
                if (this.grid) {
                    var d = {
                        id: a(this).attr("id"),
                        cl: a(this).attr("class")
                    };
                    this.p.pager && a(this.p.pager).empty().removeClass("ui-state-default ui-jqgrid-pager corner-bottom");
                    var o = document.createElement("table");
                    a(o).attr({
                        id: d.id
                    });
                    o.className = d.cl;
                    d = this.id;
                    a(o).removeClass("ui-jqgrid-btable");
                    if (a(this.p.pager).parents("#gbox_" + d).length === 1) {
                        a(o).insertBefore("#gbox_" + d).show();
                        a(this.p.pager).insertBefore("#gbox_" + d)
                    } else a(o).insertBefore("#gbox_" + d).show();
                    a("#gbox_" + d).remove()
                }
            })
        },
        setGridState: function(d) {
            return this.each(function() {
                if (this.grid) {
                    $t = this;
                    if (d == "hidden") {
                        a(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv", "#gview_" + $t.p.id).slideUp("fast");
                        $t.p.pager && a($t.p.pager).slideUp("fast");
                        if ($t.p.toolbar[0] === true) {
                            $t.p.toolbar[1] == "both" && a($t.grid.ubDiv).slideUp("fast");
                            a($t.grid.uDiv).slideUp("fast")
                        }
                        $t.p.footerrow && a(".ui-jqgrid-sdiv", "#gbox_" + $s.p.id).slideUp("fast");
                        a(".ui-jqgrid-titlebar-close span", $t.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
                        $t.p.gridstate = "hidden"
                    } else if (d == "visible") {
                        a(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv", "#gview_" + $t.p.id).slideDown("fast");
                        $t.p.pager && a($t.p.pager).slideDown("fast");
                        if ($t.p.toolbar[0] === true) {
                            $t.p.toolbar[1] ==
                            "both" && a($t.grid.ubDiv).slideDown("fast");
                            a($t.grid.uDiv).slideDown("fast")
                        }
                        $t.p.footerrow && a(".ui-jqgrid-sdiv", "#gbox_" + $t.p.id).slideDown("fast");
                        a(".ui-jqgrid-titlebar-close span", $t.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");
                        $t.p.gridstate = "visible"
                    }
                }
            })
        },
        updateGridRows: function(d, o, b) {
            var l,
            s = false;
            this.each(function() {
                var p = this,
                f,
                k,
                m,
                e;
                if (!p.grid) return false;
                o || (o = "id");
                d && d.length > 0 && a(d).each(function() {
                    m = this;
                    if (k = p.rows.namedItem(m[o])) {
                        e =
                        m[o];
                        if (b === true) if (p.p.jsonReader.repeatitems === true) {
                            if (p.p.jsonReader.cell) m = m[p.p.jsonReader.cell];
                            for (var c = 0; c < m.length; c++) {
                                f = p.formatter(e, m[c], c, m, "edit");
                                p.p.treeGrid === true && l == p.p.ExpandColumn ? a("td:eq(" + c + ") > span:first", k).html(f).attr("title", a.jgrid.stripHtml(f)) : a("td:eq(" + c + ")", k).html(f).attr("title", a.jgrid.stripHtml(f))
                            }
                            return s = true
                        }
                        a(p.p.colModel).each(function(g) {
                            l = b === true ? this.jsonmap || this.name: this.name;
                            if (m[l] != undefined) {
                                f = p.formatter(e, m[l], g, m, "edit");
                                p.p.treeGrid ===
                                true && l == p.p.ExpandColumn ? a("td:eq(" + g + ") > span:first", k).html(f).attr("title", a.jgrid.stripHtml(f)) : a("td:eq(" + g + ")", k).html(f).attr("title", a.jgrid.stripHtml(f));
                                s = true
                            }
                        })
                    }
                })
            });
            return s
        },
        filterGrid: function(d, o) {
            o = a.extend({
                gridModel: false,
                gridNames: false,
                gridToolbar: false,
                filterModel: [],
                formtype: "horizontal",
                autosearch: true,
                formclass: "filterform",
                tableclass: "filtertable",
                buttonclass: "filterbutton",
                searchButton: "Search",
                clearButton: "Clear",
                enableSearch: false,
                enableClear: false,
                beforeSearch: null,
                afterSearch: null,
                beforeClear: null,
                afterClear: null,
                url: "",
                marksearched: true
            },
            o || {});
            return this.each(function() {
                var b = this;
                this.p = o;
                if (this.p.filterModel.length == 0 && this.p.gridModel === false) alert("No filter is set");
                else if (d) {
                    this.p.gridid = d.indexOf("#") != -1 ? d: "#" + d;
                    var l = a(this.p.gridid).jqGrid("getGridParam", "colModel");
                    if (l) {
                        if (this.p.gridModel === true) {
                            var s = a(this.p.gridid)[0],
                            p;
                            a.each(l,
                            function(c) {
                                var g = [];
                                this.search = this.search === false ? false: true;
                                p = this.editrules && this.editrules.searchhidden ===
                                true ? true: this.hidden === true ? false: true;
                                if (this.search === true && p === true) {
                                    g.label = b.p.gridNames === true ? s.p.colNames[c] : "";
                                    g.name = this.name;
                                    g.index = this.index || this.name;
                                    g.stype = this.edittype || "text";
                                    if (g.stype != "select") g.stype = "text";
                                    g.defval = this.defval || "";
                                    g.surl = this.surl || "";
                                    g.sopt = this.editoptions || {};
                                    g.width = this.width;
                                    b.p.filterModel.push(g)
                                }
                            })
                        } else a.each(b.p.filterModel,
                        function() {
                            for (var c = 0; c < l.length; c++) if (this.name == l[c].name) {
                                this.index = l[c].index || this.name;
                                break
                            }
                            if (!this.index) this.index =
                            this.name
                        });
                        var f = function() {
                            var c = {},
                            g = 0,
                            n,
                            h = a(b.p.gridid)[0],
                            j;
                            h.p.searchdata = {};
                            a.isFunction(b.p.beforeSearch) && b.p.beforeSearch();
                            a.each(b.p.filterModel,
                            function() {
                                j = this.index;
                                switch (this.stype) {
                                case "select":
                                    if (n = a("select[name=" + j + "]", b).val()) {
                                        c[j] = n;
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).addClass("dirty-cell");
                                        g++
                                    } else {
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).removeClass("dirty-cell");
                                        try {
                                            delete h.p.postData[this.index]
                                        } catch(r) {}
                                    }
                                    break;
                                default:
                                    if (n = a("input[name=" +
                                    j + "]", b).val()) {
                                        c[j] = n;
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).addClass("dirty-cell");
                                        g++
                                    } else {
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).removeClass("dirty-cell");
                                        try {
                                            delete h.p.postData[this.index]
                                        } catch(u) {}
                                    }
                                }
                            });
                            var q = g > 0 ? true: false;
                            a.extend(h.p.postData, c);
                            var i;
                            if (b.p.url) {
                                i = a(h).jqGrid("getGridParam", "url");
                                a(h).jqGrid("setGridParam", {
                                    url: b.p.url
                                })
                            }
                            a(h).jqGrid("setGridParam", {
                                search: q
                            }).trigger("reloadGrid", [{
                                page: 1
                            }]);
                            i && a(h).jqGrid("setGridParam", {
                                url: i
                            });
                            a.isFunction(b.p.afterSearch) &&
                            b.p.afterSearch()
                        },
                        k = function() {
                            var c = {},
                            g,
                            n = 0,
                            h = a(b.p.gridid)[0],
                            j;
                            a.isFunction(b.p.beforeClear) && b.p.beforeClear();
                            a.each(b.p.filterModel,
                            function() {
                                j = this.index;
                                g = this.defval ? this.defval: "";
                                if (!this.stype) this.stype = "text";
                                switch (this.stype) {
                                case "select":
                                    var r;
                                    a("select[name=" + j + "] option", b).each(function(v) {
                                        if (v == 0) this.selected = true;
                                        if (a(this).text() == g) {
                                            this.selected = true;
                                            r = a(this).val();
                                            return false
                                        }
                                    });
                                    if (r) {
                                        c[j] = r;
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).addClass("dirty-cell");
                                        n++
                                    } else {
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).removeClass("dirty-cell");
                                        try {
                                            delete h.p.postData[this.index]
                                        } catch(u) {}
                                    }
                                    break;
                                case "text":
                                    a("input[name=" + j + "]", b).val(g);
                                    if (g) {
                                        c[j] = g;
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).addClass("dirty-cell");
                                        n++
                                    } else {
                                        b.p.marksearched && a("#jqgh_" + this.name, h.grid.hDiv).removeClass("dirty-cell");
                                        try {
                                            delete h.p.postData[this.index]
                                        } catch(t) {}
                                    }
                                    break
                                }
                            });
                            var q = n > 0 ? true: false;
                            a.extend(h.p.postData, c);
                            var i;
                            if (b.p.url) {
                                i = a(h).jqGrid("getGridParam",
                                "url");
                                a(h).jqGrid("setGridParam", {
                                    url: b.p.url
                                })
                            }
                            a(h).jqGrid("setGridParam", {
                                search: q
                            }).trigger("reloadGrid", [{
                                page: 1
                            }]);
                            i && a(h).jqGrid("setGridParam", {
                                url: i
                            });
                            a.isFunction(b.p.afterClear) && b.p.afterClear()
                        },
                        m = a("<form name='SearchForm' style=display:inline;' class='" + this.p.formclass + "'></form>"),
                        e = a("<table class='" + this.p.tableclass + "' cellspacing='0' cellpading='0' border='0'><tbody></tbody></table>");
                        a(m).append(e); (function() {
                            var c = document.createElement("tr"),
                            g,
                            n,
                            h,
                            j;
                            b.p.formtype == "horizontal" &&
                            a(e).append(c);
                            a.each(b.p.filterModel,
                            function(q) {
                                h = document.createElement("td");
                                a(h).append("<label for='" + this.name + "'>" + this.label + "</label>");
                                j = document.createElement("td");
                                var i = this;
                                if (!this.stype) this.stype = "text";
                                switch (this.stype) {
                                case "select":
                                    if (this.surl) a(j).load(this.surl,
                                    function() {
                                        i.defval && a("select", this).val(i.defval);
                                        a("select", this).attr({
                                            name: i.index || i.name,
                                            id: "sg_" + i.name
                                        });
                                        i.sopt && a("select", this).attr(i.sopt);
                                        b.p.gridToolbar === true && i.width && a("select", this).width(i.width);
                                        b.p.autosearch === true && a("select", this).change(function() {
                                            f();
                                            return false
                                        })
                                    });
                                    else if (i.sopt.value) {
                                        var r = i.sopt.value,
                                        u = document.createElement("select");
                                        a(u).attr({
                                            name: i.index || i.name,
                                            id: "sg_" + i.name
                                        }).attr(i.sopt);
                                        if (typeof r === "string") {
                                            q = r.split(";");
                                            for (var t, v = 0; v < q.length; v++) {
                                                r = q[v].split(":");
                                                t = document.createElement("option");
                                                t.value = r[0];
                                                t.innerHTML = r[1];
                                                if (r[1] == i.defval) t.selected = "selected";
                                                u.appendChild(t)
                                            }
                                        } else if (typeof r === "object") for (v in r) {
                                            q++;
                                            t = document.createElement("option");
                                            t.value = v;
                                            t.innerHTML = r[v];
                                            if (r[v] == i.defval) t.selected = "selected";
                                            u.appendChild(t)
                                        }
                                        b.p.gridToolbar === true && i.width && a(u).width(i.width);
                                        a(j).append(u);
                                        b.p.autosearch === true && a(u).change(function() {
                                            f();
                                            return false
                                        })
                                    }
                                    break;
                                case "text":
                                    u = this.defval ? this.defval: "";
                                    a(j).append("<input type='text' name='" + (this.index || this.name) + "' id='sg_" + this.name + "' value='" + u + "'/>");
                                    i.sopt && a("input", j).attr(i.sopt);
                                    if (b.p.gridToolbar === true && i.width) a.browser.msie ? a("input", j).width(i.width - 4) : a("input", j).width(i.width -
                                    2);
                                    b.p.autosearch === true && a("input", j).keypress(function(w) {
                                        if ((w.charCode ? w.charCode: w.keyCode ? w.keyCode: 0) == 13) {
                                            f();
                                            return false
                                        }
                                        return this
                                    });
                                    break
                                }
                                if (b.p.formtype == "horizontal") {
                                    b.p.gridToolbar === true && b.p.gridNames === false ? a(c).append(j) : a(c).append(h).append(j);
                                    a(c).append(j)
                                } else {
                                    g = document.createElement("tr");
                                    a(g).append(h).append(j);
                                    a(e).append(g)
                                }
                            });
                            j = document.createElement("td");
                            if (b.p.enableSearch === true) {
                                n = "<input type='button' id='sButton' class='" + b.p.buttonclass + "' value='" + b.p.searchButton +
                                "'/>";
                                a(j).append(n);
                                a("input#sButton", j).click(function() {
                                    f();
                                    return false
                                })
                            }
                            if (b.p.enableClear === true) {
                                n = "<input type='button' id='cButton' class='" + b.p.buttonclass + "' value='" + b.p.clearButton + "'/>";
                                a(j).append(n);
                                a("input#cButton", j).click(function() {
                                    k();
                                    return false
                                })
                            }
                            if (b.p.enableClear === true || b.p.enableSearch === true) if (b.p.formtype == "horizontal") a(c).append(j);
                            else {
                                g = document.createElement("tr");
                                a(g).append("<td>&#160;</td>").append(j);
                                a(e).append(g)
                            }
                        })();
                        a(this).append(m);
                        this.triggerSearch =
                        f;
                        this.clearSearch = k
                    } else alert("Could not get grid colModel")
                } else alert("No target grid is set!")
            })
        },
        filterToolbar: function(d) {
            d = a.extend({
                autosearch: true,
                searchOnEnter: true,
                beforeSearch: null,
                afterSearch: null,
                beforeClear: null,
                afterClear: null,
                searchurl: "",
                stringResult: false,
                groupOp: "AND"
            },
            d || {});
            return this.each(function() {
                function o(f, k) {
                    var m = a(f);
                    m[0] != null && jQuery.each(k,
                    function() {
                        this.data != null ? m.bind(this.type, this.data, this.fn) : m.bind(this.type, this.fn)
                    })
                }
                var b = this,
                l = function() {
                    var f = {},
                    k = 0,
                    m,
                    e,
                    c = {};
                    a.each(b.p.colModel,
                    function() {
                        e = this.index || this.name;
                        var i = this.searchoptions && this.searchoptions.sopt ? this.searchoptions.sopt[0] : "bw";
                        switch (this.stype) {
                        case "select":
                            if (m = a("select[name=" + e + "]", b.grid.hDiv).val()) {
                                f[e] = m;
                                c[e] = i;
                                k++
                            } else try {
                                delete b.p.postData[e]
                            } catch(r) {}
                            break;
                        case "text":
                            if (m = a("input[name=" + e + "]", b.grid.hDiv).val()) {
                                f[e] = m;
                                c[e] = i;
                                k++
                            } else try {
                                delete b.p.postData[e]
                            } catch(u) {}
                            break
                        }
                    });
                    var g = k > 0 ? true: false;
                    if (d.stringResult) {
                        var n = '{"groupOp":"' + d.groupOp + '","rules":[',
                        h = 0;
                        a.each(f,
                        function(i, r) {
                            if (h > 0) n += ",";
                            n += '{"field":"' + i + '",';
                            n += '"op":"' + c[i] + '",';
                            n += '"data":"' + r + '"}';
                            h++
                        });
                        n += "]}";
                        a.extend(b.p.postData, {
                            filters: n
                        })
                    } else a.extend(b.p.postData, f);
                    var j;
                    if (b.p.searchurl) {
                        j = b.p.url;
                        a(b).jqGrid("setGridParam", {
                            url: b.p.searchurl
                        })
                    }
                    var q = false;
                    if (a.isFunction(d.beforeSearch)) q = d.beforeSearch.call(b);
                    q || a(b).jqGrid("setGridParam", {
                        search: g
                    }).trigger("reloadGrid", [{
                        page: 1
                    }]);
                    j && a(b).jqGrid("setGridParam", {
                        url: j
                    });
                    a.isFunction(d.afterSearch) && d.afterSearch()
                },
                s = a("<tr class='ui-search-toolbar' role='rowheader'></tr>"),
                p;
                a.each(b.p.colModel,
                function() {
                    var f = this,
                    k,
                    m,
                    e,
                    c;
                    m = a("<th role='columnheader' class='ui-state-default ui-th-column ui-th-" + b.p.direction + "'></th>");
                    k = a("<div style='width:100%;position:relative;height:100%;padding-right:0.3em;'></div>");
                    this.hidden === true && a(m).css("display", "none");
                    this.search = this.search === false ? false: true;
                    if (typeof this.stype == "undefined") this.stype = "text";
                    e = a.extend({},
                    this.searchoptions || {});
                    if (this.search) switch (this.stype) {
                    case "select":
                        if (c = this.surl || e.dataUrl) a.ajax(a.extend({
                            url: c,
                            dataType: "html",
                            complete: function(q) {
                                if (e.buildSelect != null)(q = e.buildSelect(q)) && a(k).append(q);
                                else a(k).append(q.responseText);
                                e.defaultValue && a("select", k).val(e.defaultValue);
                                a("select", k).attr({
                                    name: f.index || f.name,
                                    id: "gs_" + f.name
                                });
                                e.attr && a("select", k).attr(e.attr);
                                a("select", k).css({
                                    width: "100%"
                                });
                                e.dataInit != null && e.dataInit(a("select", k)[0]);
                                e.dataEvents != null && o(a("select", k)[0], e.dataEvents);
                                d.autosearch === true && a("select", k).change(function() {
                                    l();
                                    return false
                                });
                                q = null
                            }
                        },
                        a.jgrid.ajaxOptions,
                        b.p.ajaxSelectOptions || {}));
                        else {
                            var g;
                            if (f.searchoptions && f.searchoptions.value) g = f.searchoptions.value;
                            else if (f.editoptions && f.editoptions.value) g = f.editoptions.value;
                            if (g) {
                                c = document.createElement("select");
                                c.style.width = "100%";
                                a(c).attr({
                                    name: f.index || f.name,
                                    id: "gs_" + f.name
                                });
                                if (typeof g === "string") {
                                    g = g.split(";");
                                    for (var n, h, j = 0; j < g.length; j++) {
                                        n = g[j].split(":");
                                        h = document.createElement("option");
                                        h.value = n[0];
                                        h.innerHTML = n[1];
                                        c.appendChild(h)
                                    }
                                } else if (typeof g === "object") for (n in g) {
                                    h = document.createElement("option");
                                    h.value = n;
                                    h.innerHTML = g[n];
                                    c.appendChild(h)
                                }
                                e.defaultValue && a(c).val(e.defaultValue);
                                e.attr && a(c).attr(e.attr);
                                e.dataInit != null && e.dataInit(c);
                                e.dataEvents != null && o(c, e.dataEvents);
                                a(k).append(c);
                                d.autosearch === true && a(c).change(function() {
                                    l();
                                    return false
                                })
                            }
                        }
                        break;
                    case "text":
                        c = e.defaultValue ? e.defaultValue: "";
                        a(k).append("<input type='text' style='width:95%;padding:0px;' name='" + (f.index || f.name) + "' id='gs_" + f.name + "' value='" + c + "'/>");
                        e.attr && a("input", k).attr(e.attr);
                        e.dataInit != null && e.dataInit(a("input",
                        k)[0]);
                        e.dataEvents != null && o(a("input", k)[0], e.dataEvents);
                        if (d.autosearch === true) d.searchOnEnter ? a("input", k).keypress(function(q) {
                            if ((q.charCode ? q.charCode: q.keyCode ? q.keyCode: 0) == 13) {
                                l();
                                return false
                            }
                            return this
                        }) : a("input", k).keydown(function(q) {
                            switch (q.which) {
                            case 9:
                            case 16:
                            case 37:
                            case 38:
                            case 39:
                            case 40:
                            case 27:
                                break;
                            default:
                                p && clearTimeout(p);
                                p = setTimeout(function() {
                                    l()
                                },
                                500)
                            }
                        });
                        break
                    }
                    a(m).append(k);
                    a(s).append(m)
                });
                a("table thead", b.grid.hDiv).append(s);
                this.triggerToolbar = l;
                this.clearToolbar =
                function(f) {
                    var k = {},
                    m,
                    e = 0,
                    c;
                    f = typeof f != "boolean" ? true: f;
                    a.each(b.p.colModel,
                    function() {
                        m = this.searchoptions && this.searchoptions.defaultValue ? this.searchoptions.defaultValue: "";
                        c = this.index || this.name;
                        switch (this.stype) {
                        case "select":
                            var i;
                            a("select[name=" + c + "] option", b.grid.hDiv).each(function(t) {
                                if (t == 0) this.selected = true;
                                if (a(this).text() == m) {
                                    this.selected = true;
                                    i = a(this).val();
                                    return false
                                }
                            });
                            if (i) {
                                k[c] = i;
                                e++
                            } else try {
                                delete b.p.postData[c]
                            } catch(r) {}
                            break;
                        case "text":
                            a("input[name=" + c + "]", b.grid.hDiv).val(m);
                            if (m) {
                                k[c] = m;
                                e++
                            } else try {
                                delete b.p.postData[c]
                            } catch(u) {}
                            break
                        }
                    });
                    var g = e > 0 ? true: false;
                    if (d.stringResult) {
                        var n = '{"groupOp":"' + d.groupOp + '","rules":[',
                        h = 0;
                        a.each(k,
                        function(i, r) {
                            if (h > 0) n += ",";
                            n += '{"field":"' + i + '",';
                            n += '"op":"eq",';
                            n += '"data":"' + r + '"}';
                            h++
                        });
                        n += "]}";
                        a.extend(b.p.postData, {
                            filters: n
                        })
                    } else a.extend(b.p.postData, k);
                    var j;
                    if (b.p.searchurl) {
                        j = b.p.url;
                        a(b).jqGrid("setGridParam", {
                            url: b.p.searchurl
                        })
                    }
                    var q = false;
                    if (a.isFunction(d.beforeClear)) q = d.beforeClear.call(b);
                    q || f && a(b).jqGrid("setGridParam",
                    {
                        search: g
                    }).trigger("reloadGrid", [{
                        page: 1
                    }]);
                    j && a(b).jqGrid("setGridParam", {
                        url: j
                    });
                    a.isFunction(d.afterClear) && d.afterClear()
                };
                this.toggleToolbar = function() {
                    var f = a("tr.ui-search-toolbar", b.grid.hDiv);
                    f.css("display") == "none" ? f.show() : f.hide()
                }
            })
        }
    })
})(jQuery);
var showModal = function(a) {
    a.w.show()
},
closeModal = function(a) {
    a.w.hide().attr("aria-hidden", "true");
    a.o && a.o.remove()
},
createModal = function(a, b, c, e, f, h) {
    var d = document.createElement("div"),
    g;
    g = jQuery(c.gbox).attr("dir") == "rtl" ? true: false;
    d.className = "ui-widget ui-widget-content ui-corner-all ui-jqdialog";
    d.id = a.themodal;
    var i = document.createElement("div");
    i.className = "ui-jqdialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix";
    i.id = a.modalhead;
    jQuery(i).append("<span class='ui-jqdialog-title'>" +
    c.caption + "</span>");
    var j = jQuery("<a href='javascript:void(0)' class='ui-jqdialog-titlebar-close ui-corner-all'></a>").hover(function() {
        j.addClass("ui-state-hover")
    },
    function() {
        j.removeClass("ui-state-hover")
    }).append("<span class='ui-icon ui-icon-closethick'></span>");
    jQuery(i).append(j);
    if (g) {
        d.dir = "rtl";
        jQuery(".ui-jqdialog-title", i).css("float", "right");
        jQuery(".ui-jqdialog-titlebar-close", i).css("left", "0.3em")
    } else {
        d.dir = "ltr";
        jQuery(".ui-jqdialog-title", i).css("float", "left");
        jQuery(".ui-jqdialog-titlebar-close",
        i).css("right", "0.3em")
    }
    var l = document.createElement("div");
    jQuery(l).addClass("ui-jqdialog-content ui-widget-content").attr("id", a.modalcontent);
    jQuery(l).append(b);
    d.appendChild(l);
    jQuery(d).prepend(i);
    h === true ? jQuery("body").append(d) : jQuery(d).insertBefore(e);
    if (typeof c.jqModal === "undefined") c.jqModal = true;
    b = {};
    if (jQuery.fn.jqm && c.jqModal === true) {
        if (c.left == 0 && c.top == 0) {
            e = [];
            e = findPos(f);
            c.left = e[0] + 4;
            c.top = e[1] + 4
        }
        b.top = c.top + "px";
        b.left = c.left
    } else if (c.left != 0 || c.top != 0) {
        b.left = c.left;
        b.top =
        c.top + "px"
    }
    jQuery("a.ui-jqdialog-titlebar-close", i).click(function() {
        var n = jQuery("#" + a.themodal).data("onClose") || c.onClose,
        k = jQuery("#" + a.themodal).data("gbox") || c.gbox;
        hideModal("#" + a.themodal, {
            gb: k,
            jqm: c.jqModal,
            onClose: n
        });
        return false
    });
    if (c.width == 0 || !c.width) c.width = 300;
    if (c.height == 0 || !c.height) c.height = 200;
    if (!c.zIndex) c.zIndex = 950;
    f = 0;
    if (g && b.left && !h) {
        f = jQuery(c.gbox).width() - (!isNaN(c.width) ? parseInt(c.width) : 0) - 8;
        b.left = parseInt(b.left) + parseInt(f)
    }
    if (b.left) b.left += "px";
    jQuery(d).css(jQuery.extend({
        width: isNaN(c.width) ?
        "auto": c.width + "px",
        height: isNaN(c.height) ? "auto": c.height + "px",
        zIndex: c.zIndex,
        overflow: "hidden"
    },
    b)).attr({
        tabIndex: "-1",
        role: "dialog",
        "aria-labelledby": a.modalhead,
        "aria-hidden": "true"
    });
    if (typeof c.drag == "undefined") c.drag = true;
    if (typeof c.resize == "undefined") c.resize = true;
    if (c.drag) {
        jQuery(i).css("cursor", "move");
        if (jQuery.fn.jqDrag) jQuery(d).jqDrag(i);
        else try {
            jQuery(d).draggable({
                handle: jQuery("#" + i.id)
            })
        } catch(q) {}
    }
    if (c.resize) if (jQuery.fn.jqResize) {
        jQuery(d).append("<div class='jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se ui-icon-grip-diagonal-se'></div>");
        jQuery("#" + a.themodal).jqResize(".jqResize", a.scrollelm ? "#" + a.scrollelm: false)
    } else try {
        jQuery(d).resizable({
            handles: "se, sw",
            alsoResize: a.scrollelm ? "#" + a.scrollelm: false
        })
    } catch(o) {}
    c.closeOnEscape === true && jQuery(d).keydown(function(n) {
        if (n.which == 27) {
            n = jQuery("#" + a.themodal).data("onClose") || c.onClose;
            hideModal(this, {
                gb: c.gbox,
                jqm: c.jqModal,
                onClose: n
            })
        }
    })
},
viewModal = function(a, b) {
    b = jQuery.extend({
        toTop: true,
        overlay: 10,
        modal: false,
        onShow: showModal,
        onHide: closeModal,
        gbox: "",
        jqm: true,
        jqM: true
    },
    b ||
    {});
    if (jQuery.fn.jqm && b.jqm == true) b.jqM ? jQuery(a).attr("aria-hidden", "false").jqm(b).jqmShow() : jQuery(a).attr("aria-hidden", "false").jqmShow();
    else {
        if (b.gbox != "") {
            jQuery(".jqgrid-overlay:first", b.gbox).show();
            jQuery(a).data("gbox", b.gbox)
        }
        jQuery(a).show().attr("aria-hidden", "false");
        try {
            jQuery(":input:visible", a)[0].focus()
        } catch(c) {}
    }
},
hideModal = function(a, b) {
    b = jQuery.extend({
        jqm: true,
        gb: ""
    },
    b || {});
    if (b.onClose) {
        var c = b.onClose(a);
        if (typeof c == "boolean" && !c) return
    }
    if (jQuery.fn.jqm && b.jqm === true) jQuery(a).attr("aria-hidden",
    "true").jqmHide();
    else {
        if (b.gb != "") try {
            jQuery(".jqgrid-overlay:first", b.gb).hide()
        } catch(e) {}
        jQuery(a).hide().attr("aria-hidden", "true")
    }
};
function info_dialog(a, b, c, e) {
    var f = {
        width: 290,
        height: "auto",
        dataheight: "auto",
        drag: true,
        resize: false,
        caption: "<b>" + a + "</b>",
        left: 250,
        top: 170,
        zIndex: 1E3,
        jqModal: true,
        modal: false,
        closeOnEscape: true,
        align: "center",
        buttonalign: "center",
        buttons: []
    };
    jQuery.extend(f, e || {});
    var h = f.jqModal;
    if (jQuery.fn.jqm && !h) h = false;
    a = "";
    if (f.buttons.length > 0) for (e = 0; e < f.buttons.length; e++) {
        if (typeof f.buttons[e].id == "undefined") f.buttons[e].id = "info_button_" + e;
        a += "<a href='javascript:void(0)' id='" + f.buttons[e].id + "' class='fm-button ui-state-default ui-corner-all'>" +
        f.buttons[e].text + "</a>"
    }
    e = isNaN(f.dataheight) ? f.dataheight: f.dataheight + "px";
    var d = "<div id='info_id'>";
    d += "<div id='infocnt' style='margin:0px;padding-bottom:1em;width:100%;overflow:auto;position:relative;height:" + e + ";" + ("text-align:" + f.align + ";") + "'>" + b + "</div>";
    d += c ? "<div class='ui-widget-content ui-helper-clearfix' style='text-align:" + f.buttonalign + ";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'><a href='javascript:void(0)' id='closedialog' class='fm-button ui-state-default ui-corner-all'>" +
    c + "</a>" + a + "</div>": "";
    d += "</div>";
    try {
        jQuery("#info_dialog").attr("aria-hidden") == "false" && hideModal("#info_dialog", {
            jqm: h
        });
        jQuery("#info_dialog").remove()
    } catch(g) {}
    createModal({
        themodal: "info_dialog",
        modalhead: "info_head",
        modalcontent: "info_content",
        scrollelm: "infocnt"
    },
    d, f, "", "", true);
    a && jQuery.each(f.buttons,
    function(j) {
        jQuery("#" + this.id, "#info_id").bind("click",
        function() {
            f.buttons[j].onClick.call(jQuery("#info_dialog"));
            return false
        })
    });
    jQuery("#closedialog", "#info_id").click(function(j) {
        hideModal("#info_dialog",
        {
            jqm: h
        });
        return false
    });
    jQuery(".fm-button", "#info_dialog").hover(function() {
        jQuery(this).addClass("ui-state-hover")
    },
    function() {
        jQuery(this).removeClass("ui-state-hover")
    });
    viewModal("#info_dialog", {
        onHide: function(j) {
            j.w.hide().remove();
            j.o && j.o.remove()
        },
        modal: f.modal,
        jqm: h
    });
    try {
        $("#info_dialog").focus()
    } catch(i) {}
}
function findPos(a) {
    var b = curtop = 0;
    if (a.offsetParent) {
        do {
            b += a.offsetLeft;
            curtop += a.offsetTop
        }
        while (a = a.offsetParent)
    }
    return [b, curtop]
}
function isArray(a) {
    return a.constructor.toString().indexOf("Array") == -1 ? false: true
}
function createEl(a, b, c, e, f) {
    function h(k, m) {
        if (jQuery.isFunction(m.dataInit)) {
            k.id = m.id;
            m.dataInit(k);
            delete m.id;
            delete m.dataInit
        }
        if (m.dataEvents) {
            jQuery.each(m.dataEvents,
            function() {
                this.data != null ? jQuery(k).bind(this.type, this.data, this.fn) : jQuery(k).bind(this.type, this.fn)
            });
            delete m.dataEvents
        }
        return m
    }
    var d = "";
    b.defaultValue && delete b.defaultValue;
    switch (a) {
    case "textarea":
        d = document.createElement("textarea");
        if (e) b.cols || jQuery(d).css({
            width: "98%"
        });
        else if (!b.cols) b.cols = 20;
        if (!b.rows) b.rows =
        2;
        if (c == "&nbsp;" || c == "&#160;" || c.length == 1 && c.charCodeAt(0) == 160) c = "";
        d.value = c;
        b = h(d, b);
        jQuery(d).attr(b);
        break;
    case "checkbox":
        d = document.createElement("input");
        d.type = "checkbox";
        if (b.value) {
            var g = b.value.split(":");
            if (c === g[0]) {
                d.checked = true;
                d.defaultChecked = true
            }
            d.value = g[0];
            jQuery(d).attr("offval", g[1]);
            try {
                delete b.value
            } catch(i) {}
        } else {
            g = c.toLowerCase();
            if (g.search(/(false|0|no|off|undefined)/i) < 0 && g !== "") {
                d.checked = true;
                d.defaultChecked = true;
                d.value = c
            } else d.value = "on";
            jQuery(d).attr("offval",
            "off")
        }
        b = h(d, b);
        jQuery(d).attr(b);
        break;
    case "select":
        d = document.createElement("select");
        var j,
        l = [];
        if (b.multiple === true) {
            j = true;
            d.multiple = "multiple"
        } else j = false;
        if (b.dataUrl != null) jQuery.ajax(jQuery.extend({
            url: b.dataUrl,
            type: "GET",
            complete: function(k, m) {
                try {
                    delete b.dataUrl;
                    delete b.value
                } catch(r) {}
                if (b.buildSelect != null) {
                    k = b.buildSelect(k);
                    k = jQuery(k).html();
                    delete b.buildSelect
                } else k = jQuery(k.responseText).html();
                if (k) {
                    jQuery(d).append(k);
                    b = h(d, b);
                    if (typeof b.size === "undefined") b.size = j ? 3:
                    1;
                    if (j) {
                        l = c.split(",");
                        l = jQuery.map(l,
                        function(p) {
                            return jQuery.trim(p)
                        })
                    } else l[0] = c;
                    jQuery(d).attr(b);
                    setTimeout(function() {
                        jQuery("option", d).each(function(p) {
                            if (p == 0) this.selected = "";
                            if (jQuery.inArray(jQuery(this).text(), l) > -1 || jQuery.inArray(jQuery(this).val(), l) > -1) {
                                this.selected = "selected";
                                if (!j) return false
                            }
                        })
                    },
                    0)
                }
            }
        },
        f || {}));
        else if (b.value) {
            if (j) {
                l = c.split(",");
                l = jQuery.map(l,
                function(k) {
                    return jQuery.trim(k)
                });
                if (typeof b.size === "undefined") b.size = 3
            } else b.size = 1;
            if (typeof b.value === "function") b.value =
            b.value();
            if (typeof b.value === "string") {
                e = b.value.split(";");
                for (g = 0; g < e.length; g++) {
                    f = e[g].split(":");
                    if (f.length > 2) f[1] = jQuery.map(f,
                    function(k, m) {
                        if (m > 0) return k
                    }).join(":");
                    a = document.createElement("option");
                    a.value = f[0];
                    a.innerHTML = f[1];
                    if (!j && (f[0] == c || f[1] == c)) a.selected = "selected";
                    if (j && (jQuery.inArray(f[1], l) > -1 || jQuery.inArray(f[0], l) > -1)) a.selected = "selected";
                    d.appendChild(a)
                }
            } else if (typeof b.value === "object") {
                e = b.value;
                for (g in e) {
                    a = document.createElement("option");
                    a.value = g;
                    a.innerHTML =
                    e[g];
                    if (!j && (g == c || e[g] == c)) a.selected = "selected";
                    if (j && (jQuery.inArray(e[g], l) > -1 || jQuery.inArray(g, l) > -1)) a.selected = "selected";
                    d.appendChild(a)
                }
            }
            b = h(d, b);
            try {
                delete b.value
            } catch(q) {}
            jQuery(d).attr(b)
        }
        break;
    case "text":
    case "password":
    case "button":
        d = document.createElement("input");
        d.type = a;
        d.value = c;
        b = h(d, b);
        if (a != "button") if (e) b.size || jQuery(d).css({
            width: "98%"
        });
        else if (!b.size) b.size = 20;
        jQuery(d).attr(b);
        break;
    case "image":
    case "file":
        d = document.createElement("input");
        d.type = a;
        b = h(d, b);
        jQuery(d).attr(b);
        break;
    case "custom":
        d = document.createElement("span");
        try {
            if (jQuery.isFunction(b.custom_element)) {
                var o = b.custom_element.call(this, c, b);
                if (o) {
                    o = jQuery(o).addClass("customelement").attr({
                        id: b.id,
                        name: b.name
                    });
                    jQuery(d).empty().append(o)
                } else throw "e2";
            } else throw "e1";
        } catch(n) {
            n == "e1" && info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_element' " + jQuery.jgrid.edit.msg.nodefined, jQuery.jgrid.edit.bClose);
            n == "e2" ? info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_element' " + jQuery.jgrid.edit.msg.novalue,
            jQuery.jgrid.edit.bClose) : info_dialog(jQuery.jgrid.errors.errcap, n.message, jQuery.jgrid.edit.bClose)
        }
        break
    }
    return d
}
function checkValues(a, b, c) {
    var e,
    f,
    h;
    if (typeof b == "string") {
        f = 0;
        for (len = c.p.colModel.length; f < len; f++) if (c.p.colModel[f].name == b) {
            e = c.p.colModel[f].editrules;
            b = f;
            try {
                h = c.p.colModel[f].formoptions.label
            } catch(d) {}
            break
        }
    } else if (b >= 0) e = c.p.colModel[b].editrules;
    if (e) {
        h || (h = c.p.colNames[b]);
        if (e.required === true) if (a.match(/^s+$/) || a == "") return [false, h + ": " + jQuery.jgrid.edit.msg.required, ""];
        f = e.required === false ? false: true;
        if (e.number === true) if (! (f === false && isEmpty(a))) if (isNaN(a)) return [false, h + ": " +
        jQuery.jgrid.edit.msg.number, ""];
        if (typeof e.minValue != "undefined" && !isNaN(e.minValue)) if (parseFloat(a) < parseFloat(e.minValue)) return [false, h + ": " + jQuery.jgrid.edit.msg.minValue + " " + e.minValue, ""];
        if (typeof e.maxValue != "undefined" && !isNaN(e.maxValue)) if (parseFloat(a) > parseFloat(e.maxValue)) return [false, h + ": " + jQuery.jgrid.edit.msg.maxValue + " " + e.maxValue, ""];
        var g;
        if (e.email === true) if (! (f === false && isEmpty(a))) {
            g = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
            if (!g.test(a)) return [false, h + ": " + jQuery.jgrid.edit.msg.email, ""]
        }
        if (e.integer === true) if (! (f === false && isEmpty(a))) {
            if (isNaN(a)) return [false, h + ": " + jQuery.jgrid.edit.msg.integer, ""];
            if (a % 1 != 0 || a.indexOf(".") != -1) return [false, h + ": " + jQuery.jgrid.edit.msg.integer, ""]
        }
        if (e.date === true) if (! (f === false && isEmpty(a))) {
            b = c.p.colModel[b].datefmt || "Y-m-d";
            if (!checkDate(b, a)) return [false, h + ": " + jQuery.jgrid.edit.msg.date + " - " + b, ""]
        }
        if (e.time === true) if (! (f === false && isEmpty(a))) if (!checkTime(a)) return [false, h +
        ": " + jQuery.jgrid.edit.msg.date + " - hh:mm (am/pm)", ""];
        if (e.url === true) if (! (f === false && isEmpty(a))) {
            g = /^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
            if (!g.test(a)) return [false, h + ": " + jQuery.jgrid.edit.msg.url, ""]
        }
        if (e.custom === true) if (! (f === false && isEmpty(a))) if (jQuery.isFunction(e.custom_func)) {
            a = e.custom_func.call(c, a, h);
            return jQuery.isArray(a) ? a: [false, jQuery.jgrid.edit.msg.customarray, ""]
        } else return [false, jQuery.jgrid.edit.msg.customfcheck,
        ""]
    }
    return [true, "", ""]
}
function checkDate(a, b) {
    var c = {},
    e;
    a = a.toLowerCase();
    e = a.indexOf("/") != -1 ? "/": a.indexOf("-") != -1 ? "-": a.indexOf(".") != -1 ? ".": "/";
    a = a.split(e);
    b = b.split(e);
    if (b.length != 3) return false;
    e = -1;
    for (var f, h = -1, d = -1, g = 0; g < a.length; g++) {
        f = isNaN(b[g]) ? 0: parseInt(b[g], 10);
        c[a[g]] = f;
        f = a[g];
        if (f.indexOf("y") != -1) e = g;
        if (f.indexOf("m") != -1) d = g;
        if (f.indexOf("d") != -1) h = g
    }
    f = a[e] == "y" || a[e] == "yyyy" ? 4: a[e] == "yy" ? 2: -1;
    g = DaysArray(12);
    var i;
    if (e === -1) return false;
    else {
        i = c[a[e]].toString();
        if (f == 2 && i.length == 1) f = 1;
        if (i.length !=
        f || c[a[e]] == 0 && b[e] != "00") return false
    }
    if (d === -1) return false;
    else {
        i = c[a[d]].toString();
        if (i.length < 1 || c[a[d]] < 1 || c[a[d]] > 12) return false
    }
    if (h === -1) return false;
    else {
        i = c[a[h]].toString();
        if (i.length < 1 || c[a[h]] < 1 || c[a[h]] > 31 || c[a[d]] == 2 && c[a[h]] > daysInFebruary(c[a[e]]) || c[a[h]] > g[c[a[d]]]) return false
    }
    return true
}
function daysInFebruary(a) {
    return a % 4 == 0 && (a % 100 != 0 || a % 400 == 0) ? 29: 28
}
function DaysArray(a) {
    for (var b = 1; b <= a; b++) {
        this[b] = 31;
        if (b == 4 || b == 6 || b == 9 || b == 11) this[b] = 30;
        if (b == 2) this[b] = 29
    }
    return this
}
function isEmpty(a) {
    return a.match(/^s+$/) || a == "" ? true: false
}
function checkTime(a) {
    var b = /^(\d{1,2}):(\d{2})([ap]m)?$/;
    if (!isEmpty(a)) if (a = a.match(b)) {
        if (a[3]) {
            if (a[1] < 1 || a[1] > 12) return false
        } else if (a[1] > 23) return false;
        if (a[2] > 59) return false
    } else return false;
    return true
};
 (function(a) {
    var d = null;
    a.jgrid.extend({
        searchGrid: function(h) {
            h = a.extend({
                recreateFilter: false,
                drag: true,
                sField: "searchField",
                sValue: "searchString",
                sOper: "searchOper",
                sFilter: "filters",
                beforeShowSearch: null,
                afterShowSearch: null,
                onInitializeSearch: null,
                closeAfterSearch: false,
                closeOnEscape: false,
                multipleSearch: false,
                sopt: null,
                onClose: null
            },
            a.jgrid.search, h || {});
            return this.each(function() {
                function b(r) {
                    var v = r !== undefined,
                    B = a("#" + w.p.id),
                    I = {};
                    if (h.multipleSearch === false) {
                        I[h.sField] = r.rules[0].field;
                        I[h.sValue] = r.rules[0].data;
                        I[h.sOper] = r.rules[0].op
                    } else I[h.sFilter] = r;
                    B[0].p.search = v;
                    a.extend(B[0].p.postData, I);
                    B.trigger("reloadGrid", [{
                        page: 1
                    }]);
                    h.closeAfterSearch && x(a("#" + q))
                }
                function o(r) {
                    r = r !== undefined;
                    var v = a("#" + w.p.id),
                    B = [];
                    v[0].p.search = r;
                    if (h.multipleSearch === false) B[h.sField] = B[h.sValue] = B[h.sOper] = "";
                    else B[h.sFilter] = "";
                    a.extend(v[0].p.postData, B);
                    v.trigger("reloadGrid", [{
                        page: 1
                    }])
                }
                function x(r) {
                    if (h.onClose) {
                        var v = h.onClose(r);
                        if (typeof v == "boolean" && !v) return
                    }
                    r.hide();
                    a(".jqgrid-overlay:first",
                    "#gbox_" + w.p.id).hide()
                }
                function s() {
                    var r = a(".ui-searchFilter").length;
                    if (r > 1) {
                        var v = a("#" + q).css("zIndex");
                        a("#" + q).css({
                            zIndex: parseInt(v) + r
                        })
                    }
                    a("#" + q).show();
                    a(".jqgrid-overlay:first", "#gbox_" + w.p.id).show();
                    try {
                        a(":input:visible", "#" + q)[0].focus()
                    } catch(B) {}
                }
                var w = this;
                if (w.grid) if (a.fn.searchFilter) {
                    var q = "fbox_" + w.p.id;
                    h.recreateFilter === true && a("#" + q).remove();
                    if (a("#" + q).html() != null) {
                        a.isFunction(h.beforeShowSearch) && h.beforeShowSearch(a("#" + q));
                        s();
                        a.isFunction(h.afterShowSearch) && h.afterShowSearch(a("#" +
                        q))
                    } else {
                        var n = [],
                        m = a("#" + w.p.id).jqGrid("getGridParam", "colNames"),
                        F = a("#" + w.p.id).jqGrid("getGridParam", "colModel"),
                        f = ["eq", "ne", "lt", "le", "gt", "ge", "bw", "bn", "in", "ni", "ew", "en", "cn", "nc"],
                        e,
                        j,
                        i,
                        k;
                        k = jQuery.fn.searchFilter.defaults.operators;
                        if (h.sopt != null) {
                            k = [];
                            for (e = i = 0; e < h.sopt.length; e++) if ((j = a.inArray(h.sopt[e], f)) != -1) {
                                k[i] = {
                                    op: h.sopt[e],
                                    text: h.odata[j]
                                };
                                i++
                            }
                        }
                        var u;
                        a.each(F,
                        function(r, v) {
                            u = typeof v.search === "undefined" ? true: v.search;
                            hidden = v.hidden === true;
                            soptions = a.extend({},
                            {
                                text: m[r],
                                itemval: v.index || v.name
                            },
                            this.searchoptions);
                            ignoreHiding = soptions.searchhidden === true;
                            if (typeof soptions.sopt == "undefined") soptions.sopt = h.sopt || f;
                            i = 0;
                            soptions.ops = [];
                            if (soptions.sopt.length > 0) for (e = 0; e < soptions.sopt.length; e++) if ((j = a.inArray(soptions.sopt[e], f)) != -1) {
                                soptions.ops[i] = {
                                    op: soptions.sopt[e],
                                    text: h.odata[j]
                                };
                                i++
                            }
                            if (typeof this.stype === "undefined") this.stype = "text";
                            if (this.stype == "select") if (soptions.dataUrl == null) {
                                var B;
                                if (soptions.value) B = soptions.value;
                                else if (this.editoptions) B =
                                this.editoptions.value;
                                if (B) {
                                    soptions.dataValues = [];
                                    if (typeof B === "string") {
                                        r = B.split(";");
                                        for (e = 0; e < r.length; e++) {
                                            v = r[e].split(":");
                                            soptions.dataValues[e] = {
                                                value: v[0],
                                                text: v[1]
                                            }
                                        }
                                    } else if (typeof B === "object") {
                                        e = 0;
                                        for (var I in B) {
                                            soptions.dataValues[e] = {
                                                value: I,
                                                text: B[I]
                                            };
                                            e++
                                        }
                                    }
                                }
                            }
                            if (ignoreHiding && u || u && !hidden) n.push(soptions)
                        });
                        if (n.length > 0) {
                            a("<div id='" + q + "' role='dialog' tabindex='-1'></div>").insertBefore("#gview_" + w.p.id);
                            a("#" + q).searchFilter(n, {
                                groupOps: h.groupOps,
                                operators: k,
                                onClose: x,
                                resetText: h.Reset,
                                searchText: h.Find,
                                windowTitle: h.caption,
                                rulesText: h.rulesText,
                                matchText: h.matchText,
                                onSearch: b,
                                onReset: o,
                                stringResult: h.multipleSearch,
                                ajaxSelectOptions: a.extend({},
                                a.jgrid.ajaxOptions, w.p.ajaxSelectOptions || {})
                            });
                            a(".ui-widget-overlay", "#" + q).remove();
                            w.p.direction == "rtl" && a(".ui-closer", "#" + q).css("float", "left");
                            if (h.drag === true) {
                                a("#" + q + " table thead tr:first td:first").css("cursor", "move");
                                if (jQuery.fn.jqDrag) a("#" + q).jqDrag(a("#" + q + " table thead tr:first td:first"));
                                else try {
                                    a("#" + q).draggable({
                                        handle: a("#" +
                                        q + " table thead tr:first td:first")
                                    })
                                } catch(P) {}
                            }
                            if (h.multipleSearch === false) {
                                a(".ui-del, .ui-add, .ui-del, .ui-add-last, .matchText, .rulesText", "#" + q).hide();
                                a("select[name='groupOp']", "#" + q).hide()
                            }
                            a.isFunction(h.onInitializeSearch) && h.onInitializeSearch(a("#" + q));
                            a.isFunction(h.beforeShowSearch) && h.beforeShowSearch(a("#" + q));
                            s();
                            a.isFunction(h.afterShowSearch) && h.afterShowSearch(a("#" + q));
                            h.closeOnEscape === true && a("#" + q).keydown(function(r) {
                                r.which == 27 && x(a("#" + q))
                            })
                        }
                    }
                }
            })
        },
        editGridRow: function(h,
        b) {
            d = b = a.extend({
                top: 0,
                left: 0,
                width: 300,
                height: "auto",
                dataheight: "auto",
                modal: false,
                drag: true,
                resize: true,
                url: null,
                mtype: "POST",
                clearAfterAdd: true,
                closeAfterEdit: false,
                reloadAfterSubmit: true,
                onInitializeForm: null,
                beforeInitData: null,
                beforeShowForm: null,
                afterShowForm: null,
                beforeSubmit: null,
                afterSubmit: null,
                onclickSubmit: null,
                afterComplete: null,
                onclickPgButtons: null,
                afterclickPgButtons: null,
                editData: {},
                recreateForm: false,
                jqModal: true,
                closeOnEscape: false,
                addedrow: "first",
                topinfo: "",
                bottominfo: "",
                saveicon: [],
                closeicon: [],
                savekey: [false, 13],
                navkeys: [false, 38, 40],
                checkOnSubmit: false,
                checkOnUpdate: false,
                _savedData: {},
                processing: false,
                onClose: null,
                ajaxEditOptions: {},
                serializeEditData: null,
                viewPagerButtons: true
            },
            a.jgrid.edit, b || {});
            return this.each(function() {
                function o(g, l) {
                    g == 0 ? a("#pData", "#" + i + "_2").addClass("ui-state-disabled") : a("#pData", "#" + i + "_2").removeClass("ui-state-disabled");
                    g == l ? a("#nData", "#" + i + "_2").addClass("ui-state-disabled") : a("#nData", "#" + i + "_2").removeClass("ui-state-disabled")
                }
                function x() {
                    var g =
                    a(f).jqGrid("getDataIDs"),
                    l = a("#id_g", "#" + i).val();
                    return [a.inArray(l, g), g]
                }
                function s() {
                    var g = true;
                    a("#FormError", "#" + i).hide();
                    if (d.checkOnUpdate) {
                        c = {};
                        t = {};
                        w();
                        J = a.extend({},
                        c, t);
                        if (S = F(J, d._savedData)) {
                            a("#" + j).data("disabled", true);
                            a(".confirm", "#" + k.themodal).show();
                            g = false
                        }
                    }
                    return g
                }
                function w() {
                    a(".FormElement", "#" + i).each(function() {
                        var g = a(".customelement", this);
                        if (g.length) {
                            var l = g[0].name;
                            a.each(f.p.colModel,
                            function() {
                                if (this.name == l && this.editoptions && a.isFunction(this.editoptions.custom_value)) {
                                    try {
                                        c[l] =
                                        this.editoptions.custom_value(a("#" + l, "#" + i), "get");
                                        if (c[l] === undefined) throw "e1";
                                    } catch(p) {
                                        p == "e1" ? info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_value' " + a.jgrid.edit.msg.novalue, jQuery.jgrid.edit.bClose) : info_dialog(jQuery.jgrid.errors.errcap, p.message, jQuery.jgrid.edit.bClose)
                                    }
                                    return true
                                }
                            })
                        } else {
                            switch (a(this).get(0).type) {
                            case "checkbox":
                                if (a(this).attr("checked")) c[this.name] = a(this).val();
                                else {
                                    g = a(this).attr("offval");
                                    c[this.name] = g
                                }
                                break;
                            case "select-one":
                                c[this.name] = a("option:selected",
                                this).val();
                                t[this.name] = a("option:selected", this).text();
                                break;
                            case "select-multiple":
                                c[this.name] = a(this).val();
                                c[this.name] = c[this.name] ? c[this.name].join(",") : "";
                                var C = [];
                                a("option:selected", this).each(function(p, E) {
                                    C[p] = a(E).text()
                                });
                                t[this.name] = C.join(",");
                                break;
                            case "password":
                            case "text":
                            case "textarea":
                            case "button":
                                c[this.name] = a(this).val();
                                break
                            }
                            if (f.p.autoencode) c[this.name] = a.jgrid.htmlEncode(c[this.name])
                        }
                    });
                    return true
                }
                function q(g, l, C, p) {
                    for (var E, z, A, K = 0, y, L, G, Q = [], H = false, X, R,
                    ba = "", W = 1; W <= p; W++) ba += "<td class='CaptionTD ui-widget-content'>&#160;</td><td class='DataTD ui-widget-content' style='white-space:pre'>&#160;</td>";
                    if (g != "_empty") H = a(l).jqGrid("getInd", g);
                    a(l.p.colModel).each(function(Y) {
                        E = this.name;
                        L = (z = this.editrules && this.editrules.edithidden == true ? false: this.hidden === true ? true: false) ? "style='display:none'": "";
                        if (E !== "cb" && E !== "subgrid" && this.editable === true && E !== "rn") {
                            if (H === false) y = "";
                            else if (E == l.p.ExpandColumn && l.p.treeGrid === true) y = a("td:eq(" + Y + ")", l.rows[H]).text();
                            else try {
                                y = a.unformat(a("td:eq(" + Y + ")", l.rows[H]), {
                                    rowId: g,
                                    colModel: this
                                },
                                Y)
                            } catch(da) {
                                y = a("td:eq(" + Y + ")", l.rows[H]).html()
                            }
                            var U = a.extend({},
                            this.editoptions || {},
                            {
                                id: E,
                                name: E
                            });
                            frmopt = a.extend({},
                            {
                                elmprefix: "",
                                elmsuffix: "",
                                rowabove: false,
                                rowcontent: ""
                            },
                            this.formoptions || {});
                            X = parseInt(frmopt.rowpos) || K + 1;
                            R = parseInt((parseInt(frmopt.colpos) || 1) * 2);
                            if (g == "_empty" && U.defaultValue) y = a.isFunction(U.defaultValue) ? U.defaultValue() : U.defaultValue;
                            if (!this.edittype) this.edittype = "text";
                            if (f.p.autoencode) y =
                            a.jgrid.htmlDecode(y);
                            G = createEl(this.edittype, U, y, false, a.extend({},
                            a.jgrid.ajaxOptions, l.p.ajaxSelectOptions || {}));
                            if (y == "" && this.edittype == "checkbox") y = a(G).attr("offval");
                            if (d.checkOnSubmit || d.checkOnUpdate) d._savedData[E] = y;
                            a(G).addClass("FormElement");
                            A = a(C).find("tr[rowpos=" + X + "]");
                            if (frmopt.rowabove) {
                                U = a("<tr><td class='contentinfo' colspan='" + p * 2 + "'>" + frmopt.rowcontent + "</td></tr>");
                                a(C).append(U);
                                U[0].rp = X
                            }
                            if (A.length == 0) {
                                A = a("<tr " + L + " rowpos='" + X + "'></tr>").addClass("FormData").attr("id",
                                "tr_" + E);
                                a(A).append(ba);
                                a(C).append(A);
                                A[0].rp = X
                            }
                            a("td:eq(" + (R - 2) + ")", A[0]).html(typeof frmopt.label === "undefined" ? l.p.colNames[Y] : frmopt.label);
                            a("td:eq(" + (R - 1) + ")", A[0]).append(frmopt.elmprefix).append(G).append(frmopt.elmsuffix);
                            Q[K] = Y;
                            K++
                        }
                    });
                    if (K > 0) {
                        W = a("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='" + (p * 2 - 1) + "' class='DataTD'><input class='FormElement' id='id_g' type='text' name='" + l.p.id + "_id' value='" + g + "'/></td></tr>");
                        W[0].rp = K + 999;
                        a(C).append(W);
                        if (d.checkOnSubmit ||
                        d.checkOnUpdate) d._savedData.id = g
                    }
                    return Q
                }
                function n(g, l, C) {
                    var p,
                    E = 0,
                    z,
                    A,
                    K,
                    y,
                    L;
                    if (d.checkOnSubmit || d.checkOnUpdate) {
                        d._savedData = {};
                        d._savedData.id = g
                    }
                    var G = l.p.colModel;
                    if (g == "_empty") {
                        a(G).each(function() {
                            p = this.name;
                            K = a.extend({},
                            this.editoptions || {});
                            A = a("#" + a.jgrid.jqID(p), "#" + C);
                            if (A[0] != null) {
                                y = "";
                                if (K.defaultValue) {
                                    y = a.isFunction(K.defaultValue) ? K.defaultValue() : K.defaultValue;
                                    if (A[0].type == "checkbox") {
                                        L = y.toLowerCase();
                                        if (L.search(/(false|0|no|off|undefined)/i) < 0 && L !== "") {
                                            A[0].checked = true;
                                            A[0].defaultChecked = true;
                                            A[0].value = y
                                        } else A.attr({
                                            checked: "",
                                            defaultChecked: ""
                                        })
                                    } else A.val(y)
                                } else if (A[0].type == "checkbox") {
                                    A[0].checked = false;
                                    A[0].defaultChecked = false;
                                    y = a(A).attr("offval")
                                } else if (A[0].type.substr(0, 6) == "select") A[0].selectedIndex = 0;
                                else A.val(y);
                                if (d.checkOnSubmit === true || d.checkOnUpdate) d._savedData[p] = y
                            }
                        });
                        a("#id_g", "#" + C).val(g)
                    } else {
                        var Q = a(l).jqGrid("getInd", g, true);
                        if (Q) {
                            a("td", Q).each(function(H) {
                                p = G[H].name;
                                if (p !== "cb" && p !== "subgrid" && p !== "rn" && G[H].editable === true) {
                                    if (p ==
                                    l.p.ExpandColumn && l.p.treeGrid === true) z = a(this).text();
                                    else try {
                                        z = a.unformat(this, {
                                            rowId: g,
                                            colModel: G[H]
                                        },
                                        H)
                                    } catch(X) {
                                        z = a(this).html()
                                    }
                                    if (f.p.autoencode) z = a.jgrid.htmlDecode(z);
                                    if (d.checkOnSubmit === true || d.checkOnUpdate) d._savedData[p] = z;
                                    p = a.jgrid.jqID(p);
                                    switch (G[H].edittype) {
                                    case "password":
                                    case "text":
                                    case "button":
                                    case "image":
                                        a("#" + p, "#" + C).val(z);
                                        break;
                                    case "textarea":
                                        if (z == "&nbsp;" || z == "&#160;" || z.length == 1 && z.charCodeAt(0) == 160) z = "";
                                        a("#" + p, "#" + C).val(z);
                                        break;
                                    case "select":
                                        var R = z.split(",");
                                        R = a.map(R,
                                        function(W) {
                                            return a.trim(W)
                                        });
                                        a("#" + p + " option", "#" + C).each(function() {
                                            this.selected = !G[H].editoptions.multiple && (R[0] == a(this).text() || R[0] == a(this).val()) ? true: G[H].editoptions.multiple ? a.inArray(a(this).text(), R) > -1 || a.inArray(a(this).val(), R) > -1 ? true: false: false
                                        });
                                        break;
                                    case "checkbox":
                                        z += "";
                                        z = z.toLowerCase();
                                        if (z.search(/(false|0|no|off|undefined)/i) < 0 && z !== "") {
                                            a("#" + p, "#" + C).attr("checked", true);
                                            a("#" + p, "#" + C).attr("defaultChecked", true)
                                        } else {
                                            a("#" + p, "#" + C).attr("checked", false);
                                            a("#" + p, "#" + C).attr("defaultChecked", "")
                                        }
                                        break;
                                    case "custom":
                                        try {
                                            if (G[H].editoptions && a.isFunction(G[H].editoptions.custom_value)) G[H].editoptions.custom_value(a("#" + p, "#" + C), "set", z);
                                            else throw "e1";
                                        } catch(ba) {
                                            ba == "e1" ? info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_value' " + a.jgrid.edit.msg.nodefined, jQuery.jgrid.edit.bClose) : info_dialog(jQuery.jgrid.errors.errcap, ba.message, jQuery.jgrid.edit.bClose)
                                        }
                                        break
                                    }
                                    E++
                                }
                            });
                            E > 0 && a("#id_g", "#" + i).val(g)
                        }
                    }
                }
                function m() {
                    var g,
                    l = [true, "", ""],
                    C = {},
                    p = f.p.prmNames,
                    E,
                    z;
                    if (a.isFunction(d.beforeCheckValues)) {
                        var A = d.beforeCheckValues(c, a("#" + j), c[f.p.id + "_id"] == "_empty" ? p.addoper: p.editoper);
                        if (A && typeof A === "object") c = A
                    }
                    for (var K in c) {
                        l = checkValues(c[K], K, f);
                        if (l[0] == false) break
                    }
                    if (l[0]) {
                        if (a.isFunction(d.onclickSubmit)) C = d.onclickSubmit(d, c) || {};
                        if (a.isFunction(d.beforeSubmit)) l = d.beforeSubmit(c, a("#" + j))
                    }
                    Z = d.url ? d.url: a(f).jqGrid("getGridParam", "editurl");
                    if (l[0]) if (!Z) {
                        l[0] = false;
                        l[1] += " " + a.jgrid.errors.nourl
                    }
                    if (l[0] === false) {
                        a("#FormError>td", "#" + i).html(l[1]);
                        a("#FormError", "#" + i).show()
                    } else if (!d.processing) {
                        d.processing = true;
                        a("#sData", "#" + i + "_2").addClass("ui-state-active");
                        z = p.oper;
                        E = p.id;
                        c[z] = a.trim(c[f.p.id + "_id"]) == "_empty" ? p.addoper: p.editoper;
                        if (c[z] != p.addoper) c[E] = c[f.p.id + "_id"];
                        else if (c[E] === undefined) c[E] = c[f.p.id + "_id"];
                        delete c[f.p.id + "_id"];
                        c = a.extend(c, d.editData, C);
                        a.ajax(a.extend({
                            url: Z,
                            type: d.mtype,
                            data: a.isFunction(d.serializeEditData) ? d.serializeEditData(c) : c,
                            complete: function(y, L) {
                                if (L != "success") {
                                    l[0] = false;
                                    l[1] = a.isFunction(d.errorTextFormat) ?
                                    d.errorTextFormat(y) : L + " Status: '" + y.statusText + "'. Error code: " + y.status
                                } else if (a.isFunction(d.afterSubmit)) l = d.afterSubmit(y, c);
                                if (l[0] === false) {
                                    a("#FormError>td", "#" + i).html(l[1]);
                                    a("#FormError", "#" + i).show()
                                } else {
                                    a.each(f.p.colModel,
                                    function() {
                                        if (t[this.name] && this.formatter && this.formatter == "select") try {
                                            delete t[this.name]
                                        } catch(Q) {}
                                    });
                                    c = a.extend(c, t);
                                    f.p.autoencode && a.each(c,
                                    function(Q, H) {
                                        c[Q] = a.jgrid.htmlDecode(H)
                                    });
                                    if (c[z] == p.addoper) {
                                        l[2] || (l[2] = parseInt(f.p.records) + 1);
                                        c[E] = l[2];
                                        if (d.closeAfterAdd) {
                                            if (d.reloadAfterSubmit) a(f).trigger("reloadGrid");
                                            else {
                                                a(f).jqGrid("addRowData", l[2], c, b.addedrow);
                                                a(f).jqGrid("setSelection", l[2])
                                            }
                                            hideModal("#" + k.themodal, {
                                                gb: "#gbox_" + e,
                                                jqm: b.jqModal,
                                                onClose: d.onClose
                                            })
                                        } else if (d.clearAfterAdd) {
                                            d.reloadAfterSubmit ? a(f).trigger("reloadGrid") : a(f).jqGrid("addRowData", l[2], c, b.addedrow);
                                            n("_empty", f, j)
                                        } else d.reloadAfterSubmit ? a(f).trigger("reloadGrid") : a(f).jqGrid("addRowData", l[2], c, b.addedrow)
                                    } else {
                                        if (d.reloadAfterSubmit) {
                                            a(f).trigger("reloadGrid");
                                            d.closeAfterEdit || setTimeout(function() {
                                                a(f).jqGrid("setSelection",
                                                c[E])
                                            },
                                            1E3)
                                        } else f.p.treeGrid === true ? a(f).jqGrid("setTreeRow", c[E], c) : a(f).jqGrid("setRowData", c[E], c);
                                        d.closeAfterEdit && hideModal("#" + k.themodal, {
                                            gb: "#gbox_" + e,
                                            jqm: b.jqModal,
                                            onClose: d.onClose
                                        })
                                    }
                                    if (a.isFunction(d.afterComplete)) {
                                        g = y;
                                        setTimeout(function() {
                                            d.afterComplete(g, c, a("#" + j));
                                            g = null
                                        },
                                        500)
                                    }
                                }
                                d.processing = false;
                                if (d.checkOnSubmit || d.checkOnUpdate) {
                                    a("#" + j).data("disabled", false);
                                    if (d._savedData.id != "_empty") d._savedData = c
                                }
                                a("#sData", "#" + i + "_2").removeClass("ui-state-active");
                                try {
                                    a(":input:visible",
                                    "#" + j)[0].focus()
                                } catch(G) {}
                            },
                            error: function(y, L, G) {
                                a("#FormError>td", "#" + i).html(L + " : " + G);
                                a("#FormError", "#" + i).show();
                                d.processing = false;
                                a("#" + j).data("disabled", false);
                                a("#sData", "#" + i + "_2").removeClass("ui-state-active")
                            }
                        },
                        a.jgrid.ajaxOptions, d.ajaxEditOptions))
                    }
                }
                function F(g, l) {
                    var C = false,
                    p;
                    for (p in g) if (g[p] != l[p]) {
                        C = true;
                        break
                    }
                    return C
                }
                var f = this;
                if (f.grid && h) {
                    var e = f.p.id,
                    j = "FrmGrid_" + e,
                    i = "TblGrid_" + e,
                    k = {
                        themodal: "editmod" + e,
                        modalhead: "edithd" + e,
                        modalcontent: "editcnt" + e,
                        scrollelm: j
                    },
                    u =
                    a.isFunction(d.beforeShowForm) ? d.beforeShowForm: false,
                    P = a.isFunction(d.afterShowForm) ? d.afterShowForm: false,
                    r = a.isFunction(d.beforeInitData) ? d.beforeInitData: false,
                    v = a.isFunction(d.onInitializeForm) ? d.onInitializeForm: false,
                    B = 1,
                    I = 0,
                    Z,
                    c,
                    t,
                    J,
                    S;
                    if (h == "new") {
                        h = "_empty";
                        b.caption = b.addCaption
                    } else b.caption = b.editCaption;
                    b.recreateForm === true && a("#" + k.themodal).html() != null && a("#" + k.themodal).remove();
                    var M = true;
                    if (b.checkOnUpdate && b.jqModal && !b.modal) M = false;
                    if (a("#" + k.themodal).html() != null) {
                        a(".ui-jqdialog-title",
                        "#" + k.modalhead).html(b.caption);
                        a("#FormError", "#" + i).hide();
                        if (d.topinfo) {
                            a(".topinfo", "#" + i + "_2").html(d.topinfo);
                            a(".tinfo", "#" + i + "_2").show()
                        } else a(".tinfo", "#" + i + "_2").hide();
                        if (d.bottominfo) {
                            a(".bottominfo", "#" + i + "_2").html(d.bottominfo);
                            a(".binfo", "#" + i + "_2").show()
                        } else a(".binfo", "#" + i + "_2").hide();
                        r && r(a("#" + j));
                        n(h, f, j);
                        h == "_empty" || !d.viewPagerButtons ? a("#pData, #nData", "#" + i + "_2").hide() : a("#pData, #nData", "#" + i + "_2").show();
                        if (d.processing === true) {
                            d.processing = false;
                            a("#sData", "#" +
                            i + "_2").removeClass("ui-state-active")
                        }
                        if (a("#" + j).data("disabled") === true) {
                            a(".confirm", "#" + k.themodal).hide();
                            a("#" + j).data("disabled", false)
                        }
                        u && u(a("#" + j));
                        a("#" + k.themodal).data("onClose", d.onClose);
                        viewModal("#" + k.themodal, {
                            gbox: "#gbox_" + e,
                            jqm: b.jqModal,
                            jqM: false,
                            closeoverlay: M,
                            modal: b.modal
                        });
                        M || a(".jqmOverlay").click(function() {
                            if (!s()) return false;
                            hideModal("#" + k.themodal, {
                                gb: "#gbox_" + e,
                                jqm: b.jqModal,
                                onClose: d.onClose
                            });
                            return false
                        });
                        P && P(a("#" + j))
                    } else {
                        a(f.p.colModel).each(function() {
                            var g =
                            this.formoptions;
                            B = Math.max(B, g ? g.colpos || 0: 0);
                            I = Math.max(I, g ? g.rowpos || 0: 0)
                        });
                        var N = isNaN(b.dataheight) ? b.dataheight: b.dataheight + "px",
                        D;
                        N = a("<form name='FormPost' id='" + j + "' class='FormGrid' style='width:100%;overflow:auto;position:relative;height:" + N + ";'></form>").data("disabled", false);
                        var O = a("<table id='" + i + "' class='EditTable' cellspacing='0' cellpading='0' border='0'><tbody></tbody></table>");
                        a(N).append(O);
                        D = a("<tr id='FormError' style='display:none'><td class='ui-state-error' colspan='" +
                        B * 2 + "'></td></tr>");
                        D[0].rp = 0;
                        a(O).append(D);
                        D = a("<tr style='display:none' class='tinfo'><td class='topinfo' colspan='" + B * 2 + "'>" + d.topinfo + "</td></tr>");
                        D[0].rp = 0;
                        a(O).append(D);
                        r && r(a("#" + j));
                        D = (r = f.p.direction == "rtl" ? true: false) ? "nData": "pData";
                        var T = r ? "pData": "nData";
                        q(h, f, O, B);
                        D = "<a href='javascript:void(0)' id='" + D + "' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></div>";
                        T = "<a href='javascript:void(0)' id='" + T + "' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></div>";
                        var $ = "<a href='javascript:void(0)' id='sData' class='fm-button ui-state-default ui-corner-all'>" + b.bSubmit + "</a>",
                        aa = "<a href='javascript:void(0)' id='cData' class='fm-button ui-state-default ui-corner-all'>" + b.bCancel + "</a>";
                        D = "<table border='0' class='EditTable' id='" + i + "_2'><tbody><tr id='Act_Buttons'><td class='navButton ui-widget-content'>" + (r ? T + D: D + T) + "</td><td class='EditButton ui-widget-content'>" + $ + aa + "</td></tr>";
                        D += "<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>" +
                        d.bottominfo + "</td></tr>";
                        D += "</tbody></table>";
                        if (I > 0) {
                            var V = [];
                            a.each(a(O)[0].rows,
                            function(g, l) {
                                V[g] = l
                            });
                            V.sort(function(g, l) {
                                if (g.rp > l.rp) return 1;
                                if (g.rp < l.rp) return - 1;
                                return 0
                            });
                            a.each(V,
                            function(g, l) {
                                a("tbody", O).append(l)
                            })
                        }
                        b.gbox = "#gbox_" + e;
                        var ca = false;
                        if (b.closeOnEscape === true) {
                            b.closeOnEscape = false;
                            ca = true
                        }
                        N = a("<span></span>").append(N).append(D);
                        createModal(k, N, b, "#gview_" + f.p.id, a("#gview_" + f.p.id)[0]);
                        if (r) {
                            a("#pData, #nData", "#" + i + "_2").css("float", "right");
                            a(".EditButton", "#" + i + "_2").css("text-align",
                            "left")
                        }
                        d.topinfo && a(".tinfo", "#" + i + "_2").show();
                        d.bottominfo && a(".binfo", "#" + i + "_2").show();
                        D = N = null;
                        a("#" + k.themodal).keydown(function(g) {
                            var l = g.target;
                            if (a("#" + j).data("disabled") === true) return false;
                            if (d.savekey[0] === true && g.which == d.savekey[1]) if (l.tagName != "TEXTAREA") {
                                a("#sData", "#" + i + "_2").trigger("click");
                                return false
                            }
                            if (g.which === 27) {
                                if (!s()) return false;
                                ca && hideModal(this, {
                                    gb: b.gbox,
                                    jqm: b.jqModal,
                                    onClose: d.onClose
                                });
                                return false
                            }
                            if (d.navkeys[0] === true) {
                                if (a("#id_g", "#" + i).val() == "_empty") return true;
                                if (g.which == d.navkeys[1]) {
                                    a("#pData", "#" + i + "_2").trigger("click");
                                    return false
                                }
                                if (g.which == d.navkeys[2]) {
                                    a("#nData", "#" + i + "_2").trigger("click");
                                    return false
                                }
                            }
                        });
                        if (b.checkOnUpdate) {
                            a("a.ui-jqdialog-titlebar-close span", "#" + k.themodal).removeClass("jqmClose");
                            a("a.ui-jqdialog-titlebar-close", "#" + k.themodal).unbind("click").click(function() {
                                if (!s()) return false;
                                hideModal("#" + k.themodal, {
                                    gb: "#gbox_" + e,
                                    jqm: b.jqModal,
                                    onClose: d.onClose
                                });
                                return false
                            })
                        }
                        b.saveicon = a.extend([true, "left", "ui-icon-disk"],
                        b.saveicon);
                        b.closeicon = a.extend([true, "left", "ui-icon-close"], b.closeicon);
                        if (b.saveicon[0] == true) a("#sData", "#" + i + "_2").addClass(b.saveicon[1] == "right" ? "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + b.saveicon[2] + "'></span>");
                        if (b.closeicon[0] == true) a("#cData", "#" + i + "_2").addClass(b.closeicon[1] == "right" ? "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + b.closeicon[2] + "'></span>");
                        if (d.checkOnSubmit || d.checkOnUpdate) {
                            $ = "<a href='javascript:void(0)' id='sNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>" +
                            b.bYes + "</a>";
                            T = "<a href='javascript:void(0)' id='nNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>" + b.bNo + "</a>";
                            aa = "<a href='javascript:void(0)' id='cNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>" + b.bExit + "</a>";
                            N = b.zIndex || 999;
                            N++;
                            a("<div class='ui-widget-overlay jqgrid-overlay confirm' style='z-index:" + N + ";display:none;'>&#160;" + (a.browser.msie && a.browser.version == 6 ? '<iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\'0\');" src="javascript:false;"></iframe>':
                            "") + "</div><div class='confirm ui-widget-content ui-jqconfirm' style='z-index:" + (N + 1) + "'>" + b.saveData + "<br/><br/>" + $ + T + aa + "</div>").insertAfter("#" + j);
                            a("#sNew", "#" + k.themodal).click(function() {
                                m();
                                a("#" + j).data("disabled", false);
                                a(".confirm", "#" + k.themodal).hide();
                                return false
                            });
                            a("#nNew", "#" + k.themodal).click(function() {
                                a(".confirm", "#" + k.themodal).hide();
                                a("#" + j).data("disabled", false);
                                setTimeout(function() {
                                    a(":input", "#" + j)[0].focus()
                                },
                                0);
                                return false
                            });
                            a("#cNew", "#" + k.themodal).click(function() {
                                a(".confirm",
                                "#" + k.themodal).hide();
                                a("#" + j).data("disabled", false);
                                hideModal("#" + k.themodal, {
                                    gb: "#gbox_" + e,
                                    jqm: b.jqModal,
                                    onClose: d.onClose
                                });
                                return false
                            })
                        }
                        v && v(a("#" + j));
                        h == "_empty" || !d.viewPagerButtons ? a("#pData,#nData", "#" + i + "_2").hide() : a("#pData,#nData", "#" + i + "_2").show();
                        u && u(a("#" + j));
                        a("#" + k.themodal).data("onClose", d.onClose);
                        viewModal("#" + k.themodal, {
                            gbox: "#gbox_" + e,
                            jqm: b.jqModal,
                            closeoverlay: M,
                            modal: b.modal
                        });
                        M || a(".jqmOverlay").click(function() {
                            if (!s()) return false;
                            hideModal("#" + k.themodal, {
                                gb: "#gbox_" +
                                e,
                                jqm: b.jqModal,
                                onClose: d.onClose
                            });
                            return false
                        });
                        P && P(a("#" + j));
                        a(".fm-button", "#" + k.themodal).hover(function() {
                            a(this).addClass("ui-state-hover")
                        },
                        function() {
                            a(this).removeClass("ui-state-hover")
                        });
                        a("#sData", "#" + i + "_2").click(function() {
                            c = {};
                            t = {};
                            a("#FormError", "#" + i).hide();
                            w();
                            if (c[f.p.id + "_id"] == "_empty") m();
                            else if (b.checkOnSubmit === true) {
                                J = a.extend({},
                                c, t);
                                if (S = F(J, d._savedData)) {
                                    a("#" + j).data("disabled", true);
                                    a(".confirm", "#" + k.themodal).show()
                                } else m()
                            } else m();
                            return false
                        });
                        a("#cData",
                        "#" + i + "_2").click(function() {
                            if (!s()) return false;
                            hideModal("#" + k.themodal, {
                                gb: "#gbox_" + e,
                                jqm: b.jqModal,
                                onClose: d.onClose
                            });
                            return false
                        });
                        a("#nData", "#" + i + "_2").click(function() {
                            if (!s()) return false;
                            a("#FormError", "#" + i).hide();
                            var g = x();
                            g[0] = parseInt(g[0]);
                            if (g[0] != -1 && g[1][g[0] + 1]) {
                                a.isFunction(b.onclickPgButtons) && b.onclickPgButtons("next", a("#" + j), g[1][g[0]]);
                                n(g[1][g[0] + 1], f, j);
                                a(f).jqGrid("setSelection", g[1][g[0] + 1]);
                                a.isFunction(b.afterclickPgButtons) && b.afterclickPgButtons("next", a("#" + j),
                                g[1][g[0] + 1]);
                                o(g[0] + 1, g[1].length - 1)
                            }
                            return false
                        });
                        a("#pData", "#" + i + "_2").click(function() {
                            if (!s()) return false;
                            a("#FormError", "#" + i).hide();
                            var g = x();
                            if (g[0] != -1 && g[1][g[0] - 1]) {
                                a.isFunction(b.onclickPgButtons) && b.onclickPgButtons("prev", a("#" + j), g[1][g[0]]);
                                n(g[1][g[0] - 1], f, j);
                                a(f).jqGrid("setSelection", g[1][g[0] - 1]);
                                a.isFunction(b.afterclickPgButtons) && b.afterclickPgButtons("prev", a("#" + j), g[1][g[0] - 1]);
                                o(g[0] - 1, g[1].length - 1)
                            }
                            return false
                        })
                    }
                    u = x();
                    o(u[0], u[1].length - 1)
                }
            })
        },
        viewGridRow: function(h,
        b) {
            b = a.extend({
                top: 0,
                left: 0,
                width: 0,
                height: "auto",
                dataheight: "auto",
                modal: false,
                drag: true,
                resize: true,
                jqModal: true,
                closeOnEscape: false,
                labelswidth: "30%",
                closeicon: [],
                navkeys: [false, 38, 40],
                onClose: null,
                beforeShowForm: null,
                viewPagerButtons: true
            },
            a.jgrid.view, b || {});
            return this.each(function() {
                function o() {
                    if (b.closeOnEscape === true || b.navkeys[0] === true) setTimeout(function() {
                        a(".ui-jqdialog-titlebar-close", "#" + e.modalhead).focus()
                    },
                    0)
                }
                function x(c, t) {
                    c == 0 ? a("#pData", "#" + f + "_2").addClass("ui-state-disabled") :
                    a("#pData", "#" + f + "_2").removeClass("ui-state-disabled");
                    c == t ? a("#nData", "#" + f + "_2").addClass("ui-state-disabled") : a("#nData", "#" + f + "_2").removeClass("ui-state-disabled")
                }
                function s() {
                    var c = a(n).jqGrid("getDataIDs"),
                    t = a("#id_g", "#" + f).val();
                    return [a.inArray(t, c), c]
                }
                function w(c, t, J, S) {
                    for (var M, N, D, O = 0, T, $, aa = [], V = false, ca = "<td class='CaptionTD form-view-label ui-widget-content' width='" + b.labelswidth + "'>&#160;</td><td class='DataTD form-view-data ui-helper-reset ui-widget-content'>&#160;</td>", g =
                    "", l = ["integer", "number", "currency"], C = 0, p = 0, E, z, A, K = 1; K <= S; K++) g += K == 1 ? ca: "<td class='CaptionTD form-view-label ui-widget-content'>&#160;</td><td class='DataTD form-view-data ui-widget-content'>&#160;</td>";
                    a(t.p.colModel).each(function() {
                        N = this.editrules && this.editrules.edithidden === true ? false: this.hidden === true ? true: false;
                        if (!N && this.align === "right") if (this.formatter && a.inArray(this.formatter, l) !== -1) C = Math.max(C, parseInt(this.width, 10));
                        else p = Math.max(p, parseInt(this.width, 10))
                    });
                    E = C !== 0 ? C: p !==
                    0 ? p: 0;
                    V = a(t).jqGrid("getInd", c);
                    a(t.p.colModel).each(function(y) {
                        M = this.name;
                        z = false;
                        $ = (N = this.editrules && this.editrules.edithidden === true ? false: this.hidden === true ? true: false) ? "style='display:none'": "";
                        A = typeof this.viewable != "boolean" ? true: this.viewable;
                        if (M !== "cb" && M !== "subgrid" && M !== "rn" && A) {
                            T = V === false ? "": M == t.p.ExpandColumn && t.p.treeGrid === true ? a("td:eq(" + y + ")", t.rows[V]).text() : a("td:eq(" + y + ")", t.rows[V]).html();
                            z = this.align === "right" && E !== 0 ? true: false;
                            a.extend({},
                            this.editoptions || {},
                            {
                                id: M,
                                name: M
                            });
                            var L = a.extend({},
                            {
                                rowabove: false,
                                rowcontent: ""
                            },
                            this.formoptions || {}),
                            G = parseInt(L.rowpos) || O + 1,
                            Q = parseInt((parseInt(L.colpos) || 1) * 2);
                            if (L.rowabove) {
                                var H = a("<tr><td class='contentinfo' colspan='" + S * 2 + "'>" + L.rowcontent + "</td></tr>");
                                a(J).append(H);
                                H[0].rp = G
                            }
                            D = a(J).find("tr[rowpos=" + G + "]");
                            if (D.length == 0) {
                                D = a("<tr " + $ + " rowpos='" + G + "'></tr>").addClass("FormData").attr("id", "trv_" + M);
                                a(D).append(g);
                                a(J).append(D);
                                D[0].rp = G
                            }
                            a("td:eq(" + (Q - 2) + ")", D[0]).html("<b>" + (typeof L.label === "undefined" ?
                            t.p.colNames[y] : L.label) + "</b>");
                            a("td:eq(" + (Q - 1) + ")", D[0]).append("<span>" + T + "</span>").attr("id", "v_" + M);
                            z && a("td:eq(" + (Q - 1) + ") span", D[0]).css({
                                "text-align": "right",
                                width: E + "px"
                            });
                            aa[O] = y;
                            O++
                        }
                    });
                    if (O > 0) {
                        c = a("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='" + (S * 2 - 1) + "' class='DataTD'><input class='FormElement' id='id_g' type='text' name='id' value='" + c + "'/></td></tr>");
                        c[0].rp = O + 99;
                        a(J).append(c)
                    }
                    return aa
                }
                function q(c, t) {
                    var J,
                    S,
                    M = 0,
                    N,
                    D;
                    if (D = a(t).jqGrid("getInd",
                    c, true)) {
                        a("td", D).each(function(O) {
                            J = t.p.colModel[O].name;
                            S = t.p.colModel[O].editrules && t.p.colModel[O].editrules.edithidden === true ? false: t.p.colModel[O].hidden === true ? true: false;
                            if (J !== "cb" && J !== "subgrid" && J !== "rn") {
                                N = J == t.p.ExpandColumn && t.p.treeGrid === true ? a(this).text() : a(this).html();
                                a.extend({},
                                t.p.colModel[O].editoptions || {});
                                J = a.jgrid.jqID("v_" + J);
                                a("#" + J + " span", "#" + f).html(N);
                                S && a("#" + J, "#" + f).parents("tr:first").hide();
                                M++
                            }
                        });
                        M > 0 && a("#id_g", "#" + f).val(c)
                    }
                }
                var n = this;
                if (n.grid && h) {
                    if (!b.imgpath) b.imgpath =
                    n.p.imgpath;
                    var m = n.p.id,
                    F = "ViewGrid_" + m,
                    f = "ViewTbl_" + m,
                    e = {
                        themodal: "viewmod" + m,
                        modalhead: "viewhd" + m,
                        modalcontent: "viewcnt" + m,
                        scrollelm: F
                    },
                    j = 1,
                    i = 0;
                    if (a("#" + e.themodal).html() != null) {
                        a(".ui-jqdialog-title", "#" + e.modalhead).html(b.caption);
                        a("#FormError", "#" + f).hide();
                        q(h, n);
                        a.isFunction(b.beforeShowForm) && b.beforeShowForm(a("#" + F));
                        viewModal("#" + e.themodal, {
                            gbox: "#gbox_" + m,
                            jqm: b.jqModal,
                            jqM: false,
                            modal: b.modal
                        });
                        o()
                    } else {
                        a(n.p.colModel).each(function() {
                            var c = this.formoptions;
                            j = Math.max(j, c ? c.colpos ||
                            0: 0);
                            i = Math.max(i, c ? c.rowpos || 0: 0)
                        });
                        var k = isNaN(b.dataheight) ? b.dataheight: b.dataheight + "px",
                        u = a("<form name='FormPost' id='" + F + "' class='FormGrid' style='width:100%;overflow:auto;position:relative;height:" + k + ";'></form>"),
                        P = a("<table id='" + f + "' class='EditTable' cellspacing='1' cellpading='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");
                        a(u).append(P);
                        w(h, n, P, j);
                        k = n.p.direction == "rtl" ? true: false;
                        var r = "<a href='javascript:void(0)' id='" + (k ? "nData": "pData") + "' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></div>",
                        v = "<a href='javascript:void(0)' id='" + (k ? "pData": "nData") + "' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></div>",
                        B = "<a href='javascript:void(0)' id='cData' class='fm-button ui-state-default ui-corner-all'>" + b.bClose + "</a>";
                        if (i > 0) {
                            var I = [];
                            a.each(a(P)[0].rows,
                            function(c, t) {
                                I[c] = t
                            });
                            I.sort(function(c, t) {
                                if (c.rp > t.rp) return 1;
                                if (c.rp < t.rp) return - 1;
                                return 0
                            });
                            a.each(I,
                            function(c, t) {
                                a("tbody", P).append(t)
                            })
                        }
                        b.gbox = "#gbox_" + m;
                        var Z = false;
                        if (b.closeOnEscape ===
                        true) {
                            b.closeOnEscape = false;
                            Z = true
                        }
                        u = a("<span></span>").append(u).append("<table border='0' class='EditTable' id='" + f + "_2'><tbody><tr id='Act_Buttons'><td class='navButton ui-widget-content' width='" + b.labelswidth + "'>" + (k ? v + r: r + v) + "</td><td class='EditButton ui-widget-content'>" + B + "</td></tr></tbody></table>");
                        createModal(e, u, b, "#gview_" + n.p.id, a("#gview_" + n.p.id)[0]);
                        if (k) {
                            a("#pData, #nData", "#" + f + "_2").css("float", "right");
                            a(".EditButton", "#" + f + "_2").css("text-align", "left")
                        }
                        b.viewPagerButtons ||
                        a("#pData, #nData", "#" + f + "_2").hide();
                        u = null;
                        a("#" + e.themodal).keydown(function(c) {
                            if (c.which === 27) {
                                Z && hideModal(this, {
                                    gb: b.gbox,
                                    jqm: b.jqModal,
                                    onClose: b.onClose
                                });
                                return false
                            }
                            if (b.navkeys[0] === true) {
                                if (c.which === b.navkeys[1]) {
                                    a("#pData", "#" + f + "_2").trigger("click");
                                    return false
                                }
                                if (c.which === b.navkeys[2]) {
                                    a("#nData", "#" + f + "_2").trigger("click");
                                    return false
                                }
                            }
                        });
                        b.closeicon = a.extend([true, "left", "ui-icon-close"], b.closeicon);
                        if (b.closeicon[0] == true) a("#cData", "#" + f + "_2").addClass(b.closeicon[1] == "right" ?
                        "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + b.closeicon[2] + "'></span>");
                        a.isFunction(b.beforeShowForm) && b.beforeShowForm(a("#" + F));
                        viewModal("#" + e.themodal, {
                            gbox: "#gbox_" + m,
                            jqm: b.jqModal,
                            modal: b.modal
                        });
                        a(".fm-button:not(.ui-state-disabled)", "#" + f + "_2").hover(function() {
                            a(this).addClass("ui-state-hover")
                        },
                        function() {
                            a(this).removeClass("ui-state-hover")
                        });
                        o();
                        a("#cData", "#" + f + "_2").click(function() {
                            hideModal("#" + e.themodal, {
                                gb: "#gbox_" + m,
                                jqm: b.jqModal,
                                onClose: b.onClose
                            });
                            return false
                        });
                        a("#nData", "#" + f + "_2").click(function() {
                            a("#FormError", "#" + f).hide();
                            var c = s();
                            c[0] = parseInt(c[0]);
                            if (c[0] != -1 && c[1][c[0] + 1]) {
                                a.isFunction(b.onclickPgButtons) && b.onclickPgButtons("next", a("#" + F), c[1][c[0]]);
                                q(c[1][c[0] + 1], n);
                                a(n).jqGrid("setSelection", c[1][c[0] + 1]);
                                a.isFunction(b.afterclickPgButtons) && b.afterclickPgButtons("next", a("#" + F), c[1][c[0] + 1]);
                                x(c[0] + 1, c[1].length - 1)
                            }
                            o();
                            return false
                        });
                        a("#pData", "#" + f + "_2").click(function() {
                            a("#FormError", "#" + f).hide();
                            var c = s();
                            if (c[0] !=
                            -1 && c[1][c[0] - 1]) {
                                a.isFunction(b.onclickPgButtons) && b.onclickPgButtons("prev", a("#" + F), c[1][c[0]]);
                                q(c[1][c[0] - 1], n);
                                a(n).jqGrid("setSelection", c[1][c[0] - 1]);
                                a.isFunction(b.afterclickPgButtons) && b.afterclickPgButtons("prev", a("#" + F), c[1][c[0] - 1]);
                                x(c[0] - 1, c[1].length - 1)
                            }
                            o();
                            return false
                        })
                    }
                    k = s();
                    x(k[0], k[1].length - 1)
                }
            })
        },
        delGridRow: function(h, b) {
            d = b = a.extend({
                top: 0,
                left: 0,
                width: 240,
                height: "auto",
                dataheight: "auto",
                modal: false,
                drag: true,
                resize: true,
                url: "",
                mtype: "POST",
                reloadAfterSubmit: true,
                beforeShowForm: null,
                afterShowForm: null,
                beforeSubmit: null,
                onclickSubmit: null,
                afterSubmit: null,
                jqModal: true,
                closeOnEscape: false,
                delData: {},
                delicon: [],
                cancelicon: [],
                onClose: null,
                ajaxDelOptions: {},
                processing: false,
                serializeDelData: null
            },
            a.jgrid.del, b || {});
            return this.each(function() {
                var o = this;
                if (o.grid) if (h) {
                    var x = typeof b.beforeShowForm === "function" ? true: false,
                    s = typeof b.afterShowForm === "function" ? true: false,
                    w = o.p.id,
                    q = {},
                    n = "DelTbl_" + w,
                    m,
                    F,
                    f,
                    e,
                    j = {
                        themodal: "delmod" + w,
                        modalhead: "delhd" + w,
                        modalcontent: "delcnt" + w,
                        scrollelm: n
                    };
                    if (isArray(h)) h = h.join();
                    if (a("#" + j.themodal).html() != null) {
                        a("#DelData>td", "#" + n).text(h);
                        a("#DelError", "#" + n).hide();
                        if (d.processing === true) {
                            d.processing = false;
                            a("#dData", "#" + n).removeClass("ui-state-active")
                        }
                        x && b.beforeShowForm(a("#" + n));
                        viewModal("#" + j.themodal, {
                            gbox: "#gbox_" + w,
                            jqm: b.jqModal,
                            jqM: false,
                            modal: b.modal
                        })
                    } else {
                        var i = isNaN(b.dataheight) ? b.dataheight: b.dataheight + "px";
                        i = "<div id='" + n + "' class='formdata' style='width:100%;overflow:auto;position:relative;height:" + i + ";'>";
                        i += "<table class='DelTable'><tbody>";
                        i += "<tr id='DelError' style='display:none'><td class='ui-state-error'></td></tr>";
                        i += "<tr id='DelData' style='display:none'><td >" + h + "</td></tr>";
                        i += '<tr><td class="delmsg" style="white-space:pre;">' + b.msg + "</td></tr><tr><td >&#160;</td></tr>";
                        i += "</tbody></table></div>";
                        i += "<table cellspacing='0' cellpadding='0' border='0' class='EditTable' id='" + n + "_2'><tbody><tr><td class='DataTD ui-widget-content'></td></tr><tr style='display:block;height:3px;'><td></td></tr><tr><td class='DelButton EditButton'>" +
                        ("<a href='javascript:void(0)' id='dData' class='fm-button ui-state-default ui-corner-all'>" + b.bSubmit + "</a>") + "&#160;" + ("<a href='javascript:void(0)' id='eData' class='fm-button ui-state-default ui-corner-all'>" + b.bCancel + "</a>") + "</td></tr></tbody></table>";
                        b.gbox = "#gbox_" + w;
                        createModal(j, i, b, "#gview_" + o.p.id, a("#gview_" + o.p.id)[0]);
                        a(".fm-button", "#" + n + "_2").hover(function() {
                            a(this).addClass("ui-state-hover")
                        },
                        function() {
                            a(this).removeClass("ui-state-hover")
                        });
                        b.delicon = a.extend([true, "left", "ui-icon-scissors"],
                        b.delicon);
                        b.cancelicon = a.extend([true, "left", "ui-icon-cancel"], b.cancelicon);
                        if (b.delicon[0] == true) a("#dData", "#" + n + "_2").addClass(b.delicon[1] == "right" ? "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + b.delicon[2] + "'></span>");
                        if (b.cancelicon[0] == true) a("#eData", "#" + n + "_2").addClass(b.cancelicon[1] == "right" ? "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + b.cancelicon[2] + "'></span>");
                        a("#dData", "#" + n + "_2").click(function() {
                            var k = [true, ""];
                            q = {};
                            var u = a("#DelData>td", "#" + n).text();
                            if (typeof b.onclickSubmit === "function") q = b.onclickSubmit(d) || {};
                            if (typeof b.beforeSubmit === "function") k = b.beforeSubmit(u);
                            if (k[0]) {
                                var P = d.url ? d.url: a(o).jqGrid("getGridParam", "editurl");
                                if (!P) {
                                    k[0] = false;
                                    k[1] += " " + a.jgrid.errors.nourl
                                }
                            }
                            if (k[0] === false) {
                                a("#DelError>td", "#" + n).html(k[1]);
                                a("#DelError", "#" + n).show()
                            } else if (!d.processing) {
                                d.processing = true;
                                a(this).addClass("ui-state-active");
                                f = o.p.prmNames;
                                m = a.extend({},
                                d.delData, q);
                                e = f.oper;
                                m[e] = f.deloper;
                                F = f.id;
                                m[F] = u;
                                a.ajax(a.extend({
                                    url: P,
                                    type: b.mtype,
                                    data: a.isFunction(b.serializeDelData) ? b.serializeDelData(m) : m,
                                    complete: function(r, v) {
                                        if (v != "success") {
                                            k[0] = false;
                                            k[1] = a.isFunction(d.errorTextFormat) ? d.errorTextFormat(r) : v + " Status: '" + r.statusText + "'. Error code: " + r.status
                                        } else if (typeof d.afterSubmit === "function") k = d.afterSubmit(r, m);
                                        if (k[0] === false) {
                                            a("#DelError>td", "#" + n).html(k[1]);
                                            a("#DelError", "#" + n).show()
                                        } else {
                                            if (d.reloadAfterSubmit) a(o).trigger("reloadGrid");
                                            else {
                                                v = [];
                                                v = u.split(",");
                                                if (o.p.treeGrid ===
                                                true) try {
                                                    a(o).jqGrid("delTreeNode", v[0])
                                                } catch(B) {} else for (var I = 0; I < v.length; I++) a(o).jqGrid("delRowData", v[I]);
                                                o.p.selrow = null;
                                                o.p.selarrrow = []
                                            }
                                            a.isFunction(d.afterComplete) && setTimeout(function() {
                                                d.afterComplete(r, u)
                                            },
                                            500)
                                        }
                                        d.processing = false;
                                        a("#dData", "#" + n + "_2").removeClass("ui-state-active");
                                        k[0] && hideModal("#" + j.themodal, {
                                            gb: "#gbox_" + w,
                                            jqm: b.jqModal,
                                            onClose: d.onClose
                                        })
                                    },
                                    error: function(r, v, B) {
                                        a("#DelError>td", "#" + n).html(v + " : " + B);
                                        a("#DelError", "#" + n).show();
                                        d.processing = false;
                                        a("#dData",
                                        "#" + n + "_2").removeClass("ui-state-active")
                                    }
                                },
                                a.jgrid.ajaxOptions, b.ajaxDelOptions))
                            }
                            return false
                        });
                        a("#eData", "#" + n + "_2").click(function() {
                            hideModal("#" + j.themodal, {
                                gb: "#gbox_" + w,
                                jqm: b.jqModal,
                                onClose: d.onClose
                            });
                            return false
                        });
                        x && b.beforeShowForm(a("#" + n));
                        viewModal("#" + j.themodal, {
                            gbox: "#gbox_" + w,
                            jqm: b.jqModal,
                            modal: b.modal
                        })
                    }
                    s && b.afterShowForm(a("#" + n));
                    b.closeOnEscape === true && setTimeout(function() {
                        a(".ui-jqdialog-titlebar-close", "#" + j.modalhead).focus()
                    },
                    0)
                }
            })
        },
        navGrid: function(h, b, o, x, s, w, q) {
            b =
            a.extend({
                edit: true,
                editicon: "ui-icon-pencil",
                add: true,
                addicon: "ui-icon-plus",
                del: true,
                delicon: "ui-icon-trash",
                search: true,
                searchicon: "ui-icon-search",
                refresh: true,
                refreshicon: "ui-icon-refresh",
                refreshstate: "firstpage",
                view: false,
                viewicon: "ui-icon-document",
                position: "left",
                closeOnEscape: true,
                beforeRefresh: null,
                afterRefresh: null,
                cloneToTop: false
            },
            a.jgrid.nav, b || {});
            return this.each(function() {
                var n = {
                    themodal: "alertmod",
                    modalhead: "alerthd",
                    modalcontent: "alertcnt"
                },
                m = this,
                F,
                f,
                e;
                if (! (!m.grid || typeof h !=
                "string")) {
                    if (a("#" + n.themodal).html() == null) {
                        if (typeof window.innerWidth != "undefined") {
                            F = window.innerWidth;
                            f = window.innerHeight
                        } else if (typeof document.documentElement != "undefined" && typeof document.documentElement.clientWidth != "undefined" && document.documentElement.clientWidth != 0) {
                            F = document.documentElement.clientWidth;
                            f = document.documentElement.clientHeight
                        } else {
                            F = 1024;
                            f = 768
                        }
                        createModal(n, "<div>" + b.alerttext + "</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>", {
                            gbox: "#gbox_" +
                            m.p.id,
                            jqModal: true,
                            drag: true,
                            resize: true,
                            caption: b.alertcap,
                            top: f / 2 - 25,
                            left: F / 2 - 100,
                            width: 200,
                            height: "auto",
                            closeOnEscape: b.closeOnEscape
                        },
                        "", "", true)
                    }
                    F = 1;
                    if (b.cloneToTop && m.p.toppager) F = 2;
                    for (f = 0; f < F; f++) {
                        var j = a("<table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table navtable' style='float:left;table-layout:auto;'><tbody><tr></tr></tbody></table>"),
                        i,
                        k;
                        if (f == 0) {
                            i = h;
                            k = m.p.id;
                            if (i == m.p.toppager) {
                                k += "_top";
                                F = 1
                            }
                        } else {
                            i = m.p.toppager;
                            k = m.p.id + "_top"
                        }
                        m.p.direction == "rtl" && a(j).attr("dir",
                        "rtl").css("float", "right");
                        if (b.add) {
                            x = x || {};
                            e = a("<td class='ui-pg-button ui-corner-all'></td>");
                            a(e).append("<div class='ui-pg-div'><span class='ui-icon " + b.addicon + "'></span>" + b.addtext + "</div>");
                            a("tr", j).append(e);
                            a(e, j).attr({
                                title: b.addtitle || "",
                                id: x.id || "add_" + k
                            }).click(function() {
                                typeof b.addfunc == "function" ? b.addfunc() : a(m).jqGrid("editGridRow", "new", x);
                                return false
                            }).hover(function() {
                                a(this).addClass("ui-state-hover")
                            },
                            function() {
                                a(this).removeClass("ui-state-hover")
                            });
                            e = null
                        }
                        if (b.edit) {
                            e =
                            a("<td class='ui-pg-button ui-corner-all'></td>");
                            o = o || {};
                            a(e).append("<div class='ui-pg-div'><span class='ui-icon " + b.editicon + "'></span>" + b.edittext + "</div>");
                            a("tr", j).append(e);
                            a(e, j).attr({
                                title: b.edittitle || "",
                                id: o.id || "edit_" + k
                            }).click(function() {
                                var u = m.p.selrow;
                                if (u) typeof b.editfunc == "function" ? b.editfunc(u) : a(m).jqGrid("editGridRow", u, o);
                                else {
                                    viewModal("#" + n.themodal, {
                                        gbox: "#gbox_" + m.p.id,
                                        jqm: true
                                    });
                                    a("#jqg_alrt").focus()
                                }
                                return false
                            }).hover(function() {
                                a(this).addClass("ui-state-hover")
                            },
                            function() {
                                a(this).removeClass("ui-state-hover")
                            });
                            e = null
                        }
                        if (b.view) {
                            e = a("<td class='ui-pg-button ui-corner-all'></td>");
                            q = q || {};
                            a(e).append("<div class='ui-pg-div'><span class='ui-icon " + b.viewicon + "'></span>" + b.viewtext + "</div>");
                            a("tr", j).append(e);
                            a(e, j).attr({
                                title: b.viewtitle || "",
                                id: q.id || "view_" + k
                            }).click(function() {
                                var u = m.p.selrow;
                                if (u) a(m).jqGrid("viewGridRow", u, q);
                                else {
                                    viewModal("#" + n.themodal, {
                                        gbox: "#gbox_" + m.p.id,
                                        jqm: true
                                    });
                                    a("#jqg_alrt").focus()
                                }
                                return false
                            }).hover(function() {
                                a(this).addClass("ui-state-hover")
                            },
                            function() {
                                a(this).removeClass("ui-state-hover")
                            });
                            e = null
                        }
                        if (b.del) {
                            e = a("<td class='ui-pg-button ui-corner-all'></td>");
                            s = s || {};
                            a(e).append("<div class='ui-pg-div'><span class='ui-icon " + b.delicon + "'></span>" + b.deltext + "</div>");
                            a("tr", j).append(e);
                            a(e, j).attr({
                                title: b.deltitle || "",
                                id: s.id || "del_" + k
                            }).click(function() {
                                var u;
                                if (m.p.multiselect) {
                                    u = m.p.selarrrow;
                                    if (u.length == 0) u = null
                                } else u = m.p.selrow;
                                if (u) a(m).jqGrid("delGridRow", u, s);
                                else {
                                    viewModal("#" + n.themodal, {
                                        gbox: "#gbox_" + m.p.id,
                                        jqm: true
                                    });
                                    a("#jqg_alrt").focus()
                                }
                                return false
                            }).hover(function() {
                                a(this).addClass("ui-state-hover")
                            },
                            function() {
                                a(this).removeClass("ui-state-hover")
                            });
                            e = null
                        }
                        if (b.add || b.edit || b.del || b.view) a("tr", j).append("<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>");
                        if (b.search) {
                            e = a("<td class='ui-pg-button ui-corner-all'></td>");
                            w = w || {};
                            a(e).append("<div class='ui-pg-div'><span class='ui-icon " + b.searchicon + "'></span>" + b.searchtext + "</div>");
                            a("tr", j).append(e);
                            a(e, j).attr({
                                title: b.searchtitle || "",
                                id: w.id || "search_" + k
                            }).click(function() {
                                a(m).jqGrid("searchGrid",
                                w);
                                return false
                            }).hover(function() {
                                a(this).addClass("ui-state-hover")
                            },
                            function() {
                                a(this).removeClass("ui-state-hover")
                            });
                            e = null
                        }
                        if (b.refresh) {
                            e = a("<td class='ui-pg-button ui-corner-all'></td>");
                            a(e).append("<div class='ui-pg-div'><span class='ui-icon " + b.refreshicon + "'></span>" + b.refreshtext + "</div>");
                            a("tr", j).append(e);
                            a(e, j).attr({
                                title: b.refreshtitle || "",
                                id: "refresh_" + k
                            }).click(function() {
                                a.isFunction(b.beforeRefresh) && b.beforeRefresh();
                                m.p.search = false;
                                try {
                                    a("#fbox_" + m.p.id).searchFilter().reset();
                                    m.clearToolbar(false)
                                } catch(u) {}
                                switch (b.refreshstate) {
                                case "firstpage":
                                    a(m).trigger("reloadGrid", [{
                                        page: 1
                                    }]);
                                    break;
                                case "current":
                                    a(m).trigger("reloadGrid", [{
                                        current: true
                                    }]);
                                    break
                                }
                                a.isFunction(b.afterRefresh) && b.afterRefresh();
                                return false
                            }).hover(function() {
                                a(this).addClass("ui-state-hover")
                            },
                            function() {
                                a(this).removeClass("ui-state-hover")
                            });
                            e = null
                        }
                        e = a(".ui-jqgrid").css("font-size") || "11px";
                        a("body").append("<div id='testpg2' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:" + e + ";visibility:hidden;' ></div>");
                        e = a(j).clone().appendTo("#testpg2").width();
                        a("#testpg2").remove();
                        a(i + "_" + b.position, i).append(j);
                        if (m.p._nvtd) {
                            if (e > m.p._nvtd[0]) {
                                a(i + "_" + b.position, i).width(e);
                                m.p._nvtd[0] = e
                            }
                            m.p._nvtd[1] = e
                        }
                        j = e = e = null
                    }
                }
            })
        },
        navButtonAdd: function(h, b) {
            b = a.extend({
                caption: "newButton",
                title: "",
                buttonicon: "ui-icon-newwin",
                onClickButton: null,
                position: "last",
                cursor: "pointer"
            },
            b || {});
            return this.each(function() {
                if (this.grid) {
                    if (h.indexOf("#") != 0) h = "#" + h;
                    var o = a(".navtable", h)[0],
                    x = this;
                    if (o) {
                        var s = a("<td></td>");
                        a(s).addClass("ui-pg-button ui-corner-all").append("<div class='ui-pg-div'><span class='ui-icon " +
                        b.buttonicon + "'></span>" + b.caption + "</div>");
                        b.id && a(s).attr("id", b.id);
                        if (b.position == "first") o.rows[0].cells.length === 0 ? a("tr", o).append(s) : a("tr td:eq(0)", o).before(s);
                        else a("tr", o).append(s);
                        a(s, o).attr("title", b.title || "").click(function(w) {
                            a.isFunction(b.onClickButton) && b.onClickButton.call(x, w);
                            return false
                        }).hover(function() {
                            a(this).addClass("ui-state-hover")
                        },
                        function() {
                            a(this).removeClass("ui-state-hover")
                        }).css("cursor", b.cursor ? b.cursor: "normal")
                    }
                }
            })
        },
        navSeparatorAdd: function(h, b) {
            b =
            a.extend({
                sepclass: "ui-separator",
                sepcontent: ""
            },
            b || {});
            return this.each(function() {
                if (this.grid) {
                    if (h.indexOf("#") != 0) h = "#" + h;
                    var o = a(".navtable", h)[0];
                    if (o) {
                        var x = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='" + b.sepclass + "'></span>" + b.sepcontent + "</td>";
                        a("tr", o).append(x)
                    }
                }
            })
        },
        GridToForm: function(h, b) {
            return this.each(function() {
                var o = this;
                if (o.grid) {
                    var x = a(o).jqGrid("getRowData", h);
                    if (x) for (var s in x) a("[name=" + s + "]", b).is("input:radio") || a("[name=" + s + "]", b).is("input:checkbox") ?
                    a("[name=" + s + "]", b).each(function() {
                        a(this).val() == x[s] ? a(this).attr("checked", "checked") : a(this).attr("checked", "")
                    }) : a("[name=" + s + "]", b).val(x[s])
                }
            })
        },
        FormToGrid: function(h, b, o, x) {
            return this.each(function() {
                var s = this;
                if (s.grid) {
                    o || (o = "set");
                    x || (x = "first");
                    var w = a(b).serializeArray(),
                    q = {};
                    a.each(w,
                    function(n, m) {
                        q[m.name] = m.value
                    });
                    if (o == "add") a(s).jqGrid("addRowData", h, q, x);
                    else o == "set" && a(s).jqGrid("setRowData", h, q)
                }
            })
        }
    })
})(jQuery);
jQuery.fn.searchFilter = function(h, B) {
    function C(c, i, k) {
        this.$ = c;
        this.add = function(a) {
            a == null ? c.find(".ui-add-last").click() : c.find(".sf:eq(" + a + ") .ui-add").click();
            return this
        };
        this.del = function(a) {
            a == null ? c.find(".sf:last .ui-del").click() : c.find(".sf:eq(" + a + ") .ui-del").click();
            return this
        };
        this.search = function() {
            c.find(".ui-search").click();
            return this
        };
        this.reset = function() {
            c.find(".ui-reset").click();
            return this
        };
        this.close = function() {
            c.find(".ui-closer").click();
            return this
        };
        if (i != null) {
            function w() {
                jQuery(this).toggleClass("ui-state-hover");
                return false
            }
            function x(a) {
                jQuery(this).toggleClass("ui-state-active", a.type == "mousedown");
                return false
            }
            function l(a, b) {
                return "<option value='" + a + "'>" + b + "</option>"
            }
            function t(a, b, e) {
                return "<select class='" + a + "'" + (e ? " style='display:none;'": "") + ">" + b + "</select>"
            }
            function y(a, b) {
                a = c.find("tr.sf td.data " + a);
                a[0] != null && b(a)
            }
            function z(a, b) {
                var e = c.find("tr.sf td.data " + a);
                e[0] != null && jQuery.each(b,
                function() {
                    this.data != null ? e.bind(this.type, this.data, this.fn) : e.bind(this.type, this.fn)
                })
            }
            var d = jQuery.extend({},
            jQuery.fn.searchFilter.defaults, k),
            m = -1,
            q = "";
            jQuery.each(d.groupOps,
            function() {
                q += l(this.op, this.text)
            });
            q = "<select name='groupOp'>" + q + "</select>";
            c.html("").addClass("ui-searchFilter").append("<div class='ui-widget-overlay' style='z-index: -1'>&#160;</div><table class='ui-widget-content ui-corner-all'><thead><tr><td colspan='5' class='ui-widget-header ui-corner-all' style='line-height: 18px;'><div class='ui-closer ui-state-default ui-corner-all ui-helper-clearfix' style='float: right;'><span class='ui-icon ui-icon-close'></span></div>" +
            d.windowTitle + "</td></tr></thead><tbody><tr class='sf'><td class='fields'></td><td class='ops'></td><td class='data'></td><td><div class='ui-del ui-state-default ui-corner-all'><span class='ui-icon ui-icon-minus'></span></div></td><td><div class='ui-add ui-state-default ui-corner-all'><span class='ui-icon ui-icon-plus'></span></div></td></tr><tr><td colspan='5' class='divider'><div>&#160;</div></td></tr></tbody><tfoot><tr><td colspan='3'><span class='ui-reset ui-state-default ui-corner-all' style='display: inline-block; float: left;'><span class='ui-icon ui-icon-arrowreturnthick-1-w' style='float: left;'></span><span style='line-height: 18px; padding: 0 7px 0 3px;'>" +
            d.resetText + "</span></span><span class='ui-search ui-state-default ui-corner-all' style='display: inline-block; float: right;'><span class='ui-icon ui-icon-search' style='float: left;'></span><span style='line-height: 18px; padding: 0 7px 0 3px;'>" + d.searchText + "</span></span><span class='matchText'>" + d.matchText + "</span> " + q + " <span class='rulesText'>" + d.rulesText + "</span></td><td>&#160;</td><td><div class='ui-add-last ui-state-default ui-corner-all'><span class='ui-icon ui-icon-plusthick'></span></div></td></tr></tfoot></table>");
            k = c.find("tr.sf");
            var A = k.find("td.fields"),
            u = k.find("td.ops"),
            n = k.find("td.data"),
            r = "";
            jQuery.each(d.operators,
            function() {
                r += l(this.op, this.text)
            });
            r = t("default", r, true);
            u.append(r);
            n.append("<input type='text' class='default' style='display:none;' />");
            var s = "",
            v = false,
            o = false;
            jQuery.each(i,
            function(a) {
                s += l(this.itemval, this.text);
                if (this.ops != null) {
                    v = true;
                    var b = "";
                    jQuery.each(this.ops,
                    function() {
                        b += l(this.op, this.text)
                    });
                    b = t("field" + a, b, true);
                    u.append(b)
                }
                if (this.dataUrl != null) {
                    if (a > m) m = a;
                    o = true;
                    var e = this.dataEvents,
                    j = this.dataInit,
                    p = this.buildSelect;
                    jQuery.ajax(jQuery.extend({
                        url: this.dataUrl,
                        complete: function(f) {
                            f = p != null ? jQuery("<div />").append(p(f)) : jQuery("<div />").append(f.responseText);
                            f.find("select").addClass("field" + a).hide();
                            n.append(f.html());
                            j && y(".field" + a, j);
                            e && z(".field" + a, e);
                            a == m && c.find("tr.sf td.fields select[name='field']").change()
                        }
                    },
                    d.ajaxSelectOptions))
                } else if (this.dataValues != null) {
                    o = true;
                    var g = "";
                    jQuery.each(this.dataValues,
                    function() {
                        g += l(this.value, this.text)
                    });
                    g = t("field" + a, g, true);
                    n.append(g)
                } else if (this.dataEvents != null || this.dataInit != null) {
                    o = true;
                    g = "<input type='text' class='field" + a + "' />";
                    n.append(g)
                }
                this.dataInit != null && a != m && y(".field" + a, this.dataInit);
                this.dataEvents != null && a != m && z(".field" + a, this.dataEvents)
            });
            s = "<select name='field'>" + s + "</select>";
            A.append(s);
            i = A.find("select[name='field']");
            v ? i.change(function(a) {
                var b = a.target.selectedIndex;
                a = jQuery(a.target).parents("tr.sf").find("td.ops");
                a.find("select").removeAttr("name").hide();
                b = a.find(".field" +
                b);
                if (b[0] == null) b = a.find(".default");
                b.attr("name", "op").show()
            }) : u.find(".default").attr("name", "op").show();
            o ? i.change(function(a) {
                var b = a.target.selectedIndex;
                a = jQuery(a.target).parents("tr.sf").find("td.data");
                a.find("select,input").removeClass("vdata").hide();
                b = a.find(".field" + b);
                if (b[0] == null) b = a.find(".default");
                b.show().addClass("vdata")
            }) : n.find(".default").show().addClass("vdata");
            if (v || o) i.change();
            c.find(".ui-state-default").hover(w, w).mousedown(x).mouseup(x);
            c.find(".ui-closer").click(function() {
                d.onClose(jQuery(c.selector));
                return false
            });
            c.find(".ui-del").click(function(a) {
                a = jQuery(a.target).parents(".sf");
                if (a.siblings(".sf").length > 0) {
                    d.datepickerFix === true && jQuery.fn.datepicker !== undefined && a.find(".hasDatepicker").datepicker("destroy");
                    a.remove()
                } else {
                    a.find("select[name='field']")[0].selectedIndex = 0;
                    a.find("select[name='op']")[0].selectedIndex = 0;
                    a.find(".data input").val("");
                    a.find(".data select").each(function() {
                        this.selectedIndex = 0
                    });
                    a.find("select[name='field']").change()
                }
                return false
            });
            c.find(".ui-add").click(function(a) {
                a =
                jQuery(a.target).parents(".sf");
                var b = a.clone(true).insertAfter(a);
                b.find(".ui-state-default").removeClass("ui-state-hover ui-state-active");
                if (d.clone) {
                    b.find("select[name='field']")[0].selectedIndex = a.find("select[name='field']")[0].selectedIndex;
                    if (b.find("select[name='op']")[0] != null) b.find("select[name='op']").focus()[0].selectedIndex = a.find("select[name='op']")[0].selectedIndex;
                    var e = b.find("select.vdata");
                    if (e[0] != null) e[0].selectedIndex = a.find("select.vdata")[0].selectedIndex
                } else {
                    b.find(".data input").val("");
                    b.find("select[name='field']").focus()
                }
                d.datepickerFix === true && jQuery.fn.datepicker !== undefined && a.find(".hasDatepicker").each(function() {
                    var j = jQuery.data(this, "datepicker").settings;
                    b.find("#" + this.id).unbind().removeAttr("id").removeClass("hasDatepicker").datepicker(j)
                });
                b.find("select[name='field']").change();
                return false
            });
            c.find(".ui-search").click(function() {
                var a = jQuery(c.selector),
                b,
                e = a.find("select[name='groupOp'] :selected").val();
                b = d.stringResult ? '{"groupOp":"' + e + '","rules":[': {
                    groupOp: e,
                    rules: []
                };
                a.find(".sf").each(function(j) {
                    var p = encodeURIComponent(jQuery(this).find("select[name='field'] :selected").val()),
                    g = encodeURIComponent(jQuery(this).find("select[name='op'] :selected").val()),
                    f = encodeURIComponent(jQuery(this).find("input.vdata,select.vdata :selected").val());
                    f += "";
                    f = f.replace(/\\/g, "\\\\").replace(/\"/g, '\\"');
                    if (d.stringResult) {
                        if (j > 0) b += ",";
                        b += '{"field":"' + p + '",';
                        b += '"op":"' + g + '",';
                        b += '"data":"' + f + '"}'
                    } else b.rules.push({
                        field: p,
                        op: g,
                        data: f
                    })
                });
                if (d.stringResult) b += "]}";
                d.onSearch(b);
                return false
            });
            c.find(".ui-reset").click(function() {
                var a =
                jQuery(c.selector);
                a.find(".ui-del").click();
                a.find("select[name='groupOp']")[0].selectedIndex = 0;
                d.onReset();
                return false
            });
            c.find(".ui-add-last").click(function() {
                var a = jQuery(c.selector + " .sf:last"),
                b = a.clone(true).insertAfter(a);
                b.find(".ui-state-default").removeClass("ui-state-hover ui-state-active");
                b.find(".data input").val("");
                b.find("select[name='field']").focus();
                d.datepickerFix === true && jQuery.fn.datepicker !== undefined && a.find(".hasDatepicker").each(function() {
                    var e = jQuery.data(this, "datepicker").settings;
                    b.find("#" + this.id).unbind().removeAttr("id").removeClass("hasDatepicker").datepicker(e)
                });
                b.find("select[name='field']").change();
                return false
            })
        }
    }
    return new C(this, h, B)
};
jQuery.fn.searchFilter.version = "1.2.9";
jQuery.fn.searchFilter.defaults = {
    clone: true,
    datepickerFix: true,
    onReset: function(h) {
        alert("Reset Clicked. Data Returned: " + h)
    },
    onSearch: function(h) {
        alert("Search Clicked. Data Returned: " + h)
    },
    onClose: function(h) {
        h.hide()
    },
    groupOps: [{
        op: "AND",
        text: "all"
    },
    {
        op: "OR",
        text: "any"
    }],
    operators: [{
        op: "eq",
        text: "is equal to"
    },
    {
        op: "ne",
        text: "is not equal to"
    },
    {
        op: "lt",
        text: "is less than"
    },
    {
        op: "le",
        text: "is less or equal to"
    },
    {
        op: "gt",
        text: "is greater than"
    },
    {
        op: "ge",
        text: "is greater or equal to"
    },
    {
        op: "in",
        text: "is in"
    },
    {
        op: "ni",
        text: "is not in"
    },
    {
        op: "bw",
        text: "begins with"
    },
    {
        op: "bn",
        text: "does not begin with"
    },
    {
        op: "ew",
        text: "ends with"
    },
    {
        op: "en",
        text: "does not end with"
    },
    {
        op: "cn",
        text: "contains"
    },
    {
        op: "nc",
        text: "does not contain"
    }],
    matchText: "match",
    rulesText: "rules",
    resetText: "Reset",
    searchText: "Search",
    stringResult: true,
    windowTitle: "Search Rules",
    ajaxSelectOptions: {}
};
 (function(a) {
    a.jgrid.extend({
        editRow: function(d, t, i, q, n, u, s, c, f) {
            return this.each(function() {
                var b = this,
                k,
                l,
                r = 0,
                o = null,
                p = {},
                h,
                g;
                if (b.grid) {
                    h = a(b).jqGrid("getInd", d, true);
                    if (h != false) if ((a(h).attr("editable") || "0") == "0" && !a(h).hasClass("not-editable-row")) {
                        g = b.p.colModel;
                        a("td", h).each(function(j) {
                            k = g[j].name;
                            var v = b.p.treeGrid === true && k == b.p.ExpandColumn;
                            if (v) l = a("span:first", this).html();
                            else try {
                                l = a.unformat(this, {
                                    rowId: d,
                                    colModel: g[j]
                                },
                                j)
                            } catch(m) {
                                l = a(this).html()
                            }
                            if (k != "cb" && k != "subgrid" && k !=
                            "rn") {
                                if (b.p.autoencode) l = a.jgrid.htmlDecode(l);
                                p[k] = l;
                                if (g[j].editable === true) {
                                    if (o === null) o = j;
                                    v ? a("span:first", this).html("") : a(this).html("");
                                    var e = a.extend({},
                                    g[j].editoptions || {},
                                    {
                                        id: d + "_" + k,
                                        name: k
                                    });
                                    if (!g[j].edittype) g[j].edittype = "text";
                                    e = createEl(g[j].edittype, e, l, true, a.extend({},
                                    a.jgrid.ajaxOptions, b.p.ajaxSelectOptions || {}));
                                    a(e).addClass("editable");
                                    v ? a("span:first", this).append(e) : a(this).append(e);
                                    g[j].edittype == "select" && g[j].editoptions.multiple === true && a.browser.msie && a(e).width(a(e).width());
                                    r++
                                }
                            }
                        });
                        if (r > 0) {
                            p.id = d;
                            b.p.savedRow.push(p);
                            a(h).attr("editable", "1");
                            a("td:eq(" + o + ") input", h).focus();
                            t === true && a(h).bind("keydown",
                            function(j) {
                                j.keyCode === 27 && a(b).jqGrid("restoreRow", d, f);
                                if (j.keyCode === 13) {
                                    if (j.target.tagName == "TEXTAREA") return true;
                                    a(b).jqGrid("saveRow", d, q, n, u, s, c, f);
                                    return false
                                }
                                j.stopPropagation()
                            });
                            a.isFunction(i) && i(d)
                        }
                    }
                }
            })
        },
        saveRow: function(d, t, i, q, n, u, s) {
            return this.each(function() {
                var c = this,
                f,
                b = {},
                k = {},
                l,
                r,
                o,
                p;
                if (c.grid) {
                    p = a(c).jqGrid("getInd", d, true);
                    if (p != false) {
                        l =
                        a(p).attr("editable");
                        i = i ? i: c.p.editurl;
                        if (l === "1" && i) {
                            var h;
                            a("td", p).each(function(m) {
                                h = c.p.colModel[m];
                                f = h.name;
                                if (f != "cb" && f != "subgrid" && h.editable === true && f != "rn") {
                                    switch (h.edittype) {
                                    case "checkbox":
                                        var e = ["Yes", "No"];
                                        if (h.editoptions) e = h.editoptions.value.split(":");
                                        b[f] = a("input", this).attr("checked") ? e[0] : e[1];
                                        break;
                                    case "text":
                                    case "password":
                                    case "textarea":
                                    case "button":
                                        b[f] = a("input, textarea", this).val();
                                        break;
                                    case "select":
                                        if (h.editoptions.multiple) {
                                            e = a("select", this);
                                            var x = [];
                                            b[f] =
                                            a(e).val();
                                            b[f] = b[f] ? b[f].join(",") : "";
                                            a("select > option:selected", this).each(function(y, z) {
                                                x[y] = a(z).text()
                                            });
                                            k[f] = x.join(",")
                                        } else {
                                            b[f] = a("select>option:selected", this).val();
                                            k[f] = a("select>option:selected", this).text()
                                        }
                                        if (h.formatter && h.formatter == "select") k = {};
                                        break;
                                    case "custom":
                                        try {
                                            if (h.editoptions && a.isFunction(h.editoptions.custom_value)) {
                                                b[f] = h.editoptions.custom_value(a(".customelement", this), "get");
                                                if (b[f] === undefined) throw "e2";
                                            } else throw "e1";
                                        } catch(w) {
                                            w == "e1" && info_dialog(jQuery.jgrid.errors.errcap,
                                            "function 'custom_value' " + a.jgrid.edit.msg.nodefined, jQuery.jgrid.edit.bClose);
                                            w == "e2" ? info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_value' " + a.jgrid.edit.msg.novalue, jQuery.jgrid.edit.bClose) : info_dialog(jQuery.jgrid.errors.errcap, w.message, jQuery.jgrid.edit.bClose)
                                        }
                                        break
                                    }
                                    o = checkValues(b[f], m, c);
                                    if (o[0] === false) {
                                        o[1] = b[f] + " " + o[1];
                                        return false
                                    }
                                    if (c.p.autoencode) b[f] = a.jgrid.htmlEncode(b[f])
                                }
                            });
                            if (o[0] === false) try {
                                var g = findPos(a("#" + d)[0]);
                                info_dialog(a.jgrid.errors.errcap, o[1], a.jgrid.edit.bClose,
                                {
                                    left: g[0],
                                    top: g[1]
                                })
                            } catch(j) {
                                alert(o[1])
                            } else {
                                if (b) {
                                    var v;
                                    g = c.p.prmNames;
                                    v = g.oper;
                                    l = g.id;
                                    b[v] = g.editoper;
                                    b[l] = d;
                                    if (q) b = a.extend({},
                                    b, q)
                                }
                                if (i == "clientArray") {
                                    b = a.extend({},
                                    b, k);
                                    c.p.autoencode && a.each(b,
                                    function(m, e) {
                                        b[m] = a.jgrid.htmlDecode(e)
                                    });
                                    l = a(c).jqGrid("setRowData", d, b);
                                    a(p).attr("editable", "0");
                                    for (g = 0; g < c.p.savedRow.length; g++) if (c.p.savedRow[g].id == d) {
                                        r = g;
                                        break
                                    }
                                    r >= 0 && c.p.savedRow.splice(r, 1);
                                    a.isFunction(n) && n(d, l)
                                } else {
                                    a("#lui_" + c.p.id).show();
                                    a.ajax(a.extend({
                                        url: i,
                                        data: a.isFunction(c.p.serializeRowData) ?
                                        c.p.serializeRowData(b) : b,
                                        type: "POST",
                                        complete: function(m, e) {
                                            a("#lui_" + c.p.id).hide();
                                            if (e === "success") if ((a.isFunction(t) ? t(m) : true) === true) {
                                                c.p.autoencode && a.each(b,
                                                function(x, w) {
                                                    b[x] = a.jgrid.htmlDecode(w)
                                                });
                                                b = a.extend({},
                                                b, k);
                                                a(c).jqGrid("setRowData", d, b);
                                                a(p).attr("editable", "0");
                                                for (e = 0; e < c.p.savedRow.length; e++) if (c.p.savedRow[e].id == d) {
                                                    r = e;
                                                    break
                                                }
                                                r >= 0 && c.p.savedRow.splice(r, 1);
                                                a.isFunction(n) && n(d, m)
                                            } else a(c).jqGrid("restoreRow", d, s)
                                        },
                                        error: function(m, e) {
                                            a("#lui_" + c.p.id).hide();
                                            a.isFunction(u) ?
                                            u(d, m, e) : alert("Error Row: " + d + " Result: " + m.status + ":" + m.statusText + " Status: " + e)
                                        }
                                    },
                                    a.jgrid.ajaxOptions, c.p.ajaxRowOptions || {}))
                                }
                                a(p).unbind("keydown")
                            }
                        }
                    }
                }
            })
        },
        restoreRow: function(d, t) {
            return this.each(function() {
                var i = this,
                q,
                n,
                u = {};
                if (i.grid) {
                    n = a(i).jqGrid("getInd", d, true);
                    if (n != false) {
                        for (var s = 0; s < i.p.savedRow.length; s++) if (i.p.savedRow[s].id == d) {
                            q = s;
                            break
                        }
                        if (q >= 0) {
                            if (a.isFunction(a.fn.datepicker)) try {
                                a("input.hasDatepicker", "#" + n.id).datepicker("hide")
                            } catch(c) {}
                            a.each(i.p.colModel,
                            function() {
                                if (this.editable ==
                                true && this.name in i.p.savedRow[q]) u[this.name] = i.p.savedRow[q][this.name]
                            });
                            a(i).jqGrid("setRowData", d, u);
                            a(n).attr("editable", "0").unbind("keydown");
                            i.p.savedRow.splice(q, 1)
                        }
                        a.isFunction(t) && t(d)
                    }
                }
            })
        }
    })
})(jQuery);
 (function(b) {
    b.jgrid.extend({
        editCell: function(d, e, a) {
            return this.each(function() {
                var c = this,
                h,
                f,
                g;
                if (! (!c.grid || c.p.cellEdit !== true)) {
                    e = parseInt(e, 10);
                    c.p.selrow = c.rows[d].id;
                    c.p.knv || b(c).jqGrid("GridNav");
                    if (c.p.savedRow.length > 0) {
                        if (a === true) if (d == c.p.iRow && e == c.p.iCol) return;
                        b(c).jqGrid("saveCell", c.p.savedRow[0].id, c.p.savedRow[0].ic)
                    } else window.setTimeout(function() {
                        b("#" + c.p.knv).attr("tabindex", "-1").focus()
                    },
                    0);
                    h = c.p.colModel[e].name;
                    if (! (h == "subgrid" || h == "cb" || h == "rn")) {
                        g = b("td:eq(" + e +
                        ")", c.rows[d]);
                        if (c.p.colModel[e].editable === true && a === true && !g.hasClass("not-editable-cell")) {
                            if (parseInt(c.p.iCol) >= 0 && parseInt(c.p.iRow) >= 0) {
                                b("td:eq(" + c.p.iCol + ")", c.rows[c.p.iRow]).removeClass("edit-cell ui-state-highlight");
                                b(c.rows[c.p.iRow]).removeClass("selected-row ui-state-hover")
                            }
                            b(g).addClass("edit-cell ui-state-highlight");
                            b(c.rows[d]).addClass("selected-row ui-state-hover");
                            try {
                                f = b.unformat(g, {
                                    rowId: c.rows[d].id,
                                    colModel: c.p.colModel[e]
                                },
                                e)
                            } catch(k) {
                                f = b(g).html()
                            }
                            if (c.p.autoencode) f =
                            b.jgrid.htmlDecode(f);
                            if (!c.p.colModel[e].edittype) c.p.colModel[e].edittype = "text";
                            c.p.savedRow.push({
                                id: d,
                                ic: e,
                                name: h,
                                v: f
                            });
                            if (b.isFunction(c.p.formatCell)) {
                                var j = c.p.formatCell(c.rows[d].id, h, f, d, e);
                                if (j != undefined) f = j
                            }
                            j = b.extend({},
                            c.p.colModel[e].editoptions || {},
                            {
                                id: d + "_" + h,
                                name: h
                            });
                            var i = createEl(c.p.colModel[e].edittype, j, f, true, b.extend({},
                            b.jgrid.ajaxOptions, c.p.ajaxSelectOptions || {}));
                            b.isFunction(c.p.beforeEditCell) && c.p.beforeEditCell(c.rows[d].id, h, f, d, e);
                            b(g).html("").append(i).attr("tabindex",
                            "0");
                            window.setTimeout(function() {
                                b(i).focus()
                            },
                            0);
                            b("input, select, textarea", g).bind("keydown",
                            function(l) {
                                if (l.keyCode === 27) if (b("input.hasDatepicker", g).length > 0) b(".ui-datepicker").is(":hidden") ? b(c).jqGrid("restoreCell", d, e) : b("input.hasDatepicker", g).datepicker("hide");
                                else b(c).jqGrid("restoreCell", d, e);
                                l.keyCode === 13 && b(c).jqGrid("saveCell", d, e);
                                if (l.keyCode == 9) if (c.grid.hDiv.loading) return false;
                                else l.shiftKey ? b(c).jqGrid("prevCell", d, e) : b(c).jqGrid("nextCell", d, e);
                                l.stopPropagation()
                            });
                            b.isFunction(c.p.afterEditCell) && c.p.afterEditCell(c.rows[d].id, h, f, d, e)
                        } else {
                            if (parseInt(c.p.iCol) >= 0 && parseInt(c.p.iRow) >= 0) {
                                b("td:eq(" + c.p.iCol + ")", c.rows[c.p.iRow]).removeClass("edit-cell ui-state-highlight");
                                b(c.rows[c.p.iRow]).removeClass("selected-row ui-state-hover")
                            }
                            g.addClass("edit-cell ui-state-highlight");
                            b(c.rows[d]).addClass("selected-row ui-state-hover");
                            if (b.isFunction(c.p.onSelectCell)) {
                                f = g.html().replace(/\&#160\;/ig, "");
                                c.p.onSelectCell(c.rows[d].id, h, f, d, e)
                            }
                        }
                        c.p.iCol = e;
                        c.p.iRow =
                        d
                    }
                }
            })
        },
        saveCell: function(d, e) {
            return this.each(function() {
                var a = this,
                c;
                if (! (!a.grid || a.p.cellEdit !== true)) {
                    c = a.p.savedRow.length >= 1 ? 0: null;
                    if (c != null) {
                        var h = b("td:eq(" + e + ")", a.rows[d]),
                        f,
                        g,
                        k = a.p.colModel[e],
                        j = k.name,
                        i = b.jgrid.jqID(j);
                        switch (k.edittype) {
                        case "select":
                            if (k.editoptions.multiple) {
                                i = b("#" + d + "_" + i, a.rows[d]);
                                var l = [];
                                if (f = b(i).val()) f.join(",");
                                else f = "";
                                b("option:selected", i).each(function(m, p) {
                                    l[m] = b(p).text()
                                });
                                g = l.join(",")
                            } else {
                                f = b("#" + d + "_" + i + ">option:selected", a.rows[d]).val();
                                g =
                                b("#" + d + "_" + i + ">option:selected", a.rows[d]).text()
                            }
                            if (k.formatter) g = f;
                            break;
                        case "checkbox":
                            var n = ["Yes", "No"];
                            if (k.editoptions) n = k.editoptions.value.split(":");
                            g = f = b("#" + d + "_" + i, a.rows[d]).attr("checked") ? n[0] : n[1];
                            break;
                        case "password":
                        case "text":
                        case "textarea":
                        case "button":
                            g = f = b("#" + d + "_" + i, a.rows[d]).val();
                            break;
                        case "custom":
                            try {
                                if (k.editoptions && b.isFunction(k.editoptions.custom_value)) {
                                    f = k.editoptions.custom_value(b(".customelement", h), "get");
                                    if (f === undefined) throw "e2";
                                    else g = f
                                } else throw "e1";

                            } catch(q) {
                                q == "e1" && info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_value' " + b.jgrid.edit.msg.nodefined, jQuery.jgrid.edit.bClose);
                                q == "e2" ? info_dialog(jQuery.jgrid.errors.errcap, "function 'custom_value' " + b.jgrid.edit.msg.novalue, jQuery.jgrid.edit.bClose) : info_dialog(jQuery.jgrid.errors.errcap, q.message, jQuery.jgrid.edit.bClose)
                            }
                            break
                        }
                        if (g != a.p.savedRow[c].v) {
                            if (b.isFunction(a.p.beforeSaveCell)) if (c = a.p.beforeSaveCell(a.rows[d].id, j, f, d, e)) f = c;
                            var r = checkValues(f, e, a);
                            if (r[0] === true) {
                                c = {};
                                if (b.isFunction(a.p.beforeSubmitCell))(c = a.p.beforeSubmitCell(a.rows[d].id, j, f, d, e)) || (c = {});
                                if (g == "") g = " ";
                                b("input.hasDatepicker", h).length > 0 && b("input.hasDatepicker", h).datepicker("hide");
                                if (a.p.cellsubmit == "remote") if (a.p.cellurl) {
                                    var o = {};
                                    if (a.p.autoencode) f = b.jgrid.htmlEncode(f);
                                    o[j] = f;
                                    n = a.p.prmNames;
                                    k = n.id;
                                    i = n.oper;
                                    o[k] = a.rows[d].id;
                                    o[i] = n.editoper;
                                    o = b.extend(c, o);
                                    b("#lui_" + a.p.id).show();
                                    a.grid.hDiv.loading = true;
                                    b.ajax(b.extend({
                                        url: a.p.cellurl,
                                        data: b.isFunction(a.p.serializeCellData) ? a.p.serializeCellData(o) :
                                        o,
                                        type: "POST",
                                        complete: function(m, p) {
                                            b("#lui_" + a.p.id).hide();
                                            a.grid.hDiv.loading = false;
                                            if (p == "success") if (b.isFunction(a.p.afterSubmitCell)) {
                                                m = a.p.afterSubmitCell(m, o.id, j, f, d, e);
                                                if (m[0] === true) {
                                                    b(h).empty();
                                                    b(a).jqGrid("setCell", a.rows[d].id, e, g);
                                                    b(h).addClass("dirty-cell");
                                                    b(a.rows[d]).addClass("edited");
                                                    b.isFunction(a.p.afterSaveCell) && a.p.afterSaveCell(a.rows[d].id, j, f, d, e);
                                                    a.p.savedRow.splice(0, 1)
                                                } else {
                                                    info_dialog(b.jgrid.errors.errcap, m[1], b.jgrid.edit.bClose);
                                                    b(a).jqGrid("restoreCell", d, e)
                                                }
                                            } else {
                                                b(h).empty();
                                                b(a).jqGrid("setCell", a.rows[d].id, e, g);
                                                b(h).addClass("dirty-cell");
                                                b(a.rows[d]).addClass("edited");
                                                b.isFunction(a.p.afterSaveCell) && a.p.afterSaveCell(a.rows[d].id, j, f, d, e);
                                                a.p.savedRow.splice(0, 1)
                                            }
                                        },
                                        error: function(m, p) {
                                            b("#lui_" + a.p.id).hide();
                                            a.grid.hDiv.loading = false;
                                            b.isFunction(a.p.errorCell) ? a.p.errorCell(m, p) : info_dialog(b.jgrid.errors.errcap, m.status + " : " + m.statusText + "<br/>" + p, b.jgrid.edit.bClose);
                                            b(a).jqGrid("restoreCell", d, e)
                                        }
                                    },
                                    b.jgrid.ajaxOptions, a.p.ajaxCellOptions || {}))
                                } else try {
                                    info_dialog(b.jgrid.errors.errcap,
                                    b.jgrid.errors.nourl, b.jgrid.edit.bClose);
                                    b(a).jqGrid("restoreCell", d, e)
                                } catch(s) {}
                                if (a.p.cellsubmit == "clientArray") {
                                    b(h).empty();
                                    b(a).jqGrid("setCell", a.rows[d].id, e, g);
                                    b(h).addClass("dirty-cell");
                                    b(a.rows[d]).addClass("edited");
                                    b.isFunction(a.p.afterSaveCell) && a.p.afterSaveCell(a.rows[d].id, j, f, d, e);
                                    a.p.savedRow.splice(0, 1)
                                }
                            } else try {
                                window.setTimeout(function() {
                                    info_dialog(b.jgrid.errors.errcap, f + " " + r[1], b.jgrid.edit.bClose)
                                },
                                100);
                                b(a).jqGrid("restoreCell", d, e)
                            } catch(t) {}
                        } else b(a).jqGrid("restoreCell",
                        d, e)
                    }
                    b.browser.opera ? b("#" + a.p.knv).attr("tabindex", "-1").focus() : window.setTimeout(function() {
                        b("#" + a.p.knv).attr("tabindex", "-1").focus()
                    },
                    0)
                }
            })
        },
        restoreCell: function(d, e) {
            return this.each(function() {
                var a = this,
                c;
                if (! (!a.grid || a.p.cellEdit !== true)) {
                    c = a.p.savedRow.length >= 1 ? 0: null;
                    if (c != null) {
                        var h = b("td:eq(" + e + ")", a.rows[d]);
                        if (b.isFunction(b.fn.datepicker)) try {
                            b("input.hasDatepicker", h).datepicker("hide")
                        } catch(f) {}
                        b(h).empty().attr("tabindex", "-1");
                        b(a).jqGrid("setCell", a.rows[d].id, e, a.p.savedRow[c].v);
                        a.p.savedRow.splice(0, 1)
                    }
                    window.setTimeout(function() {
                        b("#" + a.p.knv).attr("tabindex", "-1").focus()
                    },
                    0)
                }
            })
        },
        nextCell: function(d, e) {
            return this.each(function() {
                var a = this,
                c = false;
                if (! (!a.grid || a.p.cellEdit !== true)) {
                    for (var h = e + 1; h < a.p.colModel.length; h++) if (a.p.colModel[h].editable === true) {
                        c = h;
                        break
                    }
                    if (c !== false) b(a).jqGrid("editCell", d, c, true);
                    else a.p.savedRow.length > 0 && b(a).jqGrid("saveCell", d, e)
                }
            })
        },
        prevCell: function(d, e) {
            return this.each(function() {
                var a = this,
                c = false;
                if (! (!a.grid || a.p.cellEdit !==
                true)) {
                    for (var h = e - 1; h >= 0; h--) if (a.p.colModel[h].editable === true) {
                        c = h;
                        break
                    }
                    if (c !== false) b(a).jqGrid("editCell", d, c, true);
                    else a.p.savedRow.length > 0 && b(a).jqGrid("saveCell", d, e)
                }
            })
        },
        GridNav: function() {
            return this.each(function() {
                function d(g, k, j) {
                    if (j.substr(0, 1) == "v") {
                        var i = b(a.grid.bDiv)[0].clientHeight,
                        l = b(a.grid.bDiv)[0].scrollTop,
                        n = a.rows[g].offsetTop + a.rows[g].clientHeight,
                        q = a.rows[g].offsetTop;
                        if (j == "vd") if (n >= i) b(a.grid.bDiv)[0].scrollTop = b(a.grid.bDiv)[0].scrollTop + a.rows[g].clientHeight;
                        if (j == "vu") if (q < l) b(a.grid.bDiv)[0].scrollTop = b(a.grid.bDiv)[0].scrollTop - a.rows[g].clientHeight
                    }
                    if (j == "h") {
                        j = b(a.grid.bDiv)[0].clientWidth;
                        i = b(a.grid.bDiv)[0].scrollLeft;
                        l = a.rows[g].cells[k].offsetLeft;
                        if (a.rows[g].cells[k].offsetLeft + a.rows[g].cells[k].clientWidth >= j + parseInt(i)) b(a.grid.bDiv)[0].scrollLeft = b(a.grid.bDiv)[0].scrollLeft + a.rows[g].cells[k].clientWidth;
                        else if (l < i) b(a.grid.bDiv)[0].scrollLeft = b(a.grid.bDiv)[0].scrollLeft - a.rows[g].cells[k].clientWidth
                    }
                }
                function e(g, k) {
                    var j,
                    i;
                    if (k ==
                    "lft") {
                        j = g + 1;
                        for (i = g; i >= 0; i--) if (a.p.colModel[i].hidden !== true) {
                            j = i;
                            break
                        }
                    }
                    if (k == "rgt") {
                        j = g - 1;
                        for (i = g; i < a.p.colModel.length; i++) if (a.p.colModel[i].hidden !== true) {
                            j = i;
                            break
                        }
                    }
                    return j
                }
                var a = this;
                if (! (!a.grid || a.p.cellEdit !== true)) {
                    a.p.knv = a.p.id + "_kn";
                    var c = b("<span style='width:0px;height:0px;background-color:black;' tabindex='0'><span tabindex='-1' style='width:0px;height:0px;background-color:grey' id='" + a.p.knv + "'></span></span>"),
                    h,
                    f;
                    b(c).insertBefore(a.grid.cDiv);
                    b("#" + a.p.knv).focus().keydown(function(g) {
                        f =
                        g.keyCode;
                        if (a.p.direction == "rtl") if (f == 37) f = 39;
                        else if (f == 39) f = 37;
                        switch (f) {
                        case 38:
                            if (a.p.iRow - 1 >= 0) {
                                d(a.p.iRow - 1, a.p.iCol, "vu");
                                b(a).jqGrid("editCell", a.p.iRow - 1, a.p.iCol, false)
                            }
                            break;
                        case 40:
                            if (a.p.iRow + 1 <= a.rows.length - 1) {
                                d(a.p.iRow + 1, a.p.iCol, "vd");
                                b(a).jqGrid("editCell", a.p.iRow + 1, a.p.iCol, false)
                            }
                            break;
                        case 37:
                            if (a.p.iCol - 1 >= 0) {
                                h = e(a.p.iCol - 1, "lft");
                                d(a.p.iRow, h, "h");
                                b(a).jqGrid("editCell", a.p.iRow, h, false)
                            }
                            break;
                        case 39:
                            if (a.p.iCol + 1 <= a.p.colModel.length - 1) {
                                h = e(a.p.iCol + 1, "rgt");
                                d(a.p.iRow,
                                h, "h");
                                b(a).jqGrid("editCell", a.p.iRow, h, false)
                            }
                            break;
                        case 13:
                            parseInt(a.p.iCol, 10) >= 0 && parseInt(a.p.iRow, 10) >= 0 && b(a).jqGrid("editCell", a.p.iRow, a.p.iCol, true);
                            break
                        }
                        return false
                    })
                }
            })
        },
        getChangedCells: function(d) {
            var e = [];
            d || (d = "all");
            this.each(function() {
                var a = this,
                c; ! a.grid || a.p.cellEdit !== true || b(a.rows).each(function(h) {
                    var f = {};
                    if (b(this).hasClass("edited")) {
                        b("td", this).each(function(g) {
                            c = a.p.colModel[g].name;
                            if (c !== "cb" && c !== "subgrid") if (d == "dirty") {
                                if (b(this).hasClass("dirty-cell")) try {
                                    f[c] =
                                    b.unformat(this, {
                                        rowId: a.rows[h].id,
                                        colModel: a.p.colModel[g]
                                    },
                                    g)
                                } catch(k) {
                                    f[c] = b.jgrid.htmlDecode(b(this).html())
                                }
                            } else try {
                                f[c] = b.unformat(this, {
                                    rowId: a.rows[h].id,
                                    colModel: a.p.colModel[g]
                                },
                                g)
                            } catch(j) {
                                f[c] = b.jgrid.htmlDecode(b(this).html())
                            }
                        });
                        f.id = this.id;
                        e.push(f)
                    }
                })
            });
            return e
        }
    })
})(jQuery);
 (function(b) {
    b.fn.jqm = function(a) {
        var f = {
            overlay: 50,
            closeoverlay: true,
            overlayClass: "jqmOverlay",
            closeClass: "jqmClose",
            trigger: ".jqModal",
            ajax: e,
            ajaxText: "",
            target: e,
            modal: e,
            toTop: e,
            onShow: e,
            onHide: e,
            onLoad: e
        };
        return this.each(function() {
            if (this._jqm) return i[this._jqm].c = b.extend({},
            i[this._jqm].c, a);
            l++;
            this._jqm = l;
            i[l] = {
                c: b.extend(f, b.jqm.params, a),
                a: e,
                w: b(this).addClass("jqmID" + l),
                s: l
            };
            f.trigger && b(this).jqmAddTrigger(f.trigger)
        })
    };
    b.fn.jqmAddClose = function(a) {
        return o(this, a, "jqmHide")
    };
    b.fn.jqmAddTrigger =
    function(a) {
        return o(this, a, "jqmShow")
    };
    b.fn.jqmShow = function(a) {
        return this.each(function() {
            b.jqm.open(this._jqm, a)
        })
    };
    b.fn.jqmHide = function(a) {
        return this.each(function() {
            b.jqm.close(this._jqm, a)
        })
    };
    b.jqm = {
        hash: {},
        open: function(a, f) {
            var c = i[a],
            d = c.c,
            h = "." + d.closeClass,
            g = parseInt(c.w.css("z-index"));
            g = g > 0 ? g: 3E3;
            var j = b("<div></div>").css({
                height: "100%",
                width: "100%",
                position: "fixed",
                left: 0,
                top: 0,
                "z-index": g - 1,
                opacity: d.overlay / 100
            });
            if (c.a) return e;
            c.t = f;
            c.a = true;
            c.w.css("z-index", g);
            if (d.modal) {
                k[0] ||
                setTimeout(function() {
                    p("bind")
                },
                1);
                k.push(a)
            } else if (d.overlay > 0) d.closeoverlay && c.w.jqmAddClose(j);
            else j = e;
            c.o = j ? j.addClass(d.overlayClass).prependTo("body") : e;
            if (q) {
                b("html,body").css({
                    height: "100%",
                    width: "100%"
                });
                if (j) {
                    j = j.css({
                        position: "absolute"
                    })[0];
                    for (var m in {
                        Top: 1,
                        Left: 1
                    }) j.style.setExpression(m.toLowerCase(), "(_=(document.documentElement.scroll" + m + " || document.body.scroll" + m + "))+'px'")
                }
            }
            if (d.ajax) {
                a = d.target || c.w;
                g = d.ajax;
                a = typeof a == "string" ? b(a, c.w) : b(a);
                g = g.substr(0, 1) == "@" ? b(f).attr(g.substring(1)) :
                g;
                a.html(d.ajaxText).load(g,
                function() {
                    d.onLoad && d.onLoad.call(this, c);
                    h && c.w.jqmAddClose(b(h, c.w));
                    r(c)
                })
            } else h && c.w.jqmAddClose(b(h, c.w));
            d.toTop && c.o && c.w.before('<span id="jqmP' + c.w[0]._jqm + '"></span>').insertAfter(c.o);
            d.onShow ? d.onShow(c) : c.w.show();
            r(c);
            return e
        },
        close: function(a) {
            a = i[a];
            if (!a.a) return e;
            a.a = e;
            if (k[0]) {
                k.pop();
                k[0] || p("unbind")
            }
            a.c.toTop && a.o && b("#jqmP" + a.w[0]._jqm).after(a.w).remove();
            if (a.c.onHide) a.c.onHide(a);
            else {
                a.w.hide();
                a.o && a.o.remove()
            }
            return e
        },
        params: {}
    };
    var l =
    0,
    i = b.jqm.hash,
    k = [],
    q = b.browser.msie && b.browser.version == "6.0",
    e = false,
    r = function(a) {
        var f = b('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({
            opacity: 0
        });
        if (q) if (a.o) a.o.html('<p style="width:100%;height:100%"/>').prepend(f);
        else b("iframe.jqm", a.w)[0] || a.w.prepend(f);
        s(a)
    },
    s = function(a) {
        try {
            b(":input:visible", a.w)[0].focus()
        } catch(f) {}
    },
    p = function(a) {
        b(document)[a]("keypress", n)[a]("keydown", n)[a]("mousedown", n)
    },
    n = function(a) {
        var f = i[k[k.length - 1]]; (a = !b(a.target).parents(".jqmID" +
        f.s)[0]) && s(f);
        return ! a
    },
    o = function(a, f, c) {
        return a.each(function() {
            var d = this._jqm;
            b(f).each(function() {
                if (!this[c]) {
                    this[c] = [];
                    b(this).click(function() {
                        for (var h in {
                            jqmShow: 1,
                            jqmHide: 1
                        }) for (var g in this[h]) i[this[h][g]] && i[this[h][g]].w[h](this);
                        return e
                    })
                }
                this[c].push(d)
            })
        })
    }
})(jQuery);
 (function(b) {
    b.fn.jqDrag = function(a) {
        return l(this, a, "d")
    };
    b.fn.jqResize = function(a, e) {
        return l(this, a, "r", e)
    };
    b.jqDnR = {
        dnr: {},
        e: 0,
        drag: function(a) {
            if (c.k == "d") d.css({
                left: c.X + a.pageX - c.pX,
                top: c.Y + a.pageY - c.pY
            });
            else {
                d.css({
                    width: Math.max(a.pageX - c.pX + c.W, 0),
                    height: Math.max(a.pageY - c.pY + c.H, 0)
                });
                M1 && f.css({
                    width: Math.max(a.pageX - M1.pX + M1.W, 0),
                    height: Math.max(a.pageY - M1.pY + M1.H, 0)
                })
            }
            return false
        },
        stop: function() {
            b(document).unbind("mousemove", i.drag).unbind("mouseup", i.stop)
        }
    };
    var i = b.jqDnR,
    c = i.dnr,
    d = i.e,
    f,
    l = function(a, e, n, m) {
        return a.each(function() {
            e = e ? b(e, a) : a;
            e.bind("mousedown", {
                e: a,
                k: n
            },
            function(g) {
                var j = g.data,
                h = {};
                d = j.e;
                f = m ? b(m) : false;
                if (d.css("position") != "relative") try {
                    d.position(h)
                } catch(o) {}
                c = {
                    X: h.left || k("left") || 0,
                    Y: h.top || k("top") || 0,
                    W: k("width") || d[0].scrollWidth || 0,
                    H: k("height") || d[0].scrollHeight || 0,
                    pX: g.pageX,
                    pY: g.pageY,
                    k: j.k
                };
                M1 = f && j.k != "d" ? {
                    X: h.left || f1("left") || 0,
                    Y: h.top || f1("top") || 0,
                    W: f[0].offsetWidth || f1("width") || 0,
                    H: f[0].offsetHeight || f1("height") || 0,
                    pX: g.pageX,
                    pY: g.pageY,
                    k: j.k
                }: false;
                b(document).mousemove(b.jqDnR.drag).mouseup(b.jqDnR.stop);
                return false
            })
        })
    },
    k = function(a) {
        return parseInt(d.css(a)) || false
    };
    f1 = function(a) {
        return parseInt(f.css(a)) || false
    }
})(jQuery);
 (function(a) {
    a.jgrid.extend({
        setSubGrid: function() {
            return this.each(function() {
                var d = this;
                d.p.colNames.unshift("");
                d.p.colModel.unshift({
                    name: "subgrid",
                    width: a.browser.safari ? d.p.subGridWidth + d.p.cellLayout: d.p.subGridWidth,
                    sortable: false,
                    resizable: false,
                    hidedlg: true,
                    search: false,
                    fixed: true
                });
                d = d.p.subGridModel;
                if (d[0]) {
                    d[0].align = a.extend([], d[0].align || []);
                    for (i = 0; i < d[0].name.length; i++) d[0].align[i] = d[0].align[i] || "left"
                }
            })
        },
        addSubGridCell: function(d, e) {
            var b = "",
            o;
            this.each(function() {
                b = this.formatCol(d,
                e);
                o = this.p.gridview
            });
            return o === false ? "<td role='grid' class='ui-sgcollapsed sgcollapsed' " + b + "><a href='javascript:void(0);'><span class='ui-icon ui-icon-plus'></span></a></td>": "<td role='grid' " + b + "></td>"
        },
        addSubGrid: function(d, e) {
            return this.each(function() {
                var b = this;
                if (b.grid) {
                    var o,
                    n,
                    q,
                    u,
                    t,
                    v,
                    p;
                    a("td:eq(" + e + ")", d).click(function() {
                        if (a(this).hasClass("sgcollapsed")) {
                            q = b.p.id;
                            o = a(this).parent();
                            u = e >= 1 ? "<td colspan='" + e + "'>&#160;</td>": "";
                            n = a(o).attr("id");
                            p = true;
                            if (a.isFunction(b.p.subGridBeforeExpand)) p =
                            b.p.subGridBeforeExpand(q + "_" + n, n);
                            if (p === false) return false;
                            t = 0;
                            a.each(b.p.colModel,
                            function() {
                                if (this.hidden === true || this.name == "rn" || this.name == "cb") t++
                            });
                            v = "<tr role='row' class='ui-subgrid'>" + u + "<td class='ui-widget-content subgrid-cell'><span class='ui-icon ui-icon-carat-1-sw'/></td><td colspan='" + parseInt(b.p.colNames.length - 1 - t) + "' class='ui-widget-content subgrid-data'><div id=" + q + "_" + n + " class='tablediv'>";
                            a(this).parent().after(v + "</div></td></tr>");
                            a.isFunction(b.p.subGridRowExpanded) ?
                            b.p.subGridRowExpanded(q + "_" + n, n) : y(o);
                            a(this).html("<a href='javascript:void(0);'><span class='ui-icon ui-icon-minus'></span></a>").removeClass("sgcollapsed").addClass("sgexpanded")
                        } else if (a(this).hasClass("sgexpanded")) {
                            p = true;
                            if (a.isFunction(b.p.subGridRowColapsed)) {
                                o = a(this).parent();
                                n = a(o).attr("id");
                                p = b.p.subGridRowColapsed(q + "_" + n, n)
                            }
                            if (p === false) return false;
                            a(this).parent().next().remove(".ui-subgrid");
                            a(this).html("<a href='javascript:void(0);'><span class='ui-icon ui-icon-plus'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed")
                        }
                        return false
                    });
                    var y = function(g) {
                        var j,
                        f,
                        c,
                        h;
                        j = a(g).attr("id");
                        f = {
                            nd_: (new Date).getTime()
                        };
                        f[b.p.idName] = j;
                        if (!b.p.subGridModel[0]) return false;
                        if (b.p.subGridModel[0].params) for (h = 0; h < b.p.subGridModel[0].params.length; h++) for (c = 0; c < b.p.colModel.length; c++) if (b.p.colModel[c].name == b.p.subGridModel[0].params[h]) f[b.p.colModel[c].name] = a("td:eq(" + c + ")", g).text().replace(/\&#160\;/ig, "");
                        if (!b.grid.hDiv.loading) {
                            b.grid.hDiv.loading = true;
                            a("#load_" + b.p.id).show();
                            if (!b.p.subgridtype) b.p.subgridtype = b.p.datatype;
                            if (a.isFunction(b.p.subgridtype)) b.p.subgridtype(f);
                            else b.p.subgridtype = b.p.subgridtype.toLowerCase();
                            switch (b.p.subgridtype) {
                            case "xml":
                            case "json":
                                a.ajax(a.extend({
                                    type:
                                    b.p.mtype,
                                    url: b.p.subGridUrl,
                                    dataType: b.p.subgridtype,
                                    data: a.isFunction(b.p.serializeSubGridData) ? b.p.serializeSubGridData(f) : f,
                                    complete: function(m) {
                                        b.p.subgridtype == "xml" ? w(m.responseXML, j) : x(a.jgrid.parse(m.responseText), j)
                                    }
                                },
                                a.jgrid.ajaxOptions, b.p.ajaxSubgridOptions || {}));
                                break
                            }
                        }
                        return false
                    },
                    s = function(g, j, f) {
                        j = a("<td align='" + b.p.subGridModel[0].align[f] + "'></td>").html(j);
                        a(g).append(j)
                    },
                    w = function(g, j) {
                        var f,
                        c,
                        h,
                        m = a("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),
                        k = a("<tr></tr>");
                        for (c = 0; c < b.p.subGridModel[0].name.length; c++) {
                            f = a("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-" + b.p.direction + "'></th>");
                            a(f).html(b.p.subGridModel[0].name[c]);
                            a(f).width(b.p.subGridModel[0].width[c]);
                            a(k).append(f)
                        }
                        a(m).append(k);
                        if (g) {
                            h = b.p.xmlReader.subgrid;
                            a(h.root + " " + h.row, g).each(function() {
                                k = a("<tr class='ui-widget-content ui-subtblcell'></tr>");
                                if (h.repeatitems === true) a(h.cell, this).each(function(r) {
                                    s(k, a(this).text() || "&#160;", r)
                                });
                                else {
                                    var l = b.p.subGridModel[0].mapping || b.p.subGridModel[0].name;
                                    if (l) for (c = 0; c < l.length; c++) s(k, a(l[c], this).text() || "&#160;", c)
                                }
                                a(m).append(k)
                            })
                        }
                        g = a("table:first", b.grid.bDiv).attr("id") + "_";
                        a("#" + g + j).append(m);
                        b.grid.hDiv.loading = false;
                        a("#load_" + b.p.id).hide();
                        return false
                    },
                    x = function(g, j) {
                        var f,
                        c,
                        h,
                        m = a("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),
                        k = a("<tr></tr>");
                        for (c = 0; c <
                        b.p.subGridModel[0].name.length; c++) {
                            f = a("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-" + b.p.direction + "'></th>");
                            a(f).html(b.p.subGridModel[0].name[c]);
                            a(f).width(b.p.subGridModel[0].width[c]);
                            a(k).append(f)
                        }
                        a(m).append(k);
                        if (g) {
                            f = b.p.jsonReader.subgrid;
                            g = g[f.root];
                            if (typeof g !== "undefined") for (c = 0; c < g.length; c++) {
                                h = g[c];
                                k = a("<tr class='ui-widget-content ui-subtblcell'></tr>");
                                if (f.repeatitems === true) {
                                    if (f.cell) h = h[f.cell];
                                    for (var l = 0; l < h.length; l++) s(k, h[l] || "&#160;", l)
                                } else {
                                    var r =
                                    b.p.subGridModel[0].mapping || b.p.subGridModel[0].name;
                                    if (r.length) for (l = 0; l < r.length; l++) s(k, h[r[l]] || "&#160;", l)
                                }
                                a(m).append(k)
                            }
                        }
                        c = a("table:first", b.grid.bDiv).attr("id") + "_";
                        a("#" + c + j).append(m);
                        b.grid.hDiv.loading = false;
                        a("#load_" + b.p.id).hide();
                        return false
                    };
                    b.subGridXml = function(g, j) {
                        w(g, j)
                    };
                    b.subGridJson = function(g, j) {
                        x(g, j)
                    }
                }
            })
        },
        expandSubGridRow: function(d) {
            return this.each(function() {
                var e = this;
                if (e.grid || d) if (e.p.subGrid === true) if (e = a(this).jqGrid("getInd", d, true))(e = a("td.sgcollapsed", e)[0]) &&
                a(e).trigger("click")
            })
        },
        collapseSubGridRow: function(d) {
            return this.each(function() {
                var e = this;
                if (e.grid || d) if (e.p.subGrid === true) if (e = a(this).jqGrid("getInd", d, true))(e = a("td.sgexpanded", e)[0]) && a(e).trigger("click")
            })
        },
        toggleSubGridRow: function(d) {
            return this.each(function() {
                var e = this;
                if (e.grid || d) if (e.p.subGrid === true) if (e = a(this).jqGrid("getInd", d, true)) {
                    var b = a("td.sgcollapsed", e)[0];
                    if (b) a(b).trigger("click");
                    else(b = a("td.sgexpanded", e)[0]) && a(b).trigger("click")
                }
            })
        }
    })
})(jQuery);
 (function(d) {
    d.jgrid.extend({
        setTreeNode: function(a, c) {
            return this.each(function() {
                var b = this;
                if (b.grid && b.p.treeGrid) {
                    var e = b.p.expColInd,
                    f = b.p.treeReader.expanded_field,
                    i = b.p.treeReader.leaf_field,
                    j = b.p.treeReader.level_field;
                    c.level = a[j];
                    if (b.p.treeGridModel == "nested") {
                        c.lft = a[b.p.treeReader.left_field];
                        c.rgt = a[b.p.treeReader.right_field];
                        a[i] || (a[i] = parseInt(c.rgt, 10) === parseInt(c.lft, 10) + 1 ? "true": "false")
                    } else c.parent_id = a[b.p.treeReader.parent_id_field];
                    var k = parseInt(c.level, 10),
                    h;
                    if (b.p.tree_root_level ===
                    0) {
                        h = k + 1;
                        k = k
                    } else {
                        h = k;
                        k = k - 1
                    }
                    h = "<div class='tree-wrap tree-wrap-" + b.p.direction + "' style='width:" + h * 18 + "px;'>";
                    h += "<div style='" + (b.p.direction == "rtl" ? "right:": "left:") + k * 18 + "px;' class='ui-icon ";
                    if (a[i] == "true" || a[i] == true) {
                        h += b.p.treeIcons.leaf + " tree-leaf'";
                        c.isLeaf = true
                    } else {
                        if (a[f] == "true" || a[f] == true) {
                            h += b.p.treeIcons.minus + " tree-minus treeclick'";
                            c.expanded = true
                        } else {
                            h += b.p.treeIcons.plus + " tree-plus treeclick'";
                            c.expanded = false
                        }
                        c.isLeaf = false
                    }
                    h += "</div></div>";
                    if (parseInt(a[j], 10) !== parseInt(b.p.tree_root_level,
                    10)) d(b).jqGrid("isVisibleNode", c) || d(c).css("display", "none");
                    d("td:eq(" + e + ")", c).wrapInner("<span></span>").prepend(h);
                    d(".treeclick", c).bind("click",
                    function(g) {
                        g = d(g.target || g.srcElement, b.rows).parents("tr.jqgrow")[0].rowIndex;
                        if (!b.rows[g].isLeaf) if (b.rows[g].expanded) {
                            d(b).jqGrid("collapseRow", b.rows[g]);
                            d(b).jqGrid("collapseNode", b.rows[g])
                        } else {
                            d(b).jqGrid("expandRow", b.rows[g]);
                            d(b).jqGrid("expandNode", b.rows[g])
                        }
                        return false
                    });
                    b.p.ExpandColClick === true && d("span", c).css("cursor", "pointer").bind("click",
                    function(g) {
                        g = d(g.target || g.srcElement, b.rows).parents("tr.jqgrow")[0].rowIndex;
                        if (!b.rows[g].isLeaf) if (b.rows[g].expanded) {
                            d(b).jqGrid("collapseRow", b.rows[g]);
                            d(b).jqGrid("collapseNode", b.rows[g])
                        } else {
                            d(b).jqGrid("expandRow", b.rows[g]);
                            d(b).jqGrid("expandNode", b.rows[g])
                        }
                        d(b).jqGrid("setSelection", b.rows[g].id);
                        return false
                    })
                }
            })
        },
        setTreeGrid: function() {
            return this.each(function() {
                var a = this,
                c = 0;
                if (a.p.treeGrid) {
                    a.p.treedatatype || d.extend(a.p, {
                        treedatatype: a.p.datatype
                    });
                    a.p.subGrid = false;
                    a.p.altRows =
                    false;
                    a.p.pgbuttons = false;
                    a.p.pginput = false;
                    a.p.multiselect = false;
                    a.p.rowList = [];
                    a.p.treeIcons = d.extend({
                        plus: "ui-icon-triangle-1-" + (a.p.direction == "rtl" ? "w": "e"),
                        minus: "ui-icon-triangle-1-s",
                        leaf: "ui-icon-radio-off"
                    },
                    a.p.treeIcons || {});
                    if (a.p.treeGridModel == "nested") a.p.treeReader = d.extend({
                        level_field: "level",
                        left_field: "lft",
                        right_field: "rgt",
                        leaf_field: "isLeaf",
                        expanded_field: "expanded"
                    },
                    a.p.treeReader);
                    else if (a.p.treeGridModel == "adjacency") a.p.treeReader = d.extend({
                        level_field: "level",
                        parent_id_field: "parent",
                        leaf_field: "isLeaf",
                        expanded_field: "expanded"
                    },
                    a.p.treeReader);
                    for (var b in a.p.colModel) {
                        if (a.p.colModel[b].name == a.p.ExpandColumn) {
                            a.p.expColInd = c;
                            break
                        }
                        c++
                    }
                    if (!a.p.expColInd) a.p.expColInd = 0;
                    d.each(a.p.treeReader,
                    function(e, f) {
                        if (f) {
                            a.p.colNames.push(f);
                            a.p.colModel.push({
                                name: f,
                                width: 1,
                                hidden: true,
                                sortable: false,
                                resizable: false,
                                hidedlg: true,
                                editable: true,
                                search: false
                            })
                        }
                    })
                }
            })
        },
        expandRow: function(a) {
            this.each(function() {
                var c = this;
                if (c.grid && c.p.treeGrid) {
                    var b = d(c).jqGrid("getNodeChildren", a);
                    d(b).each(function() {
                        d(this).css("display",
                        "");
                        this.expanded && d(c).jqGrid("expandRow", this)
                    })
                }
            })
        },
        collapseRow: function(a) {
            this.each(function() {
                var c = this;
                if (c.grid && c.p.treeGrid) {
                    var b = d(c).jqGrid("getNodeChildren", a);
                    d(b).each(function() {
                        d(this).css("display", "none");
                        this.expanded && d(c).jqGrid("collapseRow", this)
                    })
                }
            })
        },
        getRootNodes: function() {
            var a = [];
            this.each(function() {
                var c = this;
                if (c.grid && c.p.treeGrid) switch (c.p.treeGridModel) {
                case "nested":
                    var b = c.p.treeReader.level_field;
                    d(c.rows).each(function() {
                        parseInt(this[b], 10) === parseInt(c.p.tree_root_level,
                        10) && a.push(this)
                    });
                    break;
                case "adjacency":
                    d(c.rows).each(function() {
                        if (this.parent_id == null || this.parent_id.toLowerCase() == "null") a.push(this)
                    });
                    break
                }
            });
            return a
        },
        getNodeDepth: function(a) {
            var c = null;
            this.each(function() {
                var b = this;
                if (this.grid && this.p.treeGrid) switch (b.p.treeGridModel) {
                case "nested":
                    c = parseInt(a.level, 10) - parseInt(this.p.tree_root_level, 10);
                    break;
                case "adjacency":
                    c = d(b).jqGrid("getNodeAncestors", a).length;
                    break
                }
            });
            return c
        },
        getNodeParent: function(a) {
            var c = null;
            this.each(function() {
                var b =
                this;
                if (b.grid && b.p.treeGrid) switch (b.p.treeGridModel) {
                case "nested":
                    var e = parseInt(a.lft, 10),
                    f = parseInt(a.rgt, 10),
                    i = parseInt(a.level, 10);
                    d(this.rows).each(function() {
                        if (parseInt(this.level, 10) === i - 1 && parseInt(this.lft) < e && parseInt(this.rgt) > f) {
                            c = this;
                            return false
                        }
                    });
                    break;
                case "adjacency":
                    d(this.rows).each(function() {
                        if (this.id == a.parent_id) {
                            c = this;
                            return false
                        }
                    });
                    break
                }
            });
            return c
        },
        getNodeChildren: function(a) {
            var c = [];
            this.each(function() {
                var b = this;
                if (b.grid && b.p.treeGrid) switch (b.p.treeGridModel) {
                case "nested":
                    var e =
                    parseInt(a.lft, 10),
                    f = parseInt(a.rgt, 10),
                    i = parseInt(a.level, 10);
                    d(this.rows).each(function() {
                        parseInt(this.level, 10) === i + 1 && parseInt(this.lft, 10) > e && parseInt(this.rgt, 10) < f && c.push(this)
                    });
                    break;
                case "adjacency":
                    d(this.rows).each(function() {
                        this.parent_id == a.id && c.push(this)
                    });
                    break
                }
            });
            return c
        },
        getFullTreeNode: function(a) {
            var c = [];
            this.each(function() {
                var b = this;
                if (b.grid && b.p.treeGrid) switch (b.p.treeGridModel) {
                case "nested":
                    var e = parseInt(a.lft, 10),
                    f = parseInt(a.rgt, 10),
                    i = parseInt(a.level, 10);
                    d(this.rows).each(function() {
                        parseInt(this.level,
                        10) >= i && parseInt(this.lft, 10) >= e && parseInt(this.lft, 10) <= f && c.push(this)
                    });
                    break;
                case "adjacency":
                    c.push(a);
                    d(this.rows).each(function(j) {
                        len = c.length;
                        for (j = 0; j < len; j++) if (c[j].id == this.parent_id) {
                            c.push(this);
                            break
                        }
                    });
                    break
                }
            });
            return c
        },
        getNodeAncestors: function(a) {
            var c = [];
            this.each(function() {
                if (this.grid && this.p.treeGrid) for (var b = d(this).jqGrid("getNodeParent", a); b;) {
                    c.push(b);
                    b = d(this).jqGrid("getNodeParent", b)
                }
            });
            return c
        },
        isVisibleNode: function(a) {
            var c = true;
            this.each(function() {
                var b = this;
                if (b.grid && b.p.treeGrid) {
                    b = d(b).jqGrid("getNodeAncestors", a);
                    d(b).each(function() {
                        c = c && this.expanded;
                        if (!c) return false
                    })
                }
            });
            return c
        },
        isNodeLoaded: function(a) {
            var c;
            this.each(function() {
                var b = this;
                if (b.grid && b.p.treeGrid) c = a.loaded !== undefined ? a.loaded: a.isLeaf || d(b).jqGrid("getNodeChildren", a).length > 0 ? true: false
            });
            return c
        },
        expandNode: function(a) {
            return this.each(function() {
                if (this.grid && this.p.treeGrid) if (!a.expanded) if (d(this).jqGrid("isNodeLoaded", a)) {
                    a.expanded = true;
                    d("div.treeclick", a).removeClass(this.p.treeIcons.plus +
                    " tree-plus").addClass(this.p.treeIcons.minus + " tree-minus")
                } else {
                    a.expanded = true;
                    d("div.treeclick", a).removeClass(this.p.treeIcons.plus + " tree-plus").addClass(this.p.treeIcons.minus + " tree-minus");
                    this.p.treeANode = a.rowIndex;
                    this.p.datatype = this.p.treedatatype;
                    this.p.treeGridModel == "nested" ? d(this).jqGrid("setGridParam", {
                        postData: {
                            nodeid: a.id,
                            n_left: a.lft,
                            n_right: a.rgt,
                            n_level: a.level
                        }
                    }) : d(this).jqGrid("setGridParam", {
                        postData: {
                            nodeid: a.id,
                            parentid: a.parent_id,
                            n_level: a.level
                        }
                    });
                    d(this).trigger("reloadGrid");
                    this.p.treeGridModel == "nested" ? d(this).jqGrid("setGridParam", {
                        postData: {
                            nodeid: "",
                            n_left: "",
                            n_right: "",
                            n_level: ""
                        }
                    }) : d(this).jqGrid("setGridParam", {
                        postData: {
                            nodeid: "",
                            parentid: "",
                            n_level: ""
                        }
                    })
                }
            })
        },
        collapseNode: function(a) {
            return this.each(function() {
                if (this.grid && this.p.treeGrid) if (a.expanded) {
                    a.expanded = false;
                    d("div.treeclick", a).removeClass(this.p.treeIcons.minus + " tree-minus").addClass(this.p.treeIcons.plus + " tree-plus")
                }
            })
        },
        SortTree: function(a) {
            return this.each(function() {
                if (this.grid && this.p.treeGrid) {
                    var c,
                    b,
                    e,
                    f = [],
                    i = this,
                    j = d(this).jqGrid("getRootNodes");
                    j.sort(function(k, h) {
                        if (k.sortKey < h.sortKey) return - a;
                        if (k.sortKey > h.sortKey) return a;
                        return 0
                    });
                    if (j[0]) {
                        d("td", j[0]).each(function(k) {
                            d(this).css("width", i.grid.headers[k].width + "px")
                        });
                        i.grid.cols = j[0].cells
                    }
                    c = 0;
                    for (b = j.length; c < b; c++) {
                        e = j[c];
                        f.push(e);
                        d(this).jqGrid("collectChildrenSortTree", f, e, a)
                    }
                    d.each(f,
                    function(k, h) {
                        d("tbody", i.grid.bDiv).append(h);
                        h.sortKey = null
                    })
                }
            })
        },
        collectChildrenSortTree: function(a, c, b) {
            return this.each(function() {
                if (this.grid &&
                this.p.treeGrid) {
                    var e,
                    f,
                    i,
                    j = d(this).jqGrid("getNodeChildren", c);
                    j.sort(function(k, h) {
                        if (k.sortKey < h.sortKey) return - b;
                        if (k.sortKey > h.sortKey) return b;
                        return 0
                    });
                    e = 0;
                    for (f = j.length; e < f; e++) {
                        i = j[e];
                        a.push(i);
                        d(this).jqGrid("collectChildrenSortTree", a, i, b)
                    }
                }
            })
        },
        setTreeRow: function(a, c) {
            var b = false;
            this.each(function() {
                var e = this;
                if (e.grid && e.p.treeGrid) b = d(e).jqGrid("setRowData", a, c)
            });
            return b
        },
        delTreeNode: function(a) {
            return this.each(function() {
                var c = this;
                if (c.grid && c.p.treeGrid) {
                    var b = d(c).jqGrid("getInd",
                    a, true);
                    if (b) {
                        var e = d(c).jqGrid("getNodeChildren", b);
                        if (e.length > 0) for (var f = 0; f < e.length; f++) d(c).jqGrid("delRowData", e[f].id);
                        d(c).jqGrid("delRowData", b.id)
                    }
                }
            })
        }
    })
})(jQuery);
 (function(b) {
    b.jgrid.extend({
        jqGridImport: function(a) {
            a = b.extend({
                imptype: "xml",
                impstring: "",
                impurl: "",
                mtype: "GET",
                impData: {},
                xmlGrid: {
                    config: "roots>grid",
                    data: "roots>rows"
                },
                jsonGrid: {
                    config: "grid",
                    data: "data"
                },
                ajaxOptions: {}
            },
            a || {});
            return this.each(function() {
                var e = this,
                c = function(d, g) {
                    var f = b(g.xmlGrid.config, d)[0];
                    g = b(g.xmlGrid.data, d)[0];
                    if (xmlJsonClass.xml2json && b.jgrid.parse) {
                        f = xmlJsonClass.xml2json(f, " ");
                        f = b.jgrid.parse(f);
                        for (var i in f) var k = f[i];
                        if (g) {
                            i = f.grid.datatype;
                            f.grid.datatype =
                            "xmlstring";
                            f.grid.datastr = d;
                            b(e).jqGrid(k).jqGrid("setGridParam", {
                                datatype: i
                            })
                        } else b(e).jqGrid(k)
                    } else alert("xml2json or parse are not present")
                },
                j = function(d, g) {
                    if (d && typeof d == "string") {
                        var f = b.jgrid.parse(d);
                        d = f[g.jsonGrid.config];
                        if (g = f[g.jsonGrid.data]) {
                            f = d.datatype;
                            d.datatype = "jsonstring";
                            d.datastr = g;
                            b(e).jqGrid(d).jqGrid("setGridParam", {
                                datatype: f
                            })
                        } else b(e).jqGrid(d)
                    }
                };
                switch (a.imptype) {
                case "xml":
                    b.ajax(b.extend({
                        url:
                        a.impurl,
                        type: a.mtype,
                        data: a.impData,
                        dataType: "xml",
                        complete: function(d,
                        g) {
                            if (g == "success") {
                                c(d.responseXML, a);
                                b.isFunction(a.importComplete) && a.importComplete(d)
                            }
                        }
                    },
                    a.ajaxOptions));
                    break;
                case "xmlstring":
                    if (a.impstring && typeof a.impstring == "string") {
                        var h = b.jgrid.stringToDoc(a.impstring);
                        if (h) {
                            c(h, a);
                            b.isFunction(a.importComplete) && a.importComplete(h);
                            a.impstring = null
                        }
                        h = null
                    }
                    break;
                case "json":
                    b.ajax(b.extend({
                        url:
                        a.impurl,
                        type: a.mtype,
                        data: a.impData,
                        dataType: "json",
                        complete: function(d, g) {
                            if (g == "success") {
                                j(d.responseText, a);
                                b.isFunction(a.importComplete) && a.importComplete(d)
                            }
                        }
                    },
                    a.ajaxOptions));
                    break;
                case "jsonstring":
                    if (a.impstring && typeof a.impstring == "string") {
                        j(a.impstring, a);
                        b.isFunction(a.importComplete) && a.importComplete(a.impstring);
                        a.impstring = null
                    }
                    break
                }
            })
        },
        jqGridExport: function(a) {
            a = b.extend({
                exptype: "xmlstring",
                root: "grid",
                ident: "\t"
            },
            a || {});
            var e = null;
            this.each(function() {
                if (this.grid) {
                    var c = b.extend({},
                    b(this).jqGrid("getGridParam"));
                    if (c.rownumbers) {
                        c.colNames.splice(0, 1);
                        c.colModel.splice(0, 1)
                    }
                    if (c.multiselect) {
                        c.colNames.splice(0, 1);
                        c.colModel.splice(0, 1)
                    }
                    if (c.subgrid) {
                        c.colNames.splice(0,
                        1);
                        c.colModel.splice(0, 1)
                    }
                    if (c.treeGrid) for (var j in c.treeReader) {
                        c.colNames.splice(c.colNames.length - 1);
                        c.colModel.splice(c.colModel.length - 1)
                    }
                    switch (a.exptype) {
                    case "xmlstring":
                        e = "<" + a.root + ">" + xmlJsonClass.json2xml(c, a.ident) + "</" + a.root + ">";
                        break;
                    case "jsonstring":
                        e = "{" + xmlJsonClass.toJson(c, a.root, a.ident) + "}";
                        if (c.postData.filters != undefined) {
                            e = e.replace(/filters":"/, 'filters":');
                            e = e.replace(/}]}"/, "}]}")
                        }
                        break
                    }
                }
            });
            return e
        },
        excelExport: function(a) {
            a = b.extend({
                exptype: "remote",
                url: null,
                oper: "oper",
                tag: "excel",
                exportOptions: {}
            },
            a || {});
            return this.each(function() {
                $t = this;
                if (this.grid) if (a.exptype == "remote") {
                    var e = b.extend({},
                    this.p.postData);
                    e[a.oper] = a.tag;
                    e = jQuery.param(e);
                    window.location = a.url + "?" + e
                }
            })
        }
    })
})(jQuery);
var xmlJsonClass = {
    xml2json: function(a, b) {
        if (a.nodeType === 9) a = a.documentElement;
        a = this.toJson(this.toObj(this.removeWhite(a)), a.nodeName, "\t");
        return "{\n" + b + (b ? a.replace(/\t/g, b) : a.replace(/\t|\n/g, "")) + "\n}"
    },
    json2xml: function(a, b) {
        var g = function(d, c, j) {
            var i = "",
            k,
            h;
            if (d instanceof Array) if (d.length === 0) i += j + "<" + c + ">__EMPTY_ARRAY_</" + c + ">\n";
            else {
                k = 0;
                for (h = d.length; k < h; k += 1) {
                    var l = j + g(d[k], c, j + "\t") + "\n";
                    i += l
                }
            } else if (typeof d === "object") {
                k = false;
                i += j + "<" + c;
                for (h in d) if (d.hasOwnProperty(h)) if (h.charAt(0) ===
                "@") i += " " + h.substr(1) + '="' + d[h].toString() + '"';
                else k = true;
                i += k ? ">": "/>";
                if (k) {
                    for (h in d) if (d.hasOwnProperty(h)) if (h === "#text") i += d[h];
                    else if (h === "#cdata") i += "<![CDATA[" + d[h] + "]]\>";
                    else if (h.charAt(0) !== "@") i += g(d[h], h, j + "\t");
                    i += (i.charAt(i.length - 1) === "\n" ? j: "") + "</" + c + ">"
                }
            } else i += typeof d === "function" ? j + "<" + c + "><![CDATA[" + d + "]]\></" + c + ">": d.toString() === '""' || d.toString().length === 0 ? j + "<" + c + ">__EMPTY_STRING_</" + c + ">": j + "<" + c + ">" + d.toString() + "</" + c + ">";
            return i
        },
        e = "",
        f;
        for (f in a) if (a.hasOwnProperty(f)) e +=
        g(a[f], f, "");
        return b ? e.replace(/\t/g, b) : e.replace(/\t|\n/g, "")
    },
    toObj: function(a) {
        var b = {},
        g = /function/i;
        if (a.nodeType === 1) {
            if (a.attributes.length) {
                var e;
                for (e = 0; e < a.attributes.length; e += 1) b["@" + a.attributes[e].nodeName] = (a.attributes[e].nodeValue || "").toString()
            }
            if (a.firstChild) {
                var f = e = 0,
                d = false,
                c;
                for (c = a.firstChild; c; c = c.nextSibling) if (c.nodeType === 1) d = true;
                else if (c.nodeType === 3 && c.nodeValue.match(/[^ \f\n\r\t\v]/)) e += 1;
                else if (c.nodeType === 4) f += 1;
                if (d) if (e < 2 && f < 2) {
                    this.removeWhite(a);
                    for (c =
                    a.firstChild; c; c = c.nextSibling) if (c.nodeType === 3) b["#text"] = this.escape(c.nodeValue);
                    else if (c.nodeType === 4) if (g.test(c.nodeValue)) b[c.nodeName] = [b[c.nodeName], c.nodeValue];
                    else b["#cdata"] = this.escape(c.nodeValue);
                    else if (b[c.nodeName]) if (b[c.nodeName] instanceof Array) b[c.nodeName][b[c.nodeName].length] = this.toObj(c);
                    else b[c.nodeName] = [b[c.nodeName], this.toObj(c)];
                    else b[c.nodeName] = this.toObj(c)
                } else if (a.attributes.length) b["#text"] = this.escape(this.innerXml(a));
                else b = this.escape(this.innerXml(a));
                else if (e) if (a.attributes.length) b["#text"] = this.escape(this.innerXml(a));
                else {
                    b = this.escape(this.innerXml(a));
                    if (b === "__EMPTY_ARRAY_") b = "[]";
                    else if (b === "__EMPTY_STRING_") b = ""
                } else if (f) if (f > 1) b = this.escape(this.innerXml(a));
                else for (c = a.firstChild; c; c = c.nextSibling) if (g.test(a.firstChild.nodeValue)) {
                    b = a.firstChild.nodeValue;
                    break
                } else b["#cdata"] = this.escape(c.nodeValue)
            }
            if (!a.attributes.length && !a.firstChild) b = null
        } else if (a.nodeType === 9) b = this.toObj(a.documentElement);
        else alert("unhandled node type: " +
        a.nodeType);
        return b
    },
    toJson: function(a, b, g) {
        var e = b ? '"' + b + '"': "";
        if (a === "[]") e += b ? ":[]": "[]";
        else if (a instanceof Array) {
            var f,
            d,
            c = [];
            d = 0;
            for (f = a.length; d < f; d += 1) c[d] = this.toJson(a[d], "", g + "\t");
            e += (b ? ":[": "[") + (c.length > 1 ? "\n" + g + "\t" + c.join(",\n" + g + "\t") + "\n" + g: c.join("")) + "]"
        } else if (a === null) e += (b && ":") + "null";
        else if (typeof a === "object") {
            f = [];
            for (d in a) if (a.hasOwnProperty(d)) f[f.length] = this.toJson(a[d], d, g + "\t");
            e += (b ? ":{": "{") + (f.length > 1 ? "\n" + g + "\t" + f.join(",\n" + g + "\t") + "\n" + g: f.join("")) +
            "}"
        } else if (typeof a === "string") {
            g = /function/i;
            f = a.toString();
            e += /(^-?\d+\.?\d*$)/.test(f) || g.test(f) || f === "false" || f === "true" ? (b && ":") + f: (b && ":") + '"' + a + '"'
        } else e += (b && ":") + a.toString();
        return e
    },
    innerXml: function(a) {
        var b = "";
        if ("innerHTML" in a) b = a.innerHTML;
        else {
            var g = function(e) {
                var f = "",
                d;
                if (e.nodeType === 1) {
                    f += "<" + e.nodeName;
                    for (d = 0; d < e.attributes.length; d += 1) f += " " + e.attributes[d].nodeName + '="' + (e.attributes[d].nodeValue || "").toString() + '"';
                    if (e.firstChild) {
                        f += ">";
                        for (d = e.firstChild; d; d = d.nextSibling) f +=
                        g(d);
                        f += "</" + e.nodeName + ">"
                    } else f += "/>"
                } else if (e.nodeType === 3) f += e.nodeValue;
                else if (e.nodeType === 4) f += "<![CDATA[" + e.nodeValue + "]]\>";
                return f
            };
            for (a = a.firstChild; a; a = a.nextSibling) b += g(a)
        }
        return b
    },
    escape: function(a) {
        return a.replace(/[\\]/g, "\\\\").replace(/[\"]/g, '\\"').replace(/[\n]/g, "\\n").replace(/[\r]/g, "\\r")
    },
    removeWhite: function(a) {
        a.normalize();
        var b;
        for (b = a.firstChild; b;) if (b.nodeType === 3) if (b.nodeValue.match(/[^ \f\n\r\t\v]/)) b = b.nextSibling;
        else {
            var g = b.nextSibling;
            a.removeChild(b);
            b = g
        } else {
            b.nodeType === 1 && this.removeWhite(b);
            b = b.nextSibling
        }
        return a
    }
};
 (function(b) {
    b.jgrid.extend({
        setColumns: function(a) {
            a = b.extend({
                top: 0,
                left: 0,
                width: 200,
                height: "auto",
                dataheight: "auto",
                modal: false,
                drag: true,
                beforeShowForm: null,
                afterShowForm: null,
                afterSubmitForm: null,
                closeOnEscape: true,
                ShrinkToFit: false,
                jqModal: false,
                saveicon: [true, "left", "ui-icon-disk"],
                closeicon: [true, "left", "ui-icon-close"],
                onClose: null,
                colnameview: true,
                closeAfterSubmit: true,
                updateAfterCheck: false,
                recreateForm: false
            },
            b.jgrid.col, a || {});
            return this.each(function() {
                var c = this;
                if (c.grid) {
                    var j = typeof a.beforeShowForm ===
                    "function" ? true: false,
                    k = typeof a.afterShowForm === "function" ? true: false,
                    l = typeof a.afterSubmitForm === "function" ? true: false,
                    e = c.p.id,
                    d = "ColTbl_" + e,
                    f = {
                        themodal: "colmod" + e,
                        modalhead: "colhd" + e,
                        modalcontent: "colcnt" + e,
                        scrollelm: d
                    };
                    a.recreateForm === true && b("#" + f.themodal).html() != null && b("#" + f.themodal).remove();
                    if (b("#" + f.themodal).html() != null) {
                        j && a.beforeShowForm(b("#" + d));
                        viewModal("#" + f.themodal, {
                            gbox: "#gbox_" + e,
                            jqm: a.jqModal,
                            jqM: false,
                            modal: a.modal
                        })
                    } else {
                        var g = isNaN(a.dataheight) ? a.dataheight: a.dataheight +
                        "px";
                        g = "<div id='" + d + "' class='formdata' style='width:100%;overflow:auto;position:relative;height:" + g + ";'>";
                        g += "<table class='ColTable' cellspacing='1' cellpading='2' border='0'><tbody>";
                        for (i = 0; i < this.p.colNames.length; i++) c.p.colModel[i].hidedlg || (g += "<tr><td style='white-space: pre;'><input type='checkbox' style='margin-right:5px;' id='col_" + this.p.colModel[i].name + "' class='cbox' value='T' " + (this.p.colModel[i].hidden === false ? "checked": "") + "/><label for='col_" + this.p.colModel[i].name + "'>" + this.p.colNames[i] +
                        (a.colnameview ? " (" + this.p.colModel[i].name + ")": "") + "</label></td></tr>");
                        g += "</tbody></table></div>";
                        g += "<table border='0' class='EditTable' id='" + d + "_2'><tbody><tr style='display:block;height:3px;'><td></td></tr><tr><td class='DataTD ui-widget-content'></td></tr><tr><td class='ColButton EditButton'>" + (!a.updateAfterCheck ? "<a href='javascript:void(0)' id='dData' class='fm-button ui-state-default ui-corner-all'>" + a.bSubmit + "</a>": "") + "&#160;" + ("<a href='javascript:void(0)' id='eData' class='fm-button ui-state-default ui-corner-all'>" +
                        a.bCancel + "</a>") + "</td></tr></tbody></table>";
                        a.gbox = "#gbox_" + e;
                        createModal(f, g, a, "#gview_" + c.p.id, b("#gview_" + c.p.id)[0]);
                        if (a.saveicon[0] == true) b("#dData", "#" + d + "_2").addClass(a.saveicon[1] == "right" ? "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + a.saveicon[2] + "'></span>");
                        if (a.closeicon[0] == true) b("#eData", "#" + d + "_2").addClass(a.closeicon[1] == "right" ? "fm-button-icon-right": "fm-button-icon-left").append("<span class='ui-icon " + a.closeicon[2] + "'></span>");
                        a.updateAfterCheck ?
                        b(":input", "#" + d).click(function() {
                            var h = this.id.substr(4);
                            if (h) {
                                this.checked ? b(c).jqGrid("showCol", h) : b(c).jqGrid("hideCol", h);
                                a.ShrinkToFit === true && b(c).jqGrid("setGridWidth", c.grid.width - 0.0010, true)
                            }
                            return this
                        }) : b("#dData", "#" + d + "_2").click(function() {
                            for (i = 0; i < c.p.colModel.length; i++) if (!c.p.colModel[i].hidedlg) {
                                var h = c.p.colModel[i].name.replace(".", "\\.");
                                if (b("#col_" + h, "#" + d).attr("checked")) {
                                    b(c).jqGrid("showCol", c.p.colModel[i].name);
                                    b("#col_" + h, "#" + d).attr("defaultChecked", true)
                                } else {
                                    b(c).jqGrid("hideCol",
                                    c.p.colModel[i].name);
                                    b("#col_" + h, "#" + d).attr("defaultChecked", "")
                                }
                            }
                            a.ShrinkToFit === true && b(c).jqGrid("setGridWidth", c.grid.width - 0.0010, true);
                            a.closeAfterSubmit && hideModal("#" + f.themodal, {
                                gb: "#gbox_" + e,
                                jqm: a.jqModal,
                                onClose: a.onClose
                            });
                            l && a.afterSubmitForm(b("#" + d));
                            return false
                        });
                        b("#eData", "#" + d + "_2").click(function() {
                            hideModal("#" + f.themodal, {
                                gb: "#gbox_" + e,
                                jqm: a.jqModal,
                                onClose: a.onClose
                            });
                            return false
                        });
                        b("#dData, #eData", "#" + d + "_2").hover(function() {
                            b(this).addClass("ui-state-hover")
                        },
                        function() {
                            b(this).removeClass("ui-state-hover")
                        });
                        j && a.beforeShowForm(b("#" + d));
                        viewModal("#" + f.themodal, {
                            gbox: "#gbox_" + e,
                            jqm: a.jqModal,
                            jqM: true,
                            modal: a.modal
                        })
                    }
                    k && a.afterShowForm(b("#" + d))
                }
            })
        }
    })
})(jQuery);
 (function(c) {
    c.jgrid.extend({
        getPostData: function() {
            var a = this[0];
            if (a.grid) return a.p.postData
        },
        setPostData: function(a) {
            var b = this[0];
            if (b.grid) if (typeof a === "object") b.p.postData = a;
            else alert("Error: cannot add a non-object postData value. postData unchanged.")
        },
        appendPostData: function(a) {
            var b = this[0];
            if (b.grid) typeof a === "object" ? c.extend(b.p.postData, a) : alert("Error: cannot append a non-object postData value. postData unchanged.")
        },
        setPostDataItem: function(a, b) {
            var d = this[0];
            if (d.grid) d.p.postData[a] =
            b
        },
        getPostDataItem: function(a) {
            var b = this[0];
            if (b.grid) return b.p.postData[a]
        },
        removePostDataItem: function(a) {
            var b = this[0];
            b.grid && delete b.p.postData[a]
        },
        getUserData: function() {
            var a = this[0];
            if (a.grid) return a.p.userData
        },
        getUserDataItem: function(a) {
            var b = this[0];
            if (b.grid) return b.p.userData[a]
        }
    })
})(jQuery);
function tableToGrid(o, p) {
    jQuery(o).each(function() {
        if (!this.grid) {
            jQuery(this).width("99%");
            var a = jQuery(this).width(),
            f = jQuery("input[type=checkbox]:first", jQuery(this)),
            l = jQuery("input[type=radio]:first", jQuery(this)),
            b = f.length > 0,
            q = !b && l.length > 0,
            m = b || q;
            f = f.attr("name") || l.attr("name");
            var c = [],
            g = [];
            jQuery("th", jQuery(this)).each(function() {
                if (c.length == 0 && m) {
                    c.push({
                        name: "__selection__",
                        index: "__selection__",
                        width: 0,
                        hidden: true
                    });
                    g.push("__selection__")
                } else {
                    c.push({
                        name: jQuery(this).attr("id") ||
                        jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),
                        index: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),
                        width: jQuery(this).width() || 150
                    });
                    g.push(jQuery(this).html())
                }
            });
            var e = [],
            h = [],
            i = [];
            jQuery("tbody > tr", jQuery(this)).each(function() {
                var j = {},
                d = 0;
                jQuery("td", jQuery(this)).each(function() {
                    if (d == 0 && m) {
                        var k = jQuery("input", jQuery(this)),
                        n = k.attr("value");
                        h.push(n || e.length);
                        k.attr("checked") && i.push(n);
                        j[c[d].name] =
                        k.attr("value")
                    } else j[c[d].name] = jQuery(this).html();
                    d++
                });
                d > 0 && e.push(j)
            });
            jQuery(this).empty();
            jQuery(this).addClass("scroll");
            jQuery(this).jqGrid($.extend({
                datatype: "local",
                width: a,
                colNames: g,
                colModel: c,
                multiselect: b
            },
            p || {}));
            for (a = 0; a < e.length; a++) {
                b = null;
                if (h.length > 0) if ((b = h[a]) && b.replace) b = encodeURIComponent(b).replace(/[.\-%]/g, "_");
                if (b == null) b = a + 1;
                jQuery(this).jqGrid("addRowData", b, e[a])
            }
            for (a = 0; a < i.length; a++) jQuery(this).jqGrid("setSelection", i[a])
        }
    })
};
 (function(a) {
    if (a.browser.msie && a.browser.version == 8) a.expr[":"].hidden = function(b) {
        return b.offsetWidth === 0 || b.offsetHeight === 0 || b.style.display == "none"
    };
    if (a.ui && a.ui.multiselect && a.ui.multiselect.prototype._setSelected) {
        var q = a.ui.multiselect.prototype._setSelected;
        a.ui.multiselect.prototype._setSelected = function(b, i) {
            b = q.call(this, b, i);
            if (i && this.selectedList) {
                var c = this.element;
                this.selectedList.find("li").each(function() {
                    a(this).data("optionLink") && a(this).data("optionLink").remove().appendTo(c)
                })
            }
            return b
        }
    }
    a.jgrid.extend({
        sortableColumns: function(b) {
            return this.each(function() {
                function i() {
                    c.p.disableClick =
                    true
                }
                var c = this,
                g = {
                    tolerance: "pointer",
                    axis: "x",
                    items: ">th:not(:has(#jqgh_cb,#jqgh_rn,#jqgh_subgrid),:hidden)",
                    placeholder: {
                        element: function(e) {
                            return a(document.createElement(e[0].nodeName)).addClass(e[0].className + " ui-sortable-placeholder ui-state-highlight").removeClass("ui-sortable-helper")[0]
                        },
                        update: function(e, h) {
                            h.height(e.currentItem.innerHeight() - parseInt(e.currentItem.css("paddingTop") || 0, 10) - parseInt(e.currentItem.css("paddingBottom") || 0, 10));
                            h.width(e.currentItem.innerWidth() - parseInt(e.currentItem.css("paddingLeft") ||
                            0, 10) - parseInt(e.currentItem.css("paddingRight") || 0, 10))
                        }
                    },
                    update: function(e, h) {
                        e = a(h.item).parent();
                        e = a(">th", e);
                        var j = {};
                        a.each(c.p.colModel,
                        function(m) {
                            j[this.name] = m
                        });
                        var l = [];
                        e.each(function() {
                            var m = a(">div", this).get(0).id.replace(/^jqgh_/, "");
                            m in j && l.push(j[m])
                        });
                        a(c).jqGrid("remapColumns", l, true, true);
                        a.isFunction(c.p.sortable.update) && c.p.sortable.update(l);
                        setTimeout(function() {
                            c.p.disableClick = false
                        },
                        50)
                    }
                };
                if (c.p.sortable.options) a.extend(g, c.p.sortable.options);
                else if (a.isFunction(c.p.sortable)) c.p.sortable =
                {
                    update: c.p.sortable
                };
                if (g.start) {
                    var d = g.start;
                    g.start = function(e, h) {
                        i();
                        d.call(this, e, h)
                    }
                } else g.start = i;
                if (c.p.sortable.exclude) g.items += ":not(" + c.p.sortable.exclude + ")";
                b.sortable(g).data("sortable").floating = true
            })
        },
        columnChooser: function(b) {
            function i(f, k, o) {
                if (k >= 0) {
                    var p = f.slice(),
                    r = p.splice(k);
                    if (k > f.length) k = f.length;
                    p[k] = o;
                    return p.concat(r)
                }
            }
            function c(f, k) {
                if (f) if (typeof f == "string") a.fn[f] && a.fn[f].apply(k, a.makeArray(arguments).slice(2));
                else a.isFunction(f) && f.apply(k, a.makeArray(arguments).slice(2))
            }
            var g = this;
            if (!a("#colchooser_" + g[0].p.id).length) {
                var d = a('<div id="colchooser_' + g[0].p.id + '" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>'),
                e = a("select", d);
                b = a.extend({
                    width: 420,
                    height: 240,
                    classname: null,
                    done: function(f) {
                        f && g.jqGrid("remapColumns", f, true)
                    },
                    msel: "multiselect",
                    dlog: "dialog",
                    dlog_opts: function(f) {
                        var k = {};
                        k[f.bSubmit] = function() {
                            f.apply_perm();
                            f.cleanup(false)
                        };
                        k[f.bCancel] = function() {
                            f.cleanup(true)
                        };
                        return {
                            buttons: k,
                            close: function() {
                                f.cleanup(true)
                            },
                            modal: false,
                            resizable: false,
                            width: f.width + 20
                        }
                    },
                    apply_perm: function() {
                        a("option", e).each(function() {
                            this.selected ? g.jqGrid("showCol", h[this.value].name) : g.jqGrid("hideCol", h[this.value].name)
                        });
                        var f = [];
                        a("option[selected]", e).each(function() {
                            f.push(parseInt(this.value))
                        });
                        a.each(f,
                        function() {
                            delete l[h[parseInt(this)].name]
                        });
                        a.each(l,
                        function() {
                            var k = parseInt(this);
                            f = i(f, k, k)
                        });
                        b.done && b.done.call(g, f)
                    },
                    cleanup: function(f) {
                        c(b.dlog, d, "destroy");
                        c(b.msel, e, "destroy");
                        d.remove();
                        f && b.done && b.done.call(g)
                    },
                    msel_opts: {}
                },
                a.jgrid.col, b || {});
                b.caption && d.attr("title", b.caption);
                if (b.classname) {
                    d.addClass(classname);
                    e.addClass(classname)
                }
                if (b.width) {
                    a(">div", d).css({
                        width: b.width,
                        margin: "0 auto"
                    });
                    e.css("width", b.width)
                }
                if (b.height) {
                    a(">div", d).css("height", b.height);
                    e.css("height", b.height - 10)
                }
                var h = g.jqGrid("getGridParam", "colModel"),
                j = g.jqGrid("getGridParam", "colNames"),
                l = {},
                m = [];
                e.empty();
                a.each(h,
                function(f) {
                    l[this.name] = f;
                    if (this.hidedlg) this.hidden || m.push(f);
                    else e.append("<option value='" + f + "' " +
                    (this.hidden ? "": "selected='selected'") + ">" + j[f] + "</option>")
                });
                var n = a.isFunction(b.dlog_opts) ? b.dlog_opts.call(g, b) : b.dlog_opts;
                c(b.dlog, d, n);
                n = a.isFunction(b.msel_opts) ? b.msel_opts.call(g, b) : b.msel_opts;
                c(b.msel, e, n)
            }
        },
        sortableRows: function(b) {
            return this.each(function() {
                var i = this;
                if (i.grid) if (!i.p.treeGrid) if (a.fn.sortable) {
                    b = a.extend({
                        cursor: "move",
                        axis: "y",
                        items: ".jqgrow"
                    },
                    b || {});
                    if (b.start && a.isFunction(b.start)) {
                        b._start_ = b.start;
                        delete b.start
                    } else b._start_ = false;
                    if (b.update && a.isFunction(b.update)) {
                        b._update_ =
                        b.update;
                        delete b.update
                    } else b._update_ = false;
                    b.start = function(c, g) {
                        a(g.item).css("border-width", "0px");
                        a("td", g.item).each(function(h) {
                            this.style.width = i.grid.cols[h].style.width
                        });
                        if (i.p.subGrid) {
                            var d = a(g.item).attr("id");
                            try {
                                a(i).jqGrid("collapseSubGridRow", d)
                            } catch(e) {}
                        }
                        b._start_ && b._start_.apply(this, [c, g])
                    };
                    b.update = function(c, g) {
                        a(g.item).css("border-width", "");
                        i.updateColumns();
                        i.p.rownumbers === true && a("td.jqgrid-rownum", i.rows).each(function(d) {
                            a(this).html(d + 1)
                        });
                        b._update_ && b._update_.apply(this,
                        [c, g])
                    };
                    a("tbody:first", i).sortable(b)
                }
            })
        },
        gridDnD: function(b) {
            return this.each(function() {
                function i() {
                    var d = a.data(c, "dnd");
                    a("tr.jqgrow:not(.ui-draggable)", c).draggable(a.isFunction(d.drag) ? d.drag.call(a(c), d) : d.drag)
                }
                var c = this;
                if (c.grid) if (!c.p.treeGrid) if (a.fn.draggable && a.fn.droppable) {
                    a("#jqgrid_dnd").html() == null && a("body").append("<table id='jqgrid_dnd' class='ui-jqgrid-dnd'></table>");
                    if (typeof b == "string" && b == "updateDnD" && c.p.jqgdnd == true) i();
                    else {
                        b = a.extend({
                            drag: function(d) {
                                return a.extend({
                                    start: function(e,
                                    h) {
                                        if (c.p.subGrid) {
                                            var j = a(h.helper).attr("id");
                                            try {
                                                a(c).jqGrid("collapseSubGridRow", j)
                                            } catch(l) {}
                                        }
                                        for (j = 0; j < a.data(c, "dnd").connectWith.length; j++) a(a.data(c, "dnd").connectWith[j]).jqGrid("getGridParam", "reccount") == "0" && a(a.data(c, "dnd").connectWith[j]).jqGrid("addRowData", "jqg_empty_row", {});
                                        h.helper.addClass("ui-state-highlight");
                                        a("td", h.helper).each(function(m) {
                                            this.style.width = c.grid.headers[m].width + "px"
                                        });
                                        d.onstart && a.isFunction(d.onstart) && d.onstart.call(a(c), e, h)
                                    },
                                    stop: function(e, h) {
                                        if (h.helper.dropped) {
                                            var j =
                                            a(h.helper).attr("id");
                                            a(c).jqGrid("delRowData", j)
                                        }
                                        for (j = 0; j < a.data(c, "dnd").connectWith.length; j++) a(a.data(c, "dnd").connectWith[j]).jqGrid("delRowData", "jqg_empty_row");
                                        d.onstop && a.isFunction(d.onstop) && d.onstop.call(a(c), e, h)
                                    }
                                },
                                d.drag_opts || {})
                            },
                            drop: function(d) {
                                return a.extend({
                                    accept: function(e) {
                                        var h = a(e).closest("table.ui-jqgrid-btable");
                                        if (a.data(h[0], "dnd") != undefined) {
                                            e = a.data(h[0], "dnd").connectWith;
                                            return a.inArray("#" + this.id, e) != -1 ? true: false
                                        }
                                        return e
                                    },
                                    drop: function(e, h) {
                                        var j = a(h.draggable).attr("id");
                                        j = a("#" + c.id).jqGrid("getRowData", j);
                                        if (!d.dropbyname) {
                                            var l = 0,
                                            m = {},
                                            n,
                                            f = a("#" + this.id).jqGrid("getGridParam", "colModel");
                                            try {
                                                for (key in j) {
                                                    if (f[l]) {
                                                        n = f[l].name;
                                                        m[n] = j[key]
                                                    }
                                                    l++
                                                }
                                                j = m
                                            } catch(k) {}
                                        }
                                        h.helper.dropped = true;
                                        if (d.beforedrop && a.isFunction(d.beforedrop)) {
                                            n = d.beforedrop.call(this, e, h, j, a("#" + c.id), a(this));
                                            if (typeof n != "undefined" && n !== null && typeof n == "object") j = n
                                        }
                                        if (h.helper.dropped) {
                                            var o;
                                            if (d.autoid) if (a.isFunction(d.autoid)) o = d.autoid.call(this, j);
                                            else {
                                                o = Math.ceil(Math.random() * 1E3);
                                                o = d.autoidprefix +
                                                o
                                            }
                                            a("#" + this.id).jqGrid("addRowData", o, j, d.droppos)
                                        }
                                        d.ondrop && a.isFunction(d.ondrop) && d.ondrop.call(this, e, h, j)
                                    }
                                },
                                d.drop_opts || {})
                            },
                            onstart: null,
                            onstop: null,
                            beforedrop: null,
                            ondrop: null,
                            drop_opts: {
                                activeClass: "ui-state-active",
                                hoverClass: "ui-state-hover"
                            },
                            drag_opts: {
                                revert: "invalid",
                                helper: "clone",
                                cursor: "move",
                                appendTo: "#jqgrid_dnd",
                                zIndex: 5E3
                            },
                            dropbyname: false,
                            droppos: "first",
                            autoid: true,
                            autoidprefix: "dnd_"
                        },
                        b || {});
                        if (b.connectWith) {
                            b.connectWith = b.connectWith.split(",");
                            b.connectWith = a.map(b.connectWith,
                            function(d) {
                                return a.trim(d)
                            });
                            a.data(c, "dnd", b);
                            c.p.reccount != "0" && !c.p.jqgdnd && i();
                            c.p.jqgdnd = true;
                            for (var g = 0; g < b.connectWith.length; g++) a(b.connectWith[g]).droppable(a.isFunction(b.drop) ? b.drop.call(a(c), b) : b.drop)
                        }
                    }
                }
            })
        },
        gridResize: function(b) {
            return this.each(function() {
                var i = this;
                if (i.grid && a.fn.resizable) {
                    b = a.extend({},
                    b || {});
                    if (b.alsoResize) {
                        b._alsoResize_ = b.alsoResize;
                        delete b.alsoResize
                    } else b._alsoResize_ = false;
                    if (b.stop && a.isFunction(b.stop)) {
                        b._stop_ = b.stop;
                        delete b.stop
                    } else b._stop_ =
                    false;
                    b.stop = function(c, g) {
                        a(i).jqGrid("setGridParam", {
                            height: a("#gview_" + i.p.id + " .ui-jqgrid-bdiv").height()
                        });
                        a(i).jqGrid("setGridWidth", g.size.width, b.shrinkToFit);
                        b._stop_ && b._stop_.call(i, c, g)
                    };
                    b.alsoResize = b._alsoResize_ ? eval("(" + ("{'#gview_" + i.p.id + " .ui-jqgrid-bdiv':true,'" + b._alsoResize_ + "':true}") + ")") : a(".ui-jqgrid-bdiv", "#gview_" + i.p.id);
                    delete b._alsoResize_;
                    a("#gbox_" + i.p.id).resizable(b)
                }
            })
        }
    })
})(jQuery);