【HTML-JavaScript】jQuery FineUI v3.5.0.1

/*! jQuery FineUI v3.5.0.1 | http://fineui.com/ */
(function () {
    var n = !1,
        t = /xyz/.test(function () {
            xyz
        }) ? /\b_super\b/ : /.*/;
    this.Class = function () {};
    Class.extend = function (i) {
        function u() {
            !n && this.init && this.init.apply(this, arguments)
        }
        var e = this.prototype,
            f, r;
        n = !0;
        f = new this;
        n = !1;
        for (r in i) f[r] = typeof i[r] == "function" && typeof e[r] == "function" && t.test(i[r]) ? function (n, t) {
            return function () {
                var r = this._super,
                    i;
                return this._super = e[n], i = t.apply(this, arguments), this._super = r, i
            }
        }(r, i[r]) : i[r];
        return u.prototype = f, u.prototype.constructor = u, u.extend = arguments.callee, u
    }
})(),
function () {
    var n = {};
    this.tmpl = function t(i, r) {
        var u = /\W/.test(i) ? new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" + i.replace(/[\r\t\n]/g, " ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'") + "');}return p.join('');") : n[i] = n[i] || t(document.getElementById(i).innerHTML);
        return r ? u(r) : u
    }
}(),
function () {
    this.Base64 = {
        _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
        encode: function (n) {
            var f = "",
                e, t, i, s, h, o, r, u = 0;
            for (n = Base64._utf8_encode(n); u < n.length;) e = n.charCodeAt(u++), t = n.charCodeAt(u++), i = n.charCodeAt(u++), s = e >> 2, h = (e & 3) << 4 | t >> 4, o = (t & 15) << 2 | i >> 6, r = i & 63, isNaN(t) ? o = r = 64 : isNaN(i) && (r = 64), f = f + this._keyStr.charAt(s) + this._keyStr.charAt(h) + this._keyStr.charAt(o) + this._keyStr.charAt(r);
            return f
        },
        decode: function (n) {
            var t = "",
                e, o, s, h, u, r, f, i = 0;
            for (n = n.replace(/[^A-Za-z0-9\+\/\=]/g, ""); i < n.length;) h = this._keyStr.indexOf(n.charAt(i++)), u = this._keyStr.indexOf(n.charAt(i++)), r = this._keyStr.indexOf(n.charAt(i++)), f = this._keyStr.indexOf(n.charAt(i++)), e = h << 2 | u >> 4, o = (u & 15) << 4 | r >> 2, s = (r & 3) << 6 | f, t = t + String.fromCharCode(e), r != 64 && (t = t + String.fromCharCode(o)), f != 64 && (t = t + String.fromCharCode(s));
            return Base64._utf8_decode(t)
        },
        _utf8_encode: function (n) {
            var i, r, t;
            for (n = n.replace(/\r\n/g, "\n"), i = "", r = 0; r < n.length; r++) t = n.charCodeAt(r), t < 128 ? i += String.fromCharCode(t) : t > 127 && t < 2048 ? (i += String.fromCharCode(t >> 6 | 192), i += String.fromCharCode(t & 63 | 128)) : (i += String.fromCharCode(t >> 12 | 224), i += String.fromCharCode(t >> 6 & 63 | 128), i += String.fromCharCode(t & 63 | 128));
            return i
        },
        _utf8_decode: function (n) {
            for (var r = "", t = 0, i = c1 = c2 = 0; t < n.length;) i = n.charCodeAt(t), i < 128 ? (r += String.fromCharCode(i), t++) : i > 191 && i < 224 ? (c2 = n.charCodeAt(t + 1), r += String.fromCharCode((i & 31) << 6 | c2 & 63), t += 2) : (c2 = n.charCodeAt(t + 1), c3 = n.charCodeAt(t + 2), r += String.fromCharCode((i & 15) << 12 | (c2 & 63) << 6 | c3 & 63), t += 3);
            return r
        }
    }
}();
typeof JSON != "object" && (JSON = {}),
    function () {
        "use strict";

        function i(n) {
            return n < 10 ? "0" + n : n
        }

        function e(n) {
            return r.lastIndex = 0, r.test(n) ? '"' + n.replace(r, function (n) {
                var t = o[n];
                return typeof t == "string" ? t : "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
            }) + '"' : '"' + n + '"'
        }

        function f(i, r) {
            var s, l, h, a, v = n,
                c, o = r[i];
            o && typeof o == "object" && typeof o.toJSON == "function" && (o = o.toJSON(i));
            typeof t == "function" && (o = t.call(r, i, o));
            switch (typeof o) {
                case "string":
                    return e(o);
                case "number":
                    return isFinite(o) ? String(o) : "null";
                case "boolean":
                case "null":
                    return String(o);
                case "object":
                    if (!o) return "null";
                    if (n += u, c = [], Object.prototype.toString.apply(o) === "[object Array]") {
                        for (a = o.length, s = 0; s < a; s += 1) c[s] = f(s, o) || "null";
                        return h = c.length === 0 ? "[]" : n ? "[\n" + n + c.join(",\n" + n) + "\n" + v + "]" : "[" + c.join(",") + "]", n = v, h
                    }
                    if (t && typeof t == "object")
                        for (a = t.length, s = 0; s < a; s += 1) typeof t[s] == "string" && (l = t[s], h = f(l, o), h && c.push(e(l) + (n ? ": " : ":") + h));
                    else
                        for (l in o) Object.prototype.hasOwnProperty.call(o, l) && (h = f(l, o), h && c.push(e(l) + (n ? ": " : ":") + h));
                    return h = c.length === 0 ? "{}" : n ? "{\n" + n + c.join(",\n" + n) + "\n" + v + "}" : "{" + c.join(",") + "}", n = v, h
            }
        }
        typeof Date.prototype.toJSON != "function" && (Date.prototype.toJSON = function () {
            return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + i(this.getUTCMonth() + 1) + "-" + i(this.getUTCDate()) + "T" + i(this.getUTCHours()) + ":" + i(this.getUTCMinutes()) + ":" + i(this.getUTCSeconds()) + "Z" : null
        }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {
            return this.valueOf()
        });
        var cx, r, n, u, o, t;
        typeof JSON.stringify != "function" && (r = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, o = {
            "\b": "\\b",
            "\t": "\\t",
            "\n": "\\n",
            "\f": "\\f",
            "\r": "\\r",
            '"': '\\"',
            "\\": "\\\\"
        }, JSON.stringify = function (i, r, e) {
            var o;
            if (n = "", u = "", typeof e == "number")
                for (o = 0; o < e; o += 1) u += " ";
            else typeof e == "string" && (u = e);
            if (t = r, r && typeof r != "function" && (typeof r != "object" || typeof r.length != "number")) throw new Error("JSON.stringify");
            return f("", {
                "": i
            })
        });
        typeof JSON.parse != "function" && (cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, JSON.parse = function (text, reviver) {
            function walk(n, t) {
                var r, u, i = n[t];
                if (i && typeof i == "object")
                    for (r in i) Object.prototype.hasOwnProperty.call(i, r) && (u = walk(i, r), u !== undefined ? i[r] = u : delete i[r]);
                return reviver.call(n, t, i)
            }
            var j;
            if (text = String(text), cx.lastIndex = 0, cx.test(text) && (text = text.replace(cx, function (n) {
                    return "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
                })), /^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return j = eval("(" + text + ")"), typeof reviver == "function" ? walk({
                "": j
            }, "") : j;
            throw new SyntaxError("JSON.parse");
        })
    }(),
    function (n) {
        "use strict";

        function v(n) {
            return function (t, r) {
                var u = i.i18n[n].indexOf(r.charAt(0).toUpperCase() + r.substr(1).toLowerCase());
                ~u && (t.month = u)
            }
        }

        function r(n, t) {
            for (n = String(n), t = t || 2; n.length < t;) n = "0" + n;
            return n
        }

        function y(n, t) {
            for (var r = [], i = 0, u = n.length; i < u; i++) r.push(n[i].substr(0, t));
            return r
        }

        function p(n) {
            return n + ["th", "st", "nd", "rd"][n % 10 > 3 ? 0 : (n - n % 10 != 10) * n % 10]
        }
        var i = {},
            o = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,
            s = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
            h = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            e = ["am", "pm"],
            u = /\d\d?/,
            f = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
            c = function () {},
            l, a, t = {
                D: [u, function (n, t) {
                    n.day = t
                }],
                M: [u, function (n, t) {
                    n.month = t - 1
                }],
                YY: [u, function (n, t) {
                    var r = new Date,
                        i = +("" + r.getFullYear()).substr(0, 2);
                    n.year = "" + (t > 68 ? i - 1 : i) + t
                }],
                h: [u, function (n, t) {
                    n.hour = t
                }],
                m: [u, function (n, t) {
                    n.minute = t
                }],
                s: [u, function (n, t) {
                    n.second = t
                }],
                YYYY: [/\d{4}/, function (n, t) {
                    n.year = t
                }],
                S: [/\d/, function (n, t) {
                    n.millisecond = t * 100
                }],
                SS: [/\d{2}/, function (n, t) {
                    n.millisecond = t * 10
                }],
                SSS: [/\d{3}/, function (n, t) {
                    n.millisecond = t
                }],
                d: [u, c],
                ddd: [f, c],
                MMM: [f, v("monthNamesShort")],
                MMMM: [f, v("monthNames")],
                a: [f, function (n, t) {
                    var i = t.toLowerCase();
                    i === e[0] ? n.isPm = !1 : i === e[1] && (n.isPm = !0)
                }],
                ZZ: [/[\+\-]\d\d:?\d\d/, function (n, t) {
                    var i = (t + "").match(/([\+\-]|\d\d)/gi),
                        r;
                    i && (r = +(i[1] * 60) + parseInt(i[2], 10), n.timezoneOffset = i[0] === "+" ? r : -r)
                }]
            };
        t.dd = t.d;
        t.dddd = t.ddd;
        t.Do = t.DD = t.D;
        t.mm = t.m;
        t.hh = t.H = t.HH = t.h;
        t.MM = t.M;
        t.ss = t.s;
        t.A = t.a;
        a = y(h, 3);
        l = y(s, 3);
        i.i18n = {
            dayNamesShort: l,
            dayNames: s,
            monthNamesShort: a,
            monthNames: h,
            amPm: e,
            DoFn: p
        };
        i.masks = {
            "default": "ddd MMM DD YYYY HH:mm:ss",
            shortDate: "M/D/YY",
            mediumDate: "MMM D, YYYY",
            longDate: "MMMM D, YYYY",
            fullDate: "dddd, MMMM D, YYYY",
            shortTime: "HH:mm",
            mediumTime: "HH:mm:ss",
            longTime: "HH:mm:ss.SSS"
        };
        i.format = function (n, t) {
            if (typeof n == "number" && (n = new Date(n)), Object.prototype.toString.call(n) !== "[object Date]" || isNaN(n.getTime())) throw new Error("Invalid Date in fecha.format");
            t = i.masks[t] || t || i.masks["default"];
            var s = n.getDate(),
                f = n.getDay(),
                e = n.getMonth(),
                l = n.getFullYear(),
                u = n.getHours(),
                a = n.getMinutes(),
                v = n.getSeconds(),
                h = n.getMilliseconds(),
                c = n.getTimezoneOffset(),
                y = {
                    D: s,
                    DD: r(s),
                    Do: i.i18n.DoFn(s),
                    d: f,
                    dd: r(f),
                    ddd: i.i18n.dayNamesShort[f],
                    dddd: i.i18n.dayNames[f],
                    M: e + 1,
                    MM: r(e + 1),
                    MMM: i.i18n.monthNamesShort[e],
                    MMMM: i.i18n.monthNames[e],
                    YY: String(l).slice(2),
                    YYYY: l,
                    h: u % 12 || 12,
                    hh: r(u % 12 || 12),
                    H: u,
                    HH: r(u),
                    m: a,
                    mm: r(a),
                    s: v,
                    ss: r(v),
                    S: Math.round(h / 100),
                    SS: r(Math.round(h / 10), 2),
                    SSS: r(h, 3),
                    a: u < 12 ? i.i18n.amPm[0] : i.i18n.amPm[1],
                    A: u < 12 ? i.i18n.amPm[0].toUpperCase() : i.i18n.amPm[1].toUpperCase(),
                    ZZ: (c > 0 ? "-" : "+") + r(Math.floor(Math.abs(c) / 60) * 100 + Math.abs(c) % 60, 4)
                };
            return t.replace(o, function (n) {
                return n in y ? y[n] : n.slice(1, n.length - 1)
            })
        };
        i.parse = function (n, r) {
            var e, u, s, h, f, c;
            if (typeof r != "string") throw new Error("Invalid format in fecha.parse");
            return (r = i.masks[r] || r, n.length > 1e3) ? !1 : (e = !0, u = {}, r.replace(o, function (i) {
                return t[i] && (f = t[i], c = n.search(f[0]), ~c ? n.replace(f[0], function (t) {
                    return f[1](u, t), n = n.substr(c + t.length), t
                }) : e = !1), t[i] ? "" : i.slice(1, i.length - 1)
            }), !e) ? !1 : (s = new Date, u.isPm === !0 && u.hour != null && +u.hour != 12 ? u.hour = +u.hour + 12 : u.isPm === !1 && +u.hour == 12 && (u.hour = 0), u.timezoneOffset != null ? (u.minute = +(u.minute || 0) - +u.timezoneOffset, h = new Date(Date.UTC(u.year || s.getFullYear(), u.month || 0, u.day || 1, u.hour || 0, u.minute || 0, u.second || 0, u.millisecond || 0))) : h = new Date(u.year || s.getFullYear(), u.month || 0, u.day || 1, u.hour || 0, u.minute || 0, u.second || 0, u.millisecond || 0), h)
        };
        typeof module != "undefined" && module.exports ? module.exports = i : typeof define == "function" && define.amd ? define(function () {
            return i
        }) : n.fecha = i
    }(this);
window.F = function (n) {
    return F.isSTR(n) || (n = $(n).attr("id")), F.$LL[n]
};
F.fineui = "3.5.0.1";
F.util = {};
F.ui = function (n) {
    var t = F.$Ph(n.type || "component");
    return new t(n)
};
F.$LL = F.create = F.all = F.ui;
F.pageLoaded = !1;
F.$gd = [];
F.$q = function (n) {
    F.pageLoaded ? window.setTimeout(function () {
        F.$RE(n)
    }, 300) : F.util.$_(n, F.$gd) || F.$gd.push(n)
};
F.$RE = function (n) {
        var t;
        n = $.makeArray(n);
        t = [];
        $.each(n, function (n, i) {
            t.push("<li>" + (n + 1) + ". " + i + "<\/li>")
        });
        var f = 'FineUIMvc(基础版)不支持:<ul class="f-ul">' + t.join("") + "<\/ul>",
            i = location.pathname.split("/"),
            r = i.length;
        if (r >= 2) {
            var u = encodeURIComponent(i[r - 2]),
                e = encodeURIComponent(i[r - 1]),
                o = "";
            o = F.startsWith("Mobile", u) ? "http://fineui.com/demo_mvc/#/demo_mvc/Mobile/?file=" + u + "/" + e : "http://fineui.com/demo_mvc/#/demo_mvc/" + u + "/" + e;
            f += '<div style="font-size:11px;margin-top:15px;padding-top:5px;border-top-style:dashed;border-top-width:1px;"><a href="' + o + '" target="_blank" style="text-decoration:none;">官网示例中打开<\/a>    <a href="http://fineui.com/mvc" target="_blank" style="text-decoration:none;">企业版试用<\/a><\/div>'
        }
        F.alert({
            message: f,
            header: !1,
            model: !0,
            messageIcon: "error"
        })
    },
    function (n, t) {
        function w(n) {
            var i = /(\d{2,4})-(\d\d?)-(\d\d?)/.exec(n),
                t = NaN,
                r;
            return i && (t = new Date(NaN), r = +i[2], t.setFullYear(i[1], r - 1, i[3]), r != t.getMonth() + 1 && t.setTime(NaN)), t
        }

        function r(i, r, u, f) {
            function s() {
                e && e.hide();
                o && o.show();
                f && f.apply(t)
            }
            var e = i,
                o = r;
            (n.isSTR(i) && i && (e = n(i)), n.isSTR(r) && r && (o = n(r)), e && e.fineui && (i = e.$P), o && o.fineui && (r = o.$P), e || o) && (s(), n.$q("F - mobile - animation"))
        }

        function k(t) {
            if (!i.$PO(t, ".f-menu") && !i.$PO(t, ".f-field-dropdownlist-pop") && !i.$PO(t, ".f-field-datepicker-pop")) {
                var r = $(".f-menu:visible");
                r.length && $.each(r, function (r, u) {
                    var e = n(u),
                        o, f;
                    if (!e.$M()) return !0;
                    o = !1;
                    f = e.targetel;
                    f && f.length && i.$PO(t, f) && (o = !0);
                    o || e.hideTopMenu()
                })
            }
        }
        var i = n.util,
            b = Date.parse,
            u, f, e, o, s, h, c, l, a, v, y, p;
        Date.parse = function (t) {
            var i = b(t);
            return n.isNAN(i) && (i = w(t)), i
        };
        u = $.fn.removeClass;
        $.fn.$e = function () {
            var t = this;
            return u.apply(t, arguments), n.$P6 && n.$Pa(t), t
        };
        f = $.fn.addClass;
        $.fn.$d = function () {
            var t = this;
            return f.apply(t, arguments), n.$P6 && n.$Pa(t), t
        };
        e = $.fn.toggleClass;
        $.fn.$P2 = function () {
            var t = this;
            return e.apply(t, arguments), n.$P6 && n.$Pa(t), t
        };
        o = $.fn.hasClass;
        $.fn.$N = function () {
            return o.apply(this, arguments)
        };
        s = $.fn.width;
        $.fn.$C = function () {
            return s.apply(this, arguments)
        };
        h = $.fn.height;
        $.fn.$5 = function () {
            return h.apply(this, arguments)
        };
        c = $.fn.outerWidth;
        $.fn.$4 = function () {
            return c.apply(this, arguments)
        };
        l = $.fn.outerHeight;
        $.fn.$t = function () {
            return l.apply(this, arguments)
        };
        a = $.fn.appendTo;
        $.fn.$g = function () {
            return a.apply(this, arguments)
        };
        v = $.fn.parents;
        $.fn.$gU = function () {
            return v.apply(this, arguments)
        };
        y = $.fn.closest;
        $.fn.$PP = function () {
            return y.apply(this, arguments)
        };
        p = $.fn.find;
        $.fn.$R = function () {
            return p.apply(this, arguments)
        };
        n.$g0 = '<i class="f-tool-icon ui-icon"><\/i>';
        n.$L3 = ".f-cmp.f-field:not(.f-field-innercmp)";
        n.$tN = -3;
        n.$gc = -3;
        n.$gQ = 6;
        n.$g7 = 9;
        n.$rl = 18;
        n.$rG = 12;
        n.$re = 0;
        n.$d9 = function () {
            var t = "fineui_" + n.$re;
            return n.$re++, t
        };
        n.$m = {
            left: 0,
            top: 0
        };
        n.KEY = {
            BACKSPACE: 8,
            COMMA: 188,
            DELETE: 46,
            ENTER: 13,
            ESC: 27,
            LEFT: 37,
            RIGHT: 39,
            UP: 38,
            DOWN: 40,
            SPACE: 32,
            TAB: 9
        };
        n.flip = function (n, t, i) {
            r(n, t, "flip", i, !0)
        };
        n.flipIn = function (t, i) {
            n.flip("", t, i)
        };
        n.flipOut = function (t, i) {
            n.flip(t, "", i)
        };
        n.pop = function (n, t, i) {
            r(n, t, "pop", i)
        };
        n.popIn = function (t, i) {
            n.pop("", t, i)
        };
        n.popOut = function (t, i) {
            n.pop(t, "", i)
        };
        n.fade = function (n, t, i) {
            r(n, t, "fade", i)
        };
        n.fadeIn = function (t, i) {
            n.fade("", t, i)
        };
        n.fadeOut = function (t, i) {
            n.fade(t, "", i)
        };
        n.slide = function (n, t, i, u) {
            r(n, t, "slide-" + i, u)
        };
        n.slideIn = function (t, i, r) {
            n.slide("", t, i, r)
        };
        n.slideOut = function (t, i, r) {
            n.slide(t, "", i, r)
        };
        n.slideLeft = function (n, t, i) {
            r(n, t, "slide-left", i)
        };
        n.slideLeftIn = function (t, i) {
            n.slideLeft("", t, i)
        };
        n.slideLeftOut = function (t, i) {
            n.slideLeft(t, "", i)
        };
        n.slideRight = function (n, t, i) {
            r(n, t, "slide-right", i)
        };
        n.slideRightIn = function (t, i) {
            n.slideRight("", t, i)
        };
        n.slideRightOut = function (t, i) {
            n.slideRight(t, "", i)
        };
        n.slideUp = function (n, t, i) {
            r(n, t, "slide-up", i)
        };
        n.slideUpIn = function (t, i) {
            n.slideUp("", t, i)
        };
        n.slideUpOut = function (t, i) {
            n.slideUp(t, "", i)
        };
        n.slideDown = function (n, t, i) {
            r(n, t, "slide-down", i)
        };
        n.slideDownIn = function (t, i) {
            n.slideDown("", t, i)
        };
        n.slideDownOut = function (t, i) {
            n.slideDown(t, "", i)
        };
        n.windowResize = function () {
            i.$PQ.apply(t, arguments)
        };
        n.noLayout = function (i) {
            n.$rZ = !0;
            i.apply(t);
            n.$rZ = !1
        };
        n.noEvent = function (i) {
            n.$gk = !0;
            i.apply(t);
            n.$gk = !1
        };
        n.noValidate = function (i) {
            n.$Lp = !0;
            i.apply(t);
            n.$Lp = !1
        };
        n.noAnimation = function (i) {
            n.$rS = !0;
            i.apply(t);
            n.$rS = !1
        };
        n.target = function () {
            return i.$dx.apply(t, arguments)
        };
        n.alert = function () {
            i.alert.apply(t, arguments)
        };
        n.confirm = function () {
            i.confirm.apply(t, arguments)
        };
        n.prompt = function () {
            i.prompt.apply(t, arguments)
        };
        n.notify = function () {
            i.notify.apply(t, arguments)
        };
        n.cookie = function () {
            return i.$e6.apply(t, arguments)
        };
        n.removeCookie = function () {
            i.$eS.apply(t, arguments)
        };
        n.addCSS = function () {
            i.$tZ.apply(t, arguments)
        };
        n.addJS = function () {
            i.$tI.apply(t, arguments)
        };
        n.htmlEncode = function () {
            return i.$df.apply(t, arguments)
        };
        n.htmlDecode = function () {
            return i.$t7.apply(t, arguments)
        };
        n.urlEncode = function (n) {
            return encodeURIComponent(n)
        };
        n.urlDecode = function (n) {
            return decodeURIComponent(n)
        };
        n.getActiveWindow = function () {
            return n.wnd.getActiveWindow.apply(t, arguments)
        };
        n.getGhostWindow = function () {
            return n.wnd.$gK.apply(t, arguments)
        };
        n.getHidden = function () {
            return i.$40.apply(t, arguments)
        };
        n.setHidden = function () {
            return i.$4M.apply(t, arguments)
        };
        n.removeHidden = function () {
            return i.$ez.apply(t, arguments)
        };
        n.load = function () {
            i.load.apply(t, arguments)
        };
        n.ready = function () {
            i.ready.apply(t, arguments)
        };
        n.ajaxReady = n.ajaxready = function () {
            i.ajaxReady.apply(t, arguments)
        };
        n.beforeAjax = n.beforeajax = function () {
            i.beforeAjax.apply(t, arguments)
        };
        n.beforeAjaxSuccess = n.beforeajaxsuccess = function () {
            i.beforeAjaxSuccess.apply(t, arguments)
        };
        n.beforeAjaxError = n.beforeajaxerror = function () {
            i.beforeAjaxError.apply(t, arguments)
        };
        n.beforeUnload = n.beforeunload = function () {
            i.beforeUnload.apply(t, arguments)
        };
        n.stopPropagation = function () {
            var n = arguments.callee.caller.arguments[0] || t.event;
            n.stopPropagation()
        };
        n.toggle = function (n, t) {
            $(n).$P2(t)
        };
        n.fieldValue = function (n) {
            return i.$eD(n)
        };
        n.isFUN = function (n) {
            return i.isFUN(n)
        };
        n.isARR = function (n) {
            return i.isARR(n)
        };
        n.isBOO = function (n) {
            return i.isBOO(n)
        };
        n.isNUM = function (n) {
            return i.isNUM(n)
        };
        n.isNAN = function (n) {
            return i.isNAN(n)
        };
        n.isSTR = function (n) {
            return i.isSTR(n)
        };
        n.isUND = function (n) {
            return i.isUND(n)
        };
        n.isDAT = function (n) {
            return i.isDAT(n)
        };
        n.isPOBJ = function (n) {
            return i.isPOBJ(n)
        };
        n.isEOBJ = function (n) {
            return i.isEOBJ(n)
        };
        n.isEMP = function (n) {
            return i.isEMP(n)
        };
        n.isELE = function (n) {
            return i.isELE(n)
        };
        n.isIE8 = function () {
            return n.$P6
        };
        n.isIE89 = function () {
            return n.$P69
        };
        n.isIE9 = function () {
            return n.$gy9
        };
        n.isIE = function () {
            return n.$gy
        };
        n.isChrome = function () {
            return n.$gm
        };
        n.isWebKit = function () {
            return n.$gA
        };
        n.isMobile = function () {
            return n.$j
        };
        n.validateForms = function () {
            return i.$gT.apply(t, arguments)
        };
        n.validateForm = function () {
            return arguments[0] = [arguments[0]], i.$gT.apply(t, arguments)
        };
        n.formatString = function () {
            return i.$Ps.apply(t, arguments)
        };
        n.reset = function () {
            i.$e$.apply(t, arguments)
        };
        n.parseDate = function () {
            return i.$Pv.apply(t, arguments)
        };
        n.formatDate = function () {
            return i.$PZ.apply(t, arguments)
        };
        n.parseJSON = function (n) {
            return JSON.parse(n)
        };
        n.toJSON = function (n) {
            return JSON.stringify(n)
        };
        n.addMainTab = function () {
            i.addMainTab.apply(t, arguments)
        };
        n.initTreeTabStrip = function () {
            i.initTreeTabStrip.apply(t, arguments)
        };
        n.startsWith = function () {
            return i.$gI.apply(t, arguments)
        };
        n.endsWith = function () {
            return i.$PU.apply(t, arguments)
        };
        n.queryString = function () {
            return i.$ec.apply(t, arguments)
        };
        n.hasHScrollbar = function (n) {
            return i.$gE(n)
        };
        n.hasVScrollbar = function (n) {
            return i.$gZ(n)
        };
        n.leftPadding = function () {
            return i.$PT.apply(t, arguments)
        };
        n.addCommas = function (n) {
            n += "";
            for (var i = n.split("."), t = i[0], u = i.length > 1 ? "." + i[1] : "", r = /(\d+)(\d{3})/; r.test(t);) t = t.replace(r, "$1,$2");
            return t + u
        };
        n.removeCommas = function (n) {
            return n += "", n.replace(/,/g, "")
        };
        n.canAccess = function () {
            return i.$Pw.apply(t, arguments)
        };
        n.appendFormNode = function () {
            i.$eK.apply(t, arguments)
        };
        n.hideScrollbar = function () {
            i.$eA.apply(t, arguments)
        };
        n.applyStyles = function () {
            i.$eE.apply(t, arguments)
        };
        n.replaceNode = function () {
            i.$eT.apply(t, arguments)
        };
        n.br = function (n) {
            n = n || 1;
            for (var t = 0; t < n; t++) $("<br>").$g("body")
        };
        n.p = function (n) {
            $("<p>").html(n).$g("body")
        };
        n.div = function (n) {
            $("<div>").html(n).$g("body")
        };
        n.getType = function (t) {
            return n.$Ph(t)
        };
        n.$Ph = function (t) {
            var r, i;
            for (r in n)
                if (n.hasOwnProperty(r) && (i = n[r], i && typeof i == "function" && i.prototype && i.prototype.type && i.prototype.type === t)) return i;
            return null
        };
        n.$rD = function (n) {
            $.extend(fecha.i18n, {
                dayNamesShort: n.dayNamesShort,
                dayNames: n.dayNames,
                monthNamesShort: n.monthNamesShort,
                monthNames: n.monthNames,
                amPm: n.amPm
            })
        };
        n.lang = function (t, i) {
            $.extend(n.$Ph(t).prototype, i);
            t === "calendar" && n.$rD(i)
        };
        n.log = function (i, r) {
            if (t.console && t.console.log) {
                (!n.logBaseTime || (new Date).getTime() - n.logBaseTime > 1e4) && (n.logBaseTime = (new Date).getTime());
                r instanceof n.Base && (i = i + ", " + r.type + ", " + r.id);
                var u = (((new Date).getTime() - n.logBaseTime) / 1e3).toFixed(2);
                console.log(u + " " + i)
            }
        };
        n.$Pa = function (t) {
            function i(n) {
                var t = (new Date).getTime(),
                    i = n.data("iepseudeo-time");
                i && t - i < 600 || (n.data("iepseudeo-time", t), n.toggleClass("f-ie-pseudeo"))
            }
            n.$P6 && (t.is(".ui-icon") ? i(t) : t.$R(".ui-icon").each(function () {
                i($(this))
            }))
        };
        n.defer = function (n, i, r) {
            return r ? t.setTimeout(function () {
                n.apply(r)
            }, i) : t.setTimeout(n, i)
        };
        n.mouseInside = function (t) {
            var i = !1;
            return t.each(function () {
                var r = $(this).offset();
                if (n.$m.left > r.left && n.$m.left < r.left + t.$4() && n.$m.top > r.top && n.$m.top < r.top + t.$t()) return i = !0, !1
            }), i
        };
        n.showQtip = function (i) {
            function e(i) {
                if (n.mouseInside(i) && i.attr("data-qtip")) {
                    var f = $(t).$C(),
                        e = $(t).$5(),
                        o = n.qtipEl.$4(!0),
                        s = n.qtipEl.$t(!0),
                        r = n.$m.left + 10,
                        u = n.$m.top + 20;
                    r + o > f && (r = f - o);
                    u + s > e && (u = e - s);
                    n.qtipEl.css({
                        top: u,
                        left: r
                    });
                    n.qtipEl.show();
                    n.$Pa(n.qtipEl)
                }
            }
            var o = i.attr("data-qtip"),
                u = i.attr("data-qtitle") || "",
                s = i.attr("data-qhide") || "auto",
                f = i.attr("data-qclass") || "",
                r;
            n.qtipEl || (n.qtipEl = $("<div>", {
                "class": "f-qtip"
            }).$g("body"));
            n.qtipEl.html("");
            n.qtipEl.data("targetel", i);
            n.qtipEl.css("left", 0);
            r = $("<div>", {
                "class": "f-qtip-inner ui-corner-all ui-widget ui-widget-content"
            }).$g(n.qtipEl);
            f && r.$d(f);
            u && $("<div>", {
                "class": "f-qtip-title",
                html: u
            }).$g(r);
            $("<div>", {
                "class": "f-qtip-content",
                html: o
            }).$g(r);
            t.clearTimeout(n.$gi);
            n.$gi = t.setTimeout(function () {
                e(i);
                s !== "auto" && (n.$td = !0)
            }, 500)
        };
        n.hideQtip = function (i) {
            n.qtipEl && (i && i.length && !n.qtipEl.data("targetel").is(i) || (n.$gi && (t.clearTimeout(n.$gi), n.$gi = null), n.qtipEl.hide()))
        };
        n.$gx = 1e4;
        n.wndManager = new(Class.extend({
            $dY: n.$gx,
            $dl: undefined,
            all: [],
            getZIndex: function () {
                return this.$dY
            },
            getNextZIndex: function () {
                var n = this;
                return n.$dY += 30, n.$dY
            },
            addActive: function (t) {
                var r = this,
                    u;
                if (r.$dl === t) return !1;
                t.messageType !== "notify" && (u = r.getNextZIndex(), t.$P.css("z-index", u), r.$dl = t);
                i.$_(t, r.all) || r.all.push(t);
                t.modal && n.showMask(t)
            },
            removeActive: function (t) {
                var r = this,
                    u = r.getSorted(),
                    i;
                u.length && u[0] === t && (t.$P.css("z-index", n.$gx), r.$dl = undefined, r.$dY = n.$gx, u.length >= 2 && (i = u[1], i.$M() && (i.modal && n.showMask(i), r.$dl = i, r.$dY = i.$Ly())))
            },
            getActive: function () {
                return this.$dl
            },
            remove: function (n) {
                var t = this,
                    r = i.$PI(n, t.all);
                r >= 0 && i.$P5(r, t.all)
            },
            getSorted: function (n) {
                var t = this,
                    i = t.all.sort(function (n, t) {
                        return t.$Ly() - n.$Ly()
                    });
                return $.grep(i, function (t) {
                    var i = !0;
                    return n && (i = t.$M()), t.messageType !== "notify" && i
                })
            }
        }));
        n.showMask = function (t) {
            var r = n.maskEl,
                f, e, u;
            if (!r) {
                r = $("<div>", {
                    "class": "f-mask ui-widget ui-widget-content"
                }).$g("body");
                i.$PQ(function () {
                    r.is(":visible") && n.showMask()
                }, "resize.F.maskEl");
                r.on("click", function () {
                    var n = r.data("targetwnd");
                    n && n.hideOnMaskClick && !n.el.$N("f-animation") && n.hide()
                })
            }
            $(document).$C();
            f = $("body").$4();
            e = $(document).$5();
            r.css({
                width: f,
                height: e
            });
            t && (u = i.$x(t.$P, "z-index"), u && r.css("z-index", u - 1));
            r.data("targetwnd", t);
            r.show();
            n.maskEl = r
        };
        n.$dA = null;
        n.$te = function (t) {
            if (t = t || $("body"), !n.$j && (n.$td && (n.mouseInside(n.qtipEl) || (n.qtipEl.hide(), n.$td = !1)), n.qtipEl && n.qtipEl.is(":visible"))) {
                var i = n.qtipEl.data("targetel");
                i.length && !i.attr("data-qtip") && n.qtipEl.hide()
            }
            k(t)
        };
        $(t).load(function () {
            n.$P6 && (n.$tN = -1, n.$gc = -1, n.$gQ = 2, n.$g7 = 2);
            i.$LA();
            n.$P6 && t.setInterval(function () {
                $("iframe").each(function () {
                    var t = $(this),
                        n, r;
                    if (t.is(":visible") && t.$N("f-iframe")) {
                        if (n = t[0].contentWindow, !i.$Pw(n)) return !0;
                        n && n.$ && (r = n.$("body"), r.$C() < 5 && r.$5() < 5 && t.hide().show())
                    }
                })
            }, 1200)
        });
        $(function () {
            var r, f, u;
            if (n.$ev = !!t.addEventListener, n.$Lh = !!("placeholder" in document.createElement("input")), n.$P6 = !n.$ev, n.$P69 = !n.$Lh, n.$gy9 = n.$P69 && !n.$P6, r = t.navigator.userAgent, n.$gm = /chrome/i.test(r), n.$Lk = /ip(hone|od|ad)/i.test(r), n.$e3 = /iphone/i.test(r), n.$ew = /ipad/i.test(r), n.$gA = /applewebkit/i.test(r), n.$j = /Mobi/.test(r), n.$gy = !/opera/i.test(r) && (/msie/i.test(r) || /trident/i.test(r)), f = $("#f_ui_icon"), f.length || (f = $(n.$g0).attr("id", "f_ui_icon").$g("body")), n.$dA = t.setInterval(function () {
                    if (f && f.length) {
                        var n = f.$C();
                        n === 6 && i.$LA()
                    }
                }, 100), u = $("body"), u.$d("f-body ui-widget ui-widget-content"), n.$gA && u.$d("f-webkit"), n.$Lk && (u.css("cursor", "pointer"), u.$d("f-ios"), n.$e3 ? u.$d("f-iphone") : n.$ew && u.$d("f-ipad")), n.$P6 && u.$d("f-ie8"), n.$gy && u.$d("f-ie"), !n.$j) {
                $(document).mousemove(function (t) {
                    n.$m.left = t.pageX;
                    n.$m.top = t.pageY
                });
                $(document).on("mouseenter mouseleave click", "[data-qtip]", function (t) {
                    var i = $(this),
                        r = i.attr("data-qtip");
                    r && (n.$td || (t.type === "mouseenter" ? n.showQtip(i) : (t.type === "mouseleave" || t.type === "click") && n.hideQtip(i)))
                })
            }
            $(document).mousedown(function (r) {
                for (var f = $(r.target), u = t; u != u.parent;) {
                    if (u = u.parent, !i.$Pw(u)) break;
                    u.F && typeof u.F.$te == "function" && u.F.$te()
                }
                n.$te(f)
            });
            $(document).keydown(function (t) {
                var r = $(t.target),
                    i;
                if (t.keyCode == n.KEY.ESC) i = n.wndManager.getActive(), i && i.closable && (i.$s("messagebox") ? i.triggerNO() : i.$r("esc", [t]) !== !1 && (i.onEsc && i.onEsc.apply(i), i.$guButtonESC()));
                else if ((t.keyCode == n.KEY.ENTER || t.keyCode == n.KEY.SPACE) && r.is("a")) {
                    r.click();
                    return
                }
            })
        });
        n.loadingColors = {
            "default": ["fff", "444"],
            metro_blue: ["fff", "444"],
            metro_dark_blue: ["fff", "444"],
            metro_gray: ["fff", "444"],
            metro_green: ["fff", "444"],
            metro_orange: ["fff", "444"],
            flick: ["fff", "444"],
            blitzer: ["fff", "444"],
            smoothness: ["fff", "444"],
            hot_sneaks: ["fff", "2c4359"],
            black_tie: ["f9f9f9", "222"],
            cupertino: ["f2f5f7", "362b36"],
            dot_luv: ["111111", "d9d9d9"],
            eggplant: ["3d3644", "fff"],
            dark_hive: ["000", "fff"],
            trontastic: ["000", "fff"],
            ui_darkness: ["000", "fff"],
            excite_bike: ["eee", "222"],
            ui_lightness: ["eee", "222"],
            humanity: ["f4f0ec", "1e1b1d"],
            le_frog: ["285c00", "fff"],
            mint_choc: ["201913", "fff"],
            overcast: ["c9c9c9", "000"],
            pepper_grinder: ["eceadf", "1f1f1f"],
            redmond: ["fcfdfd", "222"],
            start: ["fcfdfd", "222"],
            south_street: ["f5f3e5", "312e25"],
            sunny: ["f7f1e0", "383838"],
            swanky_purse: ["443113", "efec9f"],
            vader: ["121212", "eee"]
        };
        n.$LH = '<i class="f-smtree-icon"><\/i>';
        n.$R7 = '<i class="f-smtree-icon ui-icon collapse"><\/i>'
    }(F, window),
    function (n, t) {
        function h(n, t) {
            s[n] ? s[n].push(t) : s[n] = [t]
        }

        function f(n, r) {
            var u = s[n],
                f = !0;
            return i(r) && (r = []), u && $.each(u, function (n, i) {
                i.apply(t, r) === !1 && (f = !1)
            }), f
        }

        function vt(n) {
            return s[n]
        }

        function yt(n) {
            h("load", n)
        }

        function pt() {
            if (!d) {
                d = !0;
                n.$dA && (t.clearInterval(n.$dA), n.$dA = null);
                var i = $("#f_ui_icon");
                i.length && i.remove();
                f("load");
                g();
                wt();
                n.pageLoaded = !0;
                n.$gd.length && n.$RE(n.$gd)
            }
        }

        function wt() {
            var n = $("#f_loading_mask"),
                t = $("#f_loading");
            t.hide();
            n.hide()
        }

        function bt(n) {
            h("ready", n)
        }

        function g() {
            f("ready")
        }

        function kt(n) {
            h("ajaxready", n)
        }

        function dt() {
            f("ajaxready")
        }

        function gt(n) {
            h("beforeajax", n)
        }

        function ni() {
            return f("beforeajax", arguments)
        }

        function ti(n) {
            h("beforeajaxsuccess", n)
        }

        function ii() {
            return f("beforeajaxsuccess", arguments)
        }

        function ri() {
            n.$q("F.beforeAjaxError")
        }

        function ui() {
            return f("beforeajaxerror", arguments)
        }

        function fi() {
            n.$q("F.beforeUnload")
        }

        function nt(t, i, r) {
            var u, f;
            if (n.enableShim && t) {
                u = {
                    top: n.$tN,
                    left: n.$gc,
                    width: n.$gQ,
                    height: n.$g7
                };
                r && $.extend(u, r);
                var e = i.position(),
                    o = i.$4(!0),
                    s = i.$t(!0);
                t.css({
                    top: e.top + u.top,
                    left: e.left + u.left,
                    width: o + u.width,
                    height: s + u.height
                });
                f = i.css("z-index");
                f && t.css("z-index", f)
            }
        }

        function ei(n) {
            var t = $("#f_ajax_loading");
            t.length || (t = $("<div>", {
                id: "f_ajax_loading",
                "class": "f-ajax-loading"
            }).$g("body"));
            n || (n = u.loading);
            t.html(n);
            t.css({
                left: ($(document).$C() - t.$4(!0)) / 2
            }).show()
        }

        function oi() {
            $("#f_ajax_loading").hide()
        }

        function si(t, i) {
            var f = $("#f_ajax_loading_mask_mask"),
                e = $("#f_ajax_loading_mask"),
                r, o;
            e.length || (f = $("<div>", {
                id: "f_ajax_loading_mask_mask",
                "class": "f-loading-mask ui-widget ui-widget-content"
            }).$g("body"), e = $("<div>", {
                id: "f_ajax_loading_mask",
                "class": "f-loading",
                html: '<div class="f-loading-img"><img src="' + n.loadingImage + '"/><\/div><div class="f-loading-text"><\/div>'
            }).$g("body"), f.css("opacity", .65));
            n.enableShim && (r = $("#f_ajax_loading_shim"), r.length || (r = $("<iframe>", {
                "class": "f-shim",
                id: "f_ajax_loading_shim"
            }), r.insertBefore(f)));
            o = e.$R(".f-loading-text");
            t ? (i || (i = u.loading), o.html(i)) : o.html("");
            f.show();
            e.show();
            n.enableShim && (r.css("display", "block"), nt(r, f, {
                top: 0,
                left: 0,
                width: 0,
                height: 0
            }))
        }

        function hi() {
            $("#f_ajax_loading_mask_mask").hide();
            $("#f_ajax_loading_mask").hide();
            n.enableShim && $("#f_ajax_loading_shim").hide()
        }

        function e(n) {
            try {
                n.window;
                n.F
            } catch (t) {
                return !1
            }
            return n.window && n.F && n.F.fineui ? !0 : !1
        }

        function ci(n) {
            return n ? n.replace(/<[^>]*>/g, "") : ""
        }

        function li() {
            var t = $.makeArray(arguments),
                s = t[0],
                h, n, f, l;
            if ((r(s) && (/^_self|_parent|_top$/.test(t[0]) || c(0, "_self", t), s = {
                    target: t[0],
                    message: t[1],
                    title: t[2],
                    messageIcon: t[3]
                }), h = o(s.target), e(h)) && (n = $.extend({
                    positionX: "right",
                    positionY: "bottom",
                    positionSideSpace: 5
                }, s, {
                    messageType: "notify",
                    fixedPosition: !0
                }), i(n.title) && (n.title = u.notifyTitle), i(n.bodyPadding) && (n.bodyPadding = 10), i(n.modal) && (n.modal = !1), i(n.displayMilliseconds) && (n.displayMilliseconds = 5e3), f = n.hide, f && delete n.hide, l = new h.F.MessageBox(n), f)) l.on("hide", function () {
                r(f) ? new Function(f)() : f.apply(h)
            })
        }

        function ai() {
            function h(t) {
                var r = n[t];
                i(r) || (n.promptConfig[t] = r, delete n[t])
            }
            var t = $.makeArray(arguments),
                l = t[0],
                a, n, f, s;
            (r(l) && (/^_self|_parent|_top$/.test(t[0]) || c(0, "_self", t), l = {
                target: t[0],
                message: t[1],
                title: t[2],
                messageIcon: t[3],
                ok: t[4],
                cancel: t[5],
                multiLine: t[6],
                multiLineHeight: t[7]
            }), a = o(l.target), e(a)) && (n = $.extend({}, l, {
                messageType: "prompt"
            }), i(n.title) && (n.title = u.promptTitle), n.promptConfig = {}, h("multiLine"), h("multiLineHeight"), h("defaultValue"), h("required"), h("inputType"), f = n.ok, s = n.cancel, (f || s) && (n.handler = function (n, t) {
                var u = this,
                    i = u.getPromptValue();
                t === "cancel" ? s && (r(s) ? new Function(s)(i) : s.apply(u, [i])) : f && (r(f) ? new Function(f)(i) : f.apply(u, [i]))
            }, delete n.ok, delete n.cancel), new a.F.MessageBox(n))
        }

        function vi() {
            var n = $.makeArray(arguments),
                s = n[0],
                h, t, f;
            (r(s) && (/^_self|_parent|_top$/.test(n[0]) || c(0, "_self", n), s = {
                target: n[0],
                message: n[1],
                title: n[2],
                messageIcon: n[3],
                ok: n[4]
            }), h = o(s.target), e(h)) && (t = $.extend({}, s, {
                messageType: "alert"
            }), i(t.title) && (t.title = u.alertTitle), f = t.ok, f && (t.handler = function (n, t) {
                var i = this;
                t === "ok" && (r(f) ? new Function(f)() : f.apply(i))
            }, delete t.ok), new h.F.MessageBox(t))
        }

        function yi() {
            var t = $.makeArray(arguments),
                h = t[0],
                l, n, f, s;
            (r(h) && (/^_self|_parent|_top$/.test(t[0]) || c(0, "_self", t), h = {
                target: t[0],
                message: t[1],
                title: t[2],
                messageIcon: t[3],
                ok: t[4],
                cancel: t[5]
            }), l = o(h.target), e(l)) && (n = $.extend({}, h, {
                messageType: "confirm"
            }), i(n.title) && (n.title = u.confirmTitle), i(n.messageIcon) && (n.messageIcon = "question"), f = n.ok, s = n.cancel, (f || s) && (n.handler = function (n, t) {
                var i = this;
                t === "cancel" ? s && (r(s) ? new Function(s)() : s.apply(i)) : f && (r(f) ? new Function(f)() : f.apply(i))
            }, delete n.ok, delete n.cancel), new l.F.MessageBox(n))
        }

        function pi(n, t) {
            $("#" + n).replaceWith($(t))
        }

        function wi(n) {
            $(n).$g(document.forms[0] || document.body)
        }

        function bi(n, t, r) {
            var u = $("#" + n);
            u.length ? u.val(t) : (i(r) && (r = document.forms[0] || document.body), $("<input>", {
                type: "hidden",
                id: n,
                name: n,
                value: t
            }).$g(r))
        }

        function ki(n) {
            var t = $("#" + n);
            return t.length ? t.val() : ""
        }

        function di(n) {
            $("#" + n).remove()
        }

        function gi(i) {
            var f = this,
                r = !1,
                u;
            return u = i && i.length ? i.$R("iframe") : $("iframe"), $.each(u, function (i, u) {
                var h = u.contentWindow,
                    f, o, s, l, a, c, v;
                if (!e(h)) return !0;
                if (f = h.F, f.formChangeConfirm && f.util.$rt())
                    if (t.confirm(n.wnd.formChangeConfirmMsg)) f.beforeunloadCheck = !1;
                    else return r = !0, !1;
                if (o = f.util.$4o("beforeunload"), o)
                    for (s = 0, l = o.length; s < l; s++)
                        if (a = o[s], c = a.apply(h), c)
                            if (t.confirm(c)) f.beforeunloadCheck = !1;
                            else return r = !0, !1;
                return v = f.util.$rL(), v ? (f.beforeunloadCheck = !0, r = !0, !1) : void 0
            }), r
        }

        function nr() {
            var n = !1;
            return ht(function (t) {
                if (t.$s("container") && t.isDirty()) return n = !0, !1
            }), n
        }

        function tr(t, r, f, e) {
            var a = o(r),
                c = !0,
                h = null,
                l, s;
            return (i(f) && (f = !0), i(e) && (e = !1), $.each(t, function (t, i) {
                var u = n(i),
                    r;
                u && (r = u.isValid(), r[0] || (c = !1, h == null && (h = r[1])))
            }), !c) ? (f ? (l = '<div class="f-messagebox-errorfield">' + h.fieldLabel + '<\/div><div class="f-messagebox-errormsg">' + h.$L.attr("data-errormsg") + "<\/div>", s = {
                message: l,
                messageIcon: "information",
                ok: function () {
                    h.focus(!0, 200)
                }
            }, e ? (s.messageIcon = "", s.messageAlign = "center", s.buttonPlain = !0, s.header = !1) : s.title = u.formAlertTitle, a.F.alert(s)) : h.focus(!0, 200), !1) : !0
        }

        function ir(n, t) {
            var i = l(n, t);
            i === -1 && t.push(n)
        }

        function rr(n, t) {
            var i = l(n, t);
            i >= 0 && t.splice(i, 1)
        }

        function c(n, t, i) {
            tt(t) ? Array.prototype.splice.apply(i, $.merge([n, 0], t)) : i.splice(n, 0, t)
        }

        function ur(n, t) {
            t.splice(n, 1)
        }

        function l(n, t) {
            return $.inArray(n, t)
        }

        function fr(n, t) {
            return $.inArray(n, t) >= 0
        }

        function er(t) {
            typeof t == "string" && (t = n(t));
            var i = t.getValue();
            return t.$s("label") && (i = i.replace(/<\/?span[^>]*>/ig, "")), i
        }

        function o(n) {
            var i = t;
            return n === "_self" ? i = t : n === "_parent" ? i = parent : n === "_top" && (i = top), i
        }

        function or(n) {
            for (var i = [], t = 0; t < n.length; t++) i[t] = new Image, i[t].src = n[t]
        }

        function sr(n, t, i) {
            var f = $("#" + n),
                r, u, e;
            f.length && f.remove();
            u = document.getElementsByTagName("head")[0];
            i ? (r = document.createElement("link"), r.setAttribute("rel", "stylesheet"), r.setAttribute("id", n), r.setAttribute("href", t), u.appendChild(r)) : (r = document.createElement("style"), r.setAttribute("id", n), u.appendChild(r), r.styleSheet ? r.styleSheet.cssText = t : (e = document.createTextNode(t), r.appendChild(e)))
        }

        function hr(n, t, i) {
            var u = $("#" + n),
                r, f, e;
            u.length && u.remove();
            i ? (r = document.createElement("script"), r.setAttribute("id", n), r.setAttribute("src", t)) : (r = document.createElement("script"), r.setAttribute("id", n), f = document.createTextNode(t), r.appendChild(f));
            e = document.getElementsByTagName("head")[0];
            e.appendChild(r)
        }

        function cr(n) {
            return $("<div>").text(n).html()
        }

        function lr(n) {
            return $("<div>").html(n).text()
        }

        function ar(n) {
            var i = {},
                t, r;
            if (n && n.length)
                for (t = 0, r = n.length; t < r; t++) i[n[t]] = !0;
            return i
        }

        function vr(n, t, i) {
            var s = u.$gq(n),
                h = u.$gq(t),
                e, r, f, o;
            if (n.length)
                for (r = 0, f = n.length; r < f; r++) e = n[r], h[e] || i.apply(this, [e, !1]);
            if (t.length)
                for (r = 0, f = t.length; r < f; r++) o = t[r], s[o] || i.apply(this, [o, !0])
        }

        function yr() {
            var n = t.document.body;
            n.scroll ? n.scroll = "no" : n.style.overflow = "hidden"
        }

        function pr(n, t) {
            $.each(t, function (t, r) {
                i(n[t]) && (n[t] = r)
            })
        }

        function wr(n, t, r) {
            return r ? $.each(t, function (t, r) {
                i(r) || l(r, n) !== -1 || n.push(r)
            }) : $.merge(n, t), n
        }

        function br(n) {
            return $.isFunction(n)
        }

        function tt(n) {
            return $.isArray(n)
        }

        function it(n) {
            return $.type(n) === "boolean"
        }

        function a(n) {
            return $.type(n) === "number" && !isNaN(n)
        }

        function v(n) {
            return $.type(n) === "number" && isNaN(n)
        }

        function r(n) {
            return $.type(n) === "string"
        }

        function i(n) {
            return $.type(n) === "undefined" || n === null
        }

        function rt(n) {
            return $.type(n) === "date"
        }

        function ut(n) {
            return $.isPlainObject(n)
        }

        function kr(n) {
            return $.isEmptyObject(n)
        }

        function dr(n) {
            return i(n) || n === ""
        }

        function gr(n) {
            return $.type(n) === "object" && (n instanceof jQuery || n instanceof Element)
        }

        function nu() {
            for (var i, t = arguments[0], n = 0; n < arguments.length - 1; n++) i = new RegExp("\\{" + n + "\\}", "gm"), t = t.replace(i, arguments[n + 1]);
            return t
        }

        function tu(n) {
            return et("%", n) ? parseFloat(n) * .01 : n
        }

        function ft(n, t) {
            return t.indexOf(n) === 0
        }

        function et(n, t) {
            var i = !1,
                r = t.lastIndexOf(n);
            return r >= 0 && (i = r + n.length === t.length), i
        }

        function ot(n) {
            for (var u = [], i, f = $.trim(n + "").split(" "), t = 0, r = f.length; t < r; t++)(i = $.trim(f[t]), i) && u.push(i);
            return u
        }

        function iu(n, i) {
            for (var r = 0; r < n; r++) i.apply(t, [r])
        }

        function y(n, t) {
            for (var i = "", r = 0; r < t; r++) i += n;
            return i
        }

        function ru(n, t, r) {
            return (i(t) && (t = 2), i(r) && (r = "0"), n += "", n.length < t) ? y(r, t - n.length) + n : n
        }

        function uu(n) {
            for (var r = [], i, u, e = ot(n), t = 0, f = e.length; t < f; t++) i = e[t], /^\-?\d+px$/.exec(i) ? r.push(i) : (u = parseInt(i, 10), v(u) || r.push(u + "px"));
            return r.join(" ")
        }

        function fu(n) {
            return n.$4(!0) - n.$C()
        }

        function eu(n) {
            return n.$t(!0) - n.$5()
        }

        function ou(n) {
            return n.$4(!0) - n.innerWidth()
        }

        function su(n) {
            return n.$t(!0) - n.innerHeight()
        }

        function hu(n) {
            return n.$4(!0) - n.$4()
        }

        function cu(n) {
            return n.$t(!0) - n.$t()
        }

        function lu() {
            if (p === -1) {
                var n = $("<p>").css({
                    width: 100,
                    height: 100,
                    "overflow-y": "scroll"
                }).$g("body");
                p = n[0].offsetWidth - n[0].clientWidth;
                n.remove()
            }
            return p
        }

        function w(n, i) {
            if (r(i) && (i = {
                    id: arguments[1],
                    iframeUrl: arguments[2],
                    title: arguments[3],
                    icon: arguments[4],
                    createToolbar: arguments[5],
                    refreshWhenExist: arguments[6],
                    iconFont: arguments[7]
                }), i.id = n.id + "_" + i.id, i = $.extend({
                    iframe: !0,
                    closable: !0
                }, i), i.createToolbar) {
                var u = i.createToolbar.apply(t, [i]);
                u && (i.tbar = u)
            }
            n.addTab(i)
        }

        function au(r, u, f, e, o, s, h, c, l) {
            function p(t) {
                t.on("nodeclick", function (r, s) {
                    var a = t.$D(s),
                        v;
                    if (a.href) {
                        if (!i(c) && (v = u.id + "_" + a.id, u.getVisibleTabCount() >= c && !u.getTab(v))) {
                            n.alert(l);
                            r.preventDefault();
                            return
                        }
                        e && (h.location.hash = "#" + a.href);
                        w(u, {
                            iframeUrl: a.href,
                            icon: a.icon,
                            iconFont: a.iconFont,
                            title: a.text,
                            id: a.id,
                            createToolbar: f,
                            refreshWhenExist: o
                        });
                        r.preventDefault()
                    }
                })
            }
            var v, a;
            f && ut(f) ? (c = f.maxTabCount, l = f.maxTabMessage, h = f.hashWindow, s = f.refreshWhenTabChange, o = f.refreshWhenExist, e = f.updateHash, f = f.createToolbar) : it(f) && (l = c, c = h, h = s, s = o, o = e, e = f, f = undefined);
            h || (h = t);
            i(s) && (s = !1);
            i(o) && (o = !1);
            i(e) && (e = !0);
            r.$s("accordion") ? $.each(r.items, function (n, t) {
                var i = t.items[0];
                i && i.$s("tree") && p(i)
            }) : r.$s("tree") && p(r);
            u.on("tabchange", function (n, t) {
                var r = "#" + (t.getIFrameUrl() || ""),
                    i, u;
                r !== h.location.hash && (e && (h.location.hash = r), s && (i = t.getIFrameWindow(), i && (u = i.location.href, /^http(s?):\/\//.test(u) && i.location.reload())))
            });
            if (v = h.location.hash.substr(1), v) {
                a = !1;

                function y(n, t) {
                    var r, e, i;
                    if (!a && t.children && t.children.length)
                        for (r = 0, e = t.children.length; r < e; r++)
                            if (i = t.children[r], i.leaf) {
                                if (i.href === v) {
                                    n.expandNodePath(i);
                                    n.selectNode(i);
                                    w(u, {
                                        iframeUrl: i.href,
                                        icon: i.icon,
                                        iconFont: i.iconFont,
                                        title: i.text,
                                        id: i.id,
                                        createToolbar: f
                                    });
                                    a = !0;
                                    return
                                }
                            } else y(n, i)
                }
                r.$s("accordion") ? $.each(r.items, function (n, t) {
                    var i = t.items[0];
                    if (i && i.$s("tree") && (y(i, i.getRootNode()), a)) return t.expand(), !1
                }) : r.$s("tree") && y(r, r.getRootNode())
            }
        }

        function st(n, t, r) {
            var e, u, f;
            if (i(t)) return e = document.cookie ? document.cookie.split("; ") : [], u = n ? "" : {}, $.each(e, function (t, i) {
                var r = i.split("="),
                    f = decodeURIComponent($.trim(r[0])),
                    e = decodeURIComponent($.trim(r[1]));
                if (n) {
                    if (n === f) return u = e, !1
                } else u[f] = e
            }), u;
            r = $.extend({
                path: "/"
            }, r || {});
            a(r.expires) && (f = new Date, f.setTime(f.getTime() + r.expires * 864e5));
            document.cookie = [encodeURIComponent(n), "=", encodeURIComponent(t), r.expires ? "; expires=" + f.toUTCString() : "", r.path ? "; path=" + r.path : "", r.domain ? "; domain=" + r.domain : "", r.secure ? "; secure" : ""].join("")
        }

        function vu(n, t) {
            t = $.extend({
                path: "/",
                expires: -1
            }, t || {});
            st(n, "", t)
        }

        function yu(n, t, i) {
            var r = n.$R(t);
            r.length ? r.replaceWith(i) : i.$g(n)
        }

        function pu(n, t, i) {
            var r = n.$R(t);
            r.length ? r.replaceWith(i) : i.prependTo(n)
        }

        function wu(n) {
            var t = n[0];
            return t.scrollWidth > t.clientWidth
        }

        function bu(n) {
            var t = n[0];
            return t.scrollHeight > t.clientHeight
        }

        function ku(n) {
            var t = n[0].getBoundingClientRect();
            return t.width ? t.width : t.right - t.left
        }

        function du(n) {
            var t = n[0].getBoundingClientRect();
            return t.height ? t.height : t.bottom - t.top
        }

        function gu(n) {
            var i = $(n),
                t, r;
            return b(i), t = $("<div>").$g(i), r = ku(t), t.remove(), Math.floor(r)
        }

        function nf(t) {
            var r = $(t),
                i, u;
            return b(r), i = $("<div>").css({
                position: "absolute",
                height: "100%",
                width: 0,
                top: 0,
                left: 0
            }), n.$gy && i.css({
                width: "100%"
            }), i.$g(r), u = du(i), i.remove(), u -= k(r, "padding-top"), u -= k(r, "padding-bottom"), Math.floor(u)
        }

        function b(t) {
            if (n.$gm) {
                var i = t.css("overflow");
                i === "auto" && t.scrollLeft() == 0 && t.scrollTop() == 0 && (t.css("overflow", "hidden"), t[0].scrollWidth, t.css("overflow", "auto"))
            }
        }

        function tf(i, r) {
            var u = null;
            r = r || "resize";
            $(t).on(r, function () {
                n.$Lv || (u && (t.clearTimeout(u), u = null), u = t.setTimeout(function () {
                    i.apply(t)
                }, 500))
            })
        }

        function rf(n) {
            for (var i = n.attributes, r = {}, t = 0; t < i.length; t++) i[t].specified && !/^jQuery\d+/.test(i[t].name) && (r[i[t].name] = i[t].value);
            return r
        }

        function uf(t) {
            r(t) ? n(t).reset() : ht(function (n) {
                n.$s("container") && n.reset()
            })
        }

        function ff(n, t) {
            return !!n.closest(t).length
        }

        function ef(n, t) {
            return n.closest(t)
        }

        function ht(t) {
            $.each(n.$LL, function (n, i) {
                if (i.$s && i.renderTo) {
                    var r = t.apply(i, [i]);
                    if (r === !1) return !1
                }
            })
        }

        function of (n, t) {
            var i = {},
                r = t.split(";");
            $.each(r, function (n, t) {
                var r = $.trim(t).split(":");
                r.length === 2 && (i[$.trim(r[0])] = $.trim(r[1]))
            });
            $(n).css(i)
        }

        function sf(n, r) {
            var u = t.location.search,
                f, o, e;
            return i(r) || (u = r, f = r.lastIndexOf("?"), f >= 0 && (u = r.substr(f))), n = n.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"), o = new RegExp("[\\?&]" + n + "=([^&#]*)"), e = o.exec(u), e == null ? "" : decodeURIComponent(e[1].replace(/\+/g, " "))
        }

        function hf(n, t, i) {
            var u = n[0],
                f = n.val().length,
                r;
            a(t) || (t = f);
            a(i) || (i = f);
            u.setSelectionRange ? u.setSelectionRange(t, i) : u.createTextRange && (r = u.createTextRange(), r.collapse(!0), r.moveEnd("character", i), r.moveStart("character", t), r.select())
        }

        function k(n, t) {
            var i = parseInt(n.css(t), 10);
            return v(i) && (i = 0), i
        }

        function ct(n) {
            return n && r(n) && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(n) && (n = new Date(n)), n
        }

        function cf(n, t) {
            var i, r;
            if (t = ct(t), rt(t)) return t;
            if (!t) return undefined;
            if (n) {
                n.indexOf("d") === -1 && (n += "-dd", t += "-01");
                try {
                    i = fecha.parse(t, lt(n))
                } catch (u) {}
            }
            return i || $.each(["YYYY-MM-DD", "YYYYMMDD", "YYYY/MM/DD", "YYYY-M-D", "YYYYMD", "YYYY/M/D", "YY-MM-DD", "YYMMDD", "YY/MM/DD", "YY-M-D", "YYMD", "YY/M/D"], function (n, r) {
                try {
                    i = fecha.parse(t, r)
                } catch (u) {}
                if (i) return !1
            }), i || (r = Date.parse(t), v(r) || (i = new Date(r))), i
        }

        function lf(n, t) {
            var i = "",
                r;
            try {
                r = !1;
                n.indexOf("y") === -1 && (n = "yyyy-" + n, r = !0);
                i = fecha.format(t, lt(n));
                r && (i = i.substr(5))
            } catch (u) {}
            return i
        }

        function lt(n) {
            return n.indexOf("yy") >= 0 && (n = n.replace(/yyyy/g, "YYYY").replace(/yy/g, "YY")), n.indexOf("d") >= 0 && (n = af(n)), n
        }

        function af(n) {
            function f() {
                t && (t == 1 ? i.push("D") : t == 2 ? i.push("DD") : i.push(y("d", t)), t = 0)
            }
            for (var u, i = [], t = 0, r = 0, e = n.length; r < e; r++)
                if (u = n.charAt(r), u === "d") {
                    t++;
                    continue
                } else f(), i.push(u);
            return f(), i.join("")
        }

        function vf(n) {
            return n += "", n.replace(/[^-A-Za-z0-9_]/ig, "_")
        }

        function yf(n) {
            return n += "", n.replace(/"/g, """)
        }

        function pf(n, t, r, u) {
            function f(n) {
                return n += "", n.replace(/"/g, '\\"')
            }
            return i(u) ? $() : n.$R(t + "[" + r + '="' + f(u) + '"]')
        }

        function at(n, t, i) {
            var r = {};
            return n && $.each(n, function (n, u) {
                if (n = n.toLowerCase(), t && !ft("data-", n) && (n = "data-" + n), i && n === i) return !0;
                r[n] = u
            }), r
        }

        function wf(n, t, i, r) {
            var u = at(t, i, r);
            n.attr(u)
        }

        function bf(t, i, r, u) {
            var s = n.Component.prototype,
                h = s.$Ll,
                c = s.$PV,
                l = s.$4h,
                f, e, a = t.find(i),
                o = 0;
            return a.each(function () {
                var n = $(this);
                n.$e(h + " " + c + " " + l);
                n.is(":visible") && (f || (f = n), e = n, o++)
            }), u && o > 1 && t.$d("f-hasmany"), f && f.length && f.$d(h), e && e.length && e.$d(c), r && o > 2 && a.each(function () {
                var n = $(this);
                n.is(":visible") && (n.$N(h) || n.$N(c) || n.$d(l))
            }), o
        }

        function kf(n) {
            return JSON.stringify(n)
        }

        function df(t) {
            var i = [];
            return t.$R(n.$L3).each(function () {
                var t = n($(this).attr("id"));
                i.push(t)
            }), i
        }
        var u = n.util,
            s = {},
            d = !1,
            p = -1;
        $.extend(u, {
            alertTitle: "Alert dialog",
            confirmTitle: "Confirm dialog",
            promptTitle: "Please enter value",
            notifyTitle: "Notify",
            formAlertTitle: "Form Invalid",
            loading: "Loading...",
            $gb: vf,
            $4g: ei,
            $eV: oi,
            $4P: hi,
            $4L: si,
            load: yt,
            ready: bt,
            ajaxReady: kt,
            beforeAjax: gt,
            beforeAjaxSuccess: ti,
            beforeAjaxError: ri,
            beforeUnload: fi,
            $4o: vt,
            $LA: pt,
            $NQReady: g,
            $4R: ni,
            $4b: ii,
            $4e: ui,
            $44: dt,
            notify: li,
            prompt: ai,
            alert: vi,
            confirm: yi,
            isFUN: br,
            isARR: tt,
            isBOO: it,
            isNUM: a,
            isNAN: v,
            isSTR: r,
            isUND: i,
            isDAT: rt,
            isELE: gr,
            isEMP: dr,
            isPOBJ: ut,
            isEOBJ: kr,
            addMainTab: w,
            initTreeTabStrip: au,
            $tc: ci,
            $eT: pi,
            $eK: wi,
            $4M: bi,
            $40: ki,
            $ez: di,
            $rL: gi,
            $rt: nr,
            $gT: tr,
            $eU: ir,
            $eq: rr,
            $P5: ur,
            $W: c,
            $PI: l,
            $_: fr,
            $eD: er,
            $dx: o,
            $Bb: or,
            $tZ: sr,
            $tI: hr,
            $df: cr,
            $t7: lr,
            $gq: ar,
            $eA: yr,
            $Ls: pr,
            $Pf: wr,
            $Ps: nu,
            $e9: tu,
            $gI: ft,
            $PU: et,
            $et: ot,
            $dQ: iu,
            $L$: y,
            $PT: ru,
            $eE: of ,
            $Pb: uu,
            $dz: fu,
            $LG: eu,
            $BP: ou,
            $er: su,
            $rU: hu,
            $ek: cu,
            $PS: yu,
            $gt: pu,
            $P4: gu,
            $gB: nf,
            $PQ: tf,
            $ep: rf,
            $gE: wu,
            $gZ: bu,
            $e6: st,
            $eS: vu,
            $e$: uf,
            $PO: ff,
            $N$: ef,
            $e8: hf,
            $x: k,
            $Pv: cf,
            $PZ: lf,
            $eC: ct,
            $ec: sf,
            $Pw: e,
            $ei: b,
            $ro: lu,
            $t8: pf,
            $PM: yf,
            $NF: wf,
            $dG: at,
            $Le: bf,
            $8: kf,
            $LO: nt,
            $eM: vr,
            $eh: df
        })
    }(F, window),
    function (n) {
        var r = n.isUND,
            i = n.isSTR,
            u = n.isNUM,
            t = n.util;
        n.format = {
            capitalize: function (n) {
                return n.charAt(0).toUpperCase() + n.substr(1)
            },
            date: function (n, r) {
                return i(n) && (n = new Date(n)), t.$PZ(r, n)
            },
            dateRenderer: function (t) {
                return function (i) {
                    return n.format.date(i, t)
                }
            },
            ellipsis: function (n, t) {
                return n && n.length > t && (n = n.substr(0, t - 3) + "..."), n
            },
            ellipsisRenderer: function (n) {
                return function (i) {
                    return t.ellipsis(i, n)
                }
            },
            fileSize: function (n) {
                var t = 1024,
                    i = t * 1024,
                    r = i * 1024,
                    u;
                return n || (n = 0), u = "", n < t ? n === 1 ? "1 byte" : n + " bytes" : n < i ? (n / t).toFixed(2) + " KB" : n < r ? (n / i).toFixed(2) + " MB" : (n / r).toFixed(2) + " GB"
            },
            htmlEncode: function (n) {
                return t.$df(n)
            },
            htmlDecode: function (n) {
                return t.$t7(n)
            },
            lowercase: function (n) {
                return (n + "").toLowerCase()
            },
            uppercase: function (n) {
                return (n + "").toUpperCase()
            },
            nl2br: function (n) {
                return n && (n = n.replace(/\r?\n/g, "<br/>")), n
            },
            stripScripts: function (n) {
                return n && (n = n.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "")), n
            },
            stripTags: function (n) {
                return n && (n = n.replace(/<\/?[^>]+>/ig, "")), n
            },
            trim: function (n) {
                return $.trim(n)
            }
        }
    }(F),
    function (n) {
        n.ajax = {
            networkErrorMsg: "Network error, please refresh the page and try again!",
            timeoutErrorMsg: "Request timeout, please refresh the page and try again!",
            errorMsg: "Error! {0} ({1})",
            errorWindow: null
        }
    }(F, window),
    function (n) {
        function r(i) {
            var r = new n.Window(i);
            r.on("beforeclose", function () {
                if (t.$Pw(i.$dE)) {
                    var n = i.$ty;
                    if (n.$Ld("beforeclose")) return n.$r("beforeclose")
                }
            });
            r.on("close", function () {
                if (t.$Pw(i.$dE)) {
                    var n = i.$ty;
                    n.$Ld("close") && n.$r("close")
                }
            });
            n[i.id] = r
        }

        function u(n) {
            if (n.$dT()) {
                var i = t.$dx(n.target);
                n = i.F[n.$gv]
            }
            return n
        }

        function f(n) {
            function u(n) {
                return n && n.$s("window") && !n.$s("messagebox")
            }

            function f(n) {
                if (!t.$Pw(n)) return !1;
                var i = n.F.wndManager.getActive();
                return i && !u(i) && (i = null, $.each(n.F.wndManager.getSorted(!0), function (n, t) {
                    if (u(t)) return i = t, !1
                })), i
            }
            var r = parent.window,
                i = f(r);
            return i && (i.$dE && !n && (r = i.$dE, i = i.$ty), i.window = r), i
        }

        function i(i, r) {
            var u = n.getActiveWindow(),
                f;
            u && (t.$Pw(u.window) ? u[i].call(u, r) : (f = n.getActiveWindow(!0), f.hide()))
        }
        var e = n.isUND,
            o = n.isSTR,
            s = n.isNUM,
            t = n.util;
        n.wnd = {
            closeButtonTooltip: "Close this window",
            formChangeConfirmMsg: "Current form has been modified, abandon changes?",
            $eX: r,
            $gK: u,
            getActiveWindow: f
        };
        n.activeWnd = n.activeWindow = {
            hidePostBack: function () {
                i("hidePostBack")
            },
            hide: function () {
                i("hide")
            },
            hideRefresh: function () {
                i("hideRefresh")
            },
            hideExecuteScript: function (n) {
                i("hideExecuteScript", n)
            }
        }
    }(F, window),
    function (n, t) {
        function a() {
            var r = arguments[0],
                u = arguments[1],
                i, t;
            return r.$dT() ? (i = [], arguments.length > 2 && (i = $.grep(arguments, function (n, t) {
                return t > 1
            })), t = n.wnd.$gK(r), t && t[u].apply(t, i), !0) : !1
        }
        var u = n.isUND,
            e = n.isSTR,
            f = n.isNUM,
            w = n.isNAN,
            v = n.isARR,
            c = n.isELE,
            h = n.isEMP,
            b = n.isDAT,
            g = n.isBOO,
            p = n.isFUN,
            s = n.isPOBJ,
            d = n.isEOBJ,
            i = n.util,
            nt = n.isIE,
            y = n.isIE8,
            l = n.isIE89,
            k = n.isChrome,
            r = r,
            o = function (n) {
                return u(n) || n instanceof $.Event
            };
        n.Base = Class.extend({
            id: "",
            fineui: "3.5.0.1",
            type: "base",
            init: function (n) {
                var t = this;
                u(n) && (n = {});
                u(n.items) && (n.items = []);
                t.options = n;
                $.extend(t, n);
                t.$e_()
            },
            $s: function (n) {
                return this.isType(n)
            },
            isType: function (t) {
                var r = this,
                    i;
                return t === r.type ? !0 : (i = n.$Ph(t), i && r instanceof i ? !0 : !1)
            },
            $e_: function () {
                var t = this;
                t.id || (t.id = n.$d9());
                n.$LL[t.id] = this
            }
        });
        n.$rV = {
            getActiveItem: function () {
                var t = this,
                    n;
                return $.each(t.items, function (t, i) {
                    if (i.isActived()) return n = i, !1
                }), n
            },
            getActiveItemIndex: function () {
                var n = this,
                    t = n.getActiveItem();
                return t ? i.$PI(t, n.items) : -1
            },
            getActiveItemId: function () {
                var t = this,
                    n = t.getActiveItem();
                return n ? n.id : ""
            },
            nextValidItemIndex: function (n, t) {
                var i = this,
                    r, u = i.items.length;
                for (n++; n < u;) {
                    if (r = i.items[n], r.$M() && r.isEnabled()) break;
                    n++
                }
                return n = n >= u ? -1 : n, t && n === -1 && (n = i.firstValidItemIndex()), n
            },
            prevValidItemIndex: function (n) {
                var t;
                for (n--; n >= 0;) {
                    if (t = this.items[n], t.$M() && t.isEnabled()) break;
                    n--
                }
                return n
            },
            firstValidItemIndex: function () {
                var n = -1;
                return $.each(this.items, function (t, i) {
                    if (i.$M() && i.isEnabled()) return n = t, !1
                }), n
            },
            nearValidItemIndex: function (n) {
                var t = this.nextValidItemIndex(n);
                return t < 0 && (t = this.prevValidItemIndex(n)), t
            }
        };
        n.Component = n.Base.extend({
            renderTo: "",
            cls: "",
            disabled: !1,
            ccls: "",
            $B: function (n) {
                return this.ccls + "-" + n
            },
            $L6: "ui-state-default",
            $0: "ui-state-disabled",
            $h: "ui-state-hover",
            $S: "ui-state-active",
            $P1: "ui-state-focus",
            $PC: "ui-state-error",
            $Pe: "ui-widget-header",
            $Y: "ui-widget-content",
            $Pm: "ui-widget-content ui-widget",
            $p: "f-checked",
            $Lo: "f-noselect",
            $LC: "f-expanded",
            $Ll: "f-first",
            $PV: "f-last",
            $4h: "f-middle",
            tooltip: "",
            tooltipType: "qtip",
            tooltipTitle: "",
            tooltipHideMode: "auto",
            hidden: !1,
            hideMode: "display",
            displayRule: "",
            width: "auto",
            height: "auto",
            autoScroll: !1,
            inited: !1,
            domed: !1,
            rendered: !1,
            style: r,
            attrs: r,
            attrSelector: "",
            defaultItemType: "component",
            type: "component",
            init: function (n) {
                var t = this,
                    i;
                t._super(n);
                t.renderTo && (t.doInit(), i = $(t.renderTo), t.$dU(i), t.$y(), t.$b())
            },
            $y: function () {
                var n = this;
                n.afterAddToPage()
            },
            afterAddToPage: function () {
                this.domed = !0
            },
            doInit: function () {
                var n = this;
                n.inited || (n.inited = !0, n.$eO && $.each(n.$eO, function (t, i) {
                    n.on(t, i)
                }), n.listeners && $.each(n.listeners, function (t, i) {
                    n.on(t, i)
                }), n.initEl(), n.afterInitEl())
            },
            initEl: function () {
                var n = this;
                n.$P = n.el = $()
            },
            afterInitEl: function () {
                var t = this,
                    i, r;
                t.$P && (t.$P.$d("f-cmp"), t.$tT(), i = t.$LW(), t.autoScroll ? i.css("overflow", "auto") : (t.autoScrollX && i.css("overflow-x", "auto"), t.autoScrollY && i.css("overflow-y", "auto")), n.$Lk && (t.autoScroll || t.autoScrollX || t.autoScrollY) && i.css("-webkit-overflow-scrolling", "touch"), t.cls && t.$P.$d(t.cls), t.bls && t.$P.$d(t.bls), t.$P.$d("ui-widget"), t.style && (e(t.style) ? (r = t.$P.attr("style"), r ? t.$P.attr("style", r + " " + t.style) : t.$P.attr("style", t.style)) : t.$P.css(t.style)), t.tooltip && (t.tooltipType === "title" ? t.$P.prop("title", t.tooltip) : (t.$P.attr("data-qtip", t.tooltip), t.tooltipTitle && t.$P.attr("data-qtitle", t.tooltipTitle), t.tooltipHideMode != "auto" && t.$P.attr("data-qhide", t.tooltipHideMode))), t.attrs && t.setAttrs(t.attrs), t.disabled && t.afterInitElDisabled(), t.afterInitElHidden())
            },
            $tT: function () {
                var n = this;
                h(n.margin) || n.$P.css("margin", i.$Pb(n.margin));
                h(n.marginLeft) || n.$P.css("margin-left", i.$Pb(n.marginLeft));
                h(n.marginTop) || n.$P.css("margin-top", i.$Pb(n.marginTop));
                h(n.marginRight) || n.$P.css("margin-right", i.$Pb(n.marginRight));
                h(n.marginBottom) || n.$P.css("margin-bottom", i.$Pb(n.marginBottom))
            },
            setAttrs: function (n) {
                var t = this;
                t.attrs = n;
                t.$Lx().attr(n)
            },
            setAttributes: function () {
                this.setAttrs.apply(t, arguments)
            },
            setAttr: function (n, t) {
                var i = this;
                $.extend(i.attrs, {
                    key: t
                });
                i.$Lx().attr(n, t)
            },
            setAttribute: function () {
                this.setAttr.apply(this, arguments)
            },
            getAttr: function (n) {
                return this.$Lx().attr(n)
            },
            getAttribute: function () {
                return this.getAttr.apply(this, arguments)
            },
            getAttrEl: function () {
                return this.$Lx()
            },
            $Lx: function () {
                var t = this,
                    n;
                return t.attrSelector && (n = t.$P.$R(t.attrSelector)), n && n.length || (n = t.$P), n
            },
            afterInitElDisabled: function () {
                var n = this;
                n.disable()
            },
            afterInitElHidden: function () {
                var n = this;
                n.hidden ? n.__hideEl() : n.__showEl()
            },
            remove: function () {
                function f() {
                    delete n.$LL[r.id];
                    r.$P.remove()
                }
                var r = this,
                    t = r.parent,
                    u;
                t && t.items ? (u = i.$PI(r, t.items), u >= 0 && (f(), i.$P5(u, t.items), t.$b(!0))) : f()
            },
            $dU: function (n, t, i) {
                var e = this,
                    h, o, s;
                if (n.fineui || (i = t, t = n, n = r), u(n) && u(i)) {
                    e.$P.$g(t);
                    return
                }
                n && (h = n.$gh);
                o = h ? t.children("." + h) : t.children();
                o.length ? f(i) ? (s = o.eq(i), e.$P.insertBefore(s)) : (s = o.last(), e.$P.insertAfter(s)) : e.$P.$g(t)
            },
            $LW: function () {
                return this.$P
            },
            $gM: function () {
                var i = this,
                    t = n.wndManager.getZIndex();
                return i.$d6(function (n) {
                    var i = n.$Ly();
                    if (i) return i > t && (t = i), !1
                }), t
            },
            $Ly: function () {
                var n = this,
                    t = 0,
                    r;
                return n.$J && (r = n.$P.css("position"), i.$_(r, ["absolute", "fixed", "relative"]) && (t = parseInt(n.$P.css("z-index"), 10))), t
            },
            $d6: function (n) {
                for (var t = this, i; t;)
                    if (t.parent) {
                        if (t = t.parent, n && (i = n.apply(t, [t]), i === !1)) break
                    } else break;
                return t
            },
            getTopParent: function () {
                return this.$d6.apply(this, arguments)
            },
            $Lu: function () {
                var n = "";
                return u(this.layout) || (n = e(this.layout) ? this.layout : this.layout.type), n
            },
            $NV: function (t) {
                function u() {
                    n.$LR || (n.$LR = {
                        id: i.id,
                        layouted: {}
                    })
                }

                function f() {
                    n.$LR && n.$LR.id === i.id && (n.$LR = r)
                }
                var i = this;
                u();
                t.apply(i);
                f()
            },
            doLayout: function (t) {
                var r = this,
                    i;
                if (!n.$rZ) {
                    if (i = r, t && (i = r.$d6(function (n) {
                            if (n && f(n.width) && f(n.height) && !n.$s("accordionpane")) return !1
                        })), n.$LR) {
                        if (n.$LR.layouted[i.id]) return;
                        n.$LR.layouted[i.id] = !0
                    }
                    i.hidden || (i.__doLayout(), i.$r("layout"), i.$ex())
                }
            },
            $b: function (n) {
                this.doLayout(n)
            },
            $ex: function () {
                var n = this;
                n.rendered || (n.$J = n.rendered = !0, n.$r("render"), n.afterRender())
            },
            afterRender: function () {},
            getWidth: function () {
                return this.$P.$4(!0)
            },
            getHeight: function () {
                return this.$P.$t(!0)
            },
            setHeight: function (n) {
                var t = this;
                t.height = n;
                t.$J && t.$b(!0)
            },
            setWidth: function (n) {
                var t = this;
                t.width = n;
                t.$J && t.$b(!0)
            },
            setSize: function (n, t) {
                var i = this;
                i.width = n;
                i.height = t;
                i.$J && i.$b(!0)
            },
            __doLayout: function () {
                var n = this;
                f(n.width) && n.$P.$4(n.width, !0);
                f(n.height) && n.$P.$t(n.height, !0)
            },
            on: function (n, t) {
                var i = this,
                    r;
                u(i.$3) && (i.$3 = {});
                r = n.split(" ");
                $.each(r, function (n, r) {
                    if (r) {
                        var u = i.$3[r];
                        u && u.length ? u.push(t) : i.$3[r] = [t]
                    }
                })
            },
            trigger: function (t, r) {
                var f, s, e, o;
                if (!n.$gk) return f = this, u(f.$3) && (f.$3 = {}), e = f.$3[t], e && e.length && (r = $.makeArray(r), o = $.Event(), u(r[0]) ? r[0] = o : f.$e1(r[0]) || i.$W(0, o, r), $.each(e, function (n, t) {
                    t.apply(f, r) === !1 && (s = !1)
                })), s
            },
            $e1: function (n) {
                return n instanceof $.Event
            },
            $Ld: function () {
                return this.hasEvent.apply(this, arguments)
            },
            hasEvent: function (n) {
                var t = this;
                return t.$3 && t.$3[n] && t.$3[n].length ? !0 : !1
            },
            $r: function () {
                return this.trigger.apply(this, arguments)
            },
            getTooltip: function () {
                var n = this;
                return n.tooltipType === "title" ? n.$P.prop("title") : n.$P.attr("data-qtip")
            },
            setTooltip: function (n) {
                var t = this;
                t.tooltip = n;
                n && (t.tooltipType === "title" ? t.$P.prop("title", n) : t.$P.attr("data-qtip", n))
            },
            $M: function () {
                return this.isVisible()
            },
            isVisible: function () {
                var n = this,
                    t;
                return n.$J ? (t = n.$P, t.css("visibility") !== "hidden" && t.css("display") !== "none") : !n.hidden
            },
            isHidden: function () {
                return !this.$M()
            },
            isDisabled: function () {
                return this.$P.$N(this.$0)
            },
            isEnabled: function () {
                return !this.isDisabled()
            },
            toggleEnabled: function () {
                this.isEnabled() ? this.disable() : this.enable()
            },
            disable: function () {
                var n = this;
                n.disabled = !0;
                n.$P.$d(n.$0);
                n.$P.$N(n.$P1) && n.$P.$e(n.$P1);
                n.$P.$N(n.$h) && n.$P.$e(n.$h)
            },
            enable: function () {
                var n = this;
                n.disabled = !1;
                n.$P.$e(n.$0)
            },
            setDisabled: function (n) {
                n ? this.disable() : this.enable()
            },
            setEnabled: function (n) {
                this.setDisabled(!n)
            },
            $f: function () {
                return this.hidden && this.hideMode !== "visibility"
            },
            isActived: function () {},
            __hideEl: function () {
                this.$rf()
            },
            $rf: function () {
                var n = this;
                n.hidden = !0;
                n.hideMode === "display" ? n.$P.hide() : n.hideMode === "visibility" ? n.$P.css("visibility", "hidden") : n.$P.$d("f-hidden-offsets")
            },
            __showEl: function () {
                this.$N9()
            },
            $N9: function () {
                var n = this;
                n.hidden = !1;
                n.hideMode === "display" ? n.displayRule ? n.$P.css("display", n.displayRule) : n.$P.show() : n.hideMode === "visibility" ? n.$P.css("visibility", "visible") : n.$P.$e("f-hidden-offsets")
            },
            hide: function () {
                var n = this;
                if (i.$rL(n.$LW()) || n.$r("beforehide") === !1) return !1;
                n.__hideEl();
                n.$b(!0);
                n.$r("hide")
            },
            show: function () {
                var n = this;
                if (n.$r("beforeshow") === !1) return !1;
                n.__showEl();
                n.$b(!0);
                n.$r("show")
            },
            toggleVisible: function () {
                this.$M() ? this.hide() : this.show()
            },
            setVisible: function (n) {
                n ? this.show() : this.hide()
            },
            setHidden: function (n) {
                this.setVisible(!n)
            },
            animateElHeight: function (n, t, r) {
                r ? this.$P.animate({
                    height: n - i.$ek(this.$P)
                }, t) : (this.$P.$t(n, !0), t())
            },
            animateElWidth: function (n, t, r) {
                r ? this.$P.animate({
                    width: n - i.$rU(this.$P)
                }, t) : (this.$P.$4(n, !0), t())
            },
            $PG: function (t, i, r) {
                var u = this;
                n.$j || (r = r || t, i = i || u.$h, t = $(t), t.hover(function () {
                    r.$N(u.$0) || r.$d(i)
                }, function () {
                    r.$e(i)
                }))
            },
            $ry: function (t, i) {
                var r = this;
                n.$j || (i = i || t, t.focus(function () {
                    r.disabled || r.readonly || i.$N(r.$0) || i.$d(r.$P1)
                }).blur(function () {
                    r.disabled || r.readonly || i.$e(r.$P1)
                }))
            },
            $gW: function () {
                var t = this;
                n.enableShim && (t.shimEl = t.$v = $("<iframe>", {
                    "class": "f-shim"
                }))
            },
            $gO: function (t) {
                var i = this;
                n.enableShim && (i.$v.css("display", "block"), i.$LO(t))
            },
            $LO: function (n) {
                var t = this;
                n = n || t.$P;
                i.$LO(t.$v, n)
            }
        });
        n.Container = n.Component.extend({
            defaults: r,
            fieldDefaults: r,
            layoutAfterImagesLoad: !1,
            type: "container",
            initEl: function () {
                var n = this;
                n._super()
            },
            afterAddToPage: function () {
                var n = this;
                n._super();
                n.$NX()
            },
            $NX: function () {
                var n = this,
                    t;
                n.layoutAfterImagesLoad && (t = n.$L.$R("img").map(function () {
                    var n = $(this);
                    return $.Deferred(function (t) {
                        n.load(function () {
                            t.resolve()
                        })
                    }).promise()
                }), $.when.apply($, $.makeArray(t)).done(function () {
                    n.$J && n.$b()
                }))
            },
            $y: function () {
                var t = this,
                    n;
                t._super();
                n = t.items;
                n && n.length && $.each(n, function (n, t) {
                    t.$y()
                })
            },
            hidePopEl: function () {
                var n = this;
                $.each(n.items, function (n, t) {
                    t.hidePopEl && t.hidePopEl()
                })
            },
            afterInitElDisabled: function () {
                var n = this;
                n._super()
            },
            insert: function (n, t) {
                var u = this;
                $.each($.makeArray(t), function (t, f) {
                    var e = n + t,
                        o = u.__addItem(f, r, e);
                    i.$W(e, o, u.items)
                });
                u.$b(!0)
            },
            add: function (n) {
                var t = this;
                $.each($.makeArray(n), function (n, i) {
                    t.items.push(t.__addItem(i))
                });
                t.$b(!0)
            },
            __addItem: function (t, i, r) {
                function h(n, t, i) {
                    $.each(i, function (i, r) {
                        u(t[i]) && (n[i] = r)
                    })
                }
                var f = this,
                    e, o;
                if (i = i || f.$P, s(t)) {
                    if (e = t.type || f.defaultItemType, o = n.$Ph(e), !o) throw "Fail to create fineui component: " + e;
                    t = new o(t)
                }
                return f.defaults && h(t, f.options, f.defaults), f.fieldDefaults && (t.$s("field") ? h(t, t.options, f.fieldDefaults) : t.fieldDefaults ? $.extend(t.fieldDefaults, f.fieldDefaults) : $.extend(t, {
                    fieldDefaults: f.fieldDefaults
                })), t.doInit(), t.parent = f, t.$dU(f, i, r), t
            },
            $rA: function (t) {
                var r = this,
                    i;
                return t.hidden ? !0 : (i = !1, t.$P.parents(".f-cmp").each(function () {
                    var f = $(this),
                        t = f.attr("id"),
                        u;
                    return t ? t === r.id ? !1 : (u = n(t), u && u.hidden ? (i = !0, !1) : void 0) : !0
                }), i)
            },
            getFields: function () {
                return i.$eh(this.$P)
            },
            isValid: function (n) {
                var i = this,
                    t = !0,
                    r = [];
                return $.each(i.getFields(), function (u, f) {
                    return f.$P.parent(".f-grid-cell-editor").length ? !0 : (i.$rA(f) || f.validate() || (t = !1, r.push(f)), !t && n ? !1 : void 0)
                }), $.merge([t], r)
            },
            isDirty: function () {
                var n = this,
                    t = !1;
                return $.each(n.getFields(), function (i, r) {
                    return r.$P.parent(".f-grid-cell-editor").length ? !0 : !n.$rA(r) && r.isDirty() ? (t = !0, !1) : void 0
                }), t
            },
            clearDirty: function () {
                var n = this;
                $.each(n.getFields(), function (n, t) {
                    t.clearDirty()
                })
            },
            reset: function () {
                var n = this;
                $.each(n.getFields(), function (n, t) {
                    t.reset()
                })
            },
            $Pu: function () {
                if (!n.$Lh) {
                    var t = this;
                    $.each(t.items, function (n, t) {
                        t.$s("textbox") ? t.$Pu() : t.$s("container") && t.items.length && t.$Pu()
                    })
                }
            },
            $Pp: function () {
                if (!n.$Lh) {
                    var t = this;
                    $.each(t.items, function (n, t) {
                        t.$s("textbox") ? t.$Pp() : t.$s("container") && t.items.length && t.$Pp()
                    })
                }
            },
            removeLoading: function () {
                var n = this;
                n.$Lb && (n.$Lb.remove(), n.$de.remove(), n.$Lb = r, n.$de = r)
            },
            hideLoading: function () {
                var n = this;
                n.$Lb && (n.$Lb.hide(), n.$de.hide())
            },
            showLoading: function (t, i) {
                var r = this;
                t = t || .65;
                i = i || r.$LW();
                r.$Lb || (r.$de = $("<div>", {
                    "class": r.$Pm + " f-loading-mask"
                }).$g(i), r.$Lb = $("<div>", {
                    "class": "f-loading",
                    html: '<div class="f-loading-img"><img src="' + n.loadingImage + '"/><\/div>'
                }).$g(i));
                r.$de.css("opacity", t);
                r.$de.show();
                r.$Lb.show()
            },
            resolveItem: function (n, t) {
                var i = this;
                p(n) && (t = n, n = i.items);
                n && n.length && $.each(n, function (n, r) {
                    var u = t.apply(i, [r]);
                    if (u === !1) return !1;
                    r.items && r.items.length && i.$LS(r.items, t)
                })
            },
            $LS: function () {
                this.resolveItem.apply(this, arguments)
            },
            getItem: function (t) {
                var r = this,
                    i;
                return f(t) ? i = this.items[t] : e(t) ? i = n(t) : p(t) ? r.$LS(function (n, u) {
                    if (t.apply(r, [n, u]) === !0) return i = n, !1
                }) : i = t, i
            },
            $LV: function () {
                var n = this;
                $.each(n.items, function (n, t) {
                    t.$b()
                })
            }
        });
        n.PanelBase = n.Container.extend({
            pbcls: "f-panel",
            $6: "f-panel",
            header: !1,
            title: "",
            titleAlign: "left",
            titleTooltip: "",
            titleTooltipType: "qtip",
            bodyCls: "",
            bodyStyle: "",
            bodyPadding: "",
            margin: "",
            border: !1,
            frame: !1,
            collapsible: !1,
            collapsed: !1,
            icon: "",
            iconFont: "",
            _elTag: "div",
            headerTag: "div",
            headerInside: !0,
            iframe: !1,
            iframeUrl: "",
            iframeName: "",
            iframeDelay: !1,
            iframeLoaded: !1,
            minWidth: 0,
            minHeight: 0,
            maxWidth: 0,
            maxHeight: 0,
            split: !1,
            splitWidth: 6,
            splitDraggable: !0,
            splitIcon: !0,
            splitHeaderCls: !0,
            isViewPort: !1,
            clearIFrameAfterClose: !0,
            defaultItemType: "panel",
            customToolAhead: !1,
            type: "panelbase",
            initEl: function () {
                var t = this,
                    r, f, u;
                t._super();
                r = $("<" + t._elTag + ">", {
                    id: t.id,
                    "class": t.pbcls
                });
                t.header && (t.$rI(r), t.$g_(), f = t.tools, f && f.length && $.each(f, function (n, i) {
                    var r = t.__addTool(i);
                    r !== i && (f[n] = r)
                }));
                t.bars = t.bars || [];
                t.pagingbar && (s(t.pagingbar) && (t.pagingbar = new n.PagingToolbar(t.pagingbar)), i.$W(0, t.pagingbar, t.bars));
                t.$gp(r, "top");
                u = $("<div>", {
                    "class": t.pbcls + "-body",
                    style: t.bodyStyle
                }).$g(r);
                t.bodyCls && u.$d(t.bodyCls);
                (t.header || t.border) && (r.$d(t.$Y), u.$d(t.$Y));
                t.$gp(r, "bottom");
                h(t.bodyPadding) ? t.layout && !h(t.layout.padding) && u.css("padding", i.$Pb(t.layout.padding)) : u.css("padding", i.$Pb(t.bodyPadding));
                t.border && r.$d(t.$6 + "-border");
                t.isViewPort && ($("body").$d("f-viewport"), r.$d(t.$6 + "-viewport"), i.$PQ($.proxy(t.$b, t), "resize." + t.id));
                t.el = r;
                t.$P = r;
                t.$L = u;
                t.bodyEl = u;
                t.header && (t.icon ? t.setIcon(t.icon) : t.iconFont && t.setIconFont(t.iconFont));
                t.$N_();
                t.$rF();
                t.collapsed && t.$dB(!0)
            },
            $y: function () {
                var i = this,
                    n, t;
                i._super();
                n = i.bars;
                n && n.length && $.each(n, function (n, t) {
                    t.$y()
                });
                t = i.tools;
                t && t.length && $.each(t, function (n, t) {
                    t.$y()
                })
            },
            $gp: function (t, i) {
                var u = this,
                    r = u.bars;
                r.length && $.each(r, function (f, e) {
                    var o = e,
                        c = o.position || "top",
                        h;
                    c === i && (s(o) && (h = n.$Ph(o.type || "toolbar"), o = new h(o)), o.doInit(), o.parent = u, o.$P.$g(t), o !== e && (r[f] = o))
                })
            },
            afterInitEl: function () {
                var n = this;
                n._super();
                n.setTitleTooltip()
            },
            $N_: function () {
                var t = this,
                    r, u, e, i, o;
                t.region && ((t.region === "left" || t.region === "right") && (r = $("<div>", {
                    "class": t.$Pe + " f-region-cover"
                }).$g(t.$P), u = $("<div>", {
                    "class": "f-tool f-tool-toggle",
                    html: n.$g0
                }).$g(r), t.$PG(u, "f-tool-hover"), u.click($.proxy(t.$gS, t)), e = $("<div>", {
                    "class": "f-region-cover-text",
                    html: t.title || " "
                }).$g(r), t.$dX = r, t.$Px = e), t.split && t.region !== "center" && (i = $("<div>", {
                    "class": "f-region-split f-region-split-" + t.region
                }), t.splitHeaderCls && i.$d(t.$Pe + " f-mainheader"), t.splitIcon && (o = $("<div>", {
                    html: n.$g0,
                    "class": "f-region-split-icon " + t.$L6
                }).$g(i), o.click($.proxy(t.$gS, t))), t.$Pk = i, t.splitEl = i, t.splitDraggable && t.$Pk.draggable({
                    helper: "clone",
                    zIndex: 1,
                    axis: t.$di() ? "x" : "y",
                    containment: "parent",
                    iframeFix: !0,
                    stop: function (n, i) {
                        var r;
                        t.$di() ? (f(t.width) || (t.width = t.$P.$4(!0)), r = i.position.left - i.originalPosition.left, t.region === "left" ? t.width += r : t.width -= r) : (f(t.height) || (t.height = t.$P.$t(!0)), r = i.position.top - i.originalPosition.top, t.region === "top" ? t.height += r : t.height -= r);
                        t.$b(!0)
                    }
                })))
            },
            disable: function () {
                var n = this;
                n._super();
                n.$dh || (n.$dh = $("<div>", {
                    "class": "f-mask " + n.$Pm
                }).$g(n.$P), y() || n.$dh.css("opacity", 0));
                n.$dh.show()
            },
            enable: function () {
                var n = this;
                n._super();
                n.$dh && n.$dh.hide()
            },
            $LW: function () {
                return this.$L
            },
            $dU: function (n, t, i) {
                var u = this;
                u._super(n, t, i);
                n.fineui || (i = t, t = n, n = r);
                u.$Pk && u.$Pk.$g(t)
            },
            $rI: function (n) {
                var t = this;
                if (t.header) {
                    var i = $("<" + t.headerTag + ">", {
                            "class": t.$6 + "-header " + t.$Pe + " " + t.$Lo
                        }).$g(n),
                        u = "f-panel-title",
                        r = $("<div>", {
                            "class": u
                        }).$g(i),
                        f = $("<div>", {
                            "class": u + "-text",
                            html: t.title || " "
                        }).$g(r),
                        e = $("<div>", {
                            "class": t.$6 + "-tools"
                        }).$g(i);
                    t.titleAlign !== "left" && r.$d("f-align-" + t.titleAlign);
                    t.$9 = i;
                    t.$A = r;
                    t.$L5 = f;
                    t.$I = e;
                    t.headerEl = i;
                    t.titleEl = r;
                    t.titleTextEl = f;
                    t.toolsEl = e
                }
            },
            $g_: function () {
                var n = this,
                    t;
                n.tools = n.tools || [];
                t = {
                    type: "tool",
                    iconFont: "toggle",
                    cls: "f-tool-toggle",
                    hidden: !n.collapsible,
                    handler: $.proxy(n.$gS, n)
                };
                n.customToolAhead ? n.tools.push(t) : i.$W(0, t, n.tools)
            },
            $Po: function () {
                var n = this;
                n.$9.$e(n.$6 + "-header-icon");
                n.$9.$e(n.$6 + "-header-icon-only");
                n.hasIcon() && (n.$9.$d(n.$6 + "-header-icon"), n.getTitle() || n.$9.$d(n.$6 + "-header-icon-only"))
            },
            hasIcon: function () {
                return !!(this.icon || this.iconFont)
            },
            getIconEl: function () {
                return this.$9.$R("." + this.$6 + "-icon")
            },
            setIcon: function (n) {
                var t = this,
                    i;
                t.icon = n;
                i = t.getIconEl();
                i.length && i.remove();
                n && $("<img>", {
                    "class": t.$6 + "-icon",
                    src: n
                }).insertBefore(t.$L5);
                t.$Po();
                t.$J && t.$b(!0)
            },
            setIconFont: function (n) {
                var t = this,
                    i;
                t.iconFont = n;
                i = t.getIconEl();
                i.length && i.remove();
                n && (n.indexOf("f-icon-") === -1 && (n = "f-icon-" + n), $("<i>", {
                    "class": t.$6 + "-icon ui-icon " + n
                }).insertBefore(t.$L5));
                t.$Po();
                t.$J && t.$b(!0)
            },
            $rF: function () {
                var t = this,
                    r = t.$L,
                    i, u;
                if (t.iframe) {
                    i = $("<iframe>", {
                        frameborder: 0,
                        "class": "f-iframe"
                    }).$g(r);
                    t.$L.$d("f-iframeinside");
                    i.on("load", function () {
                        n.iframeLoading && t.hideLoading();
                        var r = i.attr("src");
                        r && t.$r("iframeload")
                    });
                    t.iframeName && i.attr("name", t.iframeName);
                    t.$Q = i;
                    t.bodyIFrameEl = i;
                    t.iframeDelay || t.setIFrameUrl(t.iframeUrl)
                } else t.items.length ? (u = t.$Lu(), u === "table" ? t._renderItemsAsTable(r) : $.each(t.items, function (n, i) {
                    var r = t.__addItem(i);
                    r !== i && (t.items[n] = r)
                })) : t.contentEl ? $(t.contentEl).show().$g(r) : t.html && r.html(t.html)
            },
            __addItem: function (n, t, i) {
                var r = this,
                    u;
                return t = t || r.$L, u = r._super(n, t, i), u.$P.$d(r.$PJ()), u
            },
            _renderItemsAsTable: function (n) {
                function a() {
                    return u(f[o]) ? !1 : u(f[o][i]) ? !1 : f[o][i] === 1 ? !0 : !1
                }

                function v(n, t) {
                    u(f[n]) && (f[n] = []);
                    f[n][t] = 1
                }

                function y(n) {
                    for (var t = 1; t < n; t++) v(o + t, i)
                }
                for (var r = this, c = $("<table>", {
                        "class": r.$Pq() + "-container",
                        cellspacing: 0,
                        cellpadding: 0
                    }), p = r.layout.columns, e = 0, w = r.items.length, t, o = 0, i = 0, f = [], s = $("<tr>"), h, l; e < w; e++) t = r.items[e], a() ? (i++, e--) : (h = $("<td>", {
                    "class": r.$Pq() + "-cell"
                }).$g(s), u(t.rowspan) || (h.attr("rowspan", t.rowspan), y(t.rowspan)), u(t.colspan) ? i++ : (h.attr("colspan", t.colspan), i += t.colspan), i >= p && (o++, i = 0, s.$g(c), s = $("<tr>")), l = r.__addItem(t, h), l != t && (r.items[e] = l));
                s.children().length && s.$g(c);
                c.$g(n)
            },
            $Ni: function () {
                var n = this,
                    t = "top";
                return n.region && (n.region === "left" ? t = "left" : n.region === "right" ? t = "right" : n.region === "bottom" && (t = "bottom")), t
            },
            $di: function () {
                var n = this.$Ni();
                return n === "left" || n === "right" ? !0 : !1
            },
            __doLayout: function () {
                function v(n) {
                    var t = n[0].getBoundingClientRect(),
                        r;
                    return r = t.width ? t.width : t.right - t.left, r += i.$rU(n), nt() && (r += .2), r
                }

                function h(n) {
                    return r.minWidth && n < r.minWidth ? r.minWidth : r.maxWidth && n > r.maxWidth ? r.maxWidth : n
                }

                function p(n) {
                    return r.minHeight && n < r.minHeight ? r.minHeight : r.maxHeight && n > r.maxHeight ? r.maxHeight : n
                }

                function c() {
                    var n = r.$P.$t(!0);
                    r.minHeight && n < r.minHeight ? r.$P.$t(r.minHeight, !0) : r.maxHeight && n > r.maxHeight && r.$P.$t(r.maxHeight, !0)
                }
                var r = this,
                    e, o, u, s, l, a;
                if (r.isViewPort) {
                    if (r.width = $(t).$C(), n.$Lk && parent !== t) try {
                        e = $(t.frameElement).parent(".f-iframeinside").$5()
                    } catch (w) {}
                    e || (e = $(t).$5());
                    r.height = e
                }
                r.width = h(r.width);
                r.height = p(r.height);
                o = !1;
                (r.width != r.$Nr || r.height != r.$Ng) && (o = !0);
                r.$Nr = r.width;
                r.$Ng = r.height;
                f(r.width) ? u = r.width : (r.$L.css("width", "auto"), r.$P.css("width", "auto"), u = v(r.$P));
                u = h(u);
                s = u - i.$dz(r.$P);
                y() && (s = u - i.$dz(r.$P));
                r.$L.$4(s, !0);
                r.$P.$4(u, !0);
                r.$NH();
                r.$g8();
                r.$di() && r.collapsed && r.$P.$4(r.$rr(), !0);
                f(r.height) ? (r.$P.$t(r.height, !0), c(), l = r.$P.$t(!0) - i.$LG(r.$P), r.$NO(l), r.$tf(), r.$L1()) : (r.$L.$5("auto"), r.$L1(), a = r.$d5(), r.$P.$t(a, !0), c(), r.$tf());
                !r.$di() && r.collapsed && r.$P.$t(r.$dM(), !0);
                r.$Lt();
                r.$J && o && r.$r("resize")
            },
            $rn: function () {
                var n = this;
                n.$L.css({
                    width: "auto",
                    height: "auto"
                });
                n.$P.css({
                    width: "auto",
                    height: "auto"
                })
            },
            $Lt: function () {
                var t = this,
                    u;
                if (!t.$s("grouppanel") && t.header) {
                    t.getToolCount() > 0 ? (t.$A.$d("f-panel-hastools"), u = t.$I.$4(!0), u -= i.$x(t.$9, "padding-right"), t.$A.css("margin-right", u)) : (t.$A.css("margin-right", "auto"), t.$A.$e("f-panel-hastools"));
                    var e = "auto",
                        r = 0,
                        f = t.getIconEl();
                    f.length && (r = f.$C(), r += n.largeMode ? 4 : 2, t.$s("tab") && (t.getTitle() || (e = f.$C(), r = 0)));
                    t.$L5.css({
                        "margin-left": r,
                        width: e
                    })
                }
            },
            $NH: function () {
                var t = this,
                    n = t.bars;
                n.length && $.each(n, function (n, t) {
                    t.hidden || t.$b()
                })
            },
            $g8: function () {
                var n = this
            },
            $L1: function () {
                var t = this,
                    i;
                if (t.items && t.items.length) {
                    i = t.$Lu();
                    switch (i) {
                        case "fit":
                            t.$RQ();
                            break;
                        case "hbox":
                            t.$rR();
                            break;
                        case "vbox":
                            t.$rg();
                            break;
                        case "column":
                            t.$rx();
                            break;
                        case "anchor":
                            t.$r6();
                            break;
                        case "absolute":
                            t.$rW();
                            break;
                        case "table":
                            t.$rO();
                            break;
                        case "card":
                            t.$rk();
                            break;
                        case "region":
                            t.$rJ();
                            break;
                        default:
                            t.$r5()
                    }
                } else t.contentEl && t.$L.$R(".f-cmp").each(function () {
                    var i = $(this),
                        t = n(i);
                    t && t.renderTo && t.$b()
                })
            },
            $tf: function () {
                var n = this
            },
            $d5: function () {
                var n = this,
                    t = 0,
                    o = n.bars,
                    r, u, f, s, h, e;
                return o.length && $.each(o, function (n, i) {
                    i.hidden || (t += i.$P.$t(!0))
                }), i.$ei(n.$L), r = n.$L.$t(!0), u = n.$Lu(), u && i.$_(u, ["hbox", "vbox", "column", "absolute", "region"]) || (f = n.$L.children(":last"), f.length && (s = i.$x(f, "margin-bottom"), h = i.$x(n.$L, "padding-bottom"), !h && s && (n.$L.css("padding-bottom", 1), e = n.$L.$t(!0), e != r + 1 && (r = e - 1), n.$L.css("padding-bottom", 0)))), t += r, n.header && n.headerInside && (t += n.$9.$t(!0)), t += i.$LG(n.$P)
            },
            $rN: function () {
                var n = this,
                    t = 0;
                return t += n.$L.$4(!0), t + i.$dz(n.$P)
            },
            $dM: function () {
                var n = this,
                    t = i.$LG(n.$P);
                return n.header && (t += n.$9.$t(!0)), t
            },
            $rr: function () {
                var n = this;
                return n.header ? n.$dX.$4(!0) : i.$dz(n.$P)
            },
            $NO: function (n) {
                var t = this,
                    i;
                t.header && t.headerInside && (n -= t.$9.$t(!0));
                i = t.bars;
                i.length && $.each(i, function (t, i) {
                    i.hidden || (n -= i.$P.$t(!0))
                });
                t.$L.$t(n, !0)
            },
            $dB: function (n) {
                function u(n) {
                    n.css("visibility", "visible")
                }

                function f(n) {
                    n.css("visibility", "hidden")
                }

                function e(n) {
                    var i = t.bars;
                    i && i.length && $.each(i, function (t, i) {
                        n ? u(i.$P) : f(i.$P)
                    })
                }
                var t = this,
                    r = t.$P,
                    i;
                t.collapsed = n;
                i = t.$Pk;
                n ? (r.$d(t.$6 + "-collapsed"), i && (i.$d(t.$6 + "-collapsed"), t.splitDraggable && i.draggable("disable")), e(!1), f(t.$L)) : (r.$e(t.$6 + "-collapsed"), i && (i.$e(t.$6 + "-collapsed"), t.splitDraggable && i.draggable("enable")), e(!0), u(t.$L))
            },
            $gS: function (n) {
                this.$dF(n)
            },
            $dF: function (t, i, f) {
                function h() {
                    e.$dB(i);
                    i ? e.$r("collapse", [t]) : (e.$r("expand", [t]), n.$Pa(e.$L));
                    e.$J && e.$b(!0)
                }

                function c(n) {
                    var u = e.$di(),
                        t, r;
                    u ? (t = 0, t = i ? e.$rr() : e.$rN(), e.animateElWidth(t, function () {
                        h()
                    }, n)) : (r = 0, r = i ? e.$dM() : e.$d5(), e.animateElHeight(r, function () {
                        h()
                    }, n))
                }
                var e = this,
                    s;
                if (o(t) || (f = i, i = t, t = r), !e.$P.is(":animated")) {
                    if (s = e.isCollapsed(), u(i)) i = !s;
                    else if (s === i) return;
                    c(!1)
                }
            },
            getToolsEl: function () {
                return this.$I
            },
            getToolCount: function () {
                var n = this,
                    t = 0;
                return n.tools && n.tools.length && $.each(n.tools, function (n, i) {
                    i.hidden || t++
                }), t
            },
            getTool: function (n) {
                var r = this,
                    t;
                return i.$gI("f-tool-", n) || (n = "f-tool-" + n), $.each(r.tools, function (i, r) {
                    if (r.cls.indexOf(n) >= 0) return t = r, !1
                }), t
            },
            addTool: function (n) {
                var t = this;
                t.$I && t.$I.length && t.tools.push(t.__addTool(n))
            },
            __addTool: function (t) {
                var r = this,
                    i;
                return s(t) && (i = n.$Ph(t.type || "tool"), t = new i(t)), t.doInit(), t.$P.$g(r.$I), t
            },
            isCollapsed: function () {
                var n = this;
                return n.$J ? n.$P.$N(this.$6 + "-collapsed") : n.collapsed
            },
            collapse: function () {
                var n = this;
                this.$dF(!0)
            },
            expand: function () {
                var n = this;
                this.$dF(!1)
            },
            toggleCollapse: function () {
                this.$dF()
            },
            setTitle: function (n) {
                var t = this;
                t.title = n;
                t.$L5.html(n || " ");
                t.$Px && t.$Px.length && t.$Px.html(n || " ");
                t.$Po();
                t.$J && t.$b(!0)
            },
            getTitle: function () {
                var n = this.$L5.html();
                return n === " " && (n = ""), n
            },
            getTitleTooltip: function () {
                var n = this;
                return n.titleTooltipType === "title" ? n.$A.prop("title") : n.$A.attr("data-qtip")
            },
            setTitleTooltip: function (n) {
                var t = this;
                typeof n == "undefined" && (n = t.titleTooltip);
                n && (t.titleTooltipType === "title" ? t.$A.prop("title", n) : t.$A.attr("data-qtip", n), t.$Px && t.$Px.length && t.$Px.prop("title", n))
            },
            setIFrameUrl: function (t) {
                var i = this;
                i.iframeUrl = t;
                i.$Q && i.$Q.length && (n.iframeLoading && i.showLoading(1), i.$Q.attr("src", t), i.iframeLoaded = t ? !0 : !1)
            },
            getIFrameUrl: function () {
                var n = this,
                    t = "";
                return n.iframeLoaded ? n.$Q && n.$Q.length && (t = n.$Q.attr("src")) : t = n.iframeUrl, t
            },
            getIFrameEl: function () {
                return this.$Q
            },
            getIFrameWindow: function () {
                var n = this,
                    t;
                return n.$Q && n.$Q.length && (t = n.$Q.get(0).contentWindow), t
            },
            refreshIFrame: function () {
                var t = this,
                    n = t.getIFrameWindow();
                n && n.location && n.location.href && n.location.href !== "about:blank" && n.location.reload()
            },
            hide: function () {
                var t = this;
                if (t._super() === !1) return !1;
                t.iframeLoaded = !1;
                t.iframe && t.clearIFrameAfterClose && n.defer(function () {
                    t.iframeLoaded || t.$Q && t.$Q.length && t.$Q.attr("src", "")
                }, 100)
            },
            $dn: function () {
                var n = this,
                    t;
                n.$LU = n.$LU || {};
                t = n.$LW().scrollTop();
                t && (n.$LU[n.id] = t);
                n.items && n.items.length && $.each(n.items, function (n, t) {
                    t.$dn && t.$dn()
                })
            },
            $dm: function () {
                var n = this,
                    t;
                n.$LU = n.$LU || {};
                t = n.$LU[n.id];
                t && n.$LW().scrollTop(t);
                n.items && n.items.length && $.each(n.items, function (n, t) {
                    t.$dm && t.$dm()
                });
                n.$LU = r
            }
        });
        $.extend(n.PanelBase.prototype, {
            $PW: function () {
                return Math.floor(this.$L.$C())
            },
            $Pr: function () {
                return Math.floor(this.$L.$5())
            },
            $Pq: function () {
                var n = "",
                    t = this.$Lu();
                return t && (n = "f-layout-" + t), n
            },
            $PJ: function () {
                var n = "",
                    t = this.$Lu();
                return t && (n = "f-layout-" + t + "-item"), n
            },
            $RQ: function () {
                function o() {
                    var t = 0,
                        i = n.items.length,
                        u;
                    if (!i) return r;
                    for (;;) {
                        if (!n.items[t].hidden) {
                            u = n.items[t];
                            break
                        }
                        if (t++, t > i - 1) break
                    }
                    return u
                }
                var n = this,
                    i = !1,
                    u, e, t;
                f(n.height) && (i = !0);
                u = n.$Pr();
                e = n.$PW();
                n.$P.$d(n.$Pq());
                t = o();
                t && (t.$P.$d(n.$PJ()), t.width = e, t.height = i ? u : r, t.$b(), i || n.$L.$5(t.$P.$t(!0)))
            },
            $rR: function () {
                function c(e) {
                    var s = 0,
                        v = 0,
                        y = 0,
                        l = 0,
                        c, p, a, k, w, b;
                    $.each(n.items, function (t, r) {
                        if (r.$f()) return !0;
                        r.$P.$d(n.$PJ());
                        h(n.layout.childMargin) || (r.$P.css("margin", i.$Pb(n.layout.childMargin)), r.$tT());
                        f(r.height) && r.height > l && (l = r.height);
                        r.flex && (y += r.flex)
                    });
                    e && l === 0 && (l = e);
                    c = o;
                    p = 0;
                    $.each(n.items, function (n, i) {
                        var r, f;
                        if (i.$f()) return !0;
                        u && (t === "stretch" ? i.height = e : (t === "stretchmax" || t === "stretchmaxcenter" || t === "stretchmaxend") && (i.height = l));
                        i.flex ? p++ : (i.$b(), r = i.$P.$4(!0), c -= r, v += r, f = i.$P.$t(!0), f > s && (s = f))
                    });
                    a = i.$x(n.$L, "padding-left");
                    k = i.$x(n.$L, "padding-top");
                    y === 0 && (r === "start" || (r === "end" ? a += c : r === "center" && (a += c / 2)));
                    w = 0;
                    b = 0;
                    $.each(n.items, function (n, i) {
                        var u, f, r;
                        if (i.$f()) return !0;
                        i.$P.css("left", a);
                        i.flex && (u = 0, u = w === p - 1 ? c - b : Math.floor(i.flex / y * c), w++, b += u, i.width = u, i.$b(), v += i.$P.$4(!0), r = i.$P.$t(!0), r > s && (s = r));
                        e && (f = k, r = i.$P.$t(!0), t === "start" || (t === "center" || t === "stretchmaxcenter" ? f += (e - r) / 2 : (t === "end" || t === "stretchmaxend") && (f += e - r)), i.$P.css("top", f));
                        a += i.$P.$4(!0)
                    });
                    s < e && (s = e);
                    var nt = s,
                        d = v,
                        g = i.$x(n.$L, "padding-right");
                    g > 0 && v > o && (d += g);
                    n.$tp(d, nt);
                    u || $.each(n.items, function (n, t) {
                        if (t.$f()) return !0;
                        var i = t.$P.$t(!0);
                        i < s && (t.height = s, t.$b())
                    })
                }
                var n = this,
                    t, r, o, u, e, s;
                n.$tk();
                h(n.layout.padding) || n.$L.css("padding", i.$Pb(n.layout.padding));
                n.$P.$d(n.$Pq());
                t = n.layout.align || "stretch";
                r = n.layout.position || "start";
                o = n.$PW();
                u = !1;
                f(n.height) && (u = !0);
                e = n.$Pr();
                c(e);
                e && (s = i.$gB(n.$L), s < e && c(s))
            },
            $rg: function () {
                function c(o) {
                    var a = 0,
                        v = 0,
                        c = 0,
                        s, y, g, l, p, w, b, d;
                    $.each(n.items, function (r, u) {
                        if (u.$f()) return !0;
                        u.$P.$d(n.$PJ());
                        h(n.layout.childMargin) || (u.$P.css("margin", i.$Pb(n.layout.childMargin)), u.$tT());
                        f(u.width) || u.flex || (t === "stretch" ? u.width = o : (u.$b(), u.width = u.$P.$4(!0)));
                        u.width > c && (c = u.width);
                        u.flex && (v += u.flex)
                    });
                    c === 0 && (c = o);
                    s = u;
                    y = 0;
                    $.each(n.items, function (n, i) {
                        if (i.$f()) return !0;
                        if (t === "stretch" ? i.width = o : (t === "stretchmax" || t === "stretchmaxcenter" || t === "stretchmaxend") && (i.width = c), i.flex && !i.collapsed) y++;
                        else {
                            i.$b();
                            var r = i.$P.$t(!0);
                            s -= r;
                            a += r;
                            i.flex && (v -= i.flex)
                        }
                    });
                    s < 0 && (s = 0);
                    g = i.$x(n.$L, "padding-left");
                    l = i.$x(n.$L, "padding-top");
                    v === 0 && (e === "start" || (e === "end" ? l += s : e === "center" && (l += s / 2)));
                    p = 0;
                    w = 0;
                    $.each(n.items, function (n, i) {
                        var r, f;
                        if (i.$f()) return !0;
                        i.$P.css("top", l);
                        i.flex && !i.collapsed && (u && (r = 0, r = p === y - 1 ? s - w : Math.floor(i.flex / v * s), p++, w += r, i.height = r), i.$b(), a += i.$P.$t(!0));
                        f = g;
                        t === "start" || (t === "center" || t === "stretchmaxcenter" ? f += (o - i.width) / 2 : (t === "end" || t === "stretchmaxend") && (f += o - i.width));
                        i.$P.css("left", f);
                        l += i.$P.$t(!0)
                    });
                    b = a;
                    u && !k() && (d = i.$x(n.$L, "padding-bottom"), d > 0 && a > u && (b += d));
                    n.$tp(r, b)
                }
                var n = this,
                    t, e, u, o, s;
                n.$tk();
                h(n.layout.padding) || n.$L.css("padding", i.$Pb(n.layout.padding));
                n.$P.$d(n.$Pq());
                t = n.layout.align || "stretch";
                e = n.layout.position || "start";
                u = n.$Pr();
                o = n.$PW();
                c(o);
                s = i.$P4(n.$L);
                s < o && c(s)
            },
            $r5: function () {
                var n = this,
                    r = n.$PW(),
                    t;
                n.$LV();
                t = i.$P4(n.$L);
                t < r && n.$LV()
            },
            $rx: function () {
                function s(e) {
                    var c = e,
                        o, s, h;
                    $.each(n.items, function (t, i) {
                        if (i.$f()) return !0;
                        i.$P.$d(n.$PJ());
                        f(i.columnWidth) || (i.$b(), c -= i.$P.$4(!0))
                    });
                    t = 0;
                    o = i.$x(n.$L, "padding-left");
                    $.each(n.items, function (n, i) {
                        if (i.$f()) return !0;
                        f(i.columnWidth) && (i.width = Math.floor(i.columnWidth * c), i.$b());
                        var r = i.$P.$t(!0);
                        r > t && (t = r);
                        i.$P.css("left", o);
                        o += i.$P.$4(!0)
                    });
                    s = t;
                    u && !k() && (h = i.$x(n.$L, "padding-bottom"), h > 0 && t > u && (s += h));
                    n.$tp(r, s)
                }
                var n = this,
                    u, t, e, o;
                n.$tk();
                n.$P.$d(n.$Pq());
                u = n.$Pr();
                e = n.$PW();
                s(e);
                o = i.$P4(n.$L);
                o < e && s(o)
            },
            $r6: function () {
                function o(n, t) {
                    return i.$PU("%", t) ? Math.floor(i.$e9(t) * n) : parseFloat(t) + n
                }

                function s(r) {
                    $.each(n.items, function (e, s) {
                        if (s.$f()) return !0;
                        if (s.$P.$d(n.$PJ()), u(s.anchor) && (s.$s("button") || f(s.width) || (s.anchor = "0")), !u(s.anchor)) {
                            var h = i.$et(s.anchor);
                            h.length > 0 && (s.width = o(r, h[0]), t && h.length === 2 && (s.height = o(t, h[1])))
                        }
                        s.$b()
                    })
                }
                var n = this,
                    t, r, e;
                n.$P.$d(n.$Pq());
                t = n.$Pr();
                r = n.$PW();
                s(r);
                e = i.$P4(n.$L);
                e < r && s(e)
            },
            $rW: function () {
                var n = this,
                    t, i;
                n.$P.$d(n.$Pq());
                t = n.$Pr();
                i = n.$PW();
                $.each(n.items, function (t, i) {
                    if (i.$f()) return !0;
                    i.$P.$d(n.$PJ());
                    i.$b();
                    i.$P.css("top", i.y);
                    i.$P.css("left", i.x)
                })
            },
            $rO: function () {
                var n = this,
                    t, i;
                n.$P.$d(n.$Pq());
                t = n.$Pr();
                i = n.$PW();
                $.each(n.items, function (t, i) {
                    if (i.$f()) return !0;
                    i.$P.$d(n.$PJ());
                    i.$b()
                })
            },
            $rk: function () {
                var n = this,
                    t, i;
                n.$P.$d(n.$Pq());
                t = n.$Pr();
                i = n.$PW();
                $.each(n.items, function (r, u) {
                    if (u.$f()) return !0;
                    u.$P.$d(n.$PJ());
                    u.width = i;
                    u.height = t;
                    u.$b()
                })
            },
            $rJ: function () {
                var t = this,
                    h, o;
                t.$P.$d(t.$Pq());
                var v = t.$Pr(),
                    c = t.$PW(),
                    a = {
                        left: [],
                        top: [],
                        right: [],
                        bottom: [],
                        center: []
                    },
                    r = v,
                    l = c,
                    u = 0,
                    e = 0,
                    p = i.$x(t.$L, "padding-top"),
                    s = i.$x(t.$L, "padding-left"),
                    w = i.$x(t.$L, "padding-bottom");
                u += p;
                e += s;
                h = [];
                $.each(t.items, function (n, t) {
                    t.region === "bottom" ? i.$W(0, t, h) : h.push(t)
                });
                o = 0;
                $.each(h, function (n, i) {
                    var f = i.$Pk,
                        e, h, l;
                    if (i.$f()) return f && f.hide(), !0;
                    f && f.show();
                    i.$P.$d(t.$PJ() + " f-region-" + i.region);
                    e = i.region;
                    (e === "top" || e === "bottom") && (i.width = c, i.$b(), h = i.$P.$t(!0), r -= h, e === "top" ? (i.$P.css("top", u), u += h) : (i.$P.css("bottom", o), o += h), i.$P.css("left", s), f && (f.$t(i.splitWidth, !0), f.$R(".f-region-split-icon").$t(i.splitWidth, !0), f.$4(c, !0), r -= i.splitWidth, e === "top" ? (f.css({
                        left: s,
                        top: u
                    }), u += i.splitWidth) : (f.css({
                        left: s,
                        bottom: o
                    }), o += i.splitWidth)));
                    l = a[i.region];
                    e === "center" && l.length || l.push(i)
                });
                $.each(t.items, function (t, u) {
                    var o, h, e, s;
                    if (u.$f()) return !0;
                    (u.region === "left" || u.region === "right") && (f(u.width) || (u.width = 100), u.height = r, u.$b(), u.$dX && (u.$dX.$t(r - i.$er(u.$P), !0), o = 28, n.largeMode && (o = 34), u.$Px.$4(r - o), y() ? (e = u.$dX.$4(!0), h = u.$Px.$4(!0), u.$Px.css({
                        left: (e - h) / 2
                    })) : (e = u.$dX.$4(!0), s = u.$Px.$t(!0), u.$Px.css({
                        left: (e - s) / 2 + s
                    }))), u.$Pk && (u.$Pk.$4(u.splitWidth, !0), u.$Pk.$R(".f-region-split-icon").$4(u.splitWidth, !0), u.$Pk.$t(r, !0), l -= u.splitWidth), l -= u.$P.$4(!0))
                });
                $.each(t.items, function (n, t) {
                    if (t.$f()) return !0;
                    t.region === "center" && (t.height = r, t.width = l, t.$b())
                });
                $.each(["left", "center", "right"], function (n, t) {
                    var i = a[t];
                    if (!i.length) return !0;
                    $.each(i, function (n, i) {
                        function r() {
                            i.$Pk && (i.$Pk.css({
                                left: e,
                                top: u
                            }), e += i.splitWidth)
                        }
                        if (i.$f()) return !0;
                        t === "right" && r();
                        i.$P.css("left", e);
                        i.$P.css("top", u);
                        e += i.$P.$4(!0);
                        t === "left" && r()
                    })
                })
            },
            $tp: function (n, t) {
                var e = this,
                    r = {
                        "class": "f-layout-placeholder"
                    },
                    f;
                u(n) || (r.width = n);
                u(t) || (r.height = t);
                f = $("<div>", r);
                i.$PS(e.$L, ">.f-layout-placeholder", f)
            },
            $tk: function () {
                var n = this;
                n.$L.find(">.f-layout-placeholder").remove()
            }
        });
        n.Calendar = n.Component.extend({
            ccls: "f-calendar",
            format: "yyyy-MM-dd",
            minValue: "",
            maxValue: "",
            showTodayButton: !0,
            showTime: !1,
            showMinute: !0,
            showSecond: !0,
            okText: "OK",
            closeText: "Done",
            prevText: "Prev",
            nextText: "Next",
            currentText: "Today",
            monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
            dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
            dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
            weekHeader: "Wk",
            dateFormat: "MM/dd/yyyy",
            firstDay: 0,
            isRTL: !1,
            showMonthAfterYear: !1,
            yearSuffix: "",
            amPm: ["am", "pm"],
            type: "calendar",
            initEl: function () {
                var t = this,
                    i;
                t._super();
                t.showTime && (t.showTime = !1, n.$q("F.Calendar - showTime"));
                i = $("<div>", {
                    id: t.id,
                    "class": t.ccls + " " + t.$Y + " ui-corner-all"
                });
                t.el = i;
                t.$P = i;
                t.$rp();
                t.$rM();
                t.$r_();
                t.$LK();
                t.$4dEvents()
            },
            $rp: function () {
                var n = this,
                    t = n.minValue;
                t && e(t) && (n.minValue = i.$Pv(n.format, t))
            },
            $rM: function () {
                var n = this,
                    t = n.maxValue;
                t && e(t) && (n.maxValue = i.$Pv(n.format, t))
            },
            $r_: function () {
                var n = this,
                    t = n.value;
                t && e(t) && (n.value = i.$Pv(n.format, t))
            },
            $4dEvents: function () {
                function r(n, i) {
                    var r = t.$w("float");
                    r.is(":visible") && r.attr("data-type") == n ? r.hide() : t.$43(n, i)
                }
                var t = this,
                    u;
                if ("onselectstart" in document.createElement("div")) t.$P.on("selectstart", function (n) {
                    $(n.target).is(":input") || n.preventDefault()
                });
                if (!n.$j) {
                    t.$P.on("mouseenter mouseleave", "." + t.$B("nav"), function (n) {
                        var i = $(this),
                            r = t.$B("nav-hover");
                        if (n.type === "mouseenter") {
                            if (i.$N(t.$0)) return;
                            i.$d(r)
                        } else n.type === "mouseleave" && i.$e(r)
                    });
                    u = "." + t.$B("day") + ",." + t.$B("float") + " li";
                    t.$P.on("mouseenter mouseleave", u, function (n) {
                        var i = $(this);
                        i.$N(t.$0) || (n.type === "mouseenter" ? i.$d(t.$h) : n.type === "mouseleave" && i.$e(t.$h))
                    })
                }
                t.$P.on("click", "." + t.$B("nav"), function () {
                    var r = $(this),
                        i, n;
                    r.$N(t.$0) || (i = t.$tM(), n = t.$t_(), r.is("." + t.$B("prev")) ? (n--, n < 0 && (n = 11, i--)) : (n++, n > 11 && (n = 0, i++)), t.$t0(i, n))
                });
                t.$P.on("click", "." + t.$B("float") + " li", function () {
                    var f = $(this),
                        r = parseInt(f.attr("data-number"), 10),
                        e = t.$tM(),
                        o = t.$t_(),
                        u = t.$w("float"),
                        n = u.attr("data-type");
                    n === "month" ? t.$t0(e, r) : n === "year" ? t.$t0(r, o) : (n === "hour" || n === "minute" || n === "second") && (t.$w("time").find("." + n).text(i.$PT(r)), u.hide())
                });
                t.$P.on("click", "." + t.$B("month"), function () {
                    var n = $(this),
                        t = parseInt(n.attr("data-month"), 10);
                    r("month", t)
                });
                t.$P.on("click", "." + t.$B("year"), function () {
                    var n = $(this),
                        t = parseInt(n.attr("data-year"), 10);
                    r("year", t)
                });
                t.$P.on("click", "." + t.$B("time") + " .hour", function () {
                    var n = $(this),
                        t = parseInt(n.text(), 10);
                    r("hour", t)
                });
                t.$P.on("click", "." + t.$B("time") + " .minute", function () {
                    var n = $(this),
                        t = parseInt(n.text(), 10);
                    r("minute", t)
                });
                t.$P.on("click", "." + t.$B("time") + " .second", function () {
                    var n = $(this),
                        t = parseInt(n.text(), 10);
                    r("second", t)
                });
                t.$P.on("click dblclick", "." + t.$B("day"), function (n) {
                    var i = $(this),
                        u, r;
                    i.$N(t.$0) || (u = parseInt(i.text(), 10), t.$w("table").find("." + t.$S).$e(t.$S), i.$d(t.$S), t.$r0(u), r = n.type, t.showTime || r !== "click" ? t.showTime && r === "dblclick" && t.$r("select", [n]) : t.$r("select", [n]))
                })
            },
            $r0: function (n) {
                var t = this,
                    r = t.$tM(),
                    u = t.$t_(),
                    n = t.$4l(n);
                if (t.showTime) {
                    var i = t.$w("time"),
                        o = parseInt(i.find(".hour").text(), 10),
                        f = 0,
                        e = 0;
                    t.showMinute && (f = parseInt(i.find(".minute").text(), 10));
                    t.showSecond && (e = parseInt(i.find(".second").text(), 10));
                    t.value = new Date(r, u, n, o, f, e)
                } else t.value = new Date(r, u, n)
            },
            $4p: function () {
                var t = this,
                    n = new Date,
                    r = n.getFullYear(),
                    u = n.getMonth(),
                    f = n.getDate(),
                    i;
                if (t.showTime) {
                    var s = n.getHours(),
                        e = 0,
                        o = 0;
                    t.showMinute && (e = n.getMinutes());
                    t.showSecond && (o = n.getSeconds());
                    i = new Date(r, u, f, s, e, o)
                } else i = new Date(r, u, f);
                t.setValue(i)
            },
            $4l: function (n) {
                var i = this,
                    t;
                return f(n) || (t = i.$w("table").find("." + i.$S), n = t.length ? parseInt(t.text(), 10) : 1), n
            },
            $tM: function () {
                return parseInt(this.$w("year").attr("data-year"), 10)
            },
            $t_: function () {
                return parseInt(this.$w("month").attr("data-month"), 10)
            },
            $w: function (n) {
                return this.$P.find("." + this.$B(n))
            },
            $43: function (n, t) {
                function y(n) {
                    return Math.floor((l - n * 5) / n)
                }

                function s(n, i, r) {
                    var f = y(i),
                        u = "";
                    return n == t && (u += o.$S), '<li class="' + u + '" data-number="' + n + '" style="width:' + f + 'px">' + r + "<\/li>"
                }
                var o = this,
                    v = o.$w("body"),
                    f = o.$w("float"),
                    e, u, h, c, p, r, l, w, a, b;
                if (f.css({
                        width: v.$4(!0),
                        height: v.$t(!0),
                        overflow: "hidden"
                    }).attr("data-type", n).show(), e = ['<ul class="' + o.$B("float-list") + '">'], l = f.$C(), u = 3, n == "month")
                    for (u = 3, r = 0; r < 12; r++) e.push(s(r, u, o.monthNamesShort[r]));
                else if (n == "year")
                    for (u = 4, h = t - 50, c = h + "", c.charAt(c.length - 1) !== "0" && (h = parseInt(c.substr(0, c.length - 1) + "0", 10)), p = h + 99, r = h; r <= p; r++) e.push(s(r, u, r));
                else if (n == "hour")
                    for (u = 5, r = 0; r <= 23; r++) e.push(s(r, u, i.$PT(r)));
                else if (n == "minute")
                    for (u = 5, r = 0; r <= 59; r++) e.push(s(r, u, i.$PT(r)));
                else if (n == "second")
                    for (u = 5, r = 0; r <= 59; r++) e.push(s(r, u, i.$PT(r)));
                e.push("<\/ul>");
                f.html(e.join(""));
                f.css("overflow", "auto");
                i.$gZ(f) && (l = i.$P4(f), w = y(u), f.find("li").outerWidth(w), a = f.find("li." + o.$S), a.length && (b = Math.floor(a.position().top - f.$5() / 2), f.scrollTop(b)))
            },
            afterAddToPage: function () {
                var n = this;
                n._super();
                n.$ri()
            },
            $ri: function () {
                var t = this,
                    i = t.$w("today"),
                    r;
                t.showTime && (i = t.$w("actions"));
                t.showTodayButton && (r = 0, t.showTime && (r = 5), new n.Button({
                    renderTo: i,
                    text: t.currentText,
                    scale: "small",
                    marginRight: r,
                    handler: function (n) {
                        t.$4p();
                        t.$r("select", [n])
                    }
                }));
                t.showTime && new n.Button({
                    renderTo: i,
                    text: t.okText,
                    scale: "small",
                    handler: function (n) {
                        t.$r0();
                        t.$r("select", [n])
                    }
                })
            },
            $LK: function () {
                var t = this,
                    r = new Date,
                    e;
                t.value && (r = t.value);
                var u = r.getFullYear(),
                    f = r.getMonth(),
                    i = [];
                i.push('<div class="' + t.$B("header") + " " + t.$Pe + '">');
                i.push(t.$rX(u, f));
                i.push("<\/div>");
                i.push('<div class="' + t.$B("body") + '">');
                i.push(t.$rh(u, f));
                i.push("<\/div>");
                e = '<div class="' + t.$B("footer") + " " + t.$Pe + '">';
                t.showTime ? n.$q("F.Calendar - showTime") : t.showTodayButton && (i.push(e), i.push('<div class="' + t.$B("today") + '"><\/div>'), i.push("<\/div>"));
                t.$P.html(i.join(""));
                t.$J && t.$ri()
            },
            $t0: function (n, t) {
                var i = this;
                i.$w("header").html(i.$rX(n, t));
                i.$w("body").html(i.$rh(n, t));
                i.$J && i.doLayout()
            },
            $rX: function (n, t) {
                var i = this,
                    u = '<span class="' + i.$B("year") + '" data-year="' + n + '">' + n + i.yearSuffix + "<\/span>",
                    f = '<span class="' + i.$B("month") + '" data-month="' + t + '">' + i.monthNamesShort[t] + "<\/span>",
                    e = i.$B("nav"),
                    r = [];
                return r.push('<div class="' + e + " " + i.$B("prev") + '"><i class="ui-icon"><\/i><\/div>'), r.push('<div class="' + i.$B("title") + '">'), i.showMonthAfterYear ? $.merge(r, [u, " ", f]) : $.merge(r, [f, " ", u]), r.push("<\/div>"), r.push('<div class="' + e + " " + i.$B("next") + '"><i class="ui-icon"><\/i><\/div>'), r.join("")
            },
            $rh: function (n, t) {
                function o(n, t) {
                    var r = "yyyyMMdd",
                        u = parseInt(i.$PZ(r, n), 10),
                        f = parseInt(i.$PZ(r, t), 10);
                    return u - f
                }
                var r = this,
                    f = ['<table class="' + r.$B("table") + '"><thead><tr>'],
                    u = r.firstDay,
                    y, e, a, v;
                do f.push('<th><span title="' + r.dayNames[u] + '">' + r.dayNamesMin[u] + "<\/span><\/th>"), u++, u > 6 && (u = 0); while (u != r.firstDay);
                f.push("<\/tr><\/thead>");
                y = new Date(n, t, 1);
                e = startDayOfWeek = y.getDay();
                r.firstDay && (e -= r.firstDay, e < 0 && (e += 7));
                var b = r.$4O(n, t),
                    s = e + b,
                    l = 0,
                    p = s % 7;
                for (p && (l = 7 - p, s += l), a = new Date, a.setHours(0, 0, 0, 0), f.push("<tbody><tr>"), u = 0; u < s; u++) {
                    if (u < e || u >= s - l) f.push("<td><\/td>");
                    else {
                        var h = r.$B("day"),
                            w = u - e + 1,
                            c = new Date(n, t, w);
                        o(c, a) == 0 && (h += " ui-state-highlight");
                        v = r.getValue();
                        v && o(c, v) == 0 && (h += " " + r.$S);
                        (r.minValue && o(c, r.minValue) < 0 || r.maxValue && o(c, r.maxValue) > 0) && (h += " " + r.$0);
                        f.push('<td><a class="' + h + '">' + w + "<\/a><\/td>")
                    }(u + 1) % 7 == 0 && f.push("<\/tr><tr>")
                }
                return f.pop(), f.push("<\/tbody>"), f.push("<\/table>"), f.push('<div class="' + r.$B("float") + " " + r.$Y + '"><\/div>'), f.join("")
            },
            $4O: function (n, t) {
                var i = n % 4 == 0 && (n % 100 != 0 || n % 400 == 0);
                return [31, i ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][t]
            },
            getValue: function (n) {
                var i = this,
                    t = i.value;
                if (t && n) {
                    var r = t.getFullYear(),
                        u = t.getMonth(),
                        f = t.getDate();
                    t = new Date(r, u, f)
                }
                return t
            },
            setValue: function (n) {
                var t = this;
                t.value = n;
                t.$r_();
                t.$LK();
                t.$J && t.doLayout()
            },
            getText: function () {
                var n = this;
                return i.$PZ(n.format, n.value)
            },
            setText: function (n) {
                this.setValue(n)
            },
            setMaxValue: function (n) {
                var t = this;
                t.maxValue = n;
                t.$rM();
                t.$LK();
                t.$J && t.doLayout()
            },
            setMinValue: function (n) {
                var t = this;
                t.minValue = n;
                t.$rp();
                t.$LK();
                t.$J && t.doLayout()
            },
            __doLayout: function () {
                var n = this;
                n._super();
                n.$42()
            },
            $42: function () {
                var n = this,
                    h, u, c;
                if (f(n.height)) {
                    var l = n.$w("header"),
                        a = n.$w("body"),
                        e = n.$w("footer"),
                        t = n.$w("table"),
                        r = t.find("thead tr"),
                        o = t.find("tbody td"),
                        s = o.find("." + n.$B("day"));
                    t.$5("auto");
                    r.$5("auto");
                    s.$5("auto");
                    h = r.height();
                    r.height(h);
                    u = n.$P.height() - l.$t(!0);
                    e.length && (u -= e.$t(!0));
                    c = u - i.$LG(a);
                    t.$t(c, !0);
                    s.$t(o.$5(), !0)
                }
            }
        });
        n.$rD(n.Calendar.prototype);
        n.Button = n.Component.extend({
            ccls: "f-btn",
            text: "",
            scale: "normal",
            enablePress: !1,
            pressed: !1,
            textCls: "f-btn-text",
            iconCls: "f-btn-icon",
            icon: "",
            iconFont: "",
            iconAlign: "left",
            defaultState: !0,
            defaultCorner: !0,
            tabIndex: 0,
            validateForm: "",
            validateForms: r,
            validateTarget: "_self",
            validateMessageBox: !0,
            displayRule: "inline-block",
            showMenuIcon: !0,
            type: "button",
            initEl: function () {
                var n = this,
                    t, i, r;
                n._super();
                t = $("<a>", {
                    id: n.id,
                    role: "button",
                    tabindex: n.tabIndex,
                    "class": n.ccls + " " + n.$Lo
                });
                n.defaultState && t.$d(n.$L6);
                n.defaultCorner && t.$d("ui-corner-all");
                (n.enableToggle || n.enablePress) && (t.$d(n.$B("pressable")), n.pressed && t.$d(n.$S));
                t.$d(n.$B(n.scale));
                i = $("<span>", {
                    "class": n.$B("inner")
                });
                r = $("<span>", {
                    "class": n.textCls,
                    html: n.text
                }).$g(i);
                n.el = t;
                n.$P = t;
                n.textEl = r;
                n.$PN = r;
                n.$4c = i;
                i.$g(t);
                (n.menu || n.menuId) && (n.$dP(), n.showMenuIcon || t.$d(n.$B("nomenuicon")), $("<i>", {
                    "class": n.$B("icon-arrowd") + " ui-icon"
                }).$g(i), t.$d(n.$B("arrowd")));
                n.icon ? n.setIcon(n.icon) : n.iconFont ? n.setIconFont(n.iconFont) : n.$P.$d(n.iconCls + "-no");
                n.$P.click($.proxy(n.$4K, n));
                n.$ry(n.$P);
                n.$PG(n.$P)
            },
            $dP: function () {
                var i = this,
                    t, r;
                i.$tx || (t = i.menuId ? n(i.menuId) : i.menu, t) && (s(t) && (r = n.$Ph(t.type || "menu"), t = new r(t), t.doInit()), t.target = i, i.menu = t, i.$tx = !0)
            },
            $4K: function (n) {
                var t = this,
                    r;
                if (!t.isDisabled()) {
                    if ((t.menu || t.menuId) && (t.$dP(), t.menu.target = t, t.menu.$M() ? t.menu.hide() : t.menu.show(t.$P, "bottom")), (t.enableToggle || t.enablePress) && t.setPressed(!t.isPressed()), r = t.validateForm ? [t.validateForm] : t.validateForms, r && r.length && !i.$gT(r, t.validateTarget, t.validateMessageBox)) return !1;
                    t.$r("beforeclick", [n]) !== !1 && t.$r("click", [n]) !== !1 && t.handler && t.handler.apply(this, [n])
                }
            },
            setHandler: function (n) {
                this.handler = n
            },
            isPressed: function () {
                var n = this;
                return n.$J ? n.$P.$N(n.$S) : n.pressed
            },
            setPressed: function (n) {
                this.toggle(n)
            },
            togglePressed: function () {
                this.toggle()
            },
            toggle: function (n) {
                var t = this;
                u(n) && (n = !t.isPressed());
                t.$Rg(n)
            },
            $Rg: function (n) {
                var t = this;
                t.pressed = n;
                n ? t.$P.$d(t.$S) : t.$P.$e(t.$S)
            },
            $Po: function () {
                var n = this;
                n.$P.$e(n.iconCls + "-no");
                n.$P.$e(n.iconCls + "-only");
                n.$P.$e(n.iconCls + "-" + n.iconAlign);
                n.hasIcon() ? n.getText() ? n.$P.$d(n.iconCls + "-" + n.iconAlign) : n.$P.$d(n.iconCls + "-only") : n.$P.$d(n.iconCls + "-no")
            },
            hasIcon: function () {
                return !!(this.icon || this.iconFont)
            },
            setIcon: function (n) {
                var t = this,
                    r;
                t.icon = n;
                t.$7 || (r = $("<img>", {
                    "class": t.iconCls
                }), i.$_(t.iconAlign, ["right", "bottom"]) ? r.insertAfter(t.$PN) : r.insertBefore(t.$PN), t.iconEl = r, t.$7 = r);
                n ? t.$7.attr("src", n).css("display", "inline-block") : t.$7.hide();
                t.$Po()
            },
            setIconFont: function (n) {
                var t = this,
                    r;
                t.iconFont = n;
                t.$7 || (r = $("<i>"), i.$_(t.iconAlign, ["right", "bottom"]) ? r.insertAfter(t.$PN) : r.insertBefore(t.$PN), t.iconEl = r, t.$7 = r);
                n ? (n.indexOf("f-icon-") === -1 && (n = "f-icon-" + n), t.$7.attr("class", t.iconCls + " ui-icon " + n).css("display", "inline-block")) : t.$7.hide();
                t.$Po()
            },
            getText: function () {
                return this.$PN.html()
            },
            setText: function (n) {
                var t = this;
                t.text = n;
                t.$PN.html(n);
                t.$Po()
            },
            focus: function () {
                t.focus();
                this.$P.focus()
            },
            blur: function () {
                this.$P.blur()
            },
            click: function () {
                this.focus();
                this.$P.click()
            },
            __doLayout: function () {
                var t = this,
                    n, i, r;
                t._super();
                n = t.$4c;
                f(t.width) && f(t.height) ? (i = Math.floor(n.$4() / 2), r = Math.floor(n.$t() / 2), n.css({
                    position: "absolute",
                    top: "50%",
                    left: "50%",
                    "margin-left": -i,
                    "margin-top": -r
                })) : n.css("position") == "absolute" && n.css({
                    position: "relative",
                    top: 0,
                    left: 0,
                    "margin-left": 0,
                    "margin-top": 0
                })
            }
        });
        n.Tool = n.Component.extend({
            ccls: "f-tool",
            textCls: "f-tool-text",
            iconCls: "f-tool-icon",
            icon: "",
            iconFont: "",
            text: "",
            displayRule: "inline-block",
            type: "tool",
            initEl: function () {
                var n = this,
                    t, i;
                n._super();
                t = $("<div>", {
                    id: n.id,
                    "class": n.ccls
                });
                i = $("<span>", {
                    "class": n.textCls,
                    html: n.text
                }).$g(t);
                n.el = t;
                n.$P = t;
                n.textEl = i;
                n.$PN = i;
                n.icon ? n.setIcon(n.icon) : n.iconFont && n.setIconFont(n.iconFont);
                n.$P.click($.proxy(n.$Nd, n));
                n.$PG(n.$P, "f-tool-hover");
                (n.menu || n.menuId) && n.$dP()
            },
            $dP: function () {
                var i = this,
                    t, r;
                i.$tx || (t = i.menuId ? n(i.menuId) : i.menu, t) && (s(t) && (r = n.$Ph(t.type || "menu"), t = new r(t), t.doInit()), t.target = i, i.menu = t, i.$tx = !0)
            },
            $Nd: function (t) {
                var i = this;
                i.isDisabled() || (i.$P.$e(i.$h), n.hideQtip(i.$P), (i.menu || i.menuId) && (i.$dP(), i.menu.$M() ? i.menu.hide() : i.menu.show(i.$P, "bottom")), i.$r("beforeclick", [t]) !== !1) && i.$r("click", [t]) !== !1 && i.handler && i.handler.apply(this, [t])
            },
            setHandler: function (n) {
                this.handler = n
            },
            $Po: function () {
                var n = this;
                n.$P.$e(n.iconCls + "-no");
                n.$P.$e(n.iconCls + "-only");
                n.hasIcon() ? n.getText() || n.$P.$d(n.iconCls + "-only") : n.$P.$d(n.iconCls + "-no")
            },
            hasIcon: function () {
                return !!(this.icon || this.iconFont)
            },
            setIcon: function (n) {
                var t = this,
                    i;
                t.icon = n;
                t.$7 || (i = $("<img>", {
                    "class": t.iconCls
                }).insertBefore(t.$PN), t.iconEl = i, t.$7 = i);
                n ? t.$7.attr("src", n).css("display", "inline-block") : t.$7.hide();
                t.$Po()
            },
            setIconFont: function (n) {
                var t = this,
                    i;
                t.iconFont = n;
                t.$7 || (i = $("<i>").insertBefore(t.$PN), t.iconEl = i, t.$7 = i);
                n ? (n.indexOf("f-icon-") === -1 && (n = "f-icon-" + n), t.$7.attr("class", t.iconCls + " ui-icon " + n).css("display", "inline-block")) : t.$7.hide();
                t.$Po()
            },
            getText: function () {
                return this.$PN.html()
            },
            setText: function (n) {
                var t = this;
                t.text = n;
                t.$PN.html(n);
                t.$Po()
            }
        });
        n.Panel = n.PanelBase.extend({
            header: !0,
            border: !0,
            tableStyle: !1,
            type: "panel",
            initEl: function () {
                var t = this;
                t._super();
                t.frame && t.$P.$d("f-panel-frame ui-corner-all");
                t.tableStyle && n.$q("F.Form - tableStyle")
            }
        });
        n.Window = n.Panel.extend({
            ccls: "f-window",
            $LF: "f-window-maximized",
            renderTo: "body",
            modal: !0,
            hideOnMaskClick: !1,
            draggable: !0,
            closable: !0,
            closeAction: "hide",
            resizable: !1,
            maximizable: !1,
            maximized: !1,
            minimizable: !1,
            constrainInitialSize: !0,
            dependsViewPortSize: !0,
            keepLastPosition: !1,
            keepLastSize: !1,
            top: r,
            left: r,
            percentWidth: r,
            percentHeight: r,
            defaultCorner: !0,
            goldenPosition: !1,
            positionX: "center",
            positionY: "center",
            positionSideSpace: 0,
            fixedPosition: !1,
            minWidth: 100,
            minHeight: 100,
            autoFocus: !0,
            target: "_self",
            enableAnimation: r,
            animationType: r,
            type: "window",
            initEl: function () {
                var t = this;
                t.hidden && t.iframe && (t.iframeDelay = !0);
                t._super();
                u(t.enableAnimation) || (t.enableAnimation = r, n.$q("F.Window - enableAnimation"));
                u(t.percentWidth) || (t.percentWidth = r, n.$q("F.Window - percentWidth"));
                u(t.percentHeight) || (t.percentHeight = r, n.$q("F.Window - percentHeight"));
                t.keepLastPosition && (t.keepLastPosition = !1, n.$q("F.Window - keepLastPosition"));
                t.keepLastSize && (t.keepLastSize = !1, n.$q("F.Window - keepLastSize"));
                t.dependsViewPortSize || (t.dependsViewPortSize = !0, n.$q("F.Window - dependsViewPortSize"));
                t.hideOnMaskClick && (t.hideOnMaskClick = !1, n.$q("F.Window - hideOnMaskClick"));
                t.$s("messagebox") || (t.fixedPosition && (t.fixedPosition = !1, n.$q("F.Window - fixedPosition")), t.positionX !== "center" && (t.positionX = "center", n.$q("F.Window - positionX")), t.positionY !== "center" && (t.positionY = "center", n.$q("F.Window - positionY")));
                t.$P.$d(t.ccls + " f-shadow");
                t.defaultCorner && t.$P.$d("ui-corner-all");
                t.header && (t.maximizable && t.$9.dblclick($.proxy(t.$rY, t)), t.$P.mousedown(function (r) {
                    i.$PO($(r.target), ".f-tool") || t.$M() && n.wndManager.addActive(t)
                }));
                i.$PQ(function () {
                    t.$M() && t.$b()
                }, "resize." + t.id);
                t.$gW()
            },
            $g_: function () {
                var n = this,
                    r, u, t, f;
                n._super();
                r = {
                    type: "tool",
                    iconFont: "expand",
                    cls: "f-tool-maximize",
                    hidden: !n.maximizable,
                    handler: $.proxy(n.$rY, n)
                };
                u = {
                    type: "tool",
                    iconFont: "close",
                    cls: "f-tool-close",
                    hidden: !n.closable,
                    handler: $.proxy(n.$guButtonESC, n)
                };
                n.customToolAhead ? (n.tools.push(r), n.tools.push(u)) : (t = 0, f = n.getTool("toggle"), f && (t = i.$PI(f, n.tools), t++), i.$W(t++, r, n.tools), i.$W(t++, u, n.tools))
            },
            $rY: function () {
                var n = this;
                n.collapsed || (n.maximized = !n.maximized, n.$rv())
            },
            afterAddToPage: function () {
                function r() {
                    var n = i.$L.$R(">.f-mask");
                    n.length || (n = $("<div>", {
                        "class": "f-mask " + i.$Pm
                    }).$g(i.$L));
                    n.$4(i.$L.$4(!0), !0);
                    n.$t(i.$L.$t(!0), !0);
                    n.show()
                }

                function u() {
                    var n = i.$L.$R(">.f-mask");
                    n.length && n.hide()
                }

                function f() {
                    i.modal || (n.$L7 || (n.$L7 = $("<div>", {
                        "class": "f-mask f-mask-resizing"
                    }).$g("body")), n.$L7.css({
                        width: $("body").$4(),
                        height: $(document).$5()
                    }).show())
                }

                function e() {
                    i.modal || n.$L7 && n.$L7.length && n.$L7.hide()
                }
                var i = this;
                i._super();
                n.enableShim && i.$v.insertBefore(i.$P);
                i.draggable && i.$9 && i.$9.length && i.$P.draggable({
                    containment: "document",
                    iframeFix: !0,
                    helper: function () {
                        var n = $("<div>").attr({
                            "class": i.$P.attr("class"),
                            style: i.$P.attr("style")
                        }).css("opacity", .8);
                        return i.$9.clone().$g(n), n
                    },
                    handle: i.$9,
                    cancel: ".f-tool .ui-icon",
                    start: function (t, r) {
                        i.$P.hide();
                        n.wndManager.addActive(i);
                        r.helper.css("z-index", n.wndManager.getZIndex() + 2)
                    },
                    drag: function (t, r) {
                        if (n.enableShim) {
                            var u = r.position.top,
                                f = r.position.left;
                            u < 0 && (u = 0);
                            i.$v.css({
                                top: Math.floor(u + n.$tN),
                                left: Math.floor(f + n.$gc)
                            })
                        }
                    },
                    stop: function (n, r) {
                        var u = r.position.top,
                            f = r.position.left;
                        u < 0 && (u = 0);
                        i.top = u - $(t).scrollTop();
                        i.left = f - $(t).scrollLeft();
                        i.$P.show();
                        i.$b()
                    }
                });
                i.resizable && i.$P.resizable({
                    containment: "document",
                    helper: "ui-resizable-helper " + i.$Pm,
                    start: function (t, i) {
                        n.$Lv = !0;
                        f();
                        r();
                        i.helper.css("z-index", n.wndManager.getZIndex() + 2)
                    },
                    resize: function (t, r) {
                        if (n.enableShim) {
                            var u = r.helper.$4() + 1,
                                f = r.helper.$t() + 1,
                                e = r.originalSize.width,
                                o = r.originalSize.height;
                            u < e && (u = e);
                            f < o && (f = o);
                            i.$v.css({
                                width: u + n.$gQ,
                                height: f + n.$g7
                            })
                        }
                    },
                    stop: function (t, r) {
                        n.$Lv = !1;
                        e();
                        i.width = r.helper.$4() + 1;
                        i.height = r.helper.$t() + 1;
                        u();
                        i.$b()
                    }
                });
                i.hidden || i.show()
            },
            afterInitElHidden: function () {},
            $rv: function () {
                var n = this;
                n.maximized ? n.maximize() : n.restore()
            },
            __doLayout: function () {
                function i() {
                    return n.dependsViewPortSize || n.fixedPosition || $("body").css("overflow") === "hidden" ? n.$La() : n.$r1()
                }
                var n = this,
                    t = i();
                if (!t.width || !t.height) {
                    n._super();
                    return
                }
                n.maximized ? (n.$P.css({
                    left: 0,
                    top: 0
                }), n.width = t.width, n.height = t.height, n._super(), t = i(), (t.width != n.width || t.height != n.height) && (n.width = t.width, n.height = t.height, n._super())) : (f(n.options.height) || n.percentHeight && (n.height = Math.floor(t.height * n.percentHeight)), f(n.options.width) || n.percentWidth && (n.width = Math.floor(t.width * n.percentWidth)), n._super(), n.fixedPosition ? n.$4z(t) : n.$4V(t));
                n.$gO()
            },
            $LI: function (n, t, i, r) {
                var u = this,
                    s, e, o;
                return u.constrainInitialSize ? (s = !1, f(i) && i + t.height > n.height && (e = n.height - i, e < u.minHeight && (e = u.minHeight), e != u.height && (u.height = e, s = !0)), f(r) && r + t.width > n.width && (o = n.width - r, o < u.minWidth && (o = u.minWidth), o != u.width && (u.width = o, s = !0)), s) ? u.$ru && (new Date).getTime() - u.$ru < 300 ? !1 : (u.$ru = (new Date).getTime(), u.__doLayout(), !0) : !1 : !1
            },
            $4V: function (n) {
                var i = this,
                    e = i.$dg(),
                    o = i.positionSideSpace,
                    r, u;
                (f(i.top) ? r = i.top : i.positionY == "top" ? r = o : i.positionY == "center" ? (r = (n.height - e.height) / 2, i.goldenPosition && (r = n.height - n.height / 1.618 - e.height / 2)) : r = n.height - e.height, u = f(i.left) ? i.left : i.positionX == "left" ? o : i.positionX == "center" ? (n.width - e.width) / 2 : n.width - e.width, r < o && (r = o), u < o && (u = o), r = Math.floor(r), u = Math.floor(u), i.$LI(n, e, r, u)) || (i.left = u, i.top = r, i.$P.css({
                    left: Math.floor(u + $(t).scrollLeft()),
                    top: Math.floor(r + $(t).scrollTop()),
                    right: "auto",
                    bottom: "auto"
                }))
            },
            $4z: function (n) {
                var r = this,
                    e = r.$dg(),
                    u = r.positionSideSpace,
                    t, i, o, s;
                (t = i = o = s = "auto", f(r.left) ? i = r.left : r.positionX === "left" ? i = u : r.positionX === "center" ? i = (n.width - e.width) / 2 : o = u, f(r.top) ? t = r.top : r.positionY === "top" ? t = u : r.positionY === "center" ? t = (n.height - e.height) / 2 : s = u, f(t) && t < u && (t = u), f(i) && i < u && (i = u), f(t) && (t = Math.floor(t)), f(i) && (i = Math.floor(i)), r.$LI(n, e, t, i)) || this.$P.css({
                    position: "fixed",
                    left: i,
                    top: t,
                    right: o,
                    bottom: s
                })
            },
            active: function () {
                n.wndManager.addActive(this)
            },
            $guButtonESC: function () {
                var n = this;
                n.closeAction === "hide" ? n.hide() : n.closeAction === "hiderefresh" ? n.hideRefresh() : (n.closeAction === "hidepostback" || n.closeAction === "close") && n.close()
            },
            close: function () {
                var n = this;
                n.$r("beforeclose") !== !1 && (n.hide(), n.$r("close"), n.$s("messagebox") && n.triggerNO())
            },
            $tK: function (n) {
                var t = this;
                if (t.maximized = n, n) {
                    if (t.$P.$N(t.$LF)) return;
                    t.$P.$d(t.$LF);
                    t.$dc = t.width;
                    t.$4m = t.height;
                    t.draggable && t.$P.draggable("disable");
                    t.resizable && t.$P.resizable("disable");
                    t.$P.$e(t.$0)
                } else {
                    if (!t.$P.$N(t.$LF)) return;
                    t.$P.$e(t.$LF);
                    u(t.$dc) || (t.width = t.$dc, t.height = t.$4m);
                    t.draggable && t.$P.draggable("enable");
                    t.resizable && t.$P.resizable("enable")
                }
            },
            $La: function () {
                var n = $(t);
                return {
                    width: n.$C(),
                    height: n.$5()
                }
            },
            $r1: function () {
                return {
                    width: $(document).$C(),
                    height: $(document).$5()
                }
            },
            $dg: function () {
                return {
                    width: this.$P.$4(),
                    height: this.$P.$t()
                }
            },
            maximize: function () {
                var n = this;
                a(n, "maximize") || n.$M() && (n.$tK(!0), n.$b(), n.$r("maximize"))
            },
            restore: function () {
                var n = this;
                a(n, "restore") || n.$M() && (n.$tK(!1), n.$b(), n.$r("restore"))
            },
            __showEl: function () {
                var t = this;
                y() && $("body").addClass("f-window-ie8fix").removeClass("f-window-ie8fix");
                t._super();
                t.iframeLoaded || t.setIFrameUrl(t.iframeUrl);
                n.wndManager.addActive(t);
                t.$rv()
            },
            $dT: function () {
                var n = this,
                    r;
                return n.iframe ? (r = i.$dx(n.target), r == t) ? !1 : !0 : !1
            },
            $4j: function () {
                var r = this,
                    f, e, o, s, n;
                return r.$dT() ? (f = i.$dx(r.target), !i.$Pw(f)) ? !1 : (e = r.$gv, u(e) && (e = r.$gv = f.F.$d9()), f.F[e] || (o = e + "_wrapper", s = f.$("#" + o), s.length ? s.html("") : f.F.appendFormNode('<div class="f-window-wrap" id="' + o + '"><\/div>'), n = $.extend({}, r.options, {
                    renderTo: "#" + o,
                    id: e,
                    $gv: e,
                    $dE: t,
                    $ty: r
                }), r.options.iframeName && (n.iframeName = r.options.iframeName + r.options.target), n.target = "_self", delete n.f_state, delete n.items, delete n.listeners, n.tools && n.tools.length && (n.tools = $.grep(n.tools, function (n) {
                    var t = !0;
                    return $.each(["toggle", "maximize", "close"], function (i, r) {
                        if (n.cls.indexOf("f-tool-" + r) >= 0) return t = !1, !1
                    }), t
                })), f.F.wnd.$eX(n)), f.F[e]) : !1
            },
            show: function (n, i, e, o) {
                var s = this,
                    h, c;
                if (s.$dT() && (h = s.$4j(), h)) {
                    h.show(n, i, e, o);
                    return
                }
                if (f(n) && (e = n, o = i, n = r, i = r), u(n) || s.setIFrameUrl(n), u(i) || s.setTitle(i), s.keepLastPosition || (s.top = s.options.top, s.left = s.options.left), f(e) && f(o) ? (s.width = e, s.height = o, s.maximized = !1, s.$dc = r) : s.keepLastSize || (s.width = s.options.width, s.height = s.options.height, s.maximized = s.options.maximized, s.$dc = r), s._super() === !1) return !1;
                s.autoFocus && s.$r8();
                y() && (c = s.$La(), c.width == 0 && c.height == 0 && t.setTimeout(function () {
                    s.show(e, o)
                }, 200))
            },
            $4A: function () {
                var u = this,
                    t = u.$t1(),
                    r, n;
                if (i.$gI("slide", t)) {
                    r = t.substr(5);
                    switch (r) {
                        case "Left":
                            n = "Right";
                            break;
                        case "Right":
                            n = "Left";
                            break;
                        case "Up":
                            n = "Down";
                            break;
                        case "Down":
                            n = "Up"
                    }
                    t = "slide" + n
                }
                return t + "Out"
            },
            __hideEl: function () {
                var n = this;
                n._super()
            },
            hide: function () {
                var n = this;
                if (!a(n, "hide")) {
                    if (n._super() === !1) return !1;
                    n.__hideFinished()
                }
            },
            __hideFinished: function () {
                var t = this;
                n.enableShim && t.$v.hide();
                t.modal && n.maskEl.hide();
                n.wndManager.removeActive(t);
                t.$P.$N(t.$LF) && t.$P.$e(t.$LF)
            },
            $r8: function () {
                var r = this,
                    i;
                if (n.$j) {
                    t.focus();
                    return
                }
                r.$Rz && (i = r.$Rz());
                i ? t.setTimeout(function () {
                    i.focus()
                }, 0) : t.focus()
            },
            refreshIFrame: function () {
                var n = this;
                a(n, "refreshIFrame") || n._super()
            },
            setIFrameUrl: function (n) {
                var t = this;
                a(t, "setIFrameUrl", n) || t._super(n)
            },
            setWidth: function (n) {
                var t = this;
                a(t, "setWidth", n) || t._super(n)
            },
            setHeight: function (n) {
                var t = this;
                a(t, "setHeight", n) || t._super(n)
            },
            setSize: function (n, t) {
                var i = this;
                a(i, "setSize", n, t) || i._super(n, t)
            },
            setTitle: function (n) {
                var t = this;
                a(t, "setTitle", n) || t._super(n)
            },
            hidePostBack: function () {
                this.close()
            },
            hideRefresh: function () {
                this.hide();
                t.location.reload()
            },
            hideExecuteScript: function (n) {
                var i = this;
                i.hide();
                n && (e(n) ? new Function(n)() : n.apply(t))
            },
            getIFrameWindow: function () {
                var t = this,
                    i;
                return t.$dT() ? (i = n.wnd.$gK(t), i) ? i.getIFrameWindow() : null : t._super()
            }
        });
        n.MessageBox = n.Window.extend({
            ccls: "f-messagebox",
            collapsible: !1,
            renderTo: "body",
            minWidth: 280,
            maxWidth: 900,
            minHeight: 0,
            maxHeight: 0,
            bodyPadding: 10,
            message: "",
            messageType: "",
            messageAlign: "left",
            messageIcon: "information",
            messageIconFont: "",
            messageIconList: ["information", "warning", "question", "error", "success"],
            buttonFill: !1,
            buttonPlain: !1,
            cancelButtonAhead: !1,
            buttonText: {
                ok: "OK",
                yes: "Yes",
                no: "No",
                cancel: "Cancel"
            },
            buttonIdList: ["ok", "cancel", "yes", "no"],
            showLoading: !1,
            displayMilliseconds: 0,
            autoFocus: !0,
            autoFocusButtonId: r,
            type: "messagebox",
            initEl: function () {
                var t = this,
                    s, a, u, y, c, h, p, v, l, w, b, o, r, k;
                t.buttons || (t.buttons = t.messageType === "alert" ? ["ok"] : t.messageType === "confirm" || t.messageType === "prompt" ? t.cancelButtonAhead ? ["cancel", "ok"] : ["ok", "cancel"] : []);
                t.messageType === "prompt" && (t.promptConfig = t.promptConfig || {
                    multiLine: !1,
                    defaultValue: ""
                });
                (t.messageType === "notify" || t.messageType === "prompt") && (t.autoFocus = !1);
                s = [];
                a = t.buttons;
                a && a.length && ($.each(a, function (n, r) {
                    var f = "",
                        u = {
                            type: "button"
                        };
                    e(r) ? (f = r, u.text = t.buttonText[f]) : (f = r.buttonId || r.id, $.extend(u, r));
                    u.buttonId = f;
                    u.listeners = {
                        click: function (n) {
                            t.$dq(n, f)
                        }
                    };
                    delete u.id;
                    (t.buttonFill || t.buttonPlain) && i.$Ls(u, {
                        flex: 1
                    });
                    s.push(u)
                }), u = {
                    type: "toolbar",
                    align: "center",
                    position: "bottom"
                }, t.buttonPlain ? (u.items = [{
                    type: "buttongroup",
                    layout: "hbox",
                    items: s
                }], u.layout = "fit", u.cls = "f-toolbar-buttonplain") : (u.items = s, t.buttonFill && (u.cls = "f-toolbar-buttonfill", u.layout = {
                    childMargin: "0 5 0 0",
                    type: "hbox"
                }, s[s.length - 1].margin = "0")), t.bars = [u]);
                f(t.width) && (t.width < t.minWidth ? t.minWidth = t.width : t.width > t.maxWidth && (t.maxWidth = t.width));
                t._super();
                t.$P.$d("f-window f-shadow");
                t.$P.css("z-index", n.$gx);
                t.messageType && t.$P.$d(t.$B(t.messageType));
                y = $("<table>", {
                    "class": t.$B("table")
                });
                c = $("<tr>");
                (t.messageIcon || t.messageIconFont) && (h = $("<td>", {
                    "class": t.$B("iconct")
                }), v = t.$B("icon"), t.messageIconFont ? (t.messageIconFont.indexOf("f-icon-") === -1 && (t.messageIconFont = "f-icon-" + t.messageIconFont), p = $("<i>", {
                    "class": v + " ui-icon " + t.messageIconFont
                }).$g(h)) : p = i.$_(t.messageIcon, t.messageIconList) ? $("<i>", {
                    "class": v + " ui-icon f-messageicon-" + t.messageIcon
                }).$g(h) : $("<img>", {
                    "class": v,
                    src: t.messageIcon
                }).$g(h), h.$g(c), t.$4$ = p, t.$RL = h);
                t.showLoading && $("<td>", {
                    "class": t.$B("loadingct"),
                    html: '<div class="f-loading"><div class="f-loading-img"><img src="' + n.loadingImage + '"/><\/div><\/div>'
                }).$g(c);
                l = $("<td>", {
                    "class": t.$B("messagect")
                });
                w = $("<div>", {
                    "class": t.$B("message"),
                    html: t.message
                }).$g(l);
                t.messageAlign !== "left" && w.$d("f-align-" + t.messageAlign);
                t.$BR = w;
                t.messageType === "prompt" && (o = {
                    renderTo: l,
                    cls: t.$B("prompt-input")
                }, r = t.promptConfig, r.defaultValue && (o.value = r.defaultValue), r.required && (o.required = !0), r.multiLine ? (r.multiLineHeight && (o.height = r.multiLineHeight), b = new n.TextArea(o)) : (r.inputType && (o.inputType = r.inputType), k = t.$RV(), k && (o.enterClickControl = k.id), b = new n.TextBox(o)), t.$db = b);
                l.$g(c);
                c.$g(y);
                y.$g(t.$L);
                t.$4I = l
            },
            $dq: function (n, t) {
                var u = this,
                    f;
                if (o(n) || (t = n, n = r), u.messageType !== "prompt" || !i.$_(t, ["yes", "ok"]) || (f = u.$db.validate(), f)) {
                    u.hide();
                    try {
                        u.handler && u.handler.apply(this, [n, t])
                    } catch (e) {}
                }
            },
            isAlert: function () {
                var t = this,
                    i = !1,
                    n;
                return t.buttons.length === 1 && (n = t.buttons[0], e(n) || (n = n.buttonId || n.id), (n === "yes" || n === "ok") && (i = !0)), i
            },
            triggerYES: function () {
                this.$r9(["yes", "ok"])
            },
            triggerNO: function () {
                var n = this;
                n.isAlert() ? n.$dq("cancel") : n.$r9(["no", "cancel"])
            },
            $r9: function (n) {
                var t = this,
                    i = t.$rq(n);
                i && t.$dq(i)
            },
            $rq: function (n) {
                var r = this,
                    t = "";
                return $.each(r.buttons, function (r, u) {
                    var f = u;
                    return e(u) || (f = u.buttonId || u.id), i.$_(f, n) ? (t = f, !1) : void 0
                }), t
            },
            $RV: function () {
                return this.getButton(["yes", "ok"])
            },
            $Rz: function () {
                var t = this,
                    i = t.autoFocusButtonId,
                    n;
                return u(i) || (n = t.getButton(i)), n || (n = t.$RV()), n
            },
            getButton: function (n) {
                var r = this,
                    u, i, t, f;
                return v(n) && (n = r.$rq(n)), i = r.bars, i.length && i[0].items.length && (t = i[0], t.items && t.items.length && (f = t.items[0].isType("buttongroup") ? t.items[0].items : t.items, $.each(f, function (t, i) {
                    if (i.buttonId === n) return u = i, !1
                }))), u
            },
            hide: function () {
                var n = this;
                if (n._super() === !1) return !1
            },
            __hideFinished: function () {
                var t = this;
                t._super();
                delete n.$LL[t.id];
                t.$P.remove();
                n.wndManager.remove(t)
            },
            show: function () {
                var i = this;
                if (i._super() === !1) return !1;
                f(i.displayMilliseconds) && i.displayMilliseconds > 0 && t.setTimeout(function () {
                    i.hide()
                }, i.displayMilliseconds);
                n.$j || i.messageType === "prompt" && i.$db.focus()
            },
            __doLayout: function () {
                var n = this,
                    t;
                n._super();
                n.$RL && n.$RL.length && n.$RL.width(n.$4$.$4(!0));
                n.messageType === "prompt" && (t = n.$4I.$C(), n.$db.width = t, n.$db.$b())
            },
            getPromptValue: function () {
                var n = this,
                    t;
                return n.messageType === "prompt" && (t = n.$db.getValue()), t
            }
        });
        n.GroupPanel = n.Panel.extend({
            ccls: "f-grouppanel",
            _elTag: "fieldset",
            headerTag: "legend",
            type: "grouppanel",
            initEl: function () {
                var n = this;
                n._super();
                n.$P.$d(n.ccls);
                n.$9.$e(n.$Pe).$d(n.$B("header"));
                n.header && n.collapsible && (n.getTool("toggle").$P.off("click mouseenter mouseleave"), n.$9.click($.proxy(n.$gS, n)));
                n.$L.$e(n.$Y)
            },
            __doLayout: function () {
                var n = this;
                n._super();
                n.collapsible || n.$A.css({
                    "margin-left": 0,
                    cursor: "default"
                })
            }
        });
        n.Accordion = n.Panel.extend({
            ccls: "f-accordion",
            activePaneIndex: 0,
            fill: !0,
            showCollapseTool: !0,
            type: "accordion",
            initEl: function () {
                var n = this;
                n._super();
                n.$P.$d(n.ccls);
                n.showCollapseTool || n.$P.$d(n.$B("nocollapsetool"))
            },
            __doLayout: function () {
                var n = this;
                i.$Le(n.$P, ".f-accordionpane");
                n._super()
            },
            $L1: function () {
                var n = this,
                    r, t, i;
                n.$P.$d(n.$Pq());
                r = n.$L.$5();
                t = n.$L.$C();
                n.fill || n.$dn();
                i = n.$rs();
                $.each(n.items, function (r, u) {
                    u.$P.$d(n.$PJ());
                    u.width = t;
                    n.activePaneIndex === r && (u.height = i);
                    u.$b()
                });
                n.fill || n.$dm()
            },
            $rs: function () {
                var i = this,
                    e = i.$L.$5(),
                    u, n, t = e,
                    f;
                return $.each(i.items, function (r, f) {
                    var e = i.activePaneIndex !== r;
                    f.$dB(e);
                    e ? t -= f.$dM() : n = f;
                    u = f
                }), i.fill || (n ? (n.height = r, n.$b(), f = n.$P.$t(!0), f < t ? (t = f, u.$P.css("border-bottom-width", 1)) : u.$P.css("border-bottom-width", 0)) : t = 0), t
            },
            getActivePane: function () {
                return this.getActiveItem()
            },
            getActivePaneIndex: function () {
                return this.getActiveItemIndex()
            },
            getActivePaneId: function () {
                return this.getActiveItemId()
            },
            activeNextPane: function () {
                var t = this,
                    n = t.getActivePaneIndex();
                return n++, n >= t.items.length && (n = 0), t.activePane(n)
            },
            setActivePane: function (n, t) {
                var u = this,
                    f, s, e;
                return (o(n) || (t = n, n = r), f = u.getItem(t), !f) ? !1 : u.fill && f.isActived() ? (s = u.nearValidItemIndex(u.getActivePaneIndex()), u.setActivePane(n, s), !0) : (e = i.$PI(f, u.items), u.activePaneIndex === e && (e = -1), u.activePaneIndex = e, u.$J && (u.$r("panechange", [n, f]), u.$b()), !0)
            },
            activePane: function () {
                return this.setActivePane.apply(this, arguments)
            }
        });
        $.extend(n.Accordion.prototype, n.$rV);
        n.AccordionPane = n.Panel.extend({
            ccls: "f-accordionpane",
            border: !1,
            header: !0,
            collapsible: !0,
            type: "accordionpane",
            initEl: function () {
                var n = this;
                n._super();
                n.$P.$d(n.ccls);
                n.$9.$d(n.$B("header"));
                n.header && n.collapsible && (n.getTool("toggle").$P.off("click mouseenter mouseleave"), n.$9.click($.proxy(n.$gw, n)));
                n.$PG(n.$9, n.$B("hover"), n.$P)
            },
            $gw: function (n) {
                this.parent.activePane(n, this)
            },
            $dB: function (n) {
                var t = this,
                    i;
                t._super(n);
                i = t.$B("selected");
                n ? t.$P.$e(i) : t.$P.$d(i)
            },
            __doLayout: function () {
                var n = this;
                n._super()
            },
            isActived: function () {
                return !this.isCollapsed()
            },
            collapse: function () {
                var n = this;
                n.isActived() && n.parent.activePane(n)
            },
            expand: function () {
                var n = this;
                n.isActived() || n.parent.activePane(n)
            }
        });
        n.Toolbar = n.PanelBase.extend({
            pbcls: "f-toolbar",
            position: "top",
            align: "left",
            header: !1,
            headerStyle: !1,
            itemSpace: 8,
            defaultItemType: "toolbartext",
            title: "",
            $gh: "f-toolbar-item",
            type: "toolbar",
            initEl: function () {
                var t = this;
                t._super();
                t.headerStyle && (t.headerStyle = !1, n.$q("F.Toolbar - headerStyle"));
                t.title && (t.title = "", n.$q("F.Toolbar - title"));
                var r = t.pbcls + "-title",
                    i = $("<div>", {
                        "class": r
                    }),
                    u = $("<div>", {
                        "class": r + "-text",
                        html: t.title || " "
                    }).$g(i);
                i.prependTo(t.$L);
                t.$A = i;
                t.$L5 = u;
                t.$P.$d(t.pbcls + "-align-" + t.align + " f-panel-toolbar-" + t.position);
                t.headerStyle ? t.$P.$d(t.$Pe) : t.$P.$d(t.$Y);
                $.each(t.items, function (n, i) {
                    var r = t.__addItem(i);
                    r !== i && (t.items[n] = r)
                })
            },
            $g_: function () {},
            setTitle: function (n) {
                var t = this;
                t.title = n;
                t.$L5.html(n || " ")
            },
            __addItem: function (t, i, r) {
                var f = this,
                    u, e;
                return t === "-" ? t = new n.ToolbarSeparator : t === "->" && (t = new n.ToolbarFill), i = i || f.$L, u = f._super(t, i, r), e = f.$gh, u.$P.$N(e) || u.$P.$d(e), u
            },
            $4F: function () {
                var t = this,
                    i = [];
                return t.items.length && $.each(t.items, function (t, r) {
                    r instanceof n.ToolbarFill && i.push(t)
                }), i
            },
            $4n: function () {
                for (var u = this, n = 0, t = 0, f = u.items.length, i, r; t < f; t++) i = u.items[t], i.$P.is(":visible") && (r = i.$P.$t(!0), r > n && (n = r));
                return n
            },
            $gL: function (n, t) {
                var u = this,
                    r, e, i;
                for (f(n) || (n = 0), f(t) || (t = u.items.length - 1), r = 0, i = n; i <= t; i++) e = u.items[i], e.$P.is(":visible") && (r += e.$P.$4(), i !== t && (r += u.itemSpace));
                return r
            },
            $ds: function (n, t, i) {
                var f = this,
                    u, r, e, o;
                for (typeof i == "undefined" && (i = 0), u = n, e = i; u <= t; u++) r = f.items[u], o = (f.$L.$5() - r.$P.$t(!0)) / 2, r.$P.css("top", o), r.$P.css("left", e), r.$P.is(":visible") && (e += r.$P.$4(!0) + f.itemSpace)
            },
            $gf: function (n, t, i) {
                var f = this,
                    u, r, e, o;
                for (typeof i == "undefined" && (i = 0), u = t, e = i; u >= n; u--) r = f.items[u], o = (f.$L.$5() - r.$P.$t(!0)) / 2, r.$P.css("top", o), r.$P.css("right", e), r.$P.is(":visible") && (e += r.$P.$4(!0) + f.itemSpace)
            },
            __doLayout: function () {
                var n = this,
                    f, e, i, t, r, u;
                if (n.$A.$4(n.$L.$C(), !0), f = n.$Lu(), f) n._super();
                else if (n.items && n.items.length)
                    if (n.$LV(), e = n.$4n(), n.$L.$5(e), i = n.items.length - 1, t = n.$4F(), t.length)
                        if (t.length === 1) n.$ds(0, t[0] - 1), n.$gf(t[0] + 1, i);
                        else {
                            r = t[0];
                            u = t[1];
                            n.$ds(0, r - 1);
                            n.$gf(u + 1, i);
                            var o = r + 1,
                                s = u - 1,
                                a = n.$gL(o, s),
                                h = n.$gL(0, r - 1),
                                v = n.$gL(u + 1),
                                c = n.$L.innerWidth(),
                                l = (c - h - v - a) / 2 + h;
                            n.$ds(o, s, l)
                        }
                else if (n.align === "left") n.$ds(0, i);
                else if (n.align === "right") n.$gf(0, i);
                else {
                    var y = n.$gL(),
                        c = n.$L.innerWidth(),
                        l = (c - y) / 2;
                    n.$ds(0, i, l)
                }
            }
        });
        n.ToolbarItemBase = n.Component.extend({
            type: "toolbaritembase",
            initEl: function () {
                var n = this,
                    t;
                n._super();
                t = $("<div>", {
                    id: n.id,
                    "class": n.ccls + " f-toolbar-item"
                });
                n.el = t;
                n.$P = t
            }
        });
        n.ToolbarText = n.ToolbarItemBase.extend({
            ccls: "f-toolbar-text",
            text: "",
            type: "toolbartext",
            initEl: function () {
                var n = this;
                n._super();
                this.$P.html(this.text)
            },
            setText: function (n) {
                var t = this;
                t.$P.html(n);
                t.$J && t.parent.$b()
            },
            getText: function () {
                return this.$P.html()
            }
        });
        n.ToolbarFill = n.ToolbarItemBase.extend({
            ccls: "f-toolbar-fill",
            type: "toolbarfill",
            initEl: function () {
                var n = this;
                n._super()
            }
        });
        n.ToolbarSeparator = n.ToolbarItemBase.extend({
            ccls: "f-toolbar-separator",
            type: "toolbarseparator",
            initEl: function () {
                var n = this;
                n._super()
            }
        });
        n.Menu = n.Container.extend({
            ccls: "f-menu",
            renderTo: "body",
            hidden: !0,
            defaultItemType: "menuitem",
            $gh: "f-menu-item",
            type: "menu",
            initEl: function () {
                var n = this,
                    t;
                n._super();
                t = $("<ul>", {
                    id: n.id,
                    "class": n.ccls + " ui-corner-all f-shadow " + n.$Y
                });
                n.el = t;
                n.$P = t;
                $.each(n.items, function (t, i) {
                    var r = n.__addItem(i);
                    r !== i && (n.items[t] = r)
                });
                n.$dPEvents();
                n.$gW()
            },
            afterAddToPage: function () {
                var t = this;
                t._super();
                n.enableShim && t.$v.insertBefore(t.$P)
            },
            __doLayout: function () {
                var n = this;
                n._super();
                n.$LV()
            },
            $dPEvents: function () {
                function s(n) {
                    n.$P.$N("f-menu-separator") || n.$P.$N(i.$0) || !n.showHover || n.$L.$d(i.$h)
                }

                function r(n) {
                    n.$L.$e(i.$h)
                }

                function u(n) {
                    n.menu.target = n;
                    var t = i.$Ly() + 10;
                    n.menu.$P.css("z-index", t);
                    n.menu.show(n.$P, "right")
                }

                function f(n) {
                    $.each(i.items, function (t, i) {
                        i !== n && (r(i), i.menu && i.menu.hide())
                    })
                }
                var i = this,
                    e, o;
                if (n.$j) i.$P.on("click", "li.f-menu-item", function () {
                    var i = $(this),
                        t = n(i);
                    t.menu && (t.menu.$M() ? t.menu.hide() : u(t));
                    f(t)
                });
                else i.$P.on("mouseenter mouseleave", "li.f-menu-item", function (h) {
                    var l = $(this),
                        c = n(l);
                    i.$gj = !0;
                    t.clearTimeout(e);
                    t.clearTimeout(o);
                    h.type === "mouseenter" ? (s(c), c.menu && (c.menu.$gj = !1, e = t.setTimeout(function () {
                        u(c)
                    }, 200)), f(c)) : c.menu ? o = t.setTimeout(function () {
                        c.menu.$M() ? c.menu.$gj || (c.menu.hide(), r(c)) : (c.menu.hide(), r(c))
                    }, 100) : r(c)
                })
            },
            __addItem: function (t, i, r) {
                var e = this,
                    u, f;
                return t === "-" && (t = new n.MenuSeparator), u = e._super(t, i, r), f = e.$gh, u.$P.$N(f) || u.$P.$d(f), u
            },
            show: function (r, e, o) {
                var s = this,
                    c, h, g;
                s.$M() && s.hide();
                s.$P.css({
                    width: "auto",
                    height: "auto"
                });
                s._super();
                $.each(s.items, function (n, t) {
                    var i = t.$L;
                    i.$N(s.$h) && i.$e(s.$h)
                });
                var l = s.$P.$4(!0),
                    a = s.$P.$t(!0),
                    b = $(t).$C(),
                    v = $(t).$5(),
                    k = $(t).scrollLeft(),
                    y = $(t).scrollTop(),
                    nt = s.$Ly(),
                    d = n.wndManager.getZIndex() + 10;
                if (!w(nt) && nt > d || (s.zIndex = d, s.$P.css("z-index", d)), u(r)) c = n.$m.left + 1, h = n.$m.top + 1, c + l - k > b && (c -= l), h + a - y > v && (h = v - a + y, h < 0 && (h = 0));
                else if (f(r) && f(e)) c = r, h = e;
                else if (r = $(r), r.length) {
                    g = r;
                    var p = r.offset(),
                        tt = r.$4(),
                        it = r.$t(),
                        c = p.left,
                        h = p.top;
                    e === "right" ? (c += tt, c + l - k > b && (c = p.left - l), h + a - y > v && (h = v - a + y, h < 0 && (h = 0, s.$P.outerWidth(s.$P.outerWidth(!0) + i.$ro()), s.$P.outerHeight(v, !0)))) : (h += it, c + l - k > b && (c = p.left + tt - l), h + a - y > v && (h = p.top - a));
                    o && (c += o.left, h += o.top)
                }
                f(c) && f(h) && (g && (s.targetel = g), s.$P.css({
                    left: c,
                    top: h
                }), s.$gO(s.$k), n.$Pa(s.$P))
            },
            showBy: function (n, t, i) {
                n.$s && n.$P && (n = n.$P);
                this.show(n, t, i)
            },
            showAt: function (n, t) {
                this.show(n, t)
            },
            hide: function () {
                var t = this;
                if (t.$M()) {
                    if (t._super() === !1) return !1;
                    t.$gj = !1;
                    $.each(t.items, function (n, t) {
                        t.hidePopEl && t.hidePopEl();
                        t.menu && t.menu.hide()
                    });
                    n.enableShim && t.$v.hide()
                }
            },
            hideTopMenu: function () {
                this.getTopMenu().hide()
            },
            getTopMenu: function () {
                for (var t = this, n = t; n.target && n.target.$s("menuitembase");) n = n.target.parent;
                return n
            }
        });
        n.MenuItemBase = n.PanelBase.extend({
            pbcls: "f-menu-item",
            $Z: function (n) {
                var t = "f-menu-item";
                return n && (t += "-" + n), t
            },
            _elTag: "li",
            showHover: !0,
            type: "menuitembase",
            initEl: function () {
                var n = this;
                n._super();
                n.$P.$d(n.ccls);
                n.showHover || n.$P.css("cursor", "default")
            },
            $g_: function () {},
            hideTopMenu: function () {
                var n = this;
                n.parent.hideTopMenu()
            }
        });
        n.MenuItem = n.MenuItemBase.extend({
            icon: "",
            iconFont: "",
            href: "",
            hrefTarget: "_self",
            text: "",
            hideOnClick: r,
            type: "menuitem",
            initEl: function () {
                var t = this,
                    r, i, u;
                t._super();
                r = $("<a>", {
                    html: t.text,
                    "class": t.$Z("text")
                }).$g(t.$L);
                t.href ? r.attr("href", t.href).attr("target", t.hrefTarget) : r.attr("href", "javascript:;");
                t.menu && ($("<i>", {
                    "class": t.$Z("icon-arrowr") + " ui-icon"
                }).$g(t.$L), i = t.menu, s(i) && (u = n.$Ph(i.type || "menu"), i = new u(i)), i.doInit(), i != t.menu && (t.menu = i));
                t.$P.click($.proxy(t.$g$, t));
                t.icon ? t.setIcon(t.icon) : t.iconFont && t.setIconFont(t.iconFont)
            },
            setIcon: function (n) {
                var t = this,
                    i;
                t.icon = n;
                i = t.$L.$R("." + t.$Z("icon"));
                i.length && i.remove();
                n && $("<img>", {
                    "class": t.$Z("icon"),
                    src: n
                }).insertBefore(t.$L.$R("." + t.$Z("text")))
            },
            setIconFont: function (n) {
                var t = this,
                    i;
                t.iconFont = n;
                i = t.$L.$R("." + t.$Z("icon"));
                i.length && i.remove();
                n && (n.indexOf("f-icon-") === -1 && (n = "f-icon-" + n), $("<i>", {
                    "class": t.$Z("icon") + " ui-icon " + n
                }).insertBefore(t.$L.$R("." + t.$Z("text"))))
            },
            $g$: function (n) {
                var t = this;
                t.isDisabled() || t.$r("beforeclick", [n]) !== !1 && (t.$r("click", [n]) !== !1 && t.handler && t.handler.apply(t, [n]), u(t.hideOnClick) ? t.menu || t.hideTopMenu() : t.hideOnClick && t.hideTopMenu())
            },
            setHandler: function (n) {
                this.handler = n
            },
            setText: function (n) {
                var t = this;
                t.$P.$R("." + t.$Z("text")).html(n);
                t.$J && t.$b(!0)
            },
            getText: function () {
                var n = this;
                return n.$P.$R("." + n.$Z("text")).html()
            }
        });
        n.MenuSeparator = n.MenuItemBase.extend({
            ccls: "f-menu-separator",
            type: "menuseparator",
            initEl: function () {
                var n = this;
                n._super()
            },
            getText: function () {}
        });
        n.MenuCheckBox = n.MenuItemBase.extend({
            ccls: "f-menu-checkitem",
            checked: !1,
            group: "",
            hiddenName: "",
            text: "",
            type: "menucheckbox",
            initEl: function () {
                var n = this,
                    t, r, i;
                n._super();
                t = n.group ? "f-menu-radiobutton" : "f-menu-checkbox";
                n.checked && (t += " " + n.$p);
                $("<i>", {
                    "class": n.$Z("icon") + " ui-icon " + t
                }).$g(n.$L);
                r = $("<div>", {
                    html: n.text,
                    "class": n.$Z("text")
                }).$g(n.$L);
                n.menu && $("<i>", {
                    "class": n.$Z("icon-arrowr") + " ui-icon"
                }).$g(n.$L);
                n.hiddenName && (i = $("<input>", {
                    type: "hidden",
                    value: n.checked,
                    name: n.hiddenName
                }).$g(n.$L), n.$r4 = i, n.bodyHiddenEl = i);
                n.$P.click($.proxy(n.$g$, n))
            },
            $g$: function (n) {
                var t = this,
                    i, r;
                t.isDisabled() || (i = !t.isChecked(), t.setChecked(i), r = t.parent, t.group ? i && (t.$r("checkchange", [n]), r.$r("checkchange", [n, t, i]), r.$r("itemcheckchange", [n, t, i])) : (t.$r("checkchange", [n, i]), r.$r("checkchange", [n, t, i]), r.$r("itemcheckchange", [n, t, i])), t.$r("beforeclick", [n]) !== !1) && (t.$r("click", [n]) !== !1 && t.handler && t.handler.apply(t, [n]), t.group && t.hideTopMenu())
            },
            getCheckBoxEl: function () {
                return this.$P.$R("." + this.$Z("icon"))
            },
            isChecked: function () {
                var n = this,
                    t = n.getCheckBoxEl();
                return t.$N(n.$p)
            },
            setChecked: function (n) {
                var t = this,
                    i = t.getCheckBoxEl(),
                    r;
                t.group ? (i.$d("f-menu-radiobutton"), i.$e("f-menu-checkbox"), n && (r = t.parent, r.$s("menu") && $.each(r.items, function (n, i) {
                    if (i.$s("menucheckbox") && i.group === t.group) {
                        var r = i.getCheckBoxEl();
                        i === t ? (r.$d(t.$p), i.$Pn(!0)) : (r.$e(t.$p), i.$Pn(!1))
                    }
                }))) : (i.$d("f-menu-checkbox"), i.$e("f-menu-radiobutton"), n ? (i.$d(t.$p), t.$Pn(!0)) : (i.$e(t.$p), t.$Pn(!1)))
            },
            $Pn: function (n) {
                var t = this;
                t.hiddenName && t.$r4.val(n)
            },
            setText: function (n) {
                var t = this;
                t.$P.$R("." + t.$Z("text")).html(n);
                t.$J && t.$b(!0)
            },
            getText: function () {
                var n = this;
                return n.$P.$R("." + n.$Z("text")).html()
            }
        });
        n.Tree = n.Panel.extend({
            ccls: "f-tree",
            $PX: "f-tree-node",
            $dS: "f-tree-minimode",
            $G: "f-tree-node-unselectable",
            icons: !0,
            expandOnDblClick: !0,
            singleClickExpand: !1,
            singleExpand: !1,
            rootVisible: !1,
            nodeHyperLink: !1,
            enableTextSelection: !1,
            multiSelect: !1,
            keepCurrentSelection: !1,
            autoScroll: !0,
            autoLeafIdentification: !0,
            hideHScrollbar: !1,
            expanderToRight: !1,
            headerStyle: !1,
            miniMode: !1,
            miniModePopWidth: 200,
            type: "tree",
            initEl: function () {
                var t = this;
                t._super();
                t.nodeHyperLink && (t.nodeHyperLink = !1, n.$q("F.Tree - nodeHyperLink"));
                t.miniMode && (t.miniMode = !1, n.$q("F.Tree - miniMode"));
                t.hideHScrollbar && (t.hideHScrollbar = !1, n.$q("F.Tree - hideHScrollbar"));
                t.expanderToRight && (t.expanderToRight = !1, n.$q("F.Tree - expanderToRight"));
                t.headerStyle && (t.headerStyle = !1, n.$q("F.Tree - headerStyle"));
                t.selectedNodes = u(t.selectedNodes) ? [] : i.$Pf([], t.selectedNodes);
                t.$ga = t.id + "_node_";
                t.$P.$d(t.ccls);
                t.$4Us();
                t.data ? t.loadData(t.data) : t.rootNode && t.setRootNode(t.rootNode)
            },
            $4f: function () {
                function t(t, i) {
                    var r = n.$B(i);
                    t ? n.$P.$d(r) : n.$P.$e(r)
                }
                var n = this;
                n.miniMode && (n.headerStyle = !0);
                t(!n.icons, "noicons");
                t(n.hideHScrollbar, "nohscroll");
                t(n.expanderToRight, "expandertoright");
                t(n.miniMode, "minimode");
                t(n.headerStyle, "headerstyle")
            },
            $4Us: function () {
                var t = this;
                if (!n.$j) t.$L.on("mouseenter mouseleave", "." + t.$PX, function (n) {
                    var i = $(this);
                    i.$N(t.$G) || (n.type === "mouseenter" ? i.$d(t.$h) : n.type === "mouseleave" && i.$e(t.$h))
                });
                t.$L.on("click dblclick contextmenu", "." + t.$PX, function (n) {
                    var i = $(this),
                        u = t.getNodeData(i),
                        r = u.id;
                    i.$N(t.$G) || (n.type === "click" ? (t.$LE(n, i), t.$r("nodeclick", [n, r])) : n.type === "dblclick" ? (t.expandOnDblClick && t.$P7(n, i), t.$r("nodedblclick", [n, r])) : n.type === "contextmenu" && (t.$LE(n, i), t.$r("beforenodecontextmenu", [n, r]) === !1 && n.preventDefault()))
                });
                if (t.singleClickExpand) t.$L.on("click", "." + t.$PX, function (n) {
                    var i = $(this);
                    i.$N(t.$G) || t.$P7(n, i)
                });
                t.$L.on("click", ".f-tree-node .f-tree-expander", function (n) {
                    var i = $(this),
                        r = i.$PP("tr");
                    return t.$P7(n, r), !1
                });
                t.$L.on("click", ".f-tree-node .f-tree-checkbox", function (n) {
                    var i = $(this),
                        u = i.$PP("tr");
                    return t.$d0(n, u, r, !1), !1
                });
                if (!t.enableTextSelection && "onselectstart" in document.createElement("div")) t.$L.on("selectstart", function (n) {
                    $(n.target).is(":input") || n.preventDefault()
                })
            },
            $LE: function (n, t) {
                var i = this,
                    r = i.getNodeId(t),
                    f, u, s;
                if (!t.$N(i.$G)) {
                    if (i.multiSelect) {
                        if (n.shiftKey && i.$P$ && (f = i.$LY(i.$P$), f.length)) {
                            var h = f.index(),
                                e = t.index(),
                                c = Math.min(h, e),
                                l = Math.max(h, e),
                                o = [];
                            for (u = c; u <= l; u++) s = i.$D(i.$LY(u)), s.unselectable || o.push(s.id);
                            c === e && o.reverse();
                            i.selectNodes(n, o, !1);
                            return
                        }
                        if (i.keepCurrentSelection || n.ctrlKey) {
                            i.isNodeSelected(r) ? i.deselectNodes(n, r) : i.selectNodes(n, r, !0);
                            return
                        }
                    }
                    i.selectNodes(n, r, !1)
                }
            },
            loadData: function (n, t) {
                var i = this,
                    r, f;
                e(n) ? (r = i.getNodeData(n), r.children = t, i.$ti(r), r.expanded && i.expandNode(r)) : (t = n, f = i.rootNode, u(t) || (f = {
                    children: t
                }), i.setRootNode(f))
            },
            $ti: function (n) {
                var t = this,
                    i = n.children;
                t.autoLeafIdentification && (n.leaf = i && i.length ? !1 : !0);
                t.nodeDataBound && t.nodeDataBound.apply(t, [n]);
                i && i.length && $.each(i, function (n, i) {
                    t.$ti(i)
                })
            },
            setRootNode: function (n) {
                var r = this,
                    f, o, e;
                r.$4f();
                r.$ti(n);
                u(n) ? n = r.rootNode : (n.id = "root", n.expanded = !0, n.level = n.level || 0, n.leaf = !1, r.rootNode = n);
                r.miniMode ? (f = $("<ul>", {
                    "class": r.$B("minimode-list")
                }), r.$4Q(f, n), i.$PS(r.$L, ">." + r.$dS + "-list", f)) : (o = r.$tX(n, n.level, r.rootVisible), e = $("<table>", {
                    "class": "f-tree-table"
                }), e.html(o.join("")), i.$PS(r.$L, ">.f-tree-table", e));
                r.$J && r.$b();
                t.setTimeout(function () {
                    r.$r("dataload")
                }, 100)
            },
            $4Q: function (n, t) {
                var i = this;
                $.each(t.children, function () {
                    var t = this,
                        u = $("<li>", {
                            "class": i.$B("minimode-item") + " ui-widget-header",
                            "data-nodeid": t.id
                        }).$g(n),
                        f = $("<div>", {
                            "class": i.$B("minimode-item-inner")
                        }).$g(u),
                        r = $("<i>", {
                            "class": i.$B("minimode-icon") + " ui-icon"
                        }).$g(f);
                    t.icon ? (r.$d("f-tree-custom-icon"), r.css({
                        "background-image": "url(" + t.icon + ")"
                    })) : t.iconFont && r.$d("f-tree-custom-iconfont f-icon-" + t.iconFont);
                    t.qtip && u.attr("data-qtip", t.qtip)
                })
            },
            getRootNode: function () {
                return this.rootNode
            },
            showIcons: function () {
                var n = this;
                n.icons = !0;
                n.$P.$e("f-tree-noicons")
            },
            hideIcons: function () {
                var n = this;
                n.icons = !1;
                n.$P.$d("f-tree-noicons")
            },
            toggleIcons: function () {
                var n = this;
                n.icons = !n.icons;
                n.$P.$P2("f-tree-noicons")
            },
            $d_: function (n, t) {
                var r = this,
                    i = n.$R(".f-tree-folder"),
                    u = !t.icon && !t.iconFont;
                t.leaf ? (n.$d(r.$PX + "-leaf"), u && i.$d("f-icon-file")) : t.expanded ? (n.$d(r.$LC), u && (i.$d("f-icon-folder-open"), i.$e("f-icon-folder"))) : (n.$e(r.$LC), u && (i.$d("f-icon-folder"), i.$e("f-icon-folder-open")))
            },
            $tX: function (t, r, f) {
                var e = this,
                    c, o, y, h, l, w, b, k, a, d, v, nt, tt;
                if (e.$gN(t), c = [], f) {
                    o = [e.$PX];
                    e.headerStyle && (r === 1 ? o.push(e.$Pe) : o.push(e.$Y));
                    y = ["f-tree-cell"];
                    e.enableTextSelection || y.push(e.$Lo);
                    var it, p = "f-tree-cell-inner",
                        s = [],
                        g = r;
                    e.rootVisible || g--;
                    i.$dQ(g, function () {
                        s.push('<i class="f-tree-cell-icon"><\/i>')
                    });
                    s.push('<i class="f-tree-cell-icon ui-icon f-tree-expander"><\/i>');
                    u(t.checked) || (t.checked && o.push(e.$p), s.push('<i class="f-tree-cell-icon ui-icon f-tree-checkbox"><\/i>'));
                    h = [e.$B("cell-icon"), "ui-icon", "f-tree-folder"];
                    l = !t.icon && !t.iconFont;
                    t.leaf ? (o.push(e.$PX + "-leaf"), l && h.push("f-icon-file")) : t.expanded ? (o.push(e.$LC), l && h.push("f-icon-folder-open")) : l && h.push("f-icon-folder");
                    w = "";
                    t.icon ? (h.push("f-tree-custom-icon"), w = 'style="background-image:url(' + t.icon + ');"') : t.iconFont && (h.push("f-tree-custom-iconfont"), h.push("f-icon-" + t.iconFont));
                    s.push('<i class="' + h.join(" ") + '" ' + w + "><\/i>");
                    t.unselectable && (t.unselectable = !1, n.$q("F.Tree - node - unselectable"));
                    t.id && i.$_(t.id, e.selectedNodes) && (o.push(e.$S), o.push(e.$PX + "-selected"));
                    t.cls && o.push(t.cls);
                    b = t.text;
                    k = t.hrefTarget ? t.hrefTarget : "_blank";
                    !e.nodeHyperLink && t.href ? s.push('<a class="f-tree-cell-text" href="' + t.href + '" target="' + k + '">' + b + "<\/a>") : s.push('<span class="f-tree-cell-text">' + b + "<\/span>");
                    a = s.join("");
                    e.nodeHyperLink && t.href ? a = '<a class="' + p + '" href="' + t.href + '" target="' + k + '">' + s.join("") + "<\/a>" : (it = $("<div>", {
                        "class": p
                    }), a = '<div class="' + p + '">' + s.join("") + "<\/div>");
                    d = [];
                    v = i.$dG(t.attrs, !0, "data-nodeid");
                    v["data-nodeid"] = t.id;
                    t.qtip && (v["data-qtip"] = t.qtip);
                    $.each(v, function (n, t) {
                        d.push(n + '="' + i.$PM(t) + '"')
                    });
                    nt = '<td class="' + y.join(" ") + '">' + a + "<\/td>";
                    tt = '<tr class="' + o.join(" ") + '" ' + d.join(" ") + ">" + nt + "<\/tr>";
                    c.push(tt);
                    t.level = r
                }
                return t.children && t.children.length && t.expanded && (r++, $.each(t.children, function (n, t) {
                    $.merge(c, e.$tX(t, r, !0))
                })), c
            },
            $gN: function (n) {
                var t = this;
                return n.id || (t.$tC || (t.$tC = 0), n.id = "f_tree_node_" + t.$tC, t.$tC++), n.id
            },
            getNodeId: function (n) {
                var t = this;
                return f(n) && (n = t.$L.$R("." + t.$PX + ":eq(" + n + ")")), c(n) ? $(n).attr("data-nodeid") : s(n) ? n.id : n
            },
            getNodeEl: function (n) {
                var t = this;
                return c(n) ? $(n) : i.$t8(t.bodyEl, "." + t.$PX, "data-nodeid", t.getNodeId(n))
            },
            $LY: function (n) {
                return this.getNodeEl(n)
            },
            getNodeData: function (n) {
                var t = this,
                    i, r;
                return s(n) ? n : (r = t.getNodeId(n), t.$F(function (n) {
                    if (n.id === r) return i = n, !1
                }), i)
            },
            $D: function (n) {
                return this.getNodeData(n)
            },
            getNodePath: function (n) {
                var t = this,
                    r = t.$D(n),
                    i = "";
                return t.$F(function (n, t) {
                    if (n.id === r.id) return i = t.join("/"), !1
                }), i
            },
            moveNode: function (n, t, r) {
                function s(n) {
                    u.$F(function (t, r, u, f) {
                        if (t.id === n) return i.$P5(u, f), !1
                    })
                }

                function h(n, t) {
                    u.$F(function (r, u, f, e) {
                        if (r.id === n) return i.$W(f, t, e), !1
                    })
                }

                function c(n, t) {
                    u.$F(function (r, u, f, e) {
                        if (r.id === n) return i.$W(f + 1, t, e), !1
                    })
                }

                function l(n, t) {
                    u.$F(function (i) {
                        if (i.id === n) return i.children = i.children || [], i.children.push(t), !1
                    })
                }

                function a(n, t) {
                    u.$F(function (r) {
                        if (r.id === n) return r.children = r.children || [], i.$W(0, t, r.children), !1
                    })
                }
                var u = this,
                    f = u.$D(n),
                    e = u.$D(t),
                    o;
                if (f && e && (o = u.getNodePath(e), !i.$_(f.id, o.split("/")))) {
                    s(f.id);
                    r = r || "append";
                    switch (r) {
                        case "append":
                            l(e.id, f);
                            break;
                        case "prepend":
                            a(e.id, f);
                            break;
                        case "before":
                            h(e.id, f);
                            break;
                        case "after":
                            c(e.id, f)
                    }
                    u.loadData()
                }
            },
            isNodeSelected: function (n) {
                return i.$_(n, this.selectedNodes)
            },
            $rz: function (n, t) {
                var u = this,
                    e, f;
                o(n) || (t = n, n = r);
                e = u.$L.$R("." + u.$S);
                e.$e(u.$S).$e(u.$PX + "-selected");
                f = [];
                $.each(u.selectedNodes, function (n, t) {
                    var i = u.$LY(t);
                    i.$d(u.$S).$d(u.$PX + "-selected");
                    f.push(t)
                });
                u.selectedNodes = f;
                i.$8(t) !== i.$8(u.selectedNodes) && u.$r("selectionchange", [n])
            },
            selectNode: function (n, t, i, u) {
                var f = this,
                    e;
                o(n) || (u = i, i = t, t = n, n = r);
                e = f.$D(t);
                f.selectNodes(n, e.id, i, u)
            },
            selectNodes: function (n, t, f, e) {
                var s = this,
                    l, v, a, c, h, y;
                if (o(n) || (e = f, f = t, t = n, n = r), u(e) && (e = !0), t = $.makeArray(t), l = $.merge([], s.selectedNodes), f ? i.$Pf(s.selectedNodes, t, !0) : e ? (v = $.grep(l, function (n) {
                        var t = s.$D(n);
                        return t && t.unselectable
                    }), s.selectedNodes = i.$Pf(v, t, !0)) : s.selectedNodes = t, s.$rz(n, l), a = !1, t.length)
                    for (c = t.length - 1; c >= 0; c--)
                        if (h = t[c], y = s.$D(h), y) {
                            h !== s.$P$ && s.$r("nodeselect", [n, h]);
                            s.$P$ = h;
                            a = !0;
                            break
                        } a || (s.$P$ = r)
            },
            deselectNode: function (n, t) {
                var i = this,
                    u;
                o(n) || (t = n, n = r);
                u = i.$D(t);
                i.deselectNodes(n, [u.id])
            },
            deselectNodes: function (n, t) {
                var u = this,
                    f, e;
                o(n) || (t = n, n = r);
                t = $.makeArray(t);
                t.length && i.$_(u.$P$, t) && (u.$P$ = r);
                f = $.merge([], u.selectedNodes);
                $.each(t, function (n, t) {
                    var r = i.$PI(t, u.selectedNodes);
                    r >= 0 && i.$P5(r, u.selectedNodes)
                });
                u.$rz(n, f);
                t.length && (e = t[t.length - 1], u.$r("nodedeselect", [n, e]))
            },
            getSelectedNodes: function (n) {
                var t = this;
                return n ? $.map(t.selectedNodes, function (n) {
                    return t.$D(n)
                }) : $.merge([], t.selectedNodes || [])
            },
            getSelectedNode: function (n) {
                var i = this,
                    t = i.getSelectedNodes(n);
                return t.length ? t[0] : r
            },
            expandPath: function (t) {
                var i = this,
                    r = t.split("/");
                n.noLayout(function () {
                    $.each(r, function (n, t) {
                        i.expandNode(t)
                    })
                });
                i.$b(!0)
            },
            expandNodePath: function (n) {
                var t = this,
                    i = t.getNodePath(n);
                t.expandPath(i)
            },
            expandNode: function (t, i, u) {
                var f = this;
                o(t) || (u = i, i = t, t = r);
                u ? (n.noLayout(function () {
                    f.$F(function (n) {
                        f.$P7(t, n, !0)
                    }, i)
                }), f.$b(!0)) : f.$P7(t, i, !0)
            },
            expandAll: function () {
                var t = this;
                n.noLayout(function () {
                    t.$F(function (n) {
                        t.expandNode(n)
                    })
                });
                t.$b(!0)
            },
            collapseNode: function (t, i, u) {
                var f = this;
                o(t) || (u = i, i = t, t = r);
                u ? (n.noLayout(function () {
                    f.$F(function (n) {
                        f.$P7(t, n, !1)
                    }, i)
                }), f.$b(!0)) : f.$P7(t, i, !1)
            },
            collapseAll: function () {
                var t = this;
                n.noLayout(function () {
                    t.$F(function (n) {
                        t.collapseNode(n)
                    })
                });
                t.$b(!0)
            },
            $P7: function (n, t, i) {
                var f = this,
                    e, c, l, s, v, y, p, a, h, w;
                if ((o(n) || (i = t, t = n, n = r), e = f.$D(t), c = e.level, !e.leaf) && (l = !e.expanded, u(i) || (l = i), e.expanded = l, s = f.$LY(t), s.length !== 0)) {
                    if (v = s.$N(f.$LC), l) {
                        if (v) return;
                        if (!e.leaf && !(e.children && e.children.length)) {
                            f.$r("nodelazyload", [n, e.id]);
                            return
                        }
                        f.$d_(s, e);
                        y = f.$tX(e, c, !1).join("");
                        p = s.next();
                        p.length ? p.before(y) : s.$PP("table").append(y);
                        f.$r("nodeexpand", [n, e.id]);
                        f.singleExpand && s.siblings().each(function () {
                            var t = $(this),
                                i = f.$D(t);
                            i && c === i.level && f.$P7(n, t, !1)
                        })
                    } else {
                        if (!v) return;
                        for (f.$d_(s, e), a = $(), h = s.next(); h.length;) {
                            if (w = f.$D(h), w.level > c) a = a.add(h);
                            else break;
                            h = h.next()
                        }
                        a.remove();
                        f.$r("nodecollapse", [n, e.id])
                    }
                    f.$b(!0)
                }
            },
            checkNodes: function (n, t, i) {
                var r = this;
                $.each(n, function (n, u) {
                    r.checkNode(u, t, i)
                })
            },
            uncheckNodes: function (n, t, i) {
                var r = this;
                $.each(n, function (n, u) {
                    r.uncheckNode(u, t, i)
                })
            },
            checkNode: function (n, t, i) {
                var r = this;
                t ? r.$F(function (n) {
                    u(n.checked) || r.$d0(n, !0, i)
                }, n) : r.$d0(n, !0, i)
            },
            uncheckNode: function (n, t, i) {
                var r = this;
                t ? r.$F(function (n) {
                    u(n.checked) || r.$d0(n, !1, i)
                }, n) : r.$d0(n, !1, i)
            },
            $d0: function (n, t, i, f) {
                var s = this,
                    c, h, l, e;
                (o(n) || (f = i, i = t, t = n, n = r), c = s.$LY(t), h = s.$D(t), u(h.checked)) || (l = h.checked, e = !l, u(i) || (e = i), e !== l) && (h.checked = e, e ? c.$d(s.$p) : c.$e(s.$p), f || s.$r("nodecheck", [n, h.id, e]))
            },
            getCheckedNodes: function (n) {
                var t = [];
                return this.$F(function (i) {
                    !u(i.checked) && i.checked && (n ? t.push(i) : t.push(i.id))
                }), t
            },
            $F: function (n, t) {
                function e(t) {
                    for (var u, s, f = 0, o = t.length; f < o; f++) {
                        if (u = t[f], i.$gN(u), r.push(u.id), s = n.apply(i, [u, r, f, t]), s === !1) return;
                        u.children && u.children.length && e(u.children);
                        r.pop()
                    }
                }
                var i = this,
                    r = [],
                    f;
                f = u(t) ? [i.getRootNode()] : [i.$D(t)];
                e(f)
            },
            resolveNode: function () {
                return this.$F.apply(this, arguments)
            },
            __doLayout: function () {
                var t = this,
                    r;
                t._super();
                t.hideHScrollbar && (r = i.$P4(t.$L), t.$L.$R("." + t.$PX).each(function () {
                    var f = $(this),
                        i = f.$R(".f-tree-cell-text"),
                        u = r - i.position().left;
                    t.expanderToRight && (u -= n.largeMode ? 30 : 24);
                    i.outerWidth(u, !0)
                }))
            }
        });
        n.TabStrip = n.Panel.extend({
            ccls: "f-tabstrip",
            scrollerCls: "f-tabstrip-scroller",
            hasscrollerCls: "f-tabstrip-hasscroller",
            tabPosition: "top",
            tabAlign: "left",
            tabFill: !1,
            tabSpace: 2,
            tabBorderColor: !1,
            tabPlain: !1,
            tabInside: !1,
            activeTabIndex: 0,
            layout: "card",
            collapsible: !1,
            header: !0,
            scrollStep: 30,
            enableCloseMenu: !1,
            closeTabText: "Close Tab",
            closeOtherTabsText: "Close Other Tabs",
            closeAllTabsText: "Close All Tabs",
            closeOnDblClick: !1,
            enableAnimation: r,
            animationType: r,
            showTabHeader: !0,
            defaultItemType: "tab",
            type: "tabstrip",
            initEl: function () {
                var t = this;
                $.extend(t, {
                    header: !0,
                    collapsible: !1,
                    title: "",
                    icon: "",
                    iconFont: ""
                });
                t._super();
                t.tabAlign !== "left" && (t.tabAlign = "left", n.$q("F.TabStrip - tabAlign"));
                t.tabFill && (t.tabFill = !1, n.$q("F.TabStrip - tabFill"));
                t.tabBorderColor && (t.tabBorderColor = !1, n.$q("F.TabStrip - tabBorderColor"));
                t.tabPlain && (t.tabPlain = !1, n.$q("F.TabStrip - tabPlain"));
                t.tabSpace !== 2 && (t.tabSpace = 2, n.$q("F.TabStrip - tabSpace"));
                t.closeOnDblClick && (t.closeOnDblClick = !1, n.$q("F.TabStrip - closeOnDblClick"));
                u(t.enableAnimation) || (t.enableAnimation = r, n.$q("F.TabStrip - enableAnimation"));
                t.tabInside && (t.tabPlain = !1);
                t.$P.$d(t.ccls);
                t.showTabHeader || t.$P.$d(t.$B("noheader"));
                t.enableCloseMenu && t.$4k();
                t.$P.$d(t.$B("position-" + t.tabPosition));
                t.tabFill ? t.$P.$d(t.$B("fill")) : t.$P.$d(t.$B("align-" + t.tabAlign));
                t.tabBorderColor && t.$P.$d(t.$B("bordercolor"));
                t.tabPlain ? (t.$P.$d(t.$B("plain")), t.$9.$e(t.$Pe).$d(t.$Y), t.$I.$d(t.$Y)) : t.$I.$d(t.$Pe);
                t.tabInside && t.$P.$d(t.$B("inside"));
                t.$9.$d(t.$B("header"));
                y() && (t.tabPosition === "left" ? t.tabPosition = "top" : t.tabPosition === "right" && (t.tabPosition = "bottom"));
                (t.tabPosition === "bottom" || t.tabPosition === "right") && t.$9.$g(t.$P);
                t.$P.$d(t.$B("header-" + t.tabPosition))
            },
            getCloseMenu: function () {
                var n = this;
                return n.$Pc || n.$r2(), n.$Pc
            },
            $r2: function () {
                function f(n) {
                    if (t.$Pc) {
                        var i = t.$Pc.target;
                        n === "tab" ? t.hideTab(i) : n === "others" ? t.hideOtherTabs(i) : n === "all" && t.hideAllTabs()
                    }
                }
                var t = this,
                    i, r, u;
                i = new n.MenuItem({
                    text: t.closeTabText,
                    handler: function () {
                        f("tab")
                    }
                });
                r = new n.MenuItem({
                    text: t.closeOtherTabsText,
                    handler: function () {
                        f("others")
                    }
                });
                u = new n.MenuItem({
                    text: t.closeAllTabsText,
                    handler: function () {
                        f("all")
                    }
                });
                t.$guTabItem = i;
                t.$guOtherTabsItem = r;
                t.$guAllTabsItem = u;
                t.$Pc = new n.Menu({
                    items: [i, "-", r, u]
                })
            },
            $4k: function () {
                var n = this;
                n.$9.on("contextmenu", ".f-tab-header", function (t) {
                    var r = $(this),
                        i = n.items[r.index()];
                    n.$Pc || n.$r2();
                    n.$Pc.target = i;
                    n.$guTabItem.enable();
                    i.isEnabled() && i.closable || n.$guTabItem.disable();
                    n.$guOtherTabsItem.enable();
                    n.getClosableTabCount(i) === 0 && n.$guOtherTabsItem.disable();
                    n.$guAllTabsItem.enable();
                    n.getClosableTabCount() === 0 && n.$guAllTabsItem.disable();
                    n.$Pc.show();
                    t.preventDefault()
                })
            },
            $rF: function () {
                var n = this,
                    i = n.$A,
                    r = $("<div>", {
                        "class": n.scrollerCls + " " + n.scrollerCls + "-start"
                    }).$g(i),
                    u, t, f;
                $("<i>", {
                    "class": "ui-icon"
                }).$g(r);
                u = $("<div>", {
                    "class": n.$B("header-inner")
                }).$g(i);
                t = $("<div>", {
                    "class": n.scrollerCls + " " + n.scrollerCls + "-end"
                }).$g(i);
                $("<i>", {
                    "class": "ui-icon"
                }).$g(t);
                f = $("<div>", {
                    "class": n.$B("body")
                }).$g(n.$L);
                n.tabPlain ? (r.$d(n.$Y), t.$d(n.$Y)) : (r.$d(n.$Pe), t.$d(n.$Pe));
                n.$E = i;
                n.$Pd = u;
                n.$N1 = f;
                n.$Pi = r;
                n.$P_ = t;
                n.tabstripHeaderEl = i;
                n.tabstripHeaderInnerEl = u;
                n.tabstripBodyEl = f;
                n.startScrollEl = r;
                n.endScrollEl = t;
                n.$PG(n.$Pi);
                n.$PG(n.$P_);
                $.each(n.items, function (t, i) {
                    var r = n.__addItem(i);
                    r !== i && (n.items[t] = r)
                });
                n.$Pi.click($.proxy(n.$Nu, n));
                n.$P_.click($.proxy(n.$NM, n));
                n.$Pi.mousedown(function () {
                    n.$d2(n.$Pi, n.scrollStep)
                });
                n.$P_.mousedown(function () {
                    n.$d2(n.$P_, -n.scrollStep)
                })
            },
            afterInitEl: function () {
                var n = this,
                    t;
                n._super();
                f(n.activeTabIndex) && (t = n.getItem(n.activeTabIndex), !t || t.hidden || t.disabled || n.activeTab(t))
            },
            __addItem: function (n, t, i) {
                var r = this,
                    u;
                return t = t || r.$N1, u = r._super(n, t, i), u.$9.$g(r.$Pd), r.tabInside ? u.$9.$d("ui-corner-all") : r.tabPosition === "top" || r.tabPosition === "right" ? u.$9.$d("ui-corner-top") : u.$9.$d("ui-corner-bottom"), u
            },
            __doLayout: function () {
                var n = this;
                i.$Le(n.$Pd, ".f-tab-header");
                $.each(n.items, function (n, t) {
                    t.$Lt()
                });
                n._super();
                n.$Lj()
            },
            $g8: function () {
                var n = this,
                    s, u, r, t, f, e, h, o, i, c;
                (n._super(), n.showTabHeader) && (n.items.length && (s = n.items[0], u = s.$9.$t(!0), n.$Pd.$t(u, !0), n.$E.$5(u), r = n.$E.$C(), t = n.$Pd.find(".f-tab-header:visible"), t.filter(":first").css("margin-left", ""), t.not(":first").css("margin-left", n.tabSpace), f = 0, n.tabFill ? (e = t.length, h = (r - (e - 1) * n.tabSpace) / e, t.each(function () {
                    var t = $(this),
                        i = h;
                    t.$N(n.$Ll) || (i += n.tabSpace);
                    t.outerWidth(i, !0)
                })) : n.$J || (o = n.$Pd.$4(!0), f = n.tabAlign === "left" ? 0 : n.tabAlign === "right" ? r - o : (r - o) / 2, n.$Pd.css("left", f))), i = n.$E.$t(!0) + 1, n.$Pi.$t(i, !0), n.$P_.$t(i, !0), n.getToolCount() > 0 ? (c = n.$I.$R(".f-tool:eq(0)"), n.$I.css({
                    top: 0,
                    "margin-top": 0,
                    height: i,
                    "padding-top": Math.floor((i - c.$t(!0)) / 2)
                }).show()) : n.$I.hide())
            },
            $L1: function () {
                var n = this,
                    u, f;
                if (n.$P.$d(n.$Pq()), n.items.length) {
                    var r = n.$L.$4(!0),
                        i = n.$L.$t(!0),
                        t = n.$9.$t(!0);
                    n.tabPosition === "left" ? (n.$9.$4(i + t, !0), y() || (n.$L.$4(r - t, !0), n.$L.$t(i + t, !0), n.$L.css({
                        left: t,
                        top: -t
                    }), n.$9.css({
                        left: t
                    }))) : n.tabPosition === "right" && (n.$9.$4(i + t, !0), y() || (n.$L.$4(r - t, !0), n.$L.$t(i + t, !0), n.$9.css({
                        left: r - (i + t)
                    })));
                    u = n.$L.$5();
                    f = n.$L.$C();
                    $.each(n.items, function (t, i) {
                        i.$P.$d(n.$PJ());
                        i.width = f;
                        i.height = u;
                        i.$b()
                    })
                }
            },
            $Lj: function () {
                var n = this,
                    t;
                n.showTabHeader && (n.tabFill || (t = n.$E.$N(n.hasscrollerCls), n.$Pd.$4(!0) > n.$E.$C() ? t || (n.$E.$d(n.hasscrollerCls), n.$go(1e5)) : t && (n.$E.$e(n.hasscrollerCls), n.$Pd.css("left", 0)), n.$gD()))
            },
            $d2: function (n, i) {
                var r = this,
                    u = $.now(),
                    f = t.setInterval(function () {
                        $.now() - u > 300 && r.$go(i)
                    }, 50);
                n.mouseup(function () {
                    t.clearInterval(f)
                })
            },
            $Nu: function () {
                this.$go(this.scrollStep)
            },
            $NM: function () {
                this.$go(-this.scrollStep)
            },
            $gH: function () {
                var n = this,
                    t = n.$Pd.position();
                return n.tabPosition === "left" || n.tabPosition === "right" ? t.top : t.left
            },
            $Nk: function (n) {
                var t = this,
                    i = n.$9.position();
                return t.tabPosition === "left" || t.tabPosition === "right" ? i.top : i.left
            },
            $gD: function (n) {
                var t = this;
                if (t.showTabHeader && t.$E.$N(t.hasscrollerCls)) {
                    f(n) || (n = t.$gH());
                    var i = t.$Pi.$C(),
                        r = t.$P_.$C(),
                        u = t.$E.$C(),
                        e = t.$Pd.$4(!0);
                    n >= i ? t.$Pi.$d(t.$0) : t.$Pi.$e(t.$0);
                    n + e + r <= u ? t.$P_.$d(t.$0) : t.$P_.$e(t.$0)
                }
            },
            $go: function (n) {
                var t = this,
                    i = t.$gH() + n,
                    r = t.$Pi.$4(!0),
                    u = t.$P_.$4(!0),
                    f = t.$E.$C(),
                    e = t.$Pd.$4(!0);
                i > r && (i = r);
                i + e + u < f && (i = f - e - u);
                t.$Pd.css("left", i);
                t.$gD(i)
            },
            scrollToTab: function (n) {
                var t = this,
                    u = t.getItem(n);
                if (u && t.showTabHeader && t.$E.$N(t.hasscrollerCls)) {
                    var i = t.$gH(),
                        r = t.$Nk(u),
                        f = u.$9.$4(!0),
                        e = t.$Pi.$C(),
                        o = t.$P_.$C(),
                        s = t.$E.$C();
                    i + r < e && (i = e - r);
                    i + r + f + o > s && (i = s - r - f - o);
                    i !== t.$gH() && (t.$Pd.css("left", i), t.$gD(i))
                }
            },
            getTab: function (n) {
                return this.getItem(n)
            },
            getActiveTab: function () {
                return this.getActiveItem()
            },
            getActiveTabIndex: function () {
                return this.getActiveItemIndex()
            },
            getActiveTabId: function () {
                return this.getActiveItemId()
            },
            setActiveTab: function (t, i) {
                var f = this,
                    u, s, e;
                return (o(t) || (i = t, t = r), u = f.getItem(i), !u) ? !1 : (s = f.getActiveTab(), s && (f.$tt = s.id), u.hidden && u.show(), u.isActived()) ? (u.$9.show(), u.$P.show(), !0) : (u.$9.is(":visible") || u.$9.css("display", "inline-block"), $.each(f.items, function (n, t) {
                    t !== u && t.$tg()
                }), u.$NU(), u.iframe && (n.$gm && (e = u.$Q[0], e.style.height = "99%", e.scrollWidth, e.style.height = "100%"), u.iframeLoaded || u.setIFrameUrl(u.iframeUrl)), f.$J && (f.$r("tabchange", [t, u]), f.scrollToTab(u), f.$b()), !0)
            },
            $Nv: function (n, t, i) {
                var f = this,
                    r, u = n === "slideX";
                return $.each(f.items, function (n, f) {
                    return f.id === i ? r = u ? "right" : "down" : f.id === t && (r = u ? "left" : "up"), r ? !1 : void 0
                }), r
            },
            activeNextTab: function () {
                var n = this,
                    t = n.getActiveTabIndex(),
                    i = n.nextValidItemIndex(t, !0);
                return n.activeTab(i)
            },
            activeNearTab: function () {
                var n = this,
                    t = n.getActiveTabIndex(),
                    i = n.nearValidItemIndex(t);
                return n.activeTab(i)
            },
            hideAllTabs: function () {
                this.hideOtherTabs(null)
            },
            hideOtherTabs: function (n) {
                $.each(this.items, function (t, i) {
                    i !== n && i.$M() && i.isEnabled() && i.closable && i.hide()
                })
            },
            getClosableTabCount: function (n) {
                var t = 0;
                return $.each(this.items, function (i, r) {
                    r !== n && r.$M() && r.isEnabled() && r.closable && t++
                }), t
            },
            getVisibleTabCount: function () {
                var n = 0;
                return $.each(this.items, function (t, i) {
                    i.$M() && n++
                }), n
            },
            hideTab: function (n) {
                var t = this.getItem(n);
                t && t.hide()
            },
            removeTab: function (n) {
                this.hideTab(n)
            },
            showTab: function (n) {
                var i = this,
                    t = this.getItem(n);
                t && t.show()
            },
            activeTab: function () {
                return this.setActiveTab.apply(this, arguments)
            },
            addTab: function (t, i, r, f) {
                var h = this,
                    s, o = {
                        f_dynamic_added_tab: !0
                    };
                return e(t) ? ($.extend(o, {
                    id: t,
                    title: r,
                    closable: f
                }), u(i) || $.extend(o, {
                    iframe: !0,
                    iframeUrl: i
                })) : $.extend(o, t), s = h.getTab(o.id), s ? (s.setTitle(o.title), s.setClosable(o.closable), o.icon ? s.setIcon(o.icon) : o.iconFont && s.setIconFont(o.iconFont), u(o.iframeUrl) || (o.refreshWhenExist || s.iframeUrl != o.iframeUrl) && s.setIFrameUrl(o.iframeUrl)) : (s = new n.Tab(o), h.add(s)), h.activeTab(s), s
            }
        });
        $.extend(n.TabStrip.prototype, n.$rV);
        n.Tab = n.Panel.extend({
            ccls: "f-tab",
            border: !1,
            collapsible: !1,
            closable: !1,
            closeOnDblClick: r,
            headerTag: "a",
            headerInside: !1,
            iframeDelay: !0,
            type: "tab",
            initEl: function () {
                var n = this;
                n.tools = n.tools || [];
                i.$W(0, {
                    type: "tool",
                    iconFont: "close",
                    cls: "f-tool-close",
                    hidden: !n.closable,
                    handler: $.proxy(n.$gu, n)
                }, n.tools);
                n._super();
                n.$P.$d(n.ccls);
                n.$9.$d(n.$B("header"));
                n.$9.$e(n.$Pe);
                n.closable && n.$9.$d(n.$B("header-closable"));
                n.$9.click($.proxy(n.$gw, this));
                n.$PG(n.$9)
            },
            $gu: function (n) {
                var t = this;
                t.closable && t.hide();
                n.stopPropagation()
            },
            afterInitElDisabled: function () {
                var n = this;
                n.$9.$d(n.$0)
            },
            afterInitElHidden: function () {
                var n = this;
                n.hidden && (n.$9.hide(), n.__hideEl())
            },
            $gw: function (n) {
                var t = this;
                t.isDisabled() || t.parent.activeTab(n, t)
            },
            isDisabled: function () {
                var n = this;
                return n.$9.$N(n.$0)
            },
            isVisible: function () {
                return this.$9.is(":visible")
            },
            isActived: function () {
                return this.$9.$N(this.$S)
            },
            hide: function () {
                var t = this,
                    n, f, i, u;
                if (t._super() === !1) return !1;
                (n = t.parent, n) && (f = t.isActived(), t.$9.hide(), f && (n.$tt && (u = n.getItem(n.$tt), u.$M() && u.isEnabled() ? i = n.activeTab(u) : n.$tt = r), i || (i = n.activeNearTab()), i || t.$tg()), n.$Lj())
            },
            show: function () {
                var n = this;
                if (n._super() === !1) return !1;
                n.$Lt();
                n.parent.$Lj()
            },
            __showEl: function () {
                var n = this;
                n.hidden = !1;
                n.$9.css("display", "inline-block")
            },
            __hideEl: function () {
                var n = this;
                n.hidden = !0;
                n.$9.css("display", "none")
            },
            $tg: function () {
                var n = this;
                n.$9.$e(n.$S);
                n.$P.hide()
            },
            $NU: function () {
                var n = this;
                n.$9.$d(n.$S);
                n.$P.show()
            },
            active: function () {
                return this.parent.setActiveTab.apply(this.parent, [this])
            },
            disable: function () {
                var n = this;
                n.disabled = !0;
                n.isActived() && n.parent.activeNearTab() === !1 && n.$tg();
                n.$9.$d(n.$0);
                n.$P.hide();
                n.$Lt();
                n.parent.$Lj()
            },
            enable: function () {
                var n = this;
                n.disabled = !1;
                n.$M() || n.show();
                n.$9.$e(n.$0);
                n.$Lt();
                n.parent.$Lj()
            },
            setClosable: function (n) {
                var t = this,
                    i, r;
                n !== t.closable && (t.closable = n, i = t.getTool("close"), r = t.$B("header-closable"), n ? (t.$9.$d(r), i.show()) : (t.$9.$e(r), i.hide()), t.$Lt(), t.parent.$Lj())
            },
            __doLayout: function () {
                var n = this;
                n.isActived() && n._super()
            }
        });
        n.ViewPort = n.PanelBase.extend({
            layout: "fit",
            isViewPort: !0,
            type: "viewport",
            initEl: function () {
                var n = this;
                n._super()
            },
            __doLayout: function () {
                this._super()
            }
        });
        n.Grid = n.Panel.extend({
            ccls: "f-grid",
            $Pz: "f-grid-table",
            $l: "f-grid-row",
            $i: "f-grid-cell",
            $G: "f-grid-row-unselectable",
            $1: function (n) {
                var t = "f-grid-colheader";
                return n && (t += "-" + n), t
            },
            $PB: function (n) {
                var t = "f-grid-rowexpander";
                return n && (t += "-" + n), t
            },
            disableUnselectableRows: !1,
            gridHeader: !0,
            multiSelect: !0,
            keepCurrentSelection: !1,
            keepPagedSelection: !1,
            showSelectedCell: !1,
            altRowColor: !0,
            checkboxSelect: !1,
            checkboxSelectOnly: !1,
            sortASCText: "Sort Ascending",
            sortDESCText: "Sort Descending",
            columnsText: "Columns",
            unlockText: "Unlock",
            lockText: "Lock",
            idField: "",
            textField: "",
            parentIdField: "",
            attributeFields: r,
            sorting: !1,
            databaseSorting: !1,
            sortField: "",
            sortDirection: "ASC",
            clearSelectionBeforeSorting: !0,
            dataUrl: "",
            dataMethod: "GET",
            bigData: !1,
            bigDataRowTip: !0,
            minColumnWidth: 20,
            defaultColumnWidth: 100,
            $t5: function () {
                return n.largeMode ? 38 : 30
            },
            rowExpander: r,
            keepRowExpanderStatus: !0,
            forceFit: !1,
            paging: !1,
            databasePaging: !1,
            pageSize: 15,
            pageIndex: 0,
            recordCount: 0,
            showPageMsg: !0,
            clearSelectionBeforePaging: !0,
            arrowKeySelection: !0,
            mouseWheelSelection: !1,
            quickPaging: !1,
            quickPagingThenSelect: !0,
            emptyText: "",
            columnLines: !1,
            rowLines: !0,
            rowVerticalAlign: "middle",
            enableTextSelection: !1,
            summary: !1,
            summaryPosition: "flow",
            summaryData: r,
            tabVerticalNavigate: !1,
            tabEditableCell: !1,
            enterSameAsTab: !1,
            enterNavigate: !1,
            enterVerticalNavigate: !1,
            enterEditableCell: !1,
            cellEditing: !1,
            cellEditingClicks: 1,
            autoSelectEditor: !1,
            columnLocking: !1,
            columnMoving: !1,
            columnResizing: !0,
            columnMenu: !0,
            filters: !1,
            filtersText: "Filters",
            filtersCancelText: "Cancel Filters",
            filterOKText: "OK",
            filterCancelText: "Cancel",
            filterMatchAll: "Match All",
            filterMatchAny: "Match Any",
            tree: r,
            rowDomIdLockedSuffix: "_locked",
            defaultView: "grid",
            listViews: r,
            defaultColumnType: "renderfield",
            type: "grid",
            initEl: function () {
                var t = this,
                    r, c, o, l, h, f, e;
                t.paging && (t.pagingbar || (t.pagingbar = {
                    type: "pagingtoolbar"
                }), t.pagingbar.$tJ = this);
                t._super();
                t.tabVerticalNavigate && (t.tabVerticalNavigate = !1, n.$q("F.Grid - tabVerticalNavigate"));
                t.tabEditableCell && (t.tabEditableCell = !1, n.$q("F.Grid - tabEditableCell"));
                t.enterSameAsTab && (t.enterSameAsTab = !1, n.$q("F.Grid - enterSameAsTab"));
                t.enterNavigate && (t.enterNavigate = !1, n.$q("F.Grid - enterNavigate"));
                t.enterVerticalNavigate && (t.enterVerticalNavigate = !1, n.$q("F.Grid - enterVerticalNavigate"));
                t.enterEditableCell && (t.enterEditableCell = !1, n.$q("F.Grid - enterEditableCell"));
                t.autoSelectEditor && (t.autoSelectEditor = !1, n.$q("F.Grid - autoSelectEditor"));
                t.filters && (t.filters = !1, n.$q("F.Grid - filters"));
                t.tree && (t.tree = !1, n.$q("F.Grid - tree"));
                t.columnMoving && (t.columnMoving = !1, n.$q("F.Grid - columnMoving"));
                t.dataUrl && (t.dataUrl = "", n.$q("F.Grid - dataUrl"));
                t.bigData && (t.bigData = !1, n.$q("F.Grid - bigData"));
                t.mouseWheelSelection && (t.mouseWheelSelection = !1, n.$q("F.Grid - mouseWheelSelection"));
                t.quickPaging && (t.quickPaging = !1, n.$q("F.Grid - quickPaging"));
                t.summary && (t.summaryData = t.summaryData || {});
                t.filters && (t.filteredData = t.filteredData || []);
                t.selectedRow && (t.selectedRows = [t.selectedRow]);
                t.selectedRows = u(t.selectedRows) ? [] : i.$Pf([], t.selectedRows);
                t.tree && i.$Ls(t.tree, {
                    icons: !0,
                    expanded: !1,
                    expandOnDblClick: !0
                });
                t.checkboxSelect && i.$W(0, new n.GridColumn({
                    index: -1,
                    sortable: !1,
                    width: t.$t5(),
                    menu: !1,
                    hideable: !1,
                    resizable: !1,
                    columnType: "checkselectionfield"
                }), t.columns);
                t.rowExpander && (i.$Ls(t.rowExpander, {
                    index: -1,
                    width: t.$t5(),
                    sortable: !1,
                    menu: !1,
                    hideable: !1,
                    resizable: !1,
                    expanded: !1,
                    expandOnDblClick: !0,
                    expandOnEnter: !0,
                    expandToSelectRow: !1,
                    columnType: "rowexpanderfield"
                }), t.$rm(t.rowExpander), s(t.rowExpander) && (t.rowExpander = new n.GridColumn(t.rowExpander)), i.$W(0, t.rowExpander, t.columns));
                t.$to();
                t.$P.$d(t.ccls);
                t.bigData && t.$P.$d(t.$B("bigdata"));
                t.tree && !t.tree.icons && t.$P.$d("f-tree-noicons");
                t.listViews && t.listViews.length && $.each(t.listViews, function (n, i) {
                    $("<div>", {
                        "class": t.$B("listview") + " " + t.$B("listview-" + i.columnId)
                    }).$g(t.$L)
                });
                r = $("<div>", {
                    "class": t.$B("inner")
                });
                r.$g(t.$L);
                t.$u = r;
                t.gridInnerEl = r;
                c = r;
                t.columnLocking && (o = $("<div>", {
                    "class": t.$B("inner-locked")
                }), o.$g(r), t.$NB = o, t.$rw(o, function (n, i, r, u, f, e, o, s) {
                    t.$LD = u;
                    t.$z = f;
                    t.$g1 = n;
                    t.$Nb = i;
                    t.$Ns = r;
                    t.lockedHeaderTableEl = n;
                    t.lockedBodyTableEl = u;
                    t.lockedBodyctEl = f;
                    t.summary && (t.$d4 = e, t.$No = o, t.$NJ = s, t.lockedSummaryTableEl = e)
                }), l = $("<div>", {
                    "class": t.$Pm + " f-grid-locking-separator"
                }).$g(t.$L), t.$eL = l, h = $("<div>", {
                    "class": t.$B("inner-main")
                }), h.$g(r), t.$dd = h, c = h, t.showSelectedCell && (f = $("<div>", {
                    "class": "f-grid-selectedcell-border"
                }), t.$ra = f.clone().$d("top").$g(t.$z), t.$rK = f.clone().$d("bottom").$g(t.$z), t.$rc = f.clone().$d("left").$g(t.$z), t.$ed = f.clone().$d("right").$g(t.$z)));
                t.$rw(c, function (n, i, r, u, f, e, o, s) {
                    t.$P9 = u;
                    t.$o = f;
                    t.$LN = n;
                    t.$do = i;
                    t.$RX = r;
                    t.headerTableEl = n;
                    t.bodyTableEl = u;
                    t.bodyctEl = f;
                    t.summary && (t.$dL = e, t.$g3 = o, t.$Ri = s, t.summaryTableEl = e)
                });
                t.bigData && n.$q("F.Grid - bigData");
                t.showSelectedCell && (e = $("<div>", {
                    "class": "f-grid-selectedcell-border"
                }), t.$R8 = e.clone().$d("top").$g(t.$o), t.$R6 = e.clone().$d("bottom").$g(t.$o), t.$Ru = e.clone().$d("left").$g(t.$o), t.$R0 = e.clone().$d("right").$g(t.$o));
                t.$Nh();
                t.$N5();
                t.$Ros();
                t.dataUrl ? (t.$ts(), t.loadDataUrl()) : t.data ? t.$a(t.data, t.summaryData) : t.$ts()
            },
            $rw: function (n, t) {
                var i = this,
                    o = $("<div>", {
                        "class": i.$B("headerct") + " " + i.$L6
                    }),
                    s, c, u, f, l, r, h, e;
                i.gridHeader || o.css("display", "none");
                o.$g(n);
                s = $("<div>", {
                    "class": i.$B("headerinnerct")
                });
                s.$g(o);
                c = $("<table>", {
                    "class": i.$Pz
                });
                c.$g(s);
                u = $("<div>", {
                    "class": i.$B("bodyct")
                });
                u.$g(n);
                f = $("<table>", {
                    "class": i.$Pz
                });
                i.rowLines && f.$d("f-grid-row-lines");
                i.columnLines && f.$d("f-grid-column-lines");
                i.rowVerticalAlign !== "middle" && f.$d("f-grid-row-align-" + i.rowVerticalAlign);
                f.$g(u);
                l = [c, o, s, f, u];
                i.summary && (r = $("<div>", {
                    "class": i.$B("summaryct") + " " + i.$Y
                }), r.$g(n), h = $("<div>", {
                    "class": i.$B("summaryinnerct")
                }), h.$g(r), e = $("<table>", {
                    "class": i.$Pz + " f-grid-summary-" + i.summaryPosition
                }), i.rowLines && e.$d("f-grid-row-lines"), i.columnLines && e.$d("f-grid-column-lines"), e.$g(h), i.summaryPosition === "flow" ? r.$g(u) : i.summaryPosition === "bottom" ? r.$g(n) : i.summaryPosition === "top" && r.insertBefore(u), $.merge(l, [e, r, h]));
                t && t.apply(i, l)
            },
            $V: function (n) {
                var t = this;
                return (o(n) && (n = $(n.target)), n.$PP("." + t.ccls).attr("id") === t.id) ? !0 : !1
            },
            $N5: function () {
                var i = this,
                    f, r, u;
                if (!i.enableTextSelection && "onselectstart" in document.createElement("div")) i.$u.on("selectstart", function (n) {
                    $(n.target).is(":input") || n.preventDefault()
                });
                if (!n.$j) {
                    i.$u.on("mouseenter mouseleave", "." + i.$1(), function (t) {
                        var r = $(this),
                            u = i.$X(r);
                        n.$Lv || i.$V(t) && (t.type === "mouseenter" ? i.$gY(r, !0) : t.type === "mouseleave" && (i.$PH && i.$PH.$M() && i.$PH.$dr === u.columnId || i.$gY(r, !1)))
                    });
                    i.$u.on("mouseenter mouseleave", "." + i.$l, function (n) {
                        var r = $(this),
                            t;
                        r.$N(i.$G) || i.$V(n) && (t = r, i.columnLocking && (t = i.$T(r, !0)), n.type === "mouseenter" ? t.$d(i.$h) : n.type === "mouseleave" && t.$e(i.$h))
                    })
                }
                i.$u.on("click", "." + i.$1(), function (t) {
                    var r = $(this),
                        f = i.$X(r),
                        u;
                    if (i.$V(t) && t.type === "click") {
                        if ($(t.target).$N("ui-resizable-handle")) return;
                        if (n.$Lv) return;
                        r.$N("f-grid-sortable") && (u = "ASC", r.$N("f-grid-sort-ASC") ? u = "DESC" : r.$N("f-grid-sort-DESC") && (u = "ASC"), i.$R$(t, f.sortField, u, f.columnId))
                    }
                });
                i.$u.on("click dblclick contextmenu", "." + i.$l, function (n) {
                    var t = $(this),
                        r, u, f, e;
                    if (i.$V(n) && (r = i.$O(t), r))
                        if (u = r.id, f = r.index, n.type === "click") {
                            if (t.$N(i.$G)) return;
                            i.checkboxSelect && i.checkboxSelectOnly || (e = $(n.target), e.length && e.is(".f-grid-checkselectionfield .f-grid-checkbox") || i.$LE(n, t));
                            i.$r("rowclick", [n, u, f])
                        } else if (n.type === "dblclick") {
                        if (t.$N(i.$G)) return;
                        i.rowExpander && i.rowExpander.expandOnDblClick && i.toggleRowExpanders(n, t);
                        i.tree && i.tree.expandOnDblClick && (r.leaf || (r.expanded ? i.collapseRow(n, r) : i.expandRow(n, r)));
                        i.$r("rowdblclick", [n, u, f])
                    } else if (n.type === "contextmenu") {
                        if (t.$N(i.$G)) return;
                        i.checkboxSelect && i.checkboxSelectOnly || t.$N(i.$S) || i.$LE(n, t);
                        i.$r("beforerowcontextmenu", [n, u, f]) === !1 && n.preventDefault()
                    }
                });
                i.$u.on("click", ".f-grid-colheader.f-grid-checkselectionfield .f-grid-checkbox", function (n) {
                    var t = $(this),
                        r;
                    i.$V(n) && (r = t.$N(i.$p), t.$P2(i.$p), r ? i.deselectAllRows(n) : i.selectAllRows(n))
                });
                i.$u.on("click", ".f-grid-cell.f-grid-checkselectionfield .f-grid-checkbox", function (n) {
                    var r = $(this);
                    if (i.$V(n)) {
                        var u = r.$N(i.$p),
                            f = r.$PP("." + i.$i),
                            t = i.$Pg(r),
                            e = i.$O(t);
                        t.$N(i.$G) || (u || i.multiSelect ? u ? i.deselectRow(n, t) : i.selectRow(n, t, !0) : i.$LE(n, t))
                    }
                });
                i.$u.on("click", ".f-grid-rowexpanderfield .f-grid-rowexpander-icon", function (n) {
                    var r = $(this),
                        t;
                    i.$V(n) && i.rowExpander && (t = i.$Pg(r), i.toggleRowExpanders(n, t), i.rowExpander.expandToSelectRow || n.stopPropagation())
                });
                f = 0;
                r = 0;
                i.$o.scroll(function () {
                    function o() {
                        var o = i.$o.scrollLeft(),
                            t = i.$o.scrollTop(),
                            u, e;
                        (i.bigData && (i.$tL = t - r), u = o != f, e = t != r, u || e) && (f = o, r = t, i.bigData && n.$q("F.Grid - bigData"), i.cellEditing && i.$PD(), u && i.$tP(), i.columnLocking && e && i.$t4())
                    }
                    var e = 10;
                    l() && (e = 50);
                    u && (t.clearTimeout(u), u = null);
                    u = t.setTimeout(function () {
                        o()
                    }, e)
                });
                i.$u.on("click dblclick contextmenu", ".f-grid-row .f-grid-cell", function (n) {
                    var t = $(this);
                    i.$V(n) && i.selectCell(t)
                });
                i.$41();
                i.cellEditing && i.$RU();
                i.tree && i.$4U();
                i.$4u();
                i.$4x()
            },
            $g4: function (n, t, i) {
                var r = this,
                    u = t.prev();
                u.length ? (r.selectCell(u.$R("." + r.$i).eq(i)), r.selectRow(n, u)) : r.quickPaging && r.paging && r.pageIndex > 0 && !r.$Lw && (r.$LJ(n, r.pageIndex - 1), r.$Lw = "UP", r.$LwTdIndex = i)
            },
            $gs: function (n, t, i) {
                var r = this,
                    u = t.next();
                u.length ? (r.selectCell(u.$R("." + r.$i).eq(i)), r.selectRow(n, u)) : r.quickPaging && r.paging && r.pageIndex < r.getPageCount() - 1 && !r.$Lw && (r.$LJ(n, r.pageIndex + 1), r.$Lw = "DOWN", r.$LwTdIndex = i)
            },
            $41: function () {
                function t(n) {
                    var i = n.originalEvent,
                        t = -i.wheelDelta || -i.wheelDeltaY || i.deltaY || i.detail;
                    return t < 10 && t > -10 && (t = 15 * t), t
                }

                function i(i) {
                    var e, r, u, f;
                    n.mouseWheelSelection && n.$t9() && (n.$PD(), e = t(i), r = n.getSelectedRowEl(), r.length) && (u = -1, f = n.$LP(), f.length && (u = f.index()), e < 0 ? n.$g4(i, r, u) : n.$gs(i, r, u), i.preventDefault(), i.stopPropagation())
                }
                var n = this;
                if (n.columnLocking) n.$z.on("mousewheel DOMMouseScroll wheel", function (r) {
                    var f = n.getSelectedRowEl(),
                        u;
                    n.mouseWheelSelection && f.length ? i(r) : (n.$PD(), u = t(r), n.$o.scrollTop(u + n.$o.scrollTop()), r.preventDefault(), r.stopPropagation())
                });
                if (n.mouseWheelSelection) n.$o.on("mousewheel DOMMouseScroll wheel", function (n) {
                    i(n)
                })
            },
            $4u: function () {
                var t = this;
                $(document).keydown(function (r) {
                    function s() {
                        r.preventDefault()
                    }
                    var u, e, f, o, h, c;
                    t.$t9() && (u = r.keyCode, e = t.getSelectedRowEl(), e.length && !t.cellEditing && u == n.KEY.ENTER && t.rowExpander && t.rowExpander.expandOnEnter && t.toggleRowExpanders(r, t.getSelectedRowEls()), t.arrowKeySelection && i.$_(u, [n.KEY.UP, n.KEY.DOWN, n.KEY.LEFT, n.KEY.RIGHT]) && (!t.cellEditing || t.cellEditing && !t.$L_) && (f = t.$LP(), f.length && (o = f.index()), e.length && (u == n.KEY.UP ? (t.$g4(r, e, o), s()) : u == n.KEY.DOWN && (t.$gs(r, e, o), s())), f.length && (h = t.$Pg(f), c = h.$R("." + t.$i).length, u == n.KEY.LEFT ? (o === 0 ? t.$g4(r, h, c - 1) : t.selectCell(f.prev()), s()) : u == n.KEY.RIGHT && (o === c - 1 ? t.$gs(r, h, 0) : t.selectCell(f.next()), s()))))
                })
            },
            $4U: function () {
                var n = this;
                n.$u.on("click", ".f-grid-row .f-tree-expander", function (t) {
                    var u = $(this),
                        r, i;
                    if (n.$V(t)) return r = n.$Pg(u), i = n.$O(r), i.leaf || (i.expanded ? n.collapseRow(t, i) : n.expandRow(t, i)), !1
                })
            },
            $4a: function (n, t, i) {
                this.$r("bigdatarowtip", [event, n, t, i])
            },
            $4x: function () {
                var n = this;
                n.$u.on("click", ".f-grid-checkboxfield .f-grid-checkbox", function (t) {
                    var i = $(this),
                        r;
                    n.$V(t) && ((r = i.$N(n.$p), n.cellEditing) || i.$N(n.$0) || i.$P2(n.$p))
                })
            },
            $t4: function () {
                var n = this,
                    t;
                n.columnLocking && (t = n.$o.scrollTop(), t !== n.$z.scrollTop() && n.$z.scrollTop(t))
            },
            $tP: function () {
                var n = this,
                    t = n.$o.scrollLeft();
                t !== n.$do.scrollLeft() && n.$do.scrollLeft(t);
                n.summary && n.summaryPosition !== "flow" && t !== n.$g3.scrollLeft() && n.$g3.scrollLeft(t)
            },
            $RU: function () {},
            $Rv: function () {
                var t = this;
                if (u(t.$gg)) return t.$Rj = t.$o.scrollTop(), t.$RC = t.$o.scrollLeft(), u(n.$g2) && (n.$g2 = 0), t.$gg = n.$g2, n.$g2++, t.$gg
            },
            $Rh: function (n) {
                var t = this;
                n == t.$gg && (t.$o.scrollTop(t.$Rj), t.$o.scrollLeft(t.$RC), t.$t4(), t.$tP(), t.$Rj = r, t.$RC = r, t.$gg = r)
            },
            __doLayout: function () {
                var t = this,
                    r = t.$Rv();
                t._super();
                t.columnLocking && (t.$eL.$5(t.$u.$5()), t.$eL.css({
                    top: t.$dd.position().top,
                    left: i.$x(t.$dd, "margin-left") - 1
                }));
                t.showSelectedCell && t.$dD();
                t.bigData && n.$q("F.Grid - bigData");
                t.$Rh(r)
            },
            $Rt: function () {
                var n = this,
                    t;
                n.checkboxSelect && (t = n.$LN.$R(".f-grid-checkselectionfield .f-grid-checkbox"), t.length && (n.isAllSelected() ? t.$d(n.$p) : t.$e(n.$p)))
            },
            $gY: function (n, t) {
                var i = this,
                    u, r;
                n && n.length && (u = n.$R("." + i.$1("inner")), r = n.$R("." + i.$1("trigger")), t ? (n.$d(i.$h), r.$d(i.$h)) : (n.$e(i.$h), r.$e(i.$h)))
            },
            $Rr: function (n, t) {
                var i = this,
                    r = i.$T(n, !0),
                    u;
                r.length && (u = r.$R(".f-grid-checkselectionfield .f-grid-checkbox"), t ? (r.$d(i.$S), r.$d(i.$l + "-selected"), u.length && u.$d(i.$p)) : (r.$e(i.$S), r.$e(i.$l + "-selected"), u.length && u.$e(i.$p)))
            },
            $gP: function (n, t) {
                var u = this,
                    f;
                o(n) || (t = n, n = r);
                f = u.selectedRows;
                i.$eM.apply(u, [t, f, u.$Rr]);
                u.$Rt();
                i.$8(t) !== i.$8(f) && u.$r("selectionchange", [n])
            },
            $R$: function (n, t, i, r) {
                var u = this;
                if (u.$r("beforesorting", [n, t, i, r]) === !1) return !1;
                u.clearSelectionBeforeSorting && u.clearSelection();
                u.setSortField(t, i);
                u.$Ld("sorting") || (u.databaseSorting ? u.dataUrl && u.loadDataUrl() : u.loadSortData(t, i));
                u.$r("sorting", [n, t, i, r])
            },
            setSortField: function (n, t) {
                var i = this;
                i.sortField = n;
                i.sortDirection = t;
                i.$XHeaderEls().each(function (r, u) {
                    var f = $(u),
                        e = i.$X(f);
                    f.$e("f-grid-sort-ASC f-grid-sort-DESC");
                    e.sortField === n && f.$d("f-grid-sort-" + t)
                })
            },
            loadSortData: function (n, t) {
                var i = this;
                i.setSortField(n, t);
                i.$RN(n, t);
                i.$RA();
                i.loadData()
            },
            loadPageData: function (n) {
                var t = this;
                u(n) && (n = t.pageIndex);
                t.setPageIndex(n);
                t.$RA(!0);
                t.loadData()
            },
            $RN: function (n, t) {
                var r = this,
                    u = r.getSortColumn(n),
                    i;
                u && (i = u.columnId, r.alldata.sort(function (n, r) {
                    return n.values[i] > r.values[i] ? t === "ASC" ? 1 : -1 : n.values[i] < r.values[i] ? t === "ASC" ? -1 : 1 : void 0
                }))
            },
            $LE: function (n, t) {
                var i = this,
                    u = i.$c(t),
                    f, r, s;
                if (!t.$N(i.$G)) {
                    if (i.multiSelect) {
                        if (n.shiftKey && i.$LM && (f = i.$T(i.$LM), f.length)) {
                            var h = f.index(),
                                e = t.index(),
                                c = Math.min(h, e),
                                l = Math.max(h, e),
                                o = [];
                            for (r = c; r <= l; r++) s = i.$O(i.$T(r)), s.unselectable || o.push(s.id);
                            c === e && o.reverse();
                            i.selectRows(n, o, !1);
                            return
                        }
                        if (i.keepCurrentSelection || n.ctrlKey) {
                            i.isRowSelected(t) ? i.deselectRow(n, u) : i.selectRow(n, u, !0);
                            return
                        }
                    }
                    i.selectRow(n, u, !1)
                }
            },
            $P3: function (n) {
                var t = n.columnType;
                return t === "rownumberfield" || t === "checkselectionfield" || t === "rowexpanderfield" ? !0 : !1
            },
            getField: function (n) {
                var i = this,
                    t;
                return f(n) ? t = i.fields[n] : ($.each(i.fields, function (i, r) {
                    var u = r;
                    return e(r) || (u = r.name), u === n ? (t = r, !1) : void 0
                }), t || (t = n)), e(t) || (t = t.name), t
            },
            $RY: function (n, t) {
                var i = $.trim((n + "").toLowerCase());
                return n && i !== "false" && i !== "0" ? t.editcheckbox ? '<i class="f-grid-checkbox ui-icon f-checked"><\/i>' : '<i class="f-grid-static-checkbox ui-icon f-checked"><\/i>' : t.editcheckbox ? '<i class="f-grid-checkbox ui-icon"><\/i>' : '<i class="f-grid-static-checkbox ui-icon"><\/i>'
            },
            $dJ: function (n) {
                var t = this;
                return n.id || (t.$tV || (t.$tV = 0), n.id = "f_grid_row_" + t.$tV, t.$tV++), n.id
            },
            getRowId: function (n) {
                var t = this;
                return e(n) ? n : s(n) ? n.id : (f(n) && (n = t.$H().eq(n)), c(n) ? $(n).attr("data-rowid") : void 0)
            },
            $c: function (n) {
                return this.getRowId(n)
            },
            getRowData: function (n) {
                var t = this,
                    i, r;
                return s(n) ? n : (r = t.$c(n), t.$PL(function (n) {
                    if (n.id === r) return i = n, !1
                }), i)
            },
            $O: function (n) {
                return this.getRowData(n)
            },
            getRowValue: function (n) {
                var r = this,
                    t, i;
                return t = s(n) ? n : r.$O(n), i = {}, t && $.each(t.values, function (n, t) {
                    var r = t;
                    u(r) || (i[n] = r)
                }), i
            },
            getRowPath: function (n) {
                var t = this,
                    r = t.$O(n),
                    i = "";
                return t.$PL(function (n, t) {
                    if (n.id === r.id) return i = t.join("/"), !1
                }), i
            },
            getCellValue: function (n, t) {
                var u = this,
                    i = u.getCellData(n, t);
                return i ? i.value : r
            },
            getCellData: function (n, t) {
                var i = this,
                    f, e, o;
                c(n) && (n = $(n), n.$N(i.$i) && (t = i.$X(n), n = i.$Pg(n)));
                var h = i.$O(n),
                    l = i.$X(t),
                    t = l.columnId,
                    r = h.values,
                    u = {
                        value: r[t]
                    },
                    s = r[t + ".cls"];
                return s && (u.cls = s), f = r[t + ".attrs"], f && (u.attrs = f), e = r[t + ".status"], e && (u.status = e), o = r[t + ".ovalue"], o && (u.ovalue = o), u
            },
            getVisibleColumnCount: function () {
                var t = this,
                    n = 0;
                return $.each(t.columns, function (t, i) {
                    i.hidden || n++
                }), n
            },
            getColumnHeaderEls: function () {
                return this.$XHeaderEls()
            },
            $XHeaderEls: function () {
                return this.$u.$R("." + this.$1())
            },
            getColumnHeaderEl: function (n) {
                return this.$XHeaderEl(n)
            },
            $XHeaderEl: function (n) {
                var r = this,
                    i = r.$XHeaderEls(),
                    t;
                return f(n) ? t = i.eq(n) : i.each(function (i, r) {
                    var u = $(r);
                    if (u.attr("data-columnid") === n) return t = u, !1
                }), t
            },
            getSortColumn: function (n) {
                var i = this,
                    t;
                return i.$U(function (i) {
                    if (i.sortField === n) return t = i, !1
                }), t
            },
            getColumn: function (n) {
                return this.$X(n)
            },
            $X: function (n) {
                var t = this;
                return (t.$t$ || (t.$t$ = {}, t.$U(function (n) {
                    t.$t$[n.columnId] = n
                })), c(n) && (n = $(n).attr("data-columnid")), e(n)) ? t.$t$[n] : n
            },
            $XByType: function (n) {
                var i = this,
                    t;
                return i.$U(function (i) {
                    if (i.columnType === n) return t = i, !1
                }), t
            },
            getColumnIds: function () {
                function n(t) {
                    for (var i, r, u = [], f = 0, e = t.length; f < e; f++) i = t[f], i.columns && i.columns.length ? (r = [], r.push(i.columnId), r.push(n(i.columns)), u.push(r)) : u.push(i.columnId);
                    return u
                }
                var t = this;
                return n(t.columns)
            },
            $U: function (n, t) {
                function r(t) {
                    for (var f, o, u = 0, e = t.length; u < e; u++) {
                        if (f = t[u], o = n.apply(i, [f, u, t]), o === !1) break;
                        f.columns && f.columns.length && r(f.columns)
                    }
                }
                var i = this;
                u(t) && (t = i.columns);
                r(t)
            },
            resolveColumn: function () {
                this.$U.apply(this, arguments)
            },
            $T: function (n, t) {
                var i = this,
                    r, u;
                return c(n) && !i.columnLocking ? $(n) : (r = $(), u = i.$c(n), t && i.columnLocking && (r = r.add(i.$TInternal(u, !0))), r.add(i.$TInternal(u)))
            },
            $TInternal: function (n, t) {
                var r = this,
                    u, f;
                return u = t ? r.$LD : r.$P9, f = r.$c(n), i.$t8(u, ">tbody>tr." + r.$l, "data-rowid", f)
            },
            $Rx: function (n) {
                return this.$TInternal(n, !0)
            },
            getLockedRowEl: function (n) {
                return this.$Rx(n)
            },
            getRowEl: function (n, t) {
                return this.$T(n, t)
            },
            getCellEl: function (n, t) {
                var i = this;
                return c(n) || (n = i.$T(n, !0)), e(t) || (t = t.columnId), $(n).$R(".f-grid-cell-" + t)
            },
            moveRowUp: function () {
                n.$q("F.Grid - rowMoving")
            },
            moveRowDown: function () {
                n.$q("F.Grid - rowMoving")
            },
            moveRowsUp: function () {
                n.$q("F.Grid - rowMoving")
            },
            moveRowsDown: function () {
                n.$q("F.Grid - rowMoving")
            },
            $HInternal: function (n) {
                var t = this,
                    i;
                return i = n ? t.$LD : t.$P9, i.$R(">tbody>tr." + t.$l)
            },
            $H: function (n) {
                var t = this,
                    i = $();
                return n && t.columnLocking && (i = i.add(t.$HInternal(!0))), i.add(t.$HInternal())
            },
            $Rxs: function () {
                return this.$HInternal(!0)
            },
            getLockedRowEls: function () {
                return this.$Rxs()
            },
            getRowEls: function (n) {
                return this.$H(n)
            },
            selectRow: function (n, t, i, u) {
                var f = this;
                o(n) || (u = i, i = t, t = n, n = r);
                f.selectRows(n, [t], i, u)
            },
            selectRows: function (t, f, e, s) {
                var h = this,
                    l, v, w, y, a, c, p;
                if (o(t) || (s = e, e = f, f = t, t = r), u(s) && (s = !0), f = h.$RT(f), f.length && (n.$Lz = h.id), l = i.$Pf([], h.selectedRows), h.paging && h.keepPagedSelection && (v = [], l.length && $.each(l, function (n, t) {
                        h.$O(t) || v.push(t)
                    })), e ? i.$Pf(h.selectedRows, f, !0) : s ? (w = $.grep(l, function (n) {
                        var t = h.$O(n);
                        return t && t.unselectable
                    }), h.selectedRows = i.$Pf(w, f, !0)) : h.selectedRows = f, h.paging && h.keepPagedSelection && (h.selectedRows = i.$Pf(v, h.selectedRows, !0)), h.$gP(t, l), y = !1, f.length)
                    for (a = f.length - 1; a >= 0; a--)
                        if (c = f[a], p = h.$O(c), p) {
                            f.length === 1 && h.scrollToRow(c);
                            c !== h.$LM && h.$r("rowselect", [t, c, p.index]);
                            h.$LM = c;
                            y = !0;
                            break
                        } y || (h.$LM = r)
            },
            scrollToRow: function (t) {
                var r = this,
                    e, s;
                if (r.bigData && n.$q("F.Grid - bigData"), e = r.$T(t), e.length && (s = i.$gB(r.$o), r.hasVScrollbar())) {
                    var o = r.$o.scrollTop(),
                        u = e.position().top,
                        h = e.outerHeight(),
                        f;
                    if (u == 0) return;
                    u < 0 ? (f = o + u, r.$o.scrollTop(f)) : u + h > s && (f = o + (u + h - s), f > o + u && (f = o + u), r.$o.scrollTop(f))
                }
            },
            scrollToCell: function (n) {
                var t = this,
                    r, s, h, o;
                if (!t.bigData && (r = $.makeArray(arguments), v(r[0]) && (r = r[0]), n = r.length === 2 ? t.getCellEl(r[0], r[1]) : r[0], c(n)) && (n = $(n), s = t.$Pg(n), t.scrollToRow(s), !t.columnLocking || (h = t.$X(n), !t.$gr(h))) && (o = i.$P4(t.$o), t.hasHScrollbar())) {
                    var e = t.$o.scrollLeft(),
                        u = n.position().left,
                        l = n.outerWidth(),
                        f;
                    if (u == 0) return;
                    u < 0 ? (f = e + u, t.$o.scrollLeft(f)) : u + l > o && (f = e + (u + l - o), f > e + u && (f = e + u), t.$o.scrollLeft(f))
                }
            },
            $gR: function () {
                for (var t, f, n = this, e = n.$P9.find(".f-grid-row:first"), o = n.$P9.find(".f-grid-row:last"), s = n.$c(e), h = n.$c(o), u = [], i = 1, r = 0, c = n.data.length; r < c; r++) t = n.data[r].id, f = n.data[r].unselectable, i == 1 ? t == s ? i = 2 : f || u.push(t) : i == 2 ? t == h && (i = 3) : f || u.push(t);
                return u
            },
            selectAllRows: function (n) {
                var t = this,
                    r = t.$H(),
                    i;
                t.selectRows(n, r, !1);
                t.bigData && (i = t.$gR(), $.merge(t.selectedRows, i))
            },
            deselectRow: function (n, t) {
                var i = this;
                o(n) || (t = n, n = r);
                i.deselectRows(n, [t])
            },
            deselectRows: function (n, t) {
                var u = this,
                    l, e, f, s, h;
                o(n) || (t = n, n = r);
                t = u.$RT(t);
                t.length && i.$_(u.$LM, t) && (u.$LM = r);
                var a = $.merge([], u.selectedRows),
                    v = i.$gq(t),
                    c = [];
                for (f = 0, l = u.selectedRows.length; f < l; f++) e = u.selectedRows[f], v[e] || c.push(e);
                for (u.selectedRows = c, u.$gP(n, a), f = t.length - 1; f >= 0; f--)
                    if (s = t[f], h = u.$O(s), h) {
                        u.$r("rowdeselect", [n, s, h.index]);
                        break
                    }
            },
            deselectAllRows: function (n) {
                var t = this,
                    o = t.$H(),
                    r, e, u;
                if (t.deselectRows(n, o), t.bigData) {
                    var f = [],
                        s = t.$gR(),
                        h = i.$gq(s);
                    for (r = 0, e = t.selectedRows.length; r < e; r++) u = t.selectedRows[r], h[u] || f.push(u);
                    t.selectedRows = f
                }
            },
            expandPath: function (n) {
                var t = this,
                    i = n.split("/");
                $.each(i, function (n, i) {
                    t.expandRow(i)
                })
            },
            expandRowPath: function (n) {
                var t = this,
                    i = t.getRowPath(n);
                t.expandPath(i)
            },
            expandRow: function (t, i, u) {
                var f = this;
                o(t) || (u = i, i = t, t = r);
                u ? n.noLayout(function () {
                    f.$PL(function (n) {
                        f.$Lf(t, n, !0)
                    }, i)
                }) : f.$Lf(t, i, !0);
                f.$ge()
            },
            expandAll: function () {
                var t = this;
                n.noLayout(function () {
                    t.$PL(function (n) {
                        t.$Lf(n, !0)
                    })
                });
                t.$ge()
            },
            collapseRow: function (t, i, u) {
                var f = this;
                o(t) || (u = i, i = t, t = r);
                u ? n.noLayout(function () {
                    f.$PL(function (n) {
                        f.$Lf(t, n, !1)
                    }, i)
                }) : f.$Lf(t, i, !1);
                f.$ge()
            },
            collapseAll: function () {
                var t = this;
                n.noLayout(function () {
                    t.$PL(function (n) {
                        t.$Lf(n, !1)
                    })
                });
                t.$ge()
            },
            $ge: function () {
                function f(e, o) {
                    for (var h, s, c, y, a, l = 0, v = e.length; l < v; l++)(h = e[l], h.status !== "deleted") && (s = n.$T(h, !0), s.length) && (s.$N("f-hidden") ? o && s.$e("f-hidden") : o || s.$d("f-hidden"), n.altRowColor && (c = n.$l + "-alt", i % 2 != 0 ? s.$N(c) || s.$d(c) : s.$N(c) && s.$e(c)), r && (y = n.$tu(t, u, i), n.updateCellValue(s, t.columnId, y, !0)), u++, o && i++, h.children && h.children.length && (n.$d_(s, h), a = o, a && (a = h.expanded), f(h.children, a)))
                }
                var n = this,
                    r, t, u, i;
                n.tree && (r = !1, t = n.$XByType("rownumberfield"), t && !t.treeNumber && (r = !0), u = 0, i = 0, f(n.data, !0), n.$J && n.$b(!0))
            },
            $Lf: function (n, t, i) {
                var e = this,
                    f, s;
                if (o(n) || (i = t, t = n, n = r), f = e.$O(t), !f.leaf)
                    if (s = !f.expanded, u(i) || (s = i), f.expanded = s, s) {
                        if (!f.leaf && !(f.children && f.children.length)) {
                            e.$Ld("rowlazyload") || e.dataUrl && e.loadDataUrl(r, {
                                lazyrowid: f.id
                            });
                            e.$r("rowlazyload", [n, f.id, f.index]);
                            return
                        }
                        e.$r("rowexpand", [n, f.id, f.index])
                    } else e.$r("rowcollapse", [n, f.id, f.index])
            },
            $dD: function () {
                function l() {
                    n.$R8.hide();
                    n.$R6.hide();
                    n.$Ru.hide();
                    n.$R0.hide()
                }

                function a() {
                    n.columnLocking && (n.$ra.hide(), n.$rK.hide(), n.$rc.hide(), n.$ed.hide())
                }
                var n = this,
                    t, i, f, e, o, s;
                if (n.showSelectedCell)
                    if (t = n.$LP(), t.length) {
                        n.columnLocking && t.$PP(".f-grid-inner-locked").length ? (i = n.$z, f = n.$ra, e = n.$rK, o = n.$rc, s = n.$ed, l()) : (i = n.$o, f = n.$R8, e = n.$R6, o = n.$Ru, s = n.$R0, a());
                        var h = t.innerHeight() - 1,
                            c = t.innerWidth() - 1,
                            v = t.position(),
                            r = v.top + i.scrollTop(),
                            u = v.left + i.scrollLeft();
                        f.css({
                            width: c,
                            top: r,
                            left: u
                        }).show();
                        e.css({
                            width: c,
                            top: r + h,
                            left: u
                        }).show();
                        o.css({
                            height: h,
                            top: r,
                            left: u
                        }).show();
                        s.css({
                            height: h,
                            top: r,
                            left: u + c
                        }).show()
                    } else l(), a()
            },
            selectCell: function () {
                var r = this,
                    u = r.$LP(),
                    t, i;
                (u.length && (u.$e("f-grid-cell-selected"), r.$dD()), i = $.makeArray(arguments), v(i[0]) && (i = i[0]), t = i.length === 2 ? r.getCellEl(i[0], i[1]) : i[0], c(t)) && (t = $(t), t && t.length) && (n.$Lz = r.id, t.$d("f-grid-cell-selected"), r.$dD(), r.scrollToCell(t))
            },
            isRowSelected: function (n) {
                var t = this,
                    i = t.$T(n);
                return i.$N(t.$l + "-selected")
            },
            getSelectedRows: function (n) {
                var t = this;
                return n ? $.map(t.selectedRows, function (n) {
                    return t.$O(n)
                }) : $.merge([], t.selectedRows || [])
            },
            getSelectedRow: function (n) {
                var i = this,
                    t = i.getSelectedRows(n);
                return t.length ? t[0] : r
            },
            getSelectedRowEls: function (n) {
                var t = this,
                    i;
                return i = n ? t.$H(!0) : t.$H(), i.filter("." + t.$S)
            },
            getSelectedRowEl: function () {
                return this.getSelectedRowEls().eq(0)
            },
            hasSelection: function () {
                return !!this.selectedRows.length
            },
            isAllSelected: function () {
                var t = this,
                    n = !0,
                    r = t.$H(),
                    i;
                return r.length ? (i = !1, r.each(function () {
                    var r = $(this);
                    if (!r.$N(t.$G))
                        if (r.$N(t.$S)) i = !0;
                        else return n = !1, !1
                }), n && !i && (n = !1)) : n = !1, n
            },
            toggleRowExpanders: function (n, t) {
                var i = this;
                i.rowExpander && (o(n) || (t = n, n = r), u(t) ? i.rowExpander.expanded ? i.collapseRowExpanders(n) : i.expandRowExpanders(n) : (i.$tv(n, t, "toggle"), i.$J && i.$b(!0)))
            },
            expandRowExpanders: function (n, t) {
                var i = this;
                (o(n) || (t = n, n = r), i.rowExpander) && (u(t) && (t = i.$H(), i.rowExpander.expanded = !0), i.$tv(n, t, "expand"), i.$J && i.$b(!0))
            },
            collapseRowExpanders: function (n, t) {
                var i = this;
                (o(n) || (t = n, n = r), i.rowExpander) && (u(t) && (t = i.$H(), i.rowExpander.expanded = !1), i.$tv(n, t, "collapse"), i.$J && i.$b(!0))
            },
            $tv: function (n, t, i) {
                var u = this;
                o(n) || (i = t, t = n, n = r);
                var f = u.$PB("collapsed"),
                    s = u.$PB("details"),
                    e = u.$PB("table");
                t.each(function (t, r) {
                    var o = $(r),
                        c = u.$T(o, !0),
                        h = u.$O(o),
                        l = !1,
                        a, p, w;
                    if (i === "expand" ? l = !0 : i === "toggle" && c.$N(f) && (l = !0), l) {
                        if (a = o.$R("." + s), !a.length) {
                            var v = u.$T(o),
                                y = v.index(),
                                b = v.$R("." + e);
                            b.append(u.$tY(h, y, !0));
                            u.columnLocking && (p = u.$Rx(o), w = p.$R("." + e), w.append(u.$tY(h, y, !1)))
                        }
                        c.$e(f);
                        u.$r("rowexpanderexpand", [n, h.id])
                    } else c.$d(f), u.$r("rowexpandercollapse", [n, h.id])
                })
            },
            $tU: function (n, t) {
                var i = this;
                n.locked = t;
                n.columns && n.columns.length && i.$U(function (n) {
                    n.locked = t
                }, n.columns)
            },
            lockColumn: function (n, t) {
                var u = this,
                    i;
                o(n) || (t = n, n = r);
                e(t) ? i = u.$X(i) : (i = t, t = i.columnId);
                u.$tU(i, !0);
                u.$a();
                u.$r("columnlock", [n, t])
            },
            unlockColumn: function (n, t) {
                var f = this,
                    i, u;
                for (o(n) || (t = n, n = r), e(t) ? i = f.$X(i) : (i = t, t = i.columnId), u = i.$Pl;;) {
                    if (!u || !u.locked) break;
                    i = u;
                    u = u.$Pl
                }
                f.$tU(i, !1);
                f.$a();
                f.$r("columnunlock", [n, t])
            },
            getHiddenColumns: function (n) {
                var i = this,
                    t = [];
                return i.$U(function (i) {
                    i.hidden && (n ? t.push(i) : t.push(i.columnId))
                }), t
            },
            setHiddenColumns: function (n) {
                var t = this;
                t.$U(function (t) {
                    t.hidden = i.$_(t.columnId, n) ? !0 : !1
                });
                t.$a()
            },
            hideColumn: function (n, t, i) {
                var f = this,
                    s;
                o(n) || (i = t, t = n, n = r);
                u(i) && (i = !0);
                s = t;
                e(s) && (s = f.$X(s));
                f.$46(s, i);
                f.$a();
                i ? f.$r("columnhide", [n, t]) : f.$r("columnshow", [n, t])
            },
            $46: function (n, t) {
                function r(n) {
                    if (n.$Pl) {
                        var t = !0;
                        $.each(n.$Pl.columns, function (n, i) {
                            if (!i.hidden) return t = !1, !1
                        });
                        n.$Pl.hidden = t;
                        r(n.$Pl)
                    }
                }
                var i = this;
                n.hidden = t;
                r(n);
                n.columns && i.$U(function (n) {
                    n.hidden = t
                }, n.columns);
                i.$48()
            },
            $48: function () {
                function t(i) {
                    i && i.$M() && (n.$tW(i), $.each(i.items, function (n, i) {
                        t(i.menu)
                    }))
                }
                var n = this;
                t(n.$4Z)
            },
            showColumn: function (n) {
                this.hideColumn(n, !1)
            },
            getSelectedCellEl: function () {
                return this.$LP()
            },
            $LP: function () {
                var t = this,
                    n = t.$u.$R(".f-grid-row .f-grid-cell.f-grid-cell-selected"),
                    i = n.length;
                return i && (i === 1 ? t.$V(n) || (n = $()) : n.each(function () {
                    var i = $(this);
                    if (t.$V(i)) return n = i, !1
                })), n
            },
            getSelectedCell: function (n) {
                var t = this,
                    i = t.$LP();
                if (i.length) {
                    if (n) return t.getCellData(i);
                    var u = t.$X(i),
                        f = t.$Pg(i),
                        e = t.$O(f);
                    return [e.id, u.columnId]
                }
                return r
            },
            getSelectedCellColumnId: function () {
                var n = this,
                    r = n.$LP(),
                    t = "",
                    i = n.$X(r);
                return i && (t = i.columnId), t
            },
            deleteSelectedRows: function (n) {
                var t = this,
                    i = t.getSelectedRows();
                i.length && t.deleteRows(i, n)
            },
            $4w: function (n) {
                var i = this,
                    t = [];
                return n = $.makeArray(n), $.each(n, function (n, r) {
                    var u = r;
                    e(r) || (u = i.$c(r));
                    t.push(u)
                }), t
            },
            $RT: function (n) {
                var t = this,
                    i = [];
                return n = $.makeArray(n), $.each(n, function (n, r) {
                    var u = t.$T(r);
                    if (u.length && u.$N(t.$G)) return !0;
                    i.push(t.$c(r))
                }), i
            },
            deleteRow: function (n, t) {
                this.deleteRows([n], t)
            },
            deleteRows: function (n, t) {
                function u(n) {
                    var t;
                    return r.$PL(function (i, r, u, f) {
                        if (i.id === n) return t = [u, f], !1
                    }), t
                }
                var r = this;
                n = r.$4w(n);
                t ? $.each(n, function (n, t) {
                    var r = u(t);
                    r.length && i.$P5(r[0], r[1])
                }) : r.$PL(function (t) {
                    i.$_(t.id, n) && (t.status = "deleted")
                });
                r.clearSelection();
                r.$dy();
                r.$a();
                r.$r("datachange")
            },
            getDeletedRows: function () {
                var n = this,
                    t = [];
                return n.$PL(function (i) {
                    n.$d3(i) || i.status !== "deleted" || t.push(i.id)
                }), t
            },
            getExpandedRows: function () {
                var t = this,
                    n = [];
                return t.$PL(function (t) {
                    t.status !== "deleted" && t.expanded && !t.leaf && n.push(t.id)
                }), n
            },
            clearSelections: function () {
                var t = this;
                n.noEvent(function () {
                    t.selectRows([]);
                    t.selectCell([]);
                    t.selectedRows = []
                })
            },
            clearSelection: function () {
                this.clearSelections()
            },
            clearData: function () {
                var n = this;
                n.paging && n.setRecordCount(0);
                n.clearSelection();
                n.loadData([])
            },
            hasHScrollbar: function () {
                return i.$gE(this.$o)
            },
            hasVScrollbar: function () {
                return i.$gZ(this.$o)
            },
            mergeCells: function () {
                n.$q("F.Grid - mergeCells")
            },
            $tS: function (n, t) {
                function h(n, t) {
                    return e(n) && e(t) && n.indexOf("f-grid-tpl") >= 0 && t.indexOf("f-grid-tpl") >= 0 ? i.$tc(n) === i.$tc(t) : b(n) && b(t) ? n.getTime() === t.getTime() : n === t
                }

                function s(t, i) {
                    for (var l, c = r, a = r, e = 1, s = t; s <= i; s++) l = f.getCellValue(o[s], n), h(l, a) ? e++ : (e > 1 && u.push({
                        rowIndex: c,
                        columnId: n,
                        rowspan: e
                    }), c = s, a = l, e = 1);
                    e > 1 && u.push({
                        rowIndex: c,
                        columnId: n,
                        rowspan: e
                    })
                }
                var f = this,
                    u = [],
                    o = f.data;
                return v(t) ? t.length && $.each(t, function (n, t) {
                    var i = t.rowIndex,
                        r = i + t.rowspan - 1;
                    s(i, r)
                }) : s(0, o.length - 1), u
            },
            mergeColumns: function () {
                n.$q("F.Grid - mergeColumns")
            },
            updateSummaryCellValue: function (n, t, i) {
                var f = this,
                    h = "." + f.$i + "-" + n,
                    e = f.$dL.$R(h),
                    s;
                if (f.columnLocking && !e.length && (e = f.$d4.$R(h)), e.length) {
                    var o = f.summaryData,
                        c = o[n + ".ovalue"],
                        l = o[n];
                    f.$Lc(t, l) || (o[n] = t, i || (u(c) && (o[n + ".ovalue"] = l), f.$Lc(t, c) ? (e.$e(f.$i + "-dirty"), o[n + ".status"] = r) : (e.$d(f.$i + "-dirty"), o[n + ".status"] = "modified")));
                    s = t;
                    (u(t) || t === "") && (s = " ");
                    e.$R("." + f.$i + "-inner").html(s)
                }
            },
            $PL: function (n, t) {
                function e(t) {
                    for (var u, s, f = 0, o = t.length; f < o; f++) {
                        if (u = t[f], i.$dJ(u), r.push(u.id), s = n.apply(i, [u, r, f, t]), s === !1) return;
                        u.children && u.children.length && e(u.children);
                        r.pop()
                    }
                }
                var i = this,
                    r = [],
                    f;
                f = u(t) ? i.data : [i.$O(t)];
                e(f)
            },
            resolveRow: function () {
                this.$PL.apply(this, arguments)
            },
            $dy: function () {
                function i(t, r) {
                    var u = 0;
                    return $.each(t, function (t, f) {
                        var o, e;
                        if (f.status === "deleted") return !0;
                        o = f.id;
                        f.treeIndex = n;
                        f.level = r;
                        n++;
                        u++;
                        e = 0;
                        f.children && f.children.length && (e = i(f.children, r + 1));
                        f.leaf = e ? !1 : !0
                    }), u
                }
                var t = this,
                    n;
                t.tree && (n = 0, i(t.data, 0))
            },
            $to: function () {
                function r(e, o) {
                    var h = !1;
                    $.each(e, function (n, t) {
                        if (f(t.order)) return h = !0, !1
                    });
                    h && e.sort(function (n, t) {
                        var i = n.order,
                            r = t.order;
                        return f(i) || (i = -1e10), f(r) || (r = -1e10), i - r
                    });
                    $.each(e, function (h, c) {
                        var a, l;
                        i.$Ls(c, {
                            sortable: !1,
                            columnType: t.defaultColumnType
                        });
                        t.$P3(c) ? (i.$Ls(c, {
                            resizable: !1,
                            menu: !1,
                            hideable: !1,
                            width: t.$t5()
                        }), t.columnLocking && i.$Ls(c, {
                            locked: !0,
                            lockable: !0
                        })) : i.$Ls(c, {
                            resizable: !0,
                            menu: !0,
                            hideable: !0
                        });
                        t.$rm(c);
                        t.$RW(c);
                        u(c.index) && (c.index = h);
                        f(c.width) || (c.width = t.defaultColumnWidth);
                        a = c.minWidth || t.minColumnWidth || 0;
                        a && !t.$P3(c) && c.width < a && (c.width = a);
                        c.$Pl = o;
                        c.columns && c.columns.length && r(c.columns, c);
                        c.parent = t;
                        c.parentColumn = o;
                        l = c;
                        s(l) && (l = new n.GridColumn(l));
                        l !== c && (e[h] = l)
                    })
                }
                var t = this;
                r(t.columns, null)
            },
            $RW: function (n) {
                var t = this;
                t.cellEditing && (u(n.editable) || n.editable && (n.columnType === "checkboxfield" ? n.editcheckbox = !0 : n.editor || (n.editor = {
                    type: "textbox"
                })))
            },
            $rm: function (t) {
                var i = this;
                t.columnId || (t.columnId = t.field ? t.field : n.$d9());
                t.columnId = t.columnId.replace(/\./g, "_")
            },
            setPageIndex: function (n) {
                this.pagingbar && this.pagingbar.setPageIndex(n)
            },
            setRecordCount: function (n) {
                this.pagingbar && this.pagingbar.setRecordCount(n)
            },
            setPageSize: function (n) {
                this.pagingbar && this.pagingbar.setPageSize(n)
            },
            getStartRowIndex: function () {
                return this.pageIndex * this.pageSize
            },
            getEndRowIndex: function () {
                var n = this,
                    t = n.getStartRowIndex() + n.pageSize - 1;
                return t > n.recordCount - 1 && (t = n.recordCount - 1), t
            },
            getPageCount: function () {
                var n = this,
                    t = Math.floor(n.recordCount / n.pageSize);
                return n.recordCount % n.pageSize > 0 && t++, t
            },
            getPageIndex: function () {
                return this.pageIndex
            },
            getPageSize: function () {
                return this.pageSize
            },
            $4Y: function (n) {
                var i = this,
                    t;
                u(n) && (n = i.pageIndex);
                f(n) || (n = 0);
                t = i.getPageCount();
                t === 0 ? n = 0 : n < 0 ? n = 0 : n > t - 1 && (n = t - 1);
                i.pageIndex = n
            },
            $LJ: function (n, t) {
                var i = this,
                    r = i.pageIndex;
                if (i.$r("beforepaging", [n, t, r]) === !1) return !1;
                i.clearSelectionBeforePaging && i.clearSelection();
                i.setPageIndex(t);
                i.$4v(n, t, r)
            },
            $4v: function (n, t, i) {
                var r = this;
                r.$Ld("paging") || (r.databasePaging ? r.dataUrl && r.loadDataUrl() : r.loadPageData(t));
                r.$r("paging", [n, t, i])
            },
            $t9: function () {
                var e = this,
                    u = n.$Lz,
                    i, t, f;
                if (u)
                    if (i = n(u), i && i.$M()) {
                        if (n.$Lz != e.id) return !1
                    } else n.$Lz = r;
                return (t = $(":focus"), t.length && !t.is("body") && (f = t.$PP(".f-grid>.f-panel-body"), !f.length)) ? !1 : !0
            },
            afterRender: function () {
                var n = this;
                n._super();
                n.$RH && (n.$RH = !1, n.$r("dataload"))
            },
            $y: function () {
                var n = this;
                n._super();
                n.cellEditing && n.$U(function (n) {
                    var t = n.editor;
                    t && t.$y()
                })
            },
            $dN: function (t, r) {
                var s = this,
                    o, e;
                return t && t.columnType === "checkboxfield" && (o = $.trim((r + "").toLowerCase()), i.$_(o, ["true", "false", "1", "0"])) ? o === "false" || o === "0" ? !1 : !0 : ((w(r) || u(r)) && (r = ""), r === "") ? r : (e = t.fieldType, e === "int" || e === "float" || e === "double" ? e === "int" ? f(r) || (r = parseInt(n.removeCommas(r), 10)) : f(r) || (r = parseFloat(n.removeCommas(r))) : e === "boolean" ? g(r) || (r = r == "true" || r == "1") : e === "date" && (r = i.$eC(r), b(r) || (r += "", r && (r = t.fieldDateFormat ? i.$Pv(t.fieldDateFormat, r) : new Date(r)))), r)
            },
            $Pg: function (n) {
                return n.$PP("." + this.$l)
            },
            $BB: function (n) {
                return n.$PP("." + this.$i)
            }
        });
        n.GridColumn = n.Base.extend({
            type: "gridcolumn",
            hide: function () {
                this.parent.hideColumn(this.columnId)
            },
            show: function () {
                this.parent.showColumn(this.columnId)
            },
            isVisible: function () {
                return !this.hidden
            },
            $M: function () {
                return this.isVisible()
            },
            isHidden: function () {
                return !this.$M()
            },
            toggleVisible: function () {
                this.$M() ? this.hide() : this.show()
            },
            setVisible: function (n) {
                n ? this.show() : this.hide()
            },
            setEditable: function (n) {
                var t = this;
                t.editable = n;
                t.parent.$RW(t);
                t.parent.loadData()
            },
            toggleEditable: function () {
                this.setEditable(!this.editable)
            },
            setHideable: function (n) {
                var t = this;
                t.hideable = n;
                t.parent.createColumnHeaderMenu()
            },
            toggleHideable: function () {
                this.setHideable(!this.hideable)
            }
        });
        $.extend(n.Grid.prototype, {
            loadData: function (i, f, o) {
                var s = this,
                    h, c, l, a, v;
                e(i) ? (h = s.$O(i), f && f.length && !f[0].id && (c = s.$tH(f, h.level + 1), h.children = c[0])) : (o = f, f = i, i = r, u(f) || (s.data = f), u(o) || (s.summaryData = o), s.$4T());
                s.$J && (l = s.$Rv());
                s.$dI = r;
                s.keepRowExpanderStatus && !s.$4E() && (s.$dI = [], a = s.$H(), a.each(function (n, t) {
                    var i = $(t);
                    i.$N(s.$PB("collapsed")) || s.$dI.push(s.$c(i))
                }));
                s.filters && delete s.$N8;
                s.cellEditing && s.$J && s.$PD();
                s.$ts();
                s.columnLocking && s.$RI(!1);
                s.$RI(!0);
                s.$Rt();
                s.$N6();
                s.$J && s.$b(!0);
                s.$J ? (v = n.$gk, t.setTimeout(function () {
                    v || s.$r("dataload");
                    s.$Nx()
                }, 50)) : s.$RH = !0;
                s.$J && s.$Rh(l)
            },
            $4E: function () {
                var n = this,
                    i, t, r, u;
                if (!n.$J || (i = n.$H(), i.length != n.data.length)) return !0;
                for (t = 0, r = n.data.length; t < r; t++)
                    if (u = n.$c(i.eq(t)), u != n.data[t].id) return !0;
                return !1
            },
            $Nx: function () {
                var n = this,
                    u, t, i;
                n.$Lw && n.quickPaging && (n.quickPagingThenSelect && (u = n.getSelectedRowEls(), u.length || (t = n.$Lw === "UP" ? n.$H().last() : n.$H().first(), i = $.Event(), i.$Nn = !0, n.selectRow(i, t), n.$LwTdIndex >= 0 && n.selectCell(t.$R("." + n.$i).eq(n.$LwTdIndex)))), n.$Lw = r, n.$LwTdIndex = r)
            },
            $a: function () {
                this.loadData.apply(this, arguments)
            },
            loadDataUrl: function () {
                n.$q("F.Grid - dataUrl")
            },
            $N6: function () {
                var n = this;
                n.listViews && n.listViews.length && $.each(n.listViews, function (t, r) {
                    for (var s = n.$L.$R("." + n.$B("listview-" + r.columnId)), e = $("<ul>", {
                            "class": n.$B("listview-ul")
                        }), u = 0, h = n.data.length, o, f; u < h; u++) o = n.data[u], f = n.getCellData(o, r), f && $("<li>", {
                        "class": n.$B("listview-li") + " " + n.$Y,
                        html: f.value
                    }).$g(e);
                    i.$PS(s, ">ul", e)
                })
            },
            $Rn: function (t, r, u, f, e, o) {
                for (var s, p, c, w, b, k, a, g, h = this, v = [], y = r; y <= u; y++)
                    if (s = t[y], p = s.id, s.status !== "deleted") {
                        h.$dJ(s);
                        c = [h.$l];
                        f || c.push("f-hidden");
                        s.status === "newadded" && c.push(h.$l + "-newadded");
                        h.altRowColor && o.vRowIndex % 2 != 0 && c.push(h.$l + "-alt");
                        s.unselectable && (s.unselectable = !1, n.$q("F.Grid - row - unselectable"));
                        w = h.selectedRows;
                        w.length && i.$_(p, w) && (c.push(h.$S), c.push(h.$l + "-selected"));
                        h.tree && n.$q("F.Grid - tree");
                        var nt = s.cls || "",
                            tt = s.attrs || {},
                            l = {
                                trCls: nt,
                                trAttrs: tt
                            },
                            d;
                        d = h.rowExpander ? h.$Np(s, o.rowIndex, o.vRowIndex, e, l, c) : h.$RG(s, o.rowIndex, o.vRowIndex, e, l);
                        l.trCls && c.push(l.trCls);
                        b = [];
                        k = i.$dG(l.trAttrs, !0, "data-rowid");
                        k["data-rowid"] = p;
                        $.each(k, function (n, t) {
                            b.push(n + '="' + i.$PM(t) + '"')
                        });
                        v.push('<tr class="' + c.join(" ") + '" ' + b.join(" ") + ">" + d.join("") + "<\/tr>");
                        o.rowIndex++;
                        f && o.vRowIndex++;
                        h.tree && s.children && s.children.length && (a = f, a && (a = s.expanded), g = h.$Rn(s.children, 0, s.children.length - 1, a, e, o), $.merge(v, g))
                    } return v
            },
            $RI: function (n) {
                var t = this,
                    o = $("<tbody>"),
                    s = t.data.length,
                    h, c, l, u, nt, tt, p, w, r, b;
                if (s === 0) h = t.emptyText || " ", n || (h = " "), c = $("<tr>", {
                    "class": t.$l + "-empty"
                }), l = $("<td>", {
                    colspan: n ? t.$Lg.length : t.$Lr.length
                }), $("<div>", {
                    "class": "f-grid-empty",
                    html: h
                }).$g(l), l.$g(c), c.$g(o);
                else {
                    var k = 0,
                        d = 0,
                        a = 0,
                        e = t.data.length - 1;
                    if (t.bigData)
                        if (r = t.$dp, r) {
                            var g = t.$o.scrollTop(),
                                v = 10,
                                y = 10;
                            f(t.$tL) && (t.$tL > 0 ? (v = 5, y = 20) : t.$tL < 0 && (v = 20, y = 5));
                            u = Math.floor(g / r) - v;
                            u < 0 && (u = 0);
                            a = u;
                            d = k = u;
                            nt = g - u * r + t.$o.height() + r * y;
                            e = u + Math.floor(nt / r)
                        } else e = 60;
                    e > t.data.length - 1 && (e = t.data.length - 1);
                    tt = t.$Rn(t.data, a, e, !0, n, {
                        rowIndex: k,
                        vRowIndex: d
                    });
                    o.html(tt.join(""))
                }
                p = o.find("tr:last");
                p.$d(t.$PV);
                w = n ? t.$P9 : t.$LD;
                i.$PS(w, "tbody", o);
                t.bigData && s > 0 && (r = t.$dp, r || (r = t.$dp = p.height()), w.css("top", r * a), b = t.$o.find("." + t.$Pz + "-bigdata-shadow"), b.length && b.css({
                    height: r * s
                }));
                t.$tm(n)
            },
            setSummaryData: function (n) {
                var t = this;
                t.summaryData = n;
                t.columnLocking && t.$tm(!1);
                t.$tm(!0)
            },
            $tj: function (n, t, r, f, e) {
                var h = this,
                    o, s;
                if (r.renderer) return o = {
                    rowValue: h.getRowValue(t),
                    rowIndex: t.index,
                    rowId: t.id,
                    rowData: t,
                    columnIndex: r.index,
                    columnId: r.columnId,
                    column: r,
                    tdCls: f,
                    tdAttrs: e
                }, s = r.renderer.apply(h, [n, o]), u(s) || (n = s), f != o.tdCls && (f = o.tdCls, t.values[r.columnId + ".cls"] = f), i.$8(e) != i.$8(o.tdAttrs) && (e = o.tdAttrs, t.values[r.columnId + ".attrs"] = e), [n, f, e]
            },
            $RG: function (t, f, e, o, s) {
                var h = this,
                    ft = o ? h.$Lg : h.$Lr,
                    et = "",
                    ot = h.selectedRows,
                    v, tt, k, st, a, at, y, c, p, b, g, rt, ut, vt, wt, w;
                for (ot.length && i.$_(t.id, ot) && (et = " " + h.$p), v = [], k = 0, st = ft.length; k < st; k++) {
                    var l = ft[k],
                        d = l.columnType,
                        ht = l.columnId;
                    if (!l.hidden) {
                        a = [h.$i, h.$i + "-" + ht];
                        l.cls && a.push(l.cls);
                        h.cellEditing && l.editable && a.push(h.$i + "-editable");
                        h.enableTextSelection || a.push(h.$Lo);
                        var ct = [h.$i + "-inner"],
                            it = [],
                            lt = l.align;
                        lt && ct.push("f-align-" + lt);
                        at = !1;
                        h.tree && n.$q("F.Grid - tree");
                        y = h.getCellData(t, l);
                        c = r;
                        y && (c = y.value, y.status === "modified" && a.push(h.$i + "-dirty"));
                        p = "";
                        b = {};
                        y && (p = y.cls || "", b = y.attrs || {});
                        l.renderer && (g = h.$tj(c, t, l, p, b), c = g[0], p = g[1], b = g[2]);
                        p && a.push(p);
                        rt = [];
                        ut = i.$dG(b, !0, "data-columnid");
                        ut["data-columnid"] = ht;
                        $.each(ut, function (n, t) {
                            rt.push(n + '="' + i.$PM(t) + '"')
                        });
                        c && l.htmlEncode && (c = i.$df(c));
                        d === "checkboxfield" ? (c = h.$RY(c, l), a.push("f-grid-checkboxfield")) : d === "rownumberfield" ? (c = "" + h.$tu(l, f, e), a.push("f-grid-rownumberfield")) : d === "checkselectionfield" ? (c = '<i class="ui-icon f-grid-checkbox' + et + '"><\/i>', a.push("f-grid-checkselectionfield"), t.unselectable && n.$q("F.Grid - row - unselectable")) : d === "rowexpanderfield" && (c = '<i class="ui-icon f-grid-rowexpander-icon"><\/i>', a.push("f-grid-rowexpanderfield"));
                        (u(c) || c === "") && (c = " ");
                        h.disableUnselectableRows && t.unselectable && n.$q("F.Grid - row - unselectable");
                        at ? it.push('<span class="f-tree-cell-text">' + c + "<\/span>") : it.push(c);
                        vt = '<div class="' + ct.join(" ") + '">' + it.join("") + "<\/div>";
                        v.push('<td class="' + a.join(" ") + '" ' + rt.join(" ") + ">" + vt + "<\/td>")
                    }
                }
                if (v.length) {
                    var yt = v.length - 1,
                        nt = v[yt],
                        bt = nt.indexOf('"'),
                        pt = nt.indexOf('"', bt + 1);
                    v[yt] = nt.substr(0, pt) + " " + h.$PV + nt.substr(pt)
                }
                return h.rowRenderer && (tt || (tt = h.getRowValue(t)), wt = i.$8(s.trAttrs), w = {
                    rowValue: tt,
                    rowIndex: f,
                    rowId: t.id,
                    rowData: t,
                    trCls: s.trCls,
                    trAttrs: s.trAttrs
                }, h.rowRenderer.apply(h, [w]), s.trCls != w.trCls && (t.cls = s.trCls = w.trCls), wt != i.$8(w.trAttrs) && (t.attrs = s.trAttrs = w.trAttrs)), v
            },
            $tu: function (n, t, i) {
                var r = this,
                    u = i + 1,
                    f;
                return r.tree && n.treeNumber && (u = t + 1), r.paging && n.pagingNumber && (f = r.getStartRowIndex(), u += f), u
            },
            $d_: function (n, t) {
                var u = this,
                    i = n.$R(".f-tree-folder"),
                    r = !(t.icon || t.iconFont);
                t.leaf ? (n.$d("f-tree-node-leaf"), r && i.$d("f-icon-file")) : t.expanded ? (n.$d(u.$LC), r && (i.$d("f-icon-folder-open"), i.$e("f-icon-folder"))) : (n.$e(u.$LC), r && (i.$d("f-icon-folder"), i.$e("f-icon-folder-open")))
            },
            $Np: function (n, t, r, u, f, e) {
                var o = this,
                    s, c, h;
                e.push(o.$PB());
                s = !1;
                o.$dI ? i.$_(n.id, o.$dI) || (s = !0) : o.rowExpander.expanded || (s = !0);
                s && e.push(o.$PB("collapsed"));
                c = u ? o.$Lg.length : o.$Lr.length;
                h = "";
                s || (h = o.$tY(n, t, u));
                var l = o.$Pz + " " + o.$PB("table"),
                    a = o.$PB("items"),
                    v = o.$RG(n, t, r, u, f),
                    y = '<table class="' + l + '"><tr class="' + a + '">' + v.join("") + "<\/tr>" + h + "<\/table>";
                return ['<td colspan="' + c + '">' + y + "<\/td>"]
            },
            $tY: function (n, t, r) {
                var f = this,
                    o = f.$X(f.rowExpander.columnId),
                    a = f.getCellData(n, o),
                    s = "",
                    h = {},
                    e, c, l, v, y;
                a && (s = a.cls || "", h = a.attrs || {});
                r && (e = f.getCellValue(n, o), o.renderer && (c = f.$tj(e, n, o, s, h), e = c[0], s = c[1], h = c[2]));
                u(e) && (e = "");
                l = [f.$i];
                f.enableTextSelection || l.push(f.$Lo);
                s && l.push(s);
                v = [];
                y = i.$dG(h, !0, "data-columnid");
                y["data-columnid"] = o.columnId;
                $.each(y, function (n, t) {
                    v.push(n + '="' + i.$PM(t) + '"')
                });
                var p = r ? f.$Lg.length : f.$Lr.length,
                    w = '<td class="' + l.join(" ") + '" colspan="' + p + '" ' + v.join(" ") + ">" + e + "<\/td>",
                    b = f.$PB("details");
                return '<tr class="' + b + '">' + w + "<\/tr>"
            },
            $tm: function (n) {
                var t = this,
                    v, c, l, a, s, y, f, e, r, o, h;
                if (t.summary) {
                    if (v = n ? t.$dL : t.$d4, c = $("<tbody>"), t.summaryData) {
                        for (l = $("<tr>", {
                                "class": t.$l + "-summary " + t.$Y
                            }), a = n ? t.$Lg : t.$Lr, s = 0, y = a.length; s < y; s++)(f = a[s], e = f.columnId, f.hidden) || (r = $("<td>", {
                            "class": t.$i + " " + t.$i + "-" + e,
                            "data-columnid": e
                        }), t.enableTextSelection || r.$d(t.$Lo), o = t.summaryData[e], t.summaryData[e + ".status"] === "modified" && r.$d(t.$i + "-dirty"), h = $("<div>", {
                            "class": t.$i + "-inner "
                        }), f.align && f.align !== "left" && h.$d("f-align-" + f.align), (u(o) || o === "") && (o = " "), h.html(o), h.$g(r), r.$g(l));
                        r && r.length && r.$d(t.$PV);
                        l.$g(c)
                    }
                    i.$PS(v, "tbody", c)
                }
            },
            $tF: function () {
                var t = this;
                t.columnMoving && n.$q("F.Grid - columnMoving")
            },
            $Ry: function (n, t, i) {
                this.$r("columnmove", [event, n, t, i])
            },
            $NE: function () {
                function f(n) {
                    var t = $("." + i.$1("resizer") + "." + n);
                    return t.length || (t = $("<div>", {
                        "class": i.$1("resizer") + " " + i.$Pm + " " + n
                    }).$g("body")), t.$5(i.$u.$5()), t.css("top", i.$u.offset().top), t
                }

                function e(n) {
                    for (var t;;) {
                        if (!n.columns) {
                            t = n;
                            break
                        }
                        n = n.columns[n.columns.length - 1]
                    }
                    return t
                }
                var i = this;
                i.columnResizing && i.$u.$R("." + i.$1()).resizable({
                    handles: "e",
                    start: function (t, r) {
                        var u, o, s;
                        n.$Lv = !0;
                        u = r.element;
                        i.$gY(u, !1);
                        o = i.$X(u);
                        o.columns && (s = e(o), u.data("resize-colheader", $(".f-grid-colheader-" + s.columnId)));
                        u = u.data("resize-colheader") || u;
                        var h = u.offset(),
                            c = f("start"),
                            l = f("end");
                        c.css({
                            left: h.left - 1
                        }).show();
                        l.css({
                            left: h.left + u.$4(!0) - 1
                        }).show()
                    },
                    resize: function (n, t) {
                        var i = t.element,
                            r, u;
                        i = i.data("resize-colheader") || i;
                        r = i.offset();
                        u = f("end");
                        u.css("left", r.left + i.$4(!0) + (t.size.width - t.originalSize.width) - 1)
                    },
                    stop: function (e, o) {
                        var s = o.element,
                            h, c;
                        s = s.data("resize-colheader") || s;
                        s.remove("resize-colheader");
                        f("start").remove();
                        f("end").remove();
                        h = i.$X(s);
                        c = s.$4(!0) + (o.size.width - o.originalSize.width);
                        h.width = c;
                        u(h.flex) || (h.flex = r);
                        i.forceFit = !1;
                        i.$b();
                        i.$r("columnresize", [e, h.columnId, c]);
                        t.setTimeout(function () {
                            n.$Lv = !1
                        }, 100)
                    }
                })
            },
            $gr: function (n) {
                function t(n) {
                    for (var u, i, r = 0, f = n.length; r < f; r++)
                        if (i = n[r], i.columns && i.columns.length) {
                            if (!i.locked && (u = t(i.columns), !u)) return !1
                        } else if (!i.locked) return !1;
                    return !0
                }
                var i = this;
                return n.locked ? !0 : n.columns && t(n.columns) ? !0 : !1
            },
            $dC: function (n) {
                function t(n) {
                    for (var u, i, r = 0, f = n.length; r < f; r++)
                        if (i = n[r], i.columns && i.columns.length) {
                            if (!i.hidden && (u = t(i.columns), !u)) return !1
                        } else if (!i.hidden) return !1;
                    return !0
                }
                var i = this;
                return n.hidden ? !0 : n.columns && t(n.columns) ? !0 : !1
            },
            $NW: function () {
                function i(r) {
                    for (var u, f = 0, e = r.length; f < e; f++) u = r[f], u.locked ? (t.push(u), n.$tU(u, !0)) : u.columns && u.columns.length && i(u.columns)
                }
                var n = this,
                    t = [];
                return i(n.columns), t
            },
            $R2: function (n) {
                function i(r) {
                    var u = !1;
                    return $.each(r, function (r, f) {
                        if (f == n || t.$dC(f) || t.columnLocking && t.$gr(f)) return !0;
                        if (f.columns && f.columns.length) {
                            if (i(f.columns)) return u = !0, !1
                        } else return u = !0, !1
                    }), u
                }
                var t = this;
                return i(t.columns)
            },
            $Rf: function (n) {
                function i(r) {
                    var u = !1;
                    return $.each(r, function (r, f) {
                        if (f == n || t.$dC(f)) return !0;
                        if (f.columns && f.columns.length) {
                            if (i(f.columns)) return u = !0, !1
                        } else if (f.hideable) return u = !0, !1
                    }), u
                }
                var t = this;
                return i(t.columns)
            },
            $NN: function () {
                function i(r) {
                    $.each(r, function (r, u) {
                        if (n.$dC(u) || n.columnLocking && n.$gr(u)) return !0;
                        u.columns && u.columns.length ? i(u.columns) : t.push(u)
                    })
                }
                var n = this,
                    t = [];
                return i(n.columns), t
            },
            $N4: function (n) {
                function i(n) {
                    $.each(n, function (n, u) {
                        if (r.$dC(u)) return !0;
                        u.columns && u.columns.length ? i(u.columns) : t.push(u)
                    })
                }
                var r = this,
                    t = [];
                return i(n), t
            },
            $Rm: function (t, r, f) {
                function tt(n) {
                    for (var e, r, i, o, u, t = 0, f = s.length; t < f; t++)
                        for (e = s[t], r = e[1], i = 0, o = r.length; i < o; i++)
                            if (u = r[i], u[0] == n) return u;
                    return null
                }

                function v(n, t) {
                    var i = n[2],
                        r, f, u;
                    i ? i += t : i = t + 1;
                    n[2] = i;
                    r = n[5];
                    r && r.$Pl && (f = r.$Pl.columnId, u = tt(f), u && u.length && v(u, t))
                }

                function y(n, t) {
                    var f, r, o, u, e, i;
                    if (n && n.length) {
                        for (f = n[1], r = 0, o = f.length; r < o; r++) u = f[r], e = u[5], e.columns && e.columns.length || (i = u[3], i ? i++ : i = 2, u[3] = i);
                        t--;
                        t >= 0 && y(s[t], t)
                    }
                }

                function p(t, r, o) {
                    function b(n) {
                        i.$_("f-haschildren", n[1]) && h.length && (a = h[h.length - 1].columnId)
                    }
                    var c = [],
                        k = [e.$1("row")],
                        w = [k, c],
                        d = s.length,
                        g, h, a, l;
                    s.push(w);
                    g = t.length;
                    h = [];
                    $.each(t, function (t, r) {
                        var w, s, b, l, a, y;
                        if (e.$dC(r) || e.columnLocking && f && e.$gr(r)) return !0;
                        u(r.flex) && u(r.width) && (r.width = e.defaultColumnWidth);
                        var p = r.columnId,
                            d = e.$1(p),
                            o = [e.$1(), d, e.$L6, e.$Lo];
                        r.cls && o.push(r.cls);
                        r.sortable && (o.push("f-grid-sortable"), r.sortField === e.sortField && o.push("f-grid-sort-" + e.sortDirection));
                        e.columnLocking && r.lockable && o.push("f-grid-lockable");
                        e.filters && r.filter && (o.push("f-grid-filterable"), e.$N7(p) && o.push("f-grid-filtered"));
                        e.columnMenu && r.menu || o.push("f-grid-menudisabled");
                        e.$P3(r) && o.push("f-grid-fixedwidth");
                        w = [e.$1("inner")];
                        s = r.headerAlign;
                        s || (s = r.align);
                        s && w.push("f-align-" + s);
                        b = r.text ? r.text : " ";
                        l = r.columnType;
                        l === "checkselectionfield" ? (e.multiSelect && (b = '<i class="ui-icon f-grid-checkbox"><\/i>'), o.push("f-grid-checkselectionfield")) : l === "rownumberfield" ? o.push("f-grid-rownumberfield") : l === "rowexpanderfield" ? o.push("f-grid-rowexpanderfield") : l === "checkboxfield" && o.push("f-grid-checkboxfield");
                        a = "";
                        r.tooltip && (a += " ", a += r.tooltipType === "title" ? "title" : "data-qtip", a += '="' + i.$PM(r.tooltip) + '"');
                        var g = "<span" + a + ">" + b + "<\/span>",
                            nt = '<div class="' + e.$1("text") + '">' + g + '<i class="ui-icon f-grid-sort-icon"><\/i><\/div>',
                            tt = '<div class="' + w.join(" ") + '">' + nt + '<div class="' + e.$1("trigger") + '">' + n.$g0 + "<\/div><\/div>",
                            k = [p, o, 0, 0, tt, r];
                        c.push(k);
                        r.columns && r.columns.length && (y = 0, $.each(r.columns, function (n, t) {
                            if (t.hidden || e.columnLocking && f && t.locked) return !0;
                            y++;
                            h.push(t)
                        }), y > 1 && v(k, y - 1), y > 0 && o.push("f-haschildren"))
                    });
                    a = "";
                    c && c.length && (l = c[c.length - 1], r === 0 ? (l[1].push(e.$PV), b(l)) : l[0] === o && (l[1].push(e.$PV), b(l)));
                    h.length && (y(w, d), r++, p(h, r, a))
                }
                var e = this,
                    s = [],
                    a, c, w, l, g, o, h, nt;
                for (p(r, 0, ""), a = [], c = 0, w = s.length; c < w; c++) {
                    var b = s[c],
                        k = b[1],
                        d = [];
                    for (l = 0, g = k.length; l < g; l++) o = k[l], h = [], h.push('data-columnid="' + i.$PM(o[0]) + '"'), o[2] && h.push('colspan="' + o[2] + '"'), o[3] && h.push('rowspan="' + o[3] + '"'), d.push('<th class="' + o[1].join(" ") + '" ' + h.join(" ") + ">" + o[4] + "<\/th>");
                    a.push('<tr class="' + b[0].join(" ") + '">' + d.join("") + "<\/tr>")
                }
                nt = $("<thead>").html(a.join(""));
                i.$PS(t, "thead", nt)
            },
            $ts: function () {
                var n = this,
                    t;
                n.columnLocking && (t = n.$NW(), n.gridHeader && n.$Rm(n.$g1, t, !1), n.$Lr = n.$N4(t), n.lockedColumns = n.$Lr);
                n.gridHeader && n.$Rm(n.$LN, n.columns, !0);
                n.$Lg = n.$NN();
                n.mainColumns = n.$Lg;
                n.$NE();
                n.$tF()
            },
            $4T: function () {
                var n = this,
                    i = n.data,
                    t;
                i && i.length ? i[0].id || (t = n.$tH(i), t && t.length === 2 && (n.data = t[0], n.alldata = t[1])) : (n.alldata = [], n.data = [], n.paging && n.setRecordCount(0))
            },
            $tH: function (n, t) {
                var i = this,
                    r;
                if (n && n.length) return r = i.$Nt(n), i.$Re(r, t)
            },
            $RA: function (n) {
                var t = this,
                    i = t.$Re(t.alldata, r, n);
                t.data = i[0];
                t.alldata = i[1]
            },
            $Re: function (t, i, r) {
                var u = this,
                    f = t;
                return r || (u.tree && n.$q("F.Grid - tree"), u.simulateTree && (f = u.$Ne(f))), u.paging && !u.databasePaging && (f = u.pagingbar.getPagedData(f)), [f, t]
            },
            $Nt: function (t) {
                function l(n, t, i) {
                    (w(i) || u(i)) && (i = "");
                    n[t] = i
                }
                var r = this,
                    h, c, f, s, e, o;
                return (u(t) && (t = r.data), !t || !t.length) ? [] : (h = [], r.$U(function (n) {
                    h.push(n)
                }), r.simulateTree && (r.$U(function (n) {
                    if (n.simulateTreeLevelField) return c = n.simulateTreeLevelField, f = n.columnId, !1
                }), s = 0, e = 0), o = [], $.each(t, function (t, a) {
                    var v = {},
                        y = {},
                        p, w, k, d, b;
                    $.each(a, function (n, t) {
                        l(y, r.getField(n), t)
                    });
                    p = {};
                    $.each(h, function (n, t) {
                        var e = t.columnId,
                            f = t.field,
                            i;
                        f && (i = r.$dN(t, y[f]));
                        u(i) || (p[e] = i)
                    });
                    r.simulateTree && (t === 0 && (s = parseInt(y[c], 10)), w = parseInt(y[c], 10), e != w && (t - 1 >= 0 && w > e && (k = o[o.length - 1], d = k.values[f].replace(new RegExp(n.$LH, "g"), ""), k.values[f] = i.$L$(n.$LH, e - s) + n.$R7 + d), e = w), p[f] = i.$L$(n.$LH, w + 1 - s) + p[f]);
                    b = r.attrFields;
                    b && b.length && (v.attrs = {}, $.each(b, function (n, t) {
                        v.attrs[t] = y[t] + ""
                    }));
                    v.id = r.idField ? y[r.idField] + "" : "f_grid_row_" + t;
                    r.textField && (v.text = y[r.textField] + "");
                    r.parentIdField && (v.parentId = y[r.parentIdField] + "");
                    r.unselectableField && (v.unselectable = !1, n.$q("F.Grid - row - unselectable"));
                    r.rowExpander && (p[r.rowExpander.columnId] = y[r.rowExpander.field]);
                    r.listViews && r.listViews.length && $.each(r.listViews, function (n, t) {
                        p[t.columnId] = y[t.field]
                    });
                    v.values = p;
                    v.index = t;
                    r.rowDataBound && r.rowDataBound.apply(r, [v]);
                    o.push(v)
                }), o)
            },
            $Ne: function (n) {
                var t = this,
                    i;
                return !n || n.length === 0 ? [] : (t.$U(function (n) {
                    if (n.simulateTreeLevelField) return i = n, !1
                }), n)
            },
            $NR: function (n, t) {
                function h(n, t) {
                    $.each(n, function (n, i) {
                        var e = i.id,
                            f = r[e];
                        i.treeIndex = o;
                        i.level = t;
                        o++;
                        f && f.length ? (u(i.expanded) && (i.expanded = l.expanded ? !0 : !1), i.children = f, i.leaf = !1, h(f, t + 1)) : u(i.leaf) && (i.leaf = !0)
                    })
                }
                var c = this,
                    f, e, o;
                if (!n || n.length === 0) return [];
                t = t || 0;
                var l = c.tree,
                    r = {},
                    s = [];
                return ($.each(n, function (n, t) {
                    var i = t.parentId;
                    r[i] ? r[i].push(t) : r[i] = [t];
                    s.push(t.id + "")
                }), $.each(r, function (n) {
                    if (!i.$_(n, s)) return f = n, !1
                }), u(f)) ? [] : (e = r[f], o = 0, h(e, t), e)
            }
        });
        $.extend(n.Grid.prototype, {
            $tW: function (n) {
                var i = this,
                    t = 0;
                $.each(n.items, function (n, i) {
                    return i.column.hidden || t++, t >= 2 ? !1 : void 0
                });
                $.each(n.items, function (n, r) {
                    var u = r.column,
                        f;
                    u.hidden ? r.setChecked(!1) : (r.setChecked(!0), t < 2 ? (f = i.$Rf(u), f ? r.enable() : r.disable()) : r.enable())
                })
            },
            $LT: function (n, t) {
                var i = this;
                if (i.$PH) {
                    o(n) || (t = n, n = r);
                    var u = i.$PH.$dr,
                        f = i.$X(u),
                        e = i.$XHeaderEl(u);
                    t === "ASC" || t === "DESC" ? i.$R$(n, f.sortField, t, u) : t === "unlock" || t === "lock" ? (t === "unlock" ? i.unlockColumn(n, f) : i.lockColumn(n, f), i.$r(t, [n, u])) : t === "filters" || t === "cancelfilters" && i.$NQFilterChange(n, u, "cancel")
                }
            },
            $Rk: function (t) {
                var r = this,
                    u = [];
                return $.each(t, function (t, f) {
                    var e, o, s;
                    f.hideable && (e = $.trim(i.$t7(f.text)), e || (e = " "), o = {
                        column: f,
                        text: e,
                        checked: !f.hidden,
                        handler: function (n) {
                            r.hideColumn(n, f, !this.isChecked())
                        }
                    }, f.columns && $.extend(o, {
                        menu: new n.Menu({
                            items: r.$Rk(f.columns),
                            listeners: {
                                show: function () {
                                    r.$tW(this)
                                }
                            }
                        })
                    }), s = new n.MenuCheckBox(o), u.push(s))
                }), u
            },
            createColumnHeaderMenu: function () {
                var t = this,
                    u = new n.MenuItem({
                        text: t.sortASCText,
                        iconFont: "long-arrow-up",
                        handler: function (n) {
                            t.$LT(n, "ASC")
                        }
                    }),
                    f = new n.MenuItem({
                        text: t.sortDESCText,
                        iconFont: "long-arrow-down",
                        handler: function (n) {
                            t.$LT(n, "DESC")
                        }
                    }),
                    e = new n.Menu({
                        items: t.$Rk(t.columns),
                        listeners: {
                            show: function () {
                                t.$tW(this)
                            }
                        }
                    }),
                    c = new n.MenuItem({
                        text: t.columnsText,
                        iconFont: "columns",
                        menu: e
                    }),
                    i = [u, f, "-", c],
                    r;
                if (t.columnLocking) {
                    var o = new n.MenuItem({
                            text: t.unlockText,
                            iconFont: "unlock",
                            handler: function (n) {
                                t.$LT(n, "unlock")
                            }
                        }),
                        s = new n.MenuItem({
                            text: t.lockText,
                            iconFont: "lock",
                            handler: function (n) {
                                t.$LT(n, "lock")
                            }
                        }),
                        h = new n.MenuSeparator;
                    i.push(h);
                    i.push(s);
                    i.push(o)
                }
                t.filters && n.$q("F.Grid - filters");
                r = new n.Menu({
                    items: i,
                    listeners: {
                        hide: function () {
                            if (this.$dr) {
                                var n = t.$XHeaderEl(this.$dr);
                                t.$gY(n, !1);
                                this.$dr = ""
                            }
                        }
                    }
                });
                r.target = t;
                t.$t3 = u;
                t.$t2 = f;
                t.$4Z = e;
                t.$R5 = h;
                t.$dR = o;
                t.$dt = s;
                t.filters && n.$q("F.Grid - filters");
                t.$PH = r;
                t.colheaderMenu = r
            },
            $Nh: function () {
                var t = this;
                t.$u.on("click", "." + t.$1("trigger"), function (i) {
                    var f = $(this),
                        u, r, e;
                    if (t.$V(i)) return (u = f.$PP("." + t.$1()), r = t.$X(u), !t.columnMenu || !r.menu) ? !1 : f.is(":visible") ? (t.$PH || t.createColumnHeaderMenu(), t.filters && r.filter && n.$q("F.Grid - filters"), t.$PH.$M()) ? !1 : (r.sortable ? (u.$N("f-grid-sort-ASC") ? t.$t3.disable() : t.$t3.enable(), u.$N("f-grid-sort-DESC") ? t.$t2.disable() : t.$t2.enable()) : (t.$t3.disable(), t.$t2.disable()), t.columnLocking && (r.lockable ? (t.$R5.show(), t.$dR.show(), t.$dt.show(), r.locked ? (t.$dR.enable(), t.$dt.disable()) : (t.$dR.disable(), t.$dt.enable()), r.locked || (e = t.$R2(r), e || (t.$dR.disable(), t.$dt.disable()))) : (t.$R5.hide(), t.$dR.hide(), t.$dt.hide())), t.filters && n.$q("F.Grid - filters"), t.$PH.$dr = r.columnId, t.$PH.show(f, "bottom", {
                        top: 1,
                        left: 0
                    }), !1) : !1
                })
            }
        });
        $.extend(n.Grid.prototype, {
            $L1: function () {
                function i() {
                    var r = n.$L.$5(),
                        i = n.$do.$t(!0),
                        t = 0;
                    return n.columnLocking && (i = Math.max(i, n.$Nb.$t(!0))), n.summary && n.summaryPosition !== "flow" && (t = n.$g3.$t(!0), n.columnLocking && (t = Math.max(t, n.$No.$t(!0)))), r -= i, r - t
                }

                function t() {
                    var r, u, e;
                    f(n.height) ? (r = i(), n.$o.$t(r, !0), n.columnLocking && n.$z.$t(r, !0)) : (n.$o.css("height", "auto"), n.columnLocking && n.$z.css("height", "auto"));
                    u = 0;
                    n.columnLocking && (n.$tD(!1), u = n.$NB.$4(!0), n.$dd.css("margin-left", u));
                    n.$tD(!0);
                    f(n.height) && (e = i(), r !== e && t())
                }
                var n = this;
                t();
                n.columnLocking && (n.$NC() || t());
                n.columnLocking && (n.hasHScrollbar() ? n.$z.css("overflow-x", "scroll") : n.$z.css("overflow-x", "hidden"));
                n.$eB();
                n.$t4();
                n.$tP()
            },
            $NC: function () {
                var n = this,
                    o = !0,
                    k = "." + n.$1("row"),
                    d = n.$LN.$R(k),
                    g = n.$g1.$R(k),
                    r, u, l, a, f, e, v, y, p, w, b, t, s, i;
                d.css("height", "auto");
                g.css("height", "auto");
                var nt = "." + n.$l,
                    h = n.$P9.$R(nt),
                    tt = n.$LD.$R(nt);
                if (h.css("height", "auto"), tt.css("height", "auto"), n.summary) {
                    var it = "." + n.$l + "-summary",
                        c = n.$dL.$R(it),
                        rt = n.$d4.$R(it);
                    c.css("height", "auto");
                    rt.css("height", "auto")
                }
                if (r = n.$LN.$t(!0), u = n.$g1.$t(!0), r !== u && (u < r ? (l = g.last(), l.$t(l.$t() + (r - u))) : (a = d.last(), a.$t(a.$t() + (u - r))), o = !1), n.$P9.$t(!0) !== n.$LD.$t(!0)) {
                    for (t = 0, s = h.length; t < s; t++)
                        if (f = h.eq(t), e = tt.eq(t), n.rowExpander) {
                            var ut = f.$R("." + n.$PB("items")),
                                st = f.$R("." + n.$PB("details")),
                                ft = e.$R("." + n.$PB("items")),
                                ht = e.$R("." + n.$PB("details")),
                                et = ut.$t(),
                                ot = ft.$t();
                            et !== ot && (v = Math.max(et, ot), ut.$t(v), ft.$t(v));
                            ht.$t(st.$t())
                        } else y = f.$t(), p = e.$t(), y !== p && (i = Math.max(y, p), f.$t(i), e.$t(i));
                    o = !1
                }
                if (n.summary && n.$dL.$t(!0) !== n.$d4.$t(!0)) {
                    for (t = 0, s = c.length; t < s; t++) w = c.eq(t), b = rt.eq(t), i = Math.max(w.$t(), b.$t()), w.$t(i), b.$t(i);
                    o = !1
                }
                return o
            },
            $tD: function (n) {
                function a() {
                    var a = i.$P4(h),
                        b, d, p, g, v;
                    k() && (a = i.$P4(h));
                    var y = [],
                        l = 0,
                        w = !1;
                    if (t.forceFit && n ? (w = !0, b = 0, d = a, $.each(u, function (n, i) {
                            i.hidden || (f(i.width) || (i.width = t.defaultColumnWidth), t.$P3(i) ? d -= i.width : b += i.width)
                        }), $.each(u, function (n, i) {
                            var r, u;
                            if (i.hidden) return !0;
                            r = i.width;
                            t.$P3(i) || (r = Math.floor(i.width * d / b), u = i.minWidth || t.minColumnWidth || 0, u && r < u && (r = u));
                            i.width = r;
                            y.push({
                                width: r,
                                item: i
                            });
                            l += r
                        })) : (n && (p = 0, g = a, $.each(u, function (n, t) {
                            if (t.hidden) return !0;
                            t.flex ? p += t.flex : g -= t.width
                        }), p && (w = !0)), $.each(u, function (i, r) {
                            var u, f;
                            if (r.hidden) return !0;
                            u = r.width;
                            n && r.flex && (u = Math.floor(r.flex / p * g));
                            f = r.minWidth || t.minColumnWidth || 0;
                            f && !t.$P3(r) && u < f && (u = f);
                            r.width = u;
                            y.push({
                                width: u,
                                item: r
                            });
                            l += u
                        })), w && l < a) {
                        var it = a - l,
                            nt = y[y.length - 1],
                            tt = nt.width + it;
                        nt.width = tt;
                        nt.item.width = tt;
                        l = a
                    }
                    return e.$4(l, !0), s.$4(l, !0), r.$4(l, !0), t.summary && (o.$4(l, !0), c.$4(l, !0)), v = $("<colgroup>"), $.each(y, function (n, t) {
                        var i = $("<col>");
                        i.width(t.width);
                        i.$g(v)
                    }), i.$gt(e, ">colgroup", v), i.$gt(r, ">colgroup", v.clone()), t.summary && i.$gt(o, ">colgroup", v.clone()), t.rowExpander && r.$R(">tbody>tr>td>.f-grid-table").each(function () {
                        i.$gt($(this), ">colgroup", v.clone())
                    }), l
                }
                var t = this,
                    u = t.$Lg,
                    s = t.$RX,
                    e = t.$LN,
                    h = t.$o,
                    r = t.$P9,
                    o = t.$dL,
                    c = t.$Ri,
                    l, v;
                n || (u = t.$Lr, s = t.$Ns, e = t.$g1, h = t.$z, r = t.$LD, o = t.$d4, c = t.$NJ);
                e.$R(">colgroup").remove();
                r.$R(">colgroup").remove();
                t.summary && o.$R(">colgroup").remove();
                e.css("width", "100%");
                s.css("width", "auto");
                r.css("width", "100%");
                t.summary && (o.css("width", "100%"), c.css("width", "auto"));
                v = t.hasVScrollbar();
                l = a();
                v !== t.hasVScrollbar() && (l = a());
                n && t.$eg(l)
            },
            $eB: function () {
                var n = this;
                n.$u.$R("." + n.$1()).each(function () {
                    var i = $(this),
                        u = i.$R("." + n.$1("inner")),
                        f = u.$t(!0),
                        t = i.$5(),
                        r;
                    t && t > f && (r = i.$R("." + n.$1("trigger")), r.css({
                        top: "50%",
                        height: t,
                        "margin-top": -t / 2
                    }))
                })
            },
            $eg: function (n) {
                var t = this,
                    u, r;
                t.hasVScrollbar() && (u = i.$P4(t.$o), r = t.$o.$C() - u, r || (r = i.$ro()), t.$RX.$4(n + r, !0), t.summary && t.summaryPosition !== "flow" && t.$Ri.$4(n + r, !0))
            }
        });
        $.extend(n.Grid.prototype, {
            $es: function (n, t) {
                var i = this,
                    r, f = i.$Pg(n),
                    e = n.index(),
                    s = f.$R("." + i.$i).length,
                    o;
                if (u(t) && (t = i.tabVerticalNavigate), t) {
                    var c = f.index(),
                        h = f.siblings().addBack(),
                        l = h.length;
                    c === l - 1 ? e !== s - 1 && (r = h.eq(0).$R("." + i.$i).eq(e + 1)) : r = f.next().$R("." + i.$i).eq(e)
                } else e === s - 1 ? (o = f.next(), o.length && (r = o.$R("." + i.$i).eq(0))) : r = n.next();
                return r
            },
            $eb: function (n, t) {
                var i = this,
                    r, f = i.$Pg(n),
                    e = n.index(),
                    h = f.$R("." + i.$i).length,
                    o;
                if (u(t) && (t = i.tabVerticalNavigate), t) {
                    var c = f.index(),
                        s = f.siblings().addBack(),
                        l = s.length;
                    c === 0 ? e !== 0 && (r = s.eq(l - 1).$R("." + i.$i).eq(e - 1)) : r = f.prev().$R("." + i.$i).eq(e)
                } else e === 0 ? (o = f.prev(), o.length && (r = o.$R("." + i.$i).eq(h - 1))) : r = n.prev();
                return r
            },
            $RU: function () {
                var t = this;
                t.$u.on("click dblclick", ".f-grid-row .f-grid-cell", function (n) {
                    var i = $(this),
                        u, r;
                    t.$V(n) && t.cellEditing && (u = t.cellEditingClicks === 1 ? "click" : "dblclick", t.$Pj(n), r = t.$X(i), r.editable && (r.columnType === "checkboxfield" ? t.$tw(n, i) : n.type === u && t.$dZ(n, i)))
                });
                $(document).mousedown(function (n) {
                    var u, f, r, i;
                    if (t.cellEditing) {
                        if (t.$V(n)) {
                            if (u = $(n.target), u.$PP(".f-grid-cell-editor").length) return;
                            if (r = u.$PP(".f-grid-row .f-grid-cell"), r.length && (i = t.$X(r), i.editor)) return
                        } else if (f = t.$L.$R(".f-grid-cell-editor:visible"), f.length) {
                            if (r = f.data("targettd"), i = t.$X(r), !i) {
                                t.$PD();
                                return
                            }
                            if (i.editor && i.editor.$dw && !i.editor.$dw(n)) return
                        }
                        t.$Pj(n)
                    }
                });
                $(document).keydown(function (i) {
                    function e(n, e) {
                        function l(r) {
                            return i.shiftKey ? t.$eb(r, n) : t.$es(r, n)
                        }
                        var h, s, c;
                        u(n) && (n = t.tabVerticalNavigate);
                        u(e) && (e = t.tabEditableCell);
                        s = r;
                        do {
                            if (s = l(s), !s) break;
                            h = t.$X(s)
                        } while (e && (!h.editable || s.$N(t.$i + "-uneditable")));
                        t.$r("beforetabedit", [i, {
                            columnIndex: f.index,
                            columnId: f.columnId,
                            column: f,
                            td: r,
                            tr: o,
                            nextTd: s
                        }]) === !1 || s && s.length && (t.$dZ(i, s), c = t.$Pg(s), t.selectRow(i, c));
                        i.preventDefault()
                    }

                    function s() {
                        t.$L_ ? t.$Pj(i) : f.editable && (f.columnType === "checkboxfield" ? t.$tw(i, r) : t.$dZ(i, r));
                        i.preventDefault()
                    }
                    var r;
                    if (t.cellEditing && t.$t9() && (r = t.$LP(), r.length)) {
                        var f = t.$X(r),
                            h = r.index(),
                            o = t.$Pg(r),
                            c = o.$R("." + t.$i).length;
                        i.keyCode == n.KEY.ESC && (t.$L_ && t.$PD(i), i.preventDefault());
                        i.keyCode == n.KEY.ENTER && (t.$L_ && f.editor.$s("textarea") || (t.enterSameAsTab || t.enterNavigate ? t.enterSameAsTab ? e() : e(t.enterVerticalNavigate, t.enterEditableCell) : s()));
                        i.keyCode == n.KEY.TAB && e();
                        i.keyCode == n.KEY.SPACE && f.editable && f.columnType === "checkboxfield" && (t.$tw(i, r), i.preventDefault())
                    }
                })
            },
            $R4: function (n, t, i) {
                var r = this,
                    u = r.$Pg(t),
                    f = r.$O(u),
                    e = u.index(),
                    o = r.getCellValue(f, i),
                    s = r.getRowValue(u);
                return r.$r("beforeedit", [n, o, {
                    rowValue: s,
                    rowIndex: e,
                    rowId: f.id,
                    rowData: f,
                    columnIndex: i.index,
                    columnId: i.columnId,
                    column: i,
                    td: t,
                    tr: u
                }]) === !1 ? !1 : !0
            },
            $Ros: function () {
                var n = this;
                n.cellEditing && n.$U(function (t) {
                    n.$Ro(t)
                })
            },
            $Ro: function (t) {
                var r = this,
                    i = t.editor,
                    u, f;
                i && (i.inited || ($.extend(i, {
                    msgTarget: "qtip",
                    disableBlurStyle: !0
                }), s(i) && (u = n.$Ph(i.type || "textbox"), i = t.editor = new u(i)), f = $("<div>", {
                    "class": "f-grid-cell-editor"
                }).$g(r.$L), i.$s("triggerbox") && (i.enableEnterAction = !1), i.doInit(), i.parent = r, i.$P.$g(f)))
            },
            $dZ: function (n, r) {
                var f = this,
                    o = f.$X(r),
                    e, s;
                (f.$Pj(n), f.selectCell(r), o.columnType !== "checkboxfield") && f.cellEditing && o.editable && (e = o.editor, e) && (f.$L_ || r.$N(f.$i + "-uneditable") || f.$R4(n, r, o) !== !1 && (e.inited || f.$Ro(o), s = e.$P.parent(".f-grid-cell-editor"), s.data("targettd", r), f.$tl && (t.clearTimeout(f.$tl), f.$tl = null), f.$tl = t.setTimeout(function () {
                    var t;
                    if (r.is(":visible")) {
                        f.$L_ = !0;
                        e.width = r.$C();
                        e.$b();
                        f.$eu(o, e, f.getCellValue(r), r);
                        e.$dO && e.$dO();
                        r.$R(".f-grid-cell-inner").css("visibility", "hidden");
                        s.show();
                        var c = r.position(),
                            v = r.$5(),
                            y = f.$o.position().top,
                            l = 0;
                        f.columnLocking && r.$PP(".f-grid-inner-main").length && (l = i.$x(f.$dd, "margin-left"));
                        var h = e.$L.$t(!0),
                            p = i.$x(r, "border-top-width"),
                            w = i.$x(r, "border-left-width"),
                            a = f.$L.$5(),
                            n = c.top + y + (v - h) / 2 + p;
                        n < 0 ? n = 0 : n + h > a && (n = a - h);
                        s.css({
                            top: n,
                            left: c.left + l + w
                        });
                        t = o.autoSelectEditor;
                        u(t) && (t = f.autoSelectEditor);
                        t ? e.focus(!0) : e.focus()
                    }
                }, 100)))
            },
            $tw: function (n, t) {
                var i = this,
                    u = i.$X(t),
                    r, f;
                i.cellEditing && u.editable && u.columnType === "checkboxfield" && (t.$N(i.$i + "-uneditable") || i.$R4(n, t, u) !== !1 && ((i.$Pj(n), i.selectCell(t), r = t.$R(".f-grid-checkbox"), f = r.$N(i.$p), r.$N(i.$0)) || (r.$P2(i.$p), i.$gX(n, t, !f))))
            },
            updateCellValue: function (n, t, i, r) {
                var f = this,
                    o = f.$T(n, !0),
                    u = {};
                e(t) ? u[t] = i : (u = t, g(i) && (r = i));
                $.each(u, function (n, t) {
                    var i = o.$R(".f-grid-cell.f-grid-cell-" + n),
                        u = i;
                    i.length || (u = {
                        tr: o,
                        columnId: n
                    });
                    f.$gX(null, u, t, r)
                })
            },
            $Lc: function (n, t) {
                return b(n) && b(t) ? n.getTime() === t.getTime() : w(n) && w(t) ? !0 : n === t
            },
            $gX: function (n, t, f, e) {
                var o = this,
                    s, p, l, tt, h, y, k;
                if (c(t) ? (s = o.$X(t), p = o.$Pg(t)) : (p = t.tr, s = o.$X(t.columnId), t = r), s) {
                    l = o.$O(p);
                    s.field && (f = o.$dN(s, f));
                    var a = s.columnId,
                        v = l.values,
                        g = v[a + ".ovalue"],
                        nt = v[a];
                    if (!o.$Lc(f, nt)) {
                        if (v[a] = f, e || (u(g) && (v[a + ".ovalue"] = nt), o.$Lc(f, g) ? (t && t.$e(o.$i + "-dirty"), v[a + ".status"] = r) : (t && t.$d(o.$i + "-dirty"), v[a + ".status"] = "modified")), tt = o.getRowValue(p), t) {
                            if (h = f, s.renderer) {
                                var w = "",
                                    b = {},
                                    d = o.getCellData(l, s);
                                d && (w = d.cls || "", b = d.attrs || {});
                                y = o.$tj(h, l, s, w, b);
                                h = y[0];
                                w != y[1] && (t.$e(w), t.$d(y[1]));
                                i.$8(b) != i.$8(y[2]) && ($.each(b, function (n) {
                                    t.removeAttr(n)
                                }), t.attr(y[2]))
                            }
                            h && s.htmlEncode && (h = i.$df(h));
                            s.columnType === "checkboxfield" && (h = o.$RY(h, s));
                            (u(h) || h === "") && (h = " ");
                            k = t.$R("." + o.$i + "-inner");
                            o.tree && o.tree.columnId === s.columnId && (k = k.$R(".f-tree-cell-text"));
                            k.html(h);
                            o.$dD()
                        }
                        o.$r("afteredit", [n, f, {
                            rowValue: tt,
                            rowIndex: l.index,
                            rowId: l.id,
                            rowData: l,
                            columnIndex: s.index,
                            columnId: s.columnId,
                            column: s,
                            td: t,
                            tr: p
                        }]);
                        o.$r("datachange", [n])
                    }
                }
            },
            $XEditorValue: function (n, t) {
                var r = this,
                    i;
                return t.blur(), n.editGetter ? i = n.editGetter.apply(r, [t]) : (i = t.getValue(), (t.$s("dropdownlist") || t.$s("dropdownbox")) && t.isUserInput() && (i = t.getText()), v(i) && (i = i.join(","))), i
            },
            $eu: function (n, t, i, r) {
                var f = this,
                    e, o;
                if (n.editSetter) e = f.$Pg(r), o = f.$c(e), n.editSetter.apply(f, [t, i, n.columnId, o]);
                else {
                    if (t.$s("dropdownlist") && !t.forceSelection && u(t.getTextByValue(i))) {
                        t.setText(i);
                        return
                    }
                    t.setValue(i)
                }
            },
            $Pj: function (n, t) {
                var i = this,
                    u, r, f, e;
                i.cellEditing && (u = i.$L.$R(".f-grid-cell-editor:visible"), u.length) && (r = u.data("targettd"), r && r.length) && (f = i.$X(r), e = f.editor, f && e && (t || !e.validate() || i.$gX(n, r, i.$XEditorValue(f, e))), u.hide(), r.$R(".f-grid-cell-inner").css("visibility", "visible"), i.$L_ = !1)
            },
            $PD: function (n) {
                this.$Pj(n, !0)
            },
            startEdit: function (n, t) {
                var i = this,
                    r = i.$T(n, !0).$R("." + i.$i + "-" + t);
                i.$dZ(null, r)
            },
            saveEdit: function () {
                this.$Pj()
            },
            cancelEdit: function () {
                this.$PD()
            },
            $eo: function () {
                var t = this,
                    n = 0;
                return $.each(t.data, function (t, i) {
                    f(i.index) && i.index < n && (n = i.index)
                }), n--, n
            },
            $RF: function (n, t) {
                var r = this,
                    i = {},
                    f = {};
                return $.each(t, function (n, t) {
                    var i = r.$X(n);
                    i && (t = r.$dN(i, t), f[n] = t)
                }), i.index = r.$eo(), i.values = f, i.status = "newadded", u(n) || (i.id = n), i
            },
            addNewRecords: function (t, r) {
                var e = this,
                    o = [];
                $.each(t, function (t, i) {
                    var f = i.values,
                        r;
                    u(f) && (f = i);
                    r = i.id;
                    u(r) && (r = n.$d9());
                    o.push(e.$RF(r, f))
                });
                f(r) ? i.$W(r, o, e.data) : r ? $.merge(e.data, o) : i.$W(0, o, e.data);
                e.$a();
                e.$r("datachange")
            },
            addNewRecord: function (t, r, u, o) {
                var s = this,
                    h;
                return e(t) || (o = u, u = r, r = t, t = n.$d9()), h = s.$RF(t, r), f(u) ? i.$W(u, h, s.data) : u ? s.data.push(h) : i.$W(0, h, s.data), s.$a(), s.$r("datachange"), o !== !1 && n.defer(function () {
                    var i = "." + s.$i + "-editable:first",
                        n, t;
                    e(o) && (i = "." + s.$i + "-" + o);
                    n = 0;
                    f(u) ? n = u : u && (n = s.$H().length - 1);
                    t = s.$T(n, !0).$R(i).eq(0);
                    t && t.length && (s.hasVScrollbar() && s.scrollToRow(n), s.$dZ(null, t))
                }, 100), t
            },
            commitChanges: function () {
                function e(r, u, f) {
                    for (var o, s, c, h = 0, l = r.length; h < l; h++)
                        if (o = r[h], n.$dJ(o), o.status === "deleted") continue;
                        else s = {}, $.extend(s, o, {
                            index: t,
                            treeIndex: t,
                            level: f
                        }), t++, u.push(s), c = {}, $.each(o.values, function (n, t) {
                            i.$PU(".ovalue", n) || i.$PU(".status", n) || (c[n] = t)
                        }), s.values = c, o.children && o.children.length && (s.children = [], e(o.children, s.children, f + 1))
                }
                var n = this,
                    r, t, u, f;
                n.data && (n.$Pj(), r = [], t = 0, e(n.data, r, 0), n.data = r, n.$dy(), u = n.summaryData, u && (f = {}, $.each(u, function (n, t) {
                    i.$PU(".ovalue", n) || i.$PU(".status", n) || (f[n] = t)
                }), n.summaryData = f), n.$a(), n.$r("datachange"))
            },
            $d3: function (n) {
                return f(n.index) && n.index < 0
            },
            rejectChanges: function () {
                function e(t, r, o) {
                    for (var s, h, l, c = 0, a = t.length; c < a; c++)
                        if (s = t[c], n.$dJ(s), n.$d3(s)) continue;
                        else h = {}, $.extend(h, s, {
                            treeIndex: f,
                            level: o
                        }), delete h.status, f++, r.push(h), l = {}, $.each(s.values, function (n, t) {
                            if (!i.$PU(".ovalue", n) && !i.$PU(".status", n)) {
                                var r = s.values[n + ".ovalue"];
                                l[n] = u(r) ? t : r
                            }
                        }), h.values = l, s.children && s.children.length && (h.children = [], e(s.children, h.children, o + 1))
                }
                var n = this,
                    r, f, t;
                n.$PD();
                n.clearSelection();
                r = [];
                f = 0;
                e(n.data, r, 0);
                n.data = r;
                n.$dy();
                t = n.summaryData;
                t && $.each(t, function (n, r) {
                    if (!i.$PU(".ovalue", n) && !i.$PU(".status", n)) {
                        var f = t[n + ".ovalue"];
                        t[n] = u(f) ? r : f
                    }
                });
                n.$a();
                n.$r("datachange")
            },
            $g6: function (n, t) {
                var f = this,
                    r = {};
                return f.$U(function (f) {
                    var o = f.columnId,
                        s = f.columnType,
                        h, e;
                    (s === "renderfield" || s === "checkboxfield") && (h = n.values[o + ".status"], (!t || t && h === "modified") && (e = n.values[o], u(e) || (b(e) && f.fieldType === "date" && f.fieldDateFormat && (e = i.$PZ(f.fieldDateFormat, e)), r[o] = e)))
                }), r
            },
            getModifiedData: function () {
                var n = this,
                    t = [],
                    i = 0;
                return n.$PL(function (r) {
                    var u, f, e;
                    r.status === "deleted" ? n.$d3(r) || (f = "deleted", u = {
                        index: -1
                    }) : (r.status === "newadded" ? (e = n.$g6(r), f = "newadded") : (e = n.$g6(r, !0), f = "modified"), d(e) || (u = {
                        index: i,
                        values: e
                    }), i++);
                    u && (n.tree && (u.parentId = r.parentId), $.extend(u, {
                        status: f,
                        originalIndex: r.index,
                        id: r.id
                    }), r.text && (u.text = r.text), t.push(u))
                }), t
            },
            getMergedData: function () {
                var n = this,
                    t = [],
                    i = 0;
                return n.$PL(function (r) {
                    var u, e, f;
                    r.status !== "deleted" && (f = n.$g6(r), e = r.status === "newadded" ? "newadded" : d(n.$g6(r, !0)) ? "unchanged" : "modified", d(f) || (u = {
                        index: i,
                        values: f
                    }), i++);
                    u && (n.tree && (u.parentId = r.parentId), $.extend(u, {
                        status: e,
                        originalIndex: r.index,
                        id: r.id
                    }), r.text && (u.text = r.text), t.push(u))
                }), t
            }
        });
        n.PagingToolbar = n.Toolbar.extend({
            ccls: "f-pagingtoolbar",
            position: "bottom",
            beforeText: "Page",
            afterText: "of {0}",
            firstText: "First Page",
            prevText: "Previous Page",
            nextText: "Next Page",
            lastText: "Last Page",
            displayMsg: "Displaying {0} - {1} of {2}",
            emptyMsg: "No data to display",
            type: "pagingtoolbar",
            initEl: function () {
                var t = this,
                    i = t.$tJ,
                    f = new n.Button({
                        iconFont: "angle-double-left",
                        tooltip: t.firstText,
                        cls: "f-grid-pager firstpage",
                        defaultState: !1,
                        handler: function (n) {
                            i.$LJ(n, 0)
                        }
                    }),
                    e = new n.Button({
                        iconFont: "angle-left",
                        tooltip: t.prevText,
                        cls: "f-grid-pager prevpage",
                        defaultState: !1,
                        handler: function (n) {
                            i.$LJ(n, i.pageIndex - 1)
                        }
                    }),
                    o = new n.Button({
                        iconFont: "angle-right",
                        tooltip: t.nextText,
                        cls: "f-grid-pager nextpage",
                        defaultState: !1,
                        handler: function (n) {
                            i.$LJ(n, i.pageIndex + 1)
                        }
                    }),
                    s = new n.Button({
                        iconFont: "angle-double-right",
                        tooltip: t.lastText,
                        cls: "f-grid-pager lastpage",
                        defaultState: !1,
                        handler: function (n) {
                            i.$LJ(n, i.getPageCount() - 1)
                        }
                    }),
                    h = new n.ToolbarText({
                        text: t.beforeText
                    }),
                    c = new n.NumberBox({
                        id: i.id + "_pagingToolbar_pageNumberBox",
                        msgTarget: "qtip",
                        width: 36,
                        trigger1Hidden: !0,
                        trigger2Hidden: !0,
                        noDecimal: !0,
                        noNegative: !0,
                        listeners: {
                            blur: function () {
                                this.getValue() != i.pageIndex + 1 && this.setValue(i.pageIndex + 1)
                            },
                            enter: function (n) {
                                var t = this;
                                t.validate() && i.$LJ(n, t.getValue() - 1)
                            }
                        }
                    }),
                    l = new n.ToolbarText({
                        text: t.afterText
                    }),
                    r = [f, e, "-", h, c, l, "-", o, s],
                    u;
                $.merge(r, t.items);
                t.$eR(t.items) || r.push("->");
                i.showPageMsg && (u = new n.ToolbarText({
                    text: t.displayMsg
                }), r.push(u), t.lastTextItem = u);
                t.items = r;
                t._super();
                t.$P.$d(t.ccls);
                t.firstBtn = f;
                t.prevBtn = e;
                t.nextBtn = o;
                t.lastBtn = s;
                t.beforeTextItem = h;
                t.afterTextItem = l;
                t.pageNumberBox = c;
                t.update()
            },
            $eR: function (n) {
                var i = this,
                    t = !1;
                return n && n.length && $.each(n, function (n, i) {
                    if (e(i) && i === "->" || i.isType && i.isType("toolbarfill")) return t = !0, !1
                }), t
            },
            update: function (n) {
                var t = this,
                    r = t.$tJ,
                    u;
                n && $.extend(r, n);
                r.$4Y();
                u = r.getPageCount();
                u === 0 ? (t.pageNumberBox.disable(), t.pageNumberBox.maxValue = 0, t.pageNumberBox.minValue = 0, t.pageNumberBox.setValue(0)) : (t.pageNumberBox.enable(), t.pageNumberBox.maxValue = u, t.pageNumberBox.minValue = 1, t.pageNumberBox.setValue(r.pageIndex + 1));
                r.pageIndex === 0 ? (t.firstBtn.disable(), t.prevBtn.disable()) : (t.firstBtn.enable(), t.prevBtn.enable());
                r.pageIndex >= u - 1 ? (t.nextBtn.disable(), t.lastBtn.disable()) : (t.nextBtn.enable(), t.lastBtn.enable());
                t.afterTextItem.setText(i.$Ps(t.afterText, u));
                r.showPageMsg && (r.recordCount <= 0 ? t.lastTextItem.setText(t.emptyMsg) : t.lastTextItem.setText(i.$Ps(t.displayMsg, r.getStartRowIndex() + 1, r.getEndRowIndex() + 1, r.recordCount)))
            },
            setPageIndex: function (n) {
                n = parseInt(n, 10);
                this.update({
                    pageIndex: n
                })
            },
            setRecordCount: function (n) {
                n = parseInt(n, 10);
                this.update({
                    recordCount: n
                })
            },
            setPageSize: function (n) {
                n = parseInt(n, 10);
                this.update({
                    pageSize: n
                })
            },
            getPagedData: function (n) {
                var r = this,
                    u = [],
                    t = r.$tJ,
                    f, e, i;
                for (t && !t.databasePaging && r.setRecordCount(n.length), f = t.getStartRowIndex(), e = t.getEndRowIndex(), i = f; i <= e; i++) u.push(n[i]);
                return u
            }
        });
        n.Form = n.Panel.extend({
            ccls: "f-form",
            type: "form",
            initEl: function () {
                var n = this;
                n._super();
                n.$P.$d(n.ccls)
            }
        });
        n.Field = n.Container.extend({
            hideEmptyLabel: !0,
            fieldLabel: "",
            hideLabel: !1,
            name: "",
            displayRule: "table",
            readonly: !1,
            msgTarget: "side",
            labelWidth: 100,
            labelSeparator: ":",
            redStar: !1,
            redStarPosition: "afterText",
            labelAlign: "left",
            initFocusStyle: !1,
            disableBlurStyle: !1,
            enablePrefix: !1,
            prefix: "",
            enableSuffix: !1,
            suffix: "",
            compareControl: "",
            compareValue: r,
            compareOperator: "==",
            compareType: "string",
            compareMessage: "",
            validateTrim: !0,
            type: "field",
            initEl: function () {
                function y(n) {
                    var i, f;
                    u = $("<div>", {
                        "class": "f-field-fieldlabel-cell"
                    });
                    r = $("<label>", {
                        "class": "f-field-fieldlabel",
                        "for": t.inputId
                    });
                    t.labelAlign === "right" && r.$d("f-field-fieldlabel-right");
                    i = "";
                    t.fieldLabel && (f = '<span class="f-fieldlabel-redstar">*<\/span>', t.redStar && t.redStarPosition === "beforeText" && (i += f), i += '<span class="f-fieldlabel-text">' + t.fieldLabel + "<\/span>", t.redStar && t.redStarPosition === "afterText" && (i += f), i += '<span class="f-fieldlabel-separator">' + t.labelSeparator + "<\/span>", t.redStar && t.redStarPosition === "afterSeparator" && (i += f), r.html(i));
                    (t.hideLabel || t.hideEmptyLabel && !t.fieldLabel) && u.hide();
                    r.$g(u);
                    u.$g(n)
                }
                var t = this,
                    v, i, r, u, f, e, o, l, a, s, h, c;
                t._super();
                t.redStarPosition !== "afterText" && (t.redStarPosition = "afterText", n.$q("F.Field - redStarPosition"));
                t.enablePrefix && (t.enablePrefix = !1, n.$q("F.Field - enablePrefix"));
                t.enableSuffix && !t.$s("fileupload") && (t.enableSuffix = !1, n.$q("F.Field - enableSuffix"));
                t.inputId = t.id + "-inputEl";
                t.name || (t.name = t.id);
                v = "f-field-msgtarget-" + t.msgTarget;
                i = $("<div>", {
                    id: t.id,
                    "class": "f-field " + t.ccls + " " + v
                });
                y(i);
                t.labelAlign === "top" && i.$d("f-field-fieldlabel-top");
                f = $("<div>", {
                    "class": "f-field-body-cell"
                });
                f.$g(i);
                e = $("<div>", {
                    "class": "f-field-body-cell-inner"
                });
                e.$g(f);
                (t.enablePrefix || t.enableSuffix) && (o = $("<div>", {
                    "class": "f-field-body-cell-table"
                }), o.$g(e), t.enablePrefix && (l = $("<div>", {
                    "class": "f-field-body-cell-leftpart"
                }), l.$g(o), t.prefix && $("<div>", {
                    "class": "f-field-body-cell-prefix",
                    html: t.prefix
                }).$g(l), t.$Nm = s), a = $("<div>", {
                    "class": "f-field-body-cell-centerpart"
                }), a.$g(o), e = a, t.enableSuffix && (s = $("<div>", {
                    "class": "f-field-body-cell-rightpart"
                }), s.$g(o), t.suffix && $("<div>", {
                    "class": "f-field-body-cell-suffix",
                    html: t.suffix
                }).$g(s), t.$tn = s));
                h = $("<div>", {
                    "class": "f-field-error-cell ui-state-error-text"
                });
                c = $("<i>", {
                    "class": "ui-icon f-icon-exclamation-circle"
                });
                c.$g(h);
                h.$g(i);
                t.el = i;
                t.$P = i;
                t.$L4 = r;
                t.$d8 = u;
                t.$L0 = f;
                t.$Pt = e;
                t.$d1 = h;
                t.$d$ = c;
                t.fieldLabelEl = r;
                t.fieldLabelCellEl = u;
                t.bodyCellEl = f;
                t.bodyCellInnerEl = t.bodyCellInnerEl;
                t.errorCellEl = h;
                t.errorIconEl = c;
                t.on("change", function () {
                    t.$d6(function (n) {
                        n.$s("container") && n.$r("dirtychange")
                    })
                })
            },
            afterInitEl: function () {
                var n = this;
                n._super();
                n.readonly && n.setReadonly(!0)
            },
            afterInitElDisabled: function () {
                var n = this;
                n._super()
            },
            disable: function () {
                var n = this;
                n._super();
                n.clearInvalid()
            },
            getText: function () {
                return this.getValue()
            },
            getValue: function () {},
            setValue: function () {},
            clearValue: function () {
                this.setValue()
            },
            focus: function (r, u) {
                function o() {
                    t.focus();
                    e.$L.focus();
                    r ? e.$L.select() : i.$e8(e.$L)
                }
                var e = this;
                f(u) ? n.defer(o, u) : o()
            },
            blur: function () {
                var n = this;
                n.$L.blur()
            },
            isFocus: function () {
                var n = this;
                return n.$L.is(":focus")
            },
            __doLayout: function () {
                var n = this;
                n._super();
                f(n.width) && n.$P.$4(n.width, !0);
                f(n.height) && n.$P.$t(n.height, !0);
                (n.labelAlign === "left" || n.labelAlign === "right") && (n.$d8.width(n.labelWidth), n.$L4.$4(n.labelWidth, !0))
            },
            $RO: function () {
                var n = this,
                    t = 0;
                return t = f(n.height) ? n.height - i.$LG(n.$P) : n.$P.$5(), n.labelAlign === "top" && (t -= n.$d8.$t(!0)), t
            },
            setFieldLabel: function (n) {
                var t = this;
                t.fieldLabel = n;
                t.$L4.$R(".f-fieldlabel-text").html(n)
            },
            getFieldLabel: function () {
                var n = this;
                return n.$J ? n.$L4.$R(".f-fieldlabel-text").html() : n.fieldLabel
            },
            setReadonly: function (n) {
                var t = this;
                t.readonly = n;
                t.editable && !t.readonly ? t.$L.prop("readonly", !1) : t.$L.prop("readonly", !0);
                n ? t.$P.$d("f-readonly") : t.$P.$e("f-readonly");
                t.$2 && t.$2.length && (n ? t.$2.hide() : t.$2.show())
            },
            setRedStar: function (n) {
                var t = this,
                    r, i;
                t.redStar = n;
                r = t.$L4.$R(".f-fieldlabel-redstar");
                r.length ? n || r.remove() : n && (i = $('<span class="f-fieldlabel-redstar">*<\/span>'), t.redStarPosition === "beforeText" ? i.prependTo(t.$L4) : t.redStarPosition === "afterText" ? i.insertAfter(t.$L4.$R(".f-fieldlabel-text")) : i.$g(t.$L4))
            },
            reset: function () {
                var n = this;
                n.setValue(n.$t6, !0);
                n.clearInvalid()
            },
            isDirty: function () {
                var n = this;
                return n.$tO === n.getText() ? !1 : !0
            },
            clearDirty: function () {
                var n = this;
                n.$t6 = n.getValue();
                n.$tO = n.getText()
            },
            afterAddToPage: function () {
                function i() {
                    var i = !1,
                        n = t.parent;
                    do {
                        if (n) {
                            if (n.tableStyle) {
                                i = !0;
                                break
                            }
                        } else break;
                        n = n.parent
                    } while (1);
                    return i
                }
                var t = this;
                t._super();
                i() && n.$q("F.Form - tableStyle");
                t.$t6 = t.getValue();
                t.$tO = t.getText()
            },
            markInvalid: function (t) {
                var i = this,
                    r = '<i class="ui-icon f-field-error-qtip f-icon-exclamation-circle"><\/i>' + t;
                i.msgTarget === "side" ? (i.$d$.attr("data-qclass", i.$PC), i.$d$.attr("data-qtip", r), k() && i.$d1[0].scrollWidth) : i.msgTarget === "qtip" ? (i.$L.attr("data-qclass", i.$PC), i.$L.attr("data-qtip", r), n.$j || n.mouseInside(i.$L) && n.showQtip(i.$L)) : i.msgTarget === "title" && i.$L.attr("title", t);
                i.$L.$d(i.$PC);
                i.$P.$d("f-field-error");
                i.$L.attr("data-errormsg", t)
            },
            clearInvalid: function () {
                var t = this;
                t.msgTarget === "side" ? (t.$d$.removeAttr("data-qclass"), t.$d$.removeAttr("data-qtip"), k() && t.$d1[0].scrollWidth) : t.msgTarget === "qtip" ? (t.$L.removeAttr("data-qclass"), t.$L.removeAttr("data-qtip"), n.$j || n.mouseInside(t.$L) && n.hideQtip(t.$L)) : t.msgTarget === "title" && t.$L.removeAttr("title");
                t.$L.$e(t.$PC);
                t.$P.$e("f-field-error");
                t.$L.removeAttr("data-errormsg")
            },
            validate: function () {
                function s(n) {
                    return n && e(n) && (n = i.$tc(n)), t.compareType === "int" ? n = parseInt(n, 10) : t.compareType === "float" && (n = parseFloat(n)), n
                }

                function l(n, i) {
                    var r = !1;
                    switch (t.compareOperator) {
                        case "==":
                            r = n == i;
                            break;
                        case ">":
                            r = n > i;
                            break;
                        case ">=":
                            r = n >= i;
                            break;
                        case "<":
                            r = n < i;
                            break;
                        case "<=":
                            r = n <= i;
                            break;
                        case "!=":
                            r = n != i
                    }
                    return r
                }
                var t = this,
                    r, f, o, h, c;
                return t.hidden || t.disabled || n.$Lp ? !0 : (r = !0, f = "", t.compareControl ? (h = n(t.compareControl), h && (o = s(h.getValue()))) : u(t.compareValue) || (o = s(t.compareValue)), u(o) || l(s(t.getValue()), o) || (f = t.compareMessage, r = !1), r && p(t.validator) && (c = t.validator.apply(t), c !== !0 && (f = c, r = !1)), r ? t.clearInvalid() : t.markInvalid(f), r)
            }
        });
        n.Hidden = n.Field.extend({
            ccls: "f-field-hidden-wrap",
            type: "hidden",
            initEl: function () {
                var n = this,
                    t;
                n._super();
                t = $("<input>", {
                    id: n.inputId,
                    type: "hidden",
                    name: n.name,
                    value: n.value || ""
                });
                t.$g(n.$Pt);
                n.hiddenEl = t;
                n.$L = t;
                n.bodyEl = t
            },
            setValue: function (n) {
                this.hiddenEl.val(n)
            },
            getValue: function () {
                return this.hiddenEl.val()
            },
            markInvalid: function () {},
            clearInvalid: function () {},
            validate: function () {
                return !0
            },
            setReadonly: function () {},
            afterInitElDisabled: function () {},
            focus: function () {},
            blur: function () {},
            __showEl: function () {}
        });
        n.Label = n.Field.extend({
            ccls: "f-field-label-wrap",
            type: "label",
            initEl: function () {
                var n = this,
                    t;
                n._super();
                t = $("<div>", {
                    id: n.inputId,
                    "class": "f-field-body f-field-label"
                });
                t.$g(n.$Pt);
                n.labelEl = t;
                n.$L = t;
                n.bodyEl = t;
                n.setValue(n.value)
            },
            setValue: function (n) {
                var t = this;
                t.$L.html(n);
                t.$J && t.$b(!0)
            },
            setText: function (n) {
                var t = this;
                t.$Lx().html(n);
                t.$J && t.$b(!0)
            },
            $Lx: function () {
                var t = this,
                    n;
                return t.attrSelector && (n = t.$P.$R(t.attrSelector)), n && n.length || (n = t.$L), n
            },
            getValue: function () {
                var n = this;
                return n.$L.html()
            },
            reset: function () {},
            isDirty: function () {
                return !1
            },
            markInvalid: function (n) {
                var t = this;
                t._super(n);
                t.$L.$e(t.$PC)
            },
            __doLayout: function () {
                var n = this,
                    t;
                n._super();
                t = n.$L.text();
                t || n.$L0.css("width", "auto")
            }
        });
        n.TextBox = n.Field.extend({
            ccls: "f-field-textbox-wrap",
            inputType: "text",
            minLength: r,
            maxLength: r,
            required: !1,
            emptyText: "",
            editable: !0,
            minLengthText: "The minimum length for this field is {0}",
            maxLengthText: "The maximum length for this field is {0}",
            requiredText: "This field is required",
            regex: "",
            regexText: "",
            regexPattern: "",
            REGEX_PATTERNS: {
                email: /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
                number: /^[0-9]+$/,
                alpha: /^[a-zA-Z]+$/,
                alpha_number: /^[a-zA-Z0-9]+$/,
                alpha_underline: /^[a-zA-Z_]+$/,
                alpha_number_underline: /^[a-zA-Z0-9_]+$/,
                alpha_lowercase: /^[a-z]+$/,
                alpha_uppercase: /^[A-Z]+$/,
                url: /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/i,
                postal_code: /^\d{6}$/,
                ip_address: /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/,
                identity_card: /^(\d{15}|\d{17}[x0-9])$/i
            },
            enterToSubmit: !0,
            enterFocusControl: "",
            enterClickControl: "",
            type: "textbox",
            initEl: function () {
                var n = this,
                    t, i;
                n._super();
                t = {
                    id: n.inputId,
                    "class": "f-field-body ui-corner-all " + n.$Y,
                    type: n.inputType,
                    name: n.name
                };
                n.emptyText && (t.placeholder = n.emptyText);
                (!n.editable || n.readonly) && (t.readonly = "readonly");
                i = n.$RZ(t);
                n.textEl = i;
                n.$L = i;
                n.bodyEl = i;
                n.disabled || n.readonly || !n.initFocusStyle || n.$L.$d(n.$P1);
                n.$L.$d("f-field-textbox");
                n.$RR();
                n.$e0()
            },
            afterInitEl: function () {
                var n = this;
                n._super();
                n.afterInitElSetValue()
            },
            afterInitElSetValue: function () {
                this.setValue(this.value)
            },
            afterInitElDisabled: function () {
                var n = this;
                n._super();
                n.$L.prop("disabled", !0)
            },
            disable: function () {
                var n = this;
                n._super();
                n.$L.prop("disabled", !0)
            },
            enable: function () {
                var n = this;
                n._super();
                n.$L.prop("disabled", !1)
            },
            $Pu: function (n) {
                var f = this,
                    i, t, r, u;
                l() && (i = $(n || f.$L), i.$N("f-placeholder") && (t = i, r = i.data("data-passwordinput"), r ? (t = r, u = t.attr("id"), i.hide().removeAttr("id"), t.show().attr("id", u), t.val("").focus()) : t.val(""), t.$e("f-placeholder")))
            },
            $Pp: function (n) {
                var u = this,
                    t = $(n || u.$L),
                    r, f;
                if (l()) {
                    if (!t.attr("placeholder")) {
                        t.$e("f-placeholder");
                        return
                    }
                    t.val() === "" && (t.attr("type") === "password" && (r = t.data("data-textinput"), r || (r = $("<input>").attr($.extend(i.$ep(t[0]), {
                        type: "text"
                    })), r.removeAttr("name").data("data-passwordinput", t).focus(function () {
                        u.$Pu(r)
                    }), t.data("data-textinput", r).before(r)), f = t.attr("id"), t.removeAttr("id").hide(), t = r.attr("id", f).show()), t.$d("f-placeholder"), t.val(t.attr("placeholder")))
                }
            },
            setEmptyText: function (n) {
                var t = this;
                t.emptyText = n;
                t.$L.attr("placeholder", n);
                t.$Pu();
                t.$Pp()
            },
            $e0: function () {
                var t = this;
                t.emptyText && (n.$Lh || t.$Pp())
            },
            $P0: function (n) {
                var t = this,
                    i;
                t.disabled || t.readonly || (i = t.getText(), i != t.$du && (t.$du = i, t.validate(), t.$r("change", [n])))
            },
            $RR: function () {},
            $LQ: function (n) {
                var t = this;
                t.disabled || t.readonly || t.$P0(n)
            },
            $Ln: function (n, t, i) {
                var r = this,
                    f = r.$du,
                    e = r.$dH;
                p(t) ? t.apply(r) : r.setValue(t);
                r.$du = f;
                r.$dH = e;
                (u(i) || i) && r.$P0(n)
            },
            $RR: function () {
                var i = this;
                if (l()) i.$L.on("keyup paste change", function (n) {
                    i.$LQ(n)
                });
                else i.$L.on("input", function (n) {
                    i.$LQ(n)
                });
                i.$L.focus(function (n) {
                    i.disabled || i.readonly || (i.$dO(), i.$r("focus", [n]))
                });
                i.$L.blur(function (n) {
                    i.disabled || i.readonly || i.$LX(n)
                });
                i.$L.keydown(function (r) {
                    var f, u, e;
                    if (r.keyCode == n.KEY.ENTER) {
                        if (i.disabled || i.readonly) return;
                        i.$r("enter", [r]);
                        i.enterFocusControl && (f = n(i.enterFocusControl), f && t.setTimeout(function () {
                            i.blur();
                            f.focus(!0)
                        }, 100));
                        i.enterToSubmit && (u = i.enterClickControl, u || (u = n.submitbutton), e = n(u), e && t.setTimeout(function () {
                            i.blur();
                            e.click()
                        }, 100))
                    } else r.keyCode == n.KEY.BACKSPACE && (i.disabled || i.readonly || !i.editable) && r.preventDefault()
                })
            },
            $dO: function () {
                var n = this;
                n.disabled || n.readonly || (n.$L.$d(n.$P1), n.$2 && n.$2.length && n.$2.$d(n.$P1), n.$Pu())
            },
            $eN: function () {
                var n = this;
                n.disableBlurStyle || (n.$L.$e(n.$P1), n.$2 && n.$2.length && n.$2.$e(n.$P1));
                n.$Pp()
            },
            $LX: function (n) {
                var t = this;
                t.$eN(n);
                t.validate();
                t.$r("blur", [n])
            },
            $RZ: function (n) {
                var i = this,
                    t = $("<input>", n);
                return t.$g(i.$Pt), t
            },
            getText: function () {
                var n = this;
                return l() && n.$L.$N("f-placeholder") ? "" : n.$L.val()
            },
            setText: function (n, t) {
                var i = this;
                i.$RP(n);
                i.$J && !t && i.validate()
            },
            getValue: function () {
                return this.getText()
            },
            setValue: function (n, t) {
                var i = this;
                i.$RP(n);
                i.$J && !t && i.validate()
            },
            $RP: function (n) {
                var t = this;
                t.inited && (u(n) && (n = ""), t.$du = n, l() ? n === "" ? (t.$L.val(n), t.$Pp()) : (t.$Pu(), t.$L.val(n)) : t.$L.val(n))
            },
            setMaxLength: function (n) {
                var t = this;
                t.maxLength = n
            },
            setMinLength: function (n) {
                var t = this;
                t.minLength = n
            },
            setRequired: function (n) {
                var t = this;
                t.required = n
            },
            setRegex: function (n) {
                var t = this;
                t.regex = n
            },
            setRegexPattern: function (n) {
                var t = this;
                t.regexPattern = n
            },
            markInvalid: function (n) {
                var t = this,
                    i;
                t._super(n);
                l() && t.$L.attr("type") === "password" && (i = t.$L.data("data-textinput"), i && i.$d(t.$PC))
            },
            clearInvalid: function () {
                var n = this,
                    t;
                n._super();
                l() && n.$L.attr("type") === "password" && (t = n.$L.data("data-textinput"), t && t.$e(n.$PC))
            },
            validate: function () {
                var t = this,
                    o;
                if (t.hidden || t.disabled || n.$Lp) return !0;
                if (!t._super()) return !1;
                var r = !0,
                    e = "",
                    u = t.getText();
                return t.validateTrim && (u = $.trim(u)), t.required && !u && (e = t.requiredText, r = !1), r && u && (f(t.minLength) && u.length < t.minLength ? (e = i.$Ps(t.minLengthText, t.minLength), r = !1) : f(t.maxLength) && u.length > t.maxLength ? (e = i.$Ps(t.maxLengthText, t.maxLength), r = !1) : (t.regexPattern || t.regex) && (o = t.regex, t.regexPattern && (o = t.REGEX_PATTERNS[t.regexPattern]), o && o.test && !o.test(u) && (e = t.regexText, r = !1))), r ? t.clearInvalid() : t.markInvalid(e), r
            },
            __doLayout: function () {
                var n = this;
                n._super()
            },
            setEditable: function (n) {
                var t = this;
                t.editable = n;
                t.editable && !t.readonly ? t.$L.prop("readonly", !1) : t.$L.prop("readonly", !0)
            }
        });
        n.TriggerBox = n.TextBox.extend({
            ccls: "f-field-triggerbox-wrap",
            triggerCls: "",
            trigger1Cls: "",
            trigger2Cls: "",
            triggerHidden: !1,
            trigger1Hidden: !1,
            trigger2Hidden: !1,
            editable: !0,
            enableEnterAction: !0,
            enableClickAction: !0,
            enableFocusAction: !1,
            type: "triggerbox",
            initEl: function () {
                var t = this;
                t._super();
                t.$L.$d("f-field-triggerbox");
                t.$ee();
                t.$e4();
                t.$L.off("blur");
                $(document).mousedown(function (n) {
                    t.$tQ(n)
                });
                t.$L.keydown(function (i) {
                    if (i.keyCode == n.KEY.TAB) {
                        if (t.disabled || t.readonly) return;
                        t.$LX(i)
                    }
                })
            },
            $tQ: function (n) {
                var t = this,
                    r;
                if (!t.disabled && !t.readonly && t.$L.$N(t.$P1)) {
                    if (n && n.target) {
                        if (r = $(n.target), i.$PO(r, t.$P)) return;
                        if (!t.$dw(n)) return
                    }
                    t.$LX(n)
                }
            },
            $dw: function () {
                return !0
            },
            $LX: function () {
                var n = this;
                n._super()
            },
            blur: function () {
                var n = this;
                n.$tQ()
            },
            $tz: function () {
                this.$L.css("padding-right", this.$2.$4(!0))
            },
            $ee: function () {
                var n = this,
                    t = $("<div>", {
                        "class": "f-field-triggerbox-icons ui-corner-all"
                    }),
                    u, i, f, r;
                t.$g(n.$Pt);
                n.readonly && t.hide();
                n.disabled || n.readonly || !n.initFocusStyle || t.$d(n.$P1);
                n.$2 = t;
                n.triggerIconsEl = t;
                u = n.triggerCls || n.trigger1Cls;
                u && (i = $("<i>", {
                    "class": "f-field-triggerbox-icon ui-icon f-triggerbox-trigger1 " + u
                }).$g(t), (n.triggerHidden || n.trigger1Hidden) && i.hide(), n.$PF = i, n.trigger1El = i);
                f = n.trigger2Cls;
                f && (r = $("<i>", {
                    "class": "f-field-triggerbox-icon ui-icon f-triggerbox-trigger2 " + f
                }).$g(t), n.trigger2Hidden && r.hide(), n.$Py = r, n.trigger2El = r);
                n.$PF && n.$PF.click(function (t) {
                    n.disabled || n.readonly || (n.$r("trigger1click", [t]) !== !1 && p(n.onTrigger1Click) && n.onTrigger1Click.apply(n, [t]), n.$r("triggerclick", [t]) !== !1 && p(n.onTriggerClick) && n.onTriggerClick.apply(n, [t]), n.focus())
                });
                n.$Py && n.$Py.click(function (t) {
                    n.disabled || n.readonly || (n.$r("trigger2click", [t]) !== !1 && p(n.onTrigger2Click) && n.onTrigger2Click.apply(n, [t]), n.focus())
                })
            },
            $R1: function () {
                return this.trigger2Cls ? 2 : 1
            },
            triggerDefaultAction: function (n) {
                var t = this,
                    i, r = "",
                    u = t.$R1();
                u === 2 ? (i = t.onTrigger2Click, r = "trigger2click") : (i = t.onTrigger1Click, r = "trigger1click");
                t.$r(r, [n]) !== !1 && i && (i.apply(t, [n]), t.focus());
                r === "trigger1click" && t.$r("triggerclick", [n]) !== !1 && t.onTriggerClick && (t.onTriggerClick.apply(t, [n]), t.focus())
            },
            $e4: function () {
                var n = this;
                n.on("enter", function (t) {
                    n.enableEnterAction && (n.triggerDefaultAction(t), t.preventDefault())
                });
                n.on("focus", function (t) {
                    !n.editable && n.enableFocusAction && n.triggerDefaultAction(t)
                });
                n.$L.click(function (t) {
                    n.disabled || n.readonly || !n.editable && n.enableClickAction && n.triggerDefaultAction(t)
                })
            },
            setTriggerVisible: function (n, t) {
                var i = this;
                n === 1 ? i.$PF && i.$PF.length && (t ? (i.triggerHidden = !1, i.trigger1Hidden = !1, i.$PF.css("display", "inline-block")) : (i.triggerHidden = !0, i.trigger1Hidden = !0, i.$PF.hide())) : n === 2 && i.$Py && i.$Py.length && (t ? (i.trigger2Hidden = !1, i.$Py.css("display", "inline-block")) : (i.trigger2Hidden = !0, i.$Py.hide()));
                i.$tz()
            },
            isTriggerVisible: function (n) {
                var t = this;
                return n === 1 ? !t.trigger1Hidden : n === 2 ? !t.trigger2Hidden : void 0
            },
            showTrigger: function () {
                this.setTriggerVisible(1, !0)
            },
            showTrigger1: function () {
                this.setTriggerVisible(1, !0)
            },
            showTrigger2: function () {
                this.setTriggerVisible(2, !0)
            },
            hideTrigger: function () {
                this.setTriggerVisible(1, !1)
            },
            hideTrigger1: function () {
                this.setTriggerVisible(1, !1)
            },
            hideTrigger2: function () {
                this.setTriggerVisible(2, !1)
            },
            __doLayout: function () {
                var n = this;
                n._super();
                n.$tz()
            },
            markInvalid: function (n) {
                var t = this;
                t._super(n);
                t.$2 && t.$2.length && t.$2.$d(t.$PC)
            },
            clearInvalid: function () {
                var n = this;
                n._super();
                n.$2 && n.$2.length && n.$2.$e(n.$PC)
            }
        });
        n.NumberBox = n.TriggerBox.extend({
            ccls: "f-field-numberbox-wrap",
            trigger1Cls: "f-triggericon-numberup",
            trigger2Cls: "f-triggericon-numberdown",
            noDecimal: !1,
            noNegative: !1,
            maxValue: r,
            minValue: r,
            decimalPrecision: 2,
            round: !0,
            increment: 1,
            trimEndZero: !0,
            minText: "The minimum value for this field is {0}",
            maxText: "The maximum value for this field is {0}",
            nanText: "{0} is not a valid number",
            negativeText: "The value cannot be negative",
            enableEnterAction: !1,
            commas: !1,
            type: "numberbox",
            initEl: function () {
                var t = this;
                t._super();
                t.$L.$d("f-field-numberbox");
                t.$4B();
                t.commas && (t.commas = !1, n.$q("F.NumberBox - commas"));
                t.round || (t.round = !0, n.$q("F.NumberBox - round"))
            },
            $R1: function () {
                return 1
            },
            $LQ: function (n) {
                var t = this;
                t.disabled || t.readonly || (t.$4N(), t.$P0(n))
            },
            $4N: function () {
                var u = this,
                    n = u.$L,
                    t, i, r;
                l() && n.$N("f-placeholder") || (t = /[^0-9\.\-]/g, u.commas && (t = /[^0-9\.\-,]/g), i = n.val(), r = i.replace(t, ""), i !== r && n.val(r))
            },
            $4B: function () {
                var t = this;
                t.$L.blur(function (n) {
                    if (!t.disabled && !t.readonly) {
                        var i = t.getValue();
                        f(i) && t.$Ln(n, i)
                    }
                });
                t.$L.keydown(function (i) {
                    if (i.keyCode == n.KEY.UP) {
                        if (t.disabled || t.readonly) return;
                        t.onTrigger1Click(i);
                        i.preventDefault()
                    } else if (i.keyCode == n.KEY.DOWN) {
                        if (t.disabled || t.readonly) return;
                        t.onTrigger2Click(i);
                        i.preventDefault()
                    }
                })
            },
            onTrigger1Click: function (n) {
                var t = this,
                    i = t.$R9(t.getValue() + t.increment);
                f(i) && t.$Ln(n, i)
            },
            onTrigger2Click: function (n) {
                var t = this,
                    i = t.$R9(t.getValue() - t.increment);
                f(i) && t.$Ln(n, i)
            },
            $Ra: function (n) {
                var i = this,
                    t = n + "";
                return i.round && t.lastIndexOf(".") >= 0 && (t = Math.round(t) + ""), t
            },
            $RK: function (n) {
                function o(n) {
                    var u = n,
                        r = n.lastIndexOf(".");
                    if (r >= 0) {
                        for (var f = n.substr(0, r), t = n.substr(r + 1), e, o = lastIndex = t.length, i = o - 1; i >= 0; i--)
                            if (e = t.charAt(i), e === "0") lastIndex = i;
                            else {
                                lastIndex = i + 1;
                                break
                            } lastIndex != o && (t = t.substr(0, lastIndex));
                        u = t ? f + "." + t : f
                    }
                    return u
                }
                var r = this,
                    t = n + "",
                    i, u, f, e;
                return t.charAt(0) === "." && (t = "0" + t), i = "", r.round ? i = parseFloat(t).toFixed(r.decimalPrecision) : (i = t, u = t.lastIndexOf("."), u >= 0 && (f = t.substr(0, u), e = t.substr(u + 1), i = f + "." + e.substr(0, r.decimalPrecision))), r.trimEndZero && (i = o(i)), i
            },
            getValue: function () {
                var t = this,
                    i = t._super();
                return t.commas && (i = n.removeCommas(i)), t.noDecimal ? parseInt(t.$Ra(i), 10) : parseFloat(t.$RK(i))
            },
            setValue: function (t, i) {
                var r = this;
                w(t) && (t = "");
                (t || t === 0) && (t += "", t = r.noDecimal ? r.$Ra(t) : r.$RK(t), r.commas && (t = n.addCommas(t)));
                r._super(t, i)
            },
            setDecimalPrecision: function (n) {
                var t = this;
                t.decimalPrecision = n;
                t.setValue(t.getValue())
            },
            setIncrement: function (n) {
                var t = this;
                t.increment = n
            },
            $R9: function (n) {
                var t = this;
                return t.$L.val() === "" && (n = 0), f(n) && (f(t.maxValue) && n > t.maxValue && (n = t.maxValue), f(t.minValue) && n < t.minValue && (n = t.minValue), t.noNegative && n < 0 && (n = NaN)), n
            },
            setMaxValue: function (n) {
                var t = this;
                t.maxValue = n
            },
            setMinValue: function (n) {
                var t = this;
                t.minValue = n
            },
            validate: function () {
                var t = this;
                if (t.hidden || t.disabled || n.$Lp) return !0;
                if (!t._super()) return !1;
                var r = !0,
                    u = "",
                    e = t.getValue(),
                    o = t.getText();
                return t.validateTrim && (o = $.trim(o)), o && (f(e) ? t.noNegative && e < 0 ? (u = t.negativeText, r = !1) : f(t.maxValue) && e > t.maxValue ? (u = i.$Ps(t.maxText, t.maxValue), r = !1) : f(t.minValue) && e < t.minValue && (u = i.$Ps(t.minText, t.minValue), r = !1) : (u = i.$Ps(t.nanText, t.getText()), r = !1)), r ? t.clearInvalid() : t.markInvalid(u), r
            },
            $tz: function () {
                var n = this,
                    t = 0;
                n.trigger1Hidden ? n.trigger2Hidden || (t = n.$Py.$4(!0)) : t = n.$PF.$4(!0);
                this.$L.css("padding-right", t)
            }
        });
        n.DatePicker = n.TriggerBox.extend({
            ccls: "f-field-datepicker-wrap",
            trigger1Cls: "f-triggericon-clear",
            trigger2Cls: "f-triggericon-date",
            trigger1Hidden: !0,
            clearIcon: !1,
            format: "yyyy-MM-dd",
            minValue: "",
            maxValue: "",
            showTime: !1,
            showMinute: !0,
            showSecond: !0,
            showTodayButton: !0,
            minText: "The date in this field must be after {0}",
            maxText: "The date in this field must be before {0}",
            invalidText: "{0} is not a valid date - it must be in the format {1}",
            enableEnterAction: !1,
            type: "datepicker",
            initEl: function () {
                var t = this;
                t._super();
                t.$L.$d("f-field-datepicker");
                t.$gW();
                t.$4t();
                t.clearIcon && (t.clearIcon = !1, n.$q("F.DatePicker - clearIcon"))
            },
            $4t: function () {
                var t = this;
                t.$L.keydown(function (i) {
                    if (i.keyCode == n.KEY.DOWN) {
                        if (t.disabled || t.readonly) return;
                        if (!t.$PR()) t.onTrigger2Click(i);
                        i.preventDefault()
                    }
                });
                t.on("blur", function () {
                    var n = t.getValue();
                    n && t.setValue(n, !0)
                })
            },
            $dw: function (n) {
                var r = this,
                    u = $(n.target),
                    t = r.$gG();
                if (!t || !t.length || !i.$PO(u, t)) return !0
            },
            $LX: function () {
                var n = this;
                n._super();
                n.$Li()
            },
            $Li: function () {
                var n = this;
                n.hidePopEl()
            },
            hidePopEl: function () {
                var t = this;
                t.$PR() && t.$K.hide();
                n.enableShim && t.$v.hide()
            },
            $gG: function () {
                return this.$K ? this.$K.$P : null
            },
            $PR: function () {
                var n = this;
                return n.$K && n.$K.$M() ? !0 : !1
            },
            onTrigger1Click: function (n) {
                var t = this;
                t.clearIcon && (t.setValue(), t.$r("cleariconclick", [n]))
            },
            onTrigger2Click: function (n) {
                var t = this;
                $(n.target).is(t.$Py) && new Date - t.$Rc < 500 || (t.$PR() ? (t.$Li(), t.focus()) : t.showPopEl())
            },
            $4d: function () {
                var t = this;
                t.$K = new n.Calendar({
                    renderTo: "body",
                    cls: "f-calendar-absolute f-shadow f-field-datepicker-pop",
                    hidden: !0,
                    format: t.format,
                    minValue: t.minValue,
                    maxValue: t.maxValue,
                    value: t.value,
                    showTime: t.showTime,
                    showMinute: t.showMinute,
                    showSecond: t.showSecond,
                    showTodayButton: t.showTodayButton,
                    listeners: {
                        select: function (n) {
                            var i = this.getValue();
                            t.$Ln(n, function () {
                                t.setValue(i);
                                t.$r("select")
                            });
                            t.$Li();
                            t.focus()
                        },
                        show: function () {
                            this.setValue(t.getValue())
                        }
                    }
                });
                n.enableShim && t.$v.insertBefore(t.$K.$P)
            },
            showPopEl: function () {
                var n = this;
                n.$K || n.$4d();
                n.$K.show();
                n.$PY();
                n.$gO(n.$K.$P)
            },
            $dK: function () {
                var n = this;
                n.$PR() && n.$PY()
            },
            $PY: function () {
                var n = this,
                    e, a, v, s;
                $(t).off("resize." + n.id);
                var y = n.$L.$4(!0),
                    o = n.$L.$t(!0),
                    r = n.$L.offset(),
                    p = $(t).$C() - 5,
                    w = $(t).$5() - 5,
                    u = n.$K.$P;
                u.css({
                    top: r.top + o,
                    left: r.left,
                    "z-index": n.$gM() + 10
                });
                var f = u.$t(!0),
                    h = u.$4(!0),
                    c = r.top - $(t).scrollTop(),
                    l = w - c - o,
                    b = c - 5;
                f > l && (e = b > f ? r.top - f : r.top - (f - o - l), e < 5 && (e = 5), u.css("top", e));
                a = r.left - $(t).scrollLeft();
                v = p - a;
                h > v && (s = r.left + y - h, s >= 0 && u.css("left", s));
                t.setTimeout(function () {
                    i.$PQ($.proxy(n.$dK, n), "resize." + n.id)
                }, 500)
            },
            getValue: function () {
                var n = this,
                    t = n._super();
                return i.$Pv(n.format, t)
            },
            setValue: function (n, t) {
                var r = this,
                    u;
                e(n) && (n = i.$Pv(r.format, n));
                u = i.$PZ(r.format, n);
                r._super(u, t);
                r.$K && r.$K.setValue(n);
                r.clearIcon && (r.getText() ? r.showTrigger1() : r.hideTrigger1())
            },
            getText: function () {
                return this._super()
            },
            setText: function (n, t) {
                this.setValue(n, t)
            },
            validate: function () {
                var t = this;
                if (t.hidden || t.disabled || n.$Lp) return !0;
                if (!t._super()) return !1;
                var r = !0,
                    u = "",
                    e = t.getValue(),
                    f = t.getText();
                return t.validateTrim && (f = $.trim(f)), f && (e ? t.minValue && e < i.$Pv(t.format, t.minValue) ? (u = i.$Ps(t.minText, t.minValue), r = !1) : t.maxValue && e > i.$Pv(t.format, t.maxValue) && (u = i.$Ps(t.maxText, t.maxValue), r = !1) : (u = i.$Ps(t.invalidText, f, t.format), r = !1)), r ? t.clearInvalid() : t.markInvalid(u), r
            },
            setMaxValue: function (n) {
                var t = this;
                t.maxValue = n;
                t.$K && t.$K.setMaxValue(n)
            },
            setMinValue: function (n) {
                var t = this;
                t.minValue = n;
                t.$K && t.$K.setMinValue(n)
            }
        });
        n.DropDownList = n.TriggerBox.extend({
            ccls: "f-field-dropdownlist-wrap",
            $P8: "f-field-dropdownlist-pop",
            trigger1Cls: "f-triggericon-clear",
            trigger2Cls: "f-triggericon-arrowdown",
            trigger1Hidden: !0,
            clearIcon: !1,
            fields: ["value", "text", "enabled", "display", "group", "prefix"],
            simulateTree: !1,
            value: r,
            hiddenName: "",
            editable: !1,
            forceSelection: !0,
            enableEnterAction: !1,
            maxPopHeight: 300,
            multiSelect: !1,
            multiSelectSeparator: ", ",
            checkboxSelect: !1,
            matchFieldWidth: !0,
            group: !1,
            type: "dropdownlist",
            initEl: function () {
                var t = this;
                t._super();
                t.$L.$d("f-field-dropdownlist");
                t.$4q();
                t.$gW();
                t.$PAAndEvents();
                t.clearIcon && (t.clearIcon = !1, n.$q("F.DropDownList - clearIcon"));
                t.checkboxSelect && (t.checkboxSelect = !1, n.$q("F.DropDownList - checkboxSelect"));
                t.group && (t.group = !1, n.$q("F.DropDownList - group"));
                t.$Ld("beforeselect") && (t.$3.beforeselect = r, n.$q("F.DropDownList - beforeselect"))
            },
            afterInitElSetValue: function () {
                var n = this;
                !n.forceSelection && n.text ? n.setText(n.text) : n.setValue(n.value)
            },
            $LQ: function (n) {
                var t = this;
                t.disabled || t.readonly || t.editable && t.$dk(n, !0, !0)
            },
            $4q: function () {
                var t = this;
                t.on("enter", function () {
                    if (t.$PR()) {
                        var n;
                        n = t.multiSelect ? t.$Rw() : t.$tq();
                        n && n.length && n.click()
                    }
                });
                t.$L.keydown(function (i) {
                    var r, u;
                    if (i.keyCode == n.KEY.UP) {
                        if (t.disabled || t.readonly) return;
                        t.$PR() && (r = t.$4S(), r && r.length && (t.$n.$e(t.$h), r.$d(t.$h), t.$tB(r)), i.preventDefault())
                    } else if (i.keyCode == n.KEY.DOWN) {
                        if (t.disabled || t.readonly) return;
                        t.$PR() ? (u = t.$4i(), u && u.length && (t.$n.$e(t.$h), u.$d(t.$h), t.$tB(u))) : t.$dk(i, !0, !1);
                        i.preventDefault()
                    }
                })
            },
            $PAAndEvents: function () {
                var t = this,
                    u = [t.$P8, "f-shadow", "ui-corner-all", t.$Pm],
                    r;
                if (t.matchFieldWidth || u.push(t.$P8 + "-autowidth"), r = $('<ul class="' + u.join(" ") + '"><\/ul>').$g("body"), t.$k = r, t.popEl = r, n.enableShim && t.$v.insertBefore(t.$k), !n.$j) t.$k.on("mouseenter mouseleave", ">li", function (n) {
                    var i = $(this);
                    i.$N(t.$0) || i.$N(t.$P8 + "-group") || (n.type === "mouseenter" ? i.$d(t.$h) : n.type === "mouseleave" && i.$e(t.$h))
                });
                t.$k.on("click", ">li", function (n) {
                    var u = $(this),
                        o, r, f, e;
                    u.$N(t.$0) || u.$N(t.$P8 + "-group") || (o = !1, r = u.attr("data-value"), t.multiSelect && (f = t.getValue(), u.$N(t.$S) ? i.$eq(r, f) : i.$eU(r, f), r = f), e = t.value, t.$Ln(n, function () {
                        t.setValue(r)
                    }), t.$r("select", [n, r, e]), t.multiSelect ? (t.$th(), t.$n.show()) : (t.$Li(n), t.focus()), n.stopPropagation())
                })
            },
            $dK: function () {
                var n = this;
                n.$PR() && n.$PY()
            },
            $tq: function () {
                var t = this,
                    i = t.$Rw(),
                    n;
                return i.length ? i : (n = t.$Rl(), n.length) ? n : null
            },
            $Rw: function () {
                var n = this;
                return n.$n.filter("." + n.$h + ":eq(0)")
            },
            $Rl: function () {
                var n = this;
                return n.$n.filter("." + n.$S + ":eq(0)")
            },
            $4S: function () {
                var t = this,
                    e = t.$n.length,
                    r = e,
                    u = t.$tq(),
                    n, f, o, i;
                for (u && u.length && (r = u.index()), n = r, f = !1;;) {
                    if (n--, n < 0 && (n = e - 1, f = !0), f && n <= r) break;
                    if (i = t.$n.eq(n), i.$N(t.$0) || i.$N(t.$P8 + "-group") || !i.is(":visible")) continue;
                    else {
                        o = i;
                        break
                    }
                }
                return o
            },
            $4i: function () {
                var t = this,
                    r = -1,
                    o = t.$n.length,
                    u = t.$tq(),
                    n, f, e, i;
                for (u && u.length && (r = u.index()), n = r, f = !1;;) {
                    if (n++, n > o - 1 && (n = 0, f = !0), f && n >= r) break;
                    if (i = t.$n.eq(n), i.$N(t.$0) || i.$N(t.$P8 + "-group") || !i.is(":visible")) continue;
                    else {
                        e = i;
                        break
                    }
                }
                return e
            },
            $dw: function (n) {
                var t = this,
                    r = $(n.target);
                if (!t.$PR() || !i.$PO(r, t.$k)) return !0
            },
            $LX: function (n) {
                var t = this;
                t._super();
                t.$Li(n)
            },
            $4s: function (n) {
                for (var i, r = this, f = !1, e = n.split($.trim(r.multiSelectSeparator)), o, s = [], t = 0, h = e.length; t < h; t++) o = $.trim(e[t]), i = r.getValueByText(o), u(i) ? f = !0 : s.push(i);
                return [s, f]
            },
            $Li: function (n) {
                var t = this;
                t.$49(n);
                t.hidePopEl();
                t.validate()
            },
            $49: function (n) {
                var t = this,
                    e, r, f, h, o, s;
                t.editable && (e = !1, f = t.getText(), t.multiSelect ? (h = t.$4s(f), r = h[0], !t.forceSelection && (!f || h[1] || r && i.$8(r) != i.$8(t.value)) && (e = !0)) : (r = t.getTextByValue(t.value) === f ? t.value : t.getValueByText(f), !t.forceSelection && (!f || u(r) || r && r !== t.value) && (e = !0)), o = !1, e ? f != t.text && (o = !0) : (i.$8(r) != i.$8(t.value) || f != t.text) && (o = !0), t.forceSelection ? o && (s = !1, t.multiSelect || f && r && (s = !0), t.$Ln(n, function () {
                    t.setValue(s ? r : t.value)
                }, s)) : o && (e && t.$45(), t.$P0(n)))
            },
            hidePopEl: function () {
                var i = this;
                i.$PR() && i.$k.hide();
                n.enableShim && i.$v.hide();
                $(t).off("resize." + i.id)
            },
            $4J: function () {
                var r = this,
                    n = $.trim(r.getText()),
                    t, i;
                if (n) {
                    for (t = $.trim(r.multiSelectSeparator); n.length && t.indexOf(n.charAt(n.length - 1)) >= 0;) n = n.substr(0, n.length - 1);
                    i = n.lastIndexOf(t);
                    i >= 0 && (n = $.trim(n.substr(i + t.length)))
                }
                return n
            },
            $4C: function () {
                var t = this,
                    n = t.getText(),
                    r;
                return t.multiSelect && (n = t.$4J(), r = t.getValueByText(n), r && i.$_(r, t.getValue()) && (n = "")), n = $.trim(n), n.toLowerCase()
            },
            getValue: function () {
                var n = this;
                return n.multiSelect ? $.merge([], n.value || []) : n.value
            },
            setText: function (n, t) {
                var i = this;
                i._super(n, t);
                i.text = n;
                i.value = r;
                i.$Pn(r)
            },
            $45: function () {
                var n = this;
                n.text = n.getText();
                n.value = r;
                n.$Pn(r)
            },
            setValue: function (n, t) {
                var f = this,
                    o, h, c, s;
                if (u(n)) o = "", n = r;
                else if (f.multiSelect) {
                    for (e(n) && (n = n.split(",")), h = [], s = n.length - 1; s >= 0; s--) c = f.getTextByValue(n[s]), c ? h.push(c) : i.$P5(s, n);
                    h.reverse();
                    o = h.join(f.multiSelectSeparator)
                } else n += "", o = f.getTextByValue(n);
                f.$dH = n;
                f._super(o, t);
                f.text = o;
                f.value = n;
                f.$Pn(n);
                f.clearIcon && (f.getText() ? f.showTrigger1() : f.hideTrigger1());
                f.$PR() && f.$th()
            },
            $Pn: function (n) {
                var t = this;
                t.hiddenName && (t.$P.$R('[name="' + t.hiddenName + '"]').remove(), n = $.makeArray(n), n.length && $.each(n, function (n, i) {
                    $("<input>", {
                        type: "hidden",
                        name: t.hiddenName,
                        value: i
                    }).insertBefore(t.$L)
                }))
            },
            $RD: function (n) {
                var o = this,
                    t = {},
                    i, f, e;
                for (e = 0, fieldLength = o.fields.length; e < fieldLength; e++) i = o.fields[e], f = r, v(n) ? f = n[e] : (i === "text" || i === "value") && (f = n + ""), u(f) && i === "enabled" ? t.enabled = !0 : t[i] = f;
                return u(t.enabled) && (t.enabled = !0), t.display || (t.display = t.text), t
            },
            $dj: function (n) {
                var t = this;
                t.$gV || t.$el();
                $.each(t.$gV, function (i, r) {
                    var u = n.apply(t, [r, i]);
                    if (u === !1) return !1
                })
            },
            resolveData: function () {
                this.$dj.apply(this, arguments)
            },
            getTextByValue: function (n) {
                var i = this,
                    t = r;
                return i.$dj(function (i) {
                    if (i.value == n) return t = i.text, !1
                }), t
            },
            getValueByText: function (n) {
                var i = this,
                    t = r;
                return i.$dj(function (i) {
                    if (i.text == n) return t = i.value, !1
                }), t
            },
            $el: function () {
                var n = this,
                    i = [],
                    t, r;
                n.simulateTree && (n.data = n.$Rb(n.data));
                t = {};
                r = [];
                $.each(n.data, function (u, f) {
                    var o = n.$RD(f),
                        e;
                    n.group ? (e = o.group, t[e] ? t[e].push(o) : (r.push(e), t[e] = [o])) : i.push(o)
                });
                n.group && $.each(r, function (n, r) {
                    $.merge(i, t[r])
                });
                n.data = n.$gV = i
            },
            $PA: function (n) {
                var t = this,
                    f = [],
                    h = t.getValue(),
                    c = r,
                    e = -1,
                    o = 0,
                    s = -1,
                    u;
                t.$dj(function (r) {
                    var it = r.group,
                        k = r.enabled,
                        d = r.prefix,
                        g = r.display,
                        w = r.value,
                        nt, a, u, v, l, b, p, y, tt;
                    if (n && (nt = g.toLowerCase(), nt.indexOf(n) < 0)) return !0;
                    if (s === -1 && k && (s = o), a = !1, t.multiSelect ? i.$_(w, h) && (a = !0) : w === h && (a = !0), a && (e = o), u = it, t.group && u !== c) {
                        if (u) {
                            var rt = t.$P8 + "-group ui-widget-header",
                                y = 'class="' + rt + '"',
                                ut = 'data-group="' + i.$PM(u) + '"';
                            f.push("<li " + y + " " + ut + ">" + u + "<\/li>")
                        }
                        c = u
                    }
                    v = [];
                    a && v.push(t.$S);
                    k || v.push(t.$0);
                    l = "";
                    t.checkboxSelect && (b = "ui-icon " + t.$P8 + "-checkbox", a && (b += " " + t.$p), l += '<i class="' + b + '"><\/i>');
                    d && (l += d);
                    l += g;
                    l || (l = " ");
                    p = [];
                    p.push('data-value="' + i.$PM(w) + '"');
                    t.group && u && (p.push('data-group="' + i.$PM(u) + '"'), v.push(t.$P8 + "-groupitem"));
                    y = "";
                    v.length && (y = 'class="' + v.join(" ") + '" ');
                    tt = "<li " + y + p.join(" ") + ">" + l + "<\/li>";
                    f.push(tt);
                    o++
                });
                t.$k.html(f.join(""));
                t.$n = t.$k.$R(">li");
                t.popItemsEl = t.$n;
                u = s;
                e !== -1 && (u = e);
                u !== -1 && t.$n.eq(u).$d(t.$h);
                t.$kInited = !0
            },
            $e2: function () {
                var t = this,
                    n = t.$Rl();
                n && n.length && t.$tB(n)
            },
            $tB: function (n) {
                var t = this;
                if (t.$PR()) {
                    n = $(n);
                    var i = n.position().top,
                        r = n.$t(!0),
                        u = t.$k.innerHeight();
                    i < 0 ? t.$k.scrollTop(t.$k.scrollTop() + i) : i + r > u && t.$k.scrollTop(t.$k.scrollTop() + (i + r - u))
                }
            },
            $PY: function () {
                var n = this,
                    s;
                $(t).off("resize." + n.id);
                var e = n.$L.$4(!0),
                    h = n.$L.$t(!0),
                    f = n.$L.offset();
                n.$k.css({
                    top: f.top + h,
                    left: f.left,
                    height: "auto",
                    width: "auto",
                    "z-index": n.$gM() + 10
                });
                var o = n.$k.$t(!0),
                    c = n.$k.$4(!0),
                    u = c,
                    r = o;
                r > n.maxPopHeight && (r = n.maxPopHeight);
                r != o && n.$k.$t(r, !0);
                n.matchFieldWidth ? n.$k.$4(e, !0) : (r < o && (u += n.$k.$C() - i.$P4(n.$k)), u < e && (u = e), u != c && n.$k.$4(u, !0));
                var l = f.top - $(t).scrollTop(),
                    a = $(t).$5() - l - h - 5,
                    v = l - 5;
                if (r > a && (v > r ? (r = Math.min(r, v), n.$k.$t(r, !0), n.$k.css("top", f.top - r)) : n.$k.$t(a, !0)), !n.matchFieldWidth) {
                    var y = $(t).$C() - 5,
                        p = f.left - $(t).scrollLeft(),
                        w = y - p;
                    u > w && (s = f.left + e - u, s >= 0 ? n.$k.css("left", s) : n.$k.$4(y - p, !0))
                }
                t.setTimeout(function () {
                    i.$PQ($.proxy(n.$dK, n), "resize." + n.id)
                }, 500)
            },
            $PR: function () {
                return this.$k.is(":visible")
            },
            onTrigger1Click: function (n) {
                var t = this;
                t.clearIcon && (t.clearSelection(), t.$r("cleariconclick", [n]))
            },
            onTrigger2Click: function (n) {
                this.$dk(n, !1, !1)
            },
            $dk: function (n, t, i) {
                var r = this,
                    u = r.$PR();
                u && t && (u = !1);
                u ? (r.$Li(n), r.focus()) : r.showPopEl(n, i)
            },
            showPopEl: function (n, t) {
                var i = this,
                    f, e;
                if (o(n) || (t = n, n = r), f = !1, i.$kInited || (i.$PA(), f = !0), i.editable)
                    if (t) {
                        if (e = i.$4C(), u(i.$dv) && (i.$dv = ""), e === i.$dv) return;
                        i.$dv = e;
                        i.$PA(e);
                        f = !0
                    } else i.$dv && (i.$dv = "", i.$PA(), f = !0);
                i.$n.length ? (f || i.$th(), i.$k.show(), i.$PY(), i.$e2(), i.$gO(i.$k)) : i.hidePopEl();
                i.$dO(n)
            },
            $th: function () {
                var n = this,
                    t = n.getValue();
                n.$n.each(function () {
                    var r = $(this),
                        e = r.attr("data-value"),
                        f = !1,
                        u;
                    n.multiSelect ? i.$_(e, t) && (f = !0) : e === t && (f = !0);
                    n.checkboxSelect && (u = r.$R("." + n.$P8 + "-checkbox"));
                    f ? (r.$d(n.$S), u && u.$d(n.$p)) : (r.$N(n.$S) && r.$e(n.$S), u && u.$e(n.$p))
                })
            },
            $Rb: function (t) {
                var s = this,
                    u, r, c, e, l;
                if (!t || !t.length) return [];
                if (!s.simulateTree || (u = i.$PI("prefix", s.fields), u === -1)) return t;
                var h = parseInt(t[0][u], 10),
                    f = [],
                    o = 0;
                for (r = 0, c = t.length; r < c; r++) f[r] = [], $.merge(f[r], t[r]), e = f[r][u], o != e && (r - 1 >= 0 && e > o && (l = f[r - 1][u].replace(new RegExp(n.$LH, "g"), ""), f[r - 1][u] = i.$L$(n.$LH, o - h) + n.$R7 + l), o = e), f[r][u] = i.$L$(n.$LH, e + 1 - h);
                return f
            },
            loadData: function (t, i) {
                var u = this;
                u.data = t;
                u.$gV = r;
                u.$PA();
                n.noValidate(function () {
                    u.setValue(i)
                })
            },
            isUserInput: function () {
                var n = this,
                    t;
                return n.$J ? (t = !1, n.editable && !n.forceSelection && (n.getText() ? n.isValueExist() || (t = !0) : t = !0), t) : !1
            },
            isValueExist: function () {
                var t = this,
                    n = !1,
                    i = t.getValue();
                return t.multiSelect ? i.length && (n = !0) : u(i) || (n = !0), n
            },
            $P0: function (n) {
                var t = this,
                    r;
                t.disabled || t.readonly || (t.forceSelection ? (r = t.getValue(), i.$8(r) != i.$8(t.$dH) && (t.$dH = r, t.validate(), t.$r("change", [n]))) : t._super(n))
            },
            clearSelection: function () {
                this.setValue(r)
            }
        });
        n.TimePicker = n.DropDownList.extend({
            ccls: "f-field-timepicker-wrap",
            trigger2Cls: "f-triggericon-arrowdown",
            increment: 30,
            maxValue: "",
            minValue: "",
            editable: !0,
            type: "timepicker",
            initEl: function () {
                var n = this;
                n._super();
                n.$L.$d("f-field-timepicker");
                n.$eZ()
            },
            $eZ: function () {
                function a(n, t) {
                    return i.$PT(n) + ":" + i.$PT(t)
                }
                var n = this,
                    s = 0,
                    h = 0,
                    u = 23,
                    c = 59,
                    f, e, o;
                n.minValue && (f = n.minValue.split(":"), s = parseInt(f[0], 10), h = parseInt(f[1], 10));
                n.maxValue && (e = n.maxValue.split(":"), u = parseInt(e[0], 10), c = parseInt(e[1], 10));
                for (var l = [], r = s, t = h; r <= u;) {
                    while (t < 60) {
                        if (r == u && t > c) {
                            r++;
                            break
                        }
                        o = a(r, t);
                        l.push([o, o, 1, "", ""]);
                        t += n.increment
                    }
                    t >= 60 && (r++, t -= 60)
                }
                n.data = l
            }
        });
        n.TextArea = n.TextBox.extend({
            ccls: "f-field-textarea-wrap",
            grow: !1,
            growMax: 600,
            growMin: 100,
            minHeight: r,
            enterToSubmit: !1,
            type: "textarea",
            initEl: function () {
                var n = this;
                n._super();
                n.$L.$d("f-field-textarea");
                n.grow && n.$eY()
            },
            $eY: function () {
                var n = this,
                    t = $("<div>").css({
                        position: "absolute",
                        top: -1e4,
                        left: -1e4,
                        resize: "none"
                    }).$g("body"),
                    r = function () {
                        var u, r;
                        n.disabled || n.readonly || (t.$d("f-field-textbox").css({
                            height: "auto"
                        }), t.width(n.$L.$C()), u = n.$L.val(), u = u.replace(/\n$/, "<br/> ").replace(/\n/g, "<br/>").replace(/ {2,}/g, function (n) {
                            return i.$L$(" ", n.length)
                        }), t.html(u), r = t.$t(!0) + 20, r > n.growMax ? r = n.growMax : r < n.growMin && (r = n.growMin), n.labelAlign === "top" && (r += n.$d8.$t(!0)), n.height !== r && (n.height = r, n.$b(!0)))
                    };
                n.$L.on("input propertychange", r)
            },
            $RZ: function (n) {
                var i = this,
                    t = $("<textarea>", n);
                return t.$g(i.$Pt), t
            },
            __doLayout: function () {
                var n = this,
                    t;
                n.$L.css("height", "auto");
                f(n.height) || (n.height = n.grow && f(n.growMin) ? n.growMin : 100);
                f(n.minHeight) && n.height < n.minHeight && (n.height = n.minHeight);
                n._super();
                t = n.$RO();
                t -= i.$LG(n.$L0);
                n.$L.$t(t, !0)
            },
            setValue: function (n, t) {
                var i = this;
                i._super(n, t);
                i.$J && i.$b(!0)
            }
        });
        n.FileUpload = n.TextBox.extend({
            ccls: "f-field-fileupload-wrap",
            editable: !1,
            buttonText: "Browse...",
            buttonOnly: !1,
            buttonConfig: r,
            enableSuffix: !0,
            accept: "",
            type: "fileupload",
            initEl: function () {
                var t = this,
                    i, r, u, f, e;
                t._super();
                i = "f-field-fileupload";
                t.$L.$d(i);
                t.$L.removeAttr("name");
                t.$L.attr("tabindex", -1);
                t.$L.$g(t.$Pt);
                r = {
                    renderTo: t.$tn,
                    cls: i + "-btn",
                    text: t.buttonText
                };
                t.buttonConfig && $.extend(r, t.buttonConfig);
                u = new n.Button(r);
                f = {
                    type: "file",
                    name: t.name,
                    "class": i + "-fileinput",
                    tabindex: -1
                };
                t.accept && (f.accept = t.accept);
                e = $("<input>", f).$g(u.$P);
                t.buttonOnly && t.$P.$d(i + "-buttononly");
                t.$dW = u;
                t.$Lm = e;
                t.$P.on("change", "input." + i + "-fileinput", function (n) {
                    t.setValue($(this).val());
                    t.validate();
                    t.$r("change", [n])
                })
            },
            __doLayout: function () {
                var n = this;
                n._super()
            },
            $gz: function () {
                var n = this;
                n.$Lm.prop("disabled", !0);
                n.$dW.disable()
            },
            $Rq: function () {
                var n = this;
                n.$Lm.prop("disabled", !1);
                n.$dW.enable()
            },
            afterInitElDisabled: function () {
                var n = this;
                n._super();
                n.$gz()
            },
            disable: function () {
                var n = this;
                n._super();
                n.$gz()
            },
            enable: function () {
                var n = this;
                n._super();
                n.$Rq()
            },
            setReadonly: function (n) {
                var t = this;
                t._super(n);
                n ? t.$gz() : t.$Rq()
            },
            reset: function () {
                var n = this,
                    t;
                n._super();
                t = n.$Lm.clone(!0);
                n.$Lm.replaceWith(t);
                n.$Lm = t
            },
            markInvalid: function (n) {
                var t = this;
                t._super(n);
                t.$dW.$P.$d(t.$PC)
            },
            clearInvalid: function () {
                var n = this;
                n._super();
                n.$dW.$P.$e(n.$PC)
            }
        });
        n.CheckBox = n.Field.extend({
            ccls: "f-field-checkbox-wrap",
            checked: !1,
            inputLabel: "",
            inputValue: "",
            value: r,
            tagType: "checkbox",
            type: "checkbox",
            initEl: function () {
                var n = this,
                    r, t, i, u;
                n._super();
                r = {
                    id: n.inputId,
                    "class": "f-field-body f-field-checkbox",
                    type: n.tagType,
                    name: n.name,
                    checked: n.checked
                };
                r.value = n.inputValue ? n.inputValue : "";
                t = $("<input>", r);
                t.$g(n.$Pt);
                i = $("<span>", {
                    id: n.inputId + "-icon",
                    "class": "f-field-checkbox-icon f-nobg",
                    html: '<i class="ui-icon">'
                }).$g(n.$Pt);
                n.checked && i.$d(n.$p);
                u = $("<label>", {
                    "class": "f-field-body-checkboxlabel",
                    "for": n.inputId,
                    html: n.inputLabel || " "
                }).$g(n.$Pt);
                n.checkboxEl = t;
                n.$L = t;
                n.bodyEl = t;
                n.$L9 = i;
                n.$Rs = u;
                n.bodyIconEl = i;
                n.bodyLabelEl = u;
                n.$eH()
            },
            afterInitEl: function () {
                var n = this;
                n._super()
            },
            $eH: function () {
                var n = this;
                n.$ry(n.$L, n.$L9);
                n.$L.change(function (t) {
                    if (!n.disabled && !n.readonly) {
                        var i = n.$L.prop("checked");
                        n.setValue(i);
                        n.$r("change", [t, i])
                    }
                });
                n.$L9.click(function (t) {
                    var i, r;
                    n.disabled || n.readonly || (i = n.$L9.$N(n.$p), n.$s("radiobutton") && i) || (r = !i, n.setValue(r), n.$r("change", [t, r]))
                })
            },
            $RB: function () {
                var n = this,
                    t = n.$L.prop("checked");
                t ? n.$L9.$N(n.$p) || n.$L9.$d(n.$p) : n.$L9.$N(n.$p) && n.$L9.$e(n.$p)
            },
            getValue: function () {
                return this.$L.prop("checked")
            },
            setValue: function (n, t) {
                var i = this;
                i.$L.prop("checked", n);
                i.$RB();
                i.$J && !t && i.validate()
            },
            isChecked: function () {
                return this.getValue()
            },
            setInputLabel: function (n) {
                var t = this;
                t.inputLabel = n;
                t.$Rs.html(n)
            },
            getInputLabel: function () {
                return this.$Rs.html()
            },
            setInputValue: function (n) {
                var t = this;
                t.inputValue = n;
                this.$L.val(n)
            },
            getInputValue: function () {
                return this.$L.val()
            },
            setReadonly: function (n) {
                var t = this;
                t._super(n);
                n ? t.$P.$d("readonly") : t.$P.$e("readonly")
            }
        });
        n.CheckBoxList = n.Field.extend({
            ccls: "f-field-checkboxlist-wrap",
            columnNumber: "auto",
            columnVertical: !1,
            autoColumnWidth: !1,
            required: !1,
            requiredText: "You must select at least one item",
            value: r,
            defaultItemType: "checkbox",
            type: "checkboxlist",
            initEl: function () {
                var n = this,
                    t;
                n._super();
                t = $("<table>", {
                    "class": "f-field-body f-field-checkboxlist ui-corner-all"
                });
                t.$g(n.$Pt);
                n.autoColumnWidth && t.$d("f-field-checkboxlist-autocolumnwidth");
                n.$L = t;
                n.bodyEl = t;
                n.data ? n.loadData(n.data, n.value) : n.$RJ()
            },
            afterInitEl: function () {
                var n = this;
                n._super();
                u(n.value) || n.setValue(n.value)
            },
            $RJ: function () {
                var n = this,
                    i, o = n.$ea(),
                    r = o.length,
                    t, e, s;
                if (f(n.columnNumber) && (r = n.columnNumber), t = 0, $.each(o, function (f, e) {
                        var h, o, s;
                        f % r == 0 && (i = $("<tr>"), t = 0);
                        h = $("<td>", {
                            "class": "f-field-checkboxlist-item"
                        });
                        o = n.__addItem(e, h);
                        o !== e && (s = e.$eG, u(s) && (s = f), n.items[s] = o);
                        o.el.$d("f-field-innercmp");
                        o.on("change", function (t) {
                            n.validate();
                            n.$r("change", [t, o, o.getValue()])
                        });
                        h.$g(i);
                        i.$g(n.$L);
                        t++
                    }), t && t < r)
                    for (e = 0, s = r - t; e < s; e++) i.append('<td class="f-field-checkboxlist-item"><\/td>')
            },
            $ea: function () {
                var t = this,
                    o = t.items,
                    u, n, i, r, c;
                if (t.columnVertical && f(t.columnNumber)) {
                    o = [];
                    var s = t.columnNumber,
                        e = Math.floor(t.items.length / t.columnNumber),
                        h = t.items.length % t.columnNumber;
                    for (h !== 0 ? e++ : h = s, u = [], r = 0, i = 0; i < s; i++)
                        for (n = 0; n < e; n++) n === e - 1 && i > h - 1 || (u[n] || (u[n] = []), u[n][i] = r, r++);
                    for (n = 0; n < e; n++)
                        for (i = 0; i < s; i++) r = u[n][i], f(r) && (c = t.items[r], c.$eG = r, o.push(c))
                }
                return o
            },
            __addItem: function (n, t, i) {
                var r = this;
                return t = t || r.$L, r._super(n, t, i)
            },
            __doLayout: function () {
                var n = this,
                    i, r, t;
                n._super();
                n.autoColumnWidth || (i = n.$Pt.$R(".f-field-checkboxlist-item"), i.css("width", "auto"), r = n.$Pt.$C(), t = 0, n.columnNumber === "auto" ? t = Math.floor(r / n.items.length) : f(n.columnNumber) && (t = Math.floor(r / n.columnNumber)), i.width(t))
            },
            markInvalid: function (n) {
                var t = this;
                t._super(n);
                t.$b()
            },
            clearInvalid: function () {
                var n = this;
                n._super();
                n.$b()
            },
            validate: function () {
                var t = this;
                if (t.hidden || t.disabled || n.$Lp) return !0;
                if (!t._super()) return !1;
                var i = !0,
                    r = "",
                    u = t.getValue();
                return t.required && !u.length && (r = t.requiredText, i = !1), i ? t.clearInvalid() : t.markInvalid(r), i
            },
            getValue: function () {
                var t = this,
                    n = [];
                return $.each(t.items, function (t, i) {
                    i.isChecked() && n.push(i.inputValue)
                }), n
            },
            setValue: function (n, t) {
                var r = this;
                v(n) || (n = [n]);
                $.each(r.items, function (r, u) {
                    var f = !1;
                    i.$_(u.inputValue, n) && (f = !0);
                    u.setValue(f, t)
                });
                r.$J && !t && r.validate()
            },
            setReadonly: function (n) {
                var t = this;
                t._super(n);
                t.$LS(function (t) {
                    t.setReadonly(n)
                })
            },
            disable: function () {
                var n = this;
                n._super();
                n.$LS(function (n) {
                    n.disable()
                })
            },
            enable: function () {
                var n = this;
                n._super();
                n.$LS(function (n) {
                    n.enable()
                })
            },
            getTextByValue: function (n) {
                var i = this,
                    t;
                return n += "", t = r, $.each(i.items, function (i, r) {
                    if (r.inputValue === n) return t = r.inputLabel, !1
                }), t
            },
            $e7: function (n) {
                var t = this,
                    f = t.name,
                    l = t.$s("radiobuttonlist"),
                    s, e, a, r, u, h, o, c;
                if (l && !f && (f = t.id), s = [], n && n.length)
                    for (e = 0, a = n.length; e < a; e++) r = n[e], o = !1, v(r) ? (u = r[0], h = r[1]) : (u = r, h = r), l ? o = t.value === u ? !0 : !1 : t.value && (o = i.$_(u, t.value) ? !0 : !1), c = {
                        inputValue: u,
                        inputLabel: h,
                        checked: o
                    }, f && $.extend(c, {
                        name: f
                    }), s.push(c);
                return s
            },
            loadData: function (n, t) {
                var i = this;
                i.data = n;
                i.value = t;
                i.$L.html("");
                i.items = i.$e7(n);
                i.$RJ();
                i.$J && i.$b(!0)
            }
        });
        n.RadioButton = n.CheckBox.extend({
            ccls: "f-field-radiobutton-wrap",
            tagType: "radio",
            type: "radiobutton",
            initEl: function () {
                var n = this;
                n._super();
                n.$L.$d("f-field-radiobutton")
            },
            $RB: function () {
                var n = this,
                    i, t, r;
                n._super();
                i = n.$L.prop("checked");
                i && (t = $('input[type=radio][name="' + n.name + '"]'), t.length > 1 && (r = n.$L.attr("id"), t.each(function () {
                    var i = $(this),
                        t = i.attr("id");
                    t !== r && $("#" + t + "-icon").$e(n.$p)
                })))
            }
        });
        n.RadioButtonList = n.CheckBoxList.extend({
            ccls: "f-field-radiobuttonlist-wrap",
            defaultItemType: "radiobutton",
            type: "radiobuttonlist",
            initEl: function () {
                var n = this;
                n._super();
                n.$L.$d("f-field-radiobuttonlist")
            },
            getValue: function () {
                var t = this,
                    n = "";
                return $.each(t.items, function (t, i) {
                    i.isChecked() && (n = i.inputValue)
                }), n
            },
            setValue: function (n, t) {
                var i = this;
                n += "";
                $.each(i.items, function (i, r) {
                    var u = !1;
                    r.inputValue === n && (u = !0);
                    r.setValue(u, t)
                });
                i.$J && !t && i.validate()
            }
        });
        n.HtmlEditor = n.Field.extend({
            ccls: "f-field-htmleditor-wrap",
            editor: "umeditor",
            editorBasePath: "",
            editorOptions: r,
            editorToolbarSet: "full",
            readonly: !1,
            type: "htmleditor",
            initEl: function () {
                var n = this,
                    t;
                n._super();
                t = $("<div>", {
                    "class": "f-field-body f-field-htmleditor-" + n.editor
                });
                t.$g(n.$Pt);
                n.$L = t;
                n.bodyEl = t;
                f(n.height) || (n.height = 100)
            },
            afterAddToPage: function () {
                var n = this;
                n._super();
                n.$eQ()
            },
            $eQ: function () {
                var i = this,
                    u, f, r;
                i.instanceReady = !1;
                u = i.inputId;
                i.editor === "umeditor" || i.editor === "ueditor" ? (i.$L.html('<script type="text/plain" name="' + i.name + '" id="' + u + '"><\/script>'), r = {
                    initialContent: i.value || "",
                    initialFrameWidth: "100%",
                    initialFrameHeight: 100,
                    readonly: i.readonly,
                    autoHeightEnabled: !1,
                    autoFloatEnabled: !1
                }, i.editorToolbarSet === "basic" && (i.editor === "umeditor" ? r.toolbar = ["fontfamily fontsize |", "bold italic underline strikethrough |", "forecolor backcolor |", "insertorderedlist insertunorderedlist |", "justifyleft justifycenter justifyright |", "link unlink |", "source"] : r.toolbars = [
                    ["fontfamily", "fontsize", "|", "bold", "italic", "underline", "strikethrough", "|", "forecolor", "backcolor", "|", "insertorderedlist", "insertunorderedlist", "|", "justifyleft", "justifycenter", "justifyright", "|", "link", "unlink", "|", "source"]
                ]), i.editorOptions && $.extend(r, i.editorOptions), f = i.editor === "umeditor" ? UM.getEditor(u, r) : UE.getEditor(u, r), f.ready(function () {
                    var n = $("#" + u);
                    i.editor === "umeditor";
                    i.instanceReady = !0;
                    i.$gn()
                }), i.editor === "umeditor" && f.addListener("fullscreenchanged", function (n, t) {
                    t || i.$L2()
                }), i.$$ = f, i.editorInstance = f) : i.editor === "ckeditor" ? ($("<textarea>", {
                    id: u,
                    name: i.name,
                    css: {
                        width: "100%"
                    }
                }).val(i.value || "").$g(i.$L), r = {
                    resize_enabled: !1,
                    height: 100,
                    readOnly: i.readonly,
                    on: {
                        instanceReady: function () {
                            i.instanceReady = !0;
                            i.$gn()
                        }
                    }
                }, i.editorToolbarSet === "basic" && (r.toolbar = [
                    ["Font", "FontSize"],
                    ["Bold", "Italic", "Underline", "Strike"],
                    ["TextColor", "BGColor"],
                    ["NumberedList", "BulletedList"],
                    ["JustifyLeft", "JustifyCenter", "JustifyRight"],
                    ["Link", "Unlink"],
                    ["Source"]
                ]), i.editorOptions && $.extend(r, i.editorOptions), f = CKEDITOR.replace(u, r), i.$$ = f, i.editorInstance = f, n.beforeAjax(function () {
                    i.instanceReady && $("#" + u).val(i.$$.getData())
                })) : i.editor === "tinymce" && ($("<textarea>", {
                    id: u,
                    name: i.name,
                    css: {
                        width: "100%"
                    }
                }).val(i.value || "").$g(i.$L), r = {
                    selector: "#" + u,
                    resize: !1,
                    width: "100%",
                    height: 100,
                    readonly: i.readonly,
                    init_instance_callback: function (n) {
                        i.$$ = n;
                        i.editorInstance = n
                    },
                    setup: function (n) {
                        n.on("load", function () {
                            t.setTimeout(function () {
                                i.instanceReady = !0;
                                i.$gn()
                            }, 100)
                        })
                    }
                }, i.editorToolbarSet === "basic" && (r.menubar = !1, r.plugins = ["link", "code", "textcolor colorpicker"], r.toolbar1 = "fontselect fontsizeselect | bold italic underline strikethrough | forecolor backcolor | numlist bullist | alignleft aligncenter alignright | link unlink | code"), i.editorOptions && $.extend(r, i.editorOptions), tinymce.init(r), n.beforeAjax(function () {
                    i.$$.initialized && i.$$.save()
                }))
            },
            $gn: function () {
                var n = this;
                n.$t6 = n.getValue();
                n.$tO = n.getText();
                n.$L2()
            },
            $L2: function () {
                var n = this,
                    t, i, r;
                if (n.$$ && n.instanceReady)
                    if (t = n.$RO(), n.editor === "umeditor" || n.editor === "ueditor") n.editor === "umeditor" ? (i = n.$L.$R(".edui-container"), r = n.$L.$R(".edui-editor-body")) : (i = n.$L.$R(".edui-editor"), r = n.$L.$R(".edui-editor-iframeholder")), n.$$.setHeight(t - (i.$t(!0) - r.$5()));
                    else if (n.editor === "ckeditor") n.$$.resize("100%", t, !1);
                else if (n.editor === "tinymce") {
                    var u = $("#" + n.inputId + "_ifr"),
                        f = u.$gU(".mce-container-body"),
                        e = t - (f.$t(!0) - u.$t(!0));
                    u.$t(e, !0)
                }
            },
            getValue: function () {
                var n = this,
                    t = "",
                    i = n.$$;
                if (i && n.instanceReady) return n.editor === "umeditor" || n.editor === "ueditor" ? t = i.getContent() : n.editor === "ckeditor" ? t = i.getData() : n.editor === "tinymce" && (t = i.getContent()), t
            },
            setValue: function (n) {
                var t = this,
                    i = t.$$;
                i && t.instanceReady && (t.editor === "umeditor" || t.editor === "ueditor" ? i.setContent(n, !1) : t.editor === "ckeditor" ? i.setData(n) : t.editor === "tinymce" && i.setContent(n))
            },
            focus: function (t, i) {
                function e() {
                    u.focus()
                }
                var r = this,
                    u = r.$$;
                u && r.instanceReady && (f(i) ? n.defer(e, i) : e())
            },
            blur: function () {},
            __doLayout: function () {
                var n = this;
                n._super();
                n.$L2()
            },
            setReadonly: function (n) {
                var t = this,
                    i;
                (t._super(n), i = t.$$, i && t.instanceReady) && (t.editor === "umeditor" || t.editor === "ueditor" ? n ? i.setDisabled() : i.setEnabled() : t.editor === "ckeditor" ? i.setReadOnly(n) : t.editor === "tinymce" && i.setMode(n ? "readonly" : "design"))
            }
        })
    }(F, window),
    function (n, t) {
        function a() {
            n.$Lh || $.each(n.$LL, function (n, t) {
                t.$s("textbox") && t.$Pu()
            })
        }

        function v() {
            n.$Lh || $.each(n.$LL, function (n, t) {
                t.$s("textbox") && t.$Pp()
            })
        }

        function y(n) {
            o(n) && (n = {
                url: arguments[0]
            }, o(arguments[1]) ? (n.fields = arguments[1], n.params = arguments[2]) : n.params = arguments[1]);
            t.setTimeout(function () {
                k(n)
            }, 100)
        }

        function p(t) {
            var i = {};
            return $.each(t, function (t, r) {
                var f = r.id,
                    u;
                if (r.$s("field")) {
                    if (r.$s("fileupload") || r.$s("label")) return !0;
                    u = r.getValue();
                    r.$s("numberbox") && n.isNAN(u) && (u = "");
                    (r.$s("calendar") || r.$s("datepicker")) && (u = r.getText());
                    i[f] = u
                }
            }), i
        }

        function w(n) {
            var t = {};
            return $.each(n, function (n, i) {
                var r = i.id;
                i.$s("field") ? (i.$s("dropdownbox") || i.$s("dropdownlist")) && (t[r + "_text"] = i.getText(), i.editable && (t[r + "_isUserInput"] = i.isUserInput())) : i.$s("grid") && (t[r + "_fields"] = i.fields, i.paging && (t[r + "_pageIndex"] = i.pageIndex, t[r + "_pageSize"] = i.pageSize), i.sorting && (t[r + "_sortField"] = i.sortField, t[r + "_sortDirection"] = i.sortDirection), i.cellEditing && (t[r + "_modifiedData"] = i.getModifiedData()), i.filters && (t[r + "_filteredData"] = i.getFilteredData()))
            }), t
        }

        function r(n, t, i) {
            n.push({
                name: t,
                value: i
            })
        }

        function b(t, i) {
            var e = "input,select,textarea",
                f, u;
            if (t) return (f = t.split(","), !f.length) ? void 0 : (u = $(), $.each(f, function (t, f) {
                var o, s, l, a, h, v;
                if ((f = $.trim(f), !f) || (s = [], l = n(f), l ? (s.push(l), o = l.el) : o = $("#" + f), !o || !o.length)) return !0;
                o.$R(".f-cmp").each(function () {
                    var t = $(this),
                        i = n(t.attr("id"));
                    if (!i) return !0;
                    t.is(".f-field") ? t.is(n.$L3) && s.push(i) : s.push(i)
                });
                a = p(s);
                h = o;
                h.is(e) || (h = h.find(e));
                v = h.serializeArray();
                $.each(v, function (n, t) {
                    var u = t.name,
                        f = t.value;
                    a.hasOwnProperty(u) || r(i, u, f)
                });
                $.each(a, function (n, t) {
                    c(t) ? $.each(t, function (t, u) {
                        r(i, n, u)
                    }) : r(i, n, t)
                });
                $.each(w(s), function (n, t) {
                    r(i, n, t)
                });
                u = u.add(h.filter("input[type=file]"))
            }), u)
        }

        function k(u) {
            function p() {
                et()
            }

            function it(t) {
                if (i.$4b(t, f) === !1) {
                    p();
                    return
                }
                try {
                    new Function(t)();
                    n && n.util && i.$44()
                } catch (r) {
                    throw r;
                } finally {
                    p()
                }
            }

            function rt(n, t, i) {
                p();
                nt(n, t, i)
            }

            function k(i, r, u) {
                n && (e && n.f_enable(e), t.setTimeout(function () {
                    r === "success" ? it(i) : rt(i, r, u)
                }, 0))
            }
            var g = u.url,
                tt = u.params || {},
                w = u.fields || "",
                e = u.disableControl || "",
                c, o, f, s, l, y;
            i.$4R() !== !1 && (a(), c = g, e && (o = n(e), o && !o.isDisabled() && o.disable()), f = [], s = $(), w && (s = b(w, f)), $.each(tt, function (n, t) {
                r(f, n, t)
            }), $.each(f, function (t, r) {
                var u = r.value;
                (i.isARR(u) || i.isPOBJ(u)) && (r.value = n.toJSON(u))
            }), l = "__RequestVerificationToken", y = $("input[name=" + l + "]"), y && r(f, l, y.val()), s.length ? (h(u), d(c, f, s, function (n, t) {
                k(n, t)
            })) : (h(u), $.ajax({
                type: "POST",
                url: c,
                data: f,
                dataType: "text",
                headers: {
                    "X-FineUIMvc-Ajax": !0
                },
                success: function () {},
                error: function () {},
                complete: function (n, t) {
                    k(n.responseText, t, n)
                }
            })), v())
        }

        function d(n, i, r, u) {
            var f = $('<form style="display:none;"><\/form>'),
                e = $('<iframe name="f-iframe-transport-' + l++ + '"><\/iframe>'),
                o, s, h;
            e.$g(f);
            f.$g("body");
            o = !!r.length;
            e.off("load").on("load", function () {
                var r = e.contents(),
                    o = r.$R("body>textarea.fineuimvcresponse"),
                    n, i;
                o.length ? (n = "success", i = o.text()) : (n = "fail", i = "<html>" + r.$R("html").html() + "<\/html>");
                u.apply(t, [i, n]);
                t.setTimeout(function () {
                    f.remove()
                }, 0)
            });
            s = o ? "multipart/form-data" : "application/x-www-form-urlencoded";
            f.attr("target", e.attr("name")).attr("action", n).attr("method", "POST").attr("enctype", s).attr("encoding", s);
            i.push({
                name: "X-FineUIMvc-Ajax",
                value: !0
            });
            $.each(i, function (n, t) {
                $("<input>", {
                    type: "hidden",
                    name: t.name,
                    val: t.value
                }).$g(f)
            });
            o && (h = r.clone(), r.after(function (n) {
                return h[n]
            }), r.$g(f));
            f.submit();
            o && r.each(function (n, t) {
                var i = $(h[n]);
                i.replaceWith(t)
            })
        }

        function g(n, t) {
            if (n) {
                var i = n.document;
                i && (i.open(), i.write(t), i.close())
            }
        }

        function nt(t, r, u) {
            var s = n.ajax.errorMsg,
                o = s.substr(0, s.indexOf("{0}")),
                e, h, c, a, f, l;
            if (r === "timeout") {
                n.alert({
                    messageIcon: "error",
                    title: o,
                    message: n.ajax.timeoutErrorMsg
                });
                return
            }
            if (e = t, !e) {
                n.alert({
                    messageIcon: "error",
                    title: o,
                    message: n.ajax.networkErrorMsg
                });
                return
            }
            if (n.simpleError && (h = e.indexOf("<title>"), c = e.indexOf("<\/title>"), h >= 0 && c >= 0)) {
                a = e.substring(h + 7, c);
                n.alert({
                    messageIcon: "error",
                    title: o,
                    message: a
                });
                return
            }
            f = n.ajax.errorWindow;
            f || (f = new n.Window({
                id: "FINEUI_ERROR",
                renderTo: document.forms[0],
                width: 550,
                height: 350,
                collapsible: !1,
                resizable: !0,
                maximizable: !0,
                closable: !0,
                iframe: !0
            }), n.ajax.errorWindow = f);
            f.show();
            l = o;
            u && (l = i.$Ps(s, u.statusText, u.status));
            f.setTitle(l);
            g(f.getIFrameWindow(), e)
        }

        function tt(t) {
            return f(t.enableAjaxLoading) ? n.enableAjaxLoading : t.enableAjaxLoading
        }

        function it(t) {
            return f(t.ajaxLoadingType) ? n.ajaxLoadingType : t.ajaxLoadingType
        }

        function rt(t) {
            return f(t.ajaxLoadingText) ? n.ajaxLoadingText : t.ajaxLoadingText
        }

        function ut(t) {
            return f(t.ajaxLoadingMaskText) ? n.ajaxLoadingMaskText : t.ajaxLoadingMaskText
        }

        function ft(t) {
            return f(t.showAjaxLoadingMaskText) ? n.showAjaxLoadingMaskText : t.showAjaxLoadingMaskText
        }

        function et() {
            u--;
            u < 0 && (u = 0);
            u === 0 && e && (e = !1, s === "default" ? i.$eV() : i.$4P())
        }

        function h(n) {
            var r, f, o, h;
            (u++, tt(n)) && (e || (r = it(n), s = r, r === "default" ? f = rt(n) : (o = ft(n), h = ut(n)), t.setTimeout(function () {
                u > 0 && !e && (e = !0, r === "default" ? i.$4g(f) : i.$4L(o, h))
            }, 50)))
        }
        var f = n.isUND,
            o = n.isSTR,
            ot = n.isNUM,
            st = n.isBOO,
            c = n.isARR,
            i = n.util,
            l = 1,
            u = 0,
            e = !1,
            s = "";
        n.doPostBack = y
    }(F, window);
F.trial = !0;
F.customId = '',
    function (n) {
        var i = n.isUND,
            r = n.isSTR,
            u = n.isNUM,
            f = n.isFUN,
            t = n.util;
        n.f_init = function (i) {
            if ($.extend(n, {
                    language: "zh_CN",
                    msgTarget: "side",
                    labelWidth: 100,
                    labelSeparator: ":",
                    labelAlign: "left",
                    redStarPosition: "afterText",
                    enableAjax: !0,
                    enableAjaxLoading: !0,
                    ajaxTimeout: 120,
                    ajaxLoadingType: "default",
                    ajaxLoadingText: "",
                    ajaxLoadingMaskText: "",
                    showAjaxLoadingMaskText: !1,
                    theme: "default",
                    compactMode: !1,
                    enableShim: !1,
                    compactMode: !1,
                    formChangeConfirm: !1,
                    iframeLoading: !0,
                    beforeunloadCheck: !0,
                    enableAnimation: !1,
                    loadingImage: "",
                    animationType: {
                        tabstrip: "slideX",
                        window: {
                            left: "slideRight",
                            right: "slideLeft",
                            top: "slideDown",
                            bottom: "slideUp",
                            center: "pop"
                        }
                    }
                }, i), $.ajaxSetup({
                    timeout: n.ajaxTimeout * 1e3
                }), $.extend(n.Field.prototype, {
                    msgTarget: n.msgTarget,
                    labelWidth: n.labelWidth,
                    labelSeparator: n.labelSeparator,
                    labelAlign: n.labelAlign,
                    redStarPosition: n.redStarPosition
                }), n.theme && $("body").$d("f-theme-" + n.theme), n.compactMode ? ($("body").$d("f-compactmode"), $.extend(n.PanelBase.prototype, {
                    splitWidth: 3
                })) : n.largeMode && $("body").$d("f-largemode"), n.formChangeConfirm) $(window).on("beforeunload", function () {
                if (n.beforeunloadCheck && t.$rt()) return n.wnd.formChangeConfirmMsg
            })
        };
        n.f_enable = function (t) {
            var i = n(t),
                r;
            i.enable();
            n.$j || (r = i.el, i.disabled || i.readonly || r.focus())
        };
        n.f_treeData = function (t) {
            function u(t) {
                var i = {},
                    r, u, f;
                return i.text = t.f0, i.leaf = !!t.f1, i.id = t.f2, i.expanded = !!t.f3, i.hrefTarget = t.f5 || "", i.href = t.f6 || "", r = t.f7, r && r.length && (i.children = n.f_treeData(r)), i.unselectable = t.f8 === 0 ? !0 : !1, u = !!t.f9, f = !!t.f10, i.checked = u ? f : undefined, i.icon = t.f13 || "", i.qtip = t.f14 || "", i.f_clientclick = t.f15 || "", i.iconFont = t.f23 || "", i.cls = t.f24 || "", i.attrs = t.f25, i
            }
            for (var r = [], i = 0, f = t.length; i < f; i++) r.push(u(t[i]));
            return r
        };
        $.extend(n.Label.prototype, {
            f_setEnabled: function (n) {
                var i = this,
                    t;
                i.setEnabled(n);
                t = i.getAttrEl();
                n ? t.removeAttr("disabled") : t.attr("disabled", "disabled")
            }
        });
        n.wnd.writeBackValue = function () {
            var r = n.getActiveWindow(),
                u, f, i;
            if (t.$Pw(r.window))
                for (u = r.f_property_save_state_control_ids, f = Math.min(u.length, arguments.length), i = 0; i < f; i++) r.window.F(u[i]).setValue(arguments[i], !0)
        }
    }(F)

  

posted @ 2021-03-11 09:18  少莫千华  阅读(285)  评论(0)    收藏  举报