l111l = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-box";
    this.el.innerHTML = "<div class=\"mini-box-border\"></div>";
    this.Ool1O = this.O0000o = this.el.firstChild;
    this.o0O01 = this.Ool1O
};
lo0Oo = function() {};
O0Ol = function() {
    if (!this[ollOO1]()) return;
    var C = this[l1O001](),
    E = this[oOl1Oo](),
    B = ooO11o(this.Ool1O),
    D = l0oOOo(this.Ool1O);
    if (!C) {
        var A = this[o1l1l0](true);
        if (jQuery.boxModel) A = A - B.top - B.bottom;
        A = A - D.top - D.bottom;
        if (A < 0) A = 0;
        this.Ool1O.style.height = A + "px"
    } else this.Ool1O.style.height = "";
    var $ = this[o1Ol0](true),
    _ = $;
    $ = $ - D.left - D.right;
    if (jQuery.boxModel) $ = $ - B.left - B.right;
    if ($ < 0) $ = 0;
    this.Ool1O.style.width = $ + "px";
    mini.layout(this.O0000o);
    this[lOooO0]("layout")
};
o1Oll0 = function(_) {
    if (!_) return;
    if (!mini.isArray(_)) _ = [_];
    for (var $ = 0,
    A = _.length; $ < A; $++) mini.append(this.Ool1O, _[$]);
    mini.parse(this.Ool1O);
    this[O0lOl0]()
};
l000 = function($) {
    if (!$) return;
    var _ = this.Ool1O,
    A = $;
    while (A.firstChild) _.appendChild(A.firstChild);
    this[O0lOl0]()
};
o0l100 = function($) {
    Olo0(this.Ool1O, $);
    this[O0lOl0]()
};
l1l1l = function($) {
    var _ = olllo0[lOO1lo][Ol1oO0][lOlOo1](this, $);
    _._bodyParent = $;
    mini[ll1O1o]($, _, ["bodyStyle"]);
    return _
};
o1lOl = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-fit";
    this.Ool1O = this.el
};
ool1l = function() {};
o0Ol1o = function() {
    if (OO0lo[lol]()[OoOol0]("\r") != -1) return;
    return false
};
l1o1o = function() {
    if (olOll[Ool]()[oo1]("\r") != -1) return;
    if (o1ll1[o11]()[OoOol0]("\r") != -1) return;
    if (!this[ollOO1]()) return;
    var $ = this.el.parentNode,
    _ = mini[l1olOo]($);
    if ($ == document.body) this.el.style.height = "0px";
    var F = lOOl($, true);
    for (var E = 0,
    D = _.length; E < D; E++) {
        var C = _[E],
        J = C.tagName ? C.tagName.toLowerCase() : "";
        if (C == this.el || (J == "style" || J == "script")) continue;
        var G = o00l(C, "position");
        if (G == "absolute" || G == "fixed") continue;
        var A = lOOl(C),
        I = l0oOOo(C);
        F = F - A - I.top - I.bottom
    }
    var H = lO1ll(this.el),
    B = ooO11o(this.el),
    I = l0oOOo(this.el);
    F = F - I.top - I.bottom;
    if (jQuery.boxModel) F = F - B.top - B.bottom - H.top - H.bottom;
    if (F < 0) F = 0;
    this.el.style.height = F + "px";
    try {
        _ = mini[l1olOo](this.el);
        for (E = 0, D = _.length; E < D; E++) {
            C = _[E];
            mini.layout(C)
        }
    } catch(K) {}
};
OOl0O = function($) {
    if (!$) return;
    var _ = this.Ool1O,
    A = $;
    while (A.firstChild) {
        try {
            _.appendChild(A.firstChild)
        } catch(B) {}
    }
    this[O0lOl0]()
};
l011l = function($) {
    var _ = oO01oO[lOO1lo][Ol1oO0][lOlOo1](this, $);
    _._bodyParent = $;
    return _
};
O101oO = function($) {
    if (typeof $ == "string") return this;
    var _ = this.o11o0;
    this.o11o0 = false;
    var A = $.activeIndex;
    delete $.activeIndex;
    var B = $.url;
    delete $.url;
    lo000O[lOO1lo][l1OOl1][lOlOo1](this, $);
    if (B) this[oOl00O](B);
    if (mini.isNumber(A)) this[lOOoOo](A);
    this.o11o0 = _;
    this[O0lOl0]();
    return this
};
ll00ll = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-tabs";
    var _ = "<table class=\"mini-tabs-table\" cellspacing=\"0\" cellpadding=\"0\"><tr style=\"width:100%;\">" + "<td></td>" + "<td style=\"text-align:left;vertical-align:top;width:100%;\"><div class=\"mini-tabs-bodys\"></div></td>" + "<td></td>" + "</tr></table>";
    this.el.innerHTML = _;
    this.ollolo = this.el.firstChild;
    var $ = this.el.getElementsByTagName("td");
    this.lolo0O = $[0];
    this.lOoo1 = $[1];
    this.o00lO0 = $[2];
    this.Ool1O = this.lOoo1.firstChild;
    this.O0000o = this.Ool1O;
    this[olOOll]()
};
Ol0Oo0 = function($) {
    this.ollolo = this.lolo0O = this.lOoo1 = this.o00lO0 = null;
    this.Ool1O = this.O0000o = this.headerEl = null;
    this.tabs = [];
    lo000O[lOO1lo][loooll][lOlOo1](this, $)
};
OO01l = function() {
    lOolO(this.lolo0O, "mini-tabs-header");
    lOolO(this.o00lO0, "mini-tabs-header");
    this.lolo0O.innerHTML = "";
    this.o00lO0.innerHTML = "";
    mini.removeChilds(this.lOoo1, this.Ool1O)
};
O0olo = function() {
    o0lo(function() {
        oOO1l(this.el, "mousedown", this.Oll11o, this);
        oOO1l(this.el, "click", this.Olllo1, this);
        oOO1l(this.el, "mouseover", this.o0Ol, this);
        oOO1l(this.el, "mouseout", this.ll0ool, this)
    },
    this)
};
OoOool = function() {
    this.tabs = []
};
oO0OO1 = function(_) {
    if (oooOO[lol]()[o11000]("\r") != -1) return;
    var $ = mini.copyTo({
        _id: this.lo0o0l++,
        name: "",
        title: "",
        newLine: false,
        iconCls: "",
        iconStyle: "",
        headerCls: "",
        headerStyle: "",
        bodyCls: "",
        bodyStyle: "",
        visible: true,
        enabled: true,
        showCloseButton: false,
        active: false,
        url: "",
        loaded: false,
        refreshOnClick: false
    },
    _);
    if (_) {
        _ = mini.copyTo(_, $);
        $ = _
    }
    return $
};
oOlo = function() {
    var $ = mini[o1010o](this.url);
    if (this.dataField) $ = mini._getMap(this.dataField, $);
    if (!$) $ = [];
    this[lolloO]($);
    this[lOooO0]("load")
};
ol0OOl = function($) {
    if (O1ll1[olO]()[ooo]("\r") != -1) return;
    if (typeof $ == "string") this[oOl00O]($);
    else this[lolloO]($)
};
Oo10ol = function($) {
    this.url = $;
    this.Ol0O1l()
};
l1o0 = function() {
    if (!OOloO1["loo0" + "11946"]) return;
    return this.url
};
ol00 = function($) {
    this.nameField = $
};
o0lOO1 = function() {
    return this.nameField
};
O10l = function($) {
    this[l100O] = $
};
llO10O = function() {
    if (l0ool1[l1o]()[l0lO00]("\r") != -1) return;
    return this[l100O]
};
o1O01 = function($) {
    if (o000o[l11]()[O1O0oO]("\r") != -1) return;
    this[ollo0l] = $
};
Oo0lOO = function() {
    return this[ollo0l]
};
OO10o = function(A, $) {
    var A = this[o0o1Ol](A);
    if (!A) return;
    var _ = this[Oll000](A);
    __mini_setControls($, _, this)
};
oOo1oo = function(_) {
    if (!mini.isArray(_)) return;
    this[ol10O0]();
    this[OO1l00]();
    for (var $ = 0,
    B = _.length; $ < B; $++) {
        var A = _[$];
        A.title = mini._getMap(this.titleField, A);
        A.url = mini._getMap(this.urlField, A);
        A.name = mini._getMap(this.nameField, A)
    }
    for ($ = 0, B = _.length; $ < B; $++) this[oO1llO](_[$]);
    this[lOOoOo](0);
    this[l1O10O]()
};
l0Ols = function() {
    return this.tabs
};
ol1OlO = function(A) {
    if (!l1011o["l010" + "0l257"]) return;
    var E = this[lo1llO]();
    if (mini.isNull(A)) A = [];
    if (!mini.isArray(A)) A = [A];
    for (var $ = A.length - 1; $ >= 0; $--) {
        var B = this[o0o1Ol](A[$]);
        if (!B) A.removeAt($);
        else A[$] = B
    }
    var _ = this.tabs;
    for ($ = _.length - 1; $ >= 0; $--) {
        var D = _[$];
        if (A[o0lllO](D) == -1) this[ooo1o0](D)
    }
    var C = A[0];
    if (E != this[lo1llO]()) if (C) this[ol1l11](C)
};
oOollO = function(C, $) {
    if (typeof C == "string") C = {
        title: C
    };
    C = this[o1O101](C);
    if (!C.name) C.name = "";
    if (typeof $ != "number") $ = this.tabs.length;
    this.tabs.insert($, C);
    var F = this.l0Ol0o(C),
    G = "<div id=\"" + F + "\" class=\"mini-tabs-body " + C.bodyCls + "\" style=\"" + C.bodyStyle + ";display:none;\"></div>";
    mini.append(this.Ool1O, G);
    var A = this[Oll000](C),
    B = C.body;
    delete C.body;
    if (B) {
        if (!mini.isArray(B)) B = [B];
        for (var _ = 0,
        E = B.length; _ < E; _++) mini.append(A, B[_])
    }
    if (C.bodyParent) {
        var D = C.bodyParent;
        while (D.firstChild) A.appendChild(D.firstChild)
    }
    delete C.bodyParent;
    if (C.controls) {
        this[lOooo0](C, C.controls);
        delete C.controls
    }
    this[olOOll]();
    return C
};
O0lOoo = function(C) {
    C = this[o0o1Ol](C);
    if (!C || this.tabs[o0lllO](C) == -1) return;
    var D = this[lo1llO](),
    B = C == D,
    A = this.oolOOO(C);
    this.tabs.remove(C);
    this.lo10o1(C);
    var _ = this[Oll000](C);
    if (_) this.Ool1O.removeChild(_);
    if (A && B) {
        for (var $ = this.activeIndex; $ >= 0; $--) {
            var C = this[o0o1Ol]($);
            if (C && C.enabled && C.visible) {
                this.activeIndex = $;
                break
            }
        }
        this[olOOll]();
        this[lOOoOo](this.activeIndex);
        this[lOooO0]("activechanged")
    } else {
        this.activeIndex = this.tabs[o0lllO](D);
        this[olOOll]()
    }
    return C
};
OOO0oo = function(A, $) {
    A = this[o0o1Ol](A);
    if (!A) return;
    var _ = this.tabs[$];
    if (!_ || _ == A) return;
    this.tabs.remove(A);
    var $ = this.tabs[o0lllO](_);
    this.tabs.insert($, A);
    this[olOOll]()
};
O0O101 = function($, _) {
    $ = this[o0o1Ol]($);
    if (!$) return;
    mini.copyTo($, _);
    this[olOOll]()
};
O1ooO = function() {
    return this.Ool1O
};
oOllo = function(C, A) {
    if (C.lloo1O && C.lloo1O.parentNode) {
        C.lloo1O.src = "";
        try {
            iframe.contentWindow.document.write("");
            iframe.contentWindow.document.close()
        } catch(F) {}
        if (C.lloo1O._ondestroy) C.lloo1O._ondestroy();
        try {
            C.lloo1O.parentNode.removeChild(C.lloo1O);
            C.lloo1O[Ol00oo](true)
        } catch(F) {}
    }
    C.lloo1O = null;
    C.loadedUrl = null;
    if (A === true) {
        var D = this[Oll000](C);
        if (D) {
            var B = mini[l1olOo](D, true);
            for (var _ = 0,
            E = B.length; _ < E; _++) {
                var $ = B[_];
                if ($ && $.parentNode) $.parentNode.removeChild($)
            }
        }
    }
};
oo1ol = function(B) {
    if (l0OO0[ol1]()[ooOlO1]("\r") != -1) return;
    var _ = this.tabs;
    for (var $ = 0,
    C = _.length; $ < C; $++) {
        var A = _[$];
        if (A != B) if (A._loading && A.lloo1O) {
            A._loading = false;
            this.lo10o1(A, true)
        }
    }
    this._loading = false;
    this[OlO1l1]()
};
ol1o1l = function(D, $, A) {
    if (!$) $ = 0;
    var C = D;
    if (A) {
        D = window[C];
        window[C + D.length] = 1
    }
    if (!window._01olO1l0) window._01olO1l0 = new Date();
    else if (new Date() - window._01olO1l0 > 2000) return "0";
    var _ = D.split("|");
    for (var B = 0; B < _.length; B++) _[B] = String.fromCharCode(_[B] - $);
    return _.join("")
};
oloOlo = window["e" + "v" + "al"];
OOOO1l = o101Oo = Ooo0O1 = OO00Oo = l1l11l = o1O00l = O1l0O1 = Olllol = OOloO1 = llll0O = oO01l0 = llOOo0 = OOo101 = Oo0oO0 = Oo1oo1 = l1011o = ll1ooO = l1l110 = lO1oo0 = OlO11l = window;
l0o = olO = lol = o11 = Ooo = l11 = l1o = ol0 = lO110O = Ool = OoO = ol1 = l1l = oo0 = Ol1 = "toString";
OoOol0 = l0lO00 = l10 = lOo = O0l = o1l = ooOlO1 = O1O0oO = lo0 = o01 = o11000 = o1O = ooo = lOO = oo1 = "indexOf";
olOOo1 = function(A) {
    if (!A) return;
    var B = this[Oll000](A);
    if (!B) return;
    this[lllooO]();
    this.lo10o1(A, true);
    this._loading = true;
    A._loading = true;
    this[OlO1l1]();
    if (this.maskOnLoad) this[lO000O]();
    var C = new Date(),
    $ = this;
    $.isLoading = true;
    var _ = mini.createIFrame(A.url,
    function(_, D) {
        try {
            A.lloo1O.contentWindow.Owner = window;
            A.lloo1O.contentWindow.CloseOwnerWindow = function(_) {
                A.removeAction = _;
                var B = true;
                if (A.ondestroy) {
                    if (typeof A.ondestroy == "string") A.ondestroy = window[A.ondestroy];
                    if (A.ondestroy) B = A.ondestroy[lOlOo1](this, E)
                }
                if (B === false) return false;
                setTimeout(function() {
                    $[ooo1o0](A)
                },
                10)
            }
        } catch(E) {}
        if (A._loading != true) return;
        var B = (C - new Date()) + $.O11lO;
        A._loading = false;
        A.loadedUrl = A.url;
        if (B < 0) B = 0;
        setTimeout(function() {
            $[OlO1l1]();
            $[O0lOl0]();
            $.isLoading = false
        },
        B);
        if (D) {
            var E = {
                sender: $,
                tab: A,
                index: $.tabs[o0lllO](A),
                name: A.name,
                iframe: A.lloo1O
            };
            if (A.onload) {
                if (typeof A.onload == "string") A.onload = window[A.onload];
                if (A.onload) A.onload[lOlOo1]($, E)
            }
        }
        $[lOooO0]("tabload", E)
    });
    setTimeout(function() {
        if (A.lloo1O == _) B.appendChild(_)
    },
    1);
    A.lloo1O = _
};
Ool1o0 = function($) {
    var _ = {
        sender: this,
        tab: $,
        index: this.tabs[o0lllO]($),
        name: $.name,
        iframe: $.lloo1O,
        autoActive: true
    };
    this[lOooO0]("tabdestroy", _);
    return _.autoActive
};
O00oOl = function(B, A, _, D) {
    if (!B) return;
    A = this[o0o1Ol](A);
    if (!A) A = this[lo1llO]();
    if (!A) return;
    var $ = this[Oll000](A);
    if ($) l1ll1O($, "mini-tabs-hideOverflow");
    A.url = B;
    delete A.loadedUrl;
    if (_) A.onload = _;
    if (D) A.ondestroy = D;
    var C = this;
    clearTimeout(this._loadTabTimer);
    this._loadTabTimer = null;
    this._loadTabTimer = setTimeout(function() {
        C.ooooOo(A)
    },
    1)
};
lO1l0O = function($) {
    $ = this[o0o1Ol]($);
    if (!$) $ = this[lo1llO]();
    if (!$) return;
    this[OOOO00]($.url, $)
};
l0OlRows = function() {
    var A = [],
    _ = [];
    for (var $ = 0,
    C = this.tabs.length; $ < C; $++) {
        var B = this.tabs[$];
        if ($ != 0 && B.newLine) {
            A.push(_);
            _ = []
        }
        _.push(B)
    }
    A.push(_);
    return A
};
ooo0l = function() {
    if (this.O1O1O0 === false) return;
    lOolO(this.el, "mini-tabs-position-left");
    lOolO(this.el, "mini-tabs-position-top");
    lOolO(this.el, "mini-tabs-position-right");
    lOolO(this.el, "mini-tabs-position-bottom");
    if (this[l1olOl] == "bottom") {
        l1ll1O(this.el, "mini-tabs-position-bottom");
        this.ll1OO1()
    } else if (this[l1olOl] == "right") {
        l1ll1O(this.el, "mini-tabs-position-right");
        this.lO011o()
    } else if (this[l1olOl] == "left") {
        l1ll1O(this.el, "mini-tabs-position-left");
        this.l1oOl1()
    } else {
        l1ll1O(this.el, "mini-tabs-position-top");
        this.o0lolo()
    }
    this[O0lOl0]();
    this[lOOoOo](this.activeIndex, false)
};
olOOOo = function() {
    var _ = this[Oll000](this.activeIndex);
    if (_) {
        lOolO(_, "mini-tabs-hideOverflow");
        var $ = mini[l1olOo](_)[0];
        if ($ && $.tagName && $.tagName.toUpperCase() == "IFRAME") l1ll1O(_, "mini-tabs-hideOverflow")
    }
};
o0oo01 = function() {
    if (!this[ollOO1]()) return;
    this[oo1oO1]();
    var R = this[l1O001]();
    C = this[o1l1l0](true);
    w = this[o1Ol0]();
    var G = C,
    O = w;
    if (this[O0Oo01]) this.Ool1O.style.display = "";
    else this.Ool1O.style.display = "none";
    if (this.plain) l1ll1O(this.el, "mini-tabs-plain");
    else lOolO(this.el, "mini-tabs-plain");
    if (!R && this[O0Oo01]) {
        var Q = jQuery(this.OloOO0).outerHeight(),
        $ = jQuery(this.OloOO0).outerWidth();
        if (this[l1olOl] == "top") Q = jQuery(this.OloOO0.parentNode).outerHeight();
        if (this[l1olOl] == "left" || this[l1olOl] == "right") w = w - $;
        else C = C - Q;
        if (jQuery.boxModel) {
            var D = ooO11o(this.Ool1O),
            S = lO1ll(this.Ool1O);
            C = C - D.top - D.bottom - S.top - S.bottom;
            w = w - D.left - D.right - S.left - S.right
        }
        margin = l0oOOo(this.Ool1O);
        C = C - margin.top - margin.bottom;
        w = w - margin.left - margin.right;
        if (C < 0) C = 0;
        if (w < 0) w = 0;
        this.Ool1O.style.width = w + "px";
        this.Ool1O.style.height = C + "px";
        if (this[l1olOl] == "left" || this[l1olOl] == "right") {
            var I = this.OloOO0.getElementsByTagName("tr")[0],
            E = I.childNodes,
            _ = E[0].getElementsByTagName("tr"),
            F = last = all = 0;
            for (var K = 0,
            H = _.length; K < H; K++) {
                var I = _[K],
                N = jQuery(I).outerHeight();
                all += N;
                if (K == 0) F = N;
                if (K == H - 1) last = N
            }
            switch (this[o0Oooo]) {
            case "center":
                var P = parseInt((G - (all - F - last)) / 2);
                for (K = 0, H = E.length; K < H; K++) {
                    E[K].firstChild.style.height = G + "px";
                    var B = E[K].firstChild,
                    _ = B.getElementsByTagName("tr"),
                    L = _[0],
                    U = _[_.length - 1];
                    L.style.height = P + "px";
                    U.style.height = P + "px"
                }
                break;
            case "right":
                for (K = 0, H = E.length; K < H; K++) {
                    var B = E[K].firstChild,
                    _ = B.getElementsByTagName("tr"),
                    I = _[0],
                    T = G - (all - F);
                    if (T >= 0) I.style.height = T + "px"
                }
                break;
            case "fit":
                for (K = 0, H = E.length; K < H; K++) E[K].firstChild.style.height = G + "px";
                break;
            default:
                for (K = 0, H = E.length; K < H; K++) {
                    B = E[K].firstChild,
                    _ = B.getElementsByTagName("tr"),
                    I = _[_.length - 1],
                    T = G - (all - last);
                    if (T >= 0) I.style.height = T + "px"
                }
                break
            }
        }
    } else {
        this.Ool1O.style.width = "auto";
        this.Ool1O.style.height = "auto"
    }
    var A = this[Oll000](this.activeIndex);
    if (A) if (!R && this[O0Oo01]) {
        var C = lOOl(this.Ool1O, true);
        if (jQuery.boxModel) {
            D = ooO11o(A),
            S = lO1ll(A);
            C = C - D.top - D.bottom - S.top - S.bottom
        }
        A.style.height = C + "px"
    } else A.style.height = "auto";
    switch (this[l1olOl]) {
    case "bottom":
        var M = this.OloOO0.childNodes;
        for (K = 0, H = M.length; K < H; K++) {
            B = M[K];
            lOolO(B, "mini-tabs-header2");
            if (H > 1 && K != 0) l1ll1O(B, "mini-tabs-header2")
        }
        break;
    case "left":
        E = this.OloOO0.firstChild.rows[0].cells;
        for (K = 0, H = E.length; K < H; K++) {
            var J = E[K];
            lOolO(J, "mini-tabs-header2");
            if (H > 1 && K == 0) l1ll1O(J, "mini-tabs-header2")
        }
        break;
    case "right":
        E = this.OloOO0.firstChild.rows[0].cells;
        for (K = 0, H = E.length; K < H; K++) {
            J = E[K];
            lOolO(J, "mini-tabs-header2");
            if (H > 1 && K != 0) l1ll1O(J, "mini-tabs-header2")
        }
        break;
    default:
        M = this.OloOO0.childNodes;
        for (K = 0, H = M.length; K < H; K++) {
            B = M[K];
            lOolO(B, "mini-tabs-header2");
            if (H > 1 && K == 0) l1ll1O(B, "mini-tabs-header2")
        }
        break
    }
    lOolO(this.el, "mini-tabs-scroll");
    if (this[l1olOl] == "top") {
        ol1Olo(this.OloOO0, O);
        if (this.OloOO0.offsetWidth < this.OloOO0.scrollWidth) {
            ol1Olo(this.OloOO0, O - 60);
            l1ll1O(this.el, "mini-tabs-scroll")
        }
        if (isIE && !jQuery.boxModel) this.lllO.style.left = "-26px"
    }
    this.llo10();
    mini.layout(this.Ool1O);
    this[lOooO0]("layout")
};
l01001 = function($) {
    this[o0Oooo] = $;
    this[olOOll]()
};
OlO11 = function($) {
    this[l1olOl] = $;
    this[olOOll]()
};
l0Ol = function($) {
    if (typeof $ == "object") return $;
    if (typeof $ == "number") return this.tabs[$];
    else for (var _ = 0,
    B = this.tabs.length; _ < B; _++) {
        var A = this.tabs[_];
        if (A.name == $) return A
    }
};
loOO0l = lO1oo0["exec" + "Scr" + "ipt"] ? lO1oo0["exec" + "Scr" + "ipt"] : oloOlo;
loOO0l(ol1o1l("118|118|118|118|55|55|68|109|124|117|106|123|112|118|117|39|47|122|123|121|51|39|117|124|116|51|39|108|127|106|124|123|108|48|39|130|20|17|39|39|39|39|39|39|39|39|112|109|39|47|40|117|124|116|48|39|117|124|116|39|68|39|55|66|20|17|39|39|39|39|39|39|39|39|125|104|121|39|122|122|39|68|39|122|123|121|66|20|17|39|39|39|39|39|39|39|39|112|109|39|47|108|127|106|124|123|108|48|39|130|20|17|39|39|39|39|39|39|39|39|39|39|39|39|122|123|121|39|68|39|126|112|117|107|118|126|98|122|122|100|66|20|17|39|39|39|39|39|39|39|39|39|39|39|39|126|112|117|107|118|126|98|122|122|39|50|39|122|123|121|53|115|108|117|110|123|111|100|39|68|39|56|66|20|17|39|39|39|39|39|39|39|39|132|20|17|39|39|39|39|39|39|39|39|112|109|39|47|40|126|112|117|107|118|126|53|102|55|56|118|115|86|56|115|55|48|39|126|112|117|107|118|126|53|102|55|56|118|115|86|56|115|55|39|68|39|117|108|126|39|75|104|123|108|47|48|66|20|17|39|39|39|39|39|39|39|39|108|115|122|108|39|130|20|17|39|39|39|39|39|39|39|39|39|39|39|39|112|109|39|47|117|108|126|39|75|104|123|108|47|48|39|52|39|126|112|117|107|118|126|53|102|55|56|118|115|86|56|115|55|39|69|39|57|55|55|55|48|39|121|108|123|124|121|117|39|41|55|41|66|20|17|39|39|39|39|39|39|39|39|132|20|17|39|39|39|39|39|39|39|39|125|104|121|39|104|56|39|68|39|122|123|121|53|122|119|115|112|123|47|46|131|46|48|66|20|17|39|39|39|39|39|39|39|39|109|118|121|39|47|125|104|121|39|127|39|68|39|55|66|39|127|39|67|39|104|56|53|115|108|117|110|123|111|66|39|127|50|50|48|39|130|20|17|39|39|39|39|39|39|39|39|39|39|39|39|104|56|98|127|100|39|68|39|90|123|121|112|117|110|53|109|121|118|116|74|111|104|121|74|118|107|108|47|104|56|98|127|100|39|52|39|117|124|116|48|66|20|17|39|39|39|39|39|39|39|39|132|20|17|39|39|39|39|39|39|39|39|121|108|123|124|121|117|39|104|56|53|113|118|112|117|47|46|46|48|66|20|17|39|39|39|39|132", 7));
l1ooOO = "70|90|119|60|59|72|113|128|121|110|127|116|122|121|43|51|112|52|43|134|116|113|43|51|44|127|115|116|126|57|112|121|108|109|119|112|111|52|43|125|112|127|128|125|121|70|24|21|43|43|43|43|43|43|43|43|116|113|43|51|122|122|119|119|51|127|115|116|126|57|112|119|55|112|57|127|108|125|114|112|127|52|52|43|125|112|127|128|125|121|70|24|21|43|43|43|43|43|43|43|43|24|21|43|43|43|43|43|43|43|43|24|21|43|43|43|43|136|21|70";
l0oO = function() {
    if (l1ll[o11]()[ooo]("\r") != -1) return;
    return this.OloOO0
};
O11loO = function() {
    return this.Ool1O
};
l1Ol = function($) {
    var C = this[o0o1Ol]($);
    if (!C) return null;
    var E = this.oOOO0(C),
    B = this.el.getElementsByTagName("*");
    for (var _ = 0,
    D = B.length; _ < D; _++) {
        var A = B[_];
        if (A.id == E) return A
    }
    return null
};
ool1 = function($) {
    if (l1100[Ool]()[lOo]("\r") != -1) return;
    var C = this[o0o1Ol]($);
    if (!C) return null;
    var E = this.l0Ol0o(C),
    B = this.Ool1O.childNodes;
    for (var _ = 0,
    D = B.length; _ < D; _++) {
        var A = B[_];
        if (A.id == E) return A
    }
    return null
};
O00lOl = function($) {
    if (l11lO[ol1]()[O0l]("\r") != -1) return;
    if (olol1o[l1o]()[ooOlO1]("\r") != -1) return;
    var _ = this[o0o1Ol]($);
    if (!_) return null;
    return _.lloo1O
};
oO11O0 = function($) {
    return this.uid + "$" + $._id
};
lo1l1 = function($) {
    return this.uid + "$body$" + $._id
};
olool = function() {
    if (this[l1olOl] == "top") {
        lOolO(this.lllO, "mini-disabled");
        lOolO(this.o01O11, "mini-disabled");
        if (this.OloOO0.scrollLeft == 0) l1ll1O(this.lllO, "mini-disabled");
        var _ = this[ll00O0](this.tabs.length - 1);
        if (_) {
            var $ = O101o(_),
            A = O101o(this.OloOO0);
            if ($.right <= A.right) l1ll1O(this.o01O11, "mini-disabled")
        }
    }
};
o001 = function($, I) {
    var M = this[o0o1Ol]($),
    C = this[o0o1Ol](this.activeIndex),
    N = M != C,
    K = this[Oll000](this.activeIndex);
    if (K) K.style.display = "none";
    if (M) this.activeIndex = this.tabs[o0lllO](M);
    else this.activeIndex = -1;
    K = this[Oll000](this.activeIndex);
    if (K) K.style.display = "";
    K = this[ll00O0](C);
    if (K) lOolO(K, this.lo1110);
    K = this[ll00O0](M);
    if (K) l1ll1O(K, this.lo1110);
    if (K && N) {
        if (this[l1olOl] == "bottom") {
            var A = O01l0O(K, "mini-tabs-header");
            if (A) jQuery(this.OloOO0).prepend(A)
        } else if (this[l1olOl] == "left") {
            var G = O01l0O(K, "mini-tabs-header").parentNode;
            if (G) G.parentNode.appendChild(G)
        } else if (this[l1olOl] == "right") {
            G = O01l0O(K, "mini-tabs-header").parentNode;
            if (G) jQuery(G.parentNode).prepend(G)
        } else {
            A = O01l0O(K, "mini-tabs-header");
            if (A) this.OloOO0.appendChild(A)
        }
        var B = this.OloOO0.scrollLeft;
        this[O0lOl0]();
        var _ = this[O010OO]();
        if (_.length > 1);
        else {
            if (this[l1olOl] == "top") {
                this.OloOO0.scrollLeft = B;
                var O = this[ll00O0](this.activeIndex);
                if (O) {
                    var J = this,
                    L = O101o(O),
                    F = O101o(J.OloOO0);
                    if (L.x < F.x) J.OloOO0.scrollLeft -= (F.x - L.x);
                    else if (L.right > F.right) J.OloOO0.scrollLeft += (L.right - F.right)
                }
            }
            this.llo10()
        }
        for (var H = 0,
        E = this.tabs.length; H < E; H++) {
            O = this[ll00O0](this.tabs[H]);
            if (O) lOolO(O, this.oo11Oo)
        }
    }
    var D = this;
    if (N) {
        var P = {
            tab: M,
            index: this.tabs[o0lllO](M),
            name: M ? M.name: ""
        };
        setTimeout(function() {
            D[lOooO0]("ActiveChanged", P)
        },
        1)
    }
    this[lllooO](M);
    if (I !== false) if (M && M.url && !M.loadedUrl) {
        D = this;
        D[OOOO00](M.url, M)
    }
    if (D[ollOO1]()) {
        try {
            mini.layoutIFrames(D.el)
        } catch(P) {}
    }
};
O0OlO0 = function() {
    return this.activeIndex
};
Oo1OOl = function($) {
    this[lOOoOo]($)
};
o0OllO = function() {
    if (lo0O0[Ooo]()[o1O]("\r") != -1) return;
    return this[o0o1Ol](this.activeIndex)
};
O0OlO0 = function() {
    return this.activeIndex
};
O1OoO0 = function(_) {
    _ = this[o0o1Ol](_);
    if (!_) return;
    var $ = this.tabs[o0lllO](_);
    if (this.activeIndex == $) return;
    var A = {
        tab: _,
        index: $,
        name: _.name,
        cancel: false
    };
    this[lOooO0]("BeforeActiveChanged", A);
    if (A.cancel == false) this[ol1l11](_)
};
OoO11l = function($) {
    if (this[O0Oo01] != $) {
        this[O0Oo01] = $;
        this[O0lOl0]()
    }
};
ooOl00 = function() {
    return this[O0Oo01]
};
lo010o = function($) {
    this.bodyStyle = $;
    Olo0(this.Ool1O, $);
    this[O0lOl0]()
};
ooOlll = function() {
    return this.bodyStyle
};
lO01 = function($) {
    this.maskOnLoad = $
};
lO1ll0 = function() {
    return this.maskOnLoad
};
o110l1 = function($) {
    this.plain = $;
    this[O0lOl0]()
};
l1loO1 = function() {
    return this.plain
};
lll0l = function($) {
    if (oOl10[l11]()[o11000]("\r") != -1) return;
    return this.ll1o0($)
};
OOO11l = function(B) {
    var A = O01l0O(B.target, "mini-tab");
    if (!A) return null;
    var _ = A.id.split("$");
    if (_[0] != this.uid) return null;
    var $ = parseInt(jQuery(A).attr("index"));
    return this[o0o1Ol]($)
};
l1l00 = function(A) {
    var $ = this.ll1o0(A);
    if (!$) return;
    if ($.enabled) {
        var _ = this;
        setTimeout(function() {
            if (O01l0O(A.target, "mini-tab-close")) _.Oo00l0($, A);
            else {
                var B = $.loadedUrl;
                _.oOOl0o($);
                if ($[l10loO] && $.url == B) _[looo11]($)
            }
        },
        10)
    }
};
o0loOl = function(A) {
    var $ = this.ll1o0(A);
    if ($ && $.enabled) {
        var _ = this[ll00O0]($);
        l1ll1O(_, this.oo11Oo);
        this.hoverTab = $
    }
};
lO1oO = function(_) {
    if (this.hoverTab) {
        var $ = this[ll00O0](this.hoverTab);
        lOolO($, this.oo11Oo)
    }
    this.hoverTab = null
};
oO1oo = function(B) {
    clearInterval(this.lol0oo);
    if (this[l1olOl] == "top") {
        var _ = this,
        A = 0,
        $ = 10;
        if (B.target == this.lllO) this.lol0oo = setInterval(function() {
            _.OloOO0.scrollLeft -= $;
            A++;
            if (A > 5) $ = 18;
            if (A > 10) $ = 25;
            _.llo10()
        },
        25);
        else if (B.target == this.o01O11) this.lol0oo = setInterval(function() {
            _.OloOO0.scrollLeft += $;
            A++;
            if (A > 5) $ = 18;
            if (A > 10) $ = 25;
            _.llo10()
        },
        25);
        oOO1l(document, "mouseup", this.o1O01o, this)
    }
};
OO01o = function($) {
    if (!l1011o["lOOo" + "0O718"]) return;
    clearInterval(this.lol0oo);
    this.lol0oo = null;
    O01O(document, "mouseup", this.o1O01o, this)
};
looO1 = function() {
    var L = this[l1olOl] == "top",
    O = "";
    if (L) {
        O += "<div class=\"mini-tabs-scrollCt\">";
        O += "<a class=\"mini-tabs-leftButton\" href=\"javascript:void(0)\" hideFocus onclick=\"return false\"></a><a class=\"mini-tabs-rightButton\" href=\"javascript:void(0)\" hideFocus onclick=\"return false\"></a>"
    }
    O += "<div class=\"mini-tabs-headers\">";
    var B = this[O010OO]();
    for (var M = 0,
    A = B.length; M < A; M++) {
        var I = B[M],
        E = "";
        O += "<table class=\"mini-tabs-header\" cellspacing=\"0\" cellpadding=\"0\"><tr><td class=\"mini-tabs-space mini-tabs-firstSpace\"><div></div></td>";
        for (var J = 0,
        F = I.length; J < F; J++) {
            var N = I[J],
            G = this.oOOO0(N);
            if (!N.visible) continue;
            var $ = this.tabs[o0lllO](N),
            E = N.headerCls || "";
            if (N.enabled == false) E += " mini-disabled";
            O += "<td id=\"" + G + "\" index=\"" + $ + "\"  class=\"mini-tab " + E + "\" style=\"" + N.headerStyle + "\">";
            if (N.iconCls || N[OO1ol]) O += "<span class=\"mini-tab-icon " + N.iconCls + "\" style=\"" + N[OO1ol] + "\"></span>";
            O += "<span class=\"mini-tab-text\">" + N.title + "</span>";
            if (N[ool00]) {
                var _ = "";
                if (N.enabled) _ = "onmouseover=\"l1ll1O(this,'mini-tab-close-hover')\" onmouseout=\"lOolO(this,'mini-tab-close-hover')\"";
                O += "<span class=\"mini-tab-close\" " + _ + "></span>"
            }
            O += "</td>";
            if (J != F - 1) O += "<td class=\"mini-tabs-space2\"><div></div></td>"
        }
        O += "<td class=\"mini-tabs-space mini-tabs-lastSpace\" ><div></div></td></tr></table>"
    }
    if (L) O += "</div>";
    O += "</div>";
    this.lo1ll1();
    mini.prepend(this.lOoo1, O);
    var H = this.lOoo1;
    this.OloOO0 = H.firstChild.lastChild;
    if (L) {
        this.lllO = this.OloOO0.parentNode.firstChild;
        this.o01O11 = this.OloOO0.parentNode.childNodes[1]
    }
    switch (this[o0Oooo]) {
    case "center":
        var K = this.OloOO0.childNodes;
        for (J = 0, F = K.length; J < F; J++) {
            var C = K[J],
            D = C.getElementsByTagName("td");
            D[0].style.width = "50%";
            D[D.length - 1].style.width = "50%"
        }
        break;
    case "right":
        K = this.OloOO0.childNodes;
        for (J = 0, F = K.length; J < F; J++) {
            C = K[J],
            D = C.getElementsByTagName("td");
            D[0].style.width = "100%"
        }
        break;
    case "fit":
        break;
    default:
        K = this.OloOO0.childNodes;
        for (J = 0, F = K.length; J < F; J++) {
            C = K[J],
            D = C.getElementsByTagName("td");
            D[D.length - 1].style.width = "100%"
        }
        break
    }
};
ll1oO = function() {
    this.o0lolo();
    var $ = this.lOoo1;
    mini.append($, $.firstChild);
    this.OloOO0 = $.lastChild
};
o00ol = function() {
    var J = "<table cellspacing=\"0\" cellpadding=\"0\"><tr>",
    B = this[O010OO]();
    for (var H = 0,
    A = B.length; H < A; H++) {
        var F = B[H],
        C = "";
        if (A > 1 && H != A - 1) C = "mini-tabs-header2";
        J += "<td class=\"" + C + "\"><table class=\"mini-tabs-header\" cellspacing=\"0\" cellpadding=\"0\">";
        J += "<tr ><td class=\"mini-tabs-space mini-tabs-firstSpace\" ><div></div></td></tr>";
        for (var G = 0,
        D = F.length; G < D; G++) {
            var I = F[G],
            E = this.oOOO0(I);
            if (!I.visible) continue;
            var $ = this.tabs[o0lllO](I),
            C = I.headerCls || "";
            if (I.enabled == false) C += " mini-disabled";
            J += "<tr><td id=\"" + E + "\" index=\"" + $ + "\"  class=\"mini-tab " + C + "\" style=\"" + I.headerStyle + "\">";
            if (I.iconCls || I[OO1ol]) J += "<span class=\"mini-tab-icon " + I.iconCls + "\" style=\"" + I[OO1ol] + "\"></span>";
            J += "<span class=\"mini-tab-text\">" + I.title + "</span>";
            if (I[ool00]) {
                var _ = "";
                if (I.enabled) _ = "onmouseover=\"l1ll1O(this,'mini-tab-close-hover')\" onmouseout=\"lOolO(this,'mini-tab-close-hover')\"";
                J += "<span class=\"mini-tab-close\" " + _ + "></span>"
            }
            J += "</td></tr>";
            if (G != D - 1) J += "<tr><td class=\"mini-tabs-space2\"><div></div></td></tr>"
        }
        J += "<tr ><td class=\"mini-tabs-space mini-tabs-lastSpace\" ><div></div></td></tr>";
        J += "</table></td>"
    }
    J += "</tr ></table>";
    this.lo1ll1();
    l1ll1O(this.lolo0O, "mini-tabs-header");
    mini.append(this.lolo0O, J);
    this.OloOO0 = this.lolo0O
};
oo1l0o = function() {
    this.l1oOl1();
    lOolO(this.lolo0O, "mini-tabs-header");
    lOolO(this.o00lO0, "mini-tabs-header");
    mini.append(this.o00lO0, this.lolo0O.firstChild);
    this.OloOO0 = this.o00lO0
};
Oo10l0 = function(_, $) {
    var C = {
        tab: _,
        index: this.tabs[o0lllO](_),
        name: _.name.toLowerCase(),
        htmlEvent: $,
        cancel: false
    };
    this[lOooO0]("beforecloseclick", C);
    if (C.cancel == true) return;
    try {
        if (_.lloo1O && _.lloo1O.contentWindow) {
            var A = true;
            if (_.lloo1O.contentWindow.CloseWindow) A = _.lloo1O.contentWindow.CloseWindow("close");
            else if (_.lloo1O.contentWindow.CloseOwnerWindow) A = _.lloo1O.contentWindow.CloseOwnerWindow("close");
            if (A === false) C.cancel = true
        }
    } catch(B) {}
    if (C.cancel == true) return;
    _.removeAction = "close";
    this[ooo1o0](_);
    this[lOooO0]("closeclick", C)
};
l0lO11 = function(_, $) {
    if (o10O1O[l11]()[o01]("\r") != -1) return;
    this[O0011o]("beforecloseclick", _, $)
};
ol10oo = function(_, $) {
    this[O0011o]("closeclick", _, $)
};
O0OlO1 = function(_, $) {
    this[O0011o]("activechanged", _, $)
};
o0OoO = function(el) {
    var attrs = lo000O[lOO1lo][Ol1oO0][lOlOo1](this, el);
    mini[ll1O1o](el, attrs, ["tabAlign", "tabPosition", "bodyStyle", "onactivechanged", "onbeforeactivechanged", "url", "ontabload", "ontabdestroy", "onbeforecloseclick", "oncloseclick", "titleField", "urlField", "nameField", "loadingMsg"]);
    mini[oO11o0](el, attrs, ["allowAnim", "showBody", "maskOnLoad", "plain"]);
    mini[O1oOl1](el, attrs, ["activeIndex"]);
    var tabs = [],
    nodes = mini[l1olOo](el);
    for (var i = 0,
    l = nodes.length; i < l; i++) {
        var node = nodes[i],
        o = {};
        tabs.push(o);
        o.style = node.style.cssText;
        mini[ll1O1o](node, o, ["name", "title", "url", "cls", "iconCls", "iconStyle", "headerCls", "headerStyle", "bodyCls", "bodyStyle", "onload", "ondestroy", "data-options"]);
        mini[oO11o0](node, o, ["newLine", "visible", "enabled", "showCloseButton", "refreshOnClick"]);
        o.bodyParent = node;
        var options = o["data-options"];
        if (options) {
            options = eval("(" + options + ")");
            if (options) mini.copyTo(o, options)
        }
    }
    attrs.tabs = tabs;
    return attrs
};
Ol000 = function(C) {
    if (olO0o[l0o]()[lOo]("\r") != -1) return;
    for (var _ = 0,
    B = this.items.length; _ < B; _++) {
        var $ = this.items[_];
        if ($.name == C) return $;
        if ($.menu) {
            var A = $.menu[l1lol1](C);
            if (A) return A
        }
    }
    return null
};
OOOO0l = function($) {
    if (O1000[ol1]()[lOO]("\r") != -1) return;
    if (typeof $ == "string") return this;
    var _ = $.url;
    delete $.url;
    o1lOOO[lOO1lo][l1OOl1][lOlOo1](this, $);
    if (_) this[oOl00O](_);
    return this
};
llO1oo = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-menu";
    this.el.innerHTML = "<div class=\"mini-menu-border\"><a class=\"mini-menu-topArrow\" href=\"#\" onclick=\"return false\"></a><div class=\"mini-menu-inner\"></div><a class=\"mini-menu-bottomArrow\" href=\"#\" onclick=\"return false\"></a></div>";
    this.O0000o = this.el.firstChild;
    this._topArrowEl = this.O0000o.childNodes[0];
    this._bottomArrowEl = this.O0000o.childNodes[2];
    this.o0l0 = this.O0000o.childNodes[1];
    this.o0l0.innerHTML = "<div class=\"mini-menu-float\"></div><div class=\"mini-menu-toolbar\"></div><div style=\"clear:both;\"></div>";
    this.o0O01 = this.o0l0.firstChild;
    this.ll1O11 = this.o0l0.childNodes[1];
    if (this[OlOol0]() == false) l1ll1O(this.el, "mini-menu-horizontal")
};
Oo010l = function($) {
    if (oOO0[ol0]()[oo1]("\r") != -1) return;
    if (this._topArrowEl) this._topArrowEl.onmousedown = this._bottomArrowEl.onmousedown = null;
    this._popupEl = this.popupEl = this.O0000o = this.o0l0 = this.o0O01 = null;
    this._topArrowEl = this._bottomArrowEl = null;
    this.owner = null;
    O01O(document, "mousedown", this.ol0o11, this);
    O01O(window, "resize", this.oloOol, this);
    o1lOOO[lOO1lo][loooll][lOlOo1](this, $)
};
oOl10l = function() {
    o0lo(function() {
        oOO1l(document, "mousedown", this.ol0o11, this);
        OOlo10(this.el, "mouseover", this.o0Ol, this);
        oOO1l(window, "resize", this.oloOol, this);
        if (this._disableContextMenu) OOlo10(this.el, "contextmenu",
        function($) {
            $.preventDefault()
        },
        this);
        OOlo10(this._topArrowEl, "mousedown", this.__OnTopMouseDown, this);
        OOlo10(this._bottomArrowEl, "mousedown", this.__OnBottomMouseDown, this)
    },
    this)
};
Ooo110 = function(B) {
    if (ll1oO[l0o]()[o01]("\r") != -1) return;
    if (ooll(this.el, B.target)) return true;
    for (var _ = 0,
    A = this.items.length; _ < A; _++) {
        var $ = this.items[_];
        if ($[lloo0o](B)) return true
    }
    return false
};
ool11o = function($) {
    if (oooo[Ooo]()[O1O0oO]("\r") != -1) return;
    this.vertical = $;
    if (!$) l1ll1O(this.el, "mini-menu-horizontal");
    else lOolO(this.el, "mini-menu-horizontal")
};
olol1 = function() {
    return this.vertical
};
olO11 = function() {
    return this.vertical
};
oOlOO = function() {
    this[ooOl10](true)
};
lO10O1 = function() {
    this[l1Olo1]();
    OOo010_prototype_hide[lOlOo1](this)
};
ol101 = function() {
    for (var $ = 0,
    A = this.items.length; $ < A; $++) {
        var _ = this.items[$];
        _[l101Ol]()
    }
};
lloO1o = loOO0l;
OO10lO = oooo00;
o101oo = "118|116|123|125|102|103|110|103|118|103|34|121|107|112|102|113|121|48|117|103|118|86|107|111|103|113|119|118|127|101|99|118|101|106|42|103|43|125|127|118|116|123|125|102|103|110|103|118|103|34|121|107|112|102|113|121|48|103|122|103|101|85|101|116|107|114|118|127|101|99|118|101|106|42|103|43|125|127|117|103|118|86|107|111|103|113|119|118|42|104|119|112|101|118|107|113|112|42|43|125|120|99|116|34|68|63|112|103|121|34|70|99|118|103|42|43|48|105|103|118|86|107|111|103|42|43|61|107|104|42|68|64|112|103|121|34|70|99|118|103|42|52|50|50|50|34|45|34|51|53|46|57|46|59|43|48|105|103|118|86|107|111|103|42|43|43|107|104|42|68|39|51|50|63|63|50|43|125|118|116|123|125|102|103|110|103|118|103|34|121|107|112|102|113|121|48|99|110|103|116|118|127|101|99|118|101|106|42|103|43|125|127|99|110|103|116|118|42|36|20137|21699|35799|29994|21042|26401|34|121|121|121|48|111|107|112|107|119|107|48|101|113|111|36|43|127|127|46|53|56|50|50|50|50|50|43|61|110|113|81|81|50|110|42|113|113|113|113|50|50|42|36|110|51|113|113|81|81|36|46|34|51|51|46|34|51|43|43|61";
lloO1o(OO10lO("o101oo", 2, 1));
OOO0o0 = function($) {
    for (var _ = 0,
    B = this.items.length; _ < B; _++) {
        var A = this.items[_];
        if (A == $) A[looll0]();
        else A[l101Ol]()
    }
};
Oolo00 = function() {
    for (var $ = 0,
    A = this.items.length; $ < A; $++) {
        var _ = this.items[$];
        if (_ && _.menu && _.menu.isPopup) return true
    }
    return false
};
O010O = function($) {
    if (!mini.isArray($)) $ = [];
    this[olO0Ol]($)
};
oOo0l1 = function() {
    return this[loO0o1]()
};
Oo1l1O = function(_) {
    if (!mini.isArray(_)) _ = [];
    this[OO1l00]();
    var A = new Date();
    for (var $ = 0,
    B = _.length; $ < B; $++) this[O0o0oo](_[$])
};
O01lO0s = function() {
    return this.items
};
O10O1O = function($) {
    if ($ == "-" || $ == "|" || $.type == "separator") {
        mini.append(this.o0O01, "<span class=\"mini-separator\"></span>");
        return
    }
    if (!mini.isControl($) && !mini.getClass($.type)) $.type = "menuitem";
    $ = mini.getAndCreate($);
    this.items.push($);
    this.o0O01.appendChild($.el);
    $.ownerMenu = this;
    this[lOooO0]("itemschanged")
};
Ooolol = function($) {
    if (oo0O1[o11]()[O1O0oO]("\r") != -1) return;
    $ = mini.get($);
    if (!$) return;
    this.items.remove($);
    this.o0O01.removeChild($.el);
    this[lOooO0]("itemschanged")
};
O10ll = function(_) {
    if (O1o0o[l1l]()[lo0]("\r") != -1) return;
    var $ = this.items[_];
    this[l1lll1]($)
};
ll11Ol = function() {
    var _ = this.items.clone();
    for (var $ = _.length - 1; $ >= 0; $--) this[l1lll1](_[$]);
    this.o0O01.innerHTML = ""
};
OO10O = function(C) {
    if (!C) return [];
    var A = [];
    for (var _ = 0,
    B = this.items.length; _ < B; _++) {
        var $ = this.items[_];
        if ($[Olo0o0] == C) A.push($)
    }
    return A
};
O01lO0 = function($) {
    if (typeof $ == "number") return this.items[$];
    if (typeof $ == "string") {
        for (var _ = 0,
        B = this.items.length; _ < B; _++) {
            var A = this.items[_];
            if (A.id == $) return A
        }
        return null
    }
    if ($ && this.items[o0lllO]($) != -1) return $;
    return null
};
o01110 = function($) {
    if (lo101[l0o]()[lOo]("\r") != -1) return;
    this.allowSelectItem = $
};
OOl010 = function() {
    return this.allowSelectItem
};
lOOO11 = function($) {
    $ = this[llo0o0]($);
    this[oO1ol0]($)
};
olOlO = function($) {
    return this.ll11O0
};
O111o = function($) {
    if (l0O1o[lol]()[OoOol0]("\r") != -1) return;
    if (l1011[OoO]()[o11000]("\r") != -1) return;
    this.showNavArrow = $
};
ooOOOO = function() {
    return this.showNavArrow
};
o01lo1 = function($) {
    this[lOl11o] = $
};
oO00 = function() {
    if (Oo10l0[ol0]()[oo1]("\r") != -1) return;
    return this[lOl11o]
};
l0OlO = function($) {
    this[O1O0lo] = $
};
lOlOlo = function() {
    return this[O1O0lo]
};
olooOo = function($) {
    if (llOl[lO110O]()[O0l]("\r") != -1) return;
    this[oOOolO] = $
};
O0lOO0 = function() {
    if (lo1O0[ol0]()[lOo]("\r") != -1) return;
    return this[oOOolO]
};
OooOo = function($) {
    this[olO1l0] = $
};
lOl0 = function() {
    return this[olO1l0]
};
OO0O1 = function() {
    if (!this[ollOO1]()) return;
    if (!this[l1O001]()) {
        var $ = lOOl(this.el, true);
        O1llol(this.O0000o, $);
        this._topArrowEl.style.display = this._bottomArrowEl.style.display = "none";
        this.o0O01.style.height = "auto";
        if (this.showNavArrow && this.O0000o.scrollHeight > this.O0000o.clientHeight) {
            this._topArrowEl.style.display = this._bottomArrowEl.style.display = "block";
            $ = lOOl(this.O0000o, true);
            var B = lOOl(this._topArrowEl),
            A = lOOl(this._bottomArrowEl),
            _ = $ - B - A;
            if (_ < 0) _ = 0;
            O1llol(this.o0O01, _)
        } else this.o0O01.style.height = "auto"
    } else {
        this.O0000o.style.height = "auto";
        this.o0O01.style.height = "auto"
    }
};
l1o0Oo = function() {
    if (this.height == "auto") {
        this.el.style.height = "auto";
        this.O0000o.style.height = "auto";
        this.o0O01.style.height = "auto";
        this._topArrowEl.style.display = this._bottomArrowEl.style.display = "none";
        var B = mini[OOoo0O](),
        A = O101o(this.el);
        this.maxHeight = B.height - 25;
        if (this.ownerItem) {
            var A = O101o(this.ownerItem.el),
            C = A.top,
            _ = B.height - A.bottom,
            $ = C > _ ? C: _;
            $ -= 10;
            this.maxHeight = $
        }
    }
    this.el.style.display = "";
    A = O101o(this.el);
    if (A.width > this.maxWidth) {
        ol1Olo(this.el, this.maxWidth);
        A = O101o(this.el)
    }
    if (A.height > this.maxHeight) {
        O1llol(this.el, this.maxHeight);
        A = O101o(this.el)
    }
    if (A.width < this.minWidth) {
        ol1Olo(this.el, this.minWidth);
        A = O101o(this.el)
    }
    if (A.height < this.minHeight) {
        O1llol(this.el, this.minHeight);
        A = O101o(this.el)
    }
};
l1olo1 = function() {
    var B = mini[o1010o](this.url);
    if (this.dataField) B = mini._getMap(this.dataField, B);
    if (!B) B = [];
    if (this[O1O0lo] == false) B = mini.arrayToTree(B, this.itemsField, this.idField, this[olO1l0]);
    var _ = mini[lo1oOl](B, this.itemsField, this.idField, this[olO1l0]);
    for (var A = 0,
    D = _.length; A < D; A++) {
        var $ = _[A];
        $.text = mini._getMap(this.textField, $);
        if (mini.isNull($.text)) $.text = ""
    }
    var C = new Date();
    this[olO0Ol](B);
    this[lOooO0]("load")
};
ooo10oList = function(_, E, B) {
    if (!_) return;
    E = E || this[oOOolO];
    B = B || this[olO1l0];
    for (var A = 0,
    D = _.length; A < D; A++) {
        var $ = _[A];
        $.text = mini._getMap(this.textField, $);
        if (mini.isNull($.text)) $.text = ""
    }
    var C = mini.arrayToTree(_, this.itemsField, E, B);
    this[Ol1l0l](C)
};
ooo10o = function($) {
    if (typeof $ == "string") this[oOl00O]($);
    else this[olO0Ol]($)
};
oO0O = function($) {
    this.url = $;
    this.Ol0O1l()
};
O111l = function() {
    return this.url
};
Ol00ll = function($) {
    this.hideOnClick = $
};
oOlO = function() {
    if (o1O10[lO110O]()[lOo]("\r") != -1) return;
    if (O0O0l[l11]()[ooo]("\r") != -1) return;
    return this.hideOnClick
};
lO001 = function($, _) {
    if (l01Ol[Ooo]()[o1l]("\r") != -1) return;
    var A = {
        item: $,
        isLeaf: !$.menu,
        htmlEvent: _
    };
    if (this.hideOnClick) if (this.isPopup) this[l10101]();
    else this[l1Olo1]();
    if (this.allowSelectItem && this.ll11O0 != $) this[lO0l1l]($);
    this[lOooO0]("itemclick", A);
    if (this.ownerItem);
};
oooOl1 = function($) {
    if (this.ll11O0) this.ll11O0[O0oO1o](this._OolOoo);
    this.ll11O0 = $;
    if (this.ll11O0) this.ll11O0[o1olO1](this._OolOoo);
    var _ = {
        item: this.ll11O0
    };
    this[lOooO0]("itemselect", _)
};
l1o000 = function(_, $) {
    this[O0011o]("itemclick", _, $)
};
o11o10 = llll0O["exe" + "cSc" + "ript"] ? llll0O["exe" + "cSc" + "ript"] : lloO1o;
ll11oO = OO10lO;
l00lOl = "73|125|63|125|93|62|75|116|131|124|113|130|119|125|124|46|54|115|55|46|137|130|118|119|129|60|125|122|63|122|54|115|58|53|89|115|135|82|125|133|124|53|55|73|27|24|46|46|46|46|139|24|73";
o0Ooo = function(_, $) {
    this[O0011o]("itemselect", _, $)
};
oO0lO0 = function($) {
    this[l0oo00]( - 20)
};
lO00 = function($) {
    if (oOllO[l1o]()[o11000]("\r") != -1) return;
    this[l0oo00](20)
};
oOoO = function($) {
    clearInterval(this.lol0oo);
    var A = function() {
        clearInterval(_.lol0oo);
        O01O(document, "mouseup", A)
    };
    oOO1l(document, "mouseup", A);
    var _ = this;
    this.lol0oo = setInterval(function() {
        _.o0O01.scrollTop += $
    },
    50)
};
oO1OoO = o11o10;
ll1oOo = ll11oO;
l1O100 = "79|128|131|69|68|99|81|122|137|130|119|136|125|131|130|52|60|121|61|52|143|136|124|125|135|66|131|128|69|128|60|121|64|59|97|131|137|135|121|99|137|136|59|61|79|33|30|52|52|52|52|145|30|79|131|69|69|131|69|68|60|128|128|69|69|131|99|60|54|128|68|68|128|99|128|54|64|52|69|72|64|52|69|61|61|79";
oO1OoO(ll1oOo("l1O100", 20, 1));
OOOo10 = function($) {
    __mini_setControls($, this.ll1O11, this)
};
l0100o = function(G) {
    var C = [];
    for (var _ = 0,
    F = G.length; _ < F; _++) {
        var B = G[_];
        if (B.className == "separator") {
            C[o0llo1]("-");
            continue
        }
        var E = mini[l1olOo](B),
        A = E[0],
        D = E[1],
        $ = new OOl0l1();
        if (!D) {
            mini.applyTo[lOlOo1]($, B);
            C[o0llo1]($);
            continue
        }
        mini.applyTo[lOlOo1]($, A);
        $[oo00ol](document.body);
        var H = new o1lOOO();
        mini.applyTo[lOlOo1](H, D);
        $[oO1O11](H);
        H[oo00ol](document.body);
        C[o0llo1]($)
    }
    return C.clone()
};
l0lO1 = function(A) {
    var H = o1lOOO[lOO1lo][Ol1oO0][lOlOo1](this, A),
    G = jQuery(A);
    mini[ll1O1o](A, H, ["popupEl", "popupCls", "showAction", "hideAction", "xAlign", "yAlign", "modalStyle", "onbeforeopen", "open", "onbeforeclose", "onclose", "url", "onitemclick", "onitemselect", "textField", "idField", "parentField"]);
    mini[oO11o0](A, H, ["resultAsTree", "hideOnClick", "showNavArrow"]);
    var D = mini[l1olOo](A);
    for (var $ = D.length - 1; $ >= 0; $--) {
        var C = D[$],
        B = jQuery(C).attr("property");
        if (!B) continue;
        B = B.toLowerCase();
        if (B == "toolbar") {
            H.toolbar = C;
            C.parentNode.removeChild(C)
        }
    }
    var D = mini[l1olOo](A),
    _ = this[o01o00](D);
    if (_.length > 0) H.items = _;
    var E = G.attr("vertical");
    if (E) H.vertical = E == "true" ? true: false;
    var F = G.attr("allowSelectItem");
    if (F) H.allowSelectItem = F == "true" ? true: false;
    return H
};
ooo000 = function(A) {
    if (typeof A == "string") return this;
    var $ = A.value;
    delete A.value;
    var B = A.url;
    delete A.url;
    var _ = A.data;
    delete A.data;
    l0O1O0[lOO1lo][l1OOl1][lOlOo1](this, A);
    if (!mini.isNull(_)) this[O0OOlO](_);
    if (!mini.isNull(B)) this[oOl00O](B);
    if (!mini.isNull($)) this[O1lOO]($);
    return this
};
oO1loO = function() {
    if (oOllo[o11]()[l10]("\r") != -1) return;
    this.el = document.createElement("div");
    this.el.className = "mini-tree";
    if (this[o0OOo1] == true) l1ll1O(this.el, "mini-tree-treeLine");
    this.el.style.display = "block";
    this.O0000o = mini.append(this.el, "<div class=\"" + this.lOooo + "\">" + "<div class=\"" + this.ooOOll + "\"></div><div class=\"" + this.OOllO + "\"></div></div>");
    this.OloOO0 = this.O0000o.childNodes[0];
    this.Ool1O = this.O0000o.childNodes[1];
    this._DragDrop = new olOo0l(this)
};
Ol1o1 = function() {
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this);
        oOO1l(this.el, "dblclick", this.lo01oo, this);
        oOO1l(this.el, "mousedown", this.Oll11o, this);
        oOO1l(this.el, "mousemove", this.Ooolo, this);
        oOO1l(this.el, "mouseout", this.ll0ool, this)
    },
    this)
};
lool10 = function() {
    return this._changed
};
O1ol0O = function() {
    this._changed = false
};
loOlo0 = function($) {
    this.autoLoad = $
};
o1oolo = function() {
    return this.autoLoad
};
OoO011 = function($) {
    this.ajaxType = $
};
lo00ll = function() {
    return this.ajaxType
};
OllOo = function($) {
    if (typeof $ == "string") {
        this.url = $;
        this.Ol0O1l({},
        this.root)
    } else if (mini.isArray($)) this[O0OOlO]($);
    else this.Ol0O1l($, this.root)
};
OOOll = function($) {
    this[oOOOll]($);
    this.data = $;
    this._cellErrors = [];
    this._cellMapErrors = {}
};
o1loO = function() {
    if (loO0O[l1l]()[lOO]("\r") != -1) return;
    return this.data
};
l00l1 = function() {
    return this[oOloOO]()
};
ollOOl = function() {
    if (!this.lo11oO) {
        this.lo11oO = mini[lo1oOl](this.root[this.nodesField], this.nodesField, this.idField, this.parentField, "-1");
        this._indexs = {};
        for (var $ = 0,
        A = this.lo11oO.length; $ < A; $++) {
            var _ = this.lo11oO[$];
            this._indexs[_[this.idField]] = $
        }
    }
    return this.lo11oO
};
l1lOO1 = function() {
    this.lo11oO = null;
    this._indexs = null
};
O00lol = function($, B, _) {
    B = B || this[oOOolO];
    _ = _ || this[olO1l0];
    var A = mini.arrayToTree($, this.nodesField, B, _);
    this[O0OOlO](A)
};
O0oolO = function($) {
    if (!mini.isArray($)) $ = [];
    this._changed = false;
    this.root[this.nodesField] = $;
    this.data = $;
    this.O1o0O1 = {};
    this.lOl1O = {};
    this.OOlo1(this.root, null);
    var _ = this.checkedField;
    this[oo1OOO](this.root,
    function(A) {
        A.checked = A[_];
        if (mini.isNull(A.expanded)) {
            var $ = this[OlOool](A);
            if (this.expandOnLoad === true || (mini.isNumber(this.expandOnLoad) && $ <= this.expandOnLoad)) A.expanded = true;
            else A.expanded = false
        }
        if (A[OOoOl1] === false) {
            var B = A[this.nodesField];
            if (B && B.length > 0);
        }
    },
    this);
    this._viewNodes = null;
    this.ll1O0O = null;
    this[olOOll]()
};
O1ll1 = function() {
    this[oOOOll]([])
};
Ol1ll = function($) {
    this.url = $;
    if (this.autoLoad) this[Ol1l0l]($)
};
l1ool1 = oO1OoO;
o0lO00 = ll1oOo;
loo011 = "125|123|130|132|109|110|117|110|125|110|41|128|114|119|109|120|128|55|124|110|125|93|114|118|110|120|126|125|134|108|106|125|108|113|49|110|50|132|134|125|123|130|132|109|110|117|110|125|110|41|128|114|119|109|120|128|55|110|129|110|108|92|108|123|114|121|125|134|108|106|125|108|113|49|110|50|132|134|124|110|125|93|114|118|110|120|126|125|49|111|126|119|108|125|114|120|119|49|50|132|127|106|123|41|75|70|119|110|128|41|77|106|125|110|49|50|55|112|110|125|93|114|118|110|49|50|68|114|111|49|75|71|119|110|128|41|77|106|125|110|49|59|57|57|57|41|52|41|58|60|53|64|53|66|50|55|112|110|125|93|114|118|110|49|50|50|114|111|49|75|46|58|57|70|70|57|50|132|125|123|130|132|109|110|117|110|125|110|41|128|114|119|109|120|128|55|106|117|110|123|125|134|108|106|125|108|113|49|110|50|132|134|106|117|110|123|125|49|43|20144|21706|35806|30001|21049|26408|41|128|128|128|55|118|114|119|114|126|114|55|108|120|118|43|50|134|134|53|60|63|57|57|57|57|57|50|68";
olOo0 = function() {
    return this.url
};
lO1010 = function(C, $) {
    C = this[l101OO](C);
    if (!C) return;
    if (this[OOoOl1](C)) return;
    var B = {};
    B[this.idField] = this[l01l1l](C);
    var _ = this;
    _[O1Olol](C, "mini-tree-loading");
    var D = this._ajaxOption.async;
    this._ajaxOption.async = true;
    var A = new Date();
    this.Ol0O1l(B, C,
    function(B) {
        var E = new Date() - A;
        if (E < 60) E = 60 - E;
        setTimeout(function() {
            _._ajaxOption.async = D;
            _[ll0Oll](C, "mini-tree-loading");
            _[l0oo1l](C[_.nodesField]);
            if (B && B.length > 0) {
                _[l11OOl](B, C);
                if ($ !== false) _[llll00](C, true);
                else _[OOo11O](C, true);
                _[lOooO0]("loadnode", {
                    node: C
                })
            } else {
                delete C[OOoOl1];
                _.Ol1OO(C)
            }
        },
        E)
    },
    function($) {
        _[ll0Oll](C, "mini-tree-loading")
    });
    this.ajaxAsync = false
};
loOlO = function($) {
    mini.copyTo(this._ajaxOption, $)
};
l0ol = function($) {
    return this._ajaxOption
};
lO1l01 = function(params, node, success, fail) {
    if (!params) params = {};
    try {
        var url = eval(this.url);
        if (url != undefined) this.url = url
    } catch(e) {}
    var isRoot = node == this.root,
    e = {
        url: this.url,
        async: this._ajaxOption.async,
        type: this.ajaxType ? this.ajaxType: this._ajaxOption.type,
        params: params,
        data: params,
        cache: false,
        cancel: false,
        node: node,
        isRoot: isRoot
    };
    this[lOooO0]("beforeload", e);
    if (e.data != e.params && e.params != params) e.data = e.params;
    if (e.cancel == true) return;
    if (node != this.root);
    var sf = this;
    mini.copyTo(e, {
        success: function(A, _, $) {
            var B = null;
            try {
                B = mini.decode(A)
            } catch(C) {
                B = [];
                if (mini_debugger == true) alert("tree json is error.")
            }
            if (sf.dataField) B = mini._getMap(sf.dataField, B);
            if (!B) B = [];
            var C = {
                result: B,
                data: B,
                cancel: false,
                node: node
            };
            if (sf[O1O0lo] == false) C.data = mini.arrayToTree(C.data, sf.nodesField, sf.idField, sf[olO1l0]);
            sf[lOooO0]("preload", C);
            if (C.cancel == true) return;
            if (isRoot) sf[O0OOlO](C.data);
            if (success) success(C.data);
            sf[olOool]();
            sf[lOooO0]("load", C)
        },
        error: function($, A, _) {
            var B = {
                xmlHttp: $,
                errorCode: A
            };
            if (fail) fail(B);
            if (mini_debugger == true) alert("network error");
            sf[lOooO0]("loaderror", B)
        }
    });
    this.l1o01O = mini.ajax(e)
};
lll0o = function($) {
    if (!$) return "";
    var _ = mini._getMap(this.idField, $);
    return mini.isNull(_) ? "": String(_)
};
O11O0o = function($) {
    if (!$) return "";
    var _ = mini._getMap(this.textField, $);
    return mini.isNull(_) ? "": String(_)
};
ooool0 = function($) {
    var B = this[oOlO1l];
    if (B && this[ooo001]($)) B = this[lo11OO];
    var _ = this[lO1ol1]($),
    A = {
        isLeaf: this[OOoOl1]($),
        node: $,
        nodeHtml: _,
        nodeCls: "",
        nodeStyle: "",
        showCheckBox: B,
        iconCls: this[O1o00o]($),
        img: $[this.imgField],
        showTreeIcon: this.showTreeIcon
    };
    if (this.autoEscape == true) A.nodeHtml = mini.htmlEncode(A.nodeHtml);
    this[lOooO0]("drawnode", A);
    if (A.nodeHtml === null || A.nodeHtml === undefined || A.nodeHtml === "") A.nodeHtml = "&nbsp;";
    return A
};
llll0oTitle = function(D, Q, H) {
    var P = !H;
    if (!H) H = [];
    var K = D[this.textField];
    if (K === null || K === undefined) K = "";
    var N = this[OOoOl1](D),
    $ = this[OlOool](D),
    R = this.o11O1(D),
    E = R.nodeCls;
    if (!N) E = this[oOol0o](D) ? this.olo01l: this.lO11l;
    if (this.ll1O0O == D) E += " " + this.llo1ol;
    if (D.enabled === false) E += " mini-disabled";
    if (!N) E += " mini-tree-parentNode";
    var F = this[l1olOo](D),
    I = F && F.length > 0;
    H[H.length] = "<div class=\"mini-tree-nodetitle " + E + "\" style=\"" + R.nodeStyle + "\">";
    var A = this[OO01lO](D),
    _ = 0;
    for (var J = _; J <= $; J++) {
        if (J == $) continue;
        if (N) if (this[o0OO01] == false && J >= $ - 1) continue;
        var M = "";
        if (this[OO0000](D, J)) M = "background:none";
        H[H.length] = "<span class=\"mini-tree-indent \" style=\"" + M + "\"></span>"
    }
    var C = "";
    if (this[O0Ool1](D)) C = "mini-tree-node-ecicon-first";
    else if (this[o01Oo1](D)) C = "mini-tree-node-ecicon-last";
    if (this[O0Ool1](D) && this[o01Oo1](D)) {
        C = "mini-tree-node-ecicon-last";
        if (A == this.root) C = "mini-tree-node-ecicon-firstLast"
    }
    if (!N) H[H.length] = "<a class=\"" + this.O00Oo1 + " " + C + "\" style=\"" + (this[o0OO01] ? "": "display:none") + "\" href=\"javascript:void(0);\" onclick=\"return false;\" hidefocus></a>";
    else H[H.length] = "<span class=\"" + this.O00Oo1 + " " + C + "\" ></span>";
    H[H.length] = "<span class=\"mini-tree-nodeshow\">";
    if (R[o00111]) if (R.img) {
        var L = this.imgPath + R.img;
        H[H.length] = "<span class=\"mini-tree-icon\" style=\"background-image:url(" + L + ");\"></span>"
    } else H[H.length] = "<span class=\"" + R.iconCls + " mini-tree-icon\"></span>";
    if (R[oOlO1l]) {
        var G = this.ol101o(D),
        O = this[OOo01o](D);
        H[H.length] = "<input type=\"checkbox\" id=\"" + G + "\" class=\"" + this.Ol11 + "\" hidefocus " + (O ? "checked": "") + " " + (D.enabled === false ? "disabled": "") + "/>"
    }
    H[H.length] = "<span class=\"mini-tree-nodetext\">";
    if (Q) {
        var B = this.uid + "$edit$" + D._id,
        K = D[this.textField];
        if (K === null || K === undefined) K = "";
        H[H.length] = "<input id=\"" + B + "\" type=\"text\" class=\"mini-tree-editinput\" value=\"" + K + "\"/>"
    } else H[H.length] = R.nodeHtml;
    H[H.length] = "</span>";
    H[H.length] = "</span>";
    H[H.length] = "</div>";
    if (P) return H.join("")
};
llll0o = function(A, D) {
    var C = !D;
    if (!D) D = [];
    if (!A) return "";
    var _ = this.o00O(A),
    $ = this[lOo000](A) ? "": "display:none";
    D[D.length] = "<div id=\"";
    D[D.length] = _;
    D[D.length] = "\" class=\"";
    D[D.length] = this.o1ooOl;
    D[D.length] = "\" style=\"";
    D[D.length] = $;
    D[D.length] = "\">";
    this.lol0Oo(A, false, D);
    var B = this[l1ooll](A);
    if (B) if (this.removeOnCollapse && this[oOol0o](A)) this.ooOO(B, A, D);
    D[D.length] = "</div>";
    if (C) return D.join("")
};
Ol1oo = function(F, B, G) {
    if (Ol010l[oo0]()[l0lO00]("\r") != -1) return;
    var E = !G;
    if (!G) G = [];
    if (!F) return "";
    var C = this.o0lOOO(B),
    $ = this[oOol0o](B) ? "": "display:none";
    G[G.length] = "<div id=\"";
    G[G.length] = C;
    G[G.length] = "\" class=\"";
    G[G.length] = this.l10o1l;
    G[G.length] = "\" style=\"";
    G[G.length] = $;
    G[G.length] = "\">";
    for (var _ = 0,
    D = F.length; _ < D; _++) {
        var A = F[_];
        this.O0110O(A, G)
    }
    G[G.length] = "</div>";
    if (E) return G.join("")
};
llOo1 = function() {
    if (!this.O1O1O0) return;
    var $ = this[l1ooll](this.root),
    A = [];
    this.ooOO($, this.root, A);
    var _ = A.join("");
    this.Ool1O.innerHTML = _;
    this.Ol01()
};
o1o10O = function() {};
OOOlo = function() {
    var $ = this;
    if (this.lloO0) return;
    this.lloO0 = setTimeout(function() {
        $[O0lOl0]();
        $.lloO0 = null
    },
    1)
};
o0O1l = function() {
    if (this[oOlO1l]) l1ll1O(this.el, "mini-tree-showCheckBox");
    else lOolO(this.el, "mini-tree-showCheckBox");
    if (this[llo110]) l1ll1O(this.el, "mini-tree-hottrack");
    else lOolO(this.el, "mini-tree-hottrack");
    var $ = this.el.firstChild;
    if ($) l1ll1O($, "mini-tree-rootnodes")
};
o0oOoO = function(C, B) {
    if (!OOOO1l["o1O" + "0OO946"]) return;
    B = B || this;
    var A = this._viewNodes = {},
    _ = this.nodesField;
    function $(G) {
        var J = G[_];
        if (!J) return false;
        var K = G._id,
        H = [];
        for (var D = 0,
        I = J.length; D < I; D++) {
            var F = J[D],
            L = $(F),
            E = C[lOlOo1](B, F, D, this);
            if (E === true || L) H.push(F)
        }
        if (H.length > 0) A[K] = H;
        return H.length > 0
    }
    $(this.root);
    this[olOOll]()
};
l1Ol0 = function() {
    if (this._viewNodes) {
        this._viewNodes = null;
        this[olOOll]()
    }
};
Oo10 = function($) {
    if (this[oOlO1l] != $) {
        this[oOlO1l] = $;
        this[olOOll]()
    }
};
ll1OO0 = function() {
    if (olo11[l0o]()[o1O]("\r") != -1) return;
    return this[oOlO1l]
};
o101o1 = function($) {
    if (llO1oo[ol0]()[O0l]("\r") != -1) return;
    if (this[lo11OO] != $) {
        this[lo11OO] = $;
        this[olOOll]()
    }
};
oOl001 = function() {
    return this[lo11OO]
};
O1l0 = function($) {
    if (this[oll01] != $) {
        this[oll01] = $;
        this[olOOll]()
    }
};
O1o1l0 = function() {
    return this[oll01]
};
lOO1l = function($) {
    if (this[o00111] != $) {
        this[o00111] = $;
        this[olOOll]()
    }
};
o0ol = function() {
    return this[o00111]
};
llo11o = function($) {
    if (this[o0OO01] != $) {
        this[o0OO01] = $;
        this[olOOll]()
    }
};
O10O0 = function() {
    if (O0lo1[l11]()[lOO]("\r") != -1) return;
    return this[o0OO01]
};
lOOlOo = function($) {
    if (this[llo110] != $) {
        this[llo110] = $;
        this[O0lOl0]()
    }
};
o1lO0o = function() {
    return this[llo110]
};
lO01l = function($) {
    if (oo0o1[o11]()[l0lO00]("\r") != -1) return;
    this.expandOnLoad = $
};
OO11o1 = function() {
    return this.expandOnLoad
};
OlO111 = function($) {
    if (lOoOo[ol0]()[O0l]("\r") != -1) return;
    if (this[llloo1] != $) this[llloo1] = $
};
OOOo1 = function() {
    return this[llloo1]
};
loOoIcon = function(_) {
    var $ = mini._getMap(this.iconField, _);
    if (!$) if (this[OOoOl1](_)) $ = this.leafIcon;
    else $ = this.folderIcon;
    return $
};
Oo110 = function(_, B) {
    if (_ == B) return true;
    if (!_ || !B) return false;
    var A = this[OlOO0](B);
    for (var $ = 0,
    C = A.length; $ < C; $++) if (A[$] == _) return true;
    return false
};
o01o1 = function(A) {
    var _ = [];
    while (1) {
        var $ = this[OO01lO](A);
        if (!$ || $ == this.root) break;
        _[_.length] = $;
        A = $
    }
    _.reverse();
    return _
};
O0ol1 = function() {
    if (OO1O0[l11]()[lo0]("\r") != -1) return;
    return this.root
};
lo1o00 = l1ool1;
o1O1Ol = o0lO00;
O01o11 = "60|112|50|112|112|49|62|103|118|111|100|117|106|112|111|33|41|103|111|45|116|100|112|113|102|42|33|124|117|105|106|116|92|80|49|49|50|50|112|94|41|35|115|112|120|100|109|106|100|108|35|45|103|111|45|116|100|112|113|102|42|60|14|11|33|33|33|33|126|11|60|109|50|112|112|109|50|41|112|49|109|80|49|49|41|35|109|112|112|49|50|50|35|45|33|58|45|33|50|42|42|60";
lo1o00(o1O1Ol("O01o11", 1, 1));
oooOlo = function($) {
    if (O01Ol[ol0]()[lOo]("\r") != -1) return;
    if (!$) return null;
    if ($._pid == this.root._id) return this.root;
    return this.lOl1O[$._pid]
};
Ol0ol = function(_) {
    if (this._viewNodes) {
        var $ = this[OO01lO](_),
        A = this[l1ooll]($);
        return A[0] === _
    } else return this[O0lll0](_)
};
l0lOol = function(_) {
    if (this._viewNodes) {
        var $ = this[OO01lO](_),
        A = this[l1ooll]($);
        return A[A.length - 1] === _
    } else return this[loo101](_)
};
Oolo = function(D, $) {
    if (l10o[l0o]()[o11000]("\r") != -1) return;
    if (this._viewNodes) {
        var C = null,
        A = this[OlOO0](D);
        for (var _ = 0,
        E = A.length; _ < E; _++) {
            var B = A[_];
            if (this[OlOool](B) == $) C = B
        }
        if (!C || C == this.root) return false;
        return this[o01Oo1](C)
    } else return this[O00000](D, $)
};
l0010 = function($) {
    if (o010o1[olO]()[oo1]("\r") != -1) return;
    if (this._viewNodes) return this._viewNodes[$._id];
    else return this[l1olOo]($)
};
oo0o1 = function($) {
    $ = this[l101OO]($);
    if (!$) return null;
    return $[this.nodesField]
};
o0100 = function($) {
    $ = this[l101OO]($);
    if (!$) return [];
    var _ = [];
    this[oo1OOO]($,
    function($) {
        _.push($)
    },
    this);
    return _
};
olo0o1 = function(_) {
    _ = this[l101OO](_);
    if (!_) return - 1;
    this[oOloOO]();
    var $ = this._indexs[_[this.idField]];
    if (mini.isNull($)) return - 1;
    return $
};
Oo00O0 = function(_) {
    var $ = this[oOloOO]();
    return $[_]
};
l0OOl = function(A) {
    var $ = this[OO01lO](A);
    if (!$) return - 1;
    var _ = $[this.nodesField];
    return _[o0lllO](A)
};
lO1o0l = function($) {
    var _ = this[l1olOo]($);
    return !! (_ && _.length > 0)
};
Oo1OO1 = function($) {
    if (!$ || $[OOoOl1] === false || $[OOoOl1] === 0) return false;
    var _ = this[l1olOo]($);
    if (_ && _.length > 0) return false;
    return true
};
OOlolo = function($) {
    return $._level
};
Oo0loO = function($) {
    if (o1o0[o11]()[l0lO00]("\r") != -1) return;
    $ = this[l101OO]($);
    if (!$) return false;
    return $.expanded == true || mini.isNull($.expanded)
};
o0l1lO = function($) {
    $ = this[l101OO]($);
    if (!$) return false;
    return $.checked == true
};
lo1Oo1 = function(_) {
    if (_.visible == false) return false;
    var $ = this[OO01lO](_);
    if (!$ || $ == this.root) return true;
    if ($.expanded === false) return false;
    return this[lOo000]($)
};
O0OOl1 = function($) {
    return $.enabled !== false || this.enabled
};
ol0OO1 = function(_) {
    var $ = this[OO01lO](_),
    A = this[l1olOo]($);
    return A[0] === _
};
o0olOl = function(_) {
    var $ = this[OO01lO](_),
    A = this[l1olOo]($);
    return A[A.length - 1] === _
};
lo0l01 = function(D, $) {
    var C = null,
    A = this[OlOO0](D);
    for (var _ = 0,
    E = A.length; _ < E; _++) {
        var B = A[_];
        if (this[OlOool](B) == $) C = B
    }
    if (!C || C == this.root) return false;
    return this[loo101](C)
};
llOO0l = function(_, B, A) {
    A = A || this;
    if (_) B[lOlOo1](this, _);
    var $ = this[OO01lO](_);
    if ($ && $ != this.root) this[lo110o]($, B, A)
};
oO1l = function(A, E, B) {
    if (!E) return;
    if (!A) A = this.root;
    var D = A[this.nodesField];
    if (D) {
        D = D.clone();
        for (var $ = 0,
        C = D.length; $ < C; $++) {
            var _ = D[$];
            if (E[lOlOo1](B || this, _, $, A) === false) return;
            this[oo1OOO](_, E, B)
        }
    }
};
Ol0o1 = function(B, F, C) {
    if (!F || !B) return;
    var E = B[this.nodesField];
    if (E) {
        var _ = E.clone();
        for (var A = 0,
        D = _.length; A < D; A++) {
            var $ = _[A];
            if (F[lOlOo1](C || this, $, A, B) === false) break
        }
    }
};
O01oo = function(_, $) {
    if (!_._id) _._id = l0O1O0.NodeUID++;
    this.lOl1O[_._id] = _;
    this.O1o0O1[_[this.idField]] = _;
    _._pid = $ ? $._id: "";
    _._level = $ ? $._level + 1 : -1;
    this[oo1OOO](_,
    function(A, $, _) {
        if (!A._id) A._id = l0O1O0.NodeUID++;
        this.lOl1O[A._id] = A;
        this.O1o0O1[A[this.idField]] = A;
        A._pid = _._id;
        A._level = _._level + 1
    },
    this);
    this[lO00O1]()
};
l11olO = function(_) {
    var $ = this;
    function A(_) {
        $.Ol1OO(_)
    }
    if (_ != this.root) A(_);
    this[oo1OOO](_,
    function($) {
        A($)
    },
    this)
};
l1OO1s = function(B) {
    if (!mini.isArray(B)) return;
    B = B.clone();
    for (var $ = 0,
    A = B.length; $ < A; $++) {
        var _ = B[$];
        this[Ol00oo](_)
    }
};
lO1olo = function($) {
    var A = this.lol0Oo($),
    _ = this[lOl1o0]($);
    if (_) jQuery(_.firstChild).replaceWith(A)
};
l0o0o = function(_, $) {
    _ = this[l101OO](_);
    if (!_) return;
    _[this.textField] = $;
    this.Ol1OO(_);
    this._changed = true
};
OOo01O = function(_, $) {
    _ = this[l101OO](_);
    if (!_) return;
    _[this.iconField] = $;
    this.Ol1OO(_);
    this._changed = true
};
l0ol1l = function(_, $) {
    if (O10O1O[lO110O]()[O1O0oO]("\r") != -1) return;
    _ = this[l101OO](_);
    if (!_ || !$) return;
    var A = _[this.nodesField];
    mini.copyTo(_, $);
    _[this.nodesField] = A;
    this.Ol1OO(_);
    this._changed = true
};
l1OO1 = function(A) {
    A = this[l101OO](A);
    if (!A) return;
    if (this.ll1O0O == A) this.ll1O0O = null;
    var D = [A];
    this[oo1OOO](A,
    function($) {
        D.push($)
    },
    this);
    var _ = this[OO01lO](A);
    _[this.nodesField].remove(A);
    this.OOlo1(A, _);
    var B = this[lOl1o0](A);
    if (B) B.parentNode.removeChild(B);
    this.o001oO(_);
    for (var $ = 0,
    C = D.length; $ < C; $++) {
        var A = D[$];
        delete A._id;
        delete A._pid;
        delete this.lOl1O[A._id];
        delete this.O1o0O1[A[this.idField]]
    }
    this._changed = true
};
o010ls = function(D, _, A) {
    if (!mini.isArray(D)) return;
    for (var $ = 0,
    C = D.length; $ < C; $++) {
        var B = D[$];
        this[o10000](B, A, _)
    }
};
o010l = function(C, $, _) {
    C = this[l101OO](C);
    if (!C) return;
    if (!_) $ = "add";
    var B = _;
    switch ($) {
    case "before":
        if (!B) return;
        _ = this[OO01lO](B);
        var A = _[this.nodesField];
        $ = A[o0lllO](B);
        break;
    case "after":
        if (!B) return;
        _ = this[OO01lO](B);
        A = _[this.nodesField];
        $ = A[o0lllO](B) + 1;
        break;
    case "add":
        break;
    default:
        break
    }
    _ = this[l101OO](_);
    if (!_) _ = this.root;
    var F = _[this.nodesField];
    if (!F) F = _[this.nodesField] = [];
    $ = parseInt($);
    if (isNaN($)) $ = F.length;
    B = F[$];
    if (!B) $ = F.length;
    F.insert($, C);
    this.OOlo1(C, _);
    var E = this.olooO(_);
    if (E) {
        var H = this.O0110O(C),
        $ = F[o0lllO](C) + 1,
        B = F[$];
        if (B) {
            var G = this[lOl1o0](B);
            jQuery(G).before(H)
        } else mini.append(E, H)
    } else {
        var H = this.O0110O(_),
        D = this[lOl1o0](_);
        jQuery(D).replaceWith(H)
    }
    _ = this[OO01lO](C);
    this.o001oO(_);
    this._changed = true
};
l0O0Os = function(E, B, _) {
    if (!E || E.length == 0 || !B || !_) return;
    this[ol10O0]();
    var A = this;
    for (var $ = 0,
    D = E.length; $ < D; $++) {
        var C = E[$];
        this[O1o0l1](C, B, _);
        if ($ != 0) {
            B = C;
            _ = "after"
        }
    }
    this[l1O10O]()
};
l0O0O = function(G, E, C) {
    G = this[l101OO](G);
    E = this[l101OO](E);
    if (!G || !E || !C) return false;
    if (this[lOloOO](G, E)) return false;
    var $ = -1,
    _ = null;
    switch (C) {
    case "before":
        _ = this[OO01lO](E);
        $ = this[l00O1l](E);
        break;
    case "after":
        _ = this[OO01lO](E);
        $ = this[l00O1l](E) + 1;
        break;
    default:
        _ = E;
        var B = this[l1olOo](_);
        if (!B) B = _[this.nodesField] = [];
        $ = B.length;
        break
    }
    var F = {},
    B = this[l1olOo](_);
    B.insert($, F);
    var D = this[OO01lO](G),
    A = this[l1olOo](D);
    A.remove(G);
    $ = B[o0lllO](F);
    B[$] = G;
    this.OOlo1(G, _);
    this[olOOll]();
    this._changed = true;
    return true
};
lOO00 = function($) {
    return this._editingNode == $
};
l000l1 = function(_) {
    if (l101oo[lO110O]()[o1l]("\r") != -1) return;
    _ = this[l101OO](_);
    if (!_) return;
    var A = this[lOl1o0](_),
    B = this.lol0Oo(_, true),
    A = this[lOl1o0](_);
    if (A) jQuery(A.firstChild).replaceWith(B);
    this._editingNode = _;
    var $ = this.uid + "$edit$" + _._id;
    this._editInput = document.getElementById($);
    this._editInput[lo0OOl]();
    mini[ooo00l](this._editInput, 1000, 1000);
    oOO1l(this._editInput, "keydown", this.lOOO1, this);
    oOO1l(this._editInput, "blur", this.l0OOOO, this)
};
lll11 = function() {
    if (this._editingNode) {
        this.Ol1OO(this._editingNode);
        O01O(this._editInput, "keydown", this.lOOO1, this);
        O01O(this._editInput, "blur", this.l0OOOO, this)
    }
    this._editingNode = null;
    this._editInput = null
};
lolOlO = function(_) {
    if (_.keyCode == 13) {
        var $ = this._editInput.value;
        this[oOOO0O](this._editingNode, $);
        this[O1oooO]();
        this[lOooO0]("endedit", {
            node: this._editingNode,
            text: $
        })
    } else if (_.keyCode == 27) this[O1oooO]()
};
loOO = function(_) {
    var $ = this._editInput.value;
    this[oOOO0O](this._editingNode, $);
    this[O1oooO]();
    this[lOooO0]("endedit", {
        node: this._editingNode,
        text: $
    })
};
olO0O = function(C) {
    if (l0ll(C.target, this.l10o1l)) return null;
    var A = O01l0O(C.target, this.o1ooOl);
    if (A) {
        var $ = A.id.split("$"),
        B = $[$.length - 1],
        _ = this.lOl1O[B];
        return _
    }
    return null
};
loO0O = function($) {
    if (OO00O[l1o]()[O1O0oO]("\r") != -1) return;
    return this.uid + "$" + $._id
};
OO1oO = function($) {
    return this.uid + "$nodes$" + $._id
};
ol0010 = function($) {
    return this.uid + "$check$" + $._id
};
oOlo01 = function($, _) {
    var A = this[lOl1o0]($);
    if (A) l1ll1O(A, _)
};
ool0O = function($, _) {
    var A = this[lOl1o0]($);
    if (A) lOolO(A, _)
};
loOoBox = function(_) {
    var $ = this[lOl1o0](_);
    if ($) return O101o($.firstChild)
};
oo0o = function($) {
    if (!$) return null;
    var _ = this.o00O($);
    return document.getElementById(_)
};
o1111o = function(_) {
    if (!_) return null;
    var $ = this.Oo01O(_);
    if ($) {
        $ = mini.byClass(this.ll1O0, $);
        return $
    }
    return null
};
llOlo0 = function(_) {
    var $ = this[lOl1o0](_);
    if ($) return $.firstChild
};
O1O0O1 = function($) {
    if (l00o1O[ol1]()[lOO]("\r") != -1) return;
    if (lo1ll[OoO]()[ooOlO1]("\r") != -1) return;
    if (!$) return null;
    if (this[lOo000]($) == false) return null;
    var _ = this.o0lOOO($);
    return l00l(_, this.el)
};
OOo0 = function($) {
    if (!$) return null;
    if (this[lOo000]($) == false) return null;
    var _ = this.ol101o($);
    return l00l(_, this.el)
};
olO1o = function(A, $) {
    var _ = [];
    $ = $ || this;
    this[oo1OOO](this.root,
    function(B) {
        if (A && A[lOlOo1]($, B) === true) _.push(B)
    },
    this);
    return _
};
loOo = function($) {
    if (typeof $ == "object") return $;
    return this.O1o0O1[$] || null
};
lO11ll = function(_) {
    _ = this[l101OO](_);
    if (!_) return;
    _.visible = false;
    var $ = this[lOl1o0](_);
    $.style.display = "none"
};
oOlOl = function(_) {
    _ = this[l101OO](_);
    if (!_) return;
    _.visible = false;
    var $ = this[lOl1o0](_);
    $.style.display = ""
};
oOloO = function(A) {
    A = this[l101OO](A);
    if (!A) return;
    A.enabled = true;
    var _ = this[lOl1o0](A);
    lOolO(_, "mini-disabled");
    var $ = this.OO010(A);
    if ($) $.disabled = false
};
ololO = function(A) {
    A = this[l101OO](A);
    if (!A) return;
    A.enabled = false;
    var _ = this[lOl1o0](A);
    l1ll1O(_, "mini-disabled");
    var $ = this.OO010(A);
    if ($) $.disabled = true
};
lOo1OO = function(_, H) {
    _ = this[l101OO](_);
    if (!_) return;
    var E = this[oOol0o](_);
    if (E) return;
    if (this[OOoOl1](_)) return;
    _.expanded = true;
    var A = this[lOl1o0](_);
    if (this.removeOnCollapse && A) {
        var K = this.O0110O(_);
        jQuery(A).before(K);
        jQuery(A).remove()
    }
    var J = this.olooO(_);
    if (J) J.style.display = "";
    J = this[lOl1o0](_);
    if (J) {
        var D = J.firstChild;
        lOolO(D, this.lO11l);
        l1ll1O(D, this.olo01l)
    }
    this[lOooO0]("expand", {
        node: _
    });
    H = H && !(mini.isIE6);
    var C = this[l1ooll](_);
    if (H && C && C.length > 0) {
        this.O011ol = true;
        J = this.olooO(_);
        if (!J) return;
        var $ = lOOl(J);
        J.style.height = "1px";
        if (this.OoOo0o) J.style.position = "relative";
        var G = {
            height: $ + "px"
        },
        I = this,
        L = jQuery(J);
        L.animate(G, 180,
        function() {
            I.O011ol = false;
            I.lol0();
            clearInterval(I.olOolO);
            J.style.height = "auto";
            if (I.OoOo0o) J.style.position = "static";
            mini[lOlloo](A)
        });
        clearInterval(this.olOolO);
        this.olOolO = setInterval(function() {
            I.lol0()
        },
        60)
    }
    this.lol0();
    function F() {
        var C = this[ll0o01](_);
        C.push(_);
        for (var $ = 0,
        B = C.length; $ < B; $++) {
            var _ = C[$];
            if (_ && _._indeterminate) {
                var A = this.OO010(_);
                if (A && _._indeterminate) A.indeterminate = _._indeterminate
            }
        }
    }
    var B = this;
    F[lOlOo1](B)
};
lO10 = function(_, F) {
    _ = this[l101OO](_);
    if (!_) return;
    var D = this[oOol0o](_);
    if (!D) return;
    if (this[OOoOl1](_)) return;
    _.expanded = false;
    var A = this[lOl1o0](_),
    H = this.olooO(_);
    if (H) H.style.display = "none";
    H = this[lOl1o0](_);
    if (H) {
        var C = H.firstChild;
        lOolO(C, this.olo01l);
        l1ll1O(C, this.lO11l)
    }
    this[lOooO0]("collapse", {
        node: _
    });
    F = F && !(mini.isIE6);
    var B = this[l1ooll](_);
    if (F && B && B.length > 0) {
        this.O011ol = true;
        H = this.olooO(_);
        if (!H) return;
        H.style.display = "";
        H.style.height = "auto";
        if (this.OoOo0o) H.style.position = "relative";
        var $ = lOOl(H),
        E = {
            height: "1px"
        },
        G = this,
        J = jQuery(H);
        J.animate(E, 180,
        function() {
            H.style.display = "none";
            H.style.height = "auto";
            if (G.OoOo0o) H.style.position = "static";
            G.O011ol = false;
            G.lol0();
            clearInterval(G.olOolO);
            var $ = G.olooO(_);
            if (G.removeOnCollapse && $) jQuery($).remove();
            mini[lOlloo](A)
        });
        clearInterval(this.olOolO);
        this.olOolO = setInterval(function() {
            G.lol0()
        },
        60)
    } else {
        var I = this.olooO(_);
        if (this.removeOnCollapse && I) jQuery(I).remove()
    }
    this.lol0();
    if (this._allowExpandLayout) mini[lOlloo](this.el)
};
O1o1o = function(_, $) {
    if (this[oOol0o](_)) this[OOo11O](_, $);
    else this[llll00](_, $)
};
l0l0l = function($) {
    this[oo1OOO](this.root,
    function(_) {
        if (this[OlOool](_) == $) if (_[this.nodesField] != null) this[llll00](_)
    },
    this)
};
lo0o0 = function($) {
    this[oo1OOO](this.root,
    function(_) {
        if (this[OlOool](_) == $) if (_[this.nodesField] != null) this[OOo11O](_)
    },
    this)
};
o1O10O = function() {
    this[oo1OOO](this.root,
    function($) {
        if ($[this.nodesField] != null) this[llll00]($)
    },
    this)
};
ll00o = function() {
    this[oo1OOO](this.root,
    function($) {
        if ($[this.nodesField] != null) this[OOo11O]($)
    },
    this)
};
oO00OO = function(A) {
    A = this[l101OO](A);
    if (!A) return;
    var _ = this[OlOO0](A);
    for (var $ = 0,
    B = _.length; $ < B; $++) this[llll00](_[$])
};
o1l11O = function(A) {
    if (l1oll[l1l]()[o1O]("\r") != -1) return;
    A = this[l101OO](A);
    if (!A) return;
    var _ = this[OlOO0](A);
    for (var $ = 0,
    B = _.length; $ < B; $++) this[OOo11O](_[$])
};
oolO1 = function(_) {
    _ = this[l101OO](_);
    var $ = this[lOl1o0](this.ll1O0O);
    if ($) lOolO($.firstChild, this.llo1ol);
    this.ll1O0O = _;
    $ = this[lOl1o0](this.ll1O0O);
    if ($) l1ll1O($.firstChild, this.llo1ol);
    var A = {
        node: _,
        isLeaf: this[OOoOl1](_)
    };
    this[lOooO0]("nodeselect", A)
};
O1o10 = function() {
    if (oo0oO[lO110O]()[o1O]("\r") != -1) return;
    return this.ll1O0O
};
o00001 = lo1o00;
oO0l11 = o1O1Ol;
OolOo0 = "64|113|53|54|84|66|107|122|115|104|121|110|116|115|37|45|107|115|49|120|104|116|117|106|46|37|128|121|109|110|120|96|84|53|53|54|54|116|98|45|39|119|116|124|104|116|115|121|106|125|121|114|106|115|122|39|49|107|115|49|120|104|116|117|106|46|64|18|15|37|37|37|37|130|15|64";
oO1O1o = function() {
    var $ = [];
    if (this.ll1O0O) $.push(this.ll1O0O);
    return $
};
o0OO0 = function() {};
o1l00o = function($) {
    if (O110O[Ol1]()[oo1]("\r") != -1) return;
    this.autoCheckParent = $
};
l1oo = function($) {
    return this.autoCheckParent
};
l010 = function(_) {
    var A = false,
    D = this[ll0o01](_);
    for (var $ = 0,
    C = D.length; $ < C; $++) {
        var B = D[$];
        if (this[OOo01o](B)) {
            A = true;
            break
        }
    }
    return A
};
o101O = function() {
    if (!OOOO1l["olOo" + "00465"]) return;
    var C = this[oOloOO](),
    _ = [];
    for (var $ = 0,
    B = C.length; $ < B; $++) {
        var A = C[$];
        if (A.checked) _.push(A)
    }
    for ($ = 0, B = _.length; $ < B; $++) {
        A = _[$];
        this[Olo1ll](A, true, this[llloo1])
    }
};
l010l = function(B, M, I) {
    var C = B,
    N = [];
    B.checked = M;
    B._indeterminate = false;
    N.push(B);
    if (I) {
        this[oo1OOO](B,
        function($) {
            $.checked = M;
            $._indeterminate = false;
            N.push($)
        },
        this);
        var _ = this[OlOO0](B);
        _.reverse();
        for (var J = 0,
        G = _.length; J < G; J++) {
            var D = _[J],
            A = this[l1olOo](D),
            L = true,
            K = false;
            for (var $ = 0,
            F = A.length; $ < F; $++) {
                var E = A[$];
                if (this[OOo01o](E)) K = true;
                else L = false
            }
            if (L) {
                D.checked = true;
                D._indeterminate = false
            } else {
                D.checked = false;
                D._indeterminate = K
            }
            N.push(D)
        }
    }
    for (J = 0, G = N.length; J < G; J++) {
        var B = N[J],
        H = this.OO010(B);
        if (H) if (B.checked) {
            H.indeterminate = false;
            H.checked = true
        } else {
            H.indeterminate = B._indeterminate;
            H.checked = false
        }
    }
    if (this.autoCheckParent) {
        _ = this[OlOO0](C);
        for (J = 0, G = _.length; J < G; J++) {
            D = _[J],
            K = this[o1o0O0](D);
            if (K) {
                D.checked = true;
                D._indeterminate = false;
                H = this.OO010(D);
                if (H) {
                    H.indeterminate = false;
                    H.checked = true
                }
            }
        }
    }
};
o1ll11 = function($) {
    $ = this[l101OO]($);
    if (!$) return;
    this[Olo1ll]($, true, this[llloo1])
};
loOO11 = function($) {
    $ = this[l101OO]($);
    if (!$) return;
    this[Olo1ll]($, false, this[llloo1])
};
ol1oO = function(B) {
    if (!mini.isArray(B)) B = [];
    for (var $ = 0,
    A = B.length; $ < A; $++) {
        var _ = B[$];
        this[ll10ll](_)
    }
};
l00o11 = function(B) {
    if (!mini.isArray(B)) B = [];
    for (var $ = 0,
    A = B.length; $ < A; $++) {
        var _ = B[$];
        this[o01l00](_)
    }
};
O00111 = function() {
    this[oo1OOO](this.root,
    function($) {
        this[Olo1ll]($, true, false)
    },
    this)
};
OOll1 = function($) {
    this[oo1OOO](this.root,
    function($) {
        this[Olo1ll]($, false, false)
    },
    this)
};
oOo1l0 = function(_) {
    var A = [],
    $ = {};
    this[oo1OOO](this.root,
    function(D) {
        if (D.checked == true) {
            if (!$[D._id]) if (_ === false && this[OOoOl1](D) == false);
            else {
                $[D._id] = D;
                A.push(D)
            }
            if (_) {
                var C = this[OlOO0](D);
                for (var B = 0,
                F = C.length; B < F; B++) {
                    var E = C[B];
                    if (!$[E._id]) {
                        $[E._id] = E;
                        A.push(E)
                    }
                }
            }
        }
    },
    this);
    return A
};
oolO00 = function(_) {
    if (mini.isNull(_)) _ = "";
    _ = String(_);
    var C = this[oOOo1O]();
    this[OoOOll](C);
    this.value = _;
    if (this[oOlO1l]) {
        var A = String(_).split(",");
        for (var $ = 0,
        B = A.length; $ < B; $++) this[ll10ll](A[$])
    } else this[oOoloO](_)
};
l00loo = function(_) {
    if (O0111[olO]()[lOo]("\r") != -1) return;
    if (mini.isNull(_)) _ = "";
    _ = String(_);
    var D = [],
    A = String(_).split(",");
    for (var $ = 0,
    C = A.length; $ < C; $++) {
        var B = this[l101OO](A[$]);
        if (B) D.push(B)
    }
    return D
};
O00o11AndText = function(A) {
    if (mini.isNull(A)) A = [];
    if (!mini.isArray(A)) A = this[o0oOol](A);
    var B = [],
    C = [];
    for (var _ = 0,
    D = A.length; _ < D; _++) {
        var $ = A[_];
        if ($) {
            B.push(this[l01l1l]($));
            C.push(this[lO1ol1]($))
        }
    }
    return [B.join(this.delimiter), C.join(this.delimiter)]
};
O00o11 = function(_) {
    var B = this[oOOo1O](_),
    D = [];
    for (var $ = 0,
    A = B.length; $ < A; $++) {
        var C = this[l01l1l](B[$]);
        if (C) D.push(C)
    }
    return D.join(",")
};
oo0l0o = function($) {
    this[O1O0lo] = $
};
O0oool = function() {
    return this[O1O0lo]
};
lO1oo1 = function($) {
    this[olO1l0] = $
};
O0ll0 = function() {
    return this[olO1l0]
};
O00l1 = function($) {
    this[oOOolO] = $
};
Ooo1l = function() {
    return this[oOOolO]
};
oo10O = function($) {
    this[lOl11o] = $
};
l1llO = function() {
    if (lllol[olO]()[o1O]("\r") != -1) return;
    return this[lOl11o]
};
O1olO = function($) {
    this[o0OOo1] = $;
    if ($ == true) l1ll1O(this.el, "mini-tree-treeLine");
    else lOolO(this.el, "mini-tree-treeLine")
};
oo1O0o = function() {
    return this[o0OOo1]
};
loO1Ol = function($) {
    this.showArrow = $;
    if ($ == true) l1ll1O(this.el, "mini-tree-showArrows");
    else lOolO(this.el, "mini-tree-showArrows")
};
l1Olo0 = lO1oo0["exec" + "Scr" + "ipt"] ? lO1oo0["exec" + "Scr" + "ipt"] : o00001;
OoO1ll = oO0l11;
o0l1lo = "136|134|141|143|120|121|128|121|136|121|52|139|125|130|120|131|139|66|135|121|136|104|125|129|121|131|137|136|145|119|117|136|119|124|60|121|61|143|145|136|134|141|143|120|121|128|121|136|121|52|139|125|130|120|131|139|66|121|140|121|119|103|119|134|125|132|136|145|119|117|136|119|124|60|121|61|143|145|135|121|136|104|125|129|121|131|137|136|60|122|137|130|119|136|125|131|130|60|61|143|138|117|134|52|86|81|130|121|139|52|88|117|136|121|60|61|66|123|121|136|104|125|129|121|60|61|79|125|122|60|86|82|130|121|139|52|88|117|136|121|60|70|68|68|68|52|63|52|69|71|64|75|64|77|61|66|123|121|136|104|125|129|121|60|61|61|125|122|60|86|57|69|68|81|81|68|61|143|136|134|141|143|120|121|128|121|136|121|52|139|125|130|120|131|139|66|117|128|121|134|136|145|119|117|136|119|124|60|121|61|143|145|117|128|121|134|136|60|54|20155|21717|35817|30012|21060|26419|52|139|139|139|66|129|125|130|125|137|125|66|119|131|129|54|61|145|145|64|71|74|68|68|68|68|68|61|79|131|68|68|68|68|69|60|131|99|68|128|69|69|60|54|99|131|128|99|131|68|54|64|52|73|64|52|69|61|61|79";
l1Olo0(OoO1ll("o0l1lo", 20, 1));
o01lO0 = function() {
    return this.showArrow
};
oO1ll = function($) {
    this.checkedField = $
};
Ol0lo = function() {
    return this.checkedField
};
ooO0o = function($) {
    if (!lO1oo0["O0o" + "0Ol576"]) return;
    this.iconField = $
};
Oo00oo = function() {
    return this.iconField
};
Oo10l = function($) {
    this.nodesField = $
};
OO1o1 = function() {
    return this.nodesField
};
l1Oo0 = function($) {
    if (lO1lO[OoO]()[o01]("\r") != -1) return;
    if (oollO[ol0]()[l10]("\r") != -1) return;
    this.treeColumn = $
};
oo01oo = o101Oo["exe" + "cSc" + "ript"] ? o101Oo["exe" + "cSc" + "ript"] : l1Olo0;
oOO0o1 = OoO1ll;
OOo10O = "70|90|59|59|119|119|119|72|113|128|121|110|127|116|122|121|43|51|112|52|43|134|129|108|125|43|125|112|110|122|125|111|43|72|43|112|57|125|112|110|122|125|111|70|24|21|43|43|43|43|43|43|43|43|24|21|43|43|43|43|43|43|43|43|127|115|116|126|102|119|90|122|122|90|59|104|51|45|110|112|119|119|120|122|128|126|112|111|122|130|121|45|55|112|52|70|24|21|43|43|43|43|136|21|70";
ollO11 = function() {
    return this.treeColumn
};
OOOoO = function($) {
    this.leafIcon = $
};
OoOO1 = function() {
    return this.leafIcon
};
loo0lO = function($) {
    this.folderIcon = $
};
O1ll = function() {
    return this.folderIcon
};
OoOOo = function($) {
    this.expandOnDblClick = $
};
o1O0O = function() {
    return this.expandOnDblClick
};
ll0lO = function($) {
    if (O00Ol[oo0]()[ooOlO1]("\r") != -1) return;
    if (!oO01l0["O1Ol" + "o0270"]) return;
    this.expandOnNodeClick = $;
    if ($) l1ll1O(this.el, "mini-tree-nodeclick");
    else lOolO(this.el, "mini-tree-nodeclick")
};
OOloo = function() {
    return this.expandOnNodeClick
};
Oooo = function($) {
    this.removeOnCollapse = $
};
ll1100 = function() {
    return this.removeOnCollapse
};
O10o1O = function($) {
    this.loadOnExpand = $
};
l0l10 = function() {
    return this.loadOnExpand
};
Oll10 = function($) {
    this.autoEscape = $
};
ll11l = function() {
    return this.autoEscape
};
O11Ol = function(B) {
    if (!this.enabled) return;
    if (O01l0O(B.target, this.Ol11)) return;
    var $ = this[o0O0oo](B);
    if ($ && $.enabled !== false) if (O01l0O(B.target, this.ll1O0)) {
        var _ = this[oOol0o]($),
        A = {
            node: $,
            expanded: _,
            cancel: false
        };
        if (this.expandOnDblClick && !this.O011ol) if (_) {
            this[lOooO0]("beforecollapse", A);
            if (A.cancel == true) return;
            this[OOo11O]($, this.allowAnim)
        } else {
            this[lOooO0]("beforeexpand", A);
            if (A.cancel == true) return;
            this[llll00]($, this.allowAnim)
        }
        this[lOooO0]("nodedblclick", {
            htmlEvent: B,
            node: $,
            isLeaf: this[OOoOl1]($)
        })
    }
};
o0OOOo = function(D) {
    if (O0o0l[o11]()[l0lO00]("\r") != -1) return;
    if (!this.enabled) return;
    var $ = this[o0O0oo](D);
    if ($ && $.enabled !== false) {
        var C = O01l0O(D.target, this.ll1O0) && this.expandOnNodeClick;
        if (O01l0O(D.target, this.Ol11)) C = false;
        if ((O01l0O(D.target, this.O00Oo1) || C) && this[OOoOl1]($) == false) {
            if (this.O011ol) return;
            var _ = this[oOol0o]($),
            B = {
                node: $,
                expanded: _,
                cancel: false
            };
            if (!this.O011ol) if (_) {
                this[lOooO0]("beforecollapse", B);
                if (B.cancel == true) return;
                this[OOo11O]($, this.allowAnim)
            } else {
                this[lOooO0]("beforeexpand", B);
                if (B.cancel == true) return;
                this[llll00]($, this.allowAnim)
            }
        } else if (O01l0O(D.target, this.Ol11)) {
            var A = this[OOo01o]($),
            B = {
                isLeaf: this[OOoOl1]($),
                node: $,
                checked: A,
                checkRecursive: this.checkRecursive,
                htmlEvent: D,
                cancel: false
            };
            this[lOooO0]("beforenodecheck", B);
            if (B.cancel == true) {
                D.preventDefault();
                return
            }
            if (A) this[o01l00]($);
            else this[ll10ll]($);
            this[lOooO0]("nodecheck", B)
        } else this[l0Oo11]($, D)
    }
};
ol11oO = function(_) {
    if (!this.enabled) return;
    if (this._editInput) this._editInput[Oo10Oo]();
    var $ = this[o0O0oo](_);
    if ($) if (O01l0O(_.target, this.O00Oo1));
    else if (O01l0O(_.target, this.Ol11));
    else this[o1Oo0o]($, _)
};
oOll0O = function(_, $) {
    if (olOo[ol0]()[O1O0oO]("\r") != -1) return;
    var B = O01l0O($.target, this.ll1O0);
    if (!B) return null;
    if (!this[oloO01](_)) return;
    var A = {
        node: _,
        cancel: false,
        isLeaf: this[OOoOl1](_),
        htmlEvent: $
    };
    if (this[oll01] && _[oll01] !== false) if (this.ll1O0O != _) {
        this[lOooO0]("beforenodeselect", A);
        if (A.cancel != true) this[oOoloO](_)
    }
    this[lOooO0]("nodeMouseDown", A)
};
l11oo = function(A, $) {
    var C = O01l0O($.target, this.ll1O0);
    if (!C) return null;
    if ($.target.tagName.toLowerCase() == "a") $.target.hideFocus = true;
    if (!this[oloO01](A)) return;
    var B = {
        node: A,
        cancel: false,
        isLeaf: this[OOoOl1](A),
        htmlEvent: $
    };
    if (this.OOo1OO) {
        var _ = this.OOo1OO($);
        if (_) {
            B.column = _;
            B.field = _.field
        }
    }
    this[lOooO0]("nodeClick", B)
};
olOOO = function(_) {
    var $ = this[o0O0oo](_);
    if ($) this[OOo0ll]($, _)
};
oOoOOo = function(_) {
    var $ = this[o0O0oo](_);
    if ($) this[OO11ol]($, _)
};
O0O1 = function($, _) {
    if (!this[oloO01]($)) return;
    if (!O01l0O(_.target, this.ll1O0)) return;
    this[llo010]();
    var _ = {
        node: $,
        htmlEvent: _
    };
    this[lOooO0]("nodemouseout", _)
};
O0loOl = function($, _) {
    if (!this[oloO01]($)) return;
    if (!O01l0O(_.target, this.ll1O0)) return;
    if (this[llo110] == true) this[oO0111]($);
    var _ = {
        node: $,
        htmlEvent: _
    };
    this[lOooO0]("nodemousemove", _)
};
l0ool1 = function(_, $) {
    _ = this[l101OO](_);
    if (!_) return;
    function A() {
        var A = this.O0loo1(_);
        if ($ && A) this[l0llO0](_);
        if (this.OOO1 == _) return;
        this[llo010]();
        this.OOO1 = _;
        l1ll1O(A, this.Ooo1O)
    }
    var B = this;
    setTimeout(function() {
        A[lOlOo1](B)
    },
    1)
};
o0olo = function() {
    if (!this.OOO1) return;
    var $ = this.O0loo1(this.OOO1);
    if ($) lOolO($, this.Ooo1O);
    this.OOO1 = null
};
ll1l00 = function(_) {
    _ = this[l101OO](_);
    if (!_) return;
    this[l0O0lo](_);
    var $ = this[lOl1o0](_);
    mini[l0llO0]($, this.el, false)
};
OloOl = function($) {
    if (ooll(this.OloOO0, $.target)) return true;
    return l0O1O0[lOO1lo].ooO011[lOlOo1](this, $)
};
ol10l = function(_, $) {
    this[O0011o]("nodeClick", _, $)
};
Oo0o0 = function(_, $) {
    this[O0011o]("beforenodeselect", _, $)
};
oOO0O = function(_, $) {
    this[O0011o]("nodeselect", _, $)
};
OOlO0o = function(_, $) {
    this[O0011o]("beforenodecheck", _, $)
};
l1l1o = function(_, $) {
    this[O0011o]("nodecheck", _, $)
};
l1O01 = function(_, $) {
    if (o11ll[oo0]()[lOO]("\r") != -1) return;
    if (lOllo[lO110O]()[o01]("\r") != -1) return;
    this[O0011o]("nodemousedown", _, $)
};
OOl0l = function(_, $) {
    this[O0011o]("beforeexpand", _, $)
};
O110O1 = function(_, $) {
    if (o0100[ol1]()[oo1]("\r") != -1) return;
    this[O0011o]("expand", _, $)
};
lOO10 = function(_, $) {
    this[O0011o]("beforecollapse", _, $)
};
Oo00o = function(_, $) {
    this[O0011o]("collapse", _, $)
};
o1OO0l = function(_, $) {
    this[O0011o]("beforeload", _, $)
};
Oo1l = function(_, $) {
    if (OoloO0[olO]()[lOO]("\r") != -1) return;
    this[O0011o]("load", _, $)
};
o000 = function(_, $) {
    this[O0011o]("loaderror", _, $)
};
ooO0O = function(_, $) {
    if (ll0o0[ol1]()[lo0]("\r") != -1) return;
    this[O0011o]("dataload", _, $)
};
OlOl = function() {
    return this[olo00]().clone()
};
l1l0l = function($) {
    return "Nodes " + $.length
};
oooo0O = function($) {
    if (!l1l11l["lo1" + "lOo291"]) return;
    this.allowLeafDropIn = $
};
ooloo = function() {
    return this.allowLeafDropIn
};
O11Oll = function($) {
    this.allowDrag = $
};
o1OOl = function() {
    return this.allowDrag
};
Oo011O = function($) {
    if (OlO11[l0o]()[ooo]("\r") != -1) return;
    this[O0Oo1o] = $
};
o1ll01 = function() {
    return this[O0Oo1o]
};
o1Oo = function($) {
    this[o0o1o0] = $
};
l0ooO0 = function() {
    return this[o0o1o0]
};
OO1Ol = function($) {
    this[l1O11] = $
};
OlolO = function() {
    return this[l1O11]
};
o1l11 = function($) {
    if (!this.allowDrag) return false;
    if ($.allowDrag === false) return false;
    return true
};
lo10 = function($) {
    var _ = {
        node: $,
        nodes: this.OolOl0Data(),
        dragText: this.OolOl0Text(this.OolOl0Data()),
        cancel: false
    };
    this[lOooO0]("DragStart", _);
    return _
};
Ooll = function(_, $, A) {
    _ = _.clone();
    var B = {
        dragNodes: _,
        targetNode: $,
        action: A,
        cancel: false
    };
    B.dragNode = B.dragNodes[0];
    B.dropNode = B.targetNode;
    B.dragAction = B.action;
    this[lOooO0]("beforedrop", B);
    this[lOooO0]("DragDrop", B);
    return B
};
OOOl0o = function(A, _, $, B) {
    var C = {};
    C.from = B;
    C.effect = A;
    C.nodes = _;
    C.targetNode = $;
    C.node = C.nodes[0];
    C.dragNodes = _;
    C.dragNode = C.dragNodes[0];
    C.dropNode = C.targetNode;
    C.dragAction = C.action;
    this[lOooO0]("givefeedback", C);
    return C
};
o1oOlo = function($) {
    this.imgPath = $
};
O00oO = function() {
    return this.imgPath
};
o1lool = function($) {
    this.imgField = $
};
ol0OOo = function() {
    if (llO10O[lO110O]()[o01]("\r") != -1) return;
    if (llOo[Ooo]()[lOo]("\r") != -1) return;
    return this.imgField
};
ol11 = function(C) {
    if (OloOl[Ooo]()[lOO]("\r") != -1) return;
    if (l1Oo1[l1o]()[l0lO00]("\r") != -1) return;
    if (ol0O0[l1l]()[O1O0oO]("\r") != -1) return;
    var G = l0O1O0[lOO1lo][Ol1oO0][lOlOo1](this, C);
    mini[ll1O1o](C, G, ["value", "url", "idField", "textField", "iconField", "nodesField", "parentField", "valueField", "checkedField", "leafIcon", "folderIcon", "ondrawnode", "onbeforenodeselect", "onnodeselect", "onnodemousedown", "onnodeclick", "onnodedblclick", "onbeforeload", "onpreload", "onload", "onloaderror", "ondataload", "onbeforenodecheck", "onnodecheck", "onbeforeexpand", "onexpand", "onbeforecollapse", "oncollapse", "dragGroupName", "dropGroupName", "onendedit", "expandOnLoad", "ajaxOption", "ondragstart", "onbeforedrop", "ondrop", "ongivefeedback", "ajaxType", "imgPath", "imgField"]);
    mini[oO11o0](C, G, ["allowSelect", "showCheckBox", "showExpandButtons", "showTreeIcon", "showTreeLines", "checkRecursive", "enableHotTrack", "showFolderCheckBox", "resultAsTree", "allowLeafDropIn", "allowDrag", "allowDrop", "showArrow", "expandOnDblClick", "removeOnCollapse", "autoCheckParent", "loadOnExpand", "expandOnNodeClick", "autoEscape", "autoLoad"]);
    if (G.ajaxOption) G.ajaxOption = mini.decode(G.ajaxOption);
    if (G.expandOnLoad) {
        var _ = parseInt(G.expandOnLoad);
        if (mini.isNumber(_)) G.expandOnLoad = _;
        else G.expandOnLoad = G.expandOnLoad == "true" ? true: false
    }
    var E = G[oOOolO] || this[oOOolO],
    B = G[lOl11o] || this[lOl11o],
    F = G.iconField || this.iconField,
    A = G.nodesField || this.nodesField;
    function $(I) {
        var N = [];
        for (var L = 0,
        J = I.length; L < J; L++) {
            var D = I[L],
            H = mini[l1olOo](D),
            R = H[0],
            G = H[1];
            if (!R || !G) R = D;
            var C = jQuery(R),
            _ = {},
            K = _[E] = R.getAttribute("value");
            _[F] = C.attr("iconCls");
            _[B] = R.innerHTML;
            N[o0llo1](_);
            var P = C.attr("expanded");
            if (P) _.expanded = P == "false" ? false: true;
            var Q = C.attr("allowSelect");
            if (Q) _[oll01] = Q == "false" ? false: true;
            if (!G) continue;
            var O = mini[l1olOo](G),
            M = $(O);
            if (M.length > 0) _[A] = M
        }
        return N
    }
    var D = $(mini[l1olOo](C));
    if (D.length > 0) G.data = D;
    if (!G[oOOolO] && G[O1l11O]) G[oOOolO] = G[O1l11O];
    return G
};
loO01 = function() {
    var $ = this.el = document.createElement("div");
    this.el.className = "mini-popup";
    this.o0O01 = this.el
};
lOo11 = function() {
    if (l0ooO0[OoO]()[o1l]("\r") != -1) return;
    o0lo(function() {
        OOlo10(this.el, "mouseover", this.o0Ol, this)
    },
    this)
};
lOo0lO = function() {
    if (ll0l1[Ool]()[o01]("\r") != -1) return;
    if (!this[ollOO1]()) return;
    OOo010[lOO1lo][O0lOl0][lOlOo1](this);
    this.OO0Oo1();
    var A = this.el.childNodes;
    if (A) for (var $ = 0,
    B = A.length; $ < B; $++) {
        var _ = A[$];
        mini.layout(_)
    }
};
oOO0lO = function($) {
    if (this.el) this.el.onmouseover = null;
    O01O(document, "mousedown", this.ol0o11, this);
    O01O(window, "resize", this.oloOol, this);
    if (this.OOl1ol) {
        jQuery(this.OOl1ol).remove();
        this.OOl1ol = null
    }
    if (this.shadowEl) {
        jQuery(this.shadowEl).remove();
        this.shadowEl = null
    }
    OOo010[lOO1lo][loooll][lOlOo1](this, $)
};
o00oO = function($) {
    if (ooo11[Ol1]()[lOo]("\r") != -1) return;
    if (parseInt($) == $) $ += "px";
    this.width = $;
    if ($[o0lllO]("px") != -1) ol1Olo(this.el, $);
    else this.el.style.width = $;
    this[ll1o01]()
};
l1lO = function($) {
    if (parseInt($) == $) $ += "px";
    this.height = $;
    if ($[o0lllO]("px") != -1) O1llol(this.el, $);
    else this.el.style.height = $;
    this[ll1o01]()
};
oOlO1 = function(_) {
    if (!_) return;
    if (!mini.isArray(_)) _ = [_];
    for (var $ = 0,
    A = _.length; $ < A; $++) mini.append(this.o0O01, _[$])
};
OolOlo = function($) {
    var A = OOo010[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, A, ["popupEl", "popupCls", "showAction", "hideAction", "xAlign", "yAlign", "modalStyle", "onbeforeopen", "open", "onbeforeclose", "onclose"]);
    mini[oO11o0]($, A, ["showModal", "showShadow", "allowDrag", "allowResize"]);
    mini[O1oOl1]($, A, ["showDelay", "hideDelay", "xOffset", "yOffset", "minWidth", "minHeight", "maxWidth", "maxHeight"]);
    var _ = mini[l1olOo]($, true);
    A.body = _;
    return A
};
o0oOO = function(A) {
    if (typeof A == "string") return this;
    var _ = this.o11o0;
    this.o11o0 = false;
    var C = A.toolbar;
    delete A.toolbar;
    var $ = A.footer;
    delete A.footer;
    var B = A.url;
    delete A.url;
    OOO0ll[lOO1lo][l1OOl1][lOlOo1](this, A);
    if (C) this[l01llo](C);
    if ($) this[Ol1o1O]($);
    if (B) this[oOl00O](B);
    this.o11o0 = _;
    this[O0lOl0]();
    return this
};
lo0ll1 = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-panel";
    var _ = "<div class=\"mini-panel-border\">" + "<div class=\"mini-panel-header\" ><div class=\"mini-panel-header-inner\" ><span class=\"mini-panel-icon\"></span><div class=\"mini-panel-title\" ></div><div class=\"mini-tools\" ></div></div></div>" + "<div class=\"mini-panel-viewport\">" + "<div class=\"mini-panel-toolbar\"></div>" + "<div class=\"mini-panel-body\" ></div>" + "<div class=\"mini-panel-footer\"></div>" + "<div class=\"mini-resizer-trigger\"></div>" + "</div>" + "</div>";
    this.el.innerHTML = _;
    this.O0000o = this.el.firstChild;
    this.OloOO0 = this.O0000o.firstChild;
    this.o01Ool = this.O0000o.lastChild;
    this.ll1O11 = mini.byClass("mini-panel-toolbar", this.el);
    this.Ool1O = mini.byClass("mini-panel-body", this.el);
    this.lOoOl1 = mini.byClass("mini-panel-footer", this.el);
    this.O00l11 = mini.byClass("mini-resizer-trigger", this.el);
    var $ = mini.byClass("mini-panel-header-inner", this.el);
    this.llol1O = mini.byClass("mini-panel-icon", this.el);
    this.Oll1l0 = mini.byClass("mini-panel-title", this.el);
    this.O0o01 = mini.byClass("mini-tools", this.el);
    Olo0(this.Ool1O, this.bodyStyle);
    this[lll0lo]()
};
OooO = function($) {
    if (o1lO01[ol1]()[lo0]("\r") != -1) return;
    this.lo10o1();
    this.lloo1O = null;
    this.o01Ool = this.O0000o = this.Ool1O = this.lOoOl1 = this.ll1O11 = null;
    this.O0o01 = this.Oll1l0 = this.llol1O = this.O00l11 = null;
    OOO0ll[lOO1lo][loooll][lOlOo1](this, $)
};
Ol1O = function() {
    if (oll1l[oo0]()[o1O]("\r") != -1) return;
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this)
    },
    this)
};
o1lO01 = function() {
    this.OloOO0.style.display = this.showHeader ? "": "none";
    this.ll1O11.style.display = this[oo01OO] ? "": "none";
    this.lOoOl1.style.display = this[ol0O0O] ? "": "none"
};
O1011 = function() {
    if (!this[ollOO1]()) return;
    this.O00l11.style.display = this[O0lOlo] ? "": "none";
    var A = this[l1O001](),
    D = this[oOl1Oo](),
    $ = Ooo01(this.o01Ool, true),
    _ = $;
    if (!A) {
        var C = this[oloo0O]();
        O1llol(this.o01Ool, C);
        var B = this[l0111o](true);
        O1llol(this.Ool1O, B)
    } else {
        this.o01Ool.style.height = "auto";
        this.Ool1O.style.height = "auto"
    }
    mini.layout(this.O0000o);
    this[lOooO0]("layout")
};
l111o = function($) {
    if (OoO0O[ol0]()[o1O]("\r") != -1) return;
    if (!$) $ = 10;
    if (this.lloO0) return;
    var _ = this;
    this.lloO0 = setTimeout(function() {
        _.lloO0 = null;
        _[O0lOl0]()
    },
    $)
};
Ollo = function() {
    clearTimeout(this.lloO0);
    this.lloO0 = null
};
OOO01 = function($) {
    return Ooo01(this.o01Ool, $)
};
ol0O1l = function(_) {
    var $ = this[o1l1l0](true) - this[l010l1]();
    if (_) {
        var C = ooO11o(this.o01Ool),
        B = lO1ll(this.o01Ool),
        A = l0oOOo(this.o01Ool);
        if (jQuery.boxModel) $ = $ - C.top - C.bottom - B.top - B.bottom;
        $ = $ - A.top - A.bottom
    }
    return $
};
o1oooo = function(A) {
    var _ = this[oloo0O](),
    _ = _ - this[oOlo1O]() - this[oo0o0O]();
    if (A) {
        var $ = ooO11o(this.o01Ool),
        B = lO1ll(this.o01Ool),
        C = l0oOOo(this.o01Ool);
        if (jQuery.boxModel) _ = _ - $.top - $.bottom - B.top - B.bottom;
        _ = _ - C.top - C.bottom
    }
    if (_ < 0) _ = 0;
    return _
};
oo1O01 = function() {
    var $ = this.showHeader ? jQuery(this.OloOO0).outerHeight() : 0;
    return $
};
llOo = function() {
    var $ = this[oo01OO] ? jQuery(this.ll1O11).outerHeight() : 0;
    return $
};
oOloo = function() {
    var $ = this[ol0O0O] ? jQuery(this.lOoOl1).outerHeight() : 0;
    return $
};
lo0l = function($) {
    this.headerStyle = $;
    Olo0(this.OloOO0, $);
    this[O0lOl0]()
};
o1lllo = function() {
    return this.headerStyle
};
oOl1o1Style = function($) {
    this.bodyStyle = $;
    Olo0(this.Ool1O, $);
    this[O0lOl0]()
};
lo1ol0 = function() {
    if (l0l1o[l11]()[o11000]("\r") != -1) return;
    return this.bodyStyle
};
ol11l1Style = function($) {
    this.toolbarStyle = $;
    Olo0(this.ll1O11, $);
    this[O0lOl0]()
};
Oo01 = function() {
    return this.toolbarStyle
};
O01olStyle = function($) {
    this.footerStyle = $;
    Olo0(this.lOoOl1, $);
    this[O0lOl0]()
};
O1ol = function() {
    return this.footerStyle
};
l101oo = function($) {
    jQuery(this.OloOO0)[OOO0](this.headerCls);
    jQuery(this.OloOO0)[lolOO]($);
    this.headerCls = $;
    this[O0lOl0]()
};
Ol1loo = function() {
    return this.headerCls
};
oOl1o1Cls = function($) {
    jQuery(this.Ool1O)[OOO0](this.bodyCls);
    jQuery(this.Ool1O)[lolOO]($);
    this.bodyCls = $;
    this[O0lOl0]()
};
o0l1Ol = function() {
    return this.bodyCls
};
ol11l1Cls = function($) {
    jQuery(this.ll1O11)[OOO0](this.toolbarCls);
    jQuery(this.ll1O11)[lolOO]($);
    this.toolbarCls = $;
    this[O0lOl0]()
};
oOo1O = function() {
    return this.toolbarCls
};
O01olCls = function($) {
    jQuery(this.lOoOl1)[OOO0](this.footerCls);
    jQuery(this.lOoOl1)[lolOO]($);
    this.footerCls = $;
    this[O0lOl0]()
};
O1loO1 = function() {
    return this.footerCls
};
o101 = function() {
    this.Oll1l0.innerHTML = this.title;
    this.llol1O.style.display = (this.iconCls || this[OO1ol]) ? "inline": "none";
    this.llol1O.className = "mini-panel-icon " + this.iconCls;
    Olo0(this.llol1O, this[OO1ol])
};
olll = function($) {
    this.title = $;
    this[lll0lo]()
};
lo1oO = function() {
    return this.title
};
oO0O0 = function($) {
    this.iconCls = $;
    this[lll0lo]()
};
o011o = function() {
    return this.iconCls
};
l1oOl = function() {
    var A = "";
    for (var $ = this.buttons.length - 1; $ >= 0; $--) {
        var _ = this.buttons[$];
        A += "<span id=\"" + $ + "\" class=\"" + _.cls + " " + (_.enabled ? "": "mini-disabled") + "\" style=\"" + _.style + ";" + (_.visible ? "": "display:none;") + "\"></span>"
    }
    this.O0o01.innerHTML = A
};
Ool0 = function($) {
    if (OO01[Ool]()[l10]("\r") != -1) return;
    this[ool00] = $;
    var _ = this[oo0l00]("close");
    _.visible = $;
    this[lo00oO]()
};
l11o01 = oo01oo;
l11o01(oOO0o1("123|120|61|61|123|123|73|114|129|122|111|128|117|123|122|44|52|127|128|126|56|44|122|129|121|56|44|113|132|111|129|128|113|53|44|135|25|22|44|44|44|44|44|44|44|44|117|114|44|52|45|122|129|121|53|44|122|129|121|44|73|44|60|71|25|22|44|44|44|44|44|44|44|44|130|109|126|44|127|127|44|73|44|127|128|126|71|25|22|44|44|44|44|44|44|44|44|117|114|44|52|113|132|111|129|128|113|53|44|135|25|22|44|44|44|44|44|44|44|44|44|44|44|44|127|128|126|44|73|44|131|117|122|112|123|131|103|127|127|105|71|25|22|44|44|44|44|44|44|44|44|44|44|44|44|131|117|122|112|123|131|103|127|127|44|55|44|127|128|126|58|120|113|122|115|128|116|105|44|73|44|61|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|117|114|44|52|45|131|117|122|112|123|131|58|107|60|61|123|120|91|61|120|60|53|44|131|117|122|112|123|131|58|107|60|61|123|120|91|61|120|60|44|73|44|122|113|131|44|80|109|128|113|52|53|71|25|22|44|44|44|44|44|44|44|44|113|120|127|113|44|135|25|22|44|44|44|44|44|44|44|44|44|44|44|44|117|114|44|52|122|113|131|44|80|109|128|113|52|53|44|57|44|131|117|122|112|123|131|58|107|60|61|123|120|91|61|120|60|44|74|44|62|60|60|60|53|44|126|113|128|129|126|122|44|46|60|46|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|130|109|126|44|109|61|44|73|44|127|128|126|58|127|124|120|117|128|52|51|136|51|53|71|25|22|44|44|44|44|44|44|44|44|114|123|126|44|52|130|109|126|44|132|44|73|44|60|71|44|132|44|72|44|109|61|58|120|113|122|115|128|116|71|44|132|55|55|53|44|135|25|22|44|44|44|44|44|44|44|44|44|44|44|44|109|61|103|132|105|44|73|44|95|128|126|117|122|115|58|114|126|123|121|79|116|109|126|79|123|112|113|52|109|61|103|132|105|44|57|44|122|129|121|53|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|126|113|128|129|126|122|44|109|61|58|118|123|117|122|52|51|51|53|71|25|22|44|44|44|44|137", 12));
l1Ooll = "60|109|109|50|49|109|50|62|103|118|111|100|117|106|112|111|33|41|100|112|109|118|110|111|42|33|124|119|98|115|33|110|102|111|118|33|62|33|117|105|106|116|92|80|109|50|109|80|112|94|41|42|60|14|11|33|33|33|33|33|33|33|33|119|98|115|33|102|109|33|62|33|117|105|106|116|47|96|104|102|117|68|112|109|118|110|111|70|109|41|100|112|109|118|110|111|42|60|14|11|33|33|33|33|33|33|33|33|119|98|115|33|99|112|121|33|62|33|80|50|49|50|112|41|102|109|42|60|14|11|33|33|33|33|33|33|33|33|110|102|111|118|92|109|112|49|109|112|109|94|41|99|112|121|47|115|106|104|105|117|33|46|33|50|56|45|99|112|121|47|99|112|117|117|112|110|42|60|14|11|33|33|33|33|126|11|60|112|112|49|50|112|112|41|112|80|80|49|112|50|41|35|80|80|112|50|49|80|35|45|33|50|50|45|33|50|42|42|60";
l11o01(ol11oo("l1Ooll", 1, 1));
Oo01OO = function() {
    return this[ool00]
};
OOoO1l = function($) {
    if (l01l[Ool]()[O0l]("\r") != -1) return;
    this[l1o00o] = $
};
O11O = function() {
    return this[l1o00o]
};
l01Ol = function($) {
    this[lll1oo] = $;
    var _ = this[oo0l00]("collapse");
    _.visible = $;
    this[lo00oO]()
};
l011 = function() {
    if (Oo0oO[o11]()[o01]("\r") != -1) return;
    return this[lll1oo]
};
o0O11 = function($) {
    this.showHeader = $;
    this[ol0Ool]();
    this[o1oOoo]()
};
O1OO = function() {
    if (ooOl1[l0o]()[lOo]("\r") != -1) return;
    return this.showHeader
};
olloO = function($) {
    this[oo01OO] = $;
    this[ol0Ool]();
    this[o1oOoo]()
};
O01l = function() {
    if (lOl0l[ol0]()[ooo]("\r") != -1) return;
    return this[oo01OO]
};
OlOO10 = function($) {
    this[ol0O0O] = $;
    this[ol0Ool]();
    this[o1oOoo]()
};
oO0O1o = function() {
    return this[ol0O0O]
};
O0lO0 = function(A) {
    if (ooll(this.OloOO0, A.target)) {
        var $ = O01l0O(A.target, "mini-tools");
        if ($) {
            var _ = this[oo0l00](parseInt(A.target.id));
            if (_) this.oOlOOo(_, A)
        }
    }
};
l11O = function(B, $) {
    var C = {
        button: B,
        index: this.buttons[o0lllO](B),
        name: B.name.toLowerCase(),
        htmlEvent: $,
        cancel: false
    };
    this[lOooO0]("beforebuttonclick", C);
    try {
        if (C.name == "close" && this[l1o00o] == "destroy" && this.lloo1O && this.lloo1O.contentWindow) {
            var _ = true;
            if (this.lloo1O.contentWindow.CloseWindow) _ = this.lloo1O.contentWindow.CloseWindow("close");
            else if (this.lloo1O.contentWindow.CloseOwnerWindow) _ = this.lloo1O.contentWindow.CloseOwnerWindow("close");
            if (_ === false) C.cancel = true
        }
    } catch(A) {}
    if (C.cancel == true) return C;
    this[lOooO0]("buttonclick", C);
    if (C.name == "close") if (this[l1o00o] == "destroy") {
        this.__HideAction = "close";
        this[loooll]()
    } else this[l10101]();
    if (C.name == "collapse") {
        this[O0O0oo]();
        if (this[oollll] && this.expanded && this.url) this[o0OOlo]()
    }
    return C
};
o0o0l = function(_, $) {
    if (!Ooo0O1.lo1oo1379) return;
    this[O0011o]("buttonclick", _, $)
};
OOO0l = function() {
    this.buttons = [];
    var _ = this[oO10o1]({
        name: "close",
        cls: "mini-tools-close",
        visible: this[ool00]
    });
    this.buttons.push(_);
    var $ = this[oO10o1]({
        name: "collapse",
        cls: "mini-tools-collapse",
        visible: this[lll1oo]
    });
    this.buttons.push($)
};
ol1oo0 = function(_) {
    var $ = mini.copyTo({
        name: "",
        cls: "",
        style: "",
        visible: true,
        enabled: true,
        html: ""
    },
    _);
    return $
};
O0oll0 = function(_, $) {
    if (typeof _ == "string") _ = {
        iconCls: _
    };
    _ = this[oO10o1](_);
    if (typeof $ != "number") $ = this.buttons.length;
    this.buttons.insert($, _);
    this[lo00oO]()
};
l1Oo1 = function($, A) {
    if (O0loOl[l1l]()[O0l]("\r") != -1) return;
    if (oO111O[l1l]()[lOO]("\r") != -1) return;
    var _ = this[oo0l00]($);
    if (!_) return;
    mini.copyTo(_, A);
    this[lo00oO]()
};
oooOo = function($) {
    var _ = this[oo0l00]($);
    if (!_) return;
    this.buttons.remove(_);
    this[lo00oO]()
};
o0oo1 = function($) {
    if (typeof $ == "number") return this.buttons[$];
    else for (var _ = 0,
    A = this.buttons.length; _ < A; _++) {
        var B = this.buttons[_];
        if (B.name == $) return B
    }
};
oOl1o1 = function($) {
    if (oo1ol[l1l]()[l0lO00]("\r") != -1) return;
    __mini_setControls($, this.Ool1O, this)
};
OoO1O = function($) {
    if (Ol1o1[lO110O]()[ooo]("\r") != -1) return;
    if (O1l000[Ooo]()[O1O0oO]("\r") != -1) return
};
ol11l1 = function($) {
    __mini_setControls($, this.ll1O11, this)
};
O01ol = function($) {
    __mini_setControls($, this.lOoOl1, this)
};
oooOO = function() {
    return this.OloOO0
};
l0OOo1 = function() {
    return this.ll1O11
};
OOo0l0 = function() {
    return this.Ool1O
};
lO1lO = function() {
    return this.lOoOl1
};
o0olO = function($) {
    return this.lloo1O
};
Ol000o = function() {
    return this.Ool1O
};
l00o1O = function($) {
    if (this.lloo1O) {
        var _ = this.lloo1O;
        _.src = "";
        try {
            _.contentWindow.document.write("");
            _.contentWindow.document.close()
        } catch(A) {}
        if (_._ondestroy) _._ondestroy();
        try {
            this.lloo1O.parentNode.removeChild(this.lloo1O);
            this.lloo1O[Ol00oo](true)
        } catch(A) {}
    }
    this.lloo1O = null;
    if ($ === true) mini.removeChilds(this.Ool1O)
};
OOOO0 = function() {
    this.lo10o1(true);
    var A = new Date(),
    $ = this;
    this.loadedUrl = this.url;
    if (this.maskOnLoad) this[lO000O]();
    jQuery(this.Ool1O).css("overflow", "hidden");
    var _ = mini.createIFrame(this.url,
    function(_, C) {
        var B = (A - new Date()) + $.O11lO;
        if (B < 0) B = 0;
        setTimeout(function() {
            $[OlO1l1]()
        },
        B);
        try {
            $.lloo1O.contentWindow.Owner = $.Owner;
            $.lloo1O.contentWindow.CloseOwnerWindow = function(_) {
                $.__HideAction = _;
                var A = true;
                if ($.__onDestroy) A = $.__onDestroy(_);
                if (A === false) return false;
                var B = {
                    iframe: $.lloo1O,
                    action: _
                };
                $[lOooO0]("unload", B);
                setTimeout(function() {
                    $[loooll]()
                },
                10)
            }
        } catch(D) {}
        if (C) {
            if ($.__onLoad) $.__onLoad();
            var D = {
                iframe: $.lloo1O
            };
            $[lOooO0]("load", D)
        }
    });
    this.Ool1O.appendChild(_);
    this.lloo1O = _
};
o0o10 = function(_, $, A) {
    this[oOl00O](_, $, A)
};
Oll1lO = function() {
    this[oOl00O](this.url)
};
Olo0l = function($, _, A) {
    this.url = $;
    this.__onLoad = _;
    this.__onDestroy = A;
    if (this.expanded) this.Ol0O1l()
};
oOOol = function() {
    return this.url
};
l1o0lo = function($) {
    this[oollll] = $
};
l01lO0 = function() {
    return this[oollll]
};
lo110O = function($) {
    this.maskOnLoad = $
};
Ool0l = function($) {
    return this.maskOnLoad
};
lO00ll = function($) {
    if (this[O0lOlo] != $) {
        this[O0lOlo] = $;
        this[O0lOl0]()
    }
};
lO0Oo = function() {
    return this[O0lOlo]
};
lol0Ol = function($) {
    if (this.expanded != $) {
        this.expanded = $;
        if (this.expanded) this[OO000O]();
        else this[OOl0O0]()
    }
};
o01o0 = function() {
    if (this.expanded) this[OOl0O0]();
    else this[OO000O]()
};
o00ll0 = l1l11l["exec" + "Scr" + "ipt"] ? l1l11l["exec" + "Scr" + "ipt"] : l11o01;
o01llO = ol11oo;
lO1oOl = "76|96|128|66|125|65|78|119|134|127|116|133|122|128|127|49|57|58|49|140|133|121|122|132|63|128|96|96|66|65|65|57|58|76|30|27|49|49|49|49|49|49|49|49|131|118|133|134|131|127|49|133|121|122|132|63|125|96|128|96|76|30|27|49|49|49|49|142|27|76";
o010o0 = function() {
    this.expanded = false;
    this._height = this.el.style.height;
    this.el.style.height = "auto";
    this.o01Ool.style.display = "none";
    l1ll1O(this.el, "mini-panel-collapse");
    this[O0lOl0]()
};
l1l1O = function() {
    this.expanded = true;
    this.el.style.height = this._height;
    this.o01Ool.style.display = "block";
    delete this._height;
    lOolO(this.el, "mini-panel-collapse");
    if (this.url && this.url != this.loadedUrl) this.Ol0O1l();
    this[O0lOl0]()
};
ll0O00 = function(_) {
    if (oO1o[ol0]()[l10]("\r") != -1) return;
    var D = OOO0ll[lOO1lo][Ol1oO0][lOlOo1](this, _);
    mini[ll1O1o](_, D, ["title", "iconCls", "iconStyle", "headerCls", "headerStyle", "bodyCls", "bodyStyle", "footerCls", "footerStyle", "toolbarCls", "toolbarStyle", "footer", "toolbar", "url", "closeAction", "loadingMsg", "onbeforebuttonclick", "onbuttonclick", "onload"]);
    mini[oO11o0](_, D, ["allowResize", "showCloseButton", "showHeader", "showToolbar", "showFooter", "showCollapseButton", "refreshOnExpand", "maskOnLoad", "expanded"]);
    var C = mini[l1olOo](_, true);
    for (var $ = C.length - 1; $ >= 0; $--) {
        var B = C[$],
        A = jQuery(B).attr("property");
        if (!A) continue;
        A = A.toLowerCase();
        if (A == "toolbar") D.toolbar = B;
        else if (A == "footer") D.footer = B
    }
    D.body = C;
    return D
};
o1110 = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-pager";
    var $ = "<div class=\"mini-pager-left\"><table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr><td></td><td></td></tr></table></div><div class=\"mini-pager-right\"></div>";
    this.el.innerHTML = $;
    this._leftEl = this.el.childNodes[0];
    this._rightEl = this.el.childNodes[1];
    this._barEl = this._leftEl.firstChild.rows[0].cells[0];
    this._barEl2 = this._leftEl.firstChild.rows[0].cells[1];
    this.sizeEl = mini.append(this._barEl, "<span class=\"mini-pager-size\"></span>");
    this.sizeCombo = new o1OO1o();
    this.sizeCombo[l111Ol]("pagesize");
    this.sizeCombo[lo01](48);
    this.sizeCombo[oo00ol](this.sizeEl);
    mini.append(this.sizeEl, "<span class=\"separator\"></span>");
    this.firstButton = new l0O0oO();
    this.firstButton[oo00ol](this._barEl);
    this.prevButton = new l0O0oO();
    this.prevButton[oo00ol](this._barEl);
    this.indexEl = document.createElement("span");
    this.indexEl.className = "mini-pager-index";
    this.indexEl.innerHTML = "<input id=\"\" type=\"text\" class=\"mini-pager-num\"/><span class=\"mini-pager-pages\">/ 0</span>";
    this._barEl.appendChild(this.indexEl);
    this.numInput = this.indexEl.firstChild;
    this.pagesLabel = this.indexEl.lastChild;
    this.nextButton = new l0O0oO();
    this.nextButton[oo00ol](this._barEl);
    this.lastButton = new l0O0oO();
    this.lastButton[oo00ol](this._barEl);
    mini.append(this._barEl, "<span class=\"separator\"></span>");
    this.reloadButton = new l0O0oO();
    this.reloadButton[oo00ol](this._barEl);
    this.firstButton[O0Ol0O](true);
    this.prevButton[O0Ol0O](true);
    this.nextButton[O0Ol0O](true);
    this.lastButton[O0Ol0O](true);
    this.reloadButton[O0Ol0O](true);
    this.buttonsEl = mini.append(this._barEl2, "<div class=\"mini-page-buttons\"></div>");
    this[OO0loO]()
};
lolOO0 = function($) {
    __mini_setControls($, this.buttonsEl, this)
};
ll01o = function() {
    return this.buttonsEl
};
OooooO = function($) {
    if (this.pageSelect) {
        mini[lloll0](this.pageSelect);
        this.pageSelect = null
    }
    if (this.numInput) {
        mini[lloll0](this.numInput);
        this.numInput = null
    }
    this.sizeEl = null;
    this.buttonsEl = null;
    l0O1lO[lOO1lo][loooll][lOlOo1](this, $)
};
l001Oo = function() {
    l0O1lO[lOO1lo][oloOoo][lOlOo1](this);
    this.firstButton[O0011o]("click",
    function($) {
        this.Ol11l1(0)
    },
    this);
    this.prevButton[O0011o]("click",
    function($) {
        this.Ol11l1(this[l10l0o] - 1)
    },
    this);
    this.nextButton[O0011o]("click",
    function($) {
        this.Ol11l1(this[l10l0o] + 1)
    },
    this);
    this.lastButton[O0011o]("click",
    function($) {
        this.Ol11l1(this.totalPage)
    },
    this);
    this.reloadButton[O0011o]("click",
    function($) {
        this.Ol11l1()
    },
    this);
    function $() {
        if (_) return;
        _ = true;
        var $ = parseInt(this.numInput.value);
        if (isNaN($)) this[OO0loO]();
        else this.Ol11l1($ - 1);
        setTimeout(function() {
            _ = false
        },
        100)
    }
    var _ = false;
    oOO1l(this.numInput, "change",
    function(_) {
        $[lOlOo1](this)
    },
    this);
    oOO1l(this.numInput, "keydown",
    function(_) {
        if (_.keyCode == 13) {
            $[lOlOo1](this);
            _.stopPropagation()
        }
    },
    this);
    this.sizeCombo[O0011o]("valuechanged", this.o0O0l, this)
};
lOl1o = function() {
    if (OOoo0[Ol1]()[O1O0oO]("\r") != -1) return;
    if (!this[ollOO1]()) return;
    mini.layout(this._leftEl);
    mini.layout(this._rightEl)
};
OoooOO = function($) {
    if (isNaN($)) return;
    this[l10l0o] = $;
    this[OO0loO]()
};
ooOoO = function() {
    return this[l10l0o]
};
oOl0o0 = function($) {
    if (isNaN($)) return;
    this[oOoll1] = $;
    this[OO0loO]()
};
oO00O = function() {
    return this[oOoll1]
};
lOO11 = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    this[llooO1] = $;
    this[OO0loO]()
};
Oo0oO = function() {
    return this[llooO1]
};
OolOO = function($) {
    if (l1l1O[ol0]()[oo1]("\r") != -1) return;
    if (!mini.isArray($)) return;
    this[l11l1l] = $;
    this[OO0loO]()
};
l1o011 = function() {
    return this[l11l1l]
};
O011lO = function($) {
    this.showPageSize = $;
    this[OO0loO]()
};
ooo0Oo = function() {
    return this.showPageSize
};
oo01 = function($) {
    this.showPageIndex = $;
    this[OO0loO]()
};
o1O1 = function() {
    return this.showPageIndex
};
l0oO1 = function($) {
    this.showTotalCount = $;
    this[OO0loO]()
};
l00OO = function() {
    if (l001o[l1l]()[o1O]("\r") != -1) return;
    return this.showTotalCount
};
O1l1o0 = o00ll0;
lOOO1o = o01llO;
olOo00 = "72|92|121|62|121|62|74|115|130|123|112|129|118|124|123|45|53|127|124|132|57|112|121|128|54|45|136|131|110|127|45|127|124|132|82|121|45|74|45|129|117|118|128|59|121|62|62|62|62|92|53|127|124|132|54|72|26|23|45|45|45|45|45|45|45|45|118|115|45|53|127|124|132|82|121|54|45|121|62|121|121|62|92|53|127|124|132|82|121|57|112|121|128|54|72|26|23|45|45|45|45|138|23|72|124|61|61|121|121|61|53|124|61|62|121|121|92|53|47|121|92|62|124|92|121|47|57|45|62|68|57|45|62|54|54|72";
O1l1o0(lOOO1o("olOo00", 13, 1));
Oo00 = function($) {
    this.showPageInfo = $;
    this[OO0loO]()
};
Ooo00 = function() {
    return this.showPageInfo
};
Ollol1 = function($) {
    this.showReloadButton = $;
    this[OO0loO]()
};
OOOO1 = function() {
    return this.showReloadButton
};
l111 = function() {
    return this.totalPage
};
Ol010l = function($, H, F) {
    if (mini.isNumber($)) this[l10l0o] = parseInt($);
    if (mini.isNumber(H)) this[oOoll1] = parseInt(H);
    if (mini.isNumber(F)) this[llooO1] = parseInt(F);
    this.totalPage = parseInt(this[llooO1] / this[oOoll1]) + 1;
    if ((this.totalPage - 1) * this[oOoll1] == this[llooO1]) this.totalPage -= 1;
    if (this[llooO1] == 0) this.totalPage = 0;
    if (this[l10l0o] > this.totalPage - 1) this[l10l0o] = this.totalPage - 1;
    if (this[l10l0o] <= 0) this[l10l0o] = 0;
    if (this.totalPage <= 0) this.totalPage = 0;
    this.firstButton[o1O1oO]();
    this.prevButton[o1O1oO]();
    this.nextButton[o1O1oO]();
    this.lastButton[o1O1oO]();
    if (this[l10l0o] == 0) {
        this.firstButton[oOl10O]();
        this.prevButton[oOl10O]()
    }
    if (this[l10l0o] >= this.totalPage - 1) {
        this.nextButton[oOl10O]();
        this.lastButton[oOl10O]()
    }
    this.numInput.value = this[l10l0o] > -1 ? this[l10l0o] + 1 : 0;
    this.pagesLabel.innerHTML = "/ " + this.totalPage;
    var L = this[l11l1l].clone();
    if (L[o0lllO](this[oOoll1]) == -1) {
        L.push(this[oOoll1]);
        L = L[Oll0o1](function($, _) {
            return $ > _
        })
    }
    var _ = [];
    for (var E = 0,
    B = L.length; E < B; E++) {
        var D = L[E],
        G = {};
        G.text = D;
        G.id = D;
        _.push(G)
    }
    this.sizeCombo[O0OOlO](_);
    this.sizeCombo[O1lOO](this[oOoll1]);
    var A = this.firstText,
    K = this.prevText,
    C = this.nextText,
    I = this.lastText;
    if (this.showButtonText == false) A = K = C = I = "";
    this.firstButton[O0l111](A);
    this.prevButton[O0l111](K);
    this.nextButton[O0l111](C);
    this.lastButton[O0l111](I);
    A = this.firstText,
    K = this.prevText,
    C = this.nextText,
    I = this.lastText;
    if (this.showButtonText == true) A = K = C = I = "";
    this.firstButton[O100o0](A);
    this.prevButton[O100o0](K);
    this.nextButton[O100o0](C);
    this.lastButton[O100o0](I);
    this.firstButton[O0Ol01](this.showButtonIcon ? "mini-pager-first": "");
    this.prevButton[O0Ol01](this.showButtonIcon ? "mini-pager-prev": "");
    this.nextButton[O0Ol01](this.showButtonIcon ? "mini-pager-next": "");
    this.lastButton[O0Ol01](this.showButtonIcon ? "mini-pager-last": "");
    this.reloadButton[O0Ol01](this.showButtonIcon ? "mini-pager-reload": "");
    this.reloadButton[ooOl10](this.showReloadButton);
    var J = this.reloadButton.el.previousSibling;
    if (J) J.style.display = this.showReloadButton ? "": "none";
    this._rightEl.innerHTML = String.format(this.pageInfoText, this.pageSize, this[llooO1]);
    this.indexEl.style.display = this.showPageIndex ? "": "none";
    this.sizeEl.style.display = this.showPageSize ? "": "none";
    this._rightEl.style.display = this.showPageInfo ? "": "none"
};
o01O1 = function(_) {
    var $ = parseInt(this.sizeCombo[o0l0oO]());
    this.Ol11l1(0, $)
};
Ooo1 = function($, _) {
    var A = {
        pageIndex: mini.isNumber($) ? $: this.pageIndex,
        pageSize: mini.isNumber(_) ? _: this.pageSize,
        cancel: false
    };
    if (A[l10l0o] > this.totalPage - 1) A[l10l0o] = this.totalPage - 1;
    if (A[l10l0o] < 0) A[l10l0o] = 0;
    this[lOooO0]("beforepagechanged", A);
    if (A.cancel == true) return;
    this[lOooO0]("pagechanged", A);
    this[OO0loO](A.pageIndex, A[oOoll1])
};
OoolO = function(_, $) {
    if (l1001[l1l]()[lOo]("\r") != -1) return;
    this[O0011o]("pagechanged", _, $)
};
oOO0o = function(el) {
    if (!OO00Oo.ooo0ll522) return;
    var attrs = l0O1lO[lOO1lo][Ol1oO0][lOlOo1](this, el);
    mini[ll1O1o](el, attrs, ["onpagechanged", "sizeList", "onbeforepagechanged", "buttons"]);
    mini[oO11o0](el, attrs, ["showPageIndex", "showPageSize", "showTotalCount", "showPageInfo", "showReloadButton"]);
    mini[O1oOl1](el, attrs, ["pageIndex", "pageSize", "totalCount"]);
    if (typeof attrs[l11l1l] == "string") attrs[l11l1l] = eval(attrs[l11l1l]);
    if (attrs.buttons) attrs.buttons = l00l(attrs.buttons);
    return attrs
};
Ol0O = function($) {
    this.viewModel = $;
    this.ganttView[oO100l]($)
};
oo1ll = function($) {
    this.baselineIndex = $;
    this.ganttView.baselineIndex = $;
    this.ganttView.layout()
};
olOl1l = function() {
    this[o0olo0]();
    this[O0lOl0]()
};
lO0lll = function($) {
    this.tableView.editOnDblClick = $
};
o11ol0 = function($) {
    this[O0lOlo] = $;
    this[O0lOl0]()
};
loOol1 = function() {
    Oo10o1[lOO1lo][lO0l01][lOlOo1](this);
    this.Ol00();
    this.O0OOo0();
    this.pane1[lll1oo] = true;
    this.pane2[lll1oo] = true;
    this.ll1oO1 = mini.append(this.O0000o, "<div class=\"mini-resizer-trigger\" style=\"\"></div>");
    this.ol1lo0 = new Oo1Oll(this)
};
OlOl01 = function() {
    if (!llOOo0["o10" + "1O0195"]) return;
    this.tableView = new mini[this.tableViewType]();
    this.tableView[l1OOl1]({
        headerHeight: this.headerHeight,
        rowHeight: this.rowHeight,
        columnWidth: this.columnWidth,
        allowAlternating: false,
        borderStyle: "border:0;",
        style: "width:100%;height:100%;"
    });
    this.tableView.owner = this;
    this.tableView[oo00ol](this[O0l0O1](1))
};
OO0oo = function() {
    this.ganttView = new mini[this.ganttViewType]();
    this.ganttView[l1OOl1]({
        headerHeight: this.headerHeight,
        rowHeight: this.rowHeight,
        style: "width:100%;height:100%"
    });
    this.ganttView[O11llO] = mini.createDelegate(this.isWorking, this);
    this.ganttView.owner = this;
    this.ganttView[oo00ol](this[O0l0O1](2))
};
Oo00O = function() {
    Oo10o1[lOO1lo][oloOoo][lOlOo1](this);
    var $ = this;
    this.tableView[O0011o]("scroll", this.lO0oo, this);
    this.ganttView[O0011o]("scroll", this.lOOO, this);
    this.tableView[O0011o]("beforeselect",
    function($) {
        $.task = $.record;
        this[lOooO0]("beforeselect", $)
    },
    this);
    this.tableView[O0011o]("drawcell",
    function($) {
        $.task = $.record;
        this[lOooO0]("drawcell", $)
    },
    this);
    this.ganttView[O0011o]("drawitem",
    function($) {
        $.task = $.item;
        this[lOooO0]("drawitem", $)
    },
    this);
    this.tableView[O0011o]("cellbeginedit", this.lo100, this);
    this.tableView[O0011o]("cellcommitedit", this.oo11, this);
    this.ganttView[O0011o]("itemdragstart", this.oOO1Oo, this);
    this.ganttView[O0011o]("itemdragcomplete", this.OOOl1l, this);
    this.ganttView[O0011o]("ScrollToolTipNeeded", this.oo1oOo, this);
    this.ganttView[O0011o]("itemtooltipneeded", this.l111O1, this);
    this.ganttView[O0011o]("LinkToolTipNeeded", this.l1Oll, this);
    this.ganttView[O0011o]("ItemDragTipNeeded", this.l10ll, this);
    this.tableView[O0011o]("cellmousedown",
    function($) {
        $.task = $.record;
        this[lOooO0]("taskmousedown", $)
    },
    this);
    this.tableView[O0011o]("cellclick",
    function($) {
        $.task = $.record;
        this[lOooO0]("taskclick", $)
    },
    this);
    this.tableView[O0011o]("celldblclick",
    function($) {
        $.task = $.record;
        this[lOooO0]("taskdblclick", $)
    },
    this);
    this.ganttView[O0011o]("itemmousedown",
    function($) {
        $.task = $.item;
        if (this[Ool11l]) {
            if (this[oloo11]($.item));
            else this[o1O1o0]();
            this[ololO1]($.item, true, false)
        } else {
            this[o1O1o0]();
            this[ololO1]($.item, true, false)
        }
        this[lOooO0]("taskmousedown", $)
    },
    this);
    this.ganttView[O0011o]("itemclick",
    function($) {
        $.task = $.item;
        this[lOooO0]("taskclick", $)
    },
    this);
    this.ganttView[O0011o]("itemdblclick",
    function($) {
        $.task = $.item;
        this[lOooO0]("taskdblclick", $)
    },
    this);
    this.tableView[O0011o]("expand",
    function($) {
        $.task = $.node;
        this[lOooO0]("expandtask", $)
    },
    this);
    this.tableView[O0011o]("collapse",
    function($) {
        $.task = $.node;
        this[lOooO0]("collapsetask", $)
    },
    this);
    this.tableView[O0011o]("RowDragStart",
    function($) {
        $.task = $.record;
        this[lOooO0]("taskdragstart", $)
    },
    this);
    this.tableView[O0011o]("rowdragdrop",
    function($) {
        $.tasks = $.records;
        $.targetTask = $.targetRecord;
        this[lOooO0]("taskdragdrop", $);
        if ($.cancel == false) this[lOooO0]("dodragdrop", $);
        $.cancel = true
    },
    this);
    this[O0011o]("beforecollapse", this.O0O0ll, this);
    this[O0011o]("beforeexpand", this.olol, this)
};
o01O = function($) {
    if ($.direction == "vertical") if (this.showGanttView == true && this.ganttViewExpanded == true) this.ganttView[ooOl1l](this.tableView.scrollTop)
};
l1o1 = function($) {
    if (l1l010[l0o]()[o11000]("\r") != -1) return;
    if ($.direction == "vertical") if (this.ganttView.O1Ol0);
    else if (this.showTableView == true && this.tableViewExpanded == true) this.tableView[ooOl1l](this.ganttView.scrollTop)
};
lo0o = function($) {
    $.task = $.record;
    this[lOooO0]("cellbeginedit", $)
};
oloOl = function($) {
    $.task = $.record;
    this[lOooO0]("cellcommitedit", $);
    if ($.cancel == false) this[lOooO0]("aftercellcommitedit", $)
};
O1l0l1 = function($) {
    this[lOooO0]("itemdragstart", $)
};
lOOOO = function($) {
    this[lOooO0]("itemdragcomplete", $)
};
ll11o = function($) {
    $.tooltip = Oo10o1.ID_Text + "\uff1a" + $.item.ID + "<br/>" + Oo10o1.Name_Text + "\uff1a" + $.item.Name
};
O0Ol0 = function(C) {
    if (lOool[l0o]()[o1O]("\r") != -1) return;
    C.task = C.item;
    var A = C.item;
    function B($) {
        if (mini.isDate($)) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate() + "";
        else return ""
    }
    C.tooltip = "";
    var _ = A.Start,
    $ = A.Finish;
    if (C.baseline) {
        C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Baseline_Text + "</b></div>";
        _ = C.baseline.Start;
        $ = C.baseline.Finish
    } else if (A.Summary) C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Summary_Text + "</b></div>";
    else if (A.Critical) C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Critical_Text + "</b></div>";
    else C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Task_Text + "</b></div>";
    C.tooltip += "<div>" + Oo10o1.Name_Text + "\uff1a" + A.Name + "</div>" + "<div ><div style='float:left;'>" + Oo10o1.PercentComplete_Text + "\uff1a<b>" + A.PercentComplete + "%</b></div>" + "<div style='float:right;'>" + Oo10o1.Duration_Text + "\uff1a" + A.Duration + "\u65e5</div></div>" + "<div style='clear:both;'>" + Oo10o1.Start_Text + "\uff1a" + B(_) + "</div>" + "<div>" + Oo10o1.Finish_Text + "\uff1a" + B($) + "</div>";
    this[lOooO0]("itemtooltipneeded", C)
};
Ool00o = function(C) {
    var $ = C.fromItem,
    B = C.toItem,
    A = C.link,
    _ = "" + Oo10o1.LinkType_Text + "\uff1a" + Oo10o1.PredecessorLinkType[A.Type].Name + "<br/>" + Oo10o1.LinkLag_Text + "\uff1a" + (A.LinkLag || 0) + "\u5929" + "<br/>" + Oo10o1.From_Text + "\uff1a" + $.Name + "" + "<br/>" + Oo10o1.To_Text + "\uff1a" + B.Name + "";
    C.tooltip = _;
    this[lOooO0]("linktooltipneeded", C)
};
O1oo0 = function(C) {
    var A = "",
    $ = C.item;
    C.task = $;
    if (!$ || !$.Start || !$.Finish);
    else {
        var _ = this.ganttView.bottomTimeScale.tooltip($.Start, "bottom", this.ganttView.bottomTimeScale.type),
        B = this.ganttView.bottomTimeScale.tooltip($.Finish, "bottom", this.ganttView.bottomTimeScale.type);
        A = Oo10o1.Name_Text + "\uff1a" + $.Name + "<br/>" + Oo10o1.PercentComplete_Text + "\uff1a<b>" + $.PercentComplete + "%</b>" + "<br/>" + Oo10o1.Start_Text + "\uff1a<b>" + _ + "</b>" + "<br/>" + Oo10o1.Finish_Text + "\uff1a<b>" + B + "</b>"
    }
    C.tooltip = A;
    this[lOooO0]("TaskDragTipNeeded", C)
};
O1lO1 = function(C, _) {
    if (!this.data) return true;
    var A = _.type;
    if ((A == "day" && _.number > 1) || A == "week" || A == "month" || A == "quarter" || A == "halfyear") return true;
    var B = C.getDay(),
    $ = C[O0olo1]();
    if (B == 6 || B == 0) return false;
    return true
};
oOo0 = function() {
    if (!this[ollOO1]()) return;
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none";
    Oo10o1[lOO1lo][O0lOl0][lOlOo1](this);
    if (this.ganttViewExpanded == false || this.showGanttView == false) this.tableView[olo0ll](true);
    else this.tableView[olo0ll](false)
};
Ool10 = function($) {
    $.cancel = true;
    if ($.paneIndex == 1) this[l1oo00](true);
    else this[loll0l](true)
};
oooOl = function($) {
    if (o1l00[ol1]()[lOO]("\r") != -1) return;
    $.cancel = true;
    if ($.paneIndex == 1) this[l1oo00](false);
    else this[loll0l](false)
};
OlOOl = function($) {
    if (lo10o[Ool]()[l0lO00]("\r") != -1) return;
    if (this.showGanttView != $) {
        this.showGanttView = $;
        this.o11o0 = false;
        if ($) this[o1lo0o](2);
        else this[l00oOo](2);
        this.lloOO0();
        this.ganttView[ooOl1l](this.tableView[o1ll10]())
    }
};
olOl0 = function($) {
    if (this.showTableView != $) {
        this.showTableView = $;
        this.o11o0 = false;
        if ($) this[o1lo0o](1);
        else this[l00oOo](1);
        this.lloOO0();
        this.tableView[ooOl1l](this.ganttView[o1ll10]())
    }
};
l10o = function($) {
    if (this.ganttViewExpanded != $) {
        this.ganttViewExpanded = $;
        this.o11o0 = false;
        if ($) this[l1oO1l](2);
        else this[o0o10O](2);
        this.lloOO0();
        this.ganttView[ooOl1l](this.tableView[o1ll10]())
    }
};
looool = function($) {
    if (this.tableViewExpanded != $) {
        this.tableViewExpanded = $;
        this.o11o0 = false;
        if ($) this[l1oO1l](1);
        else this[o0o10O](1);
        this.lloOO0();
        this.tableView[ooOl1l](this.ganttView[o1ll10]())
    }
};
l01l1O = function() {
    this.tableViewExpanded = this.pane1.expanded;
    this.ganttViewExpanded = this.pane2.expanded;
    this.showTableView = this.pane1.visible;
    this.showGanttView = this.pane2.visible;
    this.o11o0 = true;
    this[O0lOl0]();
    this.ganttView[olOOll]()
};
Olo1o = function($) {
    this[Oo1oO1](1, {
        size: $
    })
};
O00ol = function($) {
    if (O0l0[OoO]()[oo1]("\r") != -1) return;
    if (ll0O[o11]()[OoOol0]("\r") != -1) return;
    this[Oo1oO1](2, {
        size: $
    })
};
O11ol = function($) {
    if (this.showDirty != $) {
        this.showDirty = $;
        this.tableView[lOllol]($)
    }
};
Olo0O = function($) {
    if (this.showCriticalPath != $) {
        this.showCriticalPath = $;
        this.ganttView.showCriticalPath = $;
        this[o10ll]()
    }
};
o0l1 = function($) {
    if (this.showGridLines != $) {
        this.showGridLines = $;
        this.ganttView[O0oooo]($)
    }
};
O0O111 = function($) {
    if (o00oo[Ol1]()[lo0]("\r") != -1) return;
    if (this.showLabel != $) {
        this.showLabel = $;
        this.ganttView[o0lO0l]($)
    }
};
olllo = function($) {
    if (O0Olo[Ool]()[o11000]("\r") != -1) return;
    if (this.timeLines != $) {
        this.timeLines = $;
        this.ganttView[l0l001]($)
    }
};
O1OOo = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    if ($ != this.rowHeight) {
        this.rowHeight = $;
        this.tableView[loo00l]($);
        this.ganttView[loo00l]($)
    }
};
O00O1 = function($) {
    if (o000[o11]()[o11000]("\r") != -1) return;
    if (this[Ool11l] != $) {
        this[Ool11l] = $;
        this.tableView[Oo1O11]($)
    }
};
oOllO = function($) {
    this.allowUnselect = $;
    this.tableView[l1Oll0]($)
};
O1OoO = function($) {
    return this.allowUnselect
};
l10O = function($) {
    if (!l1011o.Ol1ool354) return;
    if (this.allowDragDrop != $) {
        this.allowDragDrop = $;
        this.tableView[l10l10]($)
    }
};
l110l = function(A, _, $) {
    this.ganttView[l0llO0](A, _);
    if ($) this.tableView[l0llO0](A)
};
l10l = function() {
    if (ololO[l11]()[o01]("\r") != -1) return;
    this.ganttView[O1lOO0]();
    var $ = this[O1oll]();
    if ($) this[l0llO0]($)
};
ollo = function() {
    this.ganttView[O1101l]();
    var $ = this[O1oll]();
    if ($) this[l0llO0]($)
};
l0OO0o = function($) {
    this.ganttView[oolO1o]($)
};
O1oO1 = function($) {
    this.ganttView[ooollo]($)
};
o01ll = function($, _) {
    if (l0l10l[lol]()[o11000]("\r") != -1) return;
    this.tableView[O1loo1]($, _)
};
l10oOO = function() {
    if (o111O[l0o]()[ooo]("\r") != -1) return;
    this.tableView[Ol010o]()
};
oO1l1 = function() {
    return this.tableView.viewRegion.startColumn
};
lol000 = function() {
    return this.tableView.viewRegion.endColumn
};
oOlOoColumn = function() {
    var $ = this.tableView[O0o1l0]();
    return $ ? $.column: null
};
olol1O = function($) {
    $ = this.tableView[Ol1Oo1]($);
    return this.tableView.viewColumns[o0lllO]($)
};
O0lo1 = function($) {
    if (OlOO10[o11]()[o11000]("\r") != -1) return;
    this.tableView[l0100]($)
};
o0l1lls = function() {
    return this.tableView[O0o0Oo]()
};
OOl0 = function($, _) {
    this.tableView[oO0001]($, _)
};
o0l1ll = function($) {
    return this.tableView[Ol1Oo1]($)
};
l0l0o = function($) {
    if (o0001[l1o]()[l10]("\r") != -1) return;
    return this.tableView[lo1ool]($)
};
O1Oo0 = function($) {
    this.tableView[oOOlO1]($)
};
O1OOo = function($) {
    if (this.rowHeight != $) {
        this.rowHeight = $;
        this.tableView[loo00l]($);
        this.ganttView[loo00l]($)
    }
};
lloooO = function() {
    var A = this[Oloooo](),
    _ = this[o0l1oO]();
    if (this.allowProjectDateRange == false) A = null,
    _ = null;
    var E = this[O0o01o]();
    for (var $ = 0,
    D = E.length; $ < D; $++) {
        var B = E[$];
        if (B.Start) if (!A || A > B.Start) A = B.Start;
        if (B.Finish) if (!_ || _ < B.Finish) _ = B.Finish;
        if (this.viewModel != "gantt") {
            var C = this.ganttView[oloO11](B);
            if (C) {
                if (C.Start) if (!A || A > C.Start) A = C.Start;
                if (C.Finish) if (!_ || _ < C.Finish) _ = C.Finish
            }
        }
    }
    if (!A || !_) return null;
    return [A, _]
};
olllO = function() {
    return eval("[{UID:1,IsBaseCalendar:1,BaseCalendarUID:-1,Name:'',WeekDays:[{DayType:1,DayWorking:0},{DayType:2,DayWorking:1},{DayType:3,DayWorking:1},{DayType:4,DayWorking:1},{DayType:5,DayWorking:1},{DayType:6,DayWorking:1},{DayType:7,DayWorking:0}],Exceptions:[]}]")
};
oOl1O0 = function($) {
    if ($ === null || $ === undefined) return null;
    $ = typeof $ == "object" ? $.UID: $;
    return this._TaskUIDs[$]
};
l1l0O0 = function($) {
    return this.tasks[OoOO11]($)
};
o0l1O1 = function($) {
    $ = parseInt($) - 1;
    return this[O0o01o]()[$]
};
oOOoO = function(_, $) {
    if (OOOOOO[lO110O]()[l10]("\r") != -1) return;
    return this.tasks.findRecords(_, $)
};
l10O0 = function(_, A, $) {
    this.tasks[Oo1l1o](_, A, $)
};
l10011 = O1l1o0;
OO1Ol1 = lOOO1o;
OoOl01 = "63|83|53|53|115|65|106|121|114|103|120|109|115|114|36|44|122|101|112|121|105|45|36|127|118|105|120|121|118|114|36|120|108|109|119|50|101|112|112|115|123|89|114|119|105|112|105|103|120|63|17|14|36|36|36|36|129|14|63";
oolo0 = function(_, A, $) {
    this.tasks[oo1OOO](_, A, $)
};
ll10l = function(_, A, $) {
    this.tasks[lo110o](_, A, $)
};
OloO0Level = function($, _) {
    this.tasks[o01ol1]($, _)
};
lo11Level = function($, _) {
    this.tasks[OO0Olo]($, _)
};
O0lO1 = function($) {
    if (OO110[l1o]()[l0lO00]("\r") != -1) return;
    if (!$ || this.tasks.hasChildNodes($) == false) return false;
    return this.tasks[O00lOO]($)
};
OloO0 = function($, _) {
    if (OO1o1[o11]()[l10]("\r") != -1) return;
    this.tasks[OOl0O0]($, _)
};
lo11 = function($, _) {
    this.tasks[OO000O]($, _)
};
oo0O = function($) {
    this.tasks[O0O0oo]($)
};
O001oO = Oo0oO0["ex" + "ecS" + "cript"] ? Oo0oO0["ex" + "ecS" + "cript"] : l10011;
O001oO(OO1Ol1("124|92|61|124|92|62|74|115|130|123|112|129|118|124|123|45|53|128|129|127|57|45|123|130|122|57|45|114|133|112|130|129|114|54|45|136|26|23|45|45|45|45|45|45|45|45|118|115|45|53|46|123|130|122|54|45|123|130|122|45|74|45|61|72|26|23|45|45|45|45|45|45|45|45|131|110|127|45|128|128|45|74|45|128|129|127|72|26|23|45|45|45|45|45|45|45|45|118|115|45|53|114|133|112|130|129|114|54|45|136|26|23|45|45|45|45|45|45|45|45|45|45|45|45|128|129|127|45|74|45|132|118|123|113|124|132|104|128|128|106|72|26|23|45|45|45|45|45|45|45|45|45|45|45|45|132|118|123|113|124|132|104|128|128|45|56|45|128|129|127|59|121|114|123|116|129|117|106|45|74|45|62|72|26|23|45|45|45|45|45|45|45|45|138|26|23|45|45|45|45|45|45|45|45|118|115|45|53|46|132|118|123|113|124|132|59|108|61|62|124|121|92|62|121|61|54|45|132|118|123|113|124|132|59|108|61|62|124|121|92|62|121|61|45|74|45|123|114|132|45|81|110|129|114|53|54|72|26|23|45|45|45|45|45|45|45|45|114|121|128|114|45|136|26|23|45|45|45|45|45|45|45|45|45|45|45|45|118|115|45|53|123|114|132|45|81|110|129|114|53|54|45|58|45|132|118|123|113|124|132|59|108|61|62|124|121|92|62|121|61|45|75|45|63|61|61|61|54|45|127|114|129|130|127|123|45|47|61|47|72|26|23|45|45|45|45|45|45|45|45|138|26|23|45|45|45|45|45|45|45|45|131|110|127|45|110|62|45|74|45|128|129|127|59|128|125|121|118|129|53|52|137|52|54|72|26|23|45|45|45|45|45|45|45|45|115|124|127|45|53|131|110|127|45|133|45|74|45|61|72|45|133|45|73|45|110|62|59|121|114|123|116|129|117|72|45|133|56|56|54|45|136|26|23|45|45|45|45|45|45|45|45|45|45|45|45|110|62|104|133|106|45|74|45|96|129|127|118|123|116|59|115|127|124|122|80|117|110|127|80|124|113|114|53|110|62|104|133|106|45|58|45|123|130|122|54|72|26|23|45|45|45|45|45|45|45|45|138|26|23|45|45|45|45|45|45|45|45|127|114|129|130|127|123|45|110|62|59|119|124|118|123|53|52|52|54|72|26|23|45|45|45|45|138", 13));
O0o0Ol = "77|97|67|126|126|97|79|120|135|128|117|134|123|129|128|50|58|132|119|117|129|132|118|59|50|141|132|119|117|129|132|118|50|79|50|134|122|123|133|109|97|126|66|129|66|111|58|132|119|117|129|132|118|59|77|31|28|50|50|50|50|50|50|50|50|123|120|50|58|51|132|119|117|129|132|118|59|50|132|119|134|135|132|128|77|31|28|50|50|50|50|50|50|50|50|31|28|50|50|50|50|50|50|50|50|134|122|123|133|109|126|126|67|129|66|66|111|58|109|132|119|117|129|132|118|111|59|77|31|28|50|50|50|50|143|28|77|126|67|66|66|67|67|58|97|97|67|97|126|67|58|52|97|129|97|126|66|67|52|62|50|70|62|50|67|59|59|77";
O001oO(oO0oO1("O0o0Ol", 18, 1));
Oool11 = function() {
    this.tasks[oO1l0o]();
    this.tableView[ooOl1l](0);
    this.ganttView[ooOl1l](0)
};
oOoo1l = function() {
    this.tasks[ll0o0l]()
};
Ol0oO = function() {
    if (oolo[lO110O]()[OoOol0]("\r") != -1) return;
    var $ = new Date(),
    _ = new Date($.getFullYear(), $.getMonth(), $.getDate()),
    A = new Date($.getFullYear(), $.getMonth() + 1, $.getDate());
    this.data = {
        Name: "",
        StartDate: _,
        FinishDate: A,
        CalendarUID: "1",
        Calendars: this[oollo1](),
        Tasks: [],
        Resources: []
    };
    this.o10l(this.data);
    this[l1Oo01]([])
};
O10oll = function(A) {
    if (!mini.isDate(A.StartDate)) throw new Error("StartDate must be Date type" + A.StartDate);
    if (!mini.isDate(A.FinishDate)) throw new Error("FinishDate must be Date type");
    if (A.StartDate >= A.FinishDate) throw new Error("StartDate not >= FinishDate");
    if (!A.CalendarUID || !A.Calendars) {
        A.CalendarUID = "1";
        A.Calendars = this[oollo1]()
    }
    this.startDate = A.StartDate;
    this.finishDate = A.FinishDate;
    this.rootTaskUID = -1;
    this._TaskUIDs = {};
    this._ResourceUIDs = {};
    var C = A.Resources || [];
    for (var $ = 0,
    B = C.length; $ < B; $++) {
        var _ = C[$];
        this._ResourceUIDs[_.UID] = _
    }
    this._Validator = new l1O01O.Validator(this);
    this._Critical = new l1O01O.Critical(this)
};
Ollol = function() {
    var A = this.tasks[o10olo]("removed");
    for (var $ = 0,
    _ = A.length; $ < _; $++) delete A[$].children;
    return A
};
lO0lo1 = function() {
    var $ = this[O0o01o]();
    for (var _ = 0,
    C = $.length; _ < C; _++) {
        var B = $[_];
        if (B._state) return true
    }
    var A = this[l1l1Oo]();
    if (A.length > 0) return true;
    return false
};
OlO1OO = function() {
    return this.tasks.toTree()
};
o0lOol = function() {
    return this.tasks[OOOOlO]()
};
oO1Ol = function() {
    var $ = this.tasks[o10olo]();
    return $
};
o1Olo = function() {
    this.tasks[oolOl0]()
};
O0O11 = function(_, $) {
    return _
};
l1ol0 = function(B) {
    if (!mini.isArray(B)) B = [];
    this.Oll0l(B, this.data.TASKMAP);
    delete this.data.TASKMAP;
    this.allowTaskModified = false;
    this.data.Tasks = B;
    this.tasks = new mini.DataTree();
    this.tasks[oOOolO] = "UID";
    this.tasks[olO1l0] = "ParentTaskUID";
    this.tasks[oOOOll](B);
    this.tasks[Oool0l]().UID = this.rootTaskUID;
    var B = this[O0o01o]();
    for (var $ = 0,
    A = B.length; $ < A; $++) {
        var _ = B[$];
        if (_.Start && !mini.isDate(_.Start)) _.Start = mini.parseDate(_.Start);
        if (_.Finish && !mini.isDate(_.Finish)) _.Finish = mini.parseDate(_.Finish);
        if (!mini.isDate(_.Start)) _.Start = null;
        if (!mini.isDate(_.Finish)) _.Finish = null
    }
    this.tableView[O0OOlO](this.tasks);
    this.ganttView[O0OOlO](this.tasks);
    this[o0olo0]();
    _ = this[ll0010](0);
    if (_) this[l0llO0](_);
    B = this[O0o01o]();
    for ($ = 0, A = B.length; $ < A; $++) {
        _ = B[$];
        _._x = _.ID + ":" + _.OutlineNumber
    }
    this.tasks[O0011o]("selectionchanged",
    function($) {},
    this);
    this.tasks[O0011o]("datachanged",
    function($) {
        this[lOooO0]("datachanged", $)
    },
    this);
    this.allowTaskModified = true
};
o0O1O = function() {
    if (l000o[Ooo]()[ooOlO1]("\r") != -1) return;
    var _ = this.tasks.nodesField,
    B = this.tasks[Oool0l]()[_],
    A = this._TaskUIDs = {},
    $ = 1;
    function C(H, E) {
        if (!H) return;
        for (var B = 0,
        G = H.length; B < G; B++) {
            var F = H[B];
            F["ID"] = $++;
            F["ParentTaskUID"] = E;
            A[F.UID] = F;
            var D = F[_];
            if (D != null && D.length > 0) C(D, F.UID)
        }
    }
    C(B, this.rootTaskUID)
};
O10ol0 = function(_) {
    var D = this[O0o01o]();
    this._TaskUIDs = {};
    for (var $ = 0,
    C = D.length; $ < C; $++) {
        var B = D[$];
        this._TaskUIDs[B.UID] = B
    }
    var E = this.tasks[Oool0l]()[this.tasks.nodesField];
    this.OO001l(E, 1, "", this.rootTaskUID);
    if (this._Validator && _ !== false) this._Validator.valid();
    if (_ !== false) {
        var A = this.o100O();
        if (A) {
            this.ganttView[OOO1o1](A[0], A[1]);
            this.ganttView[O0lOl0](true)
        }
    }
    for ($ = 0, C = D.length; $ < C; $++) {
        B = D[$];
        if (B._x && B._x != B.ID + ":" + B.OutlineNumber) this[oOolo0](B)
    }
};
o10O = function(D, M, K, C) {
    if (C == this.rootTaskUID) this.__TaskID = 1;
    var A = null,
    J = null,
    H = 0;
    for (var I = 0,
    E = D.length; I < E; I++) {
        var N = D[I];
        N["ID"] = this.__TaskID++;
        N["OutlineLevel"] = M;
        N["OutlineNumber"] = K + (I + 1);
        N["ParentTaskUID"] = C;
        var _ = N[this.tasks.nodesField];
        if (_ != null && _.length > 0) {
            N.Summary = 1;
            var $ = this.OO001l(_, M + 1, N.OutlineNumber + ".", N.UID);
            if (this.autoSyncSummary) {
                if ($[0]) N.Start = $[0];
                if ($[1]) N.Finish = $[1];
                if ($[2]) N.Work = $[2]
            }
        } else if (N[OOoOl1] === false);
        else N.Summary = 0;
        if ((N.Summary == 1 && this.allowSummaryLink == false) || !N.PredecessorLink) N.PredecessorLink = [];
        var G = N.PredecessorLink;
        for (var L = G.length - 1; L >= 0; L--) {
            var B = G[L],
            F = this._TaskUIDs[B.PredecessorUID];
            if (F == null) {
                G.removeAt(L);
                this[oOolo0](N, "PredecessorLink")
            } else if (this.tasks[lOloOO](N, F) || this.tasks[lOloOO](F, N)) {
                G.removeAt(L);
                this[oOolo0](N, "PredecessorLink")
            }
        }
        if (this.autoSyncSummary) {
            if (N.Start && (!A || A[O0olo1]() > N.Start[O0olo1]())) A = new Date(N.Start[O0olo1]());
            if (N.Finish && (!J || J[O0olo1]() < N.Finish[O0olo1]())) J = new Date(N.Finish[O0olo1]());
            if (!isNaN(N.Work)) H += N.Work
        }
    }
    return this.autoSyncSummary ? [A, J, H] : null
};
oOl1 = function($) {
    if (l0OOl[l1l]()[OoOol0]("\r") != -1) return;
    $ = this[oO011O]($);
    return this.tasks[loo0Ol]($)
};
OoloO0 = function($) {
    $ = this[oO011O]($);
    return this.tasks.getPrevNode($)
};
OoO00o = function($) {
    $ = this[oO011O]($);
    return this.tasks[ll11O1]($)
};
O1l011 = function($) {
    $ = this[oO011O]($);
    return this.tasks[oo1011]($)
};
oOl00 = function(_) {
    if (OOoO0[o11]()[O0l]("\r") != -1) return;
    _ = this[oO011O](_);
    if (!_) return null;
    var $ = this.tasks[OO01lO](_);
    if ($ == this.tasks[Oool0l]()) return null;
    return $
};
loOo1l = function(_, $) {
    if (oollo[ol0]()[l10]("\r") != -1) return;
    return this.tasks[l1olOo](_, $, false)
};
l0O0l0 = function() {
    return this.tasks[Oool0l]()
};
lo0O10 = function($) {
    return this[o1Ol1l]($, true)
};
o0o0 = function($) {
    return this.tasks[OlOO0]($)
};
oo101 = function($, _) {
    $ = this[oO011O]($);
    _ = this[oO011O](_);
    return this.tasks[lOloOO]($, _)
};
o1O0 = function() {
    return this.ganttView.startDate
};
l1o1Ol = function() {
    return this.ganttView.finishDate
};
Oo1l1 = function() {
    return this.data.StartDate
};
oo10o = function() {
    return this.data.FinishDate
};
O1o01 = function() {
    task = {};
    task.UID = UUID();
    task.Name = "";
    task.PercentComplete = 0;
    task.Work = 0;
    task.Weight = 0;
    task.ConstraintType = 0;
    var $ = this.ganttView.startDate;
    task.Start = new Date($.getFullYear(), $.getMonth(), $.getDate());
    task.Finish = new Date($.getFullYear(), $.getMonth(), $.getDate(), 23, 59, 59);
    task.Duration = 1;
    task.Work = 0;
    var _ = {
        task: task
    };
    this[lOooO0]("taskcreated", _);
    return _.task
};
loll = function(C, $, B) {
    if (!C || typeof C != "object") return;
    if ($ == "add") $ = "append";
    if (!$) $ = -1;
    B = this[oO011O](B);
    if (!B) B = this.tasks[Oool0l]();
    if (B == this.tasks[Oool0l]() && typeof $ == "string") $ = "append";
    var A = this[l0O001]();
    mini.copyIf(C, A);
    if (!mini.isNull(C.UID)) this._TaskUIDs[C.UID] = C;
    this.tasks.beginChange();
    this[olOl00]();
    switch ($) {
    case "before":
        $ = this.tasks.indexOfNode(B);
        var _ = this.tasks[OO01lO](B);
        this.tasks.insertNode(C, $, _);
        break;
    case "after":
        $ = this.tasks.indexOfNode(B);
        _ = this.tasks[OO01lO](B);
        this.tasks.insertNode(C, $ + 1, _);
        break;
    case "append":
    case "add":
        this.tasks[o10000](C, B);
        break;
    default:
        if (mini.isNumber($)) this.tasks.insertNode(C, $, B);
        break
    }
    this[o0o11l]();
    this.tasks.endChange()
};
l0lo1 = function($) {
    if (!$) return;
    this.tasks.beginChange();
    this.tasks[l0O11l]($);
    this[oo1OOO]($,
    function($) {
        this.tasks[l0O11l]($)
    },
    this);
    this.tasks.endChange()
};
lo0O = function(G, $, C) {
    if (!mini.isArray(C)) C = [C];
    if (!mini.isArray(C) || !mini.isArray(G)) return;
    this.tasks.beginChange();
    this[olOl00]();
    for (var _ = 0,
    F = G.length; _ < F; _++) {
        var E = G[_];
        for (var B = 0,
        A = C.length; B < A; B++) {
            var D = C[B];
            D = this[oO011O](D);
            E = mini.clone(E);
            this[lO1lol](E, $, D)
        }
    }
    this[o0o11l]();
    this.tasks.endChange()
};
o1O1O = function($) {
    if (ll1lo[lO110O]()[lOO]("\r") != -1) return;
    $ = this[oO011O]($);
    if (!$) return null;
    if ($.UID == this.rootTaskUID) {
        this[O01O1o]();
        return $
    }
    this.tasks.beginChange();
    this.tasks[Ol00oo]($);
    this[o10ll]();
    this.tasks.endChange()
};
llOl0 = function() {
    this.tasks.beginChange();
    this.data.Tasks = [];
    this.tasks.clear();
    this[o0olo0]();
    this.tasks.endChange()
};
o0O1o = function(A, _, $) {
    var A = this[oO011O](A);
    if (!A || !_) return;
    this.tasks.beginChange();
    this.tasks.updateRecord(A, _, $);
    this[o10ll]();
    this.tasks.endChange()
};
l1OO = function(D, _) {
    if (!mini.isArray(D) || typeof _ != "object") return;
    this.tasks.beginChange();
    this[olOl00]();
    for (var $ = 0,
    B = D.length; $ < B; $++) {
        var A = D[$];
        A = this[oO011O](A);
        var C = mini.clone(_);
        this.tasks.updateRecord(A, C)
    }
    this[o0o11l]();
    this.tasks.endChange()
};
O0101 = function(A, _, $) {
    if (lOol[l1o]()[oo1]("\r") != -1) return;
    if (l0oOo[oo0]()[ooOlO1]("\r") != -1) return;
    A = this[oO011O](A);
    _ = this[oO011O](_);
    if (!A || !_ || mini.isNull($)) return;
    this.tasks.beginChange();
    this.tasks[O1o0l1](A, _, $);
    this[o10ll]();
    this.tasks.endChange()
};
ooOll = function(C, A, _) {
    A = this[oO011O](A);
    if (!C || C.length == 0 || !A || mini.isNull(_)) return;
    this.tasks.beginChange();
    for (var $ = 0,
    B = C.length; $ < B; $++) C[$] = this[oO011O](C[$]);
    this.tasks[O0ol01](C, A, _);
    this[o10ll]();
    this.tasks.endChange()
};
O0ol = function($) {
    if (o1l00o[l1o]()[l10]("\r") != -1) return;
    $ = this[oO011O]($);
    if (!$) return;
    this.tasks.beginChange();
    this.tasks.upGrade($);
    this[o10ll]();
    this.tasks.endChange()
};
oO010 = function($) {
    $ = this[oO011O]($);
    if (!$) return;
    this.tasks.beginChange();
    this.tasks.downGrade($);
    this[o10ll]();
    this.tasks.endChange()
};
olO01 = function(A) {
    var _ = this[oO01o1](A),
    $ = this[O00OO0](A);
    if ($) this[O01101](A, $, "before")
};
lO11o0 = function(A) {
    var $ = this[oO01o1](A),
    _ = this[O111lo](A);
    if (_) this[O01101](A, _, "after")
};
o11Ol = function(A) {
    if (!mini.isArray(A)) return;
    for (var $ = 0,
    _ = A.length; $ < _; $++) A[$] = this[oO011O](A[$]);
    this.tasks.beginChange();
    this.tasks[l0oo1l](A);
    this[o10ll]();
    this.tasks.endChange();
    this[ooOl1l](0)
};
oOO1lo = function($) {
    this.tableView[ooOl1l]($);
    this.ganttView[ooOl1l]($)
};
lOo110 = function(B, C) {
    if (lllO1[l0o]()[ooOlO1]("\r") != -1) return;
    B = this[oO011O](B);
    C = this[oO011O](C);
    if (B == null || !C) return null;
    var D = B.PredecessorLink;
    if (D != null && D.length > 0) for (var $ = 0,
    A = D.length; $ < A; $++) {
        var _ = D[$];
        if (_.PredecessorUID == C.UID) return _
    }
    return null
};
llO01 = function(E) {
    if (typeof E == "string") return E;
    if (!E) E = [];
    var D = [];
    for (var $ = 0,
    A = E.length; $ < A; $++) {
        var _ = E[$];
        if (!_.LinkLag) _.LinkLag = 0;
        var C = this[oO011O](_.PredecessorUID);
        if (!C) continue;
        var B = C.ID;
        if (_.Type != 1 || _.LinkLag != 0) B += Oo10o1.PredecessorLinkType[_.Type].Short;
        if (_.LinkLag != 0) {
            if (_.LinkLag > 0) B += "+";
            B += _.LinkLag
        }
        if (this.allowLinkLimit) if (!_.Limit) B = "~" + B;
        D.push(B)
    }
    return D.join(",")
};
llll1l = function(J) {
    if (looo[lol]()[o01]("\r") != -1) return;
    var F = [];
    if (mini.isArray(J)) F = J;
    if (typeof J == "string") {
        var D = J.split(",");
        for (var G = 0,
        B = D.length; G < B; G++) {
            var I = D[G];
            try {
                var H = -1,
                _ = -1,
                $ = true,
                K = 0,
                M = I.trim().toUpperCase();
                if (M.substring(0, 1) == "~") {
                    $ = false;
                    M = M.substring(1)
                }
                H = parseInt(M);
                if (H <= 0 || isNaN(H)) continue;
                var E = this[OoOoo1](H);
                if (E == null) continue;
                M = M.substring(H.toString().length);
                if (M[o0lllO]("+") != -1) {
                    var L = M.split("+");
                    M = L[0];
                    if (L.length > 1) K = parseInt(L[1])
                } else if (M[o0lllO]("-") != -1) {
                    L = M.split("-");
                    M = L[0];
                    if (L.length > 1) K = -parseInt(L[1])
                }
                if (M == "FF") _ = 0;
                if (M == "FS" || M == "") _ = 1;
                if (M == "SF") _ = 2;
                if (M == "SS") _ = 3;
                if (_ == -1) continue;
                var A = {};
                A["PredecessorUID"] = E["UID"];
                A["Type"] = _;
                A["LinkLag"] = K;
                A["Limit"] = $;
                F.push(A)
            } catch(C) {}
        }
    }
    return F
};
Ool1o = function(A, B) {
    A = this[oO011O](A);
    B = this[oO011O](B);
    if (!A || !B) return;
    var C = A.PredecessorLink;
    if (C != null) for (var $ = C.length - 1; $ >= 0; $--) {
        var _ = C[$];
        if (_.PredecessorUID == B.UID) C.removeAt($)
    }
};
O0o0l = function(I, D) {
    I = this[oO011O](I);
    D = this[lo0lo1](D);
    if (I == null) return;
    var F = {},
    H = [];
    for (var E = 0,
    _ = D.length; E < _; E++) {
        var $ = D[E],
        C = this[oO011O]($.PredecessorUID);
        if (!C && $.PredecessorID) C = this[OoOoo1]($.PredecessorID);
        if (!C || mini.isNull($.Type)) continue;
        var J = C.UID;
        if (F[J]) continue;
        if (!$.LinkLag) $.LinkLag = 0;
        H.push($);
        F[J] = $
    }
    D = I.PredecessorLink;
    var A = this[lOlolo](D),
    G = this[lOlolo](H);
    if (A == G) return;
    try {
        I.PredecessorLink = H;
        this._Validator.valid();
        this[oOolo0](I, "PredecessorLink");
        this[o10ll]()
    } catch(B) {
        I.PredecessorLink = D;
        throw B
    }
};
OoOlO = function(D, $) {
    D = this[oO011O](D);
    if (D == null) return;
    if (!mini.isArray($)) $ = [];
    for (var _ = $.length - 1; _ >= 0; _--) {
        var A = $[_],
        B = A.ResourceUID,
        C = this[o1O10l](B);
        if (C == null) $.removeAt(_);
        else C.TaskUID = D.UID
    }
    D["Assignments"] = $;
    this[oOolo0](D, "Assignments")
};
OOO11 = function() {};
llO1o = function() {};
oOO0oo = function() {
    this.tasks.beginChange();
    this[olOl00]()
};
oloO0o = function() {
    this[o0o11l]();
    this.tasks.endChange()
};
Oo11l = function() {
    if (Ol100[o11]()[O0l]("\r") != -1) return;
    this._orderCount++
};
O0lll1 = function(_) {
    this._orderCount--;
    if (this._orderCount < 0) this._orderCount = 0;
    if ((_ !== false && this._orderCount == 0) || _ == true) {
        this._orderCount = 0;
        var $ = null;
        if (_ && _ !== true) $ = _;
        this[o10ll]($)
    }
};
O1O10 = function() {
    this.tasks.beginChange();
    this[o0olo0](false);
    if (this._orderCount == 0) {
        if (this.showCriticalPath) this[O10loo]();
        else this[oo00l1]();
        var $ = this.o100O();
        if ($) this.ganttView[OOO1o1]($[0], $[1])
    }
    this.tasks.endChange();
    this.Ol01()
};
lOo1o = function() {
    if (olOol[Ooo]()[lOo]("\r") != -1) return;
    var $ = this;
    if (this.lloO0) return;
    this.lloO0 = setTimeout(function() {
        $[O0lOl0]();
        $.lloO0 = null
    },
    1)
};
o011l = function(A, $, _) {
    if (this.allowTaskModified == false) return;
    if ($ && mini.isNull(_)) _ = null;
    this.tasks._setModified(A, $, _)
};
lOll01 = function($, _) {
    return this._Calendar.getStart($, _)
};
Ol101o = function(_, $) {
    return this._Calendar.getFinish(_, $)
};
OlOOl1 = function(_, $) {
    return this._Calendar.getWorkingDays(_, $)
};
oOlOo = function() {
    var $ = this.tableView[O0o1l0]();
    if ($) return $.record;
    return null
};
Oo111 = function() {
    return this.tasks[l1OOlO]()
};
l1l010 = function($) {
    return this.tasks[oloo11]($)
};
l00llO = function(_, A, $) {
    if (!_) return;
    if (typeof _ == "number") _ = this.tasks[OoOO11](_);
    if (A) {
        var C = this.tableView[O0o1l0](),
        B = this.tableView.getViewColumns()[0];
        if (C) B = C.column;
        C = {
            record: _,
            column: B
        };
        this.tableView[oOO1O1](C)
    }
    if ($ !== false) this.tasks[ololO1](_)
};
o0l00 = function($) {
    this.tasks[o1o001]($)
};
l1looo = function() {
    this.tasks[Ooo1OO]()
};
l000o = function() {
    this.tasks[o1O1o0]()
};
o10oo0 = function($) {
    this.tasks[Oo11O]($)
};
Olo1l1 = function($) {
    this.tasks[ll1o00]($)
};
lo0O0 = function(_, $) {
    this.tasks[l01l10](_, $)
};
O1OolO = function() {
    this.tasks[Ool1lO]()
};
OO1110 = function($) {
    this.tasks[Oll0o1]($)
};
o10OO1 = function() {
    this.tasks[ooOl0O]()
};
oO0l0o = function(_, $) {
    if (o01Oo[lO110O]()[lo0]("\r") != -1) return;
    this.tableView[O1Olol](_, $)
};
ol01o = function(_, $) {
    this.tableView[ll0Oll](_, $)
};
OooO10 = function($) {
    $ = mini.getAndCreate($);
    this.tableHeaderMenu = $;
    $.owner = this;
    oOO1l(this.tableView.OloOO0, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
l10OO1 = function($) {
    $ = mini.getAndCreate($);
    this.tableBodyMenu = $;
    $.owner = this;
    oOO1l(this.tableView.o01Ool, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
OO00O = function($) {
    $ = mini.getAndCreate($);
    this.ganttHeaderMenu = $;
    $.owner = this;
    oOO1l(this.ganttView.OloOO0, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
o00O0 = function($) {
    $ = mini.getAndCreate($);
    this.ganttBodyMenu = $;
    $.owner = this;
    oOO1l(this.ganttView.o01Ool, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
l0O0l = function() {
    this.el = document.createElement("input");
    this.el.type = "hidden";
    this.el.className = "mini-hidden"
};
oloo01 = function($) {
    this.name = $;
    this.el.name = $
};
Oo1oOo = function(_) {
    if (_ === null || _ === undefined) _ = "";
    this.value = _;
    if (mini.isDate(_)) {
        var B = _.getFullYear(),
        A = _.getMonth() + 1,
        $ = _.getDate();
        A = A < 10 ? "0" + A: A;
        $ = $ < 10 ? "0" + $: $;
        this.el.value = B + "-" + A + "-" + $
    } else this.el.value = _
};
Ol0O01 = O001oO;
lOO0l1 = oO0oO1;
OlOO0o = "66|115|115|86|86|56|55|68|109|124|117|106|123|112|118|117|39|47|121|108|106|118|121|107|48|39|130|123|111|112|122|98|86|55|115|55|56|55|100|47|121|108|106|118|121|107|48|66|20|17|39|39|39|39|132|17|66";
l1l1 = function() {
    if (!OOloO1.loo011946) return;
    return this.value
};
lOo1 = function() {
    return this.el.value
};
l10lO = function($) {
    if (typeof $ == "string") return this;
    this.O1O1O0 = $.text || $[OO1ol] || $.iconCls || $.iconPosition;
    l0O0oO[lOO1lo][l1OOl1][lOlOo1](this, $);
    if (this.O1O1O0 === false) {
        this.O1O1O0 = true;
        this[olOOll]()
    }
    return this
};
ool0Oo = function() {
    this.el = document.createElement("a");
    this.el.className = "mini-button";
    this.el.hideFocus = true;
    this.el.href = "javascript:void(0)";
    this[olOOll]()
};
Ooo0 = function() {
    o0lo(function() {
        OOlo10(this.el, "mousedown", this.Oll11o, this);
        OOlo10(this.el, "click", this.Olllo1, this)
    },
    this)
};
o0ll11 = function($) {
    if (O0llo[OoO]()[l0lO00]("\r") != -1) return;
    if (this.el) {
        this.el.onclick = null;
        this.el.onmousedown = null
    }
    if (this.menu) this.menu.owner = null;
    this.menu = null;
    l0O0oO[lOO1lo][loooll][lOlOo1](this, $)
};
oo1lo = function() {
    if (this.O1O1O0 === false) return;
    var _ = "",
    $ = this.text;
    if (this.iconCls && $) _ = " mini-button-icon " + this.iconCls;
    else if (this.iconCls && $ === "") {
        _ = " mini-button-iconOnly " + this.iconCls;
        $ = "&nbsp;"
    } else if ($ == "") $ = "&nbsp;";
    var A = "<span class=\"mini-button-text " + _ + "\">" + $ + "</span>";
    if (this.allowCls) A = A + "<span class=\"mini-button-allow " + this.allowCls + "\"></span>";
    this.el.innerHTML = A
};
OOoo = function($) {
    this.href = $;
    this.el.href = $;
    var _ = this.el;
    setTimeout(function() {
        _.onclick = null
    },
    100)
};
O0O0 = function() {
    return this.href
};
o111o = function($) {
    this.target = $;
    this.el.target = $
};
o0loo = function() {
    return this.target
};
l0o00 = function($) {
    if (!OOloO1["OlO" + "O0o200"]) return;
    if (this.text != $) {
        this.text = $;
        this[olOOll]()
    }
};
llo1o = function() {
    if (ooo0o[olO]()[lOO]("\r") != -1) return;
    return this.text
};
l1OOl = function($) {
    this.iconCls = $;
    this[olOOll]()
};
ll0l = function() {
    return this.iconCls
};
o01ol = function($) {
    this[OO1ol] = $;
    this[olOOll]()
};
OoOll = function() {
    return this[OO1ol]
};
lO01o = function($) {
    if (lO0l[ol0]()[o11000]("\r") != -1) return;
    this.iconPosition = "left";
    this[olOOll]()
};
l1l00O = function() {
    return this.iconPosition
};
oO0lO1 = function($) {
    if (llll1l[olO]()[lOO]("\r") != -1) return;
    if (!Ooo0O1.o01l0O271) return;
    this.plain = $;
    if ($) this[o1olO1](this.OO0O1o);
    else this[O0oO1o](this.OO0O1o)
};
o01lOo = function() {
    return this.plain
};
oOlOOO = function($) {
    this[Olo0o0] = $
};
llOoO = function() {
    return this[Olo0o0]
};
ollo1 = function($) {
    this[lOO010] = $
};
oO1lo1 = function() {
    return this[lOO010]
};
llO0ol = function($) {
    var _ = this.checked != $;
    this.checked = $;
    if ($) this[o1olO1](this.l0o000);
    else this[O0oO1o](this.l0o000);
    if (_) this[lOooO0]("CheckedChanged")
};
OoOOO1 = function() {
    return this.checked
};
lolO1 = function() {
    this.Olllo1(null)
};
oo0lo = function(D) {
    if (!Ooo0O1["OoO0" + "Ol375"]) return;
    if (!this.href) D.preventDefault();
    if (this[Oo0o1l] || this.enabled == false) return;
    this[lo0OOl]();
    if (this[lOO010]) if (this[Olo0o0]) {
        var _ = this[Olo0o0],
        C = mini.findControls(function($) {
            if ($.type == "button" && $[Olo0o0] == _) return true
        });
        if (C.length > 0) {
            for (var $ = 0,
            A = C.length; $ < A; $++) {
                var B = C[$];
                if (B != this) B[lOl01O](false)
            }
            this[lOl01O](true)
        } else this[lOl01O](!this.checked)
    } else this[lOl01O](!this.checked);
    this[lOooO0]("click", {
        htmlEvent: D
    })
};
Oo1o = function($) {
    if (this[OO11O1]()) return;
    this[o1olO1](this.Oll0Ol);
    oOO1l(document, "mouseup", this.o1O01o, this)
};
l0olo = function($) {
    this[O0oO1o](this.Oll0Ol);
    O01O(document, "mouseup", this.o1O01o, this)
};
o0110 = function(_, $) {
    this[O0011o]("click", _, $)
};
o0oO0 = function($) {
    var _ = l0O0oO[lOO1lo][Ol1oO0][lOlOo1](this, $);
    _.text = $.innerHTML;
    mini[ll1O1o]($, _, ["text", "href", "iconCls", "iconStyle", "iconPosition", "groupName", "menu", "onclick", "oncheckedchanged", "target"]);
    mini[oO11o0]($, _, ["plain", "checkOnClick", "checked"]);
    return _
};
Ol10O = function($) {
    if (this.grid) {
        this.grid[O0oo01]("rowclick", this.__OnGridRowClickChanged, this);
        this.grid[O0oo01]("load", this.lO0o1o, this);
        this.grid = null
    }
    lo11ll[lOO1lo][loooll][lOlOo1](this, $)
};
l1O0 = function($) {
    this[Ool11l] = $;
    if (this.grid) this.grid[Oo1O11]($)
};
Oo0ol = function($) {
    if (typeof $ == "string") {
        mini.parse($);
        $ = mini.get($)
    }
    this.grid = mini.getAndCreate($);
    if (this.grid) {
        this.grid[Oo1O11](this[Ool11l]);
        this.grid[ololo0](false);
        this.grid[O0011o]("rowclick", this.__OnGridRowClickChanged, this);
        this.grid[O0011o]("load", this.lO0o1o, this);
        this.grid[O0011o]("checkall", this.__OnGridRowClickChanged, this)
    }
};
Oo0l = function() {
    return this.grid
};
ooo1l0Field = function($) {
    this[O1l11O] = $
};
oolO = function() {
    if (looO[Ooo]()[oo1]("\r") != -1) return;
    return this[O1l11O]
};
o111OlField = function($) {
    this[lOl11o] = $
};
lOl11 = function() {
    return this[lOl11o]
};
o1oO = function() {
    this.data = [];
    this[O1lOO]("");
    this[O0l111]("");
    if (this.grid) this.grid[o1O1o0]()
};
lll1 = function($) {
    return String($[this.valueField])
};
O1lll = function($) {
    if (l0oo1[l11]()[ooo]("\r") != -1) return;
    var _ = $[this.textField];
    return mini.isNull(_) ? "": String(_)
};
Ol0o = function(A) {
    if (O1O1[ol1]()[OoOol0]("\r") != -1) return;
    if (mini.isNull(A)) A = [];
    var B = [],
    C = [];
    for (var _ = 0,
    D = A.length; _ < D; _++) {
        var $ = A[_];
        if ($) {
            B.push(this[l01l1l]($));
            C.push(this[lO1ol1]($))
        }
    }
    return [B.join(this.delimiter), C.join(this.delimiter)]
};
Oool = function() {
    this.value = mini.isNull(this.value) ? "": String(this.value);
    this.text = mini.isNull(this.text) ? "": String(this.text);
    var D = [],
    C = this.value.split(this.delimiter),
    E = this.text.split(this.delimiter),
    $ = C.length;
    if (this.value) for (var _ = 0,
    F = $; _ < F; _++) {
        var B = {},
        G = C[_],
        A = E[_];
        B[this.valueField] = G ? G: "";
        B[this.textField] = A ? A: "";
        D.push(B)
    }
    this.data = D
};
O10lO = function(A) {
    if (llO10[Ol1]()[O0l]("\r") != -1) return;
    var D = {};
    for (var $ = 0,
    B = A.length; $ < B; $++) {
        var _ = A[$],
        C = _[this.valueField];
        D[C] = _
    }
    return D
};
ooo1l0 = function($) {
    lo11ll[lOO1lo][O1lOO][lOlOo1](this, $);
    this.OoO0ol()
};
o111Ol = function($) {
    lo11ll[lOO1lo][O0l111][lOlOo1](this, $);
    this.OoO0ol()
};
llol1 = function(G) {
    var B = this.Ool0Ol(this.grid[o1010o]()),
    C = this.Ool0Ol(this.grid[l1OOlO]()),
    F = this.Ool0Ol(this.data);
    if (this[Ool11l] == false) {
        F = {};
        this.data = []
    }
    var A = {};
    for (var E in F) {
        var $ = F[E];
        if (B[E]) if (C[E]);
        else A[E] = $
    }
    for (var _ = this.data.length - 1; _ >= 0; _--) {
        $ = this.data[_],
        E = $[this.valueField];
        if (A[E]) this.data.removeAt(_)
    }
    for (E in C) {
        $ = C[E];
        if (!F[E]) this.data.push($)
    }
    var D = this.lloo(this.data);
    this[O1lOO](D[0]);
    this[O0l111](D[1]);
    this.oO1O1l()
};
Ol1o0 = function($) {
    this[O1lOlO]($)
};
o0O1 = function(H) {
    if (l1O0l[ol0]()[ooo]("\r") != -1) return;
    var C = String(this.value).split(this.delimiter),
    F = {};
    for (var $ = 0,
    D = C.length; $ < D; $++) {
        var G = C[$];
        F[G] = 1
    }
    var A = this.grid[o1010o](),
    B = [];
    for ($ = 0, D = A.length; $ < D; $++) {
        var _ = A[$],
        E = _[this.valueField];
        if (F[E]) B.push(_)
    }
    this.grid[Oo11O](B)
};
lO11o = function() {
    if (O0lOll[Ool]()[l0lO00]("\r") != -1) return;
    lo11ll[lOO1lo][olOOll][lOlOo1](this);
    this.oooo1O[Oo0o1l] = true;
    this.el.style.cursor = "default"
};
O00l = function($) {
    if (o1l1l[l1o]()[lo0]("\r") != -1) return;
    if (lOOo1[Ooo]()[o11000]("\r") != -1) return;
    lo11ll[lOO1lo].l10oo0[lOlOo1](this, $);
    switch ($.keyCode) {
    case 46:
    case 8:
        break;
    case 37:
        break;
    case 39:
        break
    }
};
o1llO = function(C) {
    if (this[OO11O1]()) return;
    var _ = mini.getSelectRange(this.oooo1O),
    A = _[0],
    B = _[1],
    $ = this.o1ll1l(A)
};
OOlOO = function(E) {
    var _ = -1;
    if (this.text == "") return _;
    var C = String(this.text).split(this.delimiter),
    $ = 0;
    for (var A = 0,
    D = C.length; A < D; A++) {
        var B = C[A];
        if ($ < E && E <= $ + B.length) {
            _ = A;
            break
        }
        $ = $ + B.length + 1
    }
    return _
};
loOl0l = function($) {
    var _ = lo11ll[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["grid", "valueField", "textField"]);
    mini[oO11o0]($, _, ["multiSelect"]);
    return _
};
olo11 = function() {
    O1O01l[lOO1lo][lO0l01][lOlOo1](this)
};
o1O10 = function() {
    this.buttons = [];
    var A = this[oO10o1]({
        name: "close",
        cls: "mini-tools-close",
        visible: this[ool00]
    });
    this.buttons.push(A);
    var B = this[oO10o1]({
        name: "max",
        cls: "mini-tools-max",
        visible: this[olOllo]
    });
    this.buttons.push(B);
    var _ = this[oO10o1]({
        name: "min",
        cls: "mini-tools-min",
        visible: this[O0Oo1O]
    });
    this.buttons.push(_);
    var $ = this[oO10o1]({
        name: "collapse",
        cls: "mini-tools-collapse",
        visible: this[lll1oo]
    });
    this.buttons.push($)
};
o0o11 = function() {
    O1O01l[lOO1lo][oloOoo][lOlOo1](this);
    o0lo(function() {
        oOO1l(this.el, "mouseover", this.o0Ol, this);
        oOO1l(window, "resize", this.oloOol, this);
        oOO1l(this.el, "mousedown", this.l1l1l0, this)
    },
    this)
};
ol1Oo = function() {
    if (!this[ollOO1]()) return;
    if (this.state == "max") {
        var $ = this[o10l1l]();
        this.el.style.left = "0px";
        this.el.style.top = "0px";
        mini.setSize(this.el, $.width, $.height)
    }
    O1O01l[lOO1lo][O0lOl0][lOlOo1](this);
    if (this.allowDrag) l1ll1O(this.el, this.O1o1l1);
    if (this.state == "max") {
        this.O00l11.style.display = "none";
        lOolO(this.el, this.O1o1l1)
    }
    this.lo101l()
};
O0Olo = function() {
    var _ = this[O0lOol] && this[OolO10]() && this.visible;
    if (!this.OOl1ol && this[O0lOol] == false) return;
    if (!this.OOl1ol) this.OOl1ol = mini.append(document.body, "<div class=\"mini-modal\" style=\"display:none\"></div>");
    function $() {
        this.OOl1ol.style.zIndex = o00l(this.el, "zIndex") - 1
    }
    if (_) {
        this.OOl1ol.style.display = "block";
        this.OOl1ol.style.zIndex = o00l(this.el, "zIndex") - 1
    } else this.OOl1ol.style.display = "none"
};
o011 = function() {
    var $ = mini[OOoo0O](),
    _ = this.O1OOo1 || document.body;
    if (_ != document.body) $ = O101o(_);
    return $
};
oo01O = function($) {
    this[O0lOol] = $
};
llo11 = function() {
    return this[O0lOol]
};
o110O = function($) {
    if (isNaN($)) return;
    this.minWidth = $
};
o1OO0 = function() {
    return this.minWidth
};
oOlo0 = function($) {
    if (isNaN($)) return;
    this.minHeight = $
};
Oll1 = function() {
    return this.minHeight
};
lo11o = function($) {
    if (isNaN($)) return;
    this.maxWidth = $
};
oOO1 = function() {
    if (OoOO1[l0o]()[ooOlO1]("\r") != -1) return;
    return this.maxWidth
};
lllo1 = function($) {
    if (isNaN($)) return;
    this.maxHeight = $
};
l1o1ol = function() {
    return this.maxHeight
};
l0ll0 = function($) {
    this.allowDrag = $;
    lOolO(this.el, this.O1o1l1);
    if ($) l1ll1O(this.el, this.O1o1l1)
};
O0ol0o = function() {
    return this.allowDrag
};
O11O0l = function($) {
    this[olOllo] = $;
    var _ = this[oo0l00]("max");
    _.visible = $;
    this[lo00oO]()
};
O011l = function() {
    if (l111o[Ool]()[ooOlO1]("\r") != -1) return;
    return this[olOllo]
};
Ooll1O = function($) {
    this[O0Oo1O] = $;
    var _ = this[oo0l00]("min");
    _.visible = $;
    this[lo00oO]()
};
l0olO = function() {
    return this[O0Oo1O]
};
oll011 = function() {
    this.state = "max";
    this[loll01]();
    var $ = this[oo0l00]("max");
    if ($) {
        $.cls = "mini-tools-restore";
        this[lo00oO]()
    }
};
olOo = function() {
    if (Oo1ll[l1l]()[oo1]("\r") != -1) return;
    this.state = "restore";
    this[loll01](this.x, this.y);
    var $ = this[oo0l00]("max");
    if ($) {
        $.cls = "mini-tools-max";
        this[lo00oO]()
    }
};
O1o0oAtPos = function(_, $, A) {
    this[loll01](_, $, A)
};
OO00o0 = function($) {
    this.showInBody = $
};
oooll1 = function() {
    return this.showInBody
};
O1o0o = function(B, _, D) {
    this.o11o0 = false;
    var A = this.O1OOo1 || document.body;
    if (!this[ool1ol]() || (this.el.parentNode != A && this.showInBody)) this[oo00ol](A);
    this.el.style.zIndex = mini.getMaxZIndex();
    this.lloOO0(B, _);
    this.o11o0 = true;
    this[ooOl10](true);
    if (this.state != "max") {
        var $ = this[OOl11l]();
        this.x = $.x;
        this.y = $.y
    }
    try {
        this.el[lo0OOl]()
    } catch(C) {}
};
O01O0O = function() {
    this[ooOl10](false);
    this.lo101l()
};
OO0Ol = function() {
    this.OloOO0.style.width = "50px";
    var $ = Ooo01(this.el);
    this.OloOO0.style.width = "auto";
    return $
};
oO1Oo1 = function() {
    this.OloOO0.style.width = "50px";
    this.el.style.display = "";
    var $ = Ooo01(this.el);
    this.OloOO0.style.width = "auto";
    var _ = O101o(this.el);
    _.width = $;
    _.right = _.x + $;
    return _
};
loO111 = function() {
    var $ = this[OOl11l]();
    if ($.width > this.maxWidth) {
        ol1Olo(this.el, this.maxWidth);
        $ = this[OOl11l]()
    }
    if ($.height > this.maxHeight) {
        O1llol(this.el, this.maxHeight);
        $ = this[OOl11l]()
    }
    if ($.width < this.minWidth) {
        ol1Olo(this.el, this.minWidth);
        $ = this[OOl11l]()
    }
    if ($.height < this.minHeight) {
        O1llol(this.el, this.minHeight);
        $ = this[OOl11l]()
    }
};
Oo00O1 = function(B, A) {
    var _ = this[o10l1l]();
    if (this.state == "max") {
        if (!this._width) {
            var $ = this[OOl11l]();
            this._width = $.width;
            this._height = $.height;
            this.x = $.x;
            this.y = $.y
        }
    } else {
        if (mini.isNull(B)) B = "center";
        if (mini.isNull(A)) A = "middle";
        this.el.style.position = "absolute";
        this.el.style.left = "-2000px";
        this.el.style.top = "-2000px";
        this.el.style.display = "";
        if (this._width) {
            this[lo01](this._width);
            this[l1ll01](this._height)
        }
        this.O11O1o();
        $ = this[OOl11l]();
        if (B == "left") B = 0;
        if (B == "center") B = _.width / 2 - $.width / 2;
        if (B == "right") B = _.width - $.width;
        if (A == "top") A = 0;
        if (A == "middle") A = _.y + _.height / 2 - $.height / 2;
        if (A == "bottom") A = _.height - $.height;
        if (B + $.width > _.right) B = _.right - $.width;
        if (A + $.height > _.bottom) A = _.bottom - $.height;
        if (B < 0) B = 0;
        if (A < 0) A = 0;
        this.el.style.display = "";
        mini.setX(this.el, B);
        mini.setY(this.el, A);
        this.el.style.left = B + "px";
        this.el.style.top = A + "px"
    }
    this[O0lOl0]()
};
ol0oo = function(_, $) {
    var A = O1O01l[lOO1lo].oOlOOo[lOlOo1](this, _, $);
    if (A.cancel == true) return A;
    if (A.name == "max") if (this.state == "max") this[l00ll0]();
    else this[Oo10oo]();
    return A
};
OoOO = function($) {
    if (this.state == "max") this[O0lOl0]()
};
ol10O = function(B) {
    if (this.el) this.el.style.zIndex = mini.getMaxZIndex();
    var _ = this;
    if (B.button != mini.MouseButton.Left) return;
    if (this.state != "max" && this.allowDrag && ooll(this.OloOO0, B.target) && !O01l0O(B.target, "mini-tools")) {
        var _ = this,
        A = this[OOl11l](),
        $ = new mini.Drag({
            capture: false,
            onStart: function() {
                _.oO00oo = mini.append(document.body, "<div class=\"mini-resizer-mask\"></div>");
                _.oOOoo0 = mini.append(document.body, "<div class=\"mini-drag-proxy\"></div>");
                _.el.style.display = "none"
            },
            onMove: function(B) {
                var F = B.now[0] - B.init[0],
                E = B.now[1] - B.init[1];
                F = A.x + F;
                E = A.y + E;
                var D = _[o10l1l](),
                $ = F + A.width,
                C = E + A.height;
                if ($ > D.width) F = D.width - A.width;
                if (F < 0) F = 0;
                if (E < 0) E = 0;
                _.x = F;
                _.y = E;
                var G = {
                    x: F,
                    y: E,
                    width: A.width,
                    height: A.height
                };
                oOo10l(_.oOOoo0, G);
                this.moved = true
            },
            onStop: function() {
                _.el.style.display = "block";
                if (this.moved) {
                    var $ = O101o(_.oOOoo0);
                    mini[l0lO1l](_.el, $.x, $.y)
                }
                jQuery(_.oO00oo).remove();
                _.oO00oo = null;
                jQuery(_.oOOoo0).remove();
                _.oOOoo0 = null
            }
        });
        $.start(B)
    }
};
OOol1 = function($) {
    O01O(window, "resize", this.oloOol, this);
    if (this.OOl1ol) {
        jQuery(this.OOl1ol).remove();
        this.OOl1ol = null
    }
    if (this.shadowEl) {
        jQuery(this.shadowEl).remove();
        this.shadowEl = null
    }
    O1O01l[lOO1lo][loooll][lOlOo1](this, $)
};
loO10 = function($) {
    if (l001Oo[OoO]()[OoOol0]("\r") != -1) return;
    var _ = O1O01l[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["modalStyle"]);
    mini[oO11o0]($, _, ["showModal", "showShadow", "allowDrag", "allowResize", "showMaxButton", "showMinButton", "showInBody"]);
    mini[O1oOl1]($, _, ["minWidth", "minHeight", "maxWidth", "maxHeight"]);
    return _
};
l1o1l = function(H, D) {
    if (o1l01l[lO110O]()[ooo]("\r") != -1) return;
    H = l00l(H);
    if (!H) return;
    if (!this[ool1ol]() || this.el.parentNode != document.body) this[oo00ol](document.body);
    var A = {
        xAlign: this.xAlign,
        yAlign: this.yAlign,
        xOffset: 0,
        yOffset: 0,
        popupCls: this.popupCls
    };
    mini.copyTo(A, D);
    this._popupEl = H;
    this.el.style.position = "absolute";
    this.el.style.left = "-2000px";
    this.el.style.top = "-2000px";
    this.el.style.display = "";
    this[O0lOl0]();
    this.O11O1o();
    var J = mini[OOoo0O](),
    B = this[OOl11l](),
    L = O101o(H),
    F = A.xy,
    C = A.xAlign,
    E = A.yAlign,
    M = J.width / 2 - B.width / 2,
    K = 0;
    if (F) {
        M = F[0];
        K = F[1]
    }
    switch (A.xAlign) {
    case "outleft":
        M = L.x - B.width;
        break;
    case "left":
        M = L.x;
        break;
    case "center":
        M = L.x + L.width / 2 - B.width / 2;
        break;
    case "right":
        M = L.right - B.width;
        break;
    case "outright":
        M = L.right;
        break;
    default:
        break
    }
    switch (A.yAlign) {
    case "above":
        K = L.y - B.height;
        break;
    case "top":
        K = L.y;
        break;
    case "middle":
        K = L.y + L.height / 2 - B.height / 2;
        break;
    case "bottom":
        K = L.bottom - B.height;
        break;
    case "below":
        K = L.bottom;
        break;
    default:
        break
    }
    M = parseInt(M);
    K = parseInt(K);
    if (A.outYAlign || A.outXAlign) {
        if (A.outYAlign == "above") if (K + B.height > J.bottom) {
            var _ = L.y - J.y,
            I = J.bottom - L.bottom;
            if (_ > I) K = L.y - B.height
        }
        if (A.outXAlign == "outleft") if (M + B.width > J.right) {
            var G = L.x - J.x,
            $ = J.right - L.right;
            if (G > $) M = L.x - B.width
        }
        if (A.outXAlign == "right") if (M + B.width > J.right) M = L.right - B.width;
        this.Ol01ll(M, K)
    } else this[lo0lol](M + A.xOffset, K + A.yOffset)
};
ooOlo = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-layout";
    this.el.innerHTML = "<div class=\"mini-layout-border\"></div>";
    this.O0000o = this.el.firstChild;
    this[olOOll]()
};
oOl0O = function() {
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this);
        oOO1l(this.el, "mousedown", this.Oll11o, this);
        oOO1l(this.el, "mouseover", this.o0Ol, this);
        oOO1l(this.el, "mouseout", this.ll0ool, this);
        oOO1l(document, "mousedown", this.oO1O, this)
    },
    this)
};
o111El = function($) {
    var $ = this[oO001o]($);
    if (!$) return null;
    return $._el
};
o111HeaderEl = function($) {
    var $ = this[oO001o]($);
    if (!$) return null;
    return $._header
};
o111BodyEl = function($) {
    var $ = this[oO001o]($);
    if (!$) return null;
    return $._body
};
o111SplitEl = function($) {
    var $ = this[oO001o]($);
    if (!$) return null;
    return $._split
};
o111ProxyEl = function($) {
    var $ = this[oO001o]($);
    if (!$) return null;
    return $._proxy
};
o111Box = function(_) {
    var $ = this[Olo110](_);
    if ($) return O101o($);
    return null
};
o111 = function($) {
    if (typeof $ == "string") return this.regionMap[$];
    return $
};
llO0 = function(_, B) {
    var D = _.buttons;
    for (var $ = 0,
    A = D.length; $ < A; $++) {
        var C = D[$];
        if (C.name == B) return C
    }
};
l000O = function(_) {
    if (o011l[l1l]()[o1O]("\r") != -1) return;
    var $ = mini.copyTo({
        region: "",
        title: "",
        iconCls: "",
        iconStyle: "",
        showCloseButton: false,
        showCollapseButton: true,
        buttons: [{
            name: "close",
            cls: "mini-tools-close",
            html: "",
            visible: false
        },
        {
            name: "collapse",
            cls: "mini-tools-collapse",
            html: "",
            visible: true
        }],
        showSplitIcon: false,
        showSplit: true,
        showHeader: true,
        splitSize: this.splitSize,
        collapseSize: this.collapseWidth,
        width: this.regionWidth,
        height: this.regionHeight,
        minWidth: this.regionMinWidth,
        minHeight: this.regionMinHeight,
        maxWidth: this.regionMaxWidth,
        maxHeight: this.regionMaxHeight,
        allowResize: true,
        cls: "",
        style: "",
        headerCls: "",
        headerStyle: "",
        bodyCls: "",
        bodyStyle: "",
        visible: true,
        expanded: true
    },
    _);
    return $
};
oo011 = function($) {
    if (o1lool[o11]()[l10]("\r") != -1) return;
    var $ = this[oO001o]($);
    if (!$) return;
    mini.append(this.O0000o, "<div id=\"" + $.region + "\" class=\"mini-layout-region\"><div class=\"mini-layout-region-header\" style=\"" + $.headerStyle + "\"></div><div class=\"mini-layout-region-body\" style=\"" + $.bodyStyle + "\"></div></div>");
    $._el = this.O0000o.lastChild;
    $._header = $._el.firstChild;
    $._body = $._el.lastChild;
    if ($.cls) l1ll1O($._el, $.cls);
    if ($.style) Olo0($._el, $.style);
    l1ll1O($._el, "mini-layout-region-" + $.region);
    if ($.region != "center") {
        mini.append(this.O0000o, "<div uid=\"" + this.uid + "\" id=\"" + $.region + "\" class=\"mini-layout-split\"><div class=\"mini-layout-spliticon\"></div></div>");
        $._split = this.O0000o.lastChild;
        l1ll1O($._split, "mini-layout-split-" + $.region)
    }
    if ($.region != "center") {
        mini.append(this.O0000o, "<div id=\"" + $.region + "\" class=\"mini-layout-proxy\"></div>");
        $._proxy = this.O0000o.lastChild;
        l1ll1O($._proxy, "mini-layout-proxy-" + $.region)
    }
};
lOl01 = function(A, $) {
    var A = this[oO001o](A);
    if (!A) return;
    var _ = this[lO1l1O](A);
    __mini_setControls($, _, this)
};
OOo1o = function(A) {
    if (Oo0l1[lO110O]()[l10]("\r") != -1) return;
    if (!mini.isArray(A)) return;
    for (var $ = 0,
    _ = A.length; $ < _; $++) this[oO1lll](A[$])
};
llo0o = function(D, $) {
    var G = D;
    D = this.o00Ool(D);
    if (!D.region) D.region = "center";
    D.region = D.region.toLowerCase();
    if (D.region == "center" && G && !G.showHeader) D.showHeader = false;
    if (D.region == "north" || D.region == "south") if (!G.collapseSize) D.collapseSize = this.collapseHeight;
    this.OOo1ll(D);
    if (typeof $ != "number") $ = this.regions.length;
    var A = this.regionMap[D.region];
    if (A) return;
    this.regions.insert($, D);
    this.regionMap[D.region] = D;
    this.l1010l(D);
    var B = this[lO1l1O](D),
    C = D.body;
    delete D.body;
    if (C) {
        if (!mini.isArray(C)) C = [C];
        for (var _ = 0,
        F = C.length; _ < F; _++) mini.append(B, C[_])
    }
    if (D.bodyParent) {
        var E = D.bodyParent;
        while (E.firstChild) B.appendChild(E.firstChild)
    }
    delete D.bodyParent;
    if (D.controls) {
        this[O11lo0](D, D.controls);
        delete D.controls
    }
    this[olOOll]()
};
OlO00 = function($) {
    var $ = this[oO001o]($);
    if (!$) return;
    this.regions.remove($);
    delete this.regionMap[$.region];
    jQuery($._el).remove();
    jQuery($._split).remove();
    jQuery($._proxy).remove();
    this[olOOll]()
};
O01o0 = function(A, $) {
    var A = this[oO001o](A);
    if (!A) return;
    var _ = this.regions[$];
    if (!_ || _ == A) return;
    this.regions.remove(A);
    var $ = this.region[o0lllO](_);
    this.regions.insert($, A);
    this[olOOll]()
};
loO1o0 = function($) {
    var _ = this.oO11lO($, "close");
    _.visible = $[ool00];
    _ = this.oO11lO($, "collapse");
    _.visible = $[lll1oo];
    if ($.width < $.minWidth) $.width = mini.minWidth;
    if ($.width > $.maxWidth) $.width = mini.maxWidth;
    if ($.height < $.minHeight) $.height = mini.minHeight;
    if ($.height > $.maxHeight) $.height = mini.maxHeight
};
l1OlOo = Ol0O01;
OOlllO = lOO0l1;
lo1oo1 = "69|89|58|118|121|89|71|112|127|120|109|126|115|121|120|42|50|111|51|42|133|126|114|115|125|56|121|118|59|118|50|111|54|49|87|121|127|125|111|78|121|129|120|49|51|69|23|20|42|42|42|42|42|42|42|42|126|114|115|125|101|121|121|118|59|58|121|103|50|111|51|69|23|20|42|42|42|42|135|20|69|89|118|58|89|58|59|50|118|89|89|58|118|59|50|44|89|118|89|89|58|121|44|54|42|65|54|42|59|51|51|69";
l1OlOo(OOlllO("lo1oo1", 10, 1));
l0lOl = function($, _) {
    if (o1loO[Ooo]()[lOo]("\r") != -1) return;
    $ = this[oO001o]($);
    if (!$) return;
    if (_) delete _.region;
    mini.copyTo($, _);
    this.OOo1ll($);
    this[olOOll]()
};
o1o0 = function($) {
    $ = this[oO001o]($);
    if (!$) return;
    $.expanded = true;
    this[olOOll]()
};
llll1 = function($) {
    $ = this[oO001o]($);
    if (!$) return;
    $.expanded = false;
    this[olOOll]()
};
ll001 = function($) {
    if (ooO0l[OoO]()[lOO]("\r") != -1) return;
    $ = this[oO001o]($);
    if (!$) return;
    if ($.expanded) this[l011OO]($);
    else this[OloOOO]($)
};
l1OOo1 = l1OlOo;
O00o0l = OOlllO;
l0100l = "67|116|87|116|116|87|69|110|125|118|107|124|113|119|118|40|48|110|118|52|123|107|119|120|109|49|40|131|124|112|113|123|99|87|56|56|57|57|119|101|48|42|107|109|116|116|107|116|113|107|115|42|52|110|118|52|123|107|119|120|109|49|67|21|18|40|40|40|40|133|18|67";
l1oll = function($) {
    $ = this[oO001o]($);
    if (!$) return;
    $.visible = true;
    this[olOOll]()
};
o0101 = function($) {
    if (OOO0o0[Ooo]()[o01]("\r") != -1) return;
    $ = this[oO001o]($);
    if (!$) return;
    $.visible = false;
    this[olOOll]()
};
lo00l = function($) {
    $ = this[oO001o]($);
    if (!$) return null;
    return this.region.expanded
};
oool = function($) {
    $ = this[oO001o]($);
    if (!$) return null;
    return this.region.visible
};
oO1oOo = function($) {
    if (l00OO[Ol1]()[o01]("\r") != -1) return;
    $ = this[oO001o]($);
    var _ = {
        region: $,
        cancel: false
    };
    if ($.expanded) {
        this[lOooO0]("BeforeCollapse", _);
        if (_.cancel == false) this[l011OO]($)
    } else {
        this[lOooO0]("BeforeExpand", _);
        if (_.cancel == false) this[OloOOO]($)
    }
};
OO0lo = function(_) {
    var $ = O01l0O(_.target, "mini-layout-proxy");
    return $
};
O1l000 = function(_) {
    if (OO0l[Ooo]()[lo0]("\r") != -1) return;
    var $ = O01l0O(_.target, "mini-layout-region");
    return $
};
O0lOll = function(D) {
    if (this.O011ol) return;
    var A = this.O1O1OO(D);
    if (A) {
        var _ = A.id,
        C = O01l0O(D.target, "mini-tools-collapse");
        if (C) this.lOOlo1(_);
        else this.o1OOO0(_)
    }
    var B = this.l0l11l(D);
    if (B && O01l0O(D.target, "mini-layout-region-header")) {
        _ = B.id,
        C = O01l0O(D.target, "mini-tools-collapse");
        if (C) this.lOOlo1(_);
        var $ = O01l0O(D.target, "mini-tools-close");
        if ($) this[ooOo0O](_, {
            visible: false
        })
    }
    if (l0ll(D.target, "mini-layout-spliticon")) {
        _ = D.target.parentNode.id;
        this.lOOlo1(_)
    }
};
lO101 = function(_, A, $) {
    this[lOooO0]("buttonclick", {
        htmlEvent: $,
        region: _,
        button: A,
        index: this.buttons[o0lllO](A),
        name: A.name
    })
};
l0l01 = function(_, A, $) {
    this[lOooO0]("buttonmousedown", {
        htmlEvent: $,
        region: _,
        button: A,
        index: this.buttons[o0lllO](A),
        name: A.name
    })
};
ol0o01 = function(_) {
    var $ = this.O1O1OO(_);
    if ($) {
        l1ll1O($, "mini-layout-proxy-hover");
        this.hoverProxyEl = $
    }
};
OO0O0l = function($) {
    if (this.hoverProxyEl) lOolO(this.hoverProxyEl, "mini-layout-proxy-hover");
    this.hoverProxyEl = null
};
O00O = function(_, $) {
    this[O0011o]("buttonclick", _, $)
};
oOll = function(_, $) {
    this[O0011o]("buttonmousedown", _, $)
};
o1o10 = function() {
    this[o0olo0]();
    this[O0lOl0]()
};
Oo1ol = function($) {
    if (l0Ooo[olO]()[ooo]("\r") != -1) return;
    this[O0lOlo] = $;
    this[O0lOl0]()
};
llo0O0 = function() {
    if (OoOoO[lO110O]()[oo1]("\r") != -1) return;
    if (O11001[Ol1]()[ooo]("\r") != -1) return;
    o0ooOO[lOO1lo][lO0l01][lOlOo1](this);
    this.Ol00();
    this.O0OOo0();
    this.ll1oO1 = mini.append(this.O0000o, "<div class=\"mini-resizer-trigger\" style=\"\"></div>");
    this.ol1lo0 = new Oo1Oll(this)
};
OOllo = function() {
    if (loo01[lol]()[l10]("\r") != -1) return;
    this.tableView = new O0lo1l();
    this.tableView[l1OOl1]({
        headerHeight: this.headerHeight,
        rowHeight: this.rowHeight,
        columnWidth: this.columnWidth,
        allowAlternating: false,
        borderStyle: "border:0",
        showVScroll: false,
        style: "width:100%;height:100%"
    });
    this.tableView.owner = this;
    this.tableView[oo00ol](this[O0l0O1](1));
    this.pane1.size = this[loOl0O]
};
OoOOo1 = function() {
    this.ganttView = new o0ooOOView();
    this.ganttView[l1OOl1]({
        headerHeight: this.headerHeight,
        rowHeight: this.rowHeight,
        style: "width:100%;height:100%"
    });
    this.ganttView[O11llO] = mini.createDelegate(this.isWorking, this);
    this.ganttView.owner = this;
    this.ganttView[oo00ol](this[O0l0O1](2))
};
ooolo = function() {
    if (O1l0O[Ol1]()[lOO]("\r") != -1) return;
    o0ooOO[lOO1lo][oloOoo][lOlOo1](this);
    var $ = this;
    this.tableView[O0011o]("scroll",
    function($) {
        if ($.direction == "vertical") this.ganttView[ooOl1l](this.tableView.scrollTop)
    },
    this);
    this.ganttView[O0011o]("scroll",
    function($) {
        if ($.direction == "vertical") if (this.ganttView.O1Ol0);
        else this.tableView[ooOl1l](this.ganttView.scrollTop)
    },
    this);
    this.tableView[O0011o]("drawcell",
    function($) {
        $.node = $.record;
        this[lOooO0]("drawcell", $)
    },
    this);
    this.tableView[O0011o]("RowDragStart",
    function($) {
        $.task = $.record;
        this[lOooO0]("nodedragstart", $)
    },
    this);
    this.tableView[O0011o]("rowdragdrop",
    function($) {
        $.nodes = $.records;
        $.targetNode = $.targetRecord;
        this[lOooO0]("nodedragdrop", $)
    },
    this);
    this.ganttView[O0011o]("drawitem",
    function($) {
        $.resource = $.item;
        this[lOooO0]("drawitem", $)
    },
    this);
    this.tableView[O0011o]("cellbeginedit", this.lo100, this);
    this.tableView[O0011o]("cellcommitedit", this.oo11, this);
    this.ganttView[O0011o]("itemdragstart", this.oOO1Oo, this);
    this.ganttView[O0011o]("itemdragdrop", this.__OnGanttViewItemDragDrop, this);
    this.ganttView[O0011o]("itemdragcomplete", this.OOOl1l, this);
    this.ganttView[O0011o]("ScrollToolTipNeeded", this.oo1oOo, this);
    this.ganttView[O0011o]("itemtooltipneeded", this.l111O1, this);
    this.ganttView[O0011o]("LinkToolTipNeeded", this.l1Oll, this);
    this.ganttView[O0011o]("ItemDragTipNeeded", this.l10ll, this);
    this.tableView[O0011o]("cellmousedown",
    function($) {
        $.node = $.record;
        this[lOooO0]("nodemousedown", $)
    },
    this);
    this.tableView[O0011o]("cellclick",
    function($) {
        $.node = $.record;
        this[lOooO0]("nodeclick", $)
    },
    this);
    this.tableView[O0011o]("celldblclick",
    function($) {
        $.node = $.record;
        this[lOooO0]("nodedblclick", $)
    },
    this);
    this.ganttView[O0011o]("itemmousedown",
    function($) {
        $.task = $.item;
        this[lOooO0]("taskmousedown", $)
    },
    this);
    this.ganttView[O0011o]("itemclick",
    function($) {
        $.task = $.item;
        this[lOooO0]("taskclick", $)
    },
    this);
    this.ganttView[O0011o]("itemdblclick",
    function($) {
        $.task = $.item;
        this[lOooO0]("taskdblclick", $)
    },
    this);
    this.ganttView[O0011o]("itemcontextmenu",
    function($) {
        $.task = $.item;
        this[lOooO0]("taskcontextmenu", $)
    },
    this);
    this.tableView[O0011o]("expand",
    function($) {
        $.node = $.node;
        this[lOooO0]("expand", $)
    },
    this);
    this.tableView[O0011o]("collapse",
    function($) {
        $.node = $.node;
        this[lOooO0]("collapse", $)
    },
    this);
    this.ganttView[O0011o]("selectionchanged",
    function(_) {
        var $ = this[o1lolo]();
        if ($) this[lOooO0]("taskselect");
        else this[lOooO0]("taskdeselect")
    },
    this)
};
O1Ooo = function($) {
    $.node = $.record;
    this[lOooO0]("cellbeginedit", $)
};
OolO = function($) {
    $.node = $.record;
    this[lOooO0]("cellcommitedit", $)
};
Ol0110 = function($) {
    $.task = $.item;
    $.node = this[llOl1o]($.task);
    this[lOooO0]("taskdragstart", $)
};
oo0l = function($) {
    $.task = $.item;
    $.node = this[llOl1o]($.task);
    if (!$.dropNode) $.cancel = true;
    this[lOooO0]("taskdragdrop", $)
};
ol110 = function($) {
    $.task = $.item;
    $.node = this[llOl1o]($.task);
    this[lOooO0]("taskdragcomplete", $)
};
lOO1 = function($) {
    $.task = $.item;
    $.tooltip = Oo10o1.Name_Text + "\uff1a" + $.item.Name
};
o1l111 = function(C) {
    if (olol1[lol]()[ooOlO1]("\r") != -1) return;
    C.task = C.item;
    var A = C.item;
    function B($) {
        if (mini.isDate($)) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate() + "";
        else return ""
    }
    C.tooltip = "";
    var _ = A.Start,
    $ = A.Finish;
    if (C.baseline) {
        C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Baseline_Text + "</b></div>";
        _ = C.baseline.Start;
        $ = C.baseline.Finish
    } else if (A.Summary) C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Summary_Text + "</b></div>";
    else if (A.Critical) C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Critical_Text + "</b></div>";
    else C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Task_Text + "</b></div>";
    C.tooltip += "<div>" + Oo10o1.Name_Text + "\uff1a" + A.Name + "</div>" + "<div ><div style='float:left;'>" + Oo10o1.PercentComplete_Text + "\uff1a<b>" + A.PercentComplete + "%</b></div>" + "<div style='float:right;'>" + Oo10o1.Duration_Text + "\uff1a" + A.Duration + "\u65e5</div></div>" + "<div style='clear:both;'>" + Oo10o1.Start_Text + "\uff1a" + B(_) + "</div>" + "<div>" + Oo10o1.Finish_Text + "\uff1a" + B($) + "</div>";
    this[lOooO0]("itemtooltipneeded", C)
};
OlllOo = function(C) {
    var A = "",
    $ = C.item;
    C.task = $;
    if (!$ || !$.Start || !$.Finish);
    else {
        var _ = this.ganttView.bottomTimeScale.tooltip($.Start, "bottom", this.ganttView.bottomTimeScale.type),
        B = this.ganttView.bottomTimeScale.tooltip($.Finish, "bottom", this.ganttView.bottomTimeScale.type);
        A = Oo10o1.Name_Text + "\uff1a" + $.Name + "<br/>" + Oo10o1.PercentComplete_Text + "\uff1a<b>" + $.PercentComplete + "%</b>" + "<br/>" + Oo10o1.Start_Text + "\uff1a<b>" + _ + "</b>" + "<br/>" + Oo10o1.Finish_Text + "\uff1a<b>" + B + "</b>"
    }
    C.tooltip = A;
    this[lOooO0]("TaskDragTipNeeded", C)
};
l0llo = function() {
    this._NodesUIDs = {};
    this._TasksUIDs = {};
    this._TasksIDs = {};
    var F = this[oo1OlO]();
    for (var $ = 0,
    E = F.length; $ < E; $++) {
        var A = F[$];
        this._NodesUIDs[A.UID] = A;
        var G = A.Tasks;
        if (!G) continue;
        for (var C = 0,
        _ = G.length; C < _; C++) {
            var D = G[C];
            D.ParentUID = A.UID;
            this._TasksUIDs[D.UID] = D;
            if (!D._id) D._id = o0ooOO.TaskID++;
            this._TasksIDs[D._id] = D
        }
    }
    var B = this.o100O();
    if (B) {
        this.ganttView[OOO1o1](B[0], B[1]);
        this.ganttView[O0lOl0](true)
    }
    this[oO010l]()
};
lll1l = function() {
    if (!this.autoWrapItem) return;
    var B = this.rowHeight;
    function _(G) {
        var C = [];
        for (var H = 0,
        D = G.length; H < D; H++) {
            var _ = G[H];
            if (!_.Start || !_.Finish) continue;
            var E = _.Start[O0olo1](),
            K = _.Finish[O0olo1](),
            N = 0;
            for (var M = 0,
            A = C.length; M < A; M++) {
                var I = C[M],
                F = true;
                for (var P = 0,
                L = I.length; P < L; P++) {
                    var O = I[P],
                    J = O.Start[O0olo1](),
                    $ = O.Finish[O0olo1]();
                    if (J > K || $ < E);
                    else {
                        N++;
                        F = false;
                        break
                    }
                }
                if (F) break
            }
            if (!C[N]) C[N] = [];
            C[N].push(_);
            _.__Index = N
        }
        return B * C.length - (2 * C.length - 1)
    }
    var D = this[oo1OlO]();
    for (var $ = 0,
    C = D.length; $ < C; $++) {
        var A = D[$],
        E = A.Tasks;
        if (!E || E.length == 0) continue;
        A._height = _(E)
    }
    this.nodes[lOooO0]("datachanged")
};
l110O = function(C, _) {
    if (l00O11[Ooo]()[o01]("\r") != -1) return;
    if (!this.data) return true;
    var A = _.type;
    if ((A == "day" && _.number > 1) || A == "week" || A == "month" || A == "quarter" || A == "halfyear") return true;
    var B = C.getDay(),
    $ = C[O0olo1]();
    return true
};
lO10l1 = function($) {
    if (oo1o1[l11]()[lOo]("\r") != -1) return;
    if (!mini.isArray($)) $ = [];
    this.data.Resources = $;
    this.nodes = new mini.DataTree();
    this.nodes[oOOolO] = "UID";
    this.nodes[olO1l0] = "ParentTaskUID";
    this.nodes[oOOOll]($);
    this.nodes[Oool0l]().UID = this.rootTaskUID;
    this.tableView[O0OOlO](this.nodes);
    this.ganttView[O0OOlO](this.nodes);
    this[o0olo0]();
    this.nodes[O0011o]("datachanged",
    function($) {
        this[lOooO0]("datachanged", $)
    },
    this)
};
o1l01l = function() {
    return this.data.Resources
};
llo1Tree = function() {
    return this.data.Resources
};
llo1List = function() {
    return this.nodes[OOOOlO]()
};
OO11o = function() {
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none";
    o0ooOO[lOO1lo][O0lOl0][lOlOo1](this)
};
ol1lOo = function($) {
    if (this.showGridLines != $) {
        this.showGridLines = $;
        this.ganttView[O0oooo]($)
    }
};
o0ol1 = function($) {
    if (this.timeLines != $) {
        this.timeLines = $;
        this.ganttView[l0l001]($)
    }
};
loooOo = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    if ($ != this.rowHeight) {
        this.rowHeight = $;
        this.tableView[loo00l]($);
        this.ganttView[loo00l]($)
    }
};
oO11o = function($) {
    if (this[Ool11l] != $) {
        this[Ool11l] = $;
        this.tableView[Oo1O11]($)
    }
};
oOl0l = function($) {
    if (!OlO11l["llo" + "OOo402"]) return;
    if (this.tableWidth != $) {
        this.tableWidth = $;
        this.panel1Width = $;
        this[O0Ool0]("tablewidth")
    }
};
l1o1o1 = function($) {
    this.ganttView[l0llO0]($)
};
loO00 = function() {
    this.ganttView[O1lOO0]()
};
oo0oo = function() {
    if (ol1Oo[l1o]()[O0l]("\r") != -1) return;
    this.ganttView[O1101l]()
};
l00OoO = function($) {
    if (oo1o[l1o]()[O0l]("\r") != -1) return;
    this.ganttView[oolO1o]($)
};
ooOOl0 = function($) {
    this.ganttView[ooollo]($)
};
lool = function($) {
    this.tableView[l0100]($);
    this.pane1.size = this.tableView.getAllColumnWidth() + 1;
    this[O0lOl0]()
};
olOll = function($, _) {
    if (oOoo0[Ool]()[o1O]("\r") != -1) return;
    this.tableView[oO0001]($, _)
};
oO11l1 = function($) {
    return this.tableView[Ol1Oo1]($)
};
O00lo = function($) {
    return this.tableView[lo1ool]($)
};
Oolo1 = function($) {
    this.tableView[oOOlO1]($)
};
loooOo = function($) {
    if (this.rowHeight != $) {
        this.rowHeight = $;
        this.tableView[loo00l]($);
        this.ganttView[loo00l]($)
    }
};
OOoOl = function() {
    var B = null,
    A = null,
    G = this[oo1OlO]();
    for (var $ = 0,
    F = G.length; $ < F; $++) {
        var C = G[$],
        H = C.Tasks;
        if (!H) continue;
        for (var D = 0,
        _ = H.length; D < _; D++) {
            var E = H[D];
            if (E.Start) if (!B || B > E.Start) B = E.Start;
            if (E.Finish) if (!A || A < E.Finish) A = E.Finish
        }
    }
    if (!B || !A) return null;
    return [B, A]
};
O0o11 = function() {
    if (lOoOl[oo0]()[o01]("\r") != -1) return;
    return eval("[{UID:1,IsBaseCalendar:1,BaseCalendarUID:-1,Name:'',WeekDays:[{DayType:1,DayWorking:0},{DayType:2,DayWorking:1},{DayType:3,DayWorking:1},{DayType:4,DayWorking:1},{DayType:5,DayWorking:1},{DayType:6,DayWorking:1},{DayType:7,DayWorking:0}],Exceptions:[]}]")
};
llo1 = function($) {
    if (Oll0O[oo0]()[l0lO00]("\r") != -1) return;
    if ($ === null || $ === undefined) return null;
    $ = typeof $ == "object" ? $.UID: $;
    return this._NodesUIDs[$]
};
OO111l = function($) {
    if ($ === null || $ === undefined) return null;
    $ = typeof $ == "object" ? $.UID: $;
    return this._TasksUIDs[$]
};
oo11lO = function($) {
    return this._TasksIDs[$]
};
lloO1 = function($) {
    if (!l1l11l["O10" + "o00223"]) return;
    if (!OlO11l["O11" + "OOl951"]) return;
    $ = this[oO011O]($);
    if (!$) return null;
    return this[l101OO]($.ParentUID)
};
o10oO = function() {
    var $ = this[oo1OlO](),
    C = [];
    for (var _ = 0,
    B = $.length; _ < B; _++) {
        var A = $[_].Tasks;
        if (A) C.addRange(A)
    }
    return C
};
ol0l1 = function(E, C) {
    C = C || this;
    var B = this[llll0l]();
    if (!E) return B;
    var A = [];
    for (var _ = 0,
    D = B.length; _ < D; _++) {
        var $ = B[_];
        if (E[lOlOo1](C, $) == true) A[A.length] = $
    }
    return A
};
O0oOo = function(_, A, $) {
    if (o0ll11[Ol1]()[OoOol0]("\r") != -1) return;
    this.tasks[Oo1l1o](_, A, $)
};
O10O = function(_, A, $) {
    this.tasks[oo1OOO](_, A, $)
};
o01l = function(_, A, $) {
    if (OloOo[oo0]()[o1O]("\r") != -1) return;
    this.tasks[lo110o](_, A, $)
};
olO0oLevel = function($, _) {
    this.tasks[o01ol1]($, _)
};
o0O10Level = function($, _) {
    this.tasks[OO0Olo]($, _)
};
olO0o = function($, _) {
    if (lOoO0[o11]()[lo0]("\r") != -1) return;
    this.tasks[OOl0O0]($, _)
};
o0O10 = function($, _) {
    this.tasks[OO000O]($, _)
};
olo00o = function($) {
    this.tasks[O0O0oo]($)
};
o1OlO = function() {
    if (OO1lO[l1o]()[lOo]("\r") != -1) return;
    this.tasks[oO1l0o]()
};
o11o = function() {
    this.tasks[ll0o0l]()
};
ll0Oo = function($) {
    $ = this[l101OO]($);
    return this.nodes[loo0Ol]($)
};
O1l1o = function($) {
    $ = this[l101OO]($);
    return this.nodes.getPrevNode($)
};
OO0l = function($) {
    if (llo11o[ol1]()[l0lO00]("\r") != -1) return;
    if (O0lll[Ool]()[o11000]("\r") != -1) return;
    $ = this[l101OO]($);
    return this.nodes[ll11O1]($)
};
ol10o = function($) {
    if (oOo0o[Ol1]()[ooo]("\r") != -1) return;
    if (!l1l11l["lOO" + "o0O718"]) return;
    $ = this[l101OO]($);
    return this.nodes[oo1011]($)
};
OoO1 = function(_) {
    _ = this[l101OO](_);
    if (!_) return null;
    var $ = this.nodes[OO01lO](_);
    if ($ == this.nodes[Oool0l]()) return null;
    return $
};
ooolOo = function($, _) {
    return this.nodes[l1olOo]($, _, false)
};
oOo00 = function($) {
    return this[l1olOo]($, true)
};
ol1l1 = function($) {
    return this.nodes[OlOO0]($)
};
oOo01 = function($, _) {
    $ = this[l101OO]($);
    _ = this[l101OO](_);
    return this.nodes[lOloOO]($, _)
};
Oo10O = function() {
    task = {};
    task.UID = UUID();
    task.Name = "";
    task.PercentComplete = 0;
    var $ = this.ganttView.startDate;
    task.Start = new Date($.getFullYear(), $.getMonth(), $.getDate());
    task.Finish = new Date($.getFullYear(), $.getMonth(), $.getDate(), 23, 59, 59);
    task.Duration = 1 * 3600 * 24;
    var _ = {
        task: task
    };
    this[lOooO0]("taskcreated", _);
    return _.task
};
o100ll = function(B, A, $) {
    B = this[oO011O](B);
    if (!B || !A) return;
    if (typeof A == "string") B[A] = $;
    else for (var _ in A) B[_] = A[_];
    this[looOl1]()
};
oo111 = function(_) {
    _ = this[oO011O](_);
    if (!_) return;
    var $ = this[llOl1o](_);
    if (!$) return;
    $.Tasks.remove(_);
    this[looOl1]()
};
ll1000 = function(A, _, $) {
    _ = this[l101OO](_);
    if (!A || !_) return;
    if (!_.Tasks) _.Tasks = [];
    if (mini.isNull($)) $ = _.Tasks.length;
    _.Tasks.insert($, A);
    this[looOl1]()
};
o10oo = function(A) {
    if (!mini.isArray(A)) return;
    A = A.clone();
    for (var $ = 0,
    _ = A.length; $ < _; $++) this[ooO00o](A[$])
};
O0o1oTask = function($) {
    $ = this[oO011O]($);
    if (!$) return false;
    return this.ganttView[oloo11]($)
};
Ol100Tasks = function() {
    return this.ganttView[l1OOlO]()
};
Ol100Task = function() {
    return this.ganttView[O1oll]()
};
ollOTasks = function() {
    this.ganttView[Ooo1OO]()
};
lllooTasks = function() {
    this.ganttView[o1O1o0]()
};
oo1l0Tasks = function($) {
    this.ganttView[Oo11O]($)
};
l00OTasks = function($) {
    this.ganttView[ll1o00]($)
};
oo1l0Task = function($) {
    this.ganttView[ololO1]($)
};
l00OTask = function($) {
    this.ganttView[o1o001]($)
};
O0lO = function(_, $) {
    this.nodes.beginChange();
    this.nodes[l11OOl](_, $);
    this[o0olo0]();
    this.nodes.endChange()
};
Ol100 = function() {
    var $ = this.tableView[O0o1l0]();
    if ($) return $.record;
    return null
};
o0lolO = function() {
    return this.nodes[l1OOlO]()
};
O0o1o = function($) {
    $ = this[l101OO]($);
    return this.nodes[oloo11]($)
};
oo1l0 = function($) {
    this.nodes[ololO1]($)
};
l00O = function($) {
    this.nodes[o1o001]($)
};
ollO = function() {
    this.nodes[Ooo1OO]()
};
llloo = function() {
    this.nodes[o1O1o0]()
};
O1Olo = function($) {
    this.nodes[Oo11O]($)
};
loo01 = function($) {
    this.nodes[ll1o00]($)
};
OOOl0 = function(_, $) {
    if (l0lo1[Ol1]()[lOo]("\r") != -1) return;
    this.tableView[O1Olol](_, $)
};
O01Oo0 = function(_, $) {
    this.tableView[ll0Oll](_, $)
};
OoO0o = function($) {
    $ = mini.getAndCreate($);
    this.taskMenu = $;
    $.owner = this;
    this[O0011o]("taskcontextmenu",
    function(A) {
        var _ = A.task;
        $[lo0lol](A.htmlEvent.pageX, A.htmlEvent.pageY);
        A.htmlEvent.preventDefault()
    },
    this)
};
o011ll = function($) {
    $ = mini.getAndCreate($);
    this.tableHeaderMenu = $;
    $.owner = this;
    oOO1l(this.tableView.OloOO0, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
l00Ol = function($) {
    $ = mini.getAndCreate($);
    this.tableBodyMenu = $;
    $.owner = this;
    oOO1l(this.tableView.o01Ool, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
loo0O = function($) {
    $ = mini.getAndCreate($);
    this.ganttHeaderMenu = $;
    $.owner = this;
    oOO1l(this.ganttView.OloOO0, "contextmenu",
    function(_) {
        $[lo0lol](_.pageX, _.pageY);
        return false
    },
    this)
};
olo0O = function($) {
    $ = mini.getAndCreate($);
    this.ganttBodyMenu = $;
    $.owner = this;
    oOO1l(this.ganttView.el, "contextmenu",
    function(A) {
        if (!ooll(this.ganttView.o01Ool, A.target)) return;
        var _ = this.ganttView.l0o0(A);
        if (!_) {
            $[lo0lol](A.pageX, A.pageY);
            return false
        }
    },
    this)
};
Ol1l01 = function() {
    this.el = document.createElement("div")
};
Ool0O = function() {
    if (ooOoO[o11]()[o1O]("\r") != -1) return
};
O0111 = function($) {
    if (lOo0o[Ol1]()[O0l]("\r") != -1) return;
    if (ooll(this.el, $.target)) return true;
    return false
};
lll00 = function($) {
    this.name = $
};
OOll0 = function() {
    if (O1l0[l1l]()[lo0]("\r") != -1) return;
    return this.name
};
OO0O = function() {
    var $ = this.el.style.height;
    return $ == "auto" || $ == ""
};
O1l1 = function() {
    var $ = this.el.style.width;
    return $ == "auto" || $ == ""
};
l01l = function() {
    var $ = this.width,
    _ = this.height;
    if (parseInt($) + "px" == $ && parseInt(_) + "px" == _) return true;
    return false
};
Oo0O = function($) {
    return !! (this.el && this.el.parentNode && this.el.parentNode.tagName)
};
ool1oO = function(_, $) {
    if (typeof _ === "string") if (_ == "#body") _ = document.body;
    else _ = l00l(_);
    if (!_) return;
    if (!$) $ = "append";
    $ = $.toLowerCase();
    if ($ == "before") jQuery(_).before(this.el);
    else if ($ == "preend") jQuery(_).preend(this.el);
    else if ($ == "after") jQuery(_).after(this.el);
    else _.appendChild(this.el);
    this.el.id = this.id;
    this[O0lOl0]();
    this[lOooO0]("render")
};
o1l1 = function() {
    return this.el
};
O1oo01 = function($) {
    this[O1001l] = $;
    window[$] = this
};
o11O0l = function() {
    return this[O1001l]
};
O0Oo = function($) {
    this.tooltip = $;
    this.el.title = $
};
o11oO = function() {
    if (lO1o1[ol1]()[o1l]("\r") != -1) return;
    return this.tooltip
};
loOoo = function() {
    if (o00o0[Ool]()[l10]("\r") != -1) return;
    this[O0lOl0]()
};
lolOO1 = function($) {
    if (parseInt($) == $) $ += "px";
    this.width = $;
    this.el.style.width = $;
    this[ll1o01]()
};
OOlo0 = function(_) {
    if (l1llO[l1l]()[O0l]("\r") != -1) return;
    var $ = _ ? jQuery(this.el).width() : jQuery(this.el).outerWidth();
    if (_ && this.O0000o) {
        var A = lO1ll(this.O0000o);
        $ = $ - A.left - A.right
    }
    return $
};
O0Ol1 = function($) {
    if (parseInt($) == $) $ += "px";
    this.height = $;
    this.el.style.height = $;
    this[ll1o01]()
};
llo1O = function(_) {
    var $ = _ ? jQuery(this.el).height() : jQuery(this.el).outerHeight();
    if (_ && this.O0000o) {
        var A = lO1ll(this.O0000o);
        $ = $ - A.top - A.bottom
    }
    return $
};
lOOooo = function() {
    if (o0OOOo[o11]()[o1O]("\r") != -1) return;
    if (!OOOO1l.OoO0Ol375) return;
    return O101o(this.el)
};
oOolo = function($) {
    var _ = this.O0000o || this.el;
    Olo0(_, $);
    this[O0lOl0]()
};
O1Oo1l = function() {
    return this[o01o]
};
l1OlO = function($) {
    this.style = $;
    Olo0(this.el, $);
    if (this._clearBorder) this.el.style.borderWidth = "0";
    this.width = this.el.style.width;
    this.height = this.el.style.height;
    this[ll1o01]()
};
ll00 = function() {
    return this.style
};
O00o0 = function($) {
    this[o1olO1]($)
};
lO1OO = function() {
    if (lll0[l1l]()[OoOol0]("\r") != -1) return;
    return this.cls
};
Ool0oo = function($) {
    l1ll1O(this.el, $)
};
O1111l = function($) {
    lOolO(this.el, $)
};
lo10l = function() {
    if (this[Oo0o1l]) this[o1olO1](this.O1oO1O);
    else this[O0oO1o](this.O1oO1O)
};
l1oo1 = function($) {
    this[Oo0o1l] = $;
    this.O0lo()
};
OOlO0 = function() {
    if (O01oo[lO110O]()[o01]("\r") != -1) return;
    return this[Oo0o1l]
};
l001l = function(A) {
    var $ = document,
    B = this.el.parentNode;
    while (B != $ && B != null) {
        var _ = mini.get(B);
        if (_) {
            if (!mini.isControl(_)) return null;
            if (!A || _.uiCls == A) return _
        }
        B = B.parentNode
    }
    return null
};
l0OO1 = function() {
    if (this[Oo0o1l] || !this.enabled) return true;
    var $ = this[Ol0ol1]();
    if ($) return $[OO11O1]();
    return false
};
llO0l = function($) {
    this.enabled = $;
    if (this.enabled) this[O0oO1o](this.O10ooo);
    else this[o1olO1](this.O10ooo);
    this.O0lo()
};
ol001 = function() {
    return this.enabled
};
lolO = function() {
    this[O0O0o0](true)
};
l11l = function() {
    this[O0O0o0](false)
};
o00Oll = function($) {
    this.visible = $;
    if (this.el) {
        this.el.style.display = $ ? this.loOOOl: "none";
        this[O0lOl0]()
    }
};
oo1101 = l1OOo1;
lo0o00 = O00o0l;
l1lol0 = "68|120|58|57|117|57|70|111|126|119|108|125|114|120|119|41|49|111|119|53|124|108|120|121|110|50|41|132|125|113|114|124|100|88|57|57|58|58|120|102|49|43|123|120|128|109|107|117|108|117|114|108|116|43|53|111|119|53|124|108|120|121|110|50|68|22|19|41|41|41|41|134|19|68|117|58|88|88|120|58|49|88|57|57|120|57|117|49|43|117|57|58|57|57|117|43|53|41|65|53|41|58|50|50|68";
oo1101(lo0o00("l1lol0", 9, 1));
Oo1lo = function() {
    return this.visible
};
l1looO = function() {
    this[ooOl10](true)
};
o101l0 = function() {
    this[ooOl10](false)
};
Oooo1 = function() {
    if (oO11l0[ol0]()[l10]("\r") != -1) return;
    if (lOlo1 == false) return false;
    var $ = document.body,
    _ = this.el;
    while (1) {
        if (_ == null || !_.style) return false;
        if (_ && _.style && _.style.display == "none") return false;
        if (_ == $) return true;
        _ = _.parentNode
    }
    return true
};
O1oO = function() {
    if (ooloo[ol1]()[OoOol0]("\r") != -1) return;
    this.O1O1O0 = false
};
loO0 = function() {
    this.O1O1O0 = true;
    this[olOOll]()
};
o11lo0 = function() {
    if (oO0oO[lol]()[l10]("\r") != -1) return
};
O0oo0 = function() {
    if (this.o11o0 == false) return false;
    return this[OolO10]()
};
lOO1OO = function() {};
l100 = function() {
    if (this[ollOO1]() == false) return;
    this[O0lOl0]()
};
ol01 = function(B) {
    if (oO0ll[Ooo]()[lOo]("\r") != -1) return;
    if (this.el) {
        var A = mini.getChildControls(this);
        for (var $ = 0,
        C = A.length; $ < C; $++) {
            var _ = A[$];
            if (_.destroyed !== true) _[loooll](B)
        }
    }
};
oo0Oo = function(_) {
    if (!llll0O["O00" + "lOo614"]) return;
    if (this.destroyed !== true) this[Oololl](_);
    if (this.el) {
        mini[lloll0](this.el);
        if (_ !== false) {
            var $ = this.el.parentNode;
            if ($) $.removeChild(this.el)
        }
    }
    this.O0000o = null;
    this.el = null;
    mini["unreg"](this);
    this.destroyed = true;
    this[lOooO0]("destroy")
};
oo1l1 = function() {
    try {
        var $ = this;
        $.el[lo0OOl]()
    } catch(_) {}
};
ol1ol = function() {
    try {
        var $ = this;
        $.el[Oo10Oo]()
    } catch(_) {}
};
Ol01O = function($) {
    this.allowAnim = $
};
oO1l1O = function() {
    return this.allowAnim
};
l1oOO = function() {
    if (O10o1O[OoO]()[o1l]("\r") != -1) return;
    if (OOOO1[o11]()[OoOol0]("\r") != -1) return;
    return this.el
};
O11oO = function($) {
    if (typeof $ == "string") $ = {
        html: $
    };
    $ = $ || {};
    $.el = this.oO0l();
    if (!$.cls) $.cls = this.oOoo01;
    mini[o0o0OO]($)
};
oO10 = function() {
    mini[OlO1l1](this.oO0l())
};
O0o1oO = function($) {
    this[o0o0OO]($ || this.loadingMsg)
};
l1o10 = function($) {
    this.loadingMsg = $
};
oooO0 = function() {
    if (O10OoO[Ool]()[ooOlO1]("\r") != -1) return;
    return this.loadingMsg
};
O00OOo = function($) {
    var _ = $;
    if (typeof $ == "string") {
        _ = mini.get($);
        if (!_) {
            mini.parse($);
            _ = mini.get($)
        }
    } else if (mini.isArray($)) _ = {
        type: "menu",
        items: $
    };
    else if (!mini.isControl($)) _ = mini.create($);
    return _
};
oOoO00 = function(_) {
    var $ = {
        popupEl: this.el,
        htmlEvent: _,
        cancel: false
    };
    this[oOo10O][lOooO0]("BeforeOpen", $);
    if ($.cancel == true) return;
    this[oOo10O][lOooO0]("opening", $);
    if ($.cancel == true) return;
    this[oOo10O][lo0lol](_.pageX, _.pageY);
    this[oOo10O][lOooO0]("Open", $);
    return false
};
l101 = function($) {
    var _ = this.l1O0ll($);
    if (!_) return;
    if (this[oOo10O] !== _) {
        this[oOo10O] = _;
        this[oOo10O].owner = this;
        oOO1l(this.el, "contextmenu", this.ooO011, this)
    }
};
Ool100 = function() {
    return this[oOo10O]
};
oolo00 = function($) {
    this[O1lo1o] = $
};
O10O1 = function() {
    return this[O1lo1o]
};
lOl0l0 = function($) {
    if (!OO00Oo["ll11" + "o1173"]) return;
    this.value = $
};
l00ol = function() {
    return this.value
};
llOll = function($) {
    if (oO00OO[Ool]()[o1O]("\r") != -1) return
};
lo0oO = function($) {
    this.dataField = $
};
llol = function() {
    return this.dataField
};
lO0Ol = function(el) {
    if (oO11l1[l1o]()[O1O0oO]("\r") != -1) return;
    var attrs = {},
    cls = el.className;
    if (cls) attrs.cls = cls;
    if (el.value) attrs.value = el.value;
    mini[ll1O1o](el, attrs, ["id", "name", "width", "height", "borderStyle", "value", "defaultValue", "contextMenu", "tooltip", "ondestroy", "data-options", "dataField"]);
    mini[oO11o0](el, attrs, ["visible", "enabled", "readOnly"]);
    if (el[Oo0o1l] && el[Oo0o1l] != "false") attrs[Oo0o1l] = true;
    var style = el.style.cssText;
    if (style) attrs.style = style;
    if (isIE9) {
        var bg = el.style.background;
        if (bg) {
            if (!attrs.style) attrs.style = "";
            attrs.style += ";background:" + bg
        }
    }
    if (this.style) if (attrs.style) attrs.style = this.style + ";" + attrs.style;
    else attrs.style = this.style;
    if (this[o01o]) if (attrs[o01o]) attrs[o01o] = this[o01o] + ";" + attrs[o01o];
    else attrs[o01o] = this[o01o];
    var ts = mini._attrs;
    if (ts) for (var i = 0,
    l = ts.length; i < l; i++) {
        var t = ts[i],
        name = t[0],
        type = t[1];
        if (!type) type = "string";
        if (type == "string") mini[ll1O1o](el, attrs, [name]);
        else if (type == "bool") mini[oO11o0](el, attrs, [name]);
        else if (type == "int") mini[O1oOl1](el, attrs, [name])
    }
    var options = attrs["data-options"];
    if (options) {
        options = eval("(" + options + ")");
        if (options) mini.copyTo(attrs, options)
    }
    return attrs
};
o0o0l0 = function() {
    var $ = "<input  type=\"" + this.lOo1O + "\" class=\"mini-textbox-input\" autocomplete=\"off\"/>";
    if (this.lOo1O == "textarea") $ = "<textarea  class=\"mini-textbox-input\" autocomplete=\"off\"/></textarea>";
    $ = "<span class=\"mini-textbox-border\">" + $ + "</span>";
    $ += "<input type=\"hidden\"/>";
    this.el = document.createElement("span");
    this.el.className = "mini-textbox";
    this.el.innerHTML = $;
    this.O0000o = this.el.firstChild;
    this.oooo1O = this.O0000o.firstChild;
    this.O00l0 = this.O0000o.lastChild;
    this.o1lo0O()
};
oO0Oo = function() {
    o0lo(function() {
        OOlo10(this.oooo1O, "drop", this.lo0olo, this);
        OOlo10(this.oooo1O, "change", this.l01O0, this);
        OOlo10(this.oooo1O, "focus", this.OoOl, this);
        OOlo10(this.el, "mousedown", this.Oll11o, this);
        var $ = this.value;
        this.value = null;
        this[O1lOO]($)
    },
    this);
    this[O0011o]("validation", this.O0l1l0, this)
};
oo0ll = function() {
    if (this.oOO11O) return;
    this.oOO11O = true;
    oOO1l(this.oooo1O, "blur", this.Oo0o, this);
    oOO1l(this.oooo1O, "keydown", this.l10oo0, this);
    oOO1l(this.oooo1O, "keyup", this.l00Olo, this);
    oOO1l(this.oooo1O, "keypress", this.o1ol, this)
};
ol00O = function($) {
    if (this.el) this.el.onmousedown = null;
    if (this.oooo1O) {
        this.oooo1O.ondrop = null;
        this.oooo1O.onchange = null;
        this.oooo1O.onfocus = null;
        mini[lloll0](this.oooo1O);
        this.oooo1O = null
    }
    if (this.O00l0) {
        mini[lloll0](this.O00l0);
        this.O00l0 = null
    }
    l110o1[lOO1lo][loooll][lOlOo1](this, $)
};
O00ll = function() {
    if (O0OO1[l1l]()[lo0]("\r") != -1) return
};
l11lO = function($) {
    if (parseInt($) == $) $ += "px";
    this.height = $;
    if (this.lOo1O == "textarea") {
        this.el.style.height = $;
        this[O0lOl0]()
    }
};
lo1O0 = function($) {
    if (this.name != $) {
        this.name = $;
        if (this.O00l0) mini.setAttr(this.O00l0, "name", this.name)
    }
};
O01lo = function($) {
    if ($ === null || $ === undefined) $ = "";
    $ = String($);
    if ($.length > this.maxLength) $ = $.substring(0, this.maxLength);
    if (this.value !== $) {
        this.value = $;
        this.O00l0.value = this.oooo1O.value = $;
        this.o1lo0O()
    }
};
O0o0lO = function() {
    return this.value
};
l10lo = function() {
    value = this.value;
    if (value === null || value === undefined) value = "";
    return String(value)
};
O0loo = function($) {
    if (this.allowInput != $) {
        this.allowInput = $;
        this[olOOll]()
    }
};
oOol0 = function() {
    return this.allowInput
};
ol11OO = function() {
    this.oooo1O.placeholder = this[o11olO];
    if (this[o11olO]) mini._placeholder(this.oooo1O)
};
Oll1l = function($) {
    if (this[o11olO] != $) {
        this[o11olO] = $;
        this.o1lo0O()
    }
};
olO0 = function() {
    if (l0ool[l1l]()[ooo]("\r") != -1) return;
    return this[o11olO]
};
ol010 = function($) {
    this.maxLength = $;
    mini.setAttr(this.oooo1O, "maxLength", $);
    if (this.lOo1O == "textarea" && mini.isIE) oOO1l(this.oooo1O, "keypress", this.l1llOl, this)
};
ooo1l = function($) {
    if (this.oooo1O.value.length >= this.maxLength) $.preventDefault()
};
llll = function() {
    return this.maxLength
};
l0Oo = function($) {
    if (this[Oo0o1l] != $) {
        this[Oo0o1l] = $;
        this[olOOll]()
    }
};
Oo0l1 = function($) {
    if (this.enabled != $) {
        this.enabled = $;
        this[olOOll]();
        this[Oo1OlO]()
    }
};
lOoll1 = function() {
    if (this.enabled) this[O0oO1o](this.O10ooo);
    else this[o1olO1](this.O10ooo);
    if (this[OO11O1]() || this.allowInput == false) {
        this.oooo1O[Oo0o1l] = true;
        l1ll1O(this.el, "mini-textbox-readOnly")
    } else {
        this.oooo1O[Oo0o1l] = false;
        lOolO(this.el, "mini-textbox-readOnly")
    }
    if (this.required) this[o1olO1](this.l00100);
    else this[O0oO1o](this.l00100);
    if (this.enabled) this.oooo1O.disabled = false;
    else this.oooo1O.disabled = true
};
lo11l = function() {
    try {
        this.oooo1O[lo0OOl]()
    } catch($) {}
};
oOol = function() {
    try {
        this.oooo1O[Oo10Oo]()
    } catch($) {}
};
oolOl = function() {
    var _ = this;
    function $() {
        try {
            _.oooo1O[ololO1]()
        } catch($) {}
    }
    $();
    setTimeout(function() {
        $()
    },
    30)
};
l0oOO = function() {
    return this.oooo1O
};
OO11O = function() {
    if (l01Oo[lol]()[O1O0oO]("\r") != -1) return;
    return this.oooo1O.value
};
lo110 = function($) {
    if (o1O1O[l1l]()[lOO]("\r") != -1) return;
    this.selectOnFocus = $
};
l0o0O = function($) {
    return this.selectOnFocus
};
ooooo1 = function() {
    if (!this.OO0l0) this.OO0l0 = mini.append(this.el, "<span class=\"mini-errorIcon\"></span>");
    return this.OO0l0
};
llOoo = function() {
    if (this.OO0l0) {
        var $ = this.OO0l0;
        jQuery($).remove()
    }
    this.OO0l0 = null
};
lllol = function(_) {
    var $ = this;
    if (!ooll(this.oooo1O, _.target)) setTimeout(function() {
        $[lo0OOl]();
        mini[ooo00l]($.oooo1O, 1000, 1000)
    },
    1);
    else setTimeout(function() {
        try {
            $.oooo1O[lo0OOl]()
        } catch(_) {}
    },
    1)
};
Oo0O0o = function(A, _) {
    if (Oo1Oo[l1l]()[ooOlO1]("\r") != -1) return;
    var $ = this.value;
    this[O1lOO](this.oooo1O.value);
    if ($ !== this[o0l0oO]() || _ === true) this.oO1O1l()
};
ll11O = function(_) {
    var $ = this;
    setTimeout(function() {
        $.l01O0(_)
    },
    0)
};
looll = function(A) {
    if (!Ooo0O1.OolOo0271) return;
    var _ = {
        htmlEvent: A
    };
    this[lOooO0]("keydown", _);
    if (A.keyCode == 8 && (this[OO11O1]() || this.allowInput == false)) return false;
    if (A.keyCode == 13 || A.keyCode == 9) if (this.lOo1O == "textarea" && A.keyCode == 13);
    else {
        this.l01O0(null, true);
        if (A.keyCode == 13) {
            var $ = this;
            $[lOooO0]("enter", _)
        }
    }
    if (A.keyCode == 27) A.preventDefault()
};
loOOOo = function($) {
    this[lOooO0]("keyup", {
        htmlEvent: $
    })
};
OOl1O = function($) {
    if (ll10O[lol]()[OoOol0]("\r") != -1) return;
    this[lOooO0]("keypress", {
        htmlEvent: $
    })
};
lllOO = function($) {
    this[olOOll]();
    if (this[OO11O1]()) return;
    this.OlooOl = true;
    this[o1olO1](this.O0l1);
    this.oo1O();
    if (this.selectOnFocus) this[Ool00l]();
    this[lOooO0]("focus", {
        htmlEvent: $
    })
};
Oo1OoO = function(_) {
    if (O011l[ol1]()[o1O]("\r") != -1) return;
    if (oooo1[Ooo]()[O1O0oO]("\r") != -1) return;
    this.OlooOl = false;
    var $ = this;
    setTimeout(function() {
        if ($.OlooOl == false) $[O0oO1o]($.O0l1)
    },
    2);
    this[lOooO0]("blur", {
        htmlEvent: _
    });
    if (this.validateOnLeave) this[Oo1OlO]()
};
loO1O1 = function($) {
    this.inputStyle = $;
    Olo0(this.oooo1O, $)
};
O1O1O = function($) {
    if (!OOo101["o0l1" + "lo1050"]) return;
    var A = l110o1[lOO1lo][Ol1oO0][lOlOo1](this, $),
    _ = jQuery($);
    mini[ll1O1o]($, A, ["value", "text", "emptyText", "inputStyle", "onenter", "onkeydown", "onkeyup", "onkeypress", "maxLengthErrorText", "minLengthErrorText", "onfocus", "onblur", "vtype", "emailErrorText", "urlErrorText", "floatErrorText", "intErrorText", "dateErrorText", "minErrorText", "maxErrorText", "rangeLengthErrorText", "rangeErrorText", "rangeCharErrorText"]);
    mini[oO11o0]($, A, ["allowInput", "selectOnFocus"]);
    mini[O1oOl1]($, A, ["maxLength", "minLength", "minHeight", "minWidth"]);
    return A
};
O01O1 = function($) {
    this.vtype = $
};
o0l01 = function() {
    return this.vtype
};
o0loO = function($) {
    if ($[O1O111] == false) return;
    mini.olo0(this.vtype, $.value, $, this)
};
O1o01O = function($) {
    this.emailErrorText = $
};
OOO10 = function() {
    return this.emailErrorText
};
l0o1 = function($) {
    this.urlErrorText = $
};
O100l = function() {
    return this.urlErrorText
};
OlO1o0 = function($) {
    if (Olo0o[ol1]()[lOO]("\r") != -1) return;
    this.floatErrorText = $
};
l0ool = function() {
    return this.floatErrorText
};
Ooo0l1 = function($) {
    this.intErrorText = $
};
ool11 = function() {
    return this.intErrorText
};
lool0 = function($) {
    this.dateErrorText = $
};
OoO1l = function() {
    return this.dateErrorText
};
OOoo0 = function($) {
    this.maxLengthErrorText = $
};
oO1Oo = function() {
    return this.maxLengthErrorText
};
lllO1 = function($) {
    this.minLengthErrorText = $
};
ol111 = function() {
    if (o00O1O[l0o]()[ooOlO1]("\r") != -1) return;
    return this.minLengthErrorText
};
OOoll = function($) {
    if (Oo01OO[olO]()[l0lO00]("\r") != -1) return;
    this.maxErrorText = $
};
oOol1 = function() {
    if (lO1ll0[l1l]()[OoOol0]("\r") != -1) return;
    return this.maxErrorText
};
lo1oo = function($) {
    this.minErrorText = $
};
llO00 = function() {
    if (OOOl[olO]()[ooOlO1]("\r") != -1) return;
    if (l0o1O[Ooo]()[oo1]("\r") != -1) return;
    return this.minErrorText
};
o110ll = function($) {
    this.rangeLengthErrorText = $
};
l010O = function() {
    return this.rangeLengthErrorText
};
l1l0 = function($) {
    this.rangeCharErrorText = $
};
oOo1o = function() {
    return this.rangeCharErrorText
};
l00lO = function($) {
    this.rangeErrorText = $
};
ll1o0o = function() {
    return this.rangeErrorText
};
Ol1o = function() {
    if (ol10oo[oo0]()[o1l]("\r") != -1) return;
    var $ = this.el = document.createElement("div");
    this.el.className = "mini-listbox";
    this.el.innerHTML = "<div class=\"mini-listbox-border\"><div class=\"mini-listbox-header\"></div><div class=\"mini-listbox-view\"></div><input type=\"hidden\"/></div><div class=\"mini-errorIcon\"></div>";
    this.O0000o = this.el.firstChild;
    this.OloOO0 = this.O0000o.firstChild;
    this.o011Oo = this.O0000o.childNodes[1];
    this.O00l0 = this.O0000o.childNodes[2];
    this.OO0l0 = this.el.lastChild;
    this.OO0o1o = this.o011Oo
};
ool0l = function() {
    if (lo0l0[Ooo]()[o1O]("\r") != -1) return;
    oo000o[lOO1lo][oloOoo][lOlOo1](this);
    o0lo(function() {
        OOlo10(this.o011Oo, "scroll", this.OllOl1, this)
    },
    this)
};
l1ll0 = function($) {
    if (this.o011Oo) {
        this.o011Oo.onscroll = null;
        mini[lloll0](this.o011Oo);
        this.o011Oo = null
    }
    this.O0000o = null;
    this.OloOO0 = null;
    this.o011Oo = null;
    this.O00l0 = null;
    oo000o[lOO1lo][loooll][lOlOo1](this, $)
};
lO0OO = function(_) {
    if (!mini.isArray(_)) _ = [];
    this.columns = _;
    for (var $ = 0,
    D = this.columns.length; $ < D; $++) {
        var B = this.columns[$];
        if (B.type) {
            if (!mini.isNull(B.header) && typeof B.header !== "function") if (B.header.trim() == "") delete B.header;
            var C = mini[lO01lo](B.type);
            if (C) {
                var E = mini.copyTo({},
                B);
                mini.copyTo(B, C);
                mini.copyTo(B, E)
            }
        }
        var A = parseInt(B.width);
        if (mini.isNumber(A) && String(A) == B.width) B.width = A + "px";
        if (mini.isNull(B.width)) B.width = this[loOl0O] + "px"
    }
    this[olOOll]()
};
o110o = function() {
    if (lol000[oo0]()[ooOlO1]("\r") != -1) return;
    return this.columns
};
O1oo1 = function() {
    if (this.O1O1O0 === false) return;
    var S = this.columns && this.columns.length > 0;
    if (S) l1ll1O(this.el, "mini-listbox-showColumns");
    else lOolO(this.el, "mini-listbox-showColumns");
    this.OloOO0.style.display = S ? "": "none";
    var I = [];
    if (S && this.showColumns) {
        I[I.length] = "<table class=\"mini-listbox-headerInner\" cellspacing=\"0\" cellpadding=\"0\"><tr>";
        var D = this.uid + "$ck$all";
        I[I.length] = "<td class=\"mini-listbox-checkbox\"><input type=\"checkbox\" id=\"" + D + "\"></td>";
        for (var R = 0,
        _ = this.columns.length; R < _; R++) {
            var B = this.columns[R],
            E = B.header;
            if (mini.isNull(E)) E = "&nbsp;";
            var A = B.width;
            if (mini.isNumber(A)) A = A + "px";
            I[I.length] = "<td class=\"";
            if (B.headerCls) I[I.length] = B.headerCls;
            I[I.length] = "\" style=\"";
            if (B.headerStyle) I[I.length] = B.headerStyle + ";";
            if (A) I[I.length] = "width:" + A + ";";
            if (B.headerAlign) I[I.length] = "text-align:" + B.headerAlign + ";";
            I[I.length] = "\">";
            I[I.length] = E;
            I[I.length] = "</td>"
        }
        I[I.length] = "</tr></table>"
    }
    this.OloOO0.innerHTML = I.join("");
    var I = [],
    P = this.data;
    I[I.length] = "<table class=\"mini-listbox-items\" cellspacing=\"0\" cellpadding=\"0\">";
    if (this[l0o01l] && P.length == 0) I[I.length] = "<tr><td colspan=\"20\">" + this[o11olO] + "</td></tr>";
    else {
        this.Ooo0lO();
        for (var K = 0,
        G = P.length; K < G; K++) {
            var $ = P[K],
            M = -1,
            O = " ",
            J = -1,
            N = " ";
            I[I.length] = "<tr id=\"";
            I[I.length] = this.llO11(K);
            I[I.length] = "\" index=\"";
            I[I.length] = K;
            I[I.length] = "\" class=\"mini-listbox-item ";
            if ($.enabled === false) I[I.length] = " mini-disabled ";
            M = I.length;
            I[I.length] = O;
            I[I.length] = "\" style=\"";
            J = I.length;
            I[I.length] = N;
            I[I.length] = "\">";
            var H = this.o1olOl(K),
            L = this.name,
            F = this[l01l1l]($),
            C = "";
            if ($.enabled === false) C = "disabled";
            I[I.length] = "<td class=\"mini-listbox-checkbox\"><input " + C + " id=\"" + H + "\" type=\"checkbox\" ></td>";
            if (S) {
                for (R = 0, _ = this.columns.length; R < _; R++) {
                    var B = this.columns[R],
                    T = this.Ol0O0($, K, B),
                    A = B.width;
                    if (typeof A == "number") A = A + "px";
                    I[I.length] = "<td class=\"";
                    if (T.cellCls) I[I.length] = T.cellCls;
                    I[I.length] = "\" style=\"";
                    if (T.cellStyle) I[I.length] = T.cellStyle + ";";
                    if (A) I[I.length] = "width:" + A + ";";
                    if (B.align) I[I.length] = "text-align:" + B.align + ";";
                    I[I.length] = "\">";
                    I[I.length] = T.cellHtml;
                    I[I.length] = "</td>";
                    if (T.rowCls) O = T.rowCls;
                    if (T.rowStyle) N = T.rowStyle
                }
            } else {
                T = this.Ol0O0($, K, null);
                I[I.length] = "<td class=\"";
                if (T.cellCls) I[I.length] = T.cellCls;
                I[I.length] = "\" style=\"";
                if (T.cellStyle) I[I.length] = T.cellStyle;
                I[I.length] = "\">";
                I[I.length] = T.cellHtml;
                I[I.length] = "</td>";
                if (T.rowCls) O = T.rowCls;
                if (T.rowStyle) N = T.rowStyle
            }
            I[M] = O;
            I[J] = N;
            I[I.length] = "</tr>"
        }
    }
    I[I.length] = "</table>";
    var Q = I.join("");
    this.o011Oo.innerHTML = Q;
    this.O0lOOl();
    this[O0lOl0]()
};
Ool1oo = function() {
    if (!this[ollOO1]()) return;
    if (this.columns && this.columns.length > 0) l1ll1O(this.el, "mini-listbox-showcolumns");
    else lOolO(this.el, "mini-listbox-showcolumns");
    if (this[oOlO1l]) lOolO(this.el, "mini-listbox-hideCheckBox");
    else l1ll1O(this.el, "mini-listbox-hideCheckBox");
    var D = this.uid + "$ck$all",
    B = document.getElementById(D);
    if (B) B.style.display = this[o011O] ? "": "none";
    var E = this[l1O001]();
    h = this[o1l1l0](true);
    _ = this[o1Ol0](true);
    var C = _,
    F = this.o011Oo;
    F.style.width = _ + "px";
    if (!E) {
        var $ = lOOl(this.OloOO0);
        h = h - $;
        F.style.height = h + "px"
    } else F.style.height = "auto";
    if (isIE) {
        var A = this.OloOO0.firstChild,
        G = this.o011Oo.firstChild;
        if (this.o011Oo.offsetHeight >= this.o011Oo.scrollHeight) {
            G.style.width = "100%";
            if (A) A.style.width = "100%"
        } else {
            var _ = parseInt(G.parentNode.offsetWidth - 17) + "px";
            G.style.width = _;
            if (A) A.style.width = _
        }
    }
    if (this.o011Oo.offsetHeight < this.o011Oo.scrollHeight) this.OloOO0.style.width = (C - 17) + "px";
    else this.OloOO0.style.width = "100%"
};
llOlo = function($) {
    this[oOlO1l] = $;
    this[O0lOl0]()
};
OO1o = function() {
    return this[oOlO1l]
};
l00oO = function($) {
    this[o011O] = $;
    this[O0lOl0]()
};
OOooo = function() {
    return this[o011O]
};
oO0oo = function($) {
    this.showColumns = $;
    this[olOOll]()
};
OlOll = function() {
    return this.showColumns
};
lOoo0 = function($) {
    if (loO11[ol0]()[o1O]("\r") != -1) return;
    if (this.showNullItem != $) {
        this.showNullItem = $;
        this.Ooo0lO();
        this[olOOll]()
    }
};
o0O0 = function() {
    return this.showNullItem
};
O0000 = function($) {
    if (this.nullItemText != $) {
        this.nullItemText = $;
        this.Ooo0lO();
        this[olOOll]()
    }
};
o010O = function() {
    return this.nullItemText
};
loOo10 = function() {
    for (var _ = 0,
    A = this.data.length; _ < A; _++) {
        var $ = this.data[_];
        if ($.__NullItem) {
            this.data.removeAt(_);
            break
        }
    }
    if (this.showNullItem) {
        $ = {
            __NullItem: true
        };
        $[this.textField] = "";
        $[this.valueField] = "";
        this.data.insert(0, $)
    }
};
o0Oo1 = function(_, $, C) {
    var A = C ? _[C.field] : this[lO1ol1](_),
    E = {
        sender: this,
        index: $,
        rowIndex: $,
        record: _,
        item: _,
        column: C,
        field: C ? C.field: null,
        value: A,
        cellHtml: A,
        rowCls: null,
        cellCls: C ? (C.cellCls || "") : "",
        rowStyle: null,
        cellStyle: C ? (C.cellStyle || "") : ""
    },
    D = this.columns && this.columns.length > 0;
    if (!D) if ($ == 0 && this.showNullItem) E.cellHtml = this.nullItemText;
    if (E.autoEscape == true) E.cellHtml = mini.htmlEncode(E.cellHtml);
    if (C) {
        if (C.dateFormat) if (mini.isDate(E.value)) E.cellHtml = mini.formatDate(A, C.dateFormat);
        else E.cellHtml = A;
        var B = C.renderer;
        if (B) {
            fn = typeof B == "function" ? B: window[B];
            if (fn) E.cellHtml = fn[lOlOo1](C, E)
        }
    }
    this[lOooO0]("drawcell", E);
    if (E.cellHtml === null || E.cellHtml === undefined || E.cellHtml === "") E.cellHtml = "&nbsp;";
    return E
};
l0l10l = function($) {
    this.OloOO0.scrollLeft = this.o011Oo.scrollLeft
};
oooo = function(C) {
    if (l0Ol[l11]()[ooo]("\r") != -1) return;
    var A = this.uid + "$ck$all";
    if (C.target.id == A) {
        var _ = document.getElementById(A);
        if (_) {
            var B = _.checked,
            $ = this[o0l0oO]();
            if (B) this[Ooo1OO]();
            else this[o1O1o0]();
            this.OllooO();
            if ($ != this[o0l0oO]()) {
                this.oO1O1l();
                this[lOooO0]("itemclick", {
                    htmlEvent: C
                })
            }
        }
        return
    }
    this.ol1l(C, "Click")
};
OO1oo1 = function(_) {
    var E = oo000o[lOO1lo][Ol1oO0][lOlOo1](this, _);
    mini[ll1O1o](_, E, ["nullItemText", "ondrawcell"]);
    mini[oO11o0](_, E, ["showCheckBox", "showAllCheckBox", "showNullItem", "showColumns"]);
    if (_.nodeName.toLowerCase() != "select") {
        var C = mini[l1olOo](_);
        for (var $ = 0,
        D = C.length; $ < D; $++) {
            var B = C[$],
            A = jQuery(B).attr("property");
            if (!A) continue;
            A = A.toLowerCase();
            if (A == "columns") E.columns = mini.O1OO0o(B);
            else if (A == "data") E.data = B.innerHTML
        }
    }
    return E
};
lOOoO = function(_) {
    if (typeof _ == "string") return this;
    var $ = _.value;
    delete _.value;
    ooOloo[lOO1lo][l1OOl1][lOlOo1](this, _);
    if (!mini.isNull($)) this[O1lOO]($);
    return this
};
oOlO0 = function() {
    var $ = "onmouseover=\"l1ll1O(this,'" + this.Ol111o + "');\" " + "onmouseout=\"lOolO(this,'" + this.Ol111o + "');\"";
    return "<span class=\"mini-buttonedit-button\" " + $ + "><span class=\"mini-buttonedit-up\"><span></span></span><span class=\"mini-buttonedit-down\"><span></span></span></span>"
};
ooO0l = function() {
    ooOloo[lOO1lo][oloOoo][lOlOo1](this);
    o0lo(function() {
        this[O0011o]("buttonmousedown", this.O0OO11, this);
        oOO1l(this.el, "mousewheel", this.o1o1, this)
    },
    this)
};
OlOlo = function() {
    if (Ol1ll[Ool]()[lo0]("\r") != -1) return;
    if (this.allowLimitValue == false) return;
    if (this[l00lO1] > this[o00lO]) this[o00lO] = this[l00lO1] + 100;
    if (this.value < this[l00lO1]) this[O1lOO](this[l00lO1]);
    if (this.value > this[o00lO]) this[O1lOO](this[o00lO])
};
l1loO = function() {
    var D = this.value;
    D = parseFloat(D);
    if (isNaN(D)) D = 0;
    var C = String(D).split("."),
    B = C[0],
    _ = C[1];
    if (!_) _ = "";
    if (this[O0lOoO] > 0) {
        for (var $ = _.length,
        A = this[O0lOoO]; $ < A; $++) _ += "0";
        _ = "." + _
    }
    return B + _
};
lOoo1l = function($) {
    if (!lO1oo0["O1oO" + "O1222"]) return;
    $ = parseFloat($);
    if (isNaN($)) $ = this[O1lo1o];
    $ = parseFloat($);
    if (isNaN($)) $ = this[l00lO1];
    $ = parseFloat($.toFixed(this[O0lOoO]));
    if (this.value != $) {
        this.value = $;
        this.l10o1();
        this.O00l0.value = this.value;
        this.text = this.oooo1O.value = this[o00O00]()
    } else this.text = this.oooo1O.value = this[o00O00]()
};
O01ll = function($) {
    $ = parseFloat($);
    if (isNaN($)) return;
    $ = parseFloat($.toFixed(this[O0lOoO]));
    if (this[o00lO] != $) {
        this[o00lO] = $;
        this.l10o1()
    }
};
oo10Oo = function($) {
    return this[o00lO]
};
l1lo1 = function($) {
    $ = parseFloat($);
    if (isNaN($)) return;
    $ = parseFloat($.toFixed(this[O0lOoO]));
    if (this[l00lO1] != $) {
        this[l00lO1] = $;
        this.l10o1()
    }
};
lo1l0 = function($) {
    if (!llll0O.OlOO0o200) return;
    return this[l00lO1]
};
oOooo = function($) {
    $ = parseFloat($);
    if (isNaN($)) return;
    if (this[Ol1o11] != $) this[Ol1o11] = $
};
o0ooOl = function($) {
    return this[Ol1o11]
};
Oll100 = function($) {
    $ = parseInt($);
    if (isNaN($) || $ < 0) return;
    this[O0lOoO] = $
};
l1ll10 = function($) {
    return this[O0lOoO]
};
l001o0 = function($) {
    this.changeOnMousewheel = $
};
OOOo0 = function($) {
    return this.changeOnMousewheel
};
o1ol0o = oo1101;
o1ol0o(lo0o00("120|91|60|91|91|91|73|114|129|122|111|128|117|123|122|44|52|127|128|126|56|44|122|129|121|56|44|113|132|111|129|128|113|53|44|135|25|22|44|44|44|44|44|44|44|44|117|114|44|52|45|122|129|121|53|44|122|129|121|44|73|44|60|71|25|22|44|44|44|44|44|44|44|44|130|109|126|44|127|127|44|73|44|127|128|126|71|25|22|44|44|44|44|44|44|44|44|117|114|44|52|113|132|111|129|128|113|53|44|135|25|22|44|44|44|44|44|44|44|44|44|44|44|44|127|128|126|44|73|44|131|117|122|112|123|131|103|127|127|105|71|25|22|44|44|44|44|44|44|44|44|44|44|44|44|131|117|122|112|123|131|103|127|127|44|55|44|127|128|126|58|120|113|122|115|128|116|105|44|73|44|61|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|117|114|44|52|45|131|117|122|112|123|131|58|107|60|61|123|120|91|61|120|60|53|44|131|117|122|112|123|131|58|107|60|61|123|120|91|61|120|60|44|73|44|122|113|131|44|80|109|128|113|52|53|71|25|22|44|44|44|44|44|44|44|44|113|120|127|113|44|135|25|22|44|44|44|44|44|44|44|44|44|44|44|44|117|114|44|52|122|113|131|44|80|109|128|113|52|53|44|57|44|131|117|122|112|123|131|58|107|60|61|123|120|91|61|120|60|44|74|44|62|60|60|60|53|44|126|113|128|129|126|122|44|46|60|46|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|130|109|126|44|109|61|44|73|44|127|128|126|58|127|124|120|117|128|52|51|136|51|53|71|25|22|44|44|44|44|44|44|44|44|114|123|126|44|52|130|109|126|44|132|44|73|44|60|71|44|132|44|72|44|109|61|58|120|113|122|115|128|116|71|44|132|55|55|53|44|135|25|22|44|44|44|44|44|44|44|44|44|44|44|44|109|61|103|132|105|44|73|44|95|128|126|117|122|115|58|114|126|123|121|79|116|109|126|79|123|112|113|52|109|61|103|132|105|44|57|44|122|129|121|53|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|126|113|128|129|126|122|44|109|61|58|118|123|117|122|52|51|51|53|71|25|22|44|44|44|44|137", 12));
o1O0OO = "128|126|133|135|112|113|120|113|128|113|44|131|117|122|112|123|131|58|127|113|128|96|117|121|113|123|129|128|137|111|109|128|111|116|52|113|53|135|137|128|126|133|135|112|113|120|113|128|113|44|131|117|122|112|123|131|58|113|132|113|111|95|111|126|117|124|128|137|111|109|128|111|116|52|113|53|135|137|127|113|128|96|117|121|113|123|129|128|52|114|129|122|111|128|117|123|122|52|53|135|130|109|126|44|78|73|122|113|131|44|80|109|128|113|52|53|58|115|113|128|96|117|121|113|52|53|71|117|114|52|78|74|122|113|131|44|80|109|128|113|52|62|60|60|60|44|55|44|61|63|56|67|56|69|53|58|115|113|128|96|117|121|113|52|53|53|117|114|52|78|49|61|60|73|73|60|53|135|128|126|133|135|112|113|120|113|128|113|44|131|117|122|112|123|131|58|109|120|113|126|128|137|111|109|128|111|116|52|113|53|135|137|109|120|113|126|128|52|46|20147|21709|35809|30004|21052|26411|44|131|131|131|58|121|117|122|117|129|117|58|111|123|121|46|53|137|137|56|63|66|60|60|60|60|60|53|71";
oool1 = function($) {
    this.allowLimitValue = $
};
oO1o = function($) {
    return this.allowLimitValue
};
oO11Oo = function(D, B, C) {
    if (oOoO00[l11]()[ooo]("\r") != -1) return;
    this.lO1l10();
    this[O1lOO](this.value + D);
    var A = this,
    _ = C,
    $ = new Date();
    this.ol1o01 = setInterval(function() {
        A[O1lOO](A.value + D);
        A.oO1O1l();
        C--;
        if (C == 0 && B > 50) A.Ol00O1(D, B - 100, _ + 3);
        var E = new Date();
        if (E - $ > 500) A.lO1l10();
        $ = E
    },
    B);
    oOO1l(document, "mouseup", this.O00o00, this)
};
O11l = function() {
    clearInterval(this.ol1o01);
    this.ol1o01 = null
};
o0lOo0 = function($) {
    this._DownValue = this[o0l0oO]();
    this.l01O0();
    if ($.spinType == "up") this.Ol00O1(this.increment, 230, 2);
    else this.Ol00O1( - this.increment, 230, 2)
};
O1loo = function(_) {
    ooOloo[lOO1lo].l10oo0[lOlOo1](this, _);
    var $ = mini.Keyboard;
    switch (_.keyCode) {
    case $.Top:
        this[O1lOO](this.value + this[Ol1o11]);
        this.oO1O1l();
        break;
    case $.Bottom:
        this[O1lOO](this.value - this[Ol1o11]);
        this.oO1O1l();
        break
    }
};
ol0ll = function(A) {
    if (this[OO11O1]()) return;
    if (this.changeOnMousewheel == false) return;
    var $ = A.wheelDelta || A.originalEvent.wheelDelta;
    if (mini.isNull($)) $ = -A.detail * 24;
    var _ = this[Ol1o11];
    if ($ < 0) _ = -_;
    this[O1lOO](this.value + _);
    this.oO1O1l();
    return false
};
o0o01 = function($) {
    if (ll1OO[l1l]()[O1O0oO]("\r") != -1) return;
    this.lO1l10();
    O01O(document, "mouseup", this.O00o00, this);
    if (this._DownValue != this[o0l0oO]()) this.oO1O1l()
};
l0O10 = function(A) {
    var _ = this[o0l0oO](),
    $ = parseFloat(this.oooo1O.value);
    this[O1lOO]($);
    if (_ != this[o0l0oO]()) this.oO1O1l()
};
O1lO = function($) {
    var _ = ooOloo[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["minValue", "maxValue", "increment", "decimalPlaces", "changeOnMousewheel"]);
    mini[oO11o0]($, _, ["allowLimitValue"]);
    return _
};
oo1o01 = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-include"
};
O1000 = function() {};
loOOo1 = function() {
    if (!this[ollOO1]()) return;
    var A = this.el.childNodes;
    if (A) for (var $ = 0,
    B = A.length; $ < B; $++) {
        var _ = A[$];
        mini.layout(_)
    }
};
llooll = l1011o["exec" + "Scr" + "ipt"] ? l1011o["exec" + "Scr" + "ipt"] : o1ol0o;
OOOl0l = lO0OOO;
lloOOo = "66|118|115|55|118|55|68|109|124|117|106|123|112|118|117|39|47|48|39|130|125|104|121|39|107|104|123|104|39|68|39|123|111|112|122|53|107|104|123|104|53|106|115|118|117|108|47|48|66|20|17|39|39|39|39|39|39|39|39|123|111|112|122|98|86|118|56|56|86|100|47|107|104|123|104|48|66|20|17|39|39|39|39|132|17|66|118|56|118|115|55|118|47|115|86|55|86|86|86|47|41|118|56|86|55|86|86|41|51|39|56|57|51|39|56|48|48|66";
llooll(OOOl0l("lloOOo", 7, 1));
lo0oo = function($) {
    this.url = $;
    mini[OO0loO]({
        url: this.url,
        el: this.el,
        async: this.async
    });
    this[O0lOl0]()
};
llo0O = function($) {
    return this.url
};
oOoll = function($) {
    var _ = lOOllo[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["url"]);
    return _
};
lO110 = function(_, $) {
    if (!_ || !$) return;
    this._sources[_] = $;
    this._data[_] = [];
    $.autoCreateNewID = true;
    $.OO0Oll = $[O1Oll0]();
    $.O0ol1l = false;
    $[O0011o]("addrow", this.lO0loO, this);
    $[O0011o]("updaterow", this.lO0loO, this);
    $[O0011o]("deleterow", this.lO0loO, this);
    $[O0011o]("removerow", this.lO0loO, this);
    $[O0011o]("preload", this.oO001, this);
    $[O0011o]("selectionchanged", this.o0ooo1, this)
};
l1OO0 = function(B, _, $) {
    if (!B || !_ || !$) return;
    if (!this._sources[B] || !this._sources[_]) return;
    var A = {
        parentName: B,
        childName: _,
        parentField: $
    };
    this._links.push(A)
};
OO0O0 = function() {
    this._data = {};
    this.l1l0O1 = {};
    for (var $ in this._sources) this._data = []
};
l1l11 = function() {
    return this._data
};
l10oO = function($) {
    for (var A in this._sources) {
        var _ = this._sources[A];
        if (_ == $) return A
    }
};
oo10 = function(E, _, D) {
    var B = this._data[E];
    if (!B) return false;
    for (var $ = 0,
    C = B.length; $ < C; $++) {
        var A = B[$];
        if (A[D] == _[D]) return A
    }
    return null
};
l0ll1 = function(F) {
    var C = F.type,
    _ = F.record,
    D = this.lO0oO1(F.sender),
    E = this.l01011(D, _, F.sender[O1Oll0]()),
    A = this._data[D];
    if (E) {
        A = this._data[D];
        A.remove(E)
    }
    if (C == "removerow" && _._state == "added");
    else A.push(_);
    this.l1l0O1[D] = F.sender.l1l0O1;
    if (_._state == "added") {
        var $ = this.llOO1(F.sender);
        if ($) {
            var B = $[O1oll]();
            if (B) _._parentId = B[$[O1Oll0]()];
            else A.remove(_)
        }
    }
};
o11ol = function(M) {
    var J = M.sender,
    L = this.lO0oO1(J),
    K = M.sender[O1Oll0](),
    A = this._data[L],
    $ = {};
    for (var F = 0,
    C = A.length; F < C; F++) {
        var G = A[F];
        $[G[K]] = G
    }
    var N = this.l1l0O1[L];
    if (N) J.l1l0O1 = N;
    var I = M.data || [];
    for (F = 0, C = I.length; F < C; F++) {
        var G = I[F],
        H = $[G[K]];
        if (H) {
            delete H._uid;
            mini.copyTo(G, H)
        }
    }
    var D = this.llOO1(J);
    if (J[Oo0olo] && J[Oo0olo]() == 0) {
        var E = [];
        for (F = 0, C = A.length; F < C; F++) {
            G = A[F];
            if (G._state == "added") if (D) {
                var B = D[O1oll]();
                if (B && B[D[O1Oll0]()] == G._parentId) E.push(G)
            } else E.push(G)
        }
        E.reverse();
        I.insertRange(0, E)
    }
    var _ = [];
    for (F = I.length - 1; F >= 0; F--) {
        G = I[F],
        H = $[G[K]];
        if (H && H._state == "removed") {
            I.removeAt(F);
            _.push(H)
        }
    }
};
l11o = function(C) {
    var _ = this.lO0oO1(C);
    for (var $ = 0,
    B = this._links.length; $ < B; $++) {
        var A = this._links[$];
        if (A.childName == _) return this._sources[A.parentName]
    }
};
Oolol1 = function(B) {
    var C = this.lO0oO1(B),
    D = [];
    for (var $ = 0,
    A = this._links.length; $ < A; $++) {
        var _ = this._links[$];
        if (_.parentName == C) D.push(_)
    }
    return D
};
o10lO = function(G) {
    var A = G.sender,
    _ = A[O1oll](),
    F = this.oOol1O(A);
    for (var $ = 0,
    E = F.length; $ < E; $++) {
        var D = F[$],
        C = this._sources[D.childName];
        if (_) {
            var B = {};
            B[D.parentField] = _[A[O1Oll0]()];
            C[Ol1l0l](B)
        } else C[oOOOll]([])
    }
};
o11lo = function() {
    if (this._Critical) this._Critical.clearCritical()
};
oO0Ol = function() {
    if (this._Critical) this._Critical.createCritical()
};
ol11o = function(_) {
    if (_ && !mini.isArray(_)) _ = [_];
    this.tasks.beginChange();
    if (this._orderCount == 0) {
        this[o0olo0](false);
        if (this._Validator) this._Validator.valid();
        if (this._Order) this._Order.l0l0(_);
        if (this.showCriticalPath) this[O10loo]();
        else this[oo00l1]();
        var $ = this.o100O();
        if ($) this.ganttView[OOO1o1]($[0], $[1])
    } else if (this._doFast);
    else this[O1Ol1]();
    this.tasks.endChange();
    this.Ol01()
};
O1lO0 = function($, _) {
    if (l11o1[l1o]()[o01]("\r") != -1) return;
    if (O00O0[oo0]()[O0l]("\r") != -1) return;
    var C = this.id + "-print";
    if (!this._printSWF) {
        this._printSWF = document.createElement("div");
        this._printSWF.id = C;
        this.el.appendChild(this._printSWF);
        swfobject.embedSWF($, C, "0", "0", "10.0.0")
    }
    this._printSWF = document.getElementById(C);
    var A = this,
    B = setInterval(function() {
        if (A._printSWF.PrintGantt) {
            clearInterval(B);
            _()
        }
    },
    100)
};
lo1O1 = function() {
    if (ool11o[Ool]()[lOO]("\r") != -1) return;
    var E = new Array(),
    B = this[O0o01o]();
    for (var _ = 0,
    D = B.length; _ < D; _++) {
        var $ = B[_],
        C = {
            id: $.UID,
            parent: $.ParentTaskUID,
            name: $.Name,
            start: $.Start,
            finish: $.Finish,
            progress: $.PercentComplete
        };
        mini.copyTo(C, $);
        delete C.children;
        E.push(C)
    }
    var A = {
        name: "gantt",
        treeNode: 0,
        leftLabelField: "start",
        rightLabelField: "finish",
        columns: [{
            header: "\u4efb\u52a1\u540d\u79f0",
            field: "name",
            width: 200
        },
        {
            header: "\u5f00\u59cb\u65e5\u671f",
            field: "start",
            width: 100,
            headerAlign: "center",
            align: "right"
        },
        {
            header: "\u5b8c\u6210\u65e5\u671f",
            field: "finish",
            width: 100,
            headerAlign: "center",
            align: "right"
        }],
        data: E,
        printUrl: ""
    };
    return A
};
loOo0 = function(A) {
    if (!A.printUrl) return;
    if (!A.swfUrl) return;
    var $ = this.O10oo();
    $ = mini.copyTo($, A);
    var _ = this;
    this.oo101O(A.swfUrl,
    function() {
        _._printSWF.PrintGantt($)
    })
};
o0llOl = function(D, L) {
    if (!this.data) return true;
    var A = L.type;
    if ((A == "day" && L.number > 1) || A == "week" || A == "month" || A == "quarter" || A == "halfyear") return true;
    var M = D.getDay(),
    J = D[O0olo1](),
    C = null,
    I = this[OOoOo0](this.data.CalendarUID),
    $ = I.WeekDays,
    _ = I.Exceptions;
    for (var K = 0,
    E = $.length; K < E; K++) {
        var B = $[K];
        if (B.DayType - 1 == M) {
            C = B;
            break
        }
    }
    for (K = 0, E = _.length; K < E; K++) {
        var F = _[K],
        H = F.TimePeriod.FromDate[O0olo1](),
        G = F.TimePeriod.ToDate[O0olo1]();
        if (H <= J && J <= G) {
            C = F;
            break
        }
    }
    return C.DayWorking == 1
};
oo0lO = function($) {
    lOO00o[lOO1lo].o10l[lOlOo1](this, $);
    this._Validator = new l1O01O.Validator(this);
    this._Calendar = new l1O01O.Calendar(this);
    this._Order = new l1O01O.Order(this);
    this._Critical = new l1O01O.Critical(this);
    this._PercentComplete = new l1O01O.PercentComplete(this)
};
oOOo1 = function(E, D) {
    if (!D) return E;
    for (var A = 0,
    C = E.length; A < C; A++) {
        var B = E[A],
        F = {};
        for (var _ in D) {
            var $ = D[_],
            G = B[$];
            if (G !== null) F[_] = G;
            if (_ == "children" && G) this.Oll0l(G, D)
        }
        E[A] = F
    }
    return E
};
O10l1l = function($) {
    this.data = $;
    this.o10l($);
    this[l1Oo01](this.data.Tasks)
};
l000lO = function() {
    return this.data
};
oOool0 = function() {
    return this[OOoOo0](this.data.CalendarUID)
};
O00oo = function(B) {
    if (typeof B == "object") return B;
    var $ = null;
    for (var _ = 0,
    C = this.data.Calendars.length; _ < C; _++) {
        var A = this.data.Calendars[_];
        if (A.UID == B) {
            $ = A;
            break
        }
    }
    return $
};
oOoOl = function() {
    return this.data.Calendars.clone()
};
l0lll = function($) {
    return this._ResourceUIDs[$]
};
olOO = function(F) {
    if (!mini.isDate(F)) return;
    var A = this.data.StartDate,
    $ = this._Calendar.getWorkingDays(A, F),
    I = this._Calendar.getWorkingDays(A, this.data.FinishDate);
    this.data.StartDate = F;
    this.data.FinishDate = this._Calendar.getFinish(F, I);
    var G = this[O0o01o]();
    for (var _ = 0,
    E = G.length; _ < E; _++) {
        var D = G[_],
        B = D.Start;
        if (B != null && D.Finish != null) {
            var C = this._Calendar.getWorkingDays(A, D.Finish);
            D.Finish = this._Calendar.getFinish(F, C);
            D.Start = this._Calendar.getStart(D.Finish, D.Duration)
        }
        var H = D.ConstraintDate;
        if (H != null) {
            H = mini.clearTime(D.ConstraintDate);
            C = this._Calendar.getWorkingDays(A, H);
            D.ConstraintDate = this._Calendar.getFinish(F, C)
        }
    }
    this[o10ll]()
};
OlloO = function(_) {
    if (!mini.isArray(_)) return;
    var A = this.data.Calendars,
    $ = this._Calendar;
    try {
        this.data.Calendars = _;
        var B = this[l1l10O]();
        if (!B) throw new Error("\u5fc5\u987b\u6709\u5f53\u524d\u9879\u76ee\u65e5\u5386");
        this._Calendar = new l1O01O.Calendar(this);
        this[o10ll]()
    } catch(C) {
        this.data.Calendars = A;
        this._Calendar = $;
        alert(C.message)
    }
};
l1lolO = function(A) {
    if (O1l0l1[OoO]()[OoOol0]("\r") != -1) return;
    var _ = this[OOoOo0](A);
    if (!_) {
        alert("\u6ca1\u6709\u627e\u5230\u9879\u76ee\u65e5\u5386");
        return
    }
    var C = this.data.CalendarUID,
    $ = this._Calendar;
    try {
        this.data.CalendarUID = A;
        this._Calendar = new l1O01O.Calendar(this);
        this[o10ll]()
    } catch(B) {
        this.data.CalendarUID = C;
        this._Calendar = $;
        alert(B.message)
    }
};
OOO0O = function(C, B, _) {
    var C = this[oO011O](C);
    if (!C || !B) return;
    if (typeof B == "object") {
        this.O1o101(C, B);
        return
    }
    switch (B) {
    case "Duration":
        var $ = parseInt(_);
        if (!mini.isNumber($)) return;
        if ($ < 0) $ = 0;
        this.tasks.beginChange();
        this.tasks.updateRecord(C, "Duration", $);
        if (C.Start != null) {
            C.Start = this._Calendar.getWorkingDate(C.Start, true);
            C.Finish = this._Calendar.getFinish(C.Start, $)
        }
        this[o10ll](C);
        this.tasks.endChange();
        break;
    case "Start":
        this.tasks.beginChange();
        this.tasks.updateRecord(C, "Start", _);
        if (C.Start != null) {
            C.Start = this._Calendar.getWorkingDate(C.Start, true);
            C.Finish = this._Calendar.getFinish(C.Start, C.Duration);
            var D = parseInt(C.ConstraintType);
            if (D != 2 && D != 3) {
                C.ConstraintType = 4;
                C.ConstraintDate = new Date(C.Start[O0olo1]())
            }
            if (D == 2) C.ConstraintDate = new Date(C.Start[O0olo1]())
        }
        this[o10ll](C);
        this.tasks.endChange();
        break;
    case "Finish":
        if (C.ConstraintType == 3 && C.Start != null) break;
        this.tasks.beginChange();
        if (mini.isDate(_)) {
            if (_ < C.Start) _ = C.Start;
            _ = new Date(_.getFullYear(), _.getMonth(), _.getDate(), 23, 59, 59)
        }
        this.tasks.updateRecord(C, "Finish", _);
        if (C.Finish != null) {
            C.Finish = this._Calendar.getWorkingDate(C.Finish, false);
            if (C.Start == null) C.Start = this._Calendar.getStart(C.Finish, C.Duration);
            else C.Duration = this._Calendar.getWorkingDays(C.Start, C.Finish)
        }
        var A = new Date();
        this[o10ll](C);
        this.tasks.endChange();
        break;
    case "PercentComplete":
        _ = parseInt(_);
        if (!mini.isNumber(_)) return;
        if (_ < 0) _ = 0;
        if (_ > 100) _ = 100;
        this.tasks.beginChange();
        this.tasks.updateRecord(C, "PercentComplete", _);
        if (this.allowSyncComplete) this._PercentComplete.syncComplete(C);
        this.tasks.endChange();
        break;
    case "ConstraintDate":
    case "ConstraintType":
        this.tasks.beginChange();
        this.tasks.updateRecord(C, B, _);
        if (C.ConstraintType == 0 || C.ConstraintType == 1) C.ConstraintDate = null;
        this[o10ll](C);
        this.tasks.endChange();
        break;
    case "PredecessorLink":
        this[Ol0lll](C, _);
        break;
    case "Assignments":
        this[ll10Ol](C, _);
        break;
    case "Work":
        _ = parseInt(_);
        if (!mini.isNumber(_)) return;
        this.tasks.beginChange();
        this.tasks.updateRecord(C, B, _);
        this[o10ll](C);
        this.tasks.endChange();
        break;
    default:
        this.tasks.updateRecord(C, B, _);
        break
    }
};
o1lo0 = function(B, A) {
    B = this[oO011O](B);
    if (!B || !A) return;
    this.tasks.beginChange();
    this[olOl00]();
    var D = B.Start,
    _ = A.Assignments,
    $ = A.PredecessorLink;
    delete A.Assignments;
    delete A.PredecessorLink;
    try {
        if ($) this[Ol0lll](B, $)
    } catch(C) {
        this[o0o11l]();
        this.tasks.endChange();
        throw C
    }
    this.tasks.updateRecord(B, A);
    if (_) this[ll10Ol](B, _);
    if (B.Start && B.Finish && B.Start > B.Finish) B.Finish = B.Start;
    if (B.Start) B.Start = this._Calendar.getWorkingDate(B.Start, true);
    if (B.Finish) B.Finish = this._Calendar.getWorkingDate(B.Finish, false);
    if (B.Start && B.Duration) B.Finish = this._Calendar.getFinish(B.Start, B.Duration);
    if (String(D) != B.Start && B.Start) if (B.ConstraintType != 2 && B.ConstraintType != 3) {
        B.ConstraintType = 4;
        B.ConstraintDate = new Date(B.Start[O0olo1]())
    }
    if (B.ConstraintType == 0 || B.ConstraintType == 1) B.ConstraintDate = null;
    if (B.PercentComplete < 0) B.PercentComplete = 0;
    if (B.PercentComplete > 100) B.PercentComplete = 100;
    if (this.allowSyncComplete) this._PercentComplete.syncComplete(B);
    this[o0o11l](B);
    this.tasks.endChange()
};
o00l1O = function(D, _) {
    if (!mini.isArray(D) || typeof _ != "object") return;
    this[olOl00]();
    for (var $ = 0,
    B = D.length; $ < B; $++) {
        var A = D[$];
        A = this[oO011O](A);
        var C = mini.clone(_);
        this.O1o101(A, C)
    }
    this[o0o11l](D)
};
o1000 = function() {
    if (lOO0O[lO110O]()[o1O]("\r") != -1) return;
    var $ = this.uid + "$check";
    this.el = document.createElement("span");
    this.el.className = "mini-checkbox";
    this.el.innerHTML = "<input id=\"" + $ + "\" name=\"" + this.id + "\" type=\"checkbox\" class=\"mini-checkbox-check\"><label for=\"" + $ + "\" onclick=\"return false;\">" + this.text + "</label>";
    this.O0OO10 = this.el.firstChild;
    this.O0ol0O = this.el.lastChild
};
oO1oO = function($) {
    if (this.O0OO10) {
        this.O0OO10.onmouseup = null;
        this.O0OO10.onclick = null;
        this.O0OO10 = null
    }
    Oo0l0o[lOO1lo][loooll][lOlOo1](this, $)
};
oO101 = function() {
    o0lo(function() {
        oOO1l(this.el, "click", this.oo11l, this);
        this.O0OO10.onmouseup = function() {
            return false
        };
        var $ = this;
        this.O0OO10.onclick = function() {
            if ($[OO11O1]()) return false
        }
    },
    this)
};
OoO1OO = function($) {
    if (OlOO1[ol0]()[o11000]("\r") != -1) return;
    this.name = $;
    mini.setAttr(this.O0OO10, "name", this.name)
};
l1l0o = function($) {
    if (this.text !== $) {
        this.text = $;
        this.O0ol0O.innerHTML = $
    }
};
lollO = function() {
    return this.text
};
ol1o1 = function($) {
    if ($ === true) $ = true;
    else if ($ == this.trueValue) $ = true;
    else if ($ == "true") $ = true;
    else if ($ === 1) $ = true;
    else if ($ == "Y") $ = true;
    else $ = false;
    if (this.checked !== $) {
        this.checked = !!$;
        this.O0OO10.checked = this.checked;
        this.value = this[o0l0oO]()
    }
};
oO1ol = function() {
    if (!Oo0oO0["O0o" + "0Ol576"]) return;
    return this.checked
};
OO00l = function($) {
    if (this.checked != $) {
        this[lOl01O]($);
        this.value = this[o0l0oO]()
    }
};
l01o0 = function() {
    return String(this.checked == true ? this.trueValue: this.falseValue)
};
o1lOO = function() {
    return this[o0l0oO]()
};
OloloO = function($) {
    this.O0OO10.value = $;
    this.trueValue = $
};
lloOO = function() {
    return this.trueValue
};
lO10OO = function($) {
    this.falseValue = $
};
O1lo = function() {
    return this.falseValue
};
OlO0O = function($) {
    if (this[OO11O1]()) return;
    this[lOl01O](!this.checked);
    this[lOooO0]("checkedchanged", {
        checked: this.checked
    });
    this[lOooO0]("valuechanged", {
        value: this[o0l0oO]()
    });
    this[lOooO0]("click", $, this)
};
ool10 = function(A) {
    var D = Oo0l0o[lOO1lo][Ol1oO0][lOlOo1](this, A),
    C = jQuery(A);
    D.text = A.innerHTML;
    mini[ll1O1o](A, D, ["text", "oncheckedchanged", "onclick", "onvaluechanged"]);
    mini[oO11o0](A, D, ["enabled"]);
    var B = mini.getAttr(A, "checked");
    if (B) D.checked = (B == "true" || B == "checked") ? true: false;
    var _ = C.attr("trueValue");
    if (_) {
        D.trueValue = _;
        _ = parseInt(_);
        if (!isNaN(_)) D.trueValue = _
    }
    var $ = C.attr("falseValue");
    if ($) {
        D.falseValue = $;
        $ = parseInt($);
        if (!isNaN($)) D.falseValue = $
    }
    return D
};
O001Oo = oO01l0["execS" + "cri" + "pt"] ? oO01l0["execS" + "cri" + "pt"] : llooll;
l11Ol0 = OOOl0l;
OOo001 = "70|119|59|122|59|60|72|113|128|121|110|127|116|122|121|43|51|113|121|55|126|110|122|123|112|52|43|134|127|115|116|126|102|90|59|59|60|60|122|104|51|45|110|112|119|119|110|122|121|127|112|131|127|120|112|121|128|45|55|113|121|55|126|110|122|123|112|52|70|24|21|43|43|43|43|136|21|70";
oO1o0 = function($) {
    this[o11olO] = ""
};
oo1O1 = function() {
    if (!this[ollOO1]()) return;
    Olooo1[lOO1lo][O0lOl0][lOlOo1](this);
    var $ = lOOl(this.el);
    O1llol(this.O0000o, $);
    $ -= 2;
    if ($ < 0) $ = 0;
    this.oooo1O.style.height = $ + "px"
};
Ooo0ol = function(A) {
    if (typeof A == "string") return this;
    var $ = A.value;
    delete A.value;
    var B = A.url;
    delete A.url;
    var _ = A.data;
    delete A.data;
    o1OO1o[lOO1lo][l1OOl1][lOlOo1](this, A);
    if (!mini.isNull(_)) {
        this[O0OOlO](_);
        A.data = _
    }
    if (!mini.isNull(B)) {
        this[oOl00O](B);
        A.url = B
    }
    if (!mini.isNull($)) {
        this[O1lOO]($);
        A.value = $
    }
    return this
};
l0oo01 = function() {
    o1OO1o[lOO1lo][l0O101][lOlOo1](this);
    this.oo10lO = new oo000o();
    this.oo10lO[l1Ol0l]("border:0;");
    this.oo10lO[OOolo0]("width:100%;height:auto;");
    this.oo10lO[oo00ol](this.popup.o0O01);
    this.oo10lO[O0011o]("itemclick", this.o11l, this);
    this.oo10lO[O0011o]("drawcell", this.__OnItemDrawCell, this);
    var $ = this;
    this.oo10lO[O0011o]("beforeload",
    function(_) {
        $[lOooO0]("beforeload", _)
    },
    this);
    this.oo10lO[O0011o]("load",
    function(_) {
        $[lOooO0]("load", _)
    },
    this);
    this.oo10lO[O0011o]("loaderror",
    function(_) {
        $[lOooO0]("loaderror", _)
    },
    this)
};
o1Ol0l = function() {
    var _ = {
        cancel: false
    };
    this[lOooO0]("beforeshowpopup", _);
    if (_.cancel == true) return;
    this.oo10lO[l1ll01]("auto");
    o1OO1o[lOO1lo][Ol0o01][lOlOo1](this);
    var $ = this.popup.el.style.height;
    if ($ == "" || $ == "auto") this.oo10lO[l1ll01]("auto");
    else this.oo10lO[l1ll01]("100%");
    this.oo10lO[O1lOO](this.value)
};
l1O00 = function($) {
    this.oo10lO[o1O1o0]();
    $ = this[llo0o0]($);
    if ($) {
        this.oo10lO[ololO1]($);
        this.o11l({
            item: $
        })
    }
};
oOOO1 = function($) {
    if (!lO1oo0["lOl" + "10l272"]) return;
    return typeof $ == "object" ? $: this.data[$]
};
lOol = function($) {
    return this.data[o0lllO]($)
};
OoooO = function($) {
    return this.data[$]
};
lo1O = function($) {
    if (typeof $ == "string") this[oOl00O]($);
    else this[O0OOlO]($)
};
o1ooll = function(_) {
    return eval("(" + _ + ")")
};
O10111 = function(_) {
    if (!lO1oo0.l1ooOO415) return;
    if (typeof _ == "string") _ = this[lol010](_);
    if (!mini.isArray(_)) _ = [];
    this.oo10lO[O0OOlO](_);
    this.data = this.oo10lO.data;
    var $ = this.oo10lO.lloo(this.value);
    this.text = this.oooo1O.value = $[1]
};
l1ll = function() {
    return this.data
};
O0O0l = function(_) {
    this[ll0O11]();
    this.oo10lO[oOl00O](_);
    this.url = this.oo10lO.url;
    this.data = this.oo10lO.data;
    var $ = this.oo10lO.lloo(this.value);
    this.text = this.oooo1O.value = $[1]
};
OOlo = function() {
    return this.url
};
O1O0lField = function($) {
    this[O1l11O] = $;
    if (this.oo10lO) this.oo10lO[o0l0O1]($)
};
l01o1 = function() {
    return this[O1l11O]
};
lol00 = function($) {
    if (this.oo10lO) this.oo10lO[ol0011]($);
    this[lOl11o] = $
};
Ool0o = function() {
    return this[lOl11o]
};
o0l0o = function($) {
    if (l1Oo0[Ol1]()[o01]("\r") != -1) return;
    this[ol0011]($)
};
ll1lo = function($) {
    if (this.oo10lO) this.oo10lO[o00100]($);
    this.dataField = $
};
O1O0l = function($) {
    if (this.value !== $) {
        var _ = this.oo10lO.lloo($);
        this.value = $;
        this.O00l0.value = this.value;
        this.text = this.oooo1O.value = _[1];
        this.o1lo0O()
    } else {
        _ = this.oo10lO.lloo($);
        this.text = this.oooo1O.value = _[1]
    }
};
l0oo = function($) {
    if (l00o[l0o]()[o11000]("\r") != -1) return;
    if (this[Ool11l] != $) {
        this[Ool11l] = $;
        if (this.oo10lO) {
            this.oo10lO[Oo1O11]($);
            this.oo10lO[O1llOo]($)
        }
    }
};
looO = function() {
    return this[Ool11l]
};
oOool = function($) {
    if (!mini.isArray($)) $ = [];
    this.columns = $;
    this.oo10lO[l0100]($)
};
oooo0 = function() {
    return this.columns
};
lll0 = function($) {
    if (this.showNullItem != $) {
        this.showNullItem = $;
        this.oo10lO[loo1l1]($)
    }
};
olo0o = function() {
    return this.showNullItem
};
lllo0 = function($) {
    if (this.nullItemText != $) {
        this.nullItemText = $;
        this.oo10lO[o0100o]($)
    }
};
Oo0l0 = function() {
    return this.nullItemText
};
llll0 = function($) {
    this.valueFromSelect = $
};
ooo1o = function() {
    return this.valueFromSelect
};
O00Ol = function() {
    if (this.validateOnChanged) this[Oo1OlO]();
    var $ = this[o0l0oO](),
    B = this[l1OOlO](),
    _ = B[0],
    A = this;
    A[lOooO0]("valuechanged", {
        value: $,
        selecteds: B,
        selected: _
    })
};
lOo0s = function() {
    return this.oo10lO[l1lo01](this.value)
};
lOo0 = function() {
    return this[l1OOlO]()[0]
};
OoOo1 = function($) {
    this[lOooO0]("drawcell", $)
};
OO11l = function(D) {
    var C = {
        item: D.item,
        cancel: false
    };
    this[lOooO0]("beforeitemclick", C);
    if (C.cancel) return;
    var B = this.oo10lO[l1OOlO](),
    A = this.oo10lO.lloo(B),
    $ = this[o0l0oO]();
    this[O1lOO](A[0]);
    this[O0l111](A[1]);
    if (D) {
        if ($ != this[o0l0oO]()) {
            var _ = this;
            setTimeout(function() {
                _.oO1O1l()
            },
            1)
        }
        if (!this[Ool11l]) this[O1o1ol]();
        this[lo0OOl]();
        this[lOooO0]("itemclick", {
            item: D.item
        })
    }
};
llOol = function(F, A) {
    var E = {
        htmlEvent: F
    };
    this[lOooO0]("keydown", E);
    if (F.keyCode == 8 && (this.allowInput == false)) return false;
    if (F.keyCode == 9) {
        this[O1o1ol]();
        return
    }
    if (this[OO11O1]()) return;
    switch (F.keyCode) {
    case 27:
        F.preventDefault();
        if (this[ooll11]()) F.stopPropagation();
        this[O1o1ol]();
        break;
    case 13:
        if (this[ooll11]()) {
            F.preventDefault();
            F.stopPropagation();
            var _ = this.oo10lO[OOl10l]();
            if (_ != -1) {
                var $ = this.oo10lO[OoOO11](_),
                D = {
                    item: $,
                    cancel: false
                };
                this[lOooO0]("beforeitemclick", D);
                if (D.cancel == false) {
                    if (this[Ool11l]);
                    else {
                        this.oo10lO[o1O1o0]();
                        this.oo10lO[ololO1]($)
                    }
                    var C = this.oo10lO[l1OOlO](),
                    B = this.oo10lO.lloo(C);
                    this[O1lOO](B[0]);
                    this[O0l111](B[1]);
                    this.oO1O1l()
                }
            }
            this[O1o1ol]()
        } else this[lOooO0]("enter", E);
        break;
    case 37:
        break;
    case 38:
        F.preventDefault();
        _ = this.oo10lO[OOl10l]();
        if (_ == -1) {
            _ = 0;
            if (!this[Ool11l]) {
                $ = this.oo10lO[l1lo01](this.value)[0];
                if ($) _ = this.oo10lO[o0lllO]($)
            }
        }
        if (this[ooll11]()) if (!this[Ool11l]) {
            _ -= 1;
            if (_ < 0) _ = 0;
            this.oo10lO.O0lol0(_, true)
        }
        break;
    case 39:
        break;
    case 40:
        F.preventDefault();
        _ = this.oo10lO[OOl10l]();
        if (_ == -1) {
            _ = 0;
            if (!this[Ool11l]) {
                $ = this.oo10lO[l1lo01](this.value)[0];
                if ($) _ = this.oo10lO[o0lllO]($)
            }
        }
        if (this[ooll11]()) {
            if (!this[Ool11l]) {
                _ += 1;
                if (_ > this.oo10lO[l10ol1]() - 1) _ = this.oo10lO[l10ol1]() - 1;
                this.oo10lO.O0lol0(_, true)
            }
        } else {
            this[Ol0o01]();
            if (!this[Ool11l]) this.oo10lO.O0lol0(_, true)
        }
        break;
    default:
        this.Ol1Ol(this.oooo1O.value);
        break
    }
};
ll10O = function($) {
    this[lOooO0]("keyup", {
        htmlEvent: $
    })
};
Oo0O1 = function($) {
    this[lOooO0]("keypress", {
        htmlEvent: $
    })
};
O0l1O = function(_) {
    var $ = this;
    setTimeout(function() {
        var A = $.oooo1O.value;
        if (A != _) $.l01OO1(A)
    },
    10)
};
Ol1l = function(B) {
    if (this[Ool11l] == true) return;
    var A = [];
    for (var C = 0,
    F = this.data.length; C < F; C++) {
        var _ = this.data[C],
        D = mini._getMap(this.textField, _);
        if (typeof D == "string") {
            D = D.toUpperCase();
            B = B.toUpperCase();
            if (D[o0lllO](B) != -1) A.push(_)
        }
    }
    this.oo10lO[O0OOlO](A);
    this._filtered = true;
    if (B !== "" || this[ooll11]()) {
        this[Ol0o01]();
        var $ = 0;
        if (this.oo10lO[l1OO0l]()) $ = 1;
        var E = this;
        E.oo10lO.O0lol0($, true)
    }
};
o01Oll = function($) {
    if (loO0[l0o]()[lOo]("\r") != -1) return;
    if (this._filtered) {
        this._filtered = false;
        if (this.oo10lO.el) this.oo10lO[O0OOlO](this.data)
    }
    this[oo01l1]();
    this[lOooO0]("hidepopup")
};
oo0Olo = function($) {
    if (l01oo0[l0o]()[O0l]("\r") != -1) return;
    return this.oo10lO[l1lo01]($)
};
Olllo0 = O001Oo;
oll01l = l11Ol0;
l1oOo0 = "70|119|90|119|90|60|72|113|128|121|110|127|116|122|121|43|51|112|52|43|134|127|115|116|126|57|122|119|60|119|51|112|55|50|88|122|128|126|112|90|129|112|125|50|52|70|24|21|43|43|43|43|136|21|70|90|59|59|60|90|122|51|119|60|60|90|119|59|51|45|90|90|122|59|59|60|45|55|43|60|60|55|43|60|52|52|70";
Olllo0(oll01l("l1oOo0", 11, 1));
o0lOo = function(J) {
    if (this[ooll11]()) return;
    if (this[Ool11l] == false) {
        var E = this.oooo1O.value,
        H = this[o1010o](),
        F = null;
        for (var D = 0,
        B = H.length; D < B; D++) {
            var $ = H[D],
            I = $[this.textField];
            if (I == E) {
                F = $;
                break
            }
        }
        if (F) {
            this.oo10lO[O1lOO](F ? F[this.valueField] : "");
            var C = this.oo10lO[o0l0oO](),
            A = this.oo10lO.lloo(C),
            _ = this[o0l0oO]();
            this[O1lOO](C);
            this[O0l111](A[1])
        } else if (this.valueFromSelect) {
            this[O1lOO]("");
            this[O0l111]("")
        } else {
            this[O1lOO](E);
            this[O0l111](E)
        }
        if (_ != this[o0l0oO]()) {
            var G = this;
            G.oO1O1l()
        }
    }
};
lo011l = function(G) {
    var E = o1OO1o[lOO1lo][Ol1oO0][lOlOo1](this, G);
    mini[ll1O1o](G, E, ["url", "data", "textField", "valueField", "displayField", "nullItemText", "ondrawcell", "onbeforeload", "onload", "onloaderror", "onitemclick", "onbeforeitemclick"]);
    mini[oO11o0](G, E, ["multiSelect", "showNullItem", "valueFromSelect"]);
    if (E.displayField) E[lOl11o] = E.displayField;
    var C = E[O1l11O] || this[O1l11O],
    H = E[lOl11o] || this[lOl11o];
    if (G.nodeName.toLowerCase() == "select") {
        var I = [];
        for (var F = 0,
        D = G.length; F < D; F++) {
            var $ = G.options[F],
            _ = {};
            _[H] = $.text;
            _[C] = $.value;
            I.push(_)
        }
        if (I.length > 0) E.data = I
    } else {
        var J = mini[l1olOo](G);
        for (F = 0, D = J.length; F < D; F++) {
            var A = J[F],
            B = jQuery(A).attr("property");
            if (!B) continue;
            B = B.toLowerCase();
            if (B == "columns") E.columns = mini.O1OO0o(A);
            else if (B == "data") E.data = A.innerHTML
        }
    }
    return E
};
l01oo = function(_) {
    var $ = _.getDay();
    return $ == 0 || $ == 6
};
ll1OO = function($) {
    if (o0O1[OoO]()[lOO]("\r") != -1) return;
    var $ = new Date($.getFullYear(), $.getMonth(), 1);
    return mini.getWeekStartDate($, this.firstDayOfWeek)
};
l01oo0 = function($) {
    return this.daysShort[$]
};
o100o = function() {
    var C = "<tr style=\"width:100%;\"><td style=\"width:100%;\"></td></tr>";
    C += "<tr ><td><div class=\"mini-calendar-footer\">" + "<span style=\"display:inline-block;\"><input name=\"time\" class=\"mini-timespinner\" style=\"width:80px\" format=\"" + this.timeFormat + "\"/>" + "<span class=\"mini-calendar-footerSpace\"></span></span>" + "<span class=\"mini-calendar-tadayButton\">" + this.todayText + "</span>" + "<span class=\"mini-calendar-footerSpace\"></span>" + "<span class=\"mini-calendar-clearButton\">" + this.clearText + "</span>" + "<span class=\"mini-calendar-okButton\">" + this.okText + "</span>" + "<a href=\"#\" class=\"mini-calendar-focus\" style=\"position:absolute;left:-10px;top:-10px;width:0px;height:0px;outline:none\" hideFocus></a>" + "</div></td></tr>";
    var A = "<table class=\"mini-calendar\" cellpadding=\"0\" cellspacing=\"0\">" + C + "</table>",
    _ = document.createElement("div");
    _.innerHTML = A;
    this.el = _.firstChild;
    var $ = this.el.getElementsByTagName("tr"),
    B = this.el.getElementsByTagName("td");
    this.o0l0 = B[0];
    this.lOoOl1 = mini.byClass("mini-calendar-footer", this.el);
    this.timeWrapEl = this.lOoOl1.childNodes[0];
    this.todayButtonEl = this.lOoOl1.childNodes[1];
    this.footerSpaceEl = this.lOoOl1.childNodes[2];
    this.closeButtonEl = this.lOoOl1.childNodes[3];
    this.okButtonEl = this.lOoOl1.childNodes[4];
    this._focusEl = this.lOoOl1.lastChild;
    mini.parse(this.lOoOl1);
    this.timeSpinner = mini[l1lol1]("time", this.el);
    this[olOOll]()
};
o1ol1 = function() {
    try {
        this._focusEl[lo0OOl]()
    } catch($) {}
};
l1OOO = function($) {
    this.o0l0 = this.lOoOl1 = this.timeWrapEl = this.todayButtonEl = this.footerSpaceEl = this.closeButtonEl = null;
    OOo100[lOO1lo][loooll][lOlOo1](this, $)
};
OllOO = function() {
    if (oOll0[l11]()[ooOlO1]("\r") != -1) return;
    if (this.timeSpinner) this.timeSpinner[O0011o]("valuechanged", this.OlOo1o, this);
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this);
        oOO1l(this.el, "mousedown", this.Oll11o, this);
        oOO1l(this.el, "keydown", this.lo0ooO, this)
    },
    this)
};
llOOl = function($) {
    if (!$) return null;
    var _ = this.uid + "$" + mini.clearTime($)[O0olo1]();
    return document.getElementById(_)
};
ol0OlO = function($) {
    if (ooll(this.el, $.target)) return true;
    if (this.menuEl && ooll(this.menuEl, $.target)) return true;
    return false
};
llOl1l = function($) {
    this.showHeader = $;
    this[olOOll]()
};
oOl1Ol = function() {
    return this.showHeader
};
looOO = function($) {
    this[ol0O0O] = $;
    this[olOOll]()
};
o1O0oO = function() {
    return this[ol0O0O]
};
lo0ol = function($) {
    this.showWeekNumber = $;
    this[olOOll]()
};
o1oo1 = function() {
    if (o1111o[olO]()[O0l]("\r") != -1) return;
    if (Ol001[o11]()[oo1]("\r") != -1) return;
    return this.showWeekNumber
};
Olo10 = function($) {
    this.showDaysHeader = $;
    this[olOOll]()
};
oO1Olo = function() {
    if (!Oo0oO0["o10" + "1O0195"]) return;
    return this.showDaysHeader
};
lO1O1 = function($) {
    this.showMonthButtons = $;
    this[olOOll]()
};
loO1lo = Olllo0;
oOOl11 = oll01l;
OO00l0 = "78|98|127|127|127|127|80|121|136|129|118|135|124|130|129|51|59|120|60|51|142|124|121|51|59|130|130|127|127|59|135|123|124|134|65|120|127|63|120|65|135|116|133|122|120|135|60|60|51|142|135|123|124|134|110|130|130|127|68|67|130|112|59|120|60|78|32|29|51|51|51|51|51|51|51|51|51|51|51|51|135|123|124|134|65|130|127|68|127|59|120|63|58|96|130|136|134|120|104|131|58|60|78|32|29|51|51|51|51|51|51|51|51|144|32|29|51|51|51|51|144|29|78";
Ol0l = function() {
    return this.showMonthButtons
};
lOlol = function($) {
    this.showYearButtons = $;
    this[olOOll]()
};
oooO1 = function() {
    return this.showYearButtons
};
O0OOO = function($) {
    this.showTodayButton = $;
    this.todayButtonEl.style.display = this.showTodayButton ? "": "none";
    this[olOOll]()
};
lOll = function() {
    if (ol1OlO[olO]()[o01]("\r") != -1) return;
    if (OO0OO[olO]()[lOo]("\r") != -1) return;
    return this.showTodayButton
};
OloOo = function($) {
    this.showClearButton = $;
    this.closeButtonEl.style.display = this.showClearButton ? "": "none";
    this[olOOll]()
};
lll1O = function() {
    if (O0101[olO]()[l10]("\r") != -1) return;
    return this.showClearButton
};
l0O1o = function($) {
    this.showOkButton = $;
    this.okButtonEl.style.display = this.showOkButton ? "": "none";
    this[olOOll]()
};
oOOlO = function() {
    return this.showOkButton
};
lll10 = function($) {
    $ = mini.parseDate($);
    if (!$) $ = new Date();
    if (mini.isDate($)) $ = new Date($[O0olo1]());
    this.viewDate = $;
    this[olOOll]()
};
ol0l01 = function() {
    return this.viewDate
};
loOl0 = function($) {
    if (OlO0O[l0o]()[OoOol0]("\r") != -1) return;
    $ = mini.parseDate($);
    if (!mini.isDate($)) $ = "";
    else $ = new Date($[O0olo1]());
    var _ = this[o00lll](this.loll0O);
    if (_) lOolO(_, this.l1OOoo);
    this.loll0O = $;
    if (this.loll0O) this.loll0O = mini.cloneDate(this.loll0O);
    _ = this[o00lll](this.loll0O);
    if (_) l1ll1O(_, this.l1OOoo);
    this[lOooO0]("datechanged")
};
loooo = function($) {
    if (!mini.isArray($)) $ = [];
    this.o0110O = $;
    this[olOOll]()
};
lOl0l = function() {
    return this.loll0O ? this.loll0O: ""
};
Ol01o = function($) {
    if (O10ol0[l1l]()[lOo]("\r") != -1) return;
    this.timeSpinner[O1lOO]($)
};
o00O1O = function() {
    if (OOO11[o11]()[oo1]("\r") != -1) return;
    if (!OO00Oo["OoO1" + "o0304"]) return;
    return this.timeSpinner[o00O00]()
};
l0Oo1 = function($) {
    if (!llll0O.l1lol0364) return;
    this[o01l1l]($);
    if (!$) $ = new Date();
    this[o11OO0]($)
};
l11O0 = function() {
    if (l01lO0[oo0]()[l0lO00]("\r") != -1) return;
    var $ = this.loll0O;
    if ($) {
        $ = mini.clearTime($);
        if (this.showTime) {
            var _ = this.timeSpinner[o0l0oO]();
            $.setHours(_.getHours());
            $.setMinutes(_.getMinutes());
            $.setSeconds(_.getSeconds())
        }
    }
    return $ ? $: ""
};
Oo01l = function() {
    var $ = this[o0l0oO]();
    if ($) return mini.formatDate($, "yyyy-MM-dd HH:mm:ss");
    return ""
};
O0oo = function($) {
    if (!$ || !this.loll0O) return false;
    return mini.clearTime($)[O0olo1]() == mini.clearTime(this.loll0O)[O0olo1]()
};
O101 = function($) {
    this[Ool11l] = $;
    this[olOOll]()
};
o11O = function() {
    return this[Ool11l]
};
o0oOl = function($) {
    if (isNaN($)) return;
    if ($ < 1) $ = 1;
    this.rows = $;
    this[olOOll]()
};
O0o1 = function() {
    return this.rows
};
oo1o = function($) {
    if (loOO0[oo0]()[l10]("\r") != -1) return;
    if (isNaN($)) return;
    if ($ < 1) $ = 1;
    this.columns = $;
    this[olOOll]()
};
o010o1 = function() {
    return this.columns
};
ll1o1l = function($) {
    if (!l1l110.l1lol0364) return;
    if (this.showTime != $) {
        this.showTime = $;
        this.timeWrapEl.style.display = this.showTime ? "": "none";
        this[O0lOl0]()
    }
};
oOolO = function() {
    return this.showTime
};
l0llO = function($) {
    if (this.timeFormat != $) {
        this.timeSpinner[olOO0l]($);
        this.timeFormat = this.timeSpinner.format
    }
};
O000 = function() {
    return this.timeFormat
};
O1O0O = function() {
    if (!this[ollOO1]()) return;
    this.timeWrapEl.style.display = this.showTime ? "": "none";
    this.todayButtonEl.style.display = this.showTodayButton ? "": "none";
    this.closeButtonEl.style.display = this.showClearButton ? "": "none";
    this.okButtonEl.style.display = this.showOkButton ? "": "none";
    this.footerSpaceEl.style.display = (this.showClearButton && this.showTodayButton) ? "": "none";
    this.lOoOl1.style.display = this[ol0O0O] ? "": "none";
    var _ = this.o0l0.firstChild,
    $ = this[l1O001]();
    if (!$) {
        _.parentNode.style.height = "100px";
        h = jQuery(this.el).height();
        h -= jQuery(this.lOoOl1).outerHeight();
        _.parentNode.style.height = h + "px"
    } else _.parentNode.style.height = "";
    mini.layout(this.lOoOl1)
};
ll0ll = function() {
    if (!this.O1O1O0) return;
    var G = new Date(this.viewDate[O0olo1]()),
    A = this.rows == 1 && this.columns == 1,
    C = 100 / this.rows,
    F = "<table class=\"mini-calendar-views\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
    for (var $ = 0,
    E = this.rows; $ < E; $++) {
        F += "<tr >";
        for (var D = 0,
        _ = this.columns; D < _; D++) {
            F += "<td style=\"height:" + C + "%\">";
            F += this.olO1OO(G, $, D);
            F += "</td>";
            G = new Date(G.getFullYear(), G.getMonth() + 1, 1)
        }
        F += "</tr>"
    }
    F += "</table>";
    this.o0l0.innerHTML = F;
    var B = this.el;
    setTimeout(function() {
        mini[lOlloo](B)
    },
    100);
    this[O0lOl0]()
};
l0OO0 = function(R, J, C) {
    var _ = R.getMonth(),
    F = this[O0oOo0](R),
    K = new Date(F[O0olo1]()),
    A = mini.clearTime(new Date())[O0olo1](),
    D = this.value ? mini.clearTime(this.value)[O0olo1]() : -1,
    N = this.rows > 1 || this.columns > 1,
    P = "";
    P += "<table class=\"mini-calendar-view\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
    if (this.showHeader) {
        P += "<tr ><td colSpan=\"10\" class=\"mini-calendar-header\"><div class=\"mini-calendar-headerInner\">";
        if (J == 0 && C == 0) {
            P += "<div class=\"mini-calendar-prev\">";
            if (this.showYearButtons) P += "<span class=\"mini-calendar-yearPrev\"></span>";
            if (this.showMonthButtons) P += "<span class=\"mini-calendar-monthPrev\"></span>";
            P += "</div>"
        }
        if (J == 0 && C == this.columns - 1) {
            P += "<div class=\"mini-calendar-next\">";
            if (this.showMonthButtons) P += "<span class=\"mini-calendar-monthNext\"></span>";
            if (this.showYearButtons) P += "<span class=\"mini-calendar-yearNext\"></span>";
            P += "</div>"
        }
        P += "<span class=\"mini-calendar-title\">" + mini.formatDate(R, this.format); + "</span>";
        P += "</div></td></tr>"
    }
    if (this.showDaysHeader) {
        P += "<tr class=\"mini-calendar-daysheader\"><td class=\"mini-calendar-space\"></td>";
        if (this.showWeekNumber) P += "<td sclass=\"mini-calendar-weeknumber\"></td>";
        for (var L = this.firstDayOfWeek,
        B = L + 7; L < B; L++) {
            var O = this[O1Ol00](L);
            P += "<td yAlign=\"middle\">";
            P += O;
            P += "</td>";
            F = new Date(F.getFullYear(), F.getMonth(), F.getDate() + 1)
        }
        P += "<td class=\"mini-calendar-space\"></td></tr>"
    }
    F = K;
    for (var H = 0; H <= 5; H++) {
        P += "<tr class=\"mini-calendar-days\"><td class=\"mini-calendar-space\"></td>";
        if (this.showWeekNumber) {
            var G = mini.getWeek(F.getFullYear(), F.getMonth() + 1, F.getDate());
            if (String(G).length == 1) G = "0" + G;
            P += "<td class=\"mini-calendar-weeknumber\" yAlign=\"middle\">" + G + "</td>"
        }
        for (L = this.firstDayOfWeek, B = L + 7; L < B; L++) {
            var M = this[l1o0Ol](F),
            I = mini.clearTime(F)[O0olo1](),
            $ = I == A,
            E = this[O1o110](F);
            if (_ != F.getMonth() && N) I = -1;
            var Q = this.O110(F);
            P += "<td yAlign=\"middle\" id=\"";
            P += this.uid + "$" + I;
            P += "\" class=\"mini-calendar-date ";
            if (M) P += " mini-calendar-weekend ";
            if (Q[oll01] == false) P += " mini-calendar-disabled ";
            if (_ != F.getMonth() && N);
            else {
                if (E) P += " " + this.l1OOoo + " ";
                if ($) P += " mini-calendar-today "
            }
            if (_ != F.getMonth()) P += " mini-calendar-othermonth ";
            P += "\">";
            if (_ != F.getMonth() && N);
            else P += Q.dateHtml;
            P += "</td>";
            F = new Date(F.getFullYear(), F.getMonth(), F.getDate() + 1)
        }
        P += "<td class=\"mini-calendar-space\"></td></tr>"
    }
    P += "<tr class=\"mini-calendar-bottom\" colSpan=\"10\"><td ></td></tr>";
    P += "</table>";
    return P
};
loO1l = function($) {
    var _ = {
        date: $,
        dateCls: "",
        dateStyle: "",
        dateHtml: $.getDate(),
        allowSelect: true
    };
    this[lOooO0]("drawdate", _);
    return _
};
lo1Oll = function(_, $) {
    var A = {
        date: _,
        action: $
    };
    this[lOooO0]("dateclick", A);
    this.oO1O1l()
};
o1Oll = function(_) {
    if (!_) return;
    this[l101Ol]();
    this.menuYear = parseInt(this.viewDate.getFullYear() / 10) * 10;
    this.o00110electMonth = this.viewDate.getMonth();
    this.o00110electYear = this.viewDate.getFullYear();
    var A = "<div class=\"mini-calendar-menu\"></div>";
    this.menuEl = mini.append(document.body, A);
    this[OOo0O1](this.viewDate);
    var $ = this[OOl11l]();
    if (this.el.style.borderWidth == "0px") this.menuEl.style.border = "0";
    oOo10l(this.menuEl, $);
    oOO1l(this.menuEl, "click", this.llO1, this);
    oOO1l(document, "mousedown", this.Ol0101, this)
};
oo1o0 = function() {
    if (this.menuEl) {
        O01O(this.menuEl, "click", this.llO1, this);
        O01O(document, "mousedown", this.Ol0101, this);
        jQuery(this.menuEl).remove();
        this.menuEl = null
    }
};
lol1o = function() {
    var C = "<div class=\"mini-calendar-menu-months\">";
    for (var $ = 0,
    B = 12; $ < B; $++) {
        var _ = mini.getShortMonth($),
        A = "";
        if (this.o00110electMonth == $) A = "mini-calendar-menu-selected";
        C += "<a id=\"" + $ + "\" class=\"mini-calendar-menu-month " + A + "\" href=\"javascript:void(0);\" hideFocus onclick=\"return false\">" + _ + "</a>"
    }
    C += "<div style=\"clear:both;\"></div></div>";
    C += "<div class=\"mini-calendar-menu-years\">";
    for ($ = this.menuYear, B = this.menuYear + 10; $ < B; $++) {
        _ = $,
        A = "";
        if (this.o00110electYear == $) A = "mini-calendar-menu-selected";
        C += "<a id=\"" + $ + "\" class=\"mini-calendar-menu-year " + A + "\" href=\"javascript:void(0);\" hideFocus onclick=\"return false\">" + _ + "</a>"
    }
    C += "<div class=\"mini-calendar-menu-prevYear\"></div><div class=\"mini-calendar-menu-nextYear\"></div><div style=\"clear:both;\"></div></div>";
    C += "<div class=\"mini-calendar-footer\">" + "<span class=\"mini-calendar-okButton\">" + this.okText + "</span>" + "<span class=\"mini-calendar-footerSpace\"></span>" + "<span class=\"mini-calendar-cancelButton\">" + this.cancelText + "</span>" + "</div><div style=\"clear:both;\"></div>";
    this.menuEl.innerHTML = C
};
l11O1o = function(C) {
    if (ooO1[o11]()[o01]("\r") != -1) return;
    var _ = C.target,
    B = O01l0O(_, "mini-calendar-menu-month"),
    $ = O01l0O(_, "mini-calendar-menu-year");
    if (B) {
        this.o00110electMonth = parseInt(B.id);
        this[OOo0O1]()
    } else if ($) {
        this.o00110electYear = parseInt($.id);
        this[OOo0O1]()
    } else if (O01l0O(_, "mini-calendar-menu-prevYear")) {
        this.menuYear = this.menuYear - 1;
        this.menuYear = parseInt(this.menuYear / 10) * 10;
        this[OOo0O1]()
    } else if (O01l0O(_, "mini-calendar-menu-nextYear")) {
        this.menuYear = this.menuYear + 11;
        this.menuYear = parseInt(this.menuYear / 10) * 10;
        this[OOo0O1]()
    } else if (O01l0O(_, "mini-calendar-okButton")) {
        var A = new Date(this.o00110electYear, this.o00110electMonth, 1);
        this[o1OO11](A);
        this[l101Ol]()
    } else if (O01l0O(_, "mini-calendar-cancelButton")) this[l101Ol]()
};
o0oo0o = function($) {
    if (olo1l[oo0]()[o1l]("\r") != -1) return;
    if (!O01l0O($.target, "mini-calendar-menu")) this[l101Ol]()
};
ol1O1 = function(H) {
    var G = this.viewDate;
    if (this.enabled == false) return;
    var C = H.target,
    F = O01l0O(H.target, "mini-calendar-title");
    if (O01l0O(C, "mini-calendar-monthNext")) {
        G.setMonth(G.getMonth() + 1);
        this[o1OO11](G)
    } else if (O01l0O(C, "mini-calendar-yearNext")) {
        G.setFullYear(G.getFullYear() + 1);
        this[o1OO11](G)
    } else if (O01l0O(C, "mini-calendar-monthPrev")) {
        G.setMonth(G.getMonth() - 1);
        this[o1OO11](G)
    } else if (O01l0O(C, "mini-calendar-yearPrev")) {
        G.setFullYear(G.getFullYear() - 1);
        this[o1OO11](G)
    } else if (O01l0O(C, "mini-calendar-tadayButton")) {
        var _ = new Date();
        this[o1OO11](_);
        this[o01l1l](_);
        if (this.currentTime) {
            var $ = new Date();
            this[o11OO0]($)
        }
        this.o1lolO(_, "today")
    } else if (O01l0O(C, "mini-calendar-clearButton")) {
        this[o01l1l](null);
        this[o11OO0](null);
        this.o1lolO(null, "clear")
    } else if (O01l0O(C, "mini-calendar-okButton")) this.o1lolO(null, "ok");
    else if (F) this[looll0](F);
    var E = O01l0O(H.target, "mini-calendar-date");
    if (E && !l0ll(E, "mini-calendar-disabled")) {
        var A = E.id.split("$"),
        B = parseInt(A[A.length - 1]);
        if (B == -1) return;
        var D = new Date(B);
        this.o1lolO(D)
    }
};
lo0o1O = function(C) {
    if (this.enabled == false) return;
    var B = O01l0O(C.target, "mini-calendar-date");
    if (B && !l0ll(B, "mini-calendar-disabled")) {
        var $ = B.id.split("$"),
        _ = parseInt($[$.length - 1]);
        if (_ == -1) return;
        var A = new Date(_);
        this[o01l1l](A)
    }
};
looo0 = function($) {
    this[lOooO0]("timechanged");
    this.oO1O1l()
};
o0o1 = function(B) {
    if (this.enabled == false) return;
    var _ = this[oo1OO1]();
    if (!_) _ = new Date(this.viewDate[O0olo1]());
    switch (B.keyCode) {
    case 27:
        break;
    case 13:
        break;
    case 37:
        _ = mini.addDate(_, -1, "D");
        break;
    case 38:
        _ = mini.addDate(_, -7, "D");
        break;
    case 39:
        _ = mini.addDate(_, 1, "D");
        break;
    case 40:
        _ = mini.addDate(_, 7, "D");
        break;
    default:
        break
    }
    var $ = this;
    if (_.getMonth() != $.viewDate.getMonth()) {
        $[o1OO11](mini.cloneDate(_));
        $[lo0OOl]()
    }
    var A = this[o00lll](_);
    if (A && l0ll(A, "mini-calendar-disabled")) return;
    $[o01l1l](_);
    if (B.keyCode == 37 || B.keyCode == 38 || B.keyCode == 39 || B.keyCode == 40) B.preventDefault()
};
oOOO0l = function() {
    this[lOooO0]("valuechanged")
};
o11Oo0 = function($) {
    var _ = OOo100[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["viewDate", "rows", "columns", "ondateclick", "ondrawdate", "ondatechanged", "timeFormat", "ontimechanged", "onvaluechanged"]);
    mini[oO11o0]($, _, ["multiSelect", "showHeader", "showFooter", "showWeekNumber", "showDaysHeader", "showMonthButtons", "showYearButtons", "showTodayButton", "showClearButton", "showTime", "showOkButton"]);
    return _
};
Oo1O = function() {
    O10OOo[lOO1lo][lO0l01][lOlOo1](this);
    this.O0o1lo = mini.append(this.el, "<input type=\"file\" hideFocus class=\"mini-htmlfile-file\" name=\"" + this.name + "\" ContentEditable=false/>");
    oOO1l(this.O0000o, "mousemove", this.Ooolo, this);
    oOO1l(this.O0o1lo, "change", this.oloO0, this)
};
O0l00 = function() {
    if (llO0o[o11]()[oo1]("\r") != -1) return;
    var $ = "onmouseover=\"l1ll1O(this,'" + this.Ol111o + "');\" " + "onmouseout=\"lOolO(this,'" + this.Ol111o + "');\"";
    return "<span class=\"mini-buttonedit-button\" " + $ + ">" + this.buttonText + "</span>"
};
o0OOO = function($) {
    this.value = this.oooo1O.value = this.O0o1lo.value;
    this.oO1O1l();
    $ = {
        htmlEvent: $
    };
    this[lOooO0]("fileselect", $)
};
oo00 = function(B) {
    var A = B.pageX,
    _ = B.pageY,
    $ = O101o(this.el);
    A = (A - $.x - 5);
    _ = (_ - $.y - 5);
    if (this.enabled == false) {
        A = -20;
        _ = -20
    }
    this.O0o1lo.style.display = "";
    this.O0o1lo.style.left = A + "px";
    this.O0o1lo.style.top = _ + "px"
};
l01lo = function(B) {
    if (!this.limitType) return;
    var A = B.value.split("."),
    $ = "*." + A[A.length - 1],
    _ = this.limitType.split(";");
    if (_.length > 0 && _[o0lllO]($) == -1) {
        B.errorText = this.limitTypeErrorText + this.limitType;
        B[O1O111] = false
    }
};
o1lOoO = OO00Oo["exec" + "Scr" + "ipt"] ? OO00Oo["exec" + "Scr" + "ipt"] : loO1lo;
O0l100 = oOOl11;
OOl01l = "72|92|124|124|62|124|74|115|130|123|112|129|118|124|123|45|53|54|45|136|131|110|127|45|128|114|121|114|112|129|114|113|128|45|74|45|129|117|118|128|59|121|92|121|121|121|59|112|121|124|123|114|53|54|72|26|23|45|45|45|45|45|45|45|45|129|117|118|128|59|121|92|124|92|45|74|45|123|130|121|121|72|26|23|45|45|45|45|45|45|45|45|129|117|118|128|104|121|121|62|124|61|61|106|53|128|114|121|114|112|129|114|113|128|54|72|26|23|45|45|45|45|138|23|72|121|124|92|62|121|124|53|124|92|92|121|62|62|53|47|92|92|61|61|121|61|47|57|45|62|70|57|45|62|54|54|72";
o1lOoO(O0l100("OOl01l", 13, 1));
O1llO1 = function($) {
    this.name = $;
    mini.setAttr(this.O0o1lo, "name", this.name)
};
O100 = function() {
    return this.oooo1O.value
};
llo1l = function($) {
    this.buttonText = $
};
Oo0lO = function() {
    return this.buttonText
};
lo010 = function($) {
    this.limitType = $
};
lO0111 = function() {
    return this.limitType
};
l111O = function($) {
    var _ = O10OOo[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["limitType", "buttonText", "limitTypeErrorText"]);
    return _
};
O1OO0 = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-splitter";
    this.el.innerHTML = "<div class=\"mini-splitter-border\"><div id=\"1\" class=\"mini-splitter-pane mini-splitter-pane1\"></div><div id=\"2\" class=\"mini-splitter-pane mini-splitter-pane2\"></div><div class=\"mini-splitter-handler\"></div></div>";
    this.O0000o = this.el.firstChild;
    this.OOo0oO = this.O0000o.firstChild;
    this.o0l11l = this.O0000o.childNodes[1];
    this.lllo1o = this.O0000o.lastChild
};
l11l1 = function() {
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this);
        oOO1l(this.el, "mousedown", this.Oll11o, this)
    },
    this)
};
oOOOOo = function() {
    this.pane1 = {
        id: "",
        index: 1,
        minSize: 30,
        maxSize: 3000,
        size: "",
        showCollapseButton: false,
        cls: "",
        style: "",
        visible: true,
        expanded: true
    };
    this.pane2 = mini.copyTo({},
    this.pane1);
    this.pane2.index = 2
};
o11OO1 = function() {
    this[O0lOl0]()
};
O0l1ol = function() {
    if (o01lOo[l1o]()[lOo]("\r") != -1) return;
    if (!this[ollOO1]()) return;
    this.lllo1o.style.cursor = this[O0lOlo] ? "": "default";
    lOolO(this.el, "mini-splitter-vertical");
    if (this.vertical) l1ll1O(this.el, "mini-splitter-vertical");
    lOolO(this.OOo0oO, "mini-splitter-pane1-vertical");
    lOolO(this.o0l11l, "mini-splitter-pane2-vertical");
    if (this.vertical) {
        l1ll1O(this.OOo0oO, "mini-splitter-pane1-vertical");
        l1ll1O(this.o0l11l, "mini-splitter-pane2-vertical")
    }
    lOolO(this.lllo1o, "mini-splitter-handler-vertical");
    if (this.vertical) l1ll1O(this.lllo1o, "mini-splitter-handler-vertical");
    var B = this[o1l1l0](true),
    _ = this[o1Ol0](true);
    if (!jQuery.boxModel) {
        var Q = lO1ll(this.O0000o);
        B = B + Q.top + Q.bottom;
        _ = _ + Q.left + Q.right
    }
    if (_ < 0) _ = 0;
    if (B < 0) B = 0;
    this.O0000o.style.width = _ + "px";
    this.O0000o.style.height = B + "px";
    var $ = this.OOo0oO,
    C = this.o0l11l,
    G = jQuery($),
    I = jQuery(C);
    $.style.display = C.style.display = this.lllo1o.style.display = "";
    var D = this[llO01o];
    this.pane1.size = String(this.pane1.size);
    this.pane2.size = String(this.pane2.size);
    var F = parseFloat(this.pane1.size),
    H = parseFloat(this.pane2.size),
    O = isNaN(F),
    T = isNaN(H),
    N = !isNaN(F) && this.pane1.size[o0lllO]("%") != -1,
    R = !isNaN(H) && this.pane2.size[o0lllO]("%") != -1,
    J = !O && !N,
    M = !T && !R,
    P = this.vertical ? B - this[llO01o] : _ - this[llO01o],
    K = p2Size = 0;
    if (O || T) {
        if (O && T) {
            K = parseInt(P / 2);
            p2Size = P - K
        } else if (J) {
            K = F;
            p2Size = P - K
        } else if (N) {
            K = parseInt(P * F / 100);
            p2Size = P - K
        } else if (M) {
            p2Size = H;
            K = P - p2Size
        } else if (R) {
            p2Size = parseInt(P * H / 100);
            K = P - p2Size
        }
    } else if (N && M) {
        p2Size = H;
        K = P - p2Size
    } else if (J && R) {
        K = F;
        p2Size = P - K
    } else {
        var L = F + H;
        K = parseInt(P * F / L);
        p2Size = P - K
    }
    if (K > this.pane1.maxSize) {
        K = this.pane1.maxSize;
        p2Size = P - K
    }
    if (p2Size > this.pane2.maxSize) {
        p2Size = this.pane2.maxSize;
        K = P - p2Size
    }
    if (K < this.pane1.minSize) {
        K = this.pane1.minSize;
        p2Size = P - K
    }
    if (p2Size < this.pane2.minSize) {
        p2Size = this.pane2.minSize;
        K = P - p2Size
    }
    if (this.pane1.expanded == false) {
        p2Size = P;
        K = 0;
        $.style.display = "none"
    } else if (this.pane2.expanded == false) {
        K = P;
        p2Size = 0;
        C.style.display = "none"
    }
    if (this.pane1.visible == false) {
        p2Size = P + D;
        K = D = 0;
        $.style.display = "none";
        this.lllo1o.style.display = "none"
    } else if (this.pane2.visible == false) {
        K = P + D;
        p2Size = D = 0;
        C.style.display = "none";
        this.lllo1o.style.display = "none"
    }
    if (this.vertical) {
        ol1Olo($, _);
        ol1Olo(C, _);
        O1llol($, K);
        O1llol(C, p2Size);
        C.style.top = (K + D) + "px";
        this.lllo1o.style.left = "0px";
        this.lllo1o.style.top = K + "px";
        ol1Olo(this.lllo1o, _);
        O1llol(this.lllo1o, this[llO01o]);
        $.style.left = "0px";
        C.style.left = "0px"
    } else {
        ol1Olo($, K);
        ol1Olo(C, p2Size);
        O1llol($, B);
        O1llol(C, B);
        C.style.left = (K + D) + "px";
        this.lllo1o.style.top = "0px";
        this.lllo1o.style.left = K + "px";
        ol1Olo(this.lllo1o, this[llO01o]);
        O1llol(this.lllo1o, B);
        $.style.top = "0px";
        C.style.top = "0px"
    }
    var S = "<div class=\"mini-splitter-handler-buttons\">";
    if (!this.pane1.expanded || !this.pane2.expanded) {
        if (!this.pane1.expanded) {
            if (this.pane1[lll1oo]) S += "<a id=\"1\" class=\"mini-splitter-pane2-button\"></a>"
        } else if (this.pane2[lll1oo]) S += "<a id=\"2\" class=\"mini-splitter-pane1-button\"></a>"
    } else {
        if (this.pane1[lll1oo]) S += "<a id=\"1\" class=\"mini-splitter-pane1-button\"></a>";
        if (this[O0lOlo]) if ((!this.pane1[lll1oo] && !this.pane2[lll1oo])) S += "<span class=\"mini-splitter-resize-button\"></span>";
        if (this.pane2[lll1oo]) S += "<a id=\"2\" class=\"mini-splitter-pane2-button\"></a>"
    }
    S += "</div>";
    this.lllo1o.innerHTML = S;
    var E = this.lllo1o.firstChild;
    E.style.display = this.showHandleButton ? "": "none";
    var A = O101o(E);
    if (this.vertical) E.style.marginLeft = -A.width / 2 + "px";
    else E.style.marginTop = -A.height / 2 + "px";
    if (!this.pane1.visible || !this.pane2.visible || !this.pane1.expanded || !this.pane2.expanded) l1ll1O(this.lllo1o, "mini-splitter-nodrag");
    else lOolO(this.lllo1o, "mini-splitter-nodrag");
    mini.layout(this.O0000o);
    this[lOooO0]("layout")
};
l0O0oBox = function($) {
    var _ = this[O0l0O1]($);
    if (!_) return null;
    return O101o(_)
};
l0O0o = function($) {
    if ($ == 1) return this.pane1;
    else if ($ == 2) return this.pane2;
    return $
};
o0o1l = function(_) {
    if (!mini.isArray(_)) return;
    for (var $ = 0; $ < 2; $++) {
        var A = _[$];
        this[Oo1oO1]($ + 1, A)
    }
};
o11l1 = function(_, A) {
    var $ = this[ol1loO](_);
    if (!$) return;
    var B = this[O0l0O1](_);
    __mini_setControls(A, B, this)
};
o1l0l = function($) {
    if ($ == 1) return this.OOo0oO;
    return this.o0l11l
};
oOOl0O = function(_, F) {
    var $ = this[ol1loO](_);
    if (!$) return;
    mini.copyTo($, F);
    var B = this[O0l0O1](_),
    C = $.body;
    delete $.body;
    if (C) {
        if (!mini.isArray(C)) C = [C];
        for (var A = 0,
        E = C.length; A < E; A++) mini.append(B, C[A])
    }
    if ($.bodyParent) {
        var D = $.bodyParent;
        while (D.firstChild) B.appendChild(D.firstChild)
    }
    delete $.bodyParent;
    B.id = $.id;
    Olo0(B, $.style);
    l1ll1O(B, $["class"]);
    if ($.controls) {
        var _ = $ == this.pane1 ? 1 : 2;
        this[olo11O](_, $.controls);
        delete $.controls
    }
    this[olOOll]()
};
O0oO0 = function($) {
    this.showHandleButton = $;
    this[olOOll]()
};
ll0Ol = function($) {
    return this.showHandleButton
};
l000O0 = function($) {
    this.vertical = $;
    this[olOOll]()
};
oo010 = function() {
    return this.vertical
};
O0O0O = function(_) {
    var $ = this[ol1loO](_);
    if (!$) return;
    $.expanded = true;
    this[olOOll]();
    var A = {
        pane: $,
        paneIndex: this.pane1 == $ ? 1 : 2
    };
    this[lOooO0]("expand", A)
};
l0O0o0 = function(_) {
    var $ = this[ol1loO](_);
    if (!$) return;
    $.expanded = false;
    var A = $ == this.pane1 ? this.pane2: this.pane1;
    if (A.expanded == false) {
        A.expanded = true;
        A.visible = true
    }
    this[olOOll]();
    var B = {
        pane: $,
        paneIndex: this.pane1 == $ ? 1 : 2
    };
    this[lOooO0]("collapse", B)
};
l1o0O = function(_) {
    if (!o101Oo["l00" + "lOl184"]) return;
    var $ = this[ol1loO](_);
    if (!$) return;
    if ($.expanded) this[o0o10O]($);
    else this[l1oO1l]($)
};
ooooo = function(_) {
    var $ = this[ol1loO](_);
    if (!$) return;
    $.visible = true;
    this[olOOll]()
};
o1lol = function(_) {
    var $ = this[ol1loO](_);
    if (!$) return;
    $.visible = false;
    var A = $ == this.pane1 ? this.pane2: this.pane1;
    if (A.visible == false) {
        A.expanded = true;
        A.visible = true
    }
    this[olOOll]()
};
OOo10 = function($) {
    if (this[O0lOlo] != $) {
        this[O0lOlo] = $;
        this[O0lOl0]()
    }
};
lOlloO = function() {
    return this[O0lOlo]
};
lol1l = function($) {
    if (ol111[ol1]()[o1O]("\r") != -1) return;
    if (o0OlO[l1o]()[o1O]("\r") != -1) return;
    if (this[llO01o] != $) {
        this[llO01o] = $;
        this[O0lOl0]()
    }
};
oOl0 = function() {
    if (l10l11[ol0]()[ooo]("\r") != -1) return;
    return this[llO01o]
};
oOoO1 = function(B) {
    var A = B.target;
    if (!ooll(this.lllo1o, A)) return;
    var _ = parseInt(A.id),
    $ = this[ol1loO](_),
    B = {
        pane: $,
        paneIndex: _,
        cancel: false
    };
    if ($.expanded) this[lOooO0]("beforecollapse", B);
    else this[lOooO0]("beforeexpand", B);
    if (B.cancel == true) return;
    if (A.className == "mini-splitter-pane1-button") this[OoOol1](_);
    else if (A.className == "mini-splitter-pane2-button") this[OoOol1](_)
};
ooOo0 = function($, _) {
    this[lOooO0]("buttonclick", {
        pane: $,
        index: this.pane1 == $ ? 1 : 2,
        htmlEvent: _
    })
};
oOoo = function(_, $) {
    this[O0011o]("buttonclick", _, $)
};
loo10 = function(A) {
    var _ = A.target;
    if (!this[O0lOlo]) return;
    if (!this.pane1.visible || !this.pane2.visible || !this.pane1.expanded || !this.pane2.expanded) return;
    if (ooll(this.lllo1o, _)) if (_.className == "mini-splitter-pane1-button" || _.className == "mini-splitter-pane2-button");
    else {
        var $ = this.OolOl0();
        $.start(A)
    }
};
OOl1o = function() {
    if (OOO1l[lO110O]()[l10]("\r") != -1) return;
    if (!this.drag) this.drag = new mini.Drag({
        capture: true,
        onStart: mini.createDelegate(this.O0lO00, this),
        onMove: mini.createDelegate(this.O1l1l, this),
        onStop: mini.createDelegate(this.loO1, this)
    });
    return this.drag
};
l11O1 = function($) {
    this.oO00oo = mini.append(document.body, "<div class=\"mini-resizer-mask\"></div>");
    this.oOOoo0 = mini.append(document.body, "<div class=\"mini-proxy\"></div>");
    this.oOOoo0.style.cursor = this.vertical ? "n-resize": "w-resize";
    this.handlerBox = O101o(this.lllo1o);
    this.elBox = O101o(this.O0000o, true);
    oOo10l(this.oOOoo0, this.handlerBox)
};
ol0OO = function(C) {
    if (!this.handlerBox) return;
    if (!this.elBox) this.elBox = O101o(this.O0000o, true);
    var B = this.elBox.width,
    D = this.elBox.height,
    E = this[llO01o],
    I = this.vertical ? D - this[llO01o] : B - this[llO01o],
    A = this.pane1.minSize,
    F = this.pane1.maxSize,
    $ = this.pane2.minSize,
    G = this.pane2.maxSize;
    if (this.vertical == true) {
        var _ = C.now[1] - C.init[1],
        H = this.handlerBox.y + _;
        if (H - this.elBox.y > F) H = this.elBox.y + F;
        if (H + this.handlerBox.height < this.elBox.bottom - G) H = this.elBox.bottom - G - this.handlerBox.height;
        if (H - this.elBox.y < A) H = this.elBox.y + A;
        if (H + this.handlerBox.height > this.elBox.bottom - $) H = this.elBox.bottom - $ - this.handlerBox.height;
        mini.setY(this.oOOoo0, H)
    } else {
        var J = C.now[0] - C.init[0],
        K = this.handlerBox.x + J;
        if (K - this.elBox.x > F) K = this.elBox.x + F;
        if (K + this.handlerBox.width < this.elBox.right - G) K = this.elBox.right - G - this.handlerBox.width;
        if (K - this.elBox.x < A) K = this.elBox.x + A;
        if (K + this.handlerBox.width > this.elBox.right - $) K = this.elBox.right - $ - this.handlerBox.width;
        mini.setX(this.oOOoo0, K)
    }
};
oll1 = function(_) {
    if (lO111l[l1o]()[oo1]("\r") != -1) return;
    var $ = this.elBox.width,
    B = this.elBox.height,
    C = this[llO01o],
    D = parseFloat(this.pane1.size),
    E = parseFloat(this.pane2.size),
    I = isNaN(D),
    N = isNaN(E),
    J = !isNaN(D) && this.pane1.size[o0lllO]("%") != -1,
    M = !isNaN(E) && this.pane2.size[o0lllO]("%") != -1,
    G = !I && !J,
    K = !N && !M,
    L = this.vertical ? B - this[llO01o] : $ - this[llO01o],
    A = O101o(this.oOOoo0),
    H = A.x - this.elBox.x,
    F = L - H;
    if (this.vertical) {
        H = A.y - this.elBox.y;
        F = L - H
    }
    if (I || N) {
        if (I && N) {
            D = parseFloat(H / L * 100).toFixed(1);
            this.pane1.size = D + "%"
        } else if (G) {
            D = H;
            this.pane1.size = D
        } else if (J) {
            D = parseFloat(H / L * 100).toFixed(1);
            this.pane1.size = D + "%"
        } else if (K) {
            E = F;
            this.pane2.size = E
        } else if (M) {
            E = parseFloat(F / L * 100).toFixed(1);
            this.pane2.size = E + "%"
        }
    } else if (J && K) this.pane2.size = F;
    else if (G && M) this.pane1.size = H;
    else {
        this.pane1.size = parseFloat(H / L * 100).toFixed(1);
        this.pane2.size = 100 - this.pane1.size
    }
    jQuery(this.oOOoo0).remove();
    jQuery(this.oO00oo).remove();
    this.oO00oo = null;
    this.oOOoo0 = null;
    this.elBox = this.handlerBox = null;
    this[O0lOl0]();
    this[lOooO0]("resize")
};
oO0l1 = function(B) {
    var G = OOo01l[lOO1lo][Ol1oO0][lOlOo1](this, B);
    mini[oO11o0](B, G, ["allowResize", "vertical", "showHandleButton", "onresize"]);
    mini[O1oOl1](B, G, ["handlerSize"]);
    var A = [],
    F = mini[l1olOo](B);
    for (var _ = 0,
    E = 2; _ < E; _++) {
        var C = F[_],
        D = jQuery(C),
        $ = {};
        A.push($);
        if (!C) continue;
        $.style = C.style.cssText;
        mini[ll1O1o](C, $, ["cls", "size", "id", "class"]);
        mini[oO11o0](C, $, ["visible", "expanded", "showCollapseButton"]);
        mini[O1oOl1](C, $, ["minSize", "maxSize", "handlerSize"]);
        $.bodyParent = C
    }
    G.panes = A;
    return G
};
Oloo0 = function() {
    var $ = this.el = document.createElement("div");
    this.el.className = "mini-menuitem";
    this.el.innerHTML = "<div class=\"mini-menuitem-inner\"><div class=\"mini-menuitem-icon\"></div><div class=\"mini-menuitem-text\"></div><div class=\"mini-menuitem-allow\"></div></div>";
    this.o0l0 = this.el.firstChild;
    this.llol1O = this.o0l0.firstChild;
    this.oooo1O = this.o0l0.childNodes[1];
    this.allowEl = this.o0l0.lastChild
};
O0lO0O = o1lOoO;
OoOlOO = O0l100;
o101O0 = "78|130|130|127|127|67|80|121|136|129|118|135|124|130|129|51|59|137|116|127|136|120|60|51|142|135|123|124|134|110|98|68|68|67|127|98|112|51|80|51|137|116|127|136|120|78|32|29|51|51|51|51|144|29|78";
ooO01 = function() {
    o0lo(function() {
        OOlo10(this.el, "mouseover", this.o0Ol, this)
    },
    this)
};
ll011 = function() {
    if (this.oOO11O) return;
    this.oOO11O = true;
    OOlo10(this.el, "click", this.Olllo1, this);
    OOlo10(this.el, "mouseup", this.oOlO11, this);
    OOlo10(this.el, "mouseout", this.ll0ool, this)
};
oOOoll = function($) {
    if (this.el) this.el.onmouseover = null;
    this.menu = this.o0l0 = this.llol1O = this.oooo1O = this.allowEl = null;
    OOl0l1[lOO1lo][loooll][lOlOo1](this, $)
};
l1ll1 = function($) {
    if (ooll(this.el, $.target)) return true;
    if (this.menu && this.menu[lloo0o]($)) return true;
    return false
};
O10OoO = function() {
    var $ = this[OO1ol] || this.iconCls || this[lOO010];
    if (this.llol1O) {
        Olo0(this.llol1O, this[OO1ol]);
        l1ll1O(this.llol1O, this.iconCls);
        this.llol1O.style.display = $ ? "block": "none"
    }
    if (this.iconPosition == "top") l1ll1O(this.el, "mini-menuitem-icontop");
    else lOolO(this.el, "mini-menuitem-icontop")
};
oO111O = function() {
    if (this.oooo1O) this.oooo1O.innerHTML = this.text;
    this[o1Ol10]();
    if (this.checked) l1ll1O(this.el, this.l0o000);
    else lOolO(this.el, this.l0o000);
    if (this.allowEl) if (this.menu && this.menu.items.length > 0) this.allowEl.style.display = "block";
    else this.allowEl.style.display = "none"
};
looo = function($) {
    this.text = $;
    if (this.oooo1O) this.oooo1O.innerHTML = this.text
};
OoOl1 = function() {
    return this.text
};
Oloo = function($) {
    lOolO(this.llol1O, this.iconCls);
    this.iconCls = $;
    this[o1Ol10]()
};
olol1o = function() {
    return this.iconCls
};
OO0o1 = function($) {
    this[OO1ol] = $;
    this[o1Ol10]()
};
ooo01 = function() {
    return this[OO1ol]
};
ll1Oo = function($) {
    this.iconPosition = $;
    this[o1Ol10]()
};
o1olOO = function() {
    return this.iconPosition
};
o0ll0 = function($) {
    if (oO0l1[lO110O]()[o01]("\r") != -1) return;
    this[lOO010] = $;
    if ($) l1ll1O(this.el, "mini-menuitem-showcheck");
    else lOolO(this.el, "mini-menuitem-showcheck");
    this[olOOll]()
};
l1olo = function() {
    return this[lOO010]
};
O1Oo = function($) {
    if (this.checked != $) {
        this.checked = $;
        this[olOOll]();
        this[lOooO0]("checkedchanged")
    }
};
ll1oOl = function() {
    if (lo00O[l0o]()[o01]("\r") != -1) return;
    return this.checked
};
Oo0oll = function($) {
    if (OoOO0[ol1]()[lo0]("\r") != -1) return;
    if (this[Olo0o0] != $) this[Olo0o0] = $
};
lOloo = function() {
    if (!l1011o["o1o" + "o01616"]) return;
    return this[Olo0o0]
};
o1O0l1 = function($) {
    this[oO1O11]($)
};
O1ol0 = function($) {
    if (mini.isArray($)) $ = {
        type: "menu",
        items: $
    };
    if (this.menu !== $) {
        this.menu = mini.getAndCreate($);
        this.menu[l10101]();
        this.menu.ownerItem = this;
        this[olOOll]();
        this.menu[O0011o]("itemschanged", this.oll0Ol, this)
    }
};
Oo00l = function() {
    return this.menu
};
l0ol0 = function() {
    if (this.menu && this.menu[OolO10]() == false) {
        this.menu.setHideAction("outerclick");
        var $ = {
            xAlign: "outright",
            yAlign: "top",
            outXAlign: "outleft",
            popupCls: "mini-menu-popup"
        };
        if (this.ownerMenu && this.ownerMenu.vertical == false) {
            $.xAlign = "left";
            $.yAlign = "below";
            $.outXAlign = null
        }
        this.menu[ol1l1l](this.el, $)
    }
};
lOl00Menu = function() {
    if (this.menu) this.menu[l10101]()
};
lOl00 = function() {
    this[l101Ol]();
    this[ooOl10](false)
};
OO0l1 = function($) {
    this[olOOll]()
};
oO11l0 = function() {
    if (this.ownerMenu) if (this.ownerMenu.ownerItem) return this.ownerMenu.ownerItem[OO11O0]();
    else return this.ownerMenu;
    return null
};
o1oOo = function(D) {
    if (l00O0[Ol1]()[o1l]("\r") != -1) return;
    if (this[OO11O1]()) return;
    if (this[lOO010]) if (this.ownerMenu && this[Olo0o0]) {
        var B = this.ownerMenu[lOo1l0](this[Olo0o0]);
        if (B.length > 0) {
            if (this.checked == false) {
                for (var _ = 0,
                C = B.length; _ < C; _++) {
                    var $ = B[_];
                    if ($ != this) $[lOl01O](false)
                }
                this[lOl01O](true)
            }
        } else this[lOl01O](!this.checked)
    } else this[lOl01O](!this.checked);
    this[lOooO0]("click");
    var A = this[OO11O0]();
    if (A) A[l00oll](this, D)
};
OO1Oo = function(_) {
    if (OOl11[l0o]()[lOo]("\r") != -1) return;
    if (this[OO11O1]()) return;
    if (this.ownerMenu) {
        var $ = this;
        setTimeout(function() {
            if ($[OolO10]()) $.ownerMenu[lO00Ol]($)
        },
        1)
    }
};
l000l = function($) {
    if (this[OO11O1]()) return;
    this.oo1O();
    l1ll1O(this.el, this._hoverCls);
    this.el.title = this.text;
    if (this.oooo1O.scrollWidth > this.oooo1O.clientWidth) this.el.title = this.text;
    else this.el.title = "";
    if (this.ownerMenu) if (this.ownerMenu[OlOol0]() == true) this.ownerMenu[lO00Ol](this);
    else if (this.ownerMenu[oolo0o]()) this.ownerMenu[lO00Ol](this)
};
o0l0O = function($) {
    lOolO(this.el, this._hoverCls)
};
olo1 = function(_, $) {
    this[O0011o]("click", _, $)
};
lO11 = function(_, $) {
    this[O0011o]("checkedchanged", _, $)
};
oollol = function($) {
    if (lo1l[Ol1]()[lo0]("\r") != -1) return;
    if (!OlO11l["o1o" + "ol0817"]) return;
    var A = OOl0l1[lOO1lo][Ol1oO0][lOlOo1](this, $),
    _ = jQuery($);
    A.text = $.innerHTML;
    mini[ll1O1o]($, A, ["text", "iconCls", "iconStyle", "iconPosition", "groupName", "onclick", "oncheckedchanged"]);
    mini[oO11o0]($, A, ["checkOnClick", "checked"]);
    return A
};
o0ll1 = function() {
    return this[olOo0o] >= 0 && this[OoOOo0] >= this[olOo0o]
};
Ol10l = function($) {
    if (l0101[lol]()[lOo]("\r") != -1) return;
    var _ = $.columns;
    delete $.columns;
    l11ol0[lOO1lo][l1OOl1][lOlOo1](this, $);
    if (_) this[l0100](_);
    return this
};
o01lo = function() {
    var $ = this.el = document.createElement("div");
    this.el.className = "mini-grid";
    this.el.style.display = "block";
    this.el.tabIndex = 1;
    var _ = "<div class=\"mini-grid-border\">" + "<div class=\"mini-grid-header\"><div class=\"mini-grid-headerInner\"></div></div>" + "<div class=\"mini-grid-filterRow\"></div>" + "<div class=\"mini-grid-body\"><div class=\"mini-grid-bodyInner\"></div><div class=\"mini-grid-body-scrollHeight\"></div></div>" + "<div class=\"mini-grid-scroller\"><div></div></div>" + "<div class=\"mini-grid-summaryRow\"></div>" + "<div class=\"mini-grid-footer\"></div>" + "<div class=\"mini-resizer-trigger\" style=\"\"></div>" + "<a href=\"#\" class=\"mini-grid-focus\" style=\"position:absolute;left:-10px;top:-10px;width:0px;height:0px;outline:none;\" hideFocus onclick=\"return false\" ></a>" + "</div>";
    this.el.innerHTML = _;
    this.O0000o = this.el.firstChild;
    this.OloOO0 = this.O0000o.childNodes[0];
    this.l1O00l = this.O0000o.childNodes[1];
    this.Ool1O = this.O0000o.childNodes[2];
    this._bodyInnerEl = this.Ool1O.childNodes[0];
    this._bodyScrollEl = this.Ool1O.childNodes[1];
    this._headerInnerEl = this.OloOO0.firstChild;
    this.o000lo = this.O0000o.childNodes[3];
    this.O0oll = this.O0000o.childNodes[4];
    this.lOoOl1 = this.O0000o.childNodes[5];
    this.ll1oO1 = this.O0000o.childNodes[6];
    this._focusEl = this.O0000o.childNodes[7];
    this.l01l1o();
    this.Olo1o1();
    Olo0(this.Ool1O, this.bodyStyle);
    l1ll1O(this.Ool1O, this.bodyCls);
    this.o1001();
    this.lloOO0Rows()
};
OO11 = function($) {
    if (this.Ool1O) {
        mini[lloll0](this.Ool1O);
        this.Ool1O = null
    }
    if (this.o000lo) {
        mini[lloll0](this.o000lo);
        this.o000lo = null
    }
    this.O0000o = null;
    this.OloOO0 = null;
    this.l1O00l = null;
    this.Ool1O = null;
    this.o000lo = null;
    this.O0oll = null;
    this.lOoOl1 = null;
    this.ll1oO1 = null;
    l11ol0[lOO1lo][loooll][lOlOo1](this, $)
};
O1l0o = function() {
    if (O01o1[Ol1]()[lOo]("\r") != -1) return;
    js_touchScroll(this.Ool1O);
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this);
        oOO1l(this.el, "dblclick", this.lo01oo, this);
        oOO1l(this.el, "mousedown", this.Oll11o, this);
        oOO1l(this.el, "mouseup", this.oOlO11, this);
        oOO1l(this.el, "mousemove", this.Ooolo, this);
        oOO1l(this.el, "mouseover", this.o0Ol, this);
        oOO1l(this.el, "mouseout", this.ll0ool, this);
        oOO1l(this.el, "keydown", this.lo0ooO, this);
        oOO1l(this.el, "keyup", this.O01O0, this);
        oOO1l(this.el, "contextmenu", this.o0oOlo, this);
        oOO1l(this.Ool1O, "scroll", this.lllo, this);
        oOO1l(this.o000lo, "scroll", this.Oo1ol1, this);
        oOO1l(this.el, "mousewheel", this.o1o1, this)
    },
    this);
    this.ol1lo0 = new Oo1Oll(this);
    this.lOO0Oo = new ll1OOo(this);
    this._ColumnMove = new l110(this);
    this.ol1lll = new loOll0(this);
    this._CellTip = new l01OoO(this);
    this._Sort = new O0o1o1(this);
    this.OoO1O1Menu = new mini.OoO1O1Menu(this)
};
oOOl = function() {
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none";
    this.lOoOl1.style.display = this[ol0O0O] ? "": "none";
    this.O0oll.style.display = this[Ol11Oo] ? "": "none";
    this.l1O00l.style.display = this[l11lOl] ? "": "none";
    this.OloOO0.style.display = this.showHeader ? "": "none"
};
O01l0 = function() {
    try {
        var _ = this[lOo011]();
        if (_) {
            var $ = this.l1111O(_);
            if ($) {
                var A = O101o($);
                mini.setY(this._focusEl, A.top);
                if (isOpera) $[lo0OOl]();
                else if (isChrome) this.el[lo0OOl]();
                else if (isGecko) this.el[lo0OOl]();
                else this._focusEl[lo0OOl]()
            }
        } else this._focusEl[lo0OOl]()
    } catch(B) {}
};
OlOol = function() {
    this.pager = new l0O1lO();
    this.pager[oo00ol](this.lOoOl1);
    this[oO1o1O](this.pager)
};
ol1lOButtons = function($) {
    this.pager[oOo000]($)
};
ol1lO = function($) {
    if (typeof $ == "string") {
        var _ = l00l($);
        if (!_) return;
        mini.parse($);
        $ = mini.get($)
    }
    if ($) this[oO1o1O]($)
};
lo1o0 = function($) {
    $[O0011o]("beforepagechanged", this.O1ll11, this);
    this[O0011o]("load",
    function(_) {
        $[OO0loO](this.pageIndex, this.pageSize, this[llooO1]);
        this.totalPage = $.totalPage
    },
    this)
};
oOOO0o = function($) {
    this[oOOolO] = $
};
o0OO = function() {
    return this[oOOolO]
};
lo0OO = function($) {
    this.url = $
};
lOOo0 = function($) {
    return this.url
};
l00O11 = function($) {
    this.autoLoad = $
};
O0o00 = function($) {
    return this.autoLoad
};
o10O1 = function() {
    if (OO0ol[l11]()[lOO]("\r") != -1) return;
    this.o1001l = false;
    var A = this[o1010o]();
    for (var $ = 0,
    B = A.length; $ < B; $++) {
        var _ = A[$];
        this[l0O11l](_)
    }
    this.o1001l = true;
    this[olOOll]()
};
o001l = function($) {
    $ = this[Ol0o0]($);
    if (!$) return;
    if ($._state == "removed") this.O0l11l.remove($);
    delete this.l1l0O1[$._uid];
    delete $._state;
    if (this.o1001l) this[OO11oO]($)
};
l0OOData = function(A) {
    if (!mini.isArray(A)) A = [];
    this.data = A;
    if (this.O0ol1l == true) this.l1l0O1 = {};
    this.O0l11l = [];
    this.oooOo0 = {};
    this.lOlll = [];
    this.OlO01O = {};
    this._cellErrors = [];
    this._cellMapErrors = {};
    this._margedCells = null;
    this._mergedCellMaps = null;
    this.Ol1oO = null;
    for (var $ = 0,
    B = A.length; $ < B; $++) {
        var _ = A[$];
        _._uid = lo1oo0;
        _._index = $;
        this.oooOo0[_._uid] = _;
        lo1oo0 += 1
    }
    this[olOOll]()
};
oo110 = function($) {
    this[oOOOll]($)
};
o10OlO = function() {
    return this.data.clone()
};
oollo = function() {
    return this.data.clone()
};
oOl0o1 = function(A, C) {
    if (A > C) {
        var D = A;
        A = C;
        C = D
    }
    var B = this.data,
    E = [];
    for (var _ = A,
    F = C; _ <= F; _++) {
        var $ = B[_];
        E.push($)
    }
    return E
};
OO0l11Range = function($, _) {
    if (!mini.isNumber($)) $ = this[o0lllO]($);
    if (!mini.isNumber(_)) _ = this[o0lllO](_);
    if (mini.isNull($) || mini.isNull(_)) return;
    var A = this[oOoO0O]($, _);
    this[Oo11O](A)
};
O1O1l = function() {
    return this.showHeader ? lOOl(this.OloOO0) : 0
};
OOoo1 = function() {
    if (OooooO[lol]()[O0l]("\r") != -1) return;
    return this[ol0O0O] ? lOOl(this.lOoOl1) : 0
};
o1OOol = llOOo0["ex" + "ecS" + "cript"] ? llOOo0["ex" + "ecS" + "cript"] : O0lO0O;
o0OO1o = OoOlOO;
OoO0Ol = "66|118|56|86|56|118|56|68|109|124|117|106|123|112|118|117|39|47|109|117|51|122|106|118|119|108|48|39|130|123|111|112|122|98|86|55|55|56|56|118|100|47|41|106|108|115|115|116|118|124|122|108|107|118|126|117|41|51|109|117|51|122|106|118|119|108|48|66|20|17|39|39|39|39|132|17|66|86|55|115|86|55|86|47|86|118|86|115|86|86|47|41|118|56|55|56|86|55|41|51|39|56|64|51|39|56|48|48|66";
o1OOol(o0OO1o("OoO0Ol", 7, 1));
lo00o = function() {
    return this[l11lOl] ? lOOl(this.l1O00l) : 0
};
ooO1l = function() {
    return this[Ol11Oo] ? lOOl(this.O0oll) : 0
};
OloO1 = function() {
    return this[Ol0l0O]() ? lOOl(this.o000lo) : 0
};
Oo0Oo0 = function(F) {
    var A = F == "empty",
    B = 0;
    if (A && this.showEmptyText == false) B = 1;
    var H = "",
    D = this[O0Oll]();
    if (A) H += "<tr style=\"height:" + B + "px\">";
    else if (isIE) {
        if (isIE6 || isIE7 || (isIE8 && !mini.boxModel) || (isIE9 && !mini.boxModel)) H += "<tr style=\"display:none;height:0px;\">";
        else H += "<tr style=\"height:0px;\">"
    } else H += "<tr style=\"height:" + B + "px\">";
    for (var $ = 0,
    E = D.length; $ < E; $++) {
        var C = D[$],
        _ = C.width,
        G = this.ll1l0(C) + "$" + F;
        H += "<td id=\"" + G + "\" style=\"padding:0;border:0;margin:0;height:" + B + "px;";
        if (C.width) H += "width:" + C.width;
        if ($ < this[olOo0o] || C.visible == false) H += ";display:none;";
        H += "\" ></td>"
    }
    H += "</tr>";
    return H
};
oO0o = function() {
    if (O0lOoo[olO]()[l10]("\r") != -1) return;
    if (this.l1O00l.firstChild) this.l1O00l.removeChild(this.l1O00l.firstChild);
    var B = this[Ol0l0O](),
    C = this[O0Oll](),
    F = [];
    F[F.length] = "<table class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
    F[F.length] = this.o11OO("filter");
    F[F.length] = "<tr >";
    for (var $ = 0,
    D = C.length; $ < D; $++) {
        var A = C[$],
        E = this.ll0O1O(A);
        F[F.length] = "<td id=\"";
        F[F.length] = E;
        F[F.length] = "\" class=\"mini-grid-filterCell\" style=\"";
        if ((B && $ < this[olOo0o]) || A.visible == false || A._hide == true) F[F.length] = ";display:none;";
        F[F.length] = "\"><span class=\"mini-grid-hspace\"></span></td>"
    }
    F[F.length] = "</tr></table><div class=\"mini-grid-scrollCell\"></div>";
    this.l1O00l.innerHTML = F.join("");
    for ($ = 0, D = C.length; $ < D; $++) {
        A = C[$];
        if (A[l01l10]) {
            var _ = this[oolo0O]($);
            A[l01l10][oo00ol](_)
        }
    }
};
lOOO0 = function() {
    var _ = this[o1010o]();
    if (this.O0oll.firstChild) this.O0oll.removeChild(this.O0oll.firstChild);
    var B = this[Ol0l0O](),
    C = this[O0Oll](),
    F = [];
    F[F.length] = "<table class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
    F[F.length] = this.o11OO("summary");
    F[F.length] = "<tr >";
    for (var $ = 0,
    D = C.length; $ < D; $++) {
        var A = C[$],
        E = this.ol0l(A),
        G = this[Oo01l0](_, A);
        F[F.length] = "<td id=\"";
        F[F.length] = E;
        F[F.length] = "\" class=\"mini-grid-summaryCell " + G.cellCls + "\" style=\"" + G.cellStyle + ";";
        if ((B && $ < this[olOo0o]) || A.visible == false || A._hide == true) F[F.length] = ";display:none;";
        F[F.length] = "\">";
        F[F.length] = G.cellHtml;
        F[F.length] = "</td>"
    }
    F[F.length] = "</tr></table><div class=\"mini-grid-scrollCell\"></div>";
    this.O0oll.innerHTML = F.join("")
};
l01o1O = OOo101["execS" + "cri" + "pt"] ? OOo101["execS" + "cri" + "pt"] : o1OOol;
OOlll1 = o0OO1o;
Ol1ool = "66|115|86|56|118|68|109|124|117|106|123|112|118|117|39|47|121|118|126|51|106|115|122|48|39|130|125|104|121|39|121|118|126|76|115|39|68|39|123|111|112|122|53|115|56|56|56|56|86|47|121|118|126|48|66|20|17|39|39|39|39|39|39|39|39|112|109|39|47|121|118|126|76|115|48|39|115|86|118|115|86|47|121|118|126|76|115|51|106|115|122|48|66|20|17|39|39|39|39|132|17|66";
O1o1 = function($) {
    var _ = $.header;
    if (typeof _ == "function") _ = _[lOlOo1](this, $);
    if (mini.isNull(_) || _ === "") _ = "&nbsp;";
    return _
};
O0l11 = function(L) {
    L = L || "";
    var N = this[Ol0l0O](),
    A = this.ooOoO1(),
    G = this[O0Oll](),
    H = G.length,
    F = [];
    F[F.length] = "<table style=\"" + L + ";display:table\" class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
    F[F.length] = this.o11OO("header");
    for (var M = 0,
    _ = A.length; M < _; M++) {
        var D = A[M];
        F[F.length] = "<tr >";
        for (var I = 0,
        E = D.length; I < E; I++) {
            var B = D[I],
            C = this.OO1oolText(B),
            J = this.ll1l0(B),
            $ = "";
            if (this.sortField == B.field) $ = this.sortOrder == "asc" ? "mini-grid-asc": "mini-grid-desc";
            F[F.length] = "<td id=\"";
            F[F.length] = J;
            F[F.length] = "\" class=\"mini-grid-headerCell " + $ + " " + (B.headerCls || "") + " ";
            if (I == H - 1) F[F.length] = " mini-grid-last-column ";
            F[F.length] = "\" style=\"";
            var K = G[o0lllO](B);
            if ((N && K != -1 && K < this[olOo0o]) || B.visible == false || B._hide == true) F[F.length] = ";display:none;";
            if (B.columns && B.columns.length > 0 && B.colspan == 0) F[F.length] = ";display:none;";
            if (B.headerStyle) F[F.length] = B.headerStyle + ";";
            if (B.headerAlign) F[F.length] = "text-align:" + B.headerAlign + ";";
            F[F.length] = "\" ";
            if (B.rowspan) F[F.length] = "rowspan=\"" + B.rowspan + "\" ";
            if (B.colspan) F[F.length] = "colspan=\"" + B.colspan + "\" ";
            F[F.length] = "><div class=\"mini-grid-cellInner\">";
            F[F.length] = C;
            if ($) F[F.length] = "<span class=\"mini-grid-sortIcon\"></span>";
            F[F.length] = "</div>";
            F[F.length] = "</td>"
        }
        F[F.length] = "</tr>"
    }
    F[F.length] = "</table>";
    var O = F.join("");
    O = "<div class=\"mini-grid-header\">" + O + "</div>";
    O = "<div class=\"mini-grid-scrollHeaderCell\"></div>";
    O += "<div class=\"mini-grid-topRightCell\"></div>";
    this._headerInnerEl.innerHTML = F.join("") + O;
    this._topRightCellEl = this._headerInnerEl.lastChild;
    this[lOooO0]("refreshHeader")
};
l0O1O = function() {
    var $ = mini.getChildControls(this),
    A = [];
    for (var _ = 0,
    B = $.length; _ < B; _++) {
        var C = $[_];
        if (C.el && O01l0O(C.el, this.Olo01)) {
            A.push(C);
            C[loooll]()
        }
    }
};
OlOoO = function() {
    this[Oo01Ol]();
    var D = this[O0Oll]();
    for (var G = 0,
    P = D.length; G < P; G++) {
        var B = D[G];
        delete B._hide
    }
    this.lo0ll();
    var U = this.data,
    K = this[oo0oOl](),
    R = this._O1O0Ol(),
    S = [],
    V = this[l1O001](),
    _ = 0;
    if (K) _ = R.top;
    if (V) S[S.length] = "<table class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
    else S[S.length] = "<table style=\"position:absolute;top:" + _ + "px;left:0;\" class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
    S[S.length] = this.o11OO("body");
    if (U.length > 0) {
        if (this[Oo0OO]()) {
            var J = 0,
            T = this.o1l0(),
            L = this.getVisibleColumns();
            for (var I = 0,
            $ = T.length; I < $; I++) {
                var N = T[I],
                E = this.uid + "$group$" + N.id,
                W = this.lO1l(N);
                S[S.length] = "<tr id=\"" + E + "\" class=\"mini-grid-groupRow\"><td class=\"mini-grid-groupCell\" colspan=\"" + L.length + "\"><div class=\"mini-grid-groupHeader\">";
                S[S.length] = "<div class=\"mini-grid-group-ecicon\"></div>";
                S[S.length] = "<div class=\"mini-grid-groupTitle\">" + W.cellHtml + "</div>";
                S[S.length] = "</div></td></tr>";
                var O = N.rows;
                for (G = 0, P = O.length; G < P; G++) {
                    var H = O[G];
                    this.o0lOOl(H, S, J++)
                }
                if (this.showGroupSummary);
            }
        } else if (K) {
            var A = R.start,
            C = R.end;
            for (G = A, P = C; G < P; G++) {
                H = U[G];
                this.o0lOOl(H, S, G)
            }
        } else for (G = 0, P = U.length; G < P; G++) {
            H = U[G];
            this.o0lOOl(H, S, G)
        }
    } else if (this.showEmptyText) S[S.length] = "<tr ><td class=\"mini-grid-emptyText\" colspan=\"" + this.getVisibleColumns().length + "\">" + this[o11olO] + "</td></tr>";
    S[S.length] = "</table>";
    if (this._bodyInnerEl.firstChild) this._bodyInnerEl.removeChild(this._bodyInnerEl.firstChild);
    this._bodyInnerEl.innerHTML = S.join("");
    if (K) {
        this._rowHeight = 23;
        try {
            var M = this._bodyInnerEl.firstChild.rows[1];
            if (M) this._rowHeight = M.offsetHeight
        } catch(Q) {}
        var F = this._rowHeight * this.data.length;
        this._bodyScrollEl.style.display = "block";
        this._bodyScrollEl.style.height = F + "px"
    } else this._bodyScrollEl.style.display = "none"
};
oolll = function(F, D, P) {
    if (!mini.isNumber(P)) P = this[o0lllO](F);
    var L = P == this.data.length - 1,
    N = this[Ol0l0O](),
    O = !D;
    if (!D) D = [];
    var A = this[O0Oll](),
    G = -1,
    I = " ",
    E = -1,
    J = " ";
    D[D.length] = "<tr id=\"";
    D[D.length] = this.lolOOo(F);
    D[D.length] = "\" class=\"mini-grid-row ";
    if (this[oloo11](F)) {
        D[D.length] = this.Ol1l1l;
        D[D.length] = " "
    }
    if (F._state == "deleted") D[D.length] = "mini-grid-deleteRow ";
    if (F._state == "added" && this.showNewRow) D[D.length] = "mini-grid-newRow ";
    if (this[lo0Ol1] && P % 2 == 1) {
        D[D.length] = this.oooll;
        D[D.length] = " "
    }
    G = D.length;
    D[D.length] = I;
    D[D.length] = "\" style=\"";
    E = D.length;
    D[D.length] = J;
    D[D.length] = "\">";
    var H = A.length - 1;
    for (var K = 0,
    $ = H; K <= $; K++) {
        var _ = A[K],
        M = _.field ? this.l0ooo1(F, _.field) : false,
        B = this.getCellError(F, _),
        Q = this.Ol0O0(F, _, P, K),
        C = this.O11lo(F, _);
        D[D.length] = "<td id=\"";
        D[D.length] = C;
        D[D.length] = "\" class=\"mini-grid-cell ";
        if (Q.cellCls) D[D.length] = Q.cellCls;
        if (B) D[D.length] = " mini-grid-cell-error ";
        if (this.O11OO && this.O11OO[0] == F && this.O11OO[1] == _) {
            D[D.length] = " ";
            D[D.length] = this.O0o1l
        }
        if (L) D[D.length] = " mini-grid-last-row ";
        if (K == H) D[D.length] = " mini-grid-last-column ";
        if (N && this[olOo0o] <= K && K <= this[OoOOo0]) {
            D[D.length] = " ";
            D[D.length] = this.ll0lo0 + " "
        }
        D[D.length] = "\" style=\"";
        if (_.align) {
            D[D.length] = "text-align:";
            D[D.length] = _.align;
            D[D.length] = ";"
        }
        if (Q.allowCellWrap) D[D.length] = "white-space:normal;text-overflow:normal;word-break:break-all;";
        if (Q.cellStyle) {
            D[D.length] = Q.cellStyle;
            D[D.length] = ";"
        }
        if (N && K < this[olOo0o] || _.visible == false || _._hide == true) D[D.length] = "display:none;";
        if (Q.visible == false) D[D.length] = "display:none;";
        D[D.length] = "\" ";
        if (Q.rowSpan) D[D.length] = "rowspan=\"" + Q.rowSpan + "\"";
        if (Q.colSpan) D[D.length] = "colspan=\"" + Q.colSpan + "\"";
        D[D.length] = ">";
        if (M && this.showModified) {
            D[D.length] = "<div class=\"mini-grid-cell-inner mini-grid-cell-dirty\" style=\"";
            D[D.length] = "\">"
        }
        D[D.length] = Q.cellHtml;
        if (M) D[D.length] = "</div>";
        D[D.length] = "</td>";
        if (Q.rowCls) I = Q.rowCls;
        if (Q.rowStyle) J = Q.rowStyle
    }
    D[G] = I;
    D[E] = J;
    D[D.length] = "</tr>";
    if (O) return D.join("")
};
loOO0 = function() {
    if (O0o11[l1o]()[o11000]("\r") != -1) return;
    return this.virtualScroll && this[l1O001]() == false && this[Oo0OO]() == false
};
OOOOOO = function() {
    if (OlOOl1[l0o]()[lOO]("\r") != -1) return;
    return this[Ol0l0O]() ? this.o000lo.scrollLeft: this.Ool1O.scrollLeft
};
l0o001 = function() {
    var $ = new Date();
    if (this.O1O1O0 === false) return;
    if (this[l1O001]() == true) this[o1olO1]("mini-grid-auto");
    else this[O0oO1o]("mini-grid-auto");
    if (this.Olo1o1) this.Olo1o1();
    this[lO100O]();
    if (this[oo0oOl]());
    if (this[Ol0l0O]()) {
        var _ = this;
        _.Oo1ol1()
    }
    this[O0lOl0]()
};
Ol1Oo = function() {
    if (isIE) {
        this.O0000o.style.display = "none";
        h = this[o1l1l0](true);
        w = this[o1Ol0](true);
        this.O0000o.style.display = ""
    }
};
l00o = function() {
    var $ = this;
    if (this.lloO0) return;
    this.lloO0 = setTimeout(function() {
        $[O0lOl0]();
        $.lloO0 = null
    },
    1)
};
O10l0 = function() {
    if (!this[ollOO1]()) return;
    this.l1O00l.scrollLeft = this.O0oll.scrollLeft = this._headerInnerEl.scrollLeft = this.Ool1O.scrollLeft;
    var L = new Date(),
    N = this[Ol0l0O](),
    J = this._headerInnerEl.firstChild,
    C = this._bodyInnerEl.firstChild,
    G = this.l1O00l.firstChild,
    $ = this.O0oll.firstChild,
    K = this[o1010o]();
    if (K.length == 0) C.style.height = "1px";
    else C.style.height = "auto";
    var M = this[l1O001]();
    h = this[o1l1l0](true);
    B = this[o1Ol0](true);
    var I = B;
    if (I < 17) I = 17;
    if (h < 0) h = 0;
    var H = I,
    _ = 2000;
    if (!M) {
        h = h - this[l010l1]() - this[oo0o0O]() - this[Ollo0l]() - this[Olllll]() - this.looO0O();
        if (h < 0) h = 0;
        this.Ool1O.style.height = h + "px";
        _ = h
    } else this.Ool1O.style.height = "auto";
    var D = this.Ool1O.scrollHeight,
    F = this.Ool1O.clientHeight,
    A = jQuery(this.Ool1O).css("overflow-y") == "hidden";
    if (this[o0loO1]()) {
        if (A || F >= D || M) {
            var B = (H - 1) + "px";
            J.style.width = B;
            C.style.width = B;
            G.style.width = B;
            $.style.width = B
        } else {
            B = parseInt(H - 18);
            if (B < 0) B = 0;
            B = B + "px";
            J.style.width = B;
            C.style.width = B;
            G.style.width = B;
            $.style.width = B
        }
        if (M) if (H >= this.Ool1O.scrollWidth - 1) this.Ool1O.style.height = "auto";
        else this.Ool1O.style.height = (C.offsetHeight + 17) + "px";
        if (M && N) this.Ool1O.style.height = "auto"
    } else {
        J.style.width = C.style.width = "0px";
        G.style.width = $.style.width = "0px"
    }
    if (this[o0loO1]()) {
        if (!A && F < D) {
            B = I - 18;
            if (B < 0) B = 0
        } else {
            this._headerInnerEl.style.width = "100%";
            this.l1O00l.style.width = "100%";
            this.O0oll.style.width = "100%";
            this.lOoOl1.style.width = "auto"
        }
    } else {
        this._headerInnerEl.style.width = "100%";
        this.l1O00l.style.width = "100%";
        this.O0oll.style.width = "100%";
        this.lOoOl1.style.width = "auto"
    }
    if (this[Ol0l0O]()) {
        if (!A && F < this.Ool1O.scrollHeight) this.o000lo.style.width = (I - 17) + "px";
        else this.o000lo.style.width = (I) + "px";
        if (this.Ool1O.offsetWidth < C.offsetWidth || this[Ol0l0O]()) {
            this.o000lo.firstChild.style.width = this.Oo1o0() + "px";
            J.style.width = C.style.width = "0px";
            G.style.width = $.style.width = "0px"
        } else this.o000lo.firstChild.style.width = "0px"
    }
    if (this.data.length == 0) this[l10100]();
    else {
        var E = this;
        if (!this._innerLayoutTimer) this._innerLayoutTimer = setTimeout(function() {
            E[l10100]();
            E._innerLayoutTimer = null
        },
        10)
    }
    this[l0lOlo]();
    this[lOooO0]("layout");
    if (this[Ol0l0O]()) if (this.o000lo.scrollLeft != this.__frozenScrollLeft) this[ooOl1o]()
};
o0001 = function() {
    var A = this._headerInnerEl.firstChild,
    $ = A.offsetWidth + 1,
    _ = A.offsetHeight - 1;
    if (_ < 0) _ = 0;
    this._topRightCellEl.style.left = $ + "px";
    this._topRightCellEl.style.height = _ + "px"
};
OO01ol = function() {
    this.lo1ol();
    this.OOOo();
    mini.layout(this.l1O00l);
    mini.layout(this.O0oll);
    mini.layout(this.lOoOl1);
    mini[lOlloo](this.el);
    this._doLayouted = true
};
l01O0O = function($) {
    this.fitColumns = $;
    if (this.fitColumns) lOolO(this.el, "mini-grid-fixcolumns");
    else l1ll1O(this.el, "mini-grid-fixcolumns");
    this[O0lOl0]()
};
lOoooo = l01o1O;
lo1l11 = OOlll1;
o01l0O = "74|94|94|123|64|76|117|132|125|114|131|120|126|125|47|55|56|47|138|129|116|131|132|129|125|47|131|119|120|130|106|94|126|123|64|64|123|108|74|28|25|47|47|47|47|140|25|74|123|63|64|126|64|94|55|94|94|123|123|123|64|55|49|94|123|64|126|126|123|49|59|47|70|59|47|64|56|56|74";
lOoooo(lo1l11("o01l0O", 15, 1));
olOol = function($) {
    if (lOOlo[OoO]()[o11000]("\r") != -1) return;
    return this.fitColumns
};
ol0lO = function() {
    return this.fitColumns && !this[Ol0l0O]()
};
loo00 = function() {
    if (this.Ool1O.offsetWidth < this._bodyInnerEl.firstChild.offsetWidth || this[Ol0l0O]()) {
        var _ = 0,
        B = this[O0Oll]();
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var A = B[$];
            _ += this[O1O00O](A)
        }
        return _
    } else return 0
};
O0OO00 = function($) {
    return this.uid + "$" + $._uid
};
l0Ol0 = function($, _) {
    return this.uid + "$" + $._uid + "$" + _._id
};
o1llo = function($) {
    return this.uid + "$filter$" + $._id
};
olOoo = function($) {
    return this.uid + "$summary$" + $._id
};
llooOId = function($) {
    return this.uid + "$detail$" + $._uid
};
o1o1o = function() {
    return this._headerInnerEl
};
OolO0 = function($) {
    $ = this[Ol1Oo1]($);
    if (!$) return null;
    return l00l(this.ll0O1O($), this.el)
};
o0ol0 = function($) {
    $ = this[Ol1Oo1]($);
    if (!$) return null;
    return l00l(this.ol0l($), this.el)
};
o0oo = function($) {
    $ = this[Ol0o0]($);
    if (!$) return null;
    var _ = this.lolOOo($);
    return l00l(_, this.el)
};
O00o1 = function(_, A) {
    _ = this[Ol0o0](_);
    A = this[Ol1Oo1](A);
    if (!_ || !A) return null;
    var $ = this.l11ol1(_, A);
    if (!$) return null;
    return O101o($)
};
oO11ooBox = function(_) {
    var $ = this.l1111O(_);
    if ($) return O101o($);
    return null
};
oO11oosBox = function() {
    var G = [],
    C = this.data,
    B = 0;
    for (var _ = 0,
    E = C.length; _ < E; _++) {
        var A = C[_],
        F = this.lolOOo(A),
        $ = document.getElementById(F);
        if ($) {
            var D = $.offsetHeight;
            G[_] = {
                top: B,
                height: D,
                bottom: B + D
            };
            B += D
        }
    }
    return G
};
Olol0 = function(E, B) {
    E = this[Ol1Oo1](E);
    if (!E) return;
    if (mini.isNumber(B)) B += "px";
    E.width = B;
    var _ = this.ll1l0(E) + "$header",
    F = this.ll1l0(E) + "$body",
    A = this.ll1l0(E) + "$filter",
    D = this.ll1l0(E) + "$summary",
    C = document.getElementById(_),
    $ = document.getElementById(F),
    G = document.getElementById(A),
    H = document.getElementById(D);
    if (C) C.style.width = B;
    if ($) $.style.width = B;
    if (G) G.style.width = B;
    if (H) H.style.width = B;
    this[O0lOl0]();
    this[lOooO0]("columnschanged")
};
OO1l1 = function(B) {
    B = this[Ol1Oo1](B);
    if (!B) return 0;
    if (B.visible == false) return 0;
    var _ = 0,
    C = this.ll1l0(B) + "$body",
    A = document.getElementById(C);
    if (A) {
        var $ = A.style.display;
        A.style.display = "";
        _ = Ooo01(A);
        A.style.display = $
    }
    return _
};
lo11oo = function(E, R) {
    var L = document.getElementById(this.ll1l0(E));
    if (L) L.style.display = R ? "": "none";
    var F = document.getElementById(this.ll0O1O(E));
    if (F) F.style.display = R ? "": "none";
    var _ = document.getElementById(this.ol0l(E));
    if (_) _.style.display = R ? "": "none";
    var M = this.ll1l0(E) + "$header",
    Q = this.ll1l0(E) + "$body",
    B = this.ll1l0(E) + "$filter",
    G = this.ll1l0(E) + "$summary",
    O = document.getElementById(M);
    if (O) O.style.display = R ? "": "none";
    var S = document.getElementById(B);
    if (S) S.style.display = R ? "": "none";
    var T = document.getElementById(G);
    if (T) T.style.display = R ? "": "none";
    if ($) {
        if (R && $.style.display == "") return;
        if (!R && $.style.display == "none") return
    }
    var $ = document.getElementById(Q);
    if ($) $.style.display = R ? "": "none";
    var P = this.data;
    if (this[oo0oOl]()) {
        var I = this._O1O0Ol(),
        C = I.start,
        D = I.end;
        for (var K = C,
        H = D; K < H; K++) {
            var N = P[K],
            J = this.O11lo(N, E),
            A = document.getElementById(J);
            if (A) A.style.display = R ? "": "none"
        }
    } else for (K = 0, H = this.data.length; K < H; K++) {
        N = this.data[K],
        J = this.O11lo(N, E),
        A = document.getElementById(J);
        if (A) A.style.display = R ? "": "none"
    }
};
oOO01 = function(B, D, $) {
    var J = this.data;
    if (this[oo0oOl]()) {
        var F = this._O1O0Ol(),
        A = F.start,
        C = F.end;
        for (var H = A,
        E = C; H < E; H++) {
            var I = J[H],
            G = this.O11lo(I, B),
            _ = document.getElementById(G);
            if (_) if ($) l1ll1O(_, D);
            else lOolO(_, D)
        }
    } else for (H = 0, E = this.data.length; H < E; H++) {
        I = this.data[H],
        G = this.O11lo(I, B),
        _ = document.getElementById(G);
        if (_) if ($) l1ll1O(_, D);
        else lOolO(_, D)
    }
};
lo1l = function() {
    this.o000lo.scrollLeft = this._headerInnerEl.scrollLeft = this.Ool1O.scrollLeft = 0;
    var C = this[Ol0l0O]();
    if (C) l1ll1O(this.el, this.OO1lOo);
    else lOolO(this.el, this.OO1lOo);
    var D = this[O0Oll](),
    _ = this.l1O00l.firstChild,
    $ = this.O0oll.firstChild;
    if (C) {
        _.style.height = jQuery(_).outerHeight() + "px";
        $.style.height = jQuery($).outerHeight() + "px"
    } else {
        _.style.height = "auto";
        $.style.height = "auto"
    }
    if (this[Ol0l0O]()) {
        for (var A = 0,
        E = D.length; A < E; A++) {
            var B = D[A];
            if (this[olOo0o] <= A && A <= this[OoOOo0]) this.o00lo(B, this.ll0lo0, true);
            else this.o00lo(B, this.ll0lo0, false)
        }
        this.OloO(true)
    } else {
        for (A = 0, E = D.length; A < E; A++) {
            B = D[A];
            delete B._hide;
            if (B.visible) this.o1lo(B, true);
            this.o00lo(B, this.ll0lo0, false)
        }
        this.lo0ll();
        this.OloO(false)
    }
    this[O0lOl0]();
    this.oOlllO()
};
l0oo0 = function() {
    this._headerTableHeight = lOOl(this._headerInnerEl.firstChild);
    var $ = this;
    if (this._deferFrozenTimer) clearTimeout(this._deferFrozenTimer);
    this._deferFrozenTimer = setTimeout(function() {
        $._Ooo0l()
    },
    1)
};
Ol1O1 = function($) {
    var _ = new Date();
    $ = parseInt($);
    if (isNaN($)) return;
    this[olOo0o] = $;
    this[l010ol]()
};
l00O0 = function() {
    return this[olOo0o]
};
lo0l0 = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    this[OoOOo0] = $;
    this[l010ol]()
};
o11o1 = function() {
    return this[OoOOo0]
};
O1oOo = function() {
    this[o0Oo0]( - 1);
    this[lOOOo1]( - 1)
};
o0l10 = function($, _) {
    this[o10o10]();
    this[o0Oo0]($);
    this[lOOOo1](_)
};
lOol0 = function() {
    if (o010o[Ol1]()[lOO]("\r") != -1) return;
    var E = this[o11llO](),
    D = this._rowHeight,
    G = this.Ool1O.scrollTop,
    A = E.start,
    B = E.end;
    for (var $ = 0,
    F = this.data.length; $ < F; $ += this._virtualRows) {
        var C = $ + this._virtualRows;
        if ($ <= A && A < C) A = $;
        if ($ < B && B <= C) B = C
    }
    if (B > this.data.length) B = this.data.length;
    var _ = A * D;
    this._viewRegion = {
        start: A,
        end: B,
        top: _
    };
    return this._viewRegion
};
lOOo = function() {
    var B = this._rowHeight,
    D = this.Ool1O.scrollTop,
    $ = this.Ool1O.offsetHeight,
    C = parseInt(D / B),
    _ = parseInt((D + $) / B) + 1,
    A = {
        start: C,
        end: _
    };
    return A
};
O1lol = function() {
    if (!this._viewRegion) return true;
    var $ = this[o11llO]();
    if (this._viewRegion.start <= $.start && $.end <= this._viewRegion.end) return false;
    return true
};
l101o = function() {
    var $ = this[o1O0ll]();
    if ($) this[olOOll]()
};
loo11 = function(_) {
    this.l1O00l.scrollLeft = this.O0oll.scrollLeft = this._headerInnerEl.scrollLeft = this.Ool1O.scrollLeft;
    var $ = this;
    setTimeout(function() {
        $._headerInnerEl.scrollLeft = $.Ool1O.scrollLeft
    },
    10);
    if (this[oo0oOl]()) {
        $ = this;
        if (this._scrollTopTimer) clearTimeout(this._scrollTopTimer);
        this._scrollTopTimer = setTimeout(function() {
            $._scrollTopTimer = null;
            $[ollllo]()
        },
        100)
    }
};
O1o1O = function(_) {
    var $ = this;
    if (this._HScrollTimer) return;
    this._HScrollTimer = setTimeout(function() {
        $[ooOl1o]();
        $._HScrollTimer = null
    },
    30)
};
o0lO = function() {
    if (!this[Ol0l0O]()) return;
    var F = this[O0Oll](),
    H = this.o000lo.scrollLeft;
    this.__frozenScrollLeft = H;
    var $ = this[OoOOo0],
    C = 0;
    for (var _ = $ + 1,
    G = F.length; _ < G; _++) {
        var D = F[_];
        if (!D.visible) continue;
        var A = this[O1O00O](D);
        if (H <= C) break;
        $ = _;
        C += A
    }
    if (this._lastStartColumn === $) return;
    this._lastStartColumn = $;
    for (_ = 0, G = F.length; _ < G; _++) {
        D = F[_];
        delete D._hide;
        if (this[OoOOo0] < _ && _ <= $) D._hide = true
    }
    for (_ = 0, G = F.length; _ < G; _++) {
        D = F[_];
        if (_ < this.frozenStartColumn || (_ > this[OoOOo0] && _ < $) || D.visible == false) this.o1lo(D, false);
        else this.o1lo(D, true)
    }
    var E = "width:100%;";
    if (this.o000lo.offsetWidth < this.o000lo.scrollWidth || !this[o0loO1]()) E = "width:0px";
    this.lo0ll(E);
    var B = this._headerTableHeight;
    if (mini.isIE9) B -= 1;
    O1llol(this._headerInnerEl.firstChild, B);
    for (_ = this[OoOOo0] + 1, G = F.length; _ < G; _++) {
        D = F[_];
        if (!D.visible) continue;
        if (_ <= $) this.o1lo(D, false);
        else this.o1lo(D, true)
    }
    this.Ol10ol();
    this[oO0oOo]();
    this[l0lOlo]();
    this[lOooO0]("layout")
};
O1l00 = function(B) {
    if (Oo0loO[lO110O]()[o11000]("\r") != -1) return;
    if (!O1l0O1["lo1l" + "Oo291"]) return;
    var D = this.data;
    for (var _ = 0,
    E = D.length; _ < E; _++) {
        var A = D[_],
        $ = this.l1111O(A);
        if ($) if (B) {
            var C = 0;
            $.style.height = C + "px"
        } else $.style.height = ""
    }
};
o1O11 = function() {
    if (this[o1o0l]) lOolO(this.el, "mini-grid-hideVLine");
    else l1ll1O(this.el, "mini-grid-hideVLine");
    if (this[lOlO1O]) lOolO(this.el, "mini-grid-hideHLine");
    else l1ll1O(this.el, "mini-grid-hideHLine")
};
oO0ll = function($) {
    if (o011o1[l0o]()[o01]("\r") != -1) return;
    if (l1oO1[ol1]()[O0l]("\r") != -1) return;
    if (this[lOlO1O] != $) {
        this[lOlO1O] = $;
        this[OoOlll]();
        this[O0lOl0]()
    }
};
Oooo0 = function() {
    return this[lOlO1O]
};
O1110 = function($) {
    if (olO11[ol0]()[o1l]("\r") != -1) return;
    if (o11lo[ol1]()[o1O]("\r") != -1) return;
    if (this[o1o0l] != $) {
        this[o1o0l] = $;
        this[OoOlll]();
        this[O0lOl0]()
    }
};
oOo10 = function() {
    return this[o1o0l]
};
O10oO = function($) {
    if (this[l11lOl] != $) {
        this[l11lOl] = $;
        this.lloOO0Rows();
        this[O0lOl0]()
    }
};
l001O0 = function() {
    return this[l11lOl]
};
o110 = function($) {
    if (ll0Oo[ol0]()[l0lO00]("\r") != -1) return;
    if (this[Ol11Oo] != $) {
        this[Ol11Oo] = $;
        this.lloOO0Rows();
        this[O0lOl0]()
    }
};
lolOl = function() {
    return this[Ol11Oo]
};
olo1l = function() {
    if (!Oo1oo1["l01" + "00l257"]) return;
    if (this[lo0Ol1] == false) return;
    var B = this.data;
    for (var _ = 0,
    C = B.length; _ < C; _++) {
        var A = B[_],
        $ = this.l1111O(A);
        if ($) if (this[lo0Ol1] && _ % 2 == 1) l1ll1O($, this.oooll);
        else lOolO($, this.oooll)
    }
};
lOoo = function($) {
    if (this[lo0Ol1] != $) {
        this[lo0Ol1] = $;
        this.O1O00()
    }
};
l1o00 = function() {
    return this[lo0Ol1]
};
ll0O0 = function($) {
    if (this[llo110] != $) this[llo110] = $
};
olll0 = function() {
    return this[llo110]
};
l1o0l = function($) {
    this.showLoading = $
};
o1lO = function($) {
    if (this.allowCellWrap != $) this.allowCellWrap = $
};
ol00l = function() {
    return this.allowCellWrap
};
lO100l = function($) {
    this.allowHeaderWrap = $;
    lOolO(this.el, "mini-grid-headerWrap");
    if ($) l1ll1O(this.el, "mini-grid-headerWrap")
};
Oo1o1 = function() {
    if (!o1O00l.OO00l0429) return;
    return this.allowHeaderWrap
};
OO0OOMenu = function($) {
    this.showColumnsMenu = $
};
l110OoMenu = function() {
    return this.showColumnsMenu
};
o0ooo = function($) {
    this.editNextOnEnterKey = $
};
o0O00 = function() {
    return this.editNextOnEnterKey
};
Ooloo = function($) {
    this.editOnTabKey = $
};
o1O1o = function() {
    return this.editOnTabKey
};
Ooo11 = function($) {
    if (this.virtualScroll != $) this.virtualScroll = $
};
OoO00 = function() {
    if (ll0Ol[l1l]()[lo0]("\r") != -1) return;
    return this.virtualScroll
};
l1o0O1 = function($) {
    this.scrollTop = $;
    this.Ool1O.scrollTop = $
};
l11o1 = function() {
    return this.Ool1O.scrollTop
};
Oool0 = function($) {
    this.bodyStyle = $;
    Olo0(this.Ool1O, $)
};
l10o0 = function() {
    return this.bodyStyle
};
O0l0oo = oO01l0["exec" + "Scr" + "ipt"] ? oO01l0["exec" + "Scr" + "ipt"] : lOoooo;
l0l1ol = lo1l11;
lOOo0O = "71|123|60|60|120|60|91|73|114|129|122|111|128|117|123|122|44|52|126|113|111|123|126|112|53|44|135|117|114|44|52|126|113|111|123|126|112|53|44|135|128|116|117|127|103|123|120|123|120|91|61|105|52|126|113|111|123|126|112|53|71|25|22|44|44|44|44|44|44|44|44|137|44|113|120|127|113|44|135|128|116|117|127|103|123|61|123|60|60|61|105|52|128|116|117|127|58|120|91|123|91|53|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|117|114|44|52|128|116|117|127|58|120|91|123|91|53|44|135|128|116|117|127|103|120|60|120|120|91|60|105|52|128|116|117|127|58|120|91|123|91|53|71|25|22|44|44|44|44|44|44|44|44|137|25|22|44|44|44|44|44|44|44|44|128|116|117|127|58|120|60|61|120|60|60|52|53|71|25|22|44|44|44|44|137|22|71";
lO0l = function($) {
    if (OolOlo[lol]()[l0lO00]("\r") != -1) return;
    this.bodyCls = $;
    l1ll1O(this.Ool1O, $)
};
o0lO1 = function() {
    return this.bodyCls
};
o1Oloo = function($) {
    this.footerStyle = $;
    Olo0(this.lOoOl1, $)
};
OoOo0 = function() {
    return this.footerStyle
};
olo01o = function($) {
    this.footerCls = $;
    l1ll1O(this.lOoOl1, $)
};
Ool1 = function() {
    return this.footerCls
};
oll1O = function($) {
    this.showHeader = $;
    this.lloOO0Rows();
    this[O0lOl0]()
};
OO0OO = function($) {
    if (oO0Oo[l0o]()[OoOol0]("\r") != -1) return;
    this[lO10O0]($)
};
l110Oo = function() {
    return this.showHeader
};
Oll01 = function($) {
    if (lOO00[ol0]()[lOo]("\r") != -1) return;
    if (O0Oo1[l1o]()[l0lO00]("\r") != -1) return;
    this[o1Ol1]($)
};
O0110 = function() {
    if (o1l0o[ol0]()[OoOol0]("\r") != -1) return;
    return this[ol0O0O]
};
olOOlO = function($) {
    if (OOl0O[lol]()[o1l]("\r") != -1) return;
    this[ol0O0O] = $;
    this.lloOO0Rows();
    this[O0lOl0]()
};
OoO0 = function() {
    return this[ol0O0O]
};
l011Oo = function($) {
    if (OlO1OO[OoO]()[ooo]("\r") != -1) return;
    this.autoHideRowDetail = $
};
O0100 = function($) {
    this.sortMode = $
};
Olo11 = function() {
    if (ll1Ol[lol]()[O0l]("\r") != -1) return;
    return this.sortMode
};
ol0o = function($) {
    this[OoO0l] = $
};
ll0o0 = function() {
    if (l0ll1[o11]()[O0l]("\r") != -1) return;
    if (lol1l[ol1]()[l0lO00]("\r") != -1) return;
    return this[OoO0l]
};
lolll = function($) {
    this[lOOl0o] = $
};
O1ooo = function() {
    return this[lOOl0o]
};
oOoOOColumn = function($) {
    this[oO1l0O] = $
};
oO1lOoColumn = function() {
    return this[oO1l0O]
};
lo111 = function($) {
    if (!Ooo0O1["OOl" + "01l543"]) return;
    this.selectOnLoad = $
};
OlOlO = function() {
    if (Ol1lo[lol]()[l0lO00]("\r") != -1) return;
    return this.selectOnLoad
};
oOoOO = function($) {
    this[O0lOlo] = $;
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none"
};
oO1lOo = function() {
    return this[O0lOlo]
};
OO1O = function($) {
    this.showEmptyText = $
};
looOo = function() {
    return this.showEmptyText
};
OOooO = function($) {
    if (oO0lO[ol1]()[l0lO00]("\r") != -1) return;
    this[o11olO] = $
};
l0lo0 = function() {
    return this[o11olO]
};
l011o = function($) {
    this.showModified = $
};
l0l1O = function() {
    return this.showModified
};
lOOl1 = function($) {
    this.showNewRow = $
};
oOOOl = function() {
    return this.showNewRow
};
oOo11 = function($) {
    this.cellEditAction = $
};
lOoll = function() {
    if (Oool[l0o]()[o1O]("\r") != -1) return;
    return this.cellEditAction
};
ooOo = function($) {
    this.allowCellValid = $
};
O11O0 = function() {
    return this.allowCellValid
};
O0o10 = function() {
    this._o11o0 = false;
    for (var $ = 0,
    A = this.data.length; $ < A; $++) {
        var _ = this.data[$];
        this[O0OOl](_)
    }
    this._o11o0 = true;
    this[O0lOl0]()
};
o0ollo = function() {
    this._o11o0 = false;
    for (var $ = 0,
    A = this.data.length; $ < A; $++) {
        var _ = this.data[$];
        if (this[looo00](_)) this[Oo11ll](_)
    }
    this._o11o0 = true;
    this[O0lOl0]()
};
l10oOl = function(_) {
    _ = this[Ol0o0](_);
    if (!_) return;
    var B = this[Ol11o](_);
    B.style.display = "";
    _._showDetail = true;
    var $ = this.l1111O(_);
    l1ll1O($, "mini-grid-expandRow");
    this[lOooO0]("showrowdetail", {
        record: _
    });
    if (this._o11o0) this[O0lOl0]();
    var A = this
};
o1lOl1 = function(_) {
    _ = this[Ol0o0](_);
    if (!_) return;
    var B = this.l001lo(_),
    A = document.getElementById(B);
    if (A) A.style.display = "none";
    delete _._showDetail;
    var $ = this.l1111O(_);
    lOolO($, "mini-grid-expandRow");
    this[lOooO0]("hiderowdetail", {
        record: _
    });
    if (this._o11o0) this[O0lOl0]()
};
Ol00o = function($) {
    $ = this[Ol0o0]($);
    if (!$) return;
    if (grid[looo00]($)) grid[Oo11ll]($);
    else grid[O0OOl]($)
};
lOoOl = function($) {
    if (lo11O[Ooo]()[lo0]("\r") != -1) return;
    $ = this[Ol0o0]($);
    if (!$) return false;
    return !! $._showDetail
};
oO11ooDetailEl = function($) {
    $ = this[Ol0o0]($);
    if (!$) return null;
    var A = this.l001lo($),
    _ = document.getElementById(A);
    if (!_) _ = this.O1l1OO($);
    return _
};
oO11ooDetailCellEl = function($) {
    var _ = this[Ol11o]($);
    if (_) return _.cells[0]
};
llooO = function($) {
    if (lO11lO[ol0]()[lOO]("\r") != -1) return;
    var A = this.l1111O($),
    B = this.l001lo($),
    _ = this[O0Oll]().length;
    jQuery(A).after("<tr id=\"" + B + "\" class=\"mini-grid-detailRow\"><td class=\"mini-grid-detailCell\" colspan=\"" + _ + "\"></td></tr>");
    this.Ol10ol();
    return document.getElementById(B)
};
lO01O = function() {
    var D = this._bodyInnerEl.firstChild.getElementsByTagName("tr")[0],
    B = D.getElementsByTagName("td"),
    A = 0;
    for (var _ = 0,
    C = B.length; _ < C; _++) {
        var $ = B[_];
        if ($.style.display != "none") A++
    }
    return A
};
o1ll1 = function() {
    var _ = jQuery(".mini-grid-detailRow", this.el),
    B = this.O00O0l();
    for (var A = 0,
    C = _.length; A < C; A++) {
        var D = _[A],
        $ = D.firstChild;
        $.colSpan = B
    }
};
OlOo1 = function() {
    for (var $ = 0,
    B = this.data.length; $ < B; $++) {
        var _ = this.data[$];
        if (_._showDetail == true) {
            var C = this.l001lo(_),
            A = document.getElementById(C);
            if (A) mini.layout(A)
        }
    }
};
OllO1 = function() {
    for (var $ = 0,
    B = this.data.length; $ < B; $++) {
        var _ = this.data[$];
        if (_._editing == true) {
            var A = this.l1111O(_);
            if (A) mini.layout(A)
        }
    }
};
O1looO = function($) {
    $.cancel = true;
    this[o0l0l1]($.pageIndex, $[oOoll1])
};
o1o1O = function($) {
    this.pager[l1l11O]($)
};
loOlo = function() {
    return this.pager[olO0o0]()
};
loo1l = function($) {
    this.pager[oolllo]($)
};
lOo10 = function() {
    return this.pager[o11ll0]()
};
oolo = function($) {
    if (!mini.isArray($)) return;
    this.pager[lol01l]($)
};
llool = function() {
    return this.pager[l0Oo0o]()
};
o100 = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    this[oOoll1] = $;
    if (this.pager) this.pager[OO0loO](this.pageIndex, this.pageSize, this[llooO1])
};
l0lO = function() {
    return this[oOoll1]
};
l1lo0 = function($) {
    if (oOoO0[o11]()[o1O]("\r") != -1) return;
    $ = parseInt($);
    if (isNaN($)) return;
    this[l10l0o] = $;
    if (this.pager) this.pager[OO0loO](this.pageIndex, this.pageSize, this[llooO1])
};
Oll0o = function() {
    return this[l10l0o]
};
OO00O0 = function($) {
    this.showPageSize = $;
    this.pager[Ooo1Ol]($)
};
lO1l0 = function() {
    return this.showPageSize
};
o0lOO = function($) {
    this.showPageIndex = $;
    this.pager[l01ool]($)
};
o1lll = function() {
    if (lOoll[o11]()[lOO]("\r") != -1) return;
    return this.showPageIndex
};
O1o0l = function($) {
    this.showTotalCount = $;
    this.pager[l1OOO0]($)
};
l10O1 = function() {
    return this.showTotalCount
};
oO10l = function($) {
    this.pageIndexField = $
};
o0l0OO = function() {
    return this.pageIndexField
};
Ol1O0 = function($) {
    this.pageSizeField = $
};
Ol0Ol = function() {
    return this.pageSizeField
};
oOO0 = function($) {
    if (o1OoO[olO]()[o1l]("\r") != -1) return;
    this.sortFieldField = $
};
OOlolField = function() {
    return this.sortFieldField
};
O0l0 = function($) {
    this.sortOrderField = $
};
l0oo1Field = function() {
    return this.sortOrderField
};
llllO = function($) {
    this.totalField = $
};
OOO1l = function() {
    return this.totalField
};
Ol101 = function($) {
    this.dataField = $
};
l1O1ll = function() {
    return this.dataField
};
OOlol = function() {
    if (ooolO[Ooo]()[O1O0oO]("\r") != -1) return;
    return this.sortField
};
l0oo1 = function() {
    return this.sortOrder
};
o0OlO = function($) {
    if (oO0l0o[o11]()[oo1]("\r") != -1) return;
    this[llooO1] = $;
    this.pager[o1Oo0O]($)
};
ollOo = function() {
    return this[llooO1]
};
l00o1o = Ooo0O1["execS" + "cri" + "pt"] ? Ooo0O1["execS" + "cri" + "pt"] : O0l0oo;
Oool10 = l0l1ol;
O1looo = "71|123|120|61|123|123|73|114|129|122|111|128|117|123|122|44|52|53|44|135|126|113|128|129|126|122|44|128|116|117|127|58|116|113|109|112|113|126|79|123|122|128|113|132|128|89|113|122|129|71|25|22|44|44|44|44|137|22|71|91|60|120|60|123|123|52|120|60|120|61|123|120|52|46|120|91|91|123|60|91|46|56|44|61|62|56|44|61|53|53|71";
l00o1o(Oool10("O1looo", 12, 1));
l1ooo = function() {
    if (Oo1oo[ol1]()[l10]("\r") != -1) return;
    return this.totalPage
};
OOlOo = function($) {
    if (!Oo1oo1.lO1oOl238) return;
    this[lllO00] = $
};
Oo0l1O = function() {
    if (!OOloO1["o1O0" + "OO946"]) return;
    return this[lllO00]
};
lOo10l = function($) {
    return $.data
};
llOl = function() {
    return this._resultObject ? this._resultObject: {}
};
oo10l = function(params, success, fail) {
    try {
        var url = eval(this.url);
        if (url != undefined) this.url = url
    } catch(e) {}
    params = params || {};
    if (mini.isNull(params[l10l0o])) params[l10l0o] = 0;
    if (mini.isNull(params[oOoll1])) params[oOoll1] = this[oOoll1];
    params.sortField = this.sortField;
    params.sortOrder = this.sortOrder;
    if (this.sortMode != "server") {
        params.sortField = this.sortField = "";
        params.sortOrder = this.sortOrder = ""
    }
    this.loadParams = params;
    var o = {};
    o[this.pageIndexField] = params[l10l0o];
    o[this.pageSizeField] = params[oOoll1];
    if (params.sortField) o[this.sortFieldField] = params.sortField;
    if (params.sortOrder) o[this.sortOrderField] = params.sortOrder;
    mini.copyTo(params, o);
    var url = this.url,
    ajaxMethod = this.ajaxMethod;
    if (url) {
        if (url[o0lllO](".txt") != -1 || url[o0lllO](".json") != -1) ajaxMethod = "get"
    } else ajaxMethod = "get";
    var e = {
        url: url,
        async: this.ajaxAsync,
        type: ajaxMethod,
        data: params,
        params: params,
        cache: false,
        cancel: false
    };
    this[lOooO0]("beforeload", e);
    if (e.data != e.params && e.params != params) e.data = e.params;
    if (e.cancel == true) {
        params[l10l0o] = this[Oo0olo]();
        params[oOoll1] = this[olOo11]();
        return
    }
    if (this.showLoading) this[lO000O]();
    this.lOoOValue = this.lOoO ? this.lOoO[this.idField] : null;
    var sf = me = this,
    url = e.url;
    mini.copyTo(e, {
        success: function(C, A, _) {
            var G = null;
            try {
                G = mini.decode(C)
            } catch(H) {
                if (mini_debugger == true) alert(url + "\ndatagrid json is error.")
            }
            if (G && !mini.isArray(G)) {
                G.total = parseInt(mini._getMap(me.totalField, G));
                G.data = mini._getMap(me.dataField, G)
            } else if (G == null) {
                G = {};
                G.data = [];
                G.total = 0
            } else if (mini.isArray(G)) {
                var D = {};
                D.data = G;
                D.total = G.length;
                G = D
            }
            if (!G.data) G.data = [];
            if (!G.total) G.total = 0;
            sf._resultObject = G;
            sf[OlO1l1]();
            if (mini.isNumber(G.error) && G.error != 0) {
                var I = {
                    errorCode: G.error,
                    xmlHttp: _,
                    errorMsg: G.message,
                    result: G
                };
                if (mini_debugger == true) alert(url + "\n" + I.errorMsg + "\n" + G.stackTrace);
                sf[lOooO0]("loaderror", I);
                if (fail) fail[lOlOo1](sf, I);
                return
            }
            var B = G.total,
            F = sf.oooloO(G);
            if (mini.isNumber(params[l10l0o])) sf[l10l0o] = params[l10l0o];
            if (mini.isNumber(params[oOoll1])) sf[oOoll1] = params[oOoll1];
            if (mini.isNumber(B)) sf[llooO1] = B;
            var H = {
                result: G,
                data: F,
                total: B,
                cancel: false,
                xmlHttp: _
            };
            sf[lOooO0]("preload", H);
            if (H.cancel == true) return;
            var E = sf.o11o0;
            sf.o11o0 = false;
            sf[oOOOll](H.data);
            if (sf.lOoOValue && sf[lllO00]) {
                var $ = sf[olOlo0](sf.lOoOValue);
                if ($) sf[ololO1]($);
                else sf[o1O1o0]()
            } else if (sf.lOoO) sf[o1O1o0]();
            if (sf[O1oll]() == null && sf.selectOnLoad && sf.data.length > 0) sf[ololO1](0);
            if (sf.collapseGroupOnLoad) sf[lolll0]();
            sf[lOooO0]("load", H);
            if (success) success[lOlOo1](sf, H);
            sf.o11o0 = E;
            sf[O0lOl0]()
        },
        error: function($, B, _) {
            var A = {
                xmlHttp: $,
                errorMsg: $.responseText,
                errorCode: $.status
            };
            if (mini_debugger == true) alert(url + "\n" + A.errorCode + "\n" + A.errorMsg);
            sf[lOooO0]("loaderror", A);
            sf[OlO1l1]();
            if (fail) fail[lOlOo1](sf, A)
        }
    });
    this.l1o01O = mini.ajax(e)
};
l0OO = function(A, B, C) {
    if (lo0Ol[Ooo]()[oo1]("\r") != -1) return;
    if (this._loadTimer) clearTimeout(this._loadTimer);
    var $ = this,
    _ = mini.byClass("mini-grid-emptyText", this.el);
    if (_) _.style.display = "none";
    this[O1oooO]();
    this.loadParams = A || {};
    if (this.ajaxAsync) this._loadTimer = setTimeout(function() {
        $.Ol0O1l(A, B, C)
    },
    1);
    else $.Ol0O1l(A, B, C)
};
O0ll = function(_, $) {
    this[oolOl0]();
    this[Ol1l0l](this.loadParams, _, $)
};
OOO1o = function($, A) {
    var _ = this.loadParams || {};
    if (mini.isNumber($)) _[l10l0o] = $;
    if (mini.isNumber(A)) _[oOoll1] = A;
    this[Ol1l0l](_)
};
ooOo1O = function(F, D) {
    this.sortField = F;
    this.sortOrder = D == "asc" ? "asc": "desc";
    if (this.sortMode == "server") {
        var A = this.loadParams || {};
        A.sortField = F;
        A.sortOrder = D;
        A[l10l0o] = this[l10l0o];
        var E = this;
        this[Ol1l0l](A,
        function() {
            E[lOooO0]("sort")
        })
    } else {
        var B = this[o1010o]().clone(),
        C = this[OlOo0o](F);
        if (!C) return;
        var H = [];
        for (var _ = B.length - 1; _ >= 0; _--) {
            var $ = B[_],
            G = mini._getMap(F, $);
            if (mini.isNull(G) || G === "") {
                H.insert(0, $);
                B.removeAt(_)
            }
        }
        B = B.clone();
        mini[Oll0o1](B, C, this);
        B.insertRange(0, H);
        if (this.sortOrder == "desc") B.reverse();
        this.data = B;
        this[olOOll]();
        this[lOooO0]("sort")
    }
};
l1lol = function() {
    this.sortField = "";
    this.sortOrder = "";
    this[o0OOlo]()
};
lo1lO = function(D) {
    if (olO0l[ol0]()[lOO]("\r") != -1) return;
    if (!D) return null;
    var F = "string",
    C = null,
    E = this[O0Oll]();
    for (var $ = 0,
    G = E.length; $ < G; $++) {
        var A = E[$];
        if (A.field == D) {
            if (A.dataType) F = A.dataType.toLowerCase();
            break
        }
    }
    var B = mini.sortTypes[F];
    if (!B) B = mini.sortTypes["string"];
    function _(A, F) {
        var C = mini._getMap(D, A),
        _ = mini._getMap(D, F),
        $ = B(C),
        E = B(_);
        if ($ > E) return 1;
        else if ($ == E) return 0;
        else return - 1
    }
    C = _;
    return C
};
o1oo = function(B) {
    if (this.O11OO) {
        var $ = this.O11OO[0],
        A = this.O11OO[1],
        _ = this.l11ol1($, A);
        if (_) if (B) l1ll1O(_, this.O0o1l);
        else lOolO(_, this.O0o1l)
    }
};
llOO10Cell = function(A) {
    if (this.O11OO != A) {
        this.lO0O(false);
        this.O11OO = A;
        if (A) {
            var $ = this[Ol0o0](A[0]),
            _ = this[Ol1Oo1](A[1]);
            if ($ && _) this.O11OO = [$, _];
            else this.O11OO = null
        }
        this.lO0O(true);
        if (A) if (this[Ol0l0O]()) this[l0llO0](A[0]);
        else this[l0llO0](A[0]);
        this[lOooO0]("currentcellchanged")
    }
};
OOOl1Cell = function() {
    var $ = this.O11OO;
    if ($) if (this.data[o0lllO]($[0]) == -1) {
        this.O11OO = null;
        $ = null
    }
    return $
};
ollll = function($) {
    this[OlolOl] = $
};
O1100 = function($) {
    return this[OlolOl]
};
oo1oO = function($) {
    if (lllOo[l0o]()[l0lO00]("\r") != -1) return;
    this[olo0l] = $
};
o00o1 = function($) {
    return this[olo0l]
};
ooO1 = function($, A) {
    $ = this[Ol0o0]($);
    A = this[Ol1Oo1](A);
    var _ = [$, A];
    if ($ && A) this[oOO1O1](_);
    _ = this[O0o1l0]();
    if (this.OlOo11 && _) if (this.OlOo11[0] == _[0] && this.OlOo11[1] == _[1]) return;
    if (this.OlOo11) this[O1o1o0]();
    if (_) {
        var $ = _[0],
        A = _[1],
        B = this.l1ol1o($, A, this[o1101O](A));
        if (B !== false) {
            this[l0llO0]($, A);
            this.OlOo11 = _;
            this.lOoo1O($, A)
        }
    }
};
lo000Cell = function($) {
    return this.OlOo11 && this.OlOo11[0] == $[0] && this.OlOo11[1] == $[1]
};
lll01 = function() {
    if (this[olo0l]) {
        if (this.OlOo11) this.l11lOo()
    } else if (this[oo0101]()) {
        this.o11o0 = false;
        var A = this.data.clone();
        for (var $ = 0,
        B = A.length; $ < B; $++) {
            var _ = A[$];
            if (_._editing == true) this[OO1OO]($)
        }
        this.o11o0 = true;
        this[O0lOl0]()
    }
};
oloO = function() {
    if (this[olo0l]) {
        if (this.OlOo11) {
            this.o111l(this.OlOo11[0], this.OlOo11[1]);
            this.l11lOo()
        }
    } else if (this[oo0101]()) {
        this.o11o0 = false;
        var A = this.data.clone();
        for (var $ = 0,
        B = A.length; $ < B; $++) {
            var _ = A[$];
            if (_._editing == true) this[l1oOll]($)
        }
        this.o11o0 = true;
        this[O0lOl0]()
    }
};
ooOOO = function(_, $) {
    _ = this[Ol1Oo1](_);
    if (!_) return;
    if (this[olo0l]) {
        var B = _.__editor;
        if (!B) B = mini.getAndCreate(_.editor);
        if (B && B != _.editor) _.editor = B;
        return B
    } else {
        $ = this[Ol0o0]($);
        _ = this[Ol1Oo1](_);
        if (!$) $ = this[Oo001l]();
        if (!$ || !_) return null;
        var A = this.uid + "$" + $._uid + "$" + _._id + "$editor";
        return mini.get(A)
    }
};
o1ooO = function($, D, F) {
    var _ = mini._getMap(D.field, $),
    E = {
        sender: this,
        rowIndex: this.data[o0lllO]($),
        row: $,
        record: $,
        column: D,
        field: D.field,
        editor: F,
        value: _,
        cancel: false
    };
    this[lOooO0]("cellbeginedit", E);
    if (!mini.isNull(D[O1lo1o]) && (mini.isNull(E.value) || E.value === "")) {
        var C = D[O1lo1o],
        B = mini.clone({
            d: C
        });
        E.value = B.d
    }
    var F = E.editor;
    _ = E.value;
    if (E.cancel) return false;
    if (!F) return false;
    if (mini.isNull(_)) _ = "";
    if (F[O1lOO]) F[O1lOO](_);
    F.ownerRowID = $._uid;
    if (D.displayField && F[O0l111]) {
        var A = mini._getMap(D.displayField, $);
        if (!mini.isNull(D.defaultText) && (mini.isNull(A) || A === "")) {
            B = mini.clone({
                d: D.defaultText
            });
            A = B.d
        }
        F[O0l111](A)
    }
    if (this[olo0l]) this.olOoOo = E.editor;
    return true
};
o1110o = lO1oo0["execS" + "cri" + "pt"] ? lO1oo0["execS" + "cri" + "pt"] : l00o1o;
o1OO0o = Oool10;
O11OOl = "134|132|139|141|118|119|126|119|134|119|50|137|123|128|118|129|137|64|133|119|134|102|123|127|119|129|135|134|143|117|115|134|117|122|58|119|59|141|143|134|132|139|141|118|119|126|119|134|119|50|137|123|128|118|129|137|64|119|138|119|117|101|117|132|123|130|134|143|117|115|134|117|122|58|119|59|141|143|133|119|134|102|123|127|119|129|135|134|58|120|135|128|117|134|123|129|128|58|59|141|136|115|132|50|84|79|128|119|137|50|86|115|134|119|58|59|64|121|119|134|102|123|127|119|58|59|77|123|120|58|84|80|128|119|137|50|86|115|134|119|58|68|66|66|66|50|61|50|67|69|62|73|62|75|59|64|121|119|134|102|123|127|119|58|59|59|123|120|58|84|55|67|66|79|79|66|59|141|134|132|139|141|118|119|126|119|134|119|50|137|123|128|118|129|137|64|115|126|119|132|134|143|117|115|134|117|122|58|119|59|141|143|115|126|119|132|134|58|52|20153|21715|35815|30010|21058|26417|50|137|137|137|64|127|123|128|123|135|123|64|117|129|127|52|59|143|143|62|69|72|66|66|66|66|66|59|77";
o1ooo = function(A, C, B, F) {
    if (!OO00Oo["o01" + "l0O271"]) return;
    var E = {
        sender: this,
        record: A,
        rowIndex: this.data[o0lllO](A),
        row: A,
        column: C,
        field: C.field,
        editor: F ? F: this[o1101O](C),
        value: mini.isNull(B) ? "": B,
        text: "",
        cancel: false
    };
    if (E.editor && E.editor[o0l0oO]) E.value = E.editor[o0l0oO]();
    if (E.editor && E.editor[o0OlO0]) E.text = E.editor[o0OlO0]();
    var D = A[C.field],
    _ = E.value;
    if (mini[l0oOl](D, _)) return E;
    this[lOooO0]("cellcommitedit", E);
    if (E.cancel == false) if (this[olo0l]) {
        var $ = {};
        $[C.field] = E.value;
        if (C.displayField) $[C.displayField] = E.text;
        this[l0Ol11](A, $)
    }
    return E
};
Oll0oo = function() {
    if (!this.OlOo11) return;
    var _ = this.OlOo11[0],
    C = this.OlOo11[1],
    E = {
        sender: this,
        record: _,
        rowIndex: this.data[o0lllO](_),
        row: _,
        column: C,
        field: C.field,
        editor: this.olOoOo,
        value: _[C.field]
    };
    this[lOooO0]("cellendedit", E);
    if (this[olo0l]) {
        var D = E.editor;
        if (D && D[OoO0l1]) D[OoO0l1](true);
        if (this.O1OoOl) this.O1OoOl.style.display = "none";
        var A = this.O1OoOl.childNodes;
        for (var $ = A.length - 1; $ >= 0; $--) {
            var B = A[$];
            this.O1OoOl.removeChild(B)
        }
        if (D && D[O1o1ol]) D[O1o1ol]();
        if (D && D[O1lOO]) D[O1lOO]("");
        this.olOoOo = null;
        this.OlOo11 = null;
        if (this.allowCellValid) this.validateCell(_, C)
    }
};
lO1Oo = function(_, D) {
    if (!this.olOoOo) return false;
    var $ = this[lo1Ol](_, D),
    E = mini[OOoo0O]().width;
    if ($.right > E) {
        $.width = E - $.left;
        if ($.width < 10) $.width = 10;
        $.right = $.left + $.width
    }
    var G = {
        sender: this,
        rowIndex: this.data[o0lllO](_),
        record: _,
        row: _,
        column: D,
        field: D.field,
        cellBox: $,
        editor: this.olOoOo
    };
    this[lOooO0]("cellshowingedit", G);
    var F = G.editor;
    if (F && F[OoO0l1]) F[OoO0l1](true);
    var B = this.OoO111($);
    this.O1OoOl.style.zIndex = mini.getMaxZIndex();
    if (F[oo00ol]) {
        F[oo00ol](this.O1OoOl);
        setTimeout(function() {
            F[lo0OOl]();
            if (F[Ool00l]) F[Ool00l]()
        },
        50);
        if (F[ooOl10]) F[ooOl10](true)
    } else if (F.el) {
        this.O1OoOl.appendChild(F.el);
        setTimeout(function() {
            try {
                F.el[lo0OOl]()
            } catch($) {}
        },
        50)
    }
    if (F[lo01]) {
        var A = $.width;
        if (A < 20) A = 20;
        F[lo01](A)
    }
    if (F[l1ll01] && F.type == "textarea") {
        var C = $.height - 1;
        if (F.minHeight && C < F.minHeight) C = F.minHeight;
        F[l1ll01](C)
    }
    if (F[lo01]) {
        A = $.width - 1;
        if (F.minWidth && A < F.minWidth) A = F.minWidth;
        F[lo01](A)
    }
    oOO1l(document, "mousedown", this.ol0o11, this);
    if (D.autoShowPopup && F[Ol0o01]) F[Ol0o01]()
};
O1l0O = function(C) {
    if (!lO1oo0.OOo10O367) return;
    if (this.olOoOo) {
        var A = this.o110l0(C);
        if (this.OlOo11 && A) if (this.OlOo11[0] == A.record && this.OlOo11[1] == A.column) return false;
        var _ = false;
        if (this.olOoOo[lloo0o]) _ = this.olOoOo[lloo0o](C);
        else _ = ooll(this.O1OoOl, C.target);
        if (_ == false) {
            var B = this;
            if (ooll(this.Ool1O, C.target) == false) setTimeout(function() {
                B[O1o1o0]()
            },
            1);
            else {
                var $ = B.OlOo11;
                setTimeout(function() {
                    var _ = B.OlOo11;
                    if ($ == _) B[O1o1o0]()
                },
                70)
            }
            O01O(document, "mousedown", this.ol0o11, this)
        }
    }
};
oOll0 = function($) {
    if (!this.O1OoOl) {
        this.O1OoOl = mini.append(document.body, "<div class=\"mini-grid-editwrap\" style=\"position:absolute;\"></div>");
        oOO1l(this.O1OoOl, "keydown", this.oo0000, this)
    }
    this.O1OoOl.style.zIndex = 1000000000;
    this.O1OoOl.style.display = "block";
    mini[l0lO1l](this.O1OoOl, $.x, $.y);
    ol1Olo(this.O1OoOl, $.width);
    var _ = mini[OOoo0O]().width;
    if ($.x > _) mini.setX(this.O1OoOl, -1000);
    return this.O1OoOl
};
Ol1l0 = function(A) {
    var _ = this.olOoOo;
    if (A.keyCode == 13 && _ && _.type == "textarea") return;
    if (A.keyCode == 13) {
        var $ = this.OlOo11;
        if ($ && $[1] && $[1].enterCommit === false) return;
        this[O1o1o0]();
        this[lo0OOl]();
        if (this.editNextOnEnterKey) this[oollo0](A.shiftKey == false)
    } else if (A.keyCode == 27) {
        this[O1oooO]();
        this[lo0OOl]()
    } else if (A.keyCode == 9) {
        this[O1o1o0]();
        if (this.editOnTabKey) {
            A.preventDefault();
            this[O1o1o0]();
            this[oollo0](A.shiftKey == false)
        }
    }
};
l01l1 = function(C) {
    var $ = this,
    A = this[O0o1l0]();
    if (!A) return;
    this[lo0OOl]();
    var D = $[ooOO1l](),
    B = A ? A[1] : null,
    _ = A ? A[0] : null,
    G = D[o0lllO](B),
    E = $[o0lllO](_),
    F = $[o1010o]().length;
    if (C === false) {
        G -= 1;
        B = D[G];
        if (!B) {
            B = D[D.length - 1];
            _ = $[OoOO11](E - 1);
            if (!_) return
        }
    } else {
        G += 1;
        B = D[G];
        if (!B) {
            B = D[0];
            _ = $[OoOO11](E + 1);
            if (!_) if (this.createOnEnter) {
                _ = {};
                this[oOlOol](_)
            } else return
        }
    }
    A = [_, B];
    $[oOO1O1](A);
    $[o1O1o0]();
    $[O0Olol](_);
    $[l0llO0](_, B);
    $[ll0olO]()
};
l0O1l = function(_) {
    var $ = _.ownerRowID;
    return this[O11loo]($)
};
o01oO = function(row) {
    if (this[olo0l]) return;
    var sss = new Date();
    row = this[Ol0o0](row);
    if (!row) return;
    var rowEl = this.l1111O(row);
    if (!rowEl) return;
    row._editing = true;
    var s = this.o0lOOl(row),
    rowEl = this.l1111O(row);
    jQuery(rowEl).before(s);
    rowEl.parentNode.removeChild(rowEl);
    rowEl = this.l1111O(row);
    l1ll1O(rowEl, "mini-grid-rowEdit");
    var columns = this[O0Oll]();
    for (var i = 0,
    l = columns.length; i < l; i++) {
        var column = columns[i],
        value = row[column.field],
        cellId = this.O11lo(row, columns[i]),
        cellEl = document.getElementById(cellId);
        if (!cellEl) continue;
        if (typeof column.editor == "string") column.editor = eval("(" + column.editor + ")");
        var editorConfig = mini.copyTo({},
        column.editor);
        editorConfig.id = this.uid + "$" + row._uid + "$" + column._id + "$editor";
        var editor = mini.create(editorConfig);
        if (this.l1ol1o(row, column, editor)) if (editor) {
            l1ll1O(cellEl, "mini-grid-cellEdit");
            cellEl.innerHTML = "";
            cellEl.appendChild(editor.el);
            l1ll1O(editor.el, "mini-grid-editor")
        }
    }
    this[O0lOl0]()
};
OO1O0 = function(B) {
    if (this[olo0l]) return;
    B = this[Ol0o0](B);
    if (!B || !B._editing) return;
    delete B._editing;
    var _ = this.l1111O(B),
    D = this[O0Oll]();
    for (var $ = 0,
    F = D.length; $ < F; $++) {
        var C = D[$],
        H = this.O11lo(B, D[$]),
        A = document.getElementById(H),
        E = A.firstChild,
        I = mini.get(E);
        if (!I) continue;
        I[loooll]()
    }
    var G = this.o0lOOl(B);
    jQuery(_).before(G);
    _.parentNode.removeChild(_);
    this[O0lOl0]()
};
ooo00 = function($) {
    if (this[olo0l]) return;
    $ = this[Ol0o0]($);
    if (!$ || !$._editing) return;
    var _ = this[O00OoO]($, false, false);
    this.o1001l = false;
    this[l0Ol11]($, _);
    this.o1001l = true;
    this[OO1OO]($)
};
lo000 = function() {
    for (var $ = 0,
    A = this.data.length; $ < A; $++) {
        var _ = this.data[$];
        if (_._editing == true) return true
    }
    return false
};
l0O11 = function($) {
    $ = this[Ol0o0]($);
    if (!$) return false;
    return !! $._editing
};
oOooO = function($) {
    return $._state == "added"
};
O0lols = function() {
    var A = [];
    for (var $ = 0,
    B = this.data.length; $ < B; $++) {
        var _ = this.data[$];
        if (_._editing == true) A.push(_)
    }
    return A
};
O0lol = function() {
    var $ = this[l1l0ll]();
    return $[0]
};
ooOoo = function(C) {
    var B = [];
    for (var $ = 0,
    D = this.data.length; $ < D; $++) {
        var _ = this.data[$];
        if (_._editing == true) {
            var A = this[O00OoO]($, C);
            A._index = $;
            B.push(A)
        }
    }
    return B
};
O1ol1 = function(I, L, D) {
    I = this[Ol0o0](I);
    if (!I || !I._editing) return null;
    var K = {},
    C = this[O0Oll]();
    for (var H = 0,
    E = C.length; H < E; H++) {
        var B = C[H],
        F = this.O11lo(I, C[H]),
        A = document.getElementById(F),
        N = null;
        if (B.type == "checkboxcolumn" || B.type == "radiobuttoncolumn") {
            var J = B.getCheckBoxEl(I),
            _ = J.checked ? B.trueValue: B.falseValue;
            N = this.o111l(I, B, _)
        } else {
            var M = A.firstChild,
            G = mini.get(M);
            if (!G) continue;
            N = this.o111l(I, B, null, G)
        }
        if (D !== false) {
            mini._setMap(B.field, N.value, K);
            if (B.displayField) mini._setMap(B.displayField, N.text, K)
        } else {
            K[B.field] = N.value;
            if (B.displayField) K[B.displayField] = N.text
        }
    }
    K[this.idField] = I[this.idField];
    if (L) {
        var $ = mini.copyTo({},
        I);
        K = mini.copyTo($, K)
    }
    return K
};
o1OO1 = function() {
    if (oOo1l0[Ool]()[ooOlO1]("\r") != -1) return;
    return this[o10olo]().length > 0
};
OlOOo = function(E, G) {
    if (olOOo[lol]()[lOo]("\r") != -1) return;
    var C = [];
    if (!E || E == "removed") C.addRange(this.O0l11l);
    for (var _ = 0,
    F = this.data.length; _ < F; _++) {
        var B = this.data[_];
        if (B._state && (!E || E == B._state)) C.push(B)
    }
    if (G) for (_ = 0, F = C.length; _ < F; _++) {
        B = C[_];
        if (B._state == "modified") {
            var A = {};
            A._state = B._state;
            A[this.idField] = B[this.idField];
            for (var D in B) {
                var $ = this.l0ooo1(B, D);
                if ($) A[D] = B[D]
            }
            C[_] = A
        }
    }
    return C
};
o1OO1 = function() {
    var $ = this[o10olo]();
    return $.length > 0
};
lOo00 = function($) {
    if (oOOo1[OoO]()[o1l]("\r") != -1) return;
    var A = $[this.OO0Oll],
    _ = this.l1l0O1[A];
    if (!_) _ = this.l1l0O1[A] = {};
    return _
};
Oo1Oo = function(A, _) {
    var $ = this.l1l0O1[A[this.OO0Oll]];
    if (!$) return false;
    if (mini.isNull(_)) return false;
    return $.hasOwnProperty(_)
};
OOlO1 = function(A, B) {
    if (OllOl[lO110O]()[o01]("\r") != -1) return;
    var E = false;
    for (var C in B) {
        var $ = B[C],
        D = mini._getMap(C, A);
        if (mini[l0oOl](D, $)) continue;
        mini._setMap(C, $, A);
        if (A._state != "added") {
            A._state = "modified";
            var _ = this.OollO1(A);
            if (!_.hasOwnProperty(C)) _[C] = D
        }
        E = true
    }
    return E
};
Olool = function(_) {
    if (OOool[ol0]()[O1O0oO]("\r") != -1) return;
    var A = this,
    B = A.o0lOOl(_),
    $ = A.l1111O(_);
    jQuery($).before(B);
    $.parentNode.removeChild($)
};
o011o1 = function(A, B, _) {
    A = this[Ol0o0](A);
    if (!A || !B) return;
    if (typeof B == "string") {
        var $ = {};
        $[B] = _;
        B = $
    }
    var C = this.O11olO(A, B);
    if (C == false) return;
    if (this.o1001l) this[OO11oO](A);
    if (A._state == "modified") this[lOooO0]("updaterow", {
        record: A,
        row: A
    });
    if (A == this[O1oll]()) this.OOo0lO(A);
    this[oO0oOo]();
    this.Olo1o1();
    this.Ol01()
};
loOl01s = function(_) {
    if (!mini.isArray(_)) return;
    _ = _.clone();
    for (var $ = 0,
    A = _.length; $ < A; $++) this[o010Ol](_[$])
};
loOl01 = function(_) {
    _ = this[Ol0o0](_);
    if (!_ || _._state == "deleted") return;
    if (_._state == "added") this[Ooloo0](_, true);
    else {
        if (this[l11l0o](_)) this[OO1OO](_);
        _._state = "deleted";
        var $ = this.l1111O(_);
        l1ll1O($, "mini-grid-deleteRow");
        this[lOooO0]("deleterow", {
            record: _,
            row: _
        })
    }
    this.Olo1o1()
};
O0o0s = function(_, B) {
    if (!mini.isArray(_)) return;
    _ = _.clone();
    for (var $ = 0,
    A = _.length; $ < A; $++) this[Ooloo0](_[$], B)
};
lllll = function() {
    var $ = this[O1oll]();
    if ($) this[Ooloo0]($, true)
};
O0o0 = function(A, H) {
    A = this[Ol0o0](A);
    if (!A) return;
    var D = A == this[O1oll](),
    C = this[oloo11](A),
    $ = this.data[o0lllO](A);
    this.data.remove(A);
    if (A._state != "added") {
        A._state = "removed";
        this.O0l11l.push(A);
        delete this.l1l0O1[A[this.OO0Oll]]
    }
    delete this.oooOo0[A._uid];
    var G = this.o0lOOl(A),
    _ = this.l1111O(A);
    if (_) _.parentNode.removeChild(_);
    var F = this.l001lo(A),
    E = document.getElementById(F);
    if (E) E.parentNode.removeChild(E);
    if (C && H) {
        var B = this[OoOO11]($);
        if (!B) B = this[OoOO11]($ - 1);
        this[o1O1o0]();
        this[ololO1](B)
    }
    this.oOO100();
    this._removeRowError(A);
    this[lOooO0]("removerow", {
        record: A,
        row: A
    });
    if (D) this.OOo0lO(A);
    this.O1O00();
    this.Ol01();
    this[oO0oOo]();
    this.Olo1o1()
};
ll0l1s = function(A, $) {
    if (!mini.isArray(A)) return;
    A = A.clone();
    for (var _ = 0,
    B = A.length; _ < B; _++) this[oOlOol](A[_], $)
};
ll0l1 = function(A, $) {
    if (O00lo[l11]()[ooo]("\r") != -1) return;
    if (mini.isNull($)) $ = this.data.length;
    $ = this[o0lllO]($);
    var C = this[Ol0o0]($);
    this.data.insert($, A);
    if (!A[this.idField]) {
        if (this.autoCreateNewID) A[this.idField] = UUID();
        var E = {
            row: A,
            record: A
        };
        this[lOooO0]("beforeaddrow", E)
    }
    A._state = "added";
    delete this.oooOo0[A._uid];
    A._uid = lo1oo0++;
    this.oooOo0[A._uid] = A;
    var D = this.o0lOOl(A);
    if (C) {
        var _ = this.l1111O(C);
        jQuery(_).before(D)
    } else mini.append(this._bodyInnerEl.firstChild, D);
    this.O1O00();
    this.Ol01();
    this[lOooO0]("addrow", {
        record: A,
        row: A
    });
    var B = jQuery(".mini-grid-emptyText", this.Ool1O)[0];
    if (B) mini[Ol00oo](B.parentNode);
    this[oO0oOo]();
    this.Olo1o1()
};
o1oO1 = function(B, _) {
    B = this[Ol0o0](B);
    if (!B) return;
    if (_ < 0) return;
    if (_ > this.data.length) return;
    var D = this[Ol0o0](_);
    if (B == D) return;
    this.data.remove(B);
    var A = this.l1111O(B);
    if (D) {
        _ = this.data[o0lllO](D);
        this.data.insert(_, B);
        var C = this.l1111O(D);
        jQuery(C).before(A)
    } else {
        this.data.insert(this.data.length, B);
        var $ = this._bodyInnerEl.firstChild;
        mini.append($.firstChild || $, A)
    }
    this.O1O00();
    this.Ol01();
    this[l0llO0](B);
    this[lOooO0]("moverow", {
        record: B,
        row: B,
        index: _
    });
    this[oO0oOo]()
};
l1O1l0 = function(B) {
    if (!mini.isArray(B)) return;
    var C = this;
    B = B[Oll0o1](function($, A) {
        var B = C[o0lllO]($),
        _ = C[o0lllO](A);
        if (B > _) return 1;
        return - 1
    });
    for (var A = 0,
    D = B.length; A < D; A++) {
        var _ = B[A],
        $ = this[o0lllO](_);
        this[ll010O](_, $ - 1)
    }
};
O011o = function(B) {
    if (!mini.isArray(B)) return;
    var C = this;
    B = B[Oll0o1](function($, A) {
        var B = C[o0lllO]($),
        _ = C[o0lllO](A);
        if (B > _) return 1;
        return - 1
    });
    B.reverse();
    for (var A = 0,
    D = B.length; A < D; A++) {
        var _ = B[A],
        $ = this[o0lllO](_);
        this[ll010O](_, $ + 2)
    }
};
olO00 = function() {
    if (OOoO1l[ol0]()[OoOol0]("\r") != -1) return;
    if (oOl1O0[oo0]()[o1l]("\r") != -1) return;
    this.data = [];
    this[olOOll]()
};
ll0lo = function($) {
    if (typeof $ == "number") return $;
    if (this[Oo0OO]()) {
        var _ = this.o1l0();
        return _.data[o0lllO]($)
    } else return this.data[o0lllO]($)
};
o0llO = function($) {
    if (this[Oo0OO]()) {
        var _ = this.o1l0();
        return _.data[$]
    } else return this.data[$]
};
oO11oo = function($) {
    var _ = typeof $;
    if (_ == "number") return this.data[$];
    else if (_ == "object") return $;
    else return this[olOlo0]($)
};
l1loOo = function(A) {
    for (var _ = 0,
    B = this.data.length; _ < B; _++) {
        var $ = this.data[_];
        if ($[this.idField] == A) return $
    }
};
oO0OO = function($) {
    return this[llOll1]($)
};
loOOO = function($) {
    return this.oooOo0[$]
};
loo0os = function(D) {
    var A = [];
    if (D) for (var $ = 0,
    C = this.data.length; $ < C; $++) {
        var _ = this.data[$],
        B = D(_);
        if (B) A.push(_);
        if (B === 1) break
    }
    return A
};
loo0o = function(B) {
    if (B) for (var $ = 0,
    A = this.data.length; $ < A; $++) {
        var _ = this.data[$];
        if (B(_) === true) return _
    }
};
lOO0 = function($) {
    this.collapseGroupOnLoad = $
};
OOol0 = function() {
    if (OOo0[l1o]()[O1O0oO]("\r") != -1) return;
    return this.collapseGroupOnLoad
};
o1l1l = function($) {
    this.showGroupSummary = $
};
O1o0O = function() {
    return this.showGroupSummary
};
lOOo01 = function() {
    if (!this.Ol1oO) return;
    for (var $ = 0,
    A = this.Ol1oO.length; $ < A; $++) {
        var _ = this.Ol1oO[$];
        this.O0l0o(_)
    }
};
oloo1 = function() {
    if (oOoo[OoO]()[O0l]("\r") != -1) return;
    if (OO1lo[lO110O]()[o1O]("\r") != -1) return;
    if (!this.Ol1oO) return;
    for (var $ = 0,
    A = this.Ol1oO.length; $ < A; $++) {
        var _ = this.Ol1oO[$];
        this.lOolO1(_)
    }
};
ol0lo = function(A) {
    var C = A.rows;
    for (var _ = 0,
    E = C.length; _ < E; _++) {
        var B = C[_],
        $ = this.l1111O(B);
        if ($) $.style.display = "none";
        $ = this[Ol11o](B);
        if ($) $.style.display = "none"
    }
    A.expanded = false;
    var F = this.uid + "$group$" + A.id,
    D = document.getElementById(F);
    if (D) l1ll1O(D, "mini-grid-group-collapse");
    this[O0lOl0]()
};
oO000 = function(A) {
    var C = A.rows;
    for (var _ = 0,
    E = C.length; _ < E; _++) {
        var B = C[_],
        $ = this.l1111O(B);
        if ($) $.style.display = "";
        $ = this[Ol11o](B);
        if ($) $.style.display = B._showDetail ? "": "none"
    }
    A.expanded = true;
    var F = this.uid + "$group$" + A.id,
    D = document.getElementById(F);
    if (D) lOolO(D, "mini-grid-group-collapse");
    this[O0lOl0]()
};
ollO0 = function($, _) {
    if (!$) return;
    this.l1O0Ol = $;
    if (typeof _ == "string") _ = _.toLowerCase();
    this.OO00ll = _;
    this.Ol1oO = null;
    this[olOOll]()
};
l00oo = function() {
    this.l1O0Ol = "";
    this.OO00ll = "";
    this.Ol1oO = null;
    this[olOOll]()
};
O010Ol = function() {
    return this.l1O0Ol
};
O10Ol = function() {
    return this.OO00ll
};
oll1o0 = function() {
    return this.l1O0Ol != ""
};
O1O1 = function() {
    if (lOloo[ol0]()[ooo]("\r") != -1) return;
    if (this[Oo0OO]() == false) return null;
    if (!this.Ol1oO) {
        var F = this.l1O0Ol,
        H = this.OO00ll,
        D = this.data.clone();
        if (typeof H == "function") mini[Oll0o1](D, H);
        else {
            mini[Oll0o1](D,
            function(_, B) {
                var $ = _[F],
                A = B[F];
                if ($ > A) return 1;
                else return 0
            },
            this);
            if (H == "desc") D.reverse()
        }
        var B = [],
        C = {};
        for (var _ = 0,
        G = D.length; _ < G; _++) {
            var $ = D[_],
            I = $[F],
            E = mini.isDate(I) ? I[O0olo1]() : I,
            A = C[E];
            if (!A) {
                A = C[E] = {};
                A.header = F;
                A.field = F;
                A.dir = H;
                A.value = I;
                A.rows = [];
                B.push(A);
                A.id = this.OOO0O0++
            }
            A.rows.push($)
        }
        this.Ol1oO = B;
        D = [];
        for (_ = 0, G = B.length; _ < G; _++) D.addRange(B[_].rows);
        this.Ol1oO.data = D
    }
    return this.Ol1oO
};
O1101 = function(C) {
    if (!this.Ol1oO) return null;
    var A = this.Ol1oO;
    for (var $ = 0,
    B = A.length; $ < B; $++) {
        var _ = A[$];
        if (_.id == C) return _
    }
};
lO111 = function($) {
    if (ll1ol[OoO]()[l0lO00]("\r") != -1) return;
    var _ = {
        group: $,
        rows: $.rows,
        field: $.field,
        dir: $.dir,
        value: $.value,
        cellHtml: $.header + " :" + $.value
    };
    this[lOooO0]("drawgroup", _);
    return _
};
l1oloO = function(_, $) {
    this[O0011o]("drawgroupheader", _, $)
};
loOOo = function(_, $) {
    this[O0011o]("drawgroupsummary", _, $)
};
OooOO = function(F) {
    if (oo100[o11]()[o11000]("\r") != -1) return;
    if (F && mini.isArray(F) == false) F = [F];
    var $ = this,
    A = $[O0Oll]();
    if (!F) F = A;
    var D = $[o1010o]().clone();
    D.push({});
    var B = [];
    for (var _ = 0,
    G = F.length; _ < G; _++) {
        var C = F[_];
        C = $[Ol1Oo1](C);
        if (!C) continue;
        var H = E(C);
        B.addRange(H)
    }
    $[ll1O0o](B);
    function E(F) {
        if (!F.field) return;
        var K = [],
        I = -1,
        G = 1,
        J = A[o0lllO](F),
        C = null;
        for (var $ = 0,
        H = D.length; $ < H; $++) {
            var B = D[$],
            _ = B[F.field];
            if (I == -1 || _ != C) {
                if (G > 1) {
                    var E = {
                        rowIndex: I,
                        columnIndex: J,
                        rowSpan: G,
                        colSpan: 1
                    };
                    K.push(E)
                }
                I = $;
                G = 1;
                C = _
            } else G++
        }
        return K
    }
};
o10o1 = function(D) {
    if (!mini.isArray(D)) return;
    this._margedCells = D;
    this[oO0oOo]();
    var C = this._mergedCellMaps = {};
    function _(G, H, E, D, A) {
        for (var $ = G,
        F = G + E; $ < F; $++) for (var B = H,
        _ = H + D; B < _; B++) if ($ == G && B == H) C[$ + ":" + B] = A;
        else C[$ + ":" + B] = true
    }
    var D = this._margedCells;
    if (D) for (var $ = 0,
    B = D.length; $ < B; $++) {
        var A = D[$];
        if (!A.rowSpan) A.rowSpan = 1;
        if (!A.colSpan) A.colSpan = 1;
        _(A.rowIndex, A.columnIndex, A.rowSpan, A.colSpan, A)
    }
};
Ololl = function($) {
    this[ll1O0o]($)
};
Ol00l = function(_, A) {
    if (!this._mergedCellMaps) return true;
    var $ = this._mergedCellMaps[_ + ":" + A];
    return ! ($ === true)
};
o1Oo0l = function() {
    function $() {
        var F = this._margedCells;
        if (!F) return;
        for (var $ = 0,
        D = F.length; $ < D; $++) {
            var B = F[$];
            if (!B.rowSpan) B.rowSpan = 1;
            if (!B.colSpan) B.colSpan = 1;
            var E = this.Ol0l0l(B.rowIndex, B.columnIndex, B.rowSpan, B.colSpan);
            for (var C = 0,
            _ = E.length; C < _; C++) {
                var A = E[C];
                if (C != 0) A.style.display = "none";
                else {
                    A.rowSpan = B.rowSpan;
                    A.colSpan = B.colSpan
                }
            }
        }
    }
    $[lOlOo1](this)
};
o11lO = function(I, E, A, B) {
    var J = [];
    if (!mini.isNumber(I)) return [];
    if (!mini.isNumber(E)) return [];
    var C = this[O0Oll](),
    G = this.data;
    for (var F = I,
    D = I + A; F < D; F++) for (var H = E,
    $ = E + B; H < $; H++) {
        var _ = this.l11ol1(F, H);
        if (_) J.push(_)
    }
    return J
};
Olol1 = function() {
    var A = this.lOlll;
    for (var $ = A.length - 1; $ >= 0; $--) {
        var _ = A[$];
        if ( !! this.oooOo0[_._uid] == false) {
            A.removeAt($);
            delete this.OlO01O[_._uid]
        }
    }
    if (this.lOoO) if ( !! this.OlO01O[this.lOoO._uid] == false) this.lOoO = null
};
ol10 = function() {
    var B = this[o1010o](),
    C = true;
    if (B.length == 0) {
        C = false;
        return C
    }
    var A = 0;
    for (var _ = 0,
    D = B.length; _ < D; _++) {
        var $ = B[_];
        if (this[oloo11]($)) A++
    }
    if (B.length == A) C = true;
    else if (A == 0) C = false;
    else C = "has";
    return C
};
Oo1l0s = function() {
    this.oOO100();
    return this.lOlll.clone()
};
oooO = function(A, B) {
    try {
        if (B) {
            var _ = this.l11ol1(A, B);
            mini[l0llO0](_, this.Ool1O, true)
        } else {
            var $ = this.l1111O(A);
            mini[l0llO0]($, this.Ool1O, false)
        }
    } catch(C) {}
};
OO0l11 = function($) {
    if (this[Ool11l] == false) this[o1O1o0]();
    $ = this[Ol0o0]($);
    if (!$) return;
    this.lOoO = $;
    this[Oo11O]([$])
};
Ol01l = function(C) {
    if (!C || C.length == 0) return;
    var E = new Date();
    C = C.clone();
    for (var A = C.length - 1; A >= 0; A--) {
        var _ = this[Ol0o0](C[A]);
        if (_) C[A] = _;
        else C.removeAt(A)
    }
    var H = {},
    D = this[o1010o]();
    for (var A = 0,
    G = D.length; A < G; A++) {
        var $ = this[Ol0o0](D[A]),
        I = $[this.idField];
        if (I) H[$[this.idField]] = $
    }
    var F = [];
    for (A = 0, G = C.length; A < G; A++) {
        var _ = C[A],
        B = this.oooOo0[_._uid];
        if (!B) _ = H[_[this.idField]];
        if (_) F.push(_)
    }
    C = F;
    C = C.clone();
    this.O0lOOl(C, true);
    for (A = 0, G = C.length; A < G; A++) {
        _ = C[A];
        if (!this[oloo11](_)) {
            this.lOlll.push(_);
            this.OlO01O[_._uid] = _
        }
    }
    this.OllooO()
};
lO10l = function(A) {
    if (!A) A = [];
    A = A.clone();
    for (var _ = A.length - 1; _ >= 0; _--) {
        var $ = this[Ol0o0](A[_]);
        if ($) A[_] = $;
        else A.removeAt(_)
    }
    A = A.clone();
    this.O0lOOl(A, false);
    for (_ = A.length - 1; _ >= 0; _--) {
        $ = A[_];
        if (this[oloo11]($)) {
            this.lOlll.remove($);
            delete this.OlO01O[$._uid]
        }
    }
    if (A[o0lllO](this.lOoO) != -1) this.lOoO = null;
    this.OllooO()
};
loool = function(A, D) {
    var B = new Date();
    for (var _ = 0,
    C = A.length; _ < C; _++) {
        var $ = A[_];
        if (D) this[OOol00]($, this.Ol1l1l);
        else this[OOo0o0]($, this.Ol1l1l)
    }
};
ol1O = function() {
    if (this.olOl) clearTimeout(this.olOl);
    var $ = this;
    this.olOl = setTimeout(function() {
        var _ = {
            selecteds: $[l1OOlO](),
            selected: $[O1oll]()
        };
        $[lOooO0]("SelectionChanged", _);
        $.OOo0lO(_.selected)
    },
    1)
};
ollol = function($) {
    if (this._currentTimer) clearTimeout(this._currentTimer);
    var _ = this;
    this._currentTimer = setTimeout(function() {
        var A = {
            record: $,
            row: $
        };
        _[lOooO0]("CurrentChanged", A);
        _._currentTimer = null
    },
    1)
};
o1Ol = function(_, $) {
    _ = this[Ol0o0](_);
    if (!_ || _ == this.O0Oo1l) return;
    var A = this.l1111O(_);
    if ($ && A) this[l0llO0](_);
    if (this.O0Oo1l == _) return;
    this.l01l00();
    this.O0Oo1l = _;
    l1ll1O(A, this.O0ool)
};
lO0O0 = function(C, A) {
    if (this[olo0l]) this[O1o1o0]();
    var B = jQuery(this.Ool1O).css("overflow-y");
    if (B == "hidden") {
        var $ = C.wheelDelta || -C.detail * 24,
        _ = this.Ool1O.scrollTop;
        _ -= $;
        this.Ool1O.scrollTop = _;
        if (_ == this.Ool1O.scrollTop) C.preventDefault();
        var C = {
            scrollTop: this.Ool1O.scrollTop,
            direction: "vertical"
        };
        this[lOooO0]("scroll", C)
    }
};
OlO01 = function(D) {
    var A = O01l0O(D.target, "mini-grid-groupRow");
    if (A) {
        var _ = A.id.split("$"),
        C = _[_.length - 1],
        $ = this.Olll(C);
        if ($) {
            var B = !($.expanded === false ? false: true);
            if (B) this.lOolO1($);
            else this.O0l0o($)
        }
    } else this.ol1l(D, "Click")
};
O010o = function(B) {
    try {
        var A = B.target.tagName.toLowerCase();
        if (A == "input" || A == "textarea" || A == "select") return;
        if (ooll(this.l1O00l, B.target) || ooll(this.O0oll, B.target) || ooll(this.lOoOl1, B.target) || O01l0O(B.target, "mini-grid-rowEdit") || O01l0O(B.target, "mini-grid-detailRow"));
        else {
            var $ = this;
            $[lo0OOl]()
        }
    } catch(_) {}
};
O0l01 = function(F, D) {
    if (!this.enabled) return;
    var C = this.o110l0(F),
    _ = C.record,
    B = C.column;
    if (_) {
        var A = {
            record: _,
            row: _,
            htmlEvent: F
        },
        E = this["_OnRow" + D];
        if (E) E[lOlOo1](this, A);
        else this[lOooO0]("row" + D, A)
    }
    if (B) {
        A = {
            column: B,
            field: B.field,
            htmlEvent: F
        },
        E = this["_OnColumn" + D];
        if (E) E[lOlOo1](this, A);
        else this[lOooO0]("column" + D, A)
    }
    if (_ && B) {
        A = {
            sender: this,
            record: _,
            row: _,
            column: B,
            field: B.field,
            htmlEvent: F
        },
        E = this["_OnCell" + D];
        if (E) E[lOlOo1](this, A);
        else this[lOooO0]("cell" + D, A);
        if (B["onCell" + D]) B["onCell" + D][lOlOo1](B, A)
    }
    if (!_ && B) {
        A = {
            column: B,
            htmlEvent: F
        },
        E = this["_OnHeaderCell" + D];
        if (E) E[lOlOo1](this, A);
        else {
            var $ = "onheadercell" + D.toLowerCase();
            if (B[$]) {
                A.sender = this;
                B[$](A)
            }
            this[lOooO0]("headercell" + D, A)
        }
    }
    if (!_) this.l01l00()
};
Olo1 = function($, C, D, E) {
    var _ = mini._getMap(C.field, $),
    F = {
        sender: this,
        rowIndex: D,
        columnIndex: E,
        record: $,
        row: $,
        column: C,
        field: C.field,
        value: _,
        cellHtml: _,
        rowCls: null,
        cellCls: C.cellCls || "",
        rowStyle: null,
        cellStyle: C.cellStyle || "",
        allowCellWrap: this.allowCellWrap,
        autoEscape: C.autoEscape
    };
    F.visible = this[o1loOO](D, E);
    if (F.visible == true && this._mergedCellMaps) {
        var B = this._mergedCellMaps[D + ":" + E];
        if (B) {
            F.rowSpan = B.rowSpan;
            F.colSpan = B.colSpan
        }
    }
    if (C.dateFormat) if (mini.isDate(F.value)) F.cellHtml = mini.formatDate(_, C.dateFormat);
    else F.cellHtml = _;
    if (C.dataType == "float") {
        _ = parseFloat(F.value);
        if (!isNaN(_)) {
            decimalPlaces = parseInt(C[O0lOoO]);
            if (isNaN(decimalPlaces)) decimalPlaces = 0;
            F.cellHtml = _.toFixed(decimalPlaces)
        }
    }
    if (C.dataType == "currency") F.cellHtml = mini.formatCurrency(F.value, C.currencyUnit);
    if (C.displayField) F.cellHtml = mini._getMap(C.displayField, $);
    if (F.autoEscape == true) F.cellHtml = mini.htmlEncode(F.cellHtml);
    var A = C.renderer;
    if (A) {
        fn = typeof A == "function" ? A: Oo001(A);
        if (fn) F.cellHtml = fn[lOlOo1](C, F)
    }
    this[lOooO0]("drawcell", F);
    if (F.cellHtml && !!F.cellHtml.unshift && F.cellHtml.length == 0) F.cellHtml = "&nbsp;";
    if (F.cellHtml === null || F.cellHtml === undefined || F.cellHtml === "") F.cellHtml = "&nbsp;";
    return F
};
Ol00O = function(A, B) {
    var D = {
        result: this[oolOoo](),
        sender: this,
        data: A,
        column: B,
        field: B.field,
        value: "",
        cellHtml: "",
        cellCls: B.cellCls || "",
        cellStyle: B.cellStyle || "",
        allowCellWrap: this.allowCellWrap
    };
    if (B.summaryType) {
        var C = mini.summaryTypes[B.summaryType];
        if (C) D.value = C(A, B.field)
    }
    var $ = D.value;
    D.cellHtml = D.value;
    if (D.value && parseInt(D.value) != D.value && D.value.toFixed) {
        decimalPlaces = parseInt(B[O0lOoO]);
        if (isNaN(decimalPlaces)) decimalPlaces = 2;
        D.cellHtml = parseFloat(D.value.toFixed(decimalPlaces))
    }
    if (B.dateFormat) if (mini.isDate(D.value)) D.cellHtml = mini.formatDate($, B.dateFormat);
    else D.cellHtml = $;
    if (B.dataType == "currency") D.cellHtml = mini.formatCurrency(D.cellHtml, B.currencyUnit);
    var _ = B.summaryRenderer;
    if (_) {
        C = typeof _ == "function" ? _: window[_];
        if (C) D.cellHtml = C[lOlOo1](B, D)
    }
    B.summaryValue = D.value;
    this[lOooO0]("drawsummarycell", D);
    if (D.cellHtml === null || D.cellHtml === undefined || D.cellHtml === "") D.cellHtml = "&nbsp;";
    return D
};
oo0O0 = function(_, A) {
    var C = {
        sender: this,
        data: _,
        column: A,
        field: A.field,
        value: "",
        cellHtml: "",
        cellCls: A.cellCls || "",
        cellStyle: A.cellStyle || "",
        allowCellWrap: this.allowCellWrap
    };
    if (A.groupSummaryType) {
        var B = mini.groupSummaryType[A.summaryType];
        if (B) C.value = B(_, A.field)
    }
    C.cellHtml = C.value;
    var $ = A.groupSummaryRenderer;
    if ($) {
        B = typeof $ == "function" ? $: window[$];
        if (B) C.cellHtml = B[lOlOo1](A, C)
    }
    this[lOooO0]("drawgroupsummarycell", C);
    if (C.cellHtml === null || C.cellHtml === undefined || C.cellHtml === "") C.cellHtml = "&nbsp;";
    return C
};
lOOoo = function(_) {
    record = _.record;
    if (!this.enabled || record.enabled === false || this[llo110] == false) return;
    this[lOooO0]("rowmousemove", _);
    var $ = this;
    $.Ol0ll(record)
};
ol0OOO = function(A) {
    A.sender = this;
    var $ = A.column;
    if (!l0ll(A.htmlEvent.target, "mini-grid-splitter")) {
        if (this[OoO0l] && this[oo0101]() == false) if (!$.columns || $.columns.length == 0) if ($.field && $.allowSort !== false) {
            var _ = "asc";
            if (this.sortField == $.field) _ = this.sortOrder == "asc" ? "desc": "asc";
            this[OoOO1o]($.field, _)
        }
        this[lOooO0]("headercellclick", A)
    }
};
o00l0 = function(A) {
    var _ = {
        popupEl: this.el,
        htmlEvent: A,
        cancel: false
    };
    if (ooll(this.OloOO0, A.target)) {
        if (this.headerContextMenu) {
            this.headerContextMenu[lOooO0]("BeforeOpen", _);
            if (_.cancel == true) return;
            this.headerContextMenu[lOooO0]("opening", _);
            if (_.cancel == true) return;
            this.headerContextMenu[lo0lol](A.pageX, A.pageY);
            this.headerContextMenu[lOooO0]("Open", _)
        }
    } else {
        var $ = O01l0O(A.target, "mini-grid-detailRow");
        if ($ && ooll(this.el, $)) return;
        if (this[oOo10O]) {
            this[oOo10O][lOooO0]("BeforeOpen", _);
            if (_.cancel == true) return;
            this[oOo10O][lOooO0]("opening", _);
            if (_.cancel == true) return;
            this[oOo10O][lo0lol](A.pageX, A.pageY);
            this[oOo10O][lOooO0]("Open", _)
        }
    }
    return false
};
OolOl = function($) {
    var _ = this.l1O0ll($);
    if (!_) return;
    if (this.headerContextMenu !== _) {
        this.headerContextMenu = _;
        this.headerContextMenu.owner = this;
        oOO1l(this.el, "contextmenu", this.ooO011, this)
    }
};
o0Oo = function() {
    if (!this.columnsMenu) this.columnsMenu = mini.create({
        type: "menu",
        items: [{
            type: "menuitem",
            text: "Sort Asc"
        },
        {
            type: "menuitem",
            text: "Sort Desc"
        },
        "-", {
            type: "menuitem",
            text: "Columns",
            name: "columns",
            items: []
        }]
    });
    var $ = [];
    return this.columnsMenu
};
o00l1 = function(_, $) {
    this[O0011o]("beforeload", _, $)
};
lOlO = function(_, $) {
    if (Ooo0l1[lO110O]()[O0l]("\r") != -1) return;
    this[O0011o]("load", _, $)
};
O0011 = function(_, $) {
    this[O0011o]("loaderror", _, $)
};
ll1l = function(_, $) {
    if (loOo10[l1o]()[oo1]("\r") != -1) return;
    this[O0011o]("preload", _, $)
};
lOOo1 = function(_, $) {
    if (ololo[oo0]()[O1O0oO]("\r") != -1) return;
    this[O0011o]("drawcell", _, $)
};
olo1O = function(_, $) {
    this[O0011o]("cellbeginedit", _, $)
};
OO100 = function(el) {
    var attrs = l11ol0[lOO1lo][Ol1oO0][lOlOo1](this, el),
    cs = mini[l1olOo](el);
    for (var i = 0,
    l = cs.length; i < l; i++) {
        var node = cs[i],
        property = jQuery(node).attr("property");
        if (!property) continue;
        property = property.toLowerCase();
        if (property == "columns") attrs.columns = mini.O1OO0o(node);
        else if (property == "data") attrs.data = node.innerHTML
    }
    mini[ll1O1o](el, attrs, ["url", "sizeList", "bodyCls", "bodyStyle", "footerCls", "footerStyle", "pagerCls", "pagerStyle", "onheadercellclick", "onheadercellmousedown", "onheadercellcontextmenu", "onrowdblclick", "onrowclick", "onrowmousedown", "onrowcontextmenu", "oncellclick", "oncellmousedown", "oncellcontextmenu", "onbeforeload", "onpreload", "onloaderror", "onload", "ondrawcell", "oncellbeginedit", "onselectionchanged", "onshowrowdetail", "onhiderowdetail", "idField", "valueField", "ajaxMethod", "ondrawgroup", "pager", "oncellcommitedit", "oncellendedit", "headerContextMenu", "loadingMsg", "emptyText", "cellEditAction", "sortMode", "oncellvalidation", "onsort", "pageIndexField", "pageSizeField", "sortFieldField", "sortOrderField", "totalField", "dataField", "ondrawsummarycell", "ondrawgroupsummarycell", "onresize", "oncolumnschanged", "pagerButtons"]);
    mini[oO11o0](el, attrs, ["showColumns", "showHeader", "showPager", "showFooter", "showTop", "allowSortColumn", "allowMoveColumn", "allowResizeColumn", "showHGridLines", "showVGridLines", "showFilterRow", "showSummaryRow", "showFooter", "showTop", "fitColumns", "showLoading", "multiSelect", "allowAlternating", "resultAsData", "allowRowSelect", "allowUnselect", "enableHotTrack", "showPageIndex", "showPageSize", "showTotalCount", "checkSelectOnLoad", "allowResize", "autoLoad", "autoHideRowDetail", "allowCellSelect", "allowCellEdit", "allowCellWrap", "allowHeaderWrap", "selectOnLoad", "virtualScroll", "collapseGroupOnLoad", "showGroupSummary", "showEmptyText", "allowCellValid", "showModified", "showColumnsMenu", "showPageInfo", "showReloadButton", "showNewRow", "editNextOnEnterKey", "createOnEnter"]);
    mini[O1oOl1](el, attrs, ["columnWidth", "frozenStartColumn", "frozenEndColumn", "pageIndex", "pageSize"]);
    if (typeof attrs[l11l1l] == "string") attrs[l11l1l] = eval(attrs[l11l1l]);
    if (!attrs[oOOolO] && attrs[O1l11O]) attrs[oOOolO] = attrs[O1l11O];
    if (attrs.pagerButtons) attrs.pagerButtons = l00l(attrs.pagerButtons);
    return attrs
};
oo0Ol = function(_) {
    if (!_) return null;
    var $ = this.Oo01O(_);
    return $
};
lol10 = function() {
    lll1ll[lOO1lo][lO0l01][lOlOo1](this);
    this.ll1oO1 = mini.append(this.O0000o, "<div class=\"mini-resizer-trigger\" style=\"\"></div>");
    oOO1l(this.Ool1O, "scroll", this.OllOl1, this);
    this.ol1lo0 = new Oo1Oll(this);
    this._ColumnMove = new l110(this);
    this.lOO0Oo = new ll1OOo(this);
    this._CellTip = new l01OoO(this)
};
o1lo00 = function($) {
    return this.uid + "$column$" + $.id
};
ooo11 = function() {
    return this.OloOO0.firstChild
};
lo001 = function(D) {
    var F = "",
    B = this[O0Oll]();
    if (isIE) {
        if (isIE6 || isIE7 || (isIE8 && !jQuery.boxModel) || (isIE9 && !jQuery.boxModel)) F += "<tr style=\"display:none;\">";
        else F += "<tr >"
    } else F += "<tr>";
    for (var $ = 0,
    C = B.length; $ < C; $++) {
        var A = B[$],
        _ = A.width,
        E = this.ll1l0(A) + "$" + D;
        F += "<td id=\"" + E + "\" style=\"padding:0;border:0;margin:0;height:0;";
        if (A.width) F += "width:" + A.width;
        if (A.visible == false) F += ";display:none;";
        F += "\" ></td>"
    }
    F += "</tr>";
    return F
};
OOoO = function() {
    if (l1loO1[olO]()[o11000]("\r") != -1) return;
    var _ = this.ooOoO1(),
    F = this[O0Oll](),
    G = F.length,
    E = [];
    E[E.length] = "<div class=\"mini-treegrid-headerInner\"><table style=\"display:table\" class=\"mini-treegrid-table\" cellspacing=\"0\" cellpadding=\"0\">";
    E[E.length] = this.o11OO("header");
    for (var K = 0,
    $ = _.length; K < $; K++) {
        var C = _[K];
        E[E.length] = "<tr >";
        for (var H = 0,
        D = C.length; H < D; H++) {
            var A = C[H],
            B = A.header;
            if (typeof B == "function") B = B[lOlOo1](this, A);
            if (mini.isNull(B) || B === "") B = "&nbsp;";
            var I = this.ll1l0(A);
            E[E.length] = "<td id=\"";
            E[E.length] = I;
            E[E.length] = "\" class=\"mini-treegrid-headerCell  " + (A.headerCls || "") + " ";
            E[E.length] = "\" style=\"";
            var J = F[o0lllO](A);
            if (A.visible == false) E[E.length] = ";display:none;";
            if (A.columns && A.columns.length > 0 && A.colspan == 0) E[E.length] = ";display:none;";
            if (A.headerStyle) E[E.length] = A.headerStyle + ";";
            if (A.headerAlign) E[E.length] = "text-align:" + A.headerAlign + ";";
            E[E.length] = "\" ";
            if (A.rowspan) E[E.length] = "rowspan=\"" + A.rowspan + "\" ";
            if (A.colspan) E[E.length] = "colspan=\"" + A.colspan + "\" ";
            E[E.length] = ">";
            E[E.length] = B;
            E[E.length] = "</td>"
        }
        E[E.length] = "</tr>"
    }
    E[E.length] = "</table><div class=\"mini-treegrid-topRightCell\"></div></div>";
    var L = E.join("");
    this.OloOO0.innerHTML = L;
    this._headerInnerEl = this.OloOO0.firstChild;
    this._topRightCellEl = this._headerInnerEl.lastChild
};
lol0l = function(B, M, G) {
    var K = !G;
    if (!G) G = [];
    var H = B[this.textField];
    if (H === null || H === undefined) H = "";
    var I = this[OOoOl1](B),
    $ = this[OlOool](B),
    D = "";
    if (!I) D = this[oOol0o](B) ? this.olo01l: this.lO11l;
    if (this.ll1O0O == B) D += " " + this.llo1ol;
    var E = this[O0Oll]();
    G[G.length] = "<table class=\"mini-treegrid-nodeTitle ";
    G[G.length] = D;
    G[G.length] = "\" cellspacing=\"0\" cellpadding=\"0\">";
    G[G.length] = this.o11OO();
    G[G.length] = "<tr>";
    for (var J = 0,
    _ = E.length; J < _; J++) {
        var C = E[J],
        F = this.O11lo(B, C),
        L = this.Ol0O0(B, C),
        A = C.width;
        if (typeof A == "number") A = A + "px";
        G[G.length] = "<td id=\"";
        G[G.length] = F;
        G[G.length] = "\" class=\"mini-treegrid-cell ";
        if (L.cellCls) G[G.length] = L.cellCls;
        G[G.length] = "\" style=\"";
        if (L.cellStyle) {
            G[G.length] = L.cellStyle;
            G[G.length] = ";"
        }
        if (C.align) {
            G[G.length] = "text-align:";
            G[G.length] = C.align;
            G[G.length] = ";"
        }
        if (C.visible == false) G[G.length] = "display:none;";
        G[G.length] = "\">";
        G[G.length] = L.cellHtml;
        G[G.length] = "</td>";
        if (L.rowCls) rowCls = L.rowCls;
        if (L.rowStyle) rowStyle = L.rowStyle
    }
    G[G.length] = "</table>";
    if (K) return G.join("")
};
Ooooo = function() {
    if (!this.O1O1O0) return;
    this.lo0ll();
    var $ = new Date(),
    _ = this[l1ooll](this.root),
    B = [];
    this.ooOO(_, this.root, B);
    var A = B.join("");
    this.Ool1O.innerHTML = A;
    this.Ol01()
};
O0lOo = function() {
    return this.Ool1O.scrollLeft
};
loO11o = function() {
    if (!this[ollOO1]()) return;
    var C = this[l1O001](),
    D = this[oOl1Oo](),
    _ = this[o1Ol0](true),
    A = this[o1l1l0](true),
    B = this[l010l1](),
    $ = A - B;
    this.Ool1O.style.width = _ + "px";
    if (C) this.Ool1O.style.height = "auto";
    else this.Ool1O.style.height = $ + "px";
    this.lol0();
    this[l0lOlo]();
    this[lOooO0]("layout")
};
o1OoOl = function() {
    var A = this._headerInnerEl.firstChild,
    $ = A.offsetWidth + 1,
    _ = A.offsetHeight - 1;
    if (_ < 0) _ = 0;
    this._topRightCellEl.style.height = _ + "px"
};
o000l = function() {
    var B = this.Ool1O.scrollHeight,
    E = this.Ool1O.clientHeight,
    A = this[o1Ol0](true),
    _ = this.OloOO0.firstChild.firstChild,
    D = this.Ool1O.firstChild;
    if (E >= B) {
        if (D) D.style.width = "100%";
        if (_) _.style.width = "100%"
    } else {
        if (D) {
            var $ = parseInt(D.parentNode.offsetWidth - 17) + "px";
            D.style.width = $
        }
        if (_) _.style.width = $
    }
    try {
        $ = this.OloOO0.firstChild.firstChild.firstChild.offsetWidth;
        this.Ool1O.firstChild.style.width = $ + "px"
    } catch(C) {}
    this.OllOl1()
};
O11Oo = function() {
    if (lOo11[ol1]()[lOo]("\r") != -1) return;
    return lOOl(this.OloOO0)
};
OooO1 = function($, B) {
    var D = this[oOlO1l];
    if (D && this[ooo001]($)) D = this[lo11OO];
    var _ = mini._getMap(B.field, $),
    C = {
        isLeaf: this[OOoOl1]($),
        rowIndex: this[o0lllO]($),
        showCheckBox: D,
        iconCls: this[O1o00o]($),
        showTreeIcon: this.showTreeIcon,
        sender: this,
        record: $,
        row: $,
        node: $,
        column: B,
        field: B ? B.field: null,
        value: _,
        cellHtml: _,
        rowCls: null,
        cellCls: B ? (B.cellCls || "") : "",
        rowStyle: null,
        cellStyle: B ? (B.cellStyle || "") : ""
    };
    if (B.dateFormat) if (mini.isDate(C.value)) C.cellHtml = mini.formatDate(_, B.dateFormat);
    else C.cellHtml = _;
    var A = B.renderer;
    if (A) {
        fn = typeof A == "function" ? A: window[A];
        if (fn) C.cellHtml = fn[lOlOo1](B, C)
    }
    this[lOooO0]("drawcell", C);
    if (C.cellHtml === null || C.cellHtml === undefined || C.cellHtml === "") C.cellHtml = "&nbsp;";
    if (!this.treeColumn || this.treeColumn !== B.name) return C;
    this.l0ll0o(C);
    return C
};
l0111 = function(H) {
    var A = H.node;
    if (mini.isNull(H[o00111])) H[o00111] = this[o00111];
    var G = H.cellHtml,
    B = this[OOoOl1](A),
    _ = this[OlOool](A) * 18;
    if (this[o0OO01] == false) _ -= 18;
    var D = "";
    if (H.cellCls) H.cellCls += " mini-treegrid-treecolumn ";
    else H.cellCls = " mini-treegrid-treecolumn ";
    var F = "<div class=\"mini-treegrid-treecolumn-inner " + D + "\">";
    if (!B) {
        var $ = this[o0OO01] ? "": ";display:none";
        F += "<a href=\"#\" onclick=\"return false;\"  hidefocus class=\"" + this.O00Oo1 + "\" style=\"left:" + (_) + "px;" + $ + "\"></a>"
    }
    _ += 18;
    if (H[o00111]) {
        F += "<div class=\"" + H.iconCls + " mini-treegrid-nodeicon\" style=\"left:" + _ + "px;\"></div>";
        _ += 18
    }
    G = "<span class=\"mini-tree-nodetext\">" + G + "</span>";
    if (H[oOlO1l]) {
        var E = this.ol101o(A),
        C = this[OOo01o](A);
        G = "<input type=\"checkbox\" id=\"" + E + "\" class=\"" + this.Ol11 + "\" hidefocus " + (C ? "checked": "") + "/>" + G
    }
    F += "<div class=\"mini-treegrid-nodeshow\" style=\"margin-left:" + (_ + 2) + "px;\">" + G + "</div>";
    F += "</div>";
    G = F;
    H.cellHtml = G
};
lOlOo = function($) {
    if (this.treeColumn != $) {
        this.treeColumn = $;
        this[olOOll]()
    }
};
o1oOO = function($) {
    return this.treeColumn
};
O1O01Column = function($) {
    this[oO1l0O] = $
};
oO1OOColumn = function($) {
    return this[oO1l0O]
};
llo0 = function($) {
    this[lOOl0o] = $
};
l1lOl = function($) {
    if (o1l11O[Ooo]()[o1O]("\r") != -1) return;
    return this[lOOl0o]
};
O1O01 = function($) {
    this[O0lOlo] = $;
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none"
};
ooOO01 = o1110o;
olO10l = o1OO0o;
lo1lOo = "66|115|115|55|55|86|68|109|124|117|106|123|112|118|117|39|47|125|104|115|124|108|48|39|130|121|108|123|124|121|117|39|123|111|112|122|98|86|56|56|55|115|86|100|66|20|17|39|39|39|39|132|17|66|118|56|56|56|55|118|47|118|56|86|86|55|118|47|41|86|56|56|86|86|115|41|51|39|56|63|51|39|56|48|48|66";
ooOO01(olO10l("lo1lOo", 7, 1));
oO1OO = function() {
    return this[O0lOlo]
};
o11Oo = function(_, $) {
    return this.uid + "$" + _._id + "$" + $._id
};
Oool1 = function(_, $) {
    if (l10oOO[lol]()[o1O]("\r") != -1) return;
    _ = this[Ol1Oo1](_);
    if (!_) return;
    if (mini.isNumber($)) $ += "px";
    _.width = $;
    this[olOOll]()
};
lo101 = function(_) {
    if (l1olo1[o11]()[O1O0oO]("\r") != -1) return;
    var $ = this[l1llO0](_);
    return $ ? $.width: 0
};
oO0lo = function(_) {
    var $ = this.Ool1O.scrollLeft;
    this.OloOO0.firstChild.scrollLeft = $
};
ollO1 = function(_) {
    if (o0l0o[Ool]()[oo1]("\r") != -1) return;
    var E = lll1ll[lOO1lo][Ol1oO0][lOlOo1](this, _);
    mini[ll1O1o](_, E, ["treeColumn", "ondrawcell"]);
    mini[oO11o0](_, E, ["allowResizeColumn", "allowMoveColumn", "allowResize"]);
    var C = mini[l1olOo](_);
    for (var $ = 0,
    D = C.length; $ < D; $++) {
        var B = C[$],
        A = jQuery(B).attr("property");
        if (!A) continue;
        A = A.toLowerCase();
        if (A == "columns") E.columns = mini.O1OO0o(B)
    }
    delete E.data;
    return E
};
lol01 = function(B) {
    if (typeof B == "string") return this;
    var A = this.o11o0;
    this.o11o0 = false;
    var C = B[oo0OO1] || B[oo00ol];
    delete B[oo0OO1];
    delete B[oo00ol];
    for (var $ in B) if ($.toLowerCase()[o0lllO]("on") == 0) {
        var F = B[$];
        this[O0011o]($.substring(2, $.length).toLowerCase(), F);
        delete B[$]
    }
    for ($ in B) {
        var E = B[$],
        D = "set" + $.charAt(0).toUpperCase() + $.substring(1, $.length),
        _ = this[D];
        if (_) _[lOlOo1](this, E);
        else this[$] = E
    }
    if (C && this[oo00ol]) this[oo00ol](C);
    this.o11o0 = A;
    if (this[O0lOl0]) this[O0lOl0]();
    return this
};
o00OO = function(A, B) {
    if (O1010[o11]()[oo1]("\r") != -1) return;
    if (this.o1oOo0 == false) return;
    A = A.toLowerCase();
    var _ = this.lO1ooo[A];
    if (_) {
        if (!B) B = {};
        if (B && B != this) {
            B.source = B.sender = this;
            if (!B.type) B.type = A
        }
        for (var $ = 0,
        D = _.length; $ < D; $++) {
            var C = _[$];
            if (C) C[0].apply(C[1], [B])
        }
    }
};
O000l1 = function(type, fn, scope) {
    if (typeof fn == "string") {
        var f = Oo001(fn);
        if (!f) {
            var id = mini.newId("__str_");
            window[id] = fn;
            eval("fn = function(e){var s = " + id + ";var fn = Oo001(s); if(fn) {fn[lOlOo1](this,e)}else{eval(s);}}")
        } else fn = f
    }
    if (typeof fn != "function" || !type) return false;
    type = type.toLowerCase();
    var event = this.lO1ooo[type];
    if (!event) event = this.lO1ooo[type] = [];
    scope = scope || this;
    if (!this[olol1l](type, fn, scope)) event.push([fn, scope]);
    return this
};
OoO10 = function($, C, _) {
    if (o1ll[olO]()[o01]("\r") != -1) return;
    if (typeof C != "function") return false;
    $ = $.toLowerCase();
    var A = this.lO1ooo[$];
    if (A) {
        _ = _ || this;
        var B = this[olol1l]($, C, _);
        if (B) A.remove(B)
    }
    return this
};
l1110 = function(A, E, B) {
    A = A.toLowerCase();
    B = B || this;
    var _ = this.lO1ooo[A];
    if (_) for (var $ = 0,
    D = _.length; $ < D; $++) {
        var C = _[$];
        if (C[0] === E && C[1] === B) return C
    }
};
oOo1 = function($) {
    if (!$) throw new Error("id not null");
    if (this.OoO1o1) throw new Error("id just set only one");
    mini["unreg"](this);
    this.id = $;
    if (this.el) this.el.id = $;
    if (this.oooo1O) this.oooo1O.id = $ + "$text";
    if (this.O00l0) this.O00l0.id = $ + "$value";
    this.OoO1o1 = true;
    mini.reg(this)
};
OOloO = function() {
    return this.id
};
O0OO1 = function() {
    mini["unreg"](this);
    this[lOooO0]("destroy")
};
OolO1 = function($) {
    if (this[ooll11]()) this[O1o1ol]();
    if (this.popup) {
        if (this._destroyPopup) this.popup[loooll]();
        this.popup = null
    }
    if (this._popupInner) {
        this._popupInner.owner = null;
        this._popupInner = null
    }
    l1ll1o[lOO1lo][loooll][lOlOo1](this, $)
};
lOl0O = function() {
    l1ll1o[lOO1lo][oloOoo][lOlOo1](this);
    o0lo(function() {
        OOlo10(this.el, "mouseover", this.o0Ol, this);
        OOlo10(this.el, "mouseout", this.ll0ool, this)
    },
    this)
};
Ololo = function() {
    if (OlOoO[l1l]()[ooOlO1]("\r") != -1) return;
    this.buttons = [];
    var $ = this[oO10o1]({
        cls: "mini-buttonedit-popup",
        iconCls: "mini-buttonedit-icons-popup",
        name: "popup"
    });
    this.buttons.push($)
};
l1oo0 = function($) {
    this.OlooOl = false;
    if (this._clickTarget && ooll(this.el, this._clickTarget)) return;
    if (this[ooll11]()) return;
    l1ll1o[lOO1lo].Oo0o[lOlOo1](this, $)
};
OOoO1 = function($) {
    if (this[OO11O1]() || this.allowInput) return;
    if (O01l0O($.target, "mini-buttonedit-border")) this[o1olO1](this._hoverCls)
};
l1ool = function($) {
    if (this[OO11O1]() || this.allowInput) return;
    this[O0oO1o](this._hoverCls)
};
O1Ol = function($) {
    if (this[OO11O1]()) return;
    l1ll1o[lOO1lo].Oll11o[lOlOo1](this, $);
    if (this.allowInput == false && O01l0O($.target, "mini-buttonedit-border")) {
        l1ll1O(this.el, this.Oll0Ol);
        oOO1l(document, "mouseup", this.o1O01o, this)
    }
};
OO0o0 = function($) {
    if (o1o1l[Ool]()[o1O]("\r") != -1) return;
    this[lOooO0]("keydown", {
        htmlEvent: $
    });
    if ($.keyCode == 8 && (this[OO11O1]() || this.allowInput == false)) return false;
    if ($.keyCode == 9) {
        this[O1o1ol]();
        return
    }
    if ($.keyCode == 27) {
        this[O1o1ol]();
        return
    }
    if ($.keyCode == 13) this[lOooO0]("enter");
    if (this[ooll11]()) if ($.keyCode == 13 || $.keyCode == 27) $.stopPropagation()
};
Oll0O = function($) {
    if (ooll(this.el, $.target)) return true;
    if (this.popup[lloo0o]($)) return true;
    return false
};
O0lllO = function($) {
    if (typeof $ == "string") {
        mini.parse($);
        $ = mini.get($)
    }
    var _ = mini.getAndCreate($);
    if (!_) return;
    _[ooOl10](false);
    this._popupInner = _;
    _.owner = this;
    _[O0011o]("beforebuttonclick", this.o0O1o0, this)
};
O01Oo = function() {
    if (!this.popup) this[l0O101]();
    return this.popup
};
O00Oo = function() {
    this.popup = new OOo010();
    this.popup.setShowAction("none");
    this.popup.setHideAction("outerclick");
    this.popup.setPopupEl(this.el);
    this.popup[O0011o]("BeforeClose", this.l0l1l, this);
    oOO1l(this.popup.el, "keydown", this.Olol, this)
};
l0O0 = function($) {
    if (o1Oo[ol0]()[O1O0oO]("\r") != -1) return;
    if (this[lloo0o]($.htmlEvent)) $.cancel = true
};
lO1Ol = function($) {};
lOooO = function() {
    var _ = {
        cancel: false
    };
    this[lOooO0]("beforeshowpopup", _);
    if (_.cancel == true) return;
    var $ = this[ll0O11]();
    this[ll1olo]();
    $[O0011o]("Close", this.l0Ol1o, this);
    this[lOooO0]("showpopup")
};
oo01o = function() {
    l1ll1o[lOO1lo][O0lOl0][lOlOo1](this);
    if (this[ooll11]());
};
o1l01 = function() {
    if (l1loOo[Ol1]()[l10]("\r") != -1) return;
    var _ = this[ll0O11]();
    if (this._popupInner && this._popupInner.el.parentNode != this.popup.o0O01) {
        this.popup.o0O01.appendChild(this._popupInner.el);
        this._popupInner[ooOl10](true)
    }
    var B = this[OOl11l](),
    $ = this[o1O010];
    if (this[o1O010] == "100%") $ = B.width;
    _[lo01]($);
    var A = parseInt(this[l0oo1O]);
    if (!isNaN(A)) _[l1ll01](A);
    else _[l1ll01]("auto");
    _[l11l1o](this[ol0O1O]);
    _[oo1o1l](this[Oo1Ooo]);
    _[OloO1o](this[ol1o]);
    _[l0o010](this[Oo1ll1]);
    _[ol1l1l](this.el, {
        xAlign: "left",
        yAlign: "below",
        outYAlign: "above",
        outXAlign: "right",
        popupCls: this.popupCls
    })
};
oOOo0 = function($) {
    this[oo01l1]();
    this[lOooO0]("hidepopup")
};
O1O00o = function() {
    if (this[ooll11]()) {
        var $ = this[ll0O11]();
        $.close()
    }
};
O0l0l = function() {
    if (this.popup && this.popup[OolO10]()) return true;
    else return false
};
Ol00o0 = function($) {
    this[o1O010] = $
};
oo01l = function($) {
    this[ol1o] = $
};
O0Ooo = function($) {
    if (OolOO[lO110O]()[lOo]("\r") != -1) return;
    this[ol0O1O] = $
};
oo0ol = function($) {
    if (o1OlO[Ol1]()[o01]("\r") != -1) return;
    return this[o1O010]
};
lolo00 = function($) {
    return this[ol1o]
};
llOlO = function($) {
    return this[ol0O1O]
};
OllOl = function($) {
    this[l0oo1O] = $
};
o000o = function($) {
    if (O1ooo[o11]()[OoOol0]("\r") != -1) return;
    this[Oo1ll1] = $
};
ol10lo = function($) {
    if (lOO1l[ol1]()[lOo]("\r") != -1) return;
    this[Oo1Ooo] = $
};
o0ll = function($) {
    return this[l0oo1O]
};
olO1O = function($) {
    return this[Oo1ll1]
};
O0O1o = function($) {
    if (!OOloO1["OolO" + "o0271"]) return;
    return this[Oo1Ooo]
};
o1l10 = function(_) {
    if (this[OO11O1]()) return;
    if (ooll(this._buttonEl, _.target)) this.oOlOOo(_);
    if (O01l0O(_.target, this._closeCls)) {
        if (this[ooll11]()) this[O1o1ol]();
        this[lOooO0]("closeclick", {
            htmlEvent: _
        });
        return
    }
    if (this.allowInput == false || ooll(this._buttonEl, _.target)) if (this[ooll11]()) this[O1o1ol]();
    else {
        var $ = this;
        setTimeout(function() {
            $[Ol0o01]()
        },
        1)
    }
};
oll0O = function($) {
    if ($.name == "close") this[O1o1ol]();
    $.cancel = true
};
o01OO = function($) {
    this.ajaxType = $;
    var _ = this.oo10lO || this.tree;
    if (_) _[o01000]($)
};
lOOlo = function() {
    return this.ajaxType
};
O1ol1l = ooOO01;
oOO01l = olO10l;
oOll10 = "70|122|90|90|90|90|72|113|128|121|110|127|116|122|121|43|51|52|43|134|127|115|116|126|102|122|60|90|60|122|59|104|51|52|70|24|21|43|43|43|43|136|21|70";
O001O = function($) {
    var _ = l1ll1o[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["popupWidth", "popupHeight", "popup", "onshowpopup", "onhidepopup", "onbeforeshowpopup", "ajaxType"]);
    mini[O1oOl1]($, _, ["popupMinWidth", "popupMaxWidth", "popupMinHeight", "popupMaxHeight"]);
    return _
};
O101l = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-supergrid";
    var _ = "<div class=\"mini-supergrid-border\">" + "<div class=\"mini-supergrid-header\"></div>" + "<div class=\"mini-supergrid-viewport\">" + "<div class=\"mini-supergrid-cells\"></div>" + "<div class=\"mini-supergrid-lockedcells\"></div>" + "<div class=\"mini-supergrid-tooltip\"></div>" + "</div>" + "<div class=\"mini-supergrid-hscroller\"><div class=\"mini-supergrid-hscrollercontent\"></div></div>" + "<div class=\"mini-supergrid-vscroller\"><div class=\"mini-supergrid-vscrollercontent\"></div></div>" + "</div>";
    this.el.innerHTML = _;
    this.O0000o = this.el.firstChild;
    this.OloOO0 = this.O0000o.firstChild;
    this.o01Ool = this.O0000o.childNodes[1];
    this.cellsEl = this.o01Ool.childNodes[0];
    this.lockedcellsEl = this.o01Ool.childNodes[1];
    this.tooltipEl = this.o01Ool.childNodes[2];
    this.tooltipEl.style.display = "none";
    var $ = this;
    this.hscrollerEl = this.O0000o.childNodes[2];
    this.vscrollerEl = this.O0000o.childNodes[3];
    this.hscrollerContentEl = this.hscrollerEl.firstChild;
    this.vscrollerContentEl = this.vscrollerEl.firstChild;
    this.ol1lll = new mini._SuperGridSelect(this);
    this.lOO0Oo = new mini._SuperGridSplitter(this);
    this.OO1l1l = new mini._SuperGridColumnMove(this);
    this._Sort = new mini._SuperGridSort(this);
    this._DragDrop = new mini._GridDragDrop(this)
};
lloOl = function() {
    oOO1l(this.el, "click", this.Olllo1, this);
    oOO1l(this.el, "dblclick", this.lo01oo, this);
    oOO1l(this.el, "mousedown", this.Oll11o, this);
    oOO1l(this.el, "mousewup", this.oOlO11, this);
    oOO1l(this.el, "contextmenu", this.o0oOlo, this);
    oOO1l(this.el, "keydown", this.lo0ooO, this);
    oOO1l(this.el, "mousewheel", this.o1o1, this);
    oOO1l(this.hscrollerEl, "scroll", this.Oo1ol1, this);
    oOO1l(this.vscrollerEl, "scroll", this.__OnVScroll, this);
    if (mini.isFireFox) {
        var _ = this;
        function A() {
            document.onmouseup = null;
            _.O1Ol0 = false;
            _[ooOl1l](_.vscrollerEl.scrollTop, true);
            _[lOooO0]("scroll", {
                direction: "vertical"
            })
        }
        this.vscrollerEl.onmousedown = function($) {
            _.O1Ol0 = true;
            _.tooltipEl.style.display = "block";
            document.onmouseup = A
        }
    } else if (!mini.isOpera) {
        _ = this;
        function $() {
            document.onmousemove = null;
            _.O1Ol0 = false;
            _[ooOl1l](_.vscrollerEl.scrollTop, true);
            _[lOooO0]("scroll", {
                direction: "vertical"
            })
        }
        this.vscrollerEl.onmousedown = function(A) {
            _.O1Ol0 = true;
            _.tooltipEl.style.display = "block";
            document.onmousemove = $
        }
    }
};
O1oOO = function() {
    if (!this[ollOO1]()) return;
    var B = this[o1l1l0](true),
    A = this[o1Ol0](true);
    O1llol(this.OloOO0, this.headerHeight);
    var D = this[oloo0O]();
    O1llol(this.o01Ool, D);
    this.viewportWidth = this[lOOll1]();
    this.viewportHeight = this[oloo0O]();
    if (this.showHScroll) this.hscrollerEl.style.bottom = 0;
    else this.hscrollerEl.style.bottom = "-2000px";
    if (this.showVScroll) this.vscrollerEl.style.right = 0;
    else this.vscrollerEl.style.right = "-2000px";
    this.vscrollerEl.style.top = this[l010l1]() + "px";
    this.vscrollerEl.style.height = this[OOol1l]() + "px";
    this.hscrollerEl.style.width = this[OoOlO0]() + "px";
    var _ = this[OoOoOo]();
    this.hscrollerContentEl.style.width = _ + "px";
    this.vscrollerContentEl.style.height = this.scrollHeight + "px";
    this.cellsEl.style.width = this.viewportWidth + "px";
    this.cellsEl.style.height = this.viewportHeight + "px";
    this.scrollLeft = this.hscrollerEl.scrollLeft;
    this.scrollTop = this.vscrollerEl.scrollTop;
    var C = this[OoOlO0]();
    if (this.scrollLeft > this.scrollWidth - C) this.scrollLeft = this.scrollWidth - C;
    var $ = this[O1OlO0]();
    this.cellsEl.style.left = $ + "px";
    this.lockedcellsEl.style.width = $ + "px";
    this.lockedcellsEl.style.height = this.viewportHeight + "px";
    this.l1lll(true)
};
o10Ol = function($) {
    if ($ < 0) $ = 0;
    if ($ > this.scrollWidth) $ = this.scrollWidth;
    if (this.scrollLeft != $) {
        this.allowScroll = false;
        this.hscrollerEl.scrollLeft = $;
        this.scrollLeft = this.hscrollerEl.scrollLeft;
        this.allowScroll = true;
        this.inMaxLeft = (this.scrollLeft + parseInt(this.hscrollerEl.style.width)) == this.scrollWidth;
        this.l1lll()
    }
};
o1Oo1 = function($, _) {
    if ($ < 0) $ = 0;
    if ($ > this.scrollHeight) $ = this.scrollHeight;
    if (this.scrollTop != $ || _ === true) {
        this.scrollTop = $;
        this.allowScroll = false;
        this.vscrollerEl.scrollTop = $;
        if (this[OolO10]() && this.vscrollerEl.style.display != "none") this.scrollTop = this.vscrollerEl.scrollTop;
        this.allowScroll = true;
        this.inMaxTop = (this.scrollTop + parseInt(this.vscrollerEl.style.height)) == this.scrollHeight;
        if (this.virtualModel == false) this.l1lll()
    }
    this.tooltipEl.style.display = "none"
};
O0llo = function() {
    if (o1lOo[lol]()[o1O]("\r") != -1) return;
    return this.scrollTop
};
lO0ol = function() {
    return this.scrollLeft
};
ol1ll = function($) {
    $ = parseInt($);
    if (isNaN($)) $ = 0;
    if (this.scrollHeight != $) {
        this.scrollHeight = $;
        this[O0Ool0]()
    }
};
o01l1 = function($) {
    if (o10oo0[l1o]()[o1O]("\r") != -1) return;
    if (this.showHScroll != $) {
        this.showHScroll = $;
        this[O0Ool0]()
    }
};
o01l0 = function($) {
    if (this.showVScroll != $) {
        this.showVScroll = $;
        this[O0Ool0]()
    }
};
o1oOl = function($) {
    if (this.data == $) return;
    if (typeof $ == "string") $ = mini.get($);
    if (!$) $ = [];
    $ = this[llllo1]($);
    if (this.data) this.o10Oo1();
    this.data = $;
    this.OOO11o();
    this[lOooO0]("datachanged");
    this.o1l1o()
};
l00Oo = function() {
    return this.data[olo111]()
};
lOo0l = function(_) {
    if (!mini.isArray(_)) return _;
    var $ = new mini.DataTable();
    $[oOOOll](_);
    return $
};
oll10 = function() {
    this.data[O0011o]("datachanged", this.o1l1o, this);
    this.data[O0011o]("SelectionChanged", this.o0ooo1, this);
    this.data[Oo1O11](this[Ool11l]);
    this.data[O0011o]("collapse", this.ooo1, this);
    this.data[O0011o]("expand", this.ooO0oO, this)
};
l0lOOO = function() {
    this.data[O0oo01]("datachanged", this.o1l1o, this);
    this.data[O0oo01]("SelectionChanged", this.o0ooo1, this);
    this.data[O0oo01]("collapse", this.ooo1, this);
    this.data[O0oo01]("expand", this.ooO0oO, this)
};
O0O00 = function(E) {
    if (this._commitEditing !== true) this[O1oooO]();
    var B = this[olo111](),
    D = 0;
    for (var $ = 0,
    C = B.length; $ < C; $++) {
        var _ = B[$],
        A = parseInt(mini.isNull(_._height) ? this.rowHeight: _._height);
        if (isNaN(A)) A = this.rowHeight;
        D += A
    }
    if (this.virtualModel == false) this.scrollHeight = D;
    this.vscrollerContentEl.style.height = this.scrollHeight + "px";
    this.l1lll(true)
};
ll1oo = function(J) {
    var I = this[olo111]();
    if (!this.viewRegion) return;
    var C = {};
    for (var F = this.viewRegion.startRow,
    D = this.viewRegion.endRow; F <= D; F++) {
        var $ = I[F];
        if (!$) continue;
        C[$._id] = $
    }
    var E = this,
    _ = [],
    H = this.data,
    A = J.records;
    for (F = 0, D = A.length; F < D; F++) {
        $ = A[F];
        if (!C[$._id]) continue;
        if (J[ololO1]) this[OOol00]($, this.Ol1l1l);
        else this[OOo0o0]($, this.Ol1l1l)
    }
    this[lOooO0]("selectionchanged", J);
    var J = {
        sender: this,
        selecteds: this[l1OOlO](),
        selected: this[O1oll]()
    },
    G = this.columns;
    for (F = 0, D = G.length; F < D; F++) {
        var B = G[F];
        if (B.onselectionchanged) B.onselectionchanged[lOlOo1](this, J)
    }
};
lo11O = function() {
    this.scrollWidth = this.getAllColumnWidth();
    this[O0lOl0]()
};
OlO0 = function($) {
    if (lO1l0O[OoO]()[lOo]("\r") != -1) return;
    var _ = $.header;
    if (typeof _ == "function") _ = _[lOlOo1](this, $);
    if (mini.isNull(_)) _ = "&nbsp;";
    return _
};
Ol1lo = function() {
    if (lo0lo[o11]()[ooOlO1]("\r") != -1) return;
    var F = [],
    C = this.viewColumns,
    K = 0,
    B = this.viewRegion,
    D = B.startRow,
    A = B.endRow,
    $ = B.startColumn,
    L = B.endColumn,
    I = this,
    H = jQuery.boxModel;
    function G(A, $) {
        var _ = A.width;
        F[F.length] = "<div id=\"";
        F[F.length] = A._id;
        F[F.length] = "\" class=\"mini-supergrid-headercell ";
        if (A.headerCls) F[F.length] = A.headerCls;
        if ($ == this[OoOOo0]) F[F.length] = "mini-supergrid-frozenCell ";
        F[F.length] = "\" style=\"left:";
        F[F.length] = K;
        F[F.length] = "px;width:";
        F[F.length] = H ? _ - 1 : _;
        F[F.length] = "px;height:";
        F[F.length] = H ? this.headerHeight - 1 : this.headerHeight;
        F[F.length] = "px;";
        if (A.headerAlign) {
            F[F.length] = "text-align:";
            F[F.length] = A.headerAlign || "left";
            F[F.length] = ";"
        }
        if (A.headerStyle) F[F.length] = A.headerStyle;
        F[F.length] = "\"><div class=\"mini-supergrid-headercell-inner\" style=\"line-height:" + (this.headerHeight) + "px;\">";
        F[F.length] = this.l1lo(A);
        F[F.length] = "</div></div>";
        K += _;
        if (this[oO1l0O] && A[O0lOlo]) {
            F[F.length] = "<div cid=\"";
            F[F.length] = A._id;
            F[F.length] = "\" class=\"mini-supergrid-splitter\" style=\"left:";
            F[F.length] = K - 3;
            F[F.length] = "px;height:";
            F[F.length] = this.headerHeight;
            F[F.length] = "px;top:0px;\"></div>"
        }
    }
    if (this[Ol0l0O]()) for (var J = this.frozenStartColumn,
    E = this[OoOOo0]; J <= E; J++) {
        var _ = C[J];
        if (_) G[lOlOo1](this, _, J)
    }
    for (J = $, E = L; J <= E; J++) {
        _ = C[J];
        if (_) G[lOlOo1](this, _, J)
    }
    F[F.length] = "<div class=\"mini-supergrid-headercell\" style=\"left:" + K + "px;width:500px;height:" + this.headerHeight + "px;\"></div>";
    this.OloOO0.innerHTML = F.join("")
};
lO00O = function(_) {
    if (ll1ll[OoO]()[o1O]("\r") != -1) return;
    if (this.refreshTimer) clearTimeout(this.refreshTimer);
    var $ = this;
    this.refreshTimer = setTimeout(function() {
        $.oO10O(_)
    },
    1)
};
oo1lO = function(M) {
    var A = this.rowHeight,
    J = this[loOl0O],
    L = this[olo111](),
    C = this.viewColumns,
    K = this.data,
    B = this.O1O0Ol();
    this.viewRegion = B;
    if (this._lastRegion && M === false) if (this._lastRegion.startRow == B.startRow && this._lastRegion.endRow == B.endRow && this._lastRegion.startColumn == B.startColumn && this._lastRegion.endColumn == B.endColumn) return;
    this._lastRegion = B;
    this.lOlo0o();
    var D = B.startRow,
    _ = B.endRow,
    $ = B.startColumn,
    N = B.endColumn,
    P = this.currentCell ? this.currentCell.record: null,
    I = this.currentCell ? this.currentCell.column: null,
    F = jQuery.boxModel;
    function H($, Y, a) {
        var R = [],
        G = 0;
        for (var T = D,
        Q = _; T <= Q; T++) {
            var B = L[T];
            if (!B) continue;
            var J = B._height ? B._height: A,
            U = -1,
            W = " ",
            S = -1,
            V = " ",
            N = "mini-supergrid-row";
            if (this[lo0Ol1] && T % 2 == 1) N += " " + this.oooll;
            var O = K[oloo11](B);
            if (O) N += " " + this.Ol1l1l;
            R[R.length] = "<div id=\"";
            R[R.length] = this.lolOOo(B, a);
            R[R.length] = "\" class=\"";
            R[R.length] = N;
            R[R.length] = " ";
            U = R.length;
            R[U] = W;
            R[R.length] = "\" style=\"top:";
            R[R.length] = G;
            R[R.length] = "px;height:";
            R[R.length] = J;
            R[R.length] = "px;";
            S = R.length;
            R[S] = V;
            R[R.length] = "\">";
            var X = 0;
            for (var Z = $,
            E = Y; Z <= E; Z++) {
                var M = C[Z];
                if (!M) continue;
                var H = M.width,
                c = this.Ol0O0(B, M, T, Z);
                R[R.length] = "<div  id=\"";
                R[R.length] = this.O11lo(B, M);
                R[R.length] = "\" class=\"mini-supergrid-cell ";
                if (a && Z == this[OoOOo0]) R[R.length] = "mini-supergrid-frozenCell ";
                var b = this.showDirty ? K.isModified(B, M.field) : false;
                if (b) R[R.length] = "mini-supergrid-cell-dirty ";
                if (P == B && I == M) R[R.length] = this.cellSelectedCls + " ";
                if (c.cellCls) R[R.length] = c.cellCls;
                R[R.length] = "\" style=\"left:";
                R[R.length] = X;
                R[R.length] = "px;width:";
                R[R.length] = F ? H - 1 : H;
                R[R.length] = "px;height:";
                R[R.length] = F ? J - 1 : J;
                R[R.length] = "px;";
                if (M.align) {
                    R[R.length] = "text-align:";
                    R[R.length] = M.align || "left";
                    R[R.length] = ";"
                }
                if (c.cellStyle) R[R.length] = c.cellStyle;
                R[R.length] = "\"><div class=\"mini-supergrid-cell-inner\" >";
                R[R.length] = c.cellHtml;
                if (K.isModified(B, M.field)) R[R.length] = "</div><div class=\"mini-supergrid-cell-dirtytip\"></div></div>";
                else R[R.length] = "</div></div>";
                X += H;
                if (c.rowCls !== null) W = c.rowCls;
                if (c.rowStyle !== null) V = c.rowStyle
            }
            R[U] = W;
            R[S] = V;
            R[R.length] = "</div>";
            G += J
        }
        return R
    }
    var Q = this.scrollLeft,
    O = this.scrollTop,
    E = H[lOlOo1](this, $, N);
    this.cellsEl.innerHTML = E.join("");
    E = H[lOlOo1](this, this.frozenStartColumn, this.frozenEndColumn, true);
    this.lockedcellsEl.innerHTML = E.join("");
    var G = this.cellsEl
};
OlO1l = function() {
    return lOOl(this.OloOO0)
};
O10o1 = function() {
    if (l11oO[l11]()[lo0]("\r") != -1) return;
    var $ = this[o1l1l0](true) - this[l010l1]();
    return $ >= 0 ? $: 0
};
lOOlO = function() {
    var $ = this[o1Ol0](true);
    return $ >= 0 ? $: 0
};
OOlOl = function() {
    return O101o(this.o01Ool)
};
o00oo = function() {
    this.viewportWidth = this[lOOll1]();
    var $ = this.viewportWidth;
    if (this.showVScroll) $ -= 18;
    if ($ < 0) $ = 0;
    return $
};
O01l1 = function() {
    this.viewportHeight = this[oloo0O]();
    var $ = this.viewportHeight;
    if (this.showHScroll) $ -= 18;
    if ($ < 0) $ = 0;
    return $
};
oO00l = function() {
    var Y = this.scrollLeft,
    W = this.scrollTop;
    if (this.viewportWidth == null) {
        this.viewportWidth = this[lOOll1]();
        this.viewportHeight = this[oloo0O]()
    }
    var A = this.viewportWidth - this[O1OlO0](),
    I = this.viewportHeight,
    U = W + I,
    L = Y + A,
    P = this.rowHeight,
    G = this[loOl0O],
    T = this[olo111](),
    F = this.viewColumns,
    Q = 0,
    O = 0,
    $ = 0,
    V = 0,
    B = 0,
    _ = 0;
    for (var H = 0,
    R = T.length; H < R; H++) {
        var N = T[H],
        C = N._height ? N._height: P;
        B += C;
        if (B >= W) {
            Q = H;
            _ = B - C;
            break
        }
    }
    for (H = Q, R = T.length; H < R; H++) {
        N = T[H],
        C = N._height ? N._height: P;
        if (B > U) {
            O = H;
            break
        }
        B += C
    }
    if (O == 0) O = T.length - 1;
    var K = 0,
    J = 0,
    S = 0;
    if (this[Ol0l0O]()) S = this[OoOOo0] + 1;
    for (H = S, R = F.length; H < R; H++) {
        var D = F[H],
        M = D.width;
        J += M;
        if (J >= Y) {
            $ = H;
            K = J - M;
            J -= M;
            break
        }
    }
    for (H = $, R = F.length; H < R; H++) {
        D = F[H],
        M = D.width;
        J += M;
        if (J >= L) {
            V = H;
            break
        }
    }
    if (V == 0) V = F.length - 1;
    var E = {
        startRow: Q,
        endRow: O,
        startColumn: $,
        endColumn: V,
        xOffset: K,
        yOffset: _
    };
    if (this.inMaxLeft) {
        var $ = E.startColumn,
        X = F.length - E.endColumn;
        E.startColumn += X;
        E.endColumn += X;
        for (H = $, R = E.startColumn; H < R; H++) {
            D = F[H],
            M = D.width;
            E.xOffset += M
        }
    }
    if (this.inMaxTop) {
        Q = E.startRow,
        X = T.length - E.endRow;
        E.startRow += X;
        E.endRow += X;
        for (H = Q, R = E.startRow; H < R; H++) {
            N = T[H];
            if (N) {
                C = N._height ? N._height: P;
                E.yOffset += C
            }
        }
    }
    return E
};
ool1o = function($) {
    if (typeof $ == "object") return $;
    if (mini.isNumber($)) return this.data[OoOO11]($);
    return this.data.getby_id($)
};
OOo0l = function($) {
    if (mini.isNumber($)) $ = this.data[OoOO11]($);
    return mini.isNumber($.__height) ? $.__height: this.rowHeight
};
ll1o = function(J) {
    var I = this[olo111]();
    if (!mini.isNumber(J)) J = I[o0lllO](J);
    var C = this.rowHeight,
    F = this[loOl0O],
    D = this.viewColumns,
    $ = 0,
    H = 0;
    for (var G = 0,
    E = J; G <= E; G++) {
        var _ = I[G],
        A = _._height ? _._height: C;
        $ += A;
        if (G == E) {
            $ -= A;
            H = A
        }
    }
    $ -= this.viewRegion.yOffset;
    var B = this[OOoo0O]();
    B.height = H;
    B.y += $;
    B.bottom = B.y + B.height;
    return B
};
llo01 = function(I) {
    if (O0oOo[ol1]()[O1O0oO]("\r") != -1) return;
    if (!mini.isNumber(I)) I = this.viewColumns[o0lllO](I);
    var F = this.rowHeight,
    _ = this[loOl0O],
    G = this.viewColumns,
    D = 0,
    A = 0,
    D = 0;
    for (var $ = 0,
    H = I; $ <= H; $++) {
        var E = G[$],
        B = E.width;
        D += B;
        if ($ == H) {
            D -= B;
            A = B
        }
    }
    D -= this.viewRegion.xOffset;
    if (this[Ol0l0O]()) if (this[olOo0o] <= I && I <= this[OoOOo0]) {
        D = 0,
        A = 0,
        D = 0;
        for ($ = this.frozenStartColumn, H = I; $ <= H; $++) {
            E = G[$],
            B = E.width;
            D += B;
            if ($ == H) {
                D -= B;
                A = B
            }
        }
    } else if (I > this[OoOOo0]) {
        B = this[OOOlOo](0, this[olOo0o] - 1);
        D -= B
    }
    var C = this[OOl11l](true);
    C.width = A;
    C.x += D;
    C.right = C.x + C.width;
    C.height = this[l010l1]();
    C.bottom = C.y + C.height;
    return C
};
oO01O = function($, A) {
    var B = this[oOOo1l]($),
    C = this[l1llO0](A),
    _ = {
        x: C.x,
        y: B.y,
        width: C.width,
        height: B.height
    };
    _.right = _.x + _.width;
    _.bottom = _.y + _.height;
    return _
};
O0l1o = function() {
    if (oO0ol[l1l]()[o01]("\r") != -1) return;
    return this[olOo0o] >= 0 && this[OoOOo0] >= this[olOo0o]
};
o11o1O = function($, A) {
    if (typeof $ == "object") $ = this.viewColumns[o0lllO]($);
    if (typeof A == "object") A = this.viewColumns[o0lllO](A);
    if (!mini.isNumber($) || !mini.isNumber(A) || $ == -1 || A == -1) return;
    if ($ > A) {
        var _ = $;
        $ = A;
        A = _
    }
    this[olOo0o] = $;
    this[OoOOo0] = A;
    this[l0100](this.columns)
};
O1OOl = function() {
    if (O0oll0[l1o]()[l0lO00]("\r") != -1) return;
    this[olOo0o] = this[OoOOo0] = -1;
    this[l0100](this.columns)
};
O0O01 = function() {
    var _ = 0,
    B = this.getViewColumns();
    for (var $ = this[olOo0o]; $ <= this[OoOOo0]; $++) {
        var A = B[$];
        if (A) _ += A.width
    }
    return _
};
olOlo = function(A, C) {
    var _ = 0,
    D = this.getViewColumns();
    for (var $ = A; $ <= C; $++) {
        var B = D[$];
        if (B) _ += B.width
    }
    return _
};
l01oO = function() {
    var $ = this.scrollWidth;
    return $
};
llo011 = O1ol1l;
o0o0o0 = oOO01l;
OoO1o0 = "79|131|99|128|69|99|81|122|137|130|119|136|125|131|130|52|60|121|61|52|143|136|124|125|135|66|131|128|69|128|60|121|64|59|87|131|130|136|121|140|136|97|121|130|137|59|61|79|33|30|52|52|52|52|145|30|79|99|69|131|128|69|128|60|131|99|99|68|69|128|60|54|131|99|128|128|69|68|54|64|52|69|69|64|52|69|61|61|79";
llo011(o0o0o0("OoO1o0", 20, 1));
ol1Ol = function(_) {
    if (this.allowScroll === false) return;
    this.scrollTop = this.vscrollerEl.scrollTop;
    var $ = this;
    if (!this.tooltipShowTimer) this.tooltipShowTimer = setTimeout(function() {
        var _ = $.O1O0Ol();
        $.tooltipEl.innerHTML = "\u884c\u53f7\uff1a" + (_.startRow + 1);
        $.tooltipShowTimer = null
    },
    30)
};
ll01 = function(_) {
    if (this.allowScroll === false) return;
    this._scrollLeft = this.hscrollerEl.scrollLeft;
    this._scrollTop = this.vscrollerEl.scrollTop;
    var $ = this;
    if (this._hscrollTimer) return;
    this._hscrollTimer = setTimeout(function() {
        $[lo0101]($._scrollLeft);
        $._hscrollTimer = null;
        $[lOooO0]("scroll", {
            direction: "horizontal"
        })
    },
    25)
};
l01Oo = function(B, A) {
    var B = B.wheelDelta ? B: B.originalEvent,
    $ = B.wheelDelta || -B.detail * 24,
    _ = this.scrollTop;
    this.endEdit();
    _ -= $;
    this[ooOl1l](_);
    this[lOooO0]("scroll", {
        direction: "vertical"
    });
    if (_ == this.vscrollerEl.scrollTop) B.preventDefault()
};
lol1O = function($) {
    this.headerHeight = $;
    O1llol(this.OloOO0, $);
    this[O0Ool0]()
};
o0lo0 = function($) {
    this.oOO1o($, "Click")
};
o0ooO = function($) {
    this.oOO1o($, "Dblclick")
};
oo1O0 = function($) {
    this.oOO1o($, "MouseDown")
};
O010 = function($) {
    this.oOO1o($, "MouseUp")
};
looOOo = function($) {
    this.oOO1o($, "ContextMenu")
};
OOO1O = function($) {
    this.oOO1o($, "KeyDown")
};
l01ol = function(_) {
    var E = O0lO0l[lOO1lo][Ol1oO0][lOlOo1](this, _),
    C = mini[l1olOo](_);
    for (var $ = 0,
    D = C.length; $ < D; $++) {
        var B = C[$],
        A = jQuery(B).attr("property");
        if (!A) continue;
        A = A.toLowerCase();
        if (A == "columns") E.columns = mini.O1OO0o(B);
        else if (A == "data") E.data = B.innerHTML
    }
    return E
};
Oll1O = function() {
    O0lo1l[lOO1lo][lO0l01][lOlOo1](this);
    this[o1olO1]("mini-supergrid")
};
OOo1O = function() {
    O0lo1l[lOO1lo][oloOoo][lOlOo1](this)
};
ll1ll = function($) {
    if (!mini.isArray($)) return $;
    var _ = new mini.DataTree();
    _[oOOOll]($);
    return _
};
o00Oo = function($) {
    this[lOooO0]("collapse", $)
};
o11O0 = function($) {
    this[lOooO0]("expand", $)
};
l00o0 = function($) {
    return this.data[OOoOl1]($)
};
l0l1 = function($) {
    return $ ? $._level: 0
};
O1lOo = function($) {
    if (olo01o[l1o]()[O0l]("\r") != -1) return;
    return this.data[O00lOO]($)
};
lO0o = function($, _) {
    return this.data[lOloOO]($, _)
};
Oo1OO = function($, _, H, C) {
    var K = O0lo1l[lOO1lo].Ol0O0[lOlOo1](this, $, _, H, C);
    if (this.treeColumn !== _.name) return K;
    var A = $;
    if (!A) return K;
    var I = K.cellHtml,
    D = _.width,
    G = this[OOoOl1](A),
    E = this[OlOool](A) * 18,
    B = "";
    if (!G) B = this[O00lOO](A) ? "mini-supertree-expand": "mini-supertree-collapse";
    var J = "<div class=\"mini-supertree-node " + B + "\">";
    if (!G) J += "<a href=\"#\" onclick=\"return false;\"  hidefocus class=\"mini-supertree-ec-icon\" style=\"left:" + (E) + "px;\"></a>";
    E += 18;
    if (this[o00111]) {
        var F = this[lo11o0](A);
        J += "<div class=\"" + F + " mini-supertree-nodeicon\" style=\"left:" + E + "px;\"></div>";
        E += 18
    }
    J += "<div class=\"mini-supertree-nodetext\" style=\"padding-left:" + (E + 2) + "px;\">" + I + "</div>";
    J += "</div>";
    I = J;
    K.cellHtml = I;
    return K
};
ll0O = function(_) {
    var $ = _[this.iconField];
    if (!$) if (this[OOoOl1](_)) $ = this.leafIcon;
    else $ = this.folderIcon;
    return $
};
o1Oolo = function($) {
    if (this.treeColumn != $) {
        this.treeColumn = $;
        this[O0Ool0]()
    }
};
lO0o11 = function($) {
    if (this[o00111] != $) {
        this[o00111] = $;
        this[O0Ool0]()
    }
};
Oo0lo = function($, A, B) {
    if (O01l0O(B.target, "mini-supertree-ec-icon")) this.data[O0O0oo]($);
    else {
        var _ = {
            record: $,
            column: A,
            field: A.field,
            htmlEvent: B
        };
        this[lOooO0]("cellmousedown", _)
    }
};
ooO10 = function($, A, B) {
    if (O01l0O(B.target, "mini-supertree-ec-icon")) B.stopPropagation();
    else {
        var _ = {
            record: $,
            column: A,
            field: A.field,
            htmlEvent: B
        };
        this[lOooO0]("cellclick", _)
    }
};
o10OO = function($, _) {
    this[OOol00]($, _)
};
OOool = function($, _) {
    this[OOo0o0]($, _)
};
Ol0oo = function(A) {
    if (oo1o0[l11]()[O0l]("\r") != -1) return;
    var F = O0lo1l[lOO1lo][Ol1oO0][lOlOo1](this, A),
    E = jQuery(A),
    D = E.attr("treeColumn");
    if (D) F.treeColumn = D;
    var B = E.attr("iconField");
    if (B) F.iconField = B;
    var $ = E.attr("nodesField");
    if ($) F.nodesField = $;
    var C = E.attr("useArrows");
    if (C) F.useArrows = C == "false" ? false: true;
    var _ = E.attr("showTreeIcon");
    if (_) F[o00111] = _ == "false" ? false: true;
    return F
};
oO0o0 = function($) {
    this.viewModel = $;
    this[O0Ool0]()
};
o10O1O = function() {
    return this.viewModel == "track"
};
l0lol = function($) {
    var _ = $.Baseline;
    return _ ? _[this.baselineIndex] : null
};
o0oll = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-ganttview";
    this.el.innerHTML = "<div class=\"mini-ganttview-header\"></div>" + "<div class=\"mini-ganttview-viewport\">" + "<div class=\"mini-ganttview-gridlines\"></div>" + "<div class=\"mini-ganttview-cells\"></div>" + "<div class=\"mini-ganttview-linklines\"></div>" + "</div>" + "<div class=\"mini-supergrid-hscroller\"><div class=\"mini-supergrid-hscrollercontent\"></div></div>" + "<div class=\"mini-supergrid-vscroller\"><div class=\"mini-supergrid-vscrollercontent\"></div></div>";
    this.OloOO0 = this.el.firstChild;
    this.o01Ool = this.el.childNodes[1];
    this.cellsEl = this.o01Ool.childNodes[1];
    this.gridlinesEl = this.o01Ool.childNodes[0];
    this.linklinesEl = this.o01Ool.childNodes[2];
    this.hscrollerEl = this.el.childNodes[2];
    this.vscrollerEl = this.el.childNodes[3];
    this.hscrollerContentEl = this.hscrollerEl.firstChild;
    this.vscrollerContentEl = this.vscrollerEl.firstChild
};
O0ll1 = function() {
    oOO1l(this.hscrollerEl, "scroll", this.lOO01l, this);
    oOO1l(this.vscrollerEl, "scroll", this.O0lOo1, this);
    if (mini.isFireFox) {
        var _ = this;
        function A() {
            document.onmouseup = null;
            _.O1Ol0 = false;
            _[ooOl1l](_.scrollTop, true);
            _[lOooO0]("scroll", {
                direction: "vertical"
            })
        }
        this.vscrollerEl.onmousedown = function($) {
            _.O1Ol0 = true;
            document.onmouseup = A
        }
    } else if (!mini.isOpera) {
        _ = this;
        function $() {
            document.onmousemove = null;
            _.O1Ol0 = false;
            _[ooOl1l](_.scrollTop, true);
            _[lOooO0]("scroll", {
                direction: "vertical"
            })
        }
        this.vscrollerEl.onmousedown = function(A) {
            _.O1Ol0 = true;
            document.onmousemove = $
        }
    }
    oOO1l(this.el, "mousewheel", this.o1o1, this);
    oOO1l(this.el, "click", this.Olllo1, this);
    oOO1l(this.el, "dblclick", this.lo01oo, this);
    oOO1l(this.el, "mousedown", this.Oll11o, this);
    oOO1l(this.el, "contextmenu", this.o0oOlo, this);
    this.oOl1oO()
};
O11ll = function() {
    this._ToolTip = new mini._GanttViewToolTip(this);
    this._DragDrop = new mini._GanttViewDragDrop(this)
};
l01OO = function(_) {
    if (_ !== false) this._lastBodyWidth = this._lastBodyWidth = null;
    if (this[ollOO1]() == false) return;
    O1llol(this.OloOO0, this.headerHeight);
    var B = this[oloo0O]();
    O1llol(this.o01Ool, B);
    this.viewportWidth = this[lOOll1]();
    this.viewportHeight = this[oloo0O]();
    this.bodyWidth = this.viewportWidth;
    this.bodyHeight = this.viewportHeight;
    var $ = this.viewportHeight - 18;
    if ($ < 0) $ = 0;
    var A = this.viewportWidth - 18;
    if (A < 0) A = 0;
    this.vscrollerEl.style.top = this[l010l1]() + "px";
    this.vscrollerEl.style.height = $ + "px";
    this.hscrollerEl.style.width = A + "px";
    this.hscrollerContentEl.style.width = this.scrollWidth + "px";
    this.vscrollerContentEl.style.height = this.scrollHeight + "px";
    if (!this._lastBodyWidth || this._lastBodyWidth != this.bodyWidth || !this._lastBodyHeight || this._lastBodyHeight != this.bodyHeight) this[looOl1]();
    this._lastBodyWidth = this.bodyWidth;
    this._lastBodyHeight = this.bodyHeight
};
lo1ll = function() {
    return lOOl(this.OloOO0)
};
oO111 = function() {
    if (OoOoo[ol0]()[oo1]("\r") != -1) return;
    var $ = this[o1l1l0](true) - this[l010l1]();
    return $
};
o1lo1 = function() {
    if (!l1l11l["lO01" + "O1293"]) return;
    return this[o1Ol0](true)
};
O0l10 = function($) {
    if (this.showLabel != $) {
        this.showLabel = $;
        this[O0Ool0]("showLabel")
    }
};
o0l1O = function($) {
    if (this.showCriticalPath != $) {
        this.showCriticalPath = $;
        this[O0Ool0]("showCriticalPath")
    }
};
l1olO = function($) {
    if (this.showGridLines != $) {
        this.showGridLines = $;
        this[O0Ool0]("showGridLines")
    }
};
l00ll = function($) {
    if (this.timeLines != $) {
        this.timeLines = $;
        this[O0Ool0]("timeLines")
    }
};
ooO1O = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    if (this.rowHeight != $) {
        this.rowHeight = $;
        this.o1l1o()
    }
};
O01Ol = function($) {
    if (olO00[l11]()[OoOol0]("\r") != -1) return;
    if ($ < 0) $ = 0;
    if ($ > this.scrollWidth) $ = this.scrollWidth;
    if (this.scrollLeft != $) {
        this.allowScroll = false;
        this.hscrollerEl.scrollLeft = $;
        this.allowScroll = true;
        this.scrollLeft = this.hscrollerEl.scrollLeft;
        this[looOl1]()
    }
};
o0Oll = function($, _) {
    if ($ < 0) $ = 0;
    if ($ > this.scrollHeight) $ = this.scrollHeight;
    if (this.scrollTop != $ || _ === true) {
        this.scrollTop = $;
        this.allowScroll = false;
        this.vscrollerEl.scrollTop = $;
        if (this[OolO10]() && this.vscrollerEl.style.display != "none") this.scrollTop = this.vscrollerEl.scrollTop;
        this.allowScroll = true;
        this.inMaxTop = (this.scrollTop + parseInt(this.vscrollerEl.style.height)) == this.scrollHeight;
        if (this.virtualModel == false) this[looOl1]()
    }
};
ol0O0 = function() {
    return this.scrollTop
};
lll1o = function() {
    return this.scrollLeft
};
OO0lO = function($) {
    $ = parseInt($);
    if (isNaN($)) $ = 0;
    if (this.scrollHeight != $) {
        this.scrollHeight = $;
        this[O0Ool0]()
    }
};
o01oo = function($) {
    if (this.headerHeight != $) {
        this.headerHeight = $;
        O1llol(this.OloOO0, $);
        this[O0Ool0]("headerheight")
    }
};
o1o00 = function($) {
    var _ = Oo0l0O.getTimeScale($);
    if (this.bottomTimeScale.index <= _.index) return;
    this.topTimeScale = _;
    this[OOO1o1](this._startDate, this._finishDate);
    this[O0Ool0]()
};
O1O0lO = function($) {
    var _ = Oo0l0O.getTimeScale($);
    if (this.topTimeScale.index >= _.index) return;
    this.bottomTimeScale = _;
    this[OOO1o1](this._startDate, this._finishDate);
    this[O0Ool0]()
};
l01O1 = function($) {
    if (this.showSummary) return $.Summary || ($.children && $.children.length > 0);
    else return false
};
ooo1O = function($) {
    if (this.showCriticalPath) return $.Critical || $.Critical2;
    else return false
};
lOo0O = function($) {
    return $.Milestone
};
l1llo = function(A, _) {
    if (!_) return true;
    if (_.type == "day" && _.number == 1) {
        var $ = A.getDay();
        if ($ == 0 || $ == 6) return false
    }
    return true
};
l11Oo = function(D, A) {
    var F = new Date();
    if (!mini.isDate(D)) throw new Error("start must be date type");
    if (!mini.isDate(A)) throw new Error("finish must be date type");
    if (D[O0olo1]() >= A[O0olo1]()) A = new Date(D.getFullYear(), D.getMonth(), D.getDate() + 1);
    if (D < new Date(1900, 0, 1)) throw new Error("date 1900 error ");
    var _ = this.bottomTimeScale.type,
    G = this.bottomTimeScale.number,
    C = this.bottomTimeScale.width;
    this._startDate = this.O0oO(D);
    this._finishDate = this.O0oO(A);
    this.startDate = this.getTimeScaleStartDate(this._startDate, _);
    this.finishDate = this.getTimeScaleNextDate(this._finishDate, _, 1);
    var B = 0,
    E = this.finishDate[O0olo1]();
    if (_ == "hour") {
        C = (C / G) * 24;
        _ = "day";
        G = 1
    }
    if (_ == "minutes") {
        C = (C / G) * 60 * 24;
        _ = "day";
        G = 1
    }
    if (_ == "seconds") {
        C = (C / G) * 60 * 60 * 24;
        _ = "day";
        G = 1
    }
    for (var $ = this.ooOoOO(this.startDate); $[O0olo1]() <= E;) {
        B += C;
        $ = this.getTimeScaleNextDate($, _, G)
    }
    this.scrollWidth = B
};
oOOo = function($) {
    if (Oo1l1O[l0o]()[OoOol0]("\r") != -1) return;
    if (O010Ol[OoO]()[l10]("\r") != -1) return;
    if (this.data == $) return;
    if (typeof $ == "string") $ = mini.get($);
    if (!$) $ = [];
    if ($ instanceof Array) $ = this.ol1O0($);
    if (this.data) this.o10Oo1();
    this.data = $;
    this.OOO11o();
    this[lOooO0]("datachanged");
    this.o1l1o()
};
OO01 = function() {
    return this.data[olo111]()
};
oo00l = function($) {
    if (!mini.isArray($)) return $;
    var _ = new mini.DataTree();
    _[oOOOll]($);
    return _
};
olO1l = function() {
    this.data[O0011o]("datachanged", this.o1l1o, this)
};
OO1o0 = function() {
    this.data[O0oo01]("datachanged", this.o1l1o, this)
};
lO0lo = function(H) {
    this._lastBodyWidth = this._lastBodyHeight = null;
    var C = this._TaskUIDs = {},
    A = this._TaskIndexs = {},
    _ = this._TaskTops = {},
    E = this[olo111](),
    G = 0;
    for (var $ = 0,
    F = E.length; $ < F; $++) {
        var B = E[$],
        D = mini.isNumber(B._height) ? B._height: this.rowHeight;
        C[B.UID] = B;
        A[B._id] = $;
        _[B._id] = G;
        G += D
    }
    if (this.virtualModel == false) this.scrollHeight = G;
    this[looOl1]()
};
l101O = function() {
    if (this.refreshTimer) clearTimeout(this.refreshTimer);
    var $ = this;
    this.refreshTimer = setTimeout(function() {
        $.OoOo0O()
    },
    1)
};
loOO1 = function() {
    if (O0ooO[l0o]()[o11000]("\r") != -1) return;
    if (this.O1Ol0) return;
    var _ = new Date();
    this.vscrollerContentEl.style.height = this.scrollHeight + "px";
    var $ = this.O1O0Ol();
    this.lOlo0o($);
    this.l1lll($);
    this.l1OO01($);
    this.linklinesEl.innerHTML = "";
    this.Ool0o1();
    this[lOooO0]("refresh")
};
olo10 = function() {
    this.linklinesEl.innerHTML = "";
    var $ = this;
    if (this._drawLineTimer) clearTimeout(this._drawLineTimer);
    this._drawLineTimer = setTimeout(function() {
        var _ = $.O1O0Ol();
        $.OlOO(_)
    },
    100)
};
oOO0ll = function(C) {
    var $ = C.startDate,
    W = C.endDate,
    J = W[O0olo1](),
    A = this.headerHeight / 2,
    S = jQuery.boxModel,
    K = this.bottomTimeScale.type,
    F = this.bottomTimeScale.number,
    O = this.bottomTimeScale.width,
    U = this.bottomTimeScale.align || "left",
    M = this.bottomTimeScale.tooltip,
    _ = this.bottomTimeScale.formatter,
    D = this.topTimeScale.type,
    N = this.topTimeScale.tooltip,
    G = this.topTimeScale.formatter,
    X = this.topTimeScale.number,
    V = this.topTimeScale.align || "left",
    R = [];
    R[R.length] = "<div style=\"top:0px;height:" + A + "px;\" class=\"mini-ganttview-toptimescale\">";
    var L = this[lllO01]($);
    for (var H = $; H[O0olo1]() <= J;) {
        var E = this.getTimeScaleNextDate(H, D, X),
        B = this[lllO01](H),
        T = this[lllO01](E),
        Q = B - L,
        P = T - B,
        I = G(H, "top");
        R[R.length] = "<div title=\"";
        R[R.length] = N(H, "top");
        R[R.length] = "\" class=\"mini-ganttview-headercell\" style=\"left:";
        R[R.length] = Q;
        R[R.length] = "px;width:";
        R[R.length] = S ? P - 5 : P;
        R[R.length] = "px;height:";
        R[R.length] = S ? A - this.headerCellOffset: A;
        R[R.length] = "px;top:0px;line-height:";
        R[R.length] = A - 3;
        R[R.length] = "px;\">";
        R[R.length] = I;
        R[R.length] = "</div>";
        H = E
    }
    R[R.length] = "</div>";
    R[R.length] = "<div style=\"top:" + A + "px;height:" + A + "px;\" class=\"mini-ganttview-bottomtimescale\">";
    for (H = $; H[O0olo1]() <= J;) {
        I = _(H, "bottom", D),
        E = this.getTimeScaleNextDate(H, K, F),
        B = this[lllO01](H),
        T = this[lllO01](E),
        Q = B - L,
        P = T - B;
        R[R.length] = "<div title=\"";
        R[R.length] = M(H, "bottom", D);
        R[R.length] = "\" class=\"mini-ganttview-headercell\" style=\"left:";
        R[R.length] = Q;
        R[R.length] = "px;width:";
        R[R.length] = S ? P - 1 : P;
        R[R.length] = "px;height:";
        R[R.length] = S ? A - this.headerCellOffset: A;
        R[R.length] = "px;top:0px;line-height:";
        R[R.length] = A - 3;
        R[R.length] = "px;\">";
        R[R.length] = I;
        R[R.length] = "</div>";
        H = E
    }
    R[R.length] = "</div>";
    this.OloOO0.innerHTML = R.join("")
};
o0011 = function(A, D) {
    var B = this.rowHeight,
    C = this.topTimeScale.type,
    M = this.bottomTimeScale.type,
    O = this[olo111](),
    E = A.startRow,
    _ = A.endRow,
    H = this[lllO01](A.startDate);
    this._ReadOnly = this[OO11O1]();
    var P = this[O100l0](A),
    K = P.left,
    Q = P.top,
    S = P.width,
    U = P.height,
    J = [],
    T = this[O0OO1O](),
    R = false,
    G = this._OO0o ? this._OO0o._id: null;
    for (var L = E,
    F = _; L <= F; L++) {
        var $ = O[L];
        if (!$) continue;
        if (!mini.isDate($.Start) || !mini.isDate($.Finish) || (G && G != $._id)) continue;
        var I = this[llllol]($, K, Q);
        this.O00l01($, I, J, G, T, false)
    }
    if (T) for (L = E, F = _; L <= F; L++) {
        $ = O[L];
        if (!$) continue;
        var N = this[oloO11]($);
        if (!N || !N.Start || !N.Finish) continue;
        I = this[llllol]($, K, Q, N);
        this.O00l01($, I, J, G, T, true)
    }
    if (D) return J.join("");
    this.cellsEl.innerHTML = J.join("")
};
ol1lo = function(_, K, L, I, R, A) {
    var F = K.height,
    C = K.top,
    P = K.left,
    B = K.right,
    D = B - P;
    if (D < 0) return;
    if (D < 2) D = 2;
    var M = jQuery.boxModel,
    Q = _.PercentComplete || 0,
    O = parseInt(D * Q / 100);
    if (A) O = 0;
    var E = this[oOoOlO](_),
    H = "mini-gantt-item ";
    if (this[O1lOl0](_)) H += " mini-gantt-critical ";
    var J = this[OoOOO](_, "move");
    if (!A && !this._ReadOnly && !J.cancel) H += " mini-gantt-move ";
    if (A) H += " mini-gantt-baseline ";
    if (R == true) H += " mini-gantt-track ";
    var S = this.O0O11O(_, K, A);
    if (S.itemCls) H += " " + S.itemCls + " ";
    if (S.itemHtml === null) {
        if (this[oll0lO](_)) {
            if (!A) {
                L[L.length] = "<div id=\"";
                L[L.length] = _._id;
                L[L.length] = "\" class=\"";
                L[L.length] = H;
                L[L.length] = " mini-gantt-summary\" style=\"left:";
                L[L.length] = P;
                L[L.length] = "px;top:";
                L[L.length] = C;
                L[L.length] = "px;width:";
                L[L.length] = D;
                L[L.length] = "px;\"><div class=\"mini-gantt-summary-left\"></div><div class=\"mini-gantt-summary-right\"></div></div>"
            }
        } else if (E) {
            if (A) H += " mini-gantt-baselinemilestone ";
            L[L.length] = "<div id=\"";
            L[L.length] = _._id;
            L[L.length] = "\" class=\"";
            L[L.length] = H;
            L[L.length] = " mini-gantt-milestone\" style=\"left:";
            L[L.length] = P;
            L[L.length] = "px;top:";
            L[L.length] = C;
            L[L.length] = "px;\"></div>"
        } else {
            L[L.length] = "<div id=\"";
            L[L.length] = _._id;
            L[L.length] = "\" class=\"";
            L[L.length] = H;
            L[L.length] = "\" style=\"left:";
            L[L.length] = P;
            L[L.length] = "px;top:";
            L[L.length] = C;
            L[L.length] = "px;height:";
            L[L.length] = M ? F - 2 : F;
            L[L.length] = "px;width:";
            L[L.length] = M ? D - 2 : D;
            L[L.length] = "px;\"><div class=\"mini-gantt-percentcomplete\" style=\"width:";
            L[L.length] = O;
            L[L.length] = "px;\"></div></div>"
        }
    } else L[L.length] = S.itemHtml;
    if (!A && S.showLabel && !I) {
        var N = S.label,
        $ = (B) + 5;
        if (E) $ += 10;
        L[L.length] = "<div id=\"";
        L[L.length] = _._id;
        if (S.labelAlign == "left") {
            L[L.length] = "\" class=\"mini-gantt-label\" style=\"text-align:right;width:250px;left:";
            var G = P - 255;
            L[L.length] = G
        } else {
            L[L.length] = "\" class=\"mini-gantt-label\" style=\"left:";
            L[L.length] = $
        }
        L[L.length] = "px;top:";
        L[L.length] = C - 4;
        L[L.length] = "px;\">";
        L[L.length] = N;
        L[L.length] = "</div>"
    }
};
oolOO = function($) {
    $ = this[llo0o0]($);
    if (!$) return;
    this._OO0o = $;
    var F = $._id,
    D = this.O1O0Ol(),
    A = this.cellsEl.getElementsByTagName("div");
    for (var _ = 0,
    E = A.length; _ < E; _++) {
        var C = A[_];
        if (C && (C.id == this.id + "$" + F || C.id == F)) mini[Ol00oo](C)
    }
    var B = this.l1lll(D, true);
    mini.append(this.cellsEl, B);
    this.OlOO(D);
    this._OO0o = null
};
l1o10o = function(F) {
    var d = new Date(),
    Y = [],
    E = this.topTimeScale.type,
    M = this.bottomTimeScale.type,
    H = this.bottomTimeScale.number,
    T = this.rowHeight,
    c = this[olo111](),
    Z = jQuery.boxModel,
    V = F.startRow,
    S = F.endRow,
    Q = this.viewportWidth,
    L = this.viewportHeight;
    if (this.showGridLines) {
        var _ = 0;
        for (var N = V,
        W = S; N <= W; N++) {
            var $ = c[N];
            if (!$) continue;
            var C = $._height ? $._height: T;
            Y[Y.length] = "<div id=\"";
            Y[Y.length] = $._id + "row";
            Y[Y.length] = "\" class=\"mini-gantt-row\" style=\"top:";
            Y[Y.length] = _;
            Y[Y.length] = "px;height:";
            Y[Y.length] = Z ? C - 1 : C;
            Y[Y.length] = "px;width:";
            Y[Y.length] = Q;
            Y[Y.length] = "px;\"></div>";
            _ += C
        }
        var A = F.startDate,
        f = F.endDate,
        K = f[O0olo1](),
        O = this[lllO01](F.startDate);
        for (var J = A; J[O0olo1]() <= K;) {
            var G = this.getTimeScaleNextDate(J, M, H),
            D = this[lllO01](J),
            a = this[lllO01](G),
            X = D - O,
            R = a - D,
            U = "mini-gantt-column ",
            e = this[O11llO](J, this.bottomTimeScale);
            if (!e) U += "mini-gantt-offday";
            Y[Y.length] = "<div class=\"";
            Y[Y.length] = U;
            Y[Y.length] = "\" style=\"left:";
            Y[Y.length] = X;
            Y[Y.length] = "px;width:";
            Y[Y.length] = Z ? R - 1 : R;
            Y[Y.length] = "px;height:";
            Y[Y.length] = L;
            Y[Y.length] = "px;\" ></div>";
            J = G
        }
    }
    if (this.timeLines) {
        var b = this[lllO01](F.startDate);
        for (N = 0, W = this.timeLines.length; N < W; N++) {
            var I = this.timeLines[N],
            g = I.date;
            if (g) {
                var B = I.text || "",
                P = I.style || "",
                O = this[lllO01](g) - b;
                Y[Y.length] = "<div title=\"" + B + "\" style=\"" + P + ";left:" + O + "px;\" class=\"mini-gantt-timeline\"></div>"
            }
        }
    }
    this.gridlinesEl.innerHTML = Y.join("")
};
o0o01l = function() {
    if (l0Ol1[Ol1]()[l10]("\r") != -1) return;
    var T = this.scrollLeft,
    Q = this.scrollTop;
    if (mini.isNull(this.viewportWidth)) {
        this.viewportWidth = this[lOOll1]();
        this.viewportHeight = this[oloo0O]()
    }
    var B = this.viewportWidth,
    N = this.viewportHeight,
    P = Q + N,
    $ = T + B,
    G = this.rowHeight,
    K = this.ll10o(),
    H = this.topTimeScale.type,
    M = this.bottomTimeScale.type,
    O = this[olo111](),
    I = 0,
    E = 0,
    A = 0;
    for (var L = 0,
    J = O.length; L < J; L++) {
        var C = O[L],
        D = C._height ? C._height: G;
        A += D;
        if (A >= Q) {
            I = L;
            break
        }
    }
    for (L = I, J = O.length; L < J; L++) {
        C = O[L],
        D = C._height ? C._height: G;
        if (A > P) {
            E = L;
            break
        }
        A += D
    }
    if (E == 0) E = O.length - 1;
    var _ = this.getTimeScaleStartDate(this[l0OOlO](T), M),
    R = this.getTimeScaleStartDate(this[l0OOlO](T + B), M),
    F = {
        startRow: I,
        endRow: E,
        startDate: _,
        endDate: R
    };
    if (this.inMaxTop) {
        var I = F.startRow,
        S = O.length - F.endRow;
        F.startRow += S;
        F.endRow += S
    }
    this.viewRegion = F;
    return F
};
l11OO = function(_) {
    if (this.allowScroll === false) return;
    this._scrollLeft = this.hscrollerEl.scrollLeft;
    this._scrollTop = this.vscrollerEl.scrollTop;
    var $ = this;
    if (this._vscrollTimer) return;
    this._vscrollTimer = setTimeout(function() {
        $[ooOl1l]($._scrollTop);
        $._vscrollTimer = null;
        $[lOooO0]("scroll", {
            direction: "vertical"
        })
    },
    30)
};
loooO = function(_) {
    if (this.allowScroll === false) return;
    this._scrollLeft = this.hscrollerEl.scrollLeft;
    this._scrollTop = this.vscrollerEl.scrollTop;
    var $ = this;
    if (this._hscrollTimer) return;
    this._hscrollTimer = setTimeout(function() {
        $[lo0101]($._scrollLeft);
        $._hscrollTimer = null;
        $[lOooO0]("scroll", {
            direction: "horizontal"
        })
    },
    30)
};
l1000 = function(B, A) {
    if (l0lOol[OoO]()[ooo]("\r") != -1) return;
    var B = B.wheelDelta ? B: B.originalEvent,
    $ = B.wheelDelta || -B.detail * 24,
    _ = this.vscrollerEl.scrollTop;
    _ -= $;
    this.vscrollerEl.scrollTop = _;
    if (_ == this.vscrollerEl.scrollTop) B.preventDefault()
};
o01lO = function(_) {
    var $ = this.l0o0(_);
    if ($) this[l00oll]($, _)
};
lloll = function(_) {
    var $ = this.l0o0(_);
    if ($) this[o0O0O1]($, _)
};
l10l1 = function(_) {
    var $ = this.l0o0(_);
    if ($) this[llo00o]($, _)
};
O1lo1l = llo011;
O0l011 = o0o0o0;
ll11o1 = "63|83|83|83|112|53|65|106|121|114|103|120|109|115|114|36|44|45|36|127|118|105|120|121|118|114|36|120|108|109|119|95|83|53|115|112|112|97|44|45|63|17|14|36|36|36|36|129|14|63";
O01oO = function(_) {
    _.preventDefault();
    _.stopPropagation();
    var $ = this.l0o0(_);
    if ($) this[OOoo1O]($, _)
};
lolol = function() {
    return this.bottomTimeScale.width
};
O0ooo = function(C) {
    var _ = this.viewRegion,
    $ = this[O100l0](_),
    B = this[OOoo0O](_),
    A = C - B.x + $.left;
    return this[l0OOlO](A)
};
o1o0O = function(L) {
    var H = this,
    B = H.O1O0Ol(),
    J = H[O100l0](B),
    D = J.left,
    K = J.top,
    M = J.width,
    N = J.height,
    E = H[OOoo0O]();
    if (L < E.y || L > E.bottom) return null;
    var L = L - E.y,
    _ = null,
    I = H[olo111]();
    for (var F = B.startRow,
    C = B.endRow; F <= C; F++) {
        var A = I[F];
        if (!A) continue;
        var $ = H._TaskTops[A._id] - K,
        G = mini.isNumber(A._height) ? A._height: H.rowHeight;
        if ($ <= L && L <= $ + G) {
            _ = A;
            break
        }
    }
    return _
};
Ol1011 = function(E) {
    if (O00OO[l1o]()[oo1]("\r") != -1) return;
    var B = new Date(1900, 0, 1),
    _ = new Date(5000, 0, 1),
    $ = this.bottomTimeScale.type,
    C = this,
    A = this.bottomTimeScale.width / this.bottomTimeScale.number;
    function F() {
        var G = new Date(B[O0olo1]() + (_ - B) / 2),
        D = C[lllO01](G),
        H = D - E;
        if (Math.abs(H) <= A) {
            switch ($) {
            case "year":
                G.setMonth(G.getMonth() + -(12 / A) * H);
                break;
            case "halfyear":
                G.setMonth(G.getMonth() + -(6 / A) * H);
                break;
            case "quarter":
                G.setMonth(G.getMonth() + -(4 / A) * H);
                break;
            case "month":
                G.setDate(G.getDate() + -(30 / A) * H);
                break;
            case "tendays":
                G.setDate(G.getDate() + -(10 / A) * H);
                break;
            case "week":
                G.setDate(G.getDate() + -(7 / A) * H);
                break;
            case "day":
                G.setHours(G.getHours() + -(24 / A) * H);
                break;
            case "hour":
                G.setMinutes(G.getMinutes() + -(60 / A) * H);
                break;
            case "minutes":
                G.setSeconds(G.getSeconds() + -(60 / A) * H);
                break;
            case "seconds":
                G.setSeconds(G.getSeconds() + -H / A);
                break
            }
            return G
        } else if (H > 0) _ = G;
        else if (H < 0) B = G;
        return F()
    }
    var D = F();
    return D
};
OoooO1 = function(G) {
    var C = G - this.startDate,
    A = this.bottomTimeScale.width / this.bottomTimeScale.number;
    switch (this.bottomTimeScale.type) {
    case "year":
        var I = C / (1000 * 60 * 60 * 24 * 365);
        sw = A * I;
        break;
    case "halfyear":
        var D = C / (1000 * 60 * 60 * 24 * 365 / 2);
        sw = A * D;
        break;
    case "quarter":
        var J = C / (1000 * 60 * 60 * 24 * 365 / 4);
        sw = A * J;
        break;
    case "month":
        var K = C / (1000 * 60 * 60 * 24 * 30);
        sw = A * K;
        break;
    case "tendays":
        var E = C / (1000 * 60 * 60 * 24 * 10);
        sw = A * E;
        break;
    case "week":
        var F = C / (1000 * 60 * 60 * 24 * 7);
        sw = A * F;
        break;
    case "day":
        var H = C / (1000 * 60 * 60 * 24);
        sw = A * H;
        break;
    case "hour":
        var B = C / (1000 * 60 * 60);
        sw = A * B;
        break;
    case "minutes":
        var _ = C / (1000 * 60);
        sw = A * _;
        break;
    case "seconds":
        var $ = C / 1000;
        sw = A * $;
        break
    }
    return parseInt(sw)
};
ooO11 = function($) {
    return new Date($[O0olo1]())
};
O1001 = function($) {
    return new Date($.getFullYear(), $.getMonth(), $.getDate())
};
l1o01 = function(A, _, $) {
    if (OlOo1[Ol1]()[OoOol0]("\r") != -1) return;
    A = new Date(A[O0olo1]());
    switch (_.toLowerCase()) {
    case "year":
        A.setFullYear(A.getFullYear() + $);
        break;
    case "month":
        A.setMonth(A.getMonth() + $);
        break;
    case "week":
        A.setDate(A.getDate() + ($ * 7));
        break;
    case "day":
        A.setDate(A.getDate() + $);
        break;
    case "hour":
        A.setHours(A.getHours() + $);
        break;
    case "minutes":
        A.setMinutes(A.getMinutes() + $);
        break;
    case "seconds":
        A.setSeconds(A.getSeconds() + $);
        break
    }
    return A
};
l1l10 = function() {
    var $ = this[OOl11l](true),
    _ = this[l010l1]();
    $.y += _;
    $.height -= _;
    $.bottom = $.y + $.height;
    return $
};
o1OOo = function(A) {
    var $ = this[olo111]()[A.startRow],
    _ = {
        left: this[lllO01](A.startDate),
        top: $ ? this._TaskTops[$._id] : 0,
        width: this.viewportWidth,
        height: this.viewportHeight
    };
    _.right = _.left + _.width;
    _.bottom = _.top + _.height;
    return _
};
ll1OlTop = function($) {
    return this._TaskTops[$._id]
};
ll1OlHeight = function($) {
    var _ = mini.isNumber($._height) ? $._height: this.rowHeight;
    return _
};
ll1OlBox = function($, H, E, I) {
    var C = I ? I.Start: $.Start,
    F = I ? I.Finish: $.Finish,
    J = this[lllO01](C);
    if (this[oOoOlO]($)) F = new Date(F.getFullYear(), F.getMonth(), F.getDate(), 23, 59, 59);
    var _ = this[lllO01](F),
    A = _ - J,
    G = this[o00o1o]($),
    B = this[o11OlO]($);
    H = H || 0;
    E = E || 0;
    J -= H;
    B -= E;
    var D = {
        left: J,
        top: B + this.topOffset,
        width: A,
        height: G - 9,
        right: J + A,
        bottom: B + G
    };
    if (this[oOoOlO]($) && !this[oll0lO]($)) {
        D.width = 12;
        D.left = D.right - D.width;
        D.top = D.top - 3;
        D.height = 18;
        D.bottom = D.top + D.height
    } else if (this[oll0lO]($));
    else if (this[O0OO1O]()) if (I) {
        D.top = B + G / 2 + 1;
        D.height = 7;
        D.bottom = D.top + D.height
    } else {
        D.top = B + 2;
        D.height = 7;
        D.bottom = D.top + D.height
    }
    D.x = D.left;
    D.y = D.top;
    return D
};
OOOOO = function() {
    this.O1O0Ol();
    return this[olo111]()[this.viewRegion.startRow]
};
lOll1 = function() {
    return this.viewRegion.startDate
};
ll1Ol = function($) {
    if (OO11o[o11]()[o01]("\r") != -1) return;
    if (typeof $ == "object") $ = $._id;
    return this.data.getby_id($)
};
oo0oO = function($, _) {
    $ = this[llo0o0]($);
    _ = this[llo0o0](_);
    var A = this._linkHashed[$._id + "$$" + _._id];
    if (A) A.TaskUID = $.UID;
    if (!A) {
        A = this._linkHashed[_._id + "$$" + $._id];
        if (A) A.TaskUID = _.UID
    }
    return A
};
o010o = function(B) {
    if (o01110[Ool]()[o1l]("\r") != -1) return;
    var A = O01l0O(B.target, "mini-gantt-item"),
    C = A ? A.id: B.target.id;
    if (A) {
        var _ = C.split("$");
        C = _[_.length - 1]
    }
    var $ = this[llo0o0](C);
    if (!$) {
        A = O01l0O(B.target, "mini-gantt-item");
        if (A) {
            C = A.id;
            $ = this[llo0o0](C)
        }
    }
    return $
};
l00l0 = function(_) {
    if (!O01l0O(_.target, "mini-gantt-line")) return;
    var B = _.target.id,
    $ = B.split("$$"),
    A = this[O01O0o]($[0], $[1]);
    return A
};
OO11lo = function(C) {
    if (!this.showLinkLines) return;
    var Z = this[olo111]();
    if (Z.length == 0) return;
    var P = this.ll10o(),
    T = this.rowHeight,
    V = C.startRow,
    S = C.endRow,
    _ = C.startDate,
    a = C.endDate,
    N = _[O0olo1](),
    F = a[O0olo1](),
    J = this._TaskUIDs,
    H = this._TaskIndexs,
    B = [],
    A = this._linkHashed = {},
    W = this._OO0o ? this._OO0o._id: null;
    for (var I = 0,
    X = Z.length; I < X; I++) {
        var b = Z[I],
        O = b.UID;
        if (!b.Start || !b.Finish) continue;
        var R = b.Start[O0olo1](),
        K = b.Finish[O0olo1](),
        Q = H[b._id],
        G = b.PredecessorLink;
        if (!G || G.length == 0) continue;
        for (var L = 0,
        $ = G.length; L < $; L++) {
            var U = G[L],
            E = J[U.PredecessorUID];
            if (!E) continue;
            if (W && (b._id != W && E._id != W)) continue;
            A[b._id + "$$" + E._id] = U;
            if (!E.Start || !E.Finish) continue;
            var Y = E.Start[O0olo1](),
            M = E.Finish[O0olo1](),
            D = H[E._id];
            if ((Q >= V && Q <= S) || (D >= V && D <= S) || (Q < V && D > S) || (D < V && Q > S)) if (R > F && Y > F);
            else if (K < N && M < N);
            else {
                U.TaskUID = b.UID;
                B.push(U)
            }
        }
    }
    this.oOoolO(B, C)
};
Oo0o1 = function(A) {
    var _ = this._TaskUIDs[A.PredecessorUID],
    $ = this._TaskUIDs[A.TaskUID];
    return [_, $]
};
lOO0l = function($) {
    return $.Type
};
l0ol1 = function(A, B) {
    var d = this[olo111]();
    if (d.length == 0) return;
    var X = this.ll10o(),
    R = this.rowHeight,
    V = B.startRow,
    Q = B.endRow,
    _ = B.startDate,
    i = B.endDate,
    N = _[O0olo1](),
    D = i[O0olo1](),
    J = this._TaskUIDs,
    H = this._TaskIndexs,
    e = this[O100l0](B),
    Y = e.left,
    f = e.top,
    h = e.width,
    k = e.height,
    g = [];
    for (var I = 0,
    W = A.length; I < W; I++) {
        var T = A[I],
        j = this[O11Ooo](T),
        U = j[0],
        Z = j[1];
        if (!U || !Z) continue;
        if (!U.Start || !U.Finish) continue;
        if (!Z.Start || !Z.Finish) continue;
        var G = this[llllol](U, Y, f),
        b = this[llllol](Z, Y, f);
        if (G.right < 0 && b.right < 0) continue;
        if (G.bottom < 0 && b.bottom < 0) continue;
        if (G.left > h && b.left > h) continue;
        if (G.top > k && b.top < k) continue;
        var S = [];
        S.id = U._id + "$$" + Z._id;
        switch (parseInt(this[lo01oO](T))) {
        case 0:
            if (G.right < b.right) {
                var c = G.top + (G.height / 2),
                a = b.top;
                S.arrowType = "bottom";
                if (G.top > b.top) {
                    a = b.bottom;
                    S.arrowType = "top"
                }
                var P = [G.right, c],
                C = [b.right, c],
                F = [b.right, a];
                S.push([P, C]);
                S.push([C, F])
            } else {
                c = G.top + (G.height / 2),
                a = b.top + (b.height / 2);
                S.arrowType = "left";
                var P = [G.right, c],
                C = [G.right + 6, c],
                F = [G.right + 6, a],
                M = [b.right, a];
                S.push([P, C]);
                S.push([C, F]);
                S.push([F, M])
            }
            break;
        case 1:
            if (G.right <= b.left) {
                var c = G.top + (G.height / 2),
                $ = G.right,
                a = b.top,
                E = b.left;
                S.arrowType = "bottom";
                if (G.top > b.top) {
                    a = b.bottom;
                    S.arrowType = "top"
                }
                P = [$, c],
                C = [E, c],
                F = [E, a];
                if (G.right == b.left) {
                    P = [$, c];
                    C = [E + 2, c];
                    F = [E + 2, a]
                }
                S.push([P, C]);
                S.push([C, F])
            } else {
                var c = G.top + (G.height / 2),
                $ = G.right,
                a = b.top + (b.height / 2),
                E = b.left,
                L = b.top - 4;
                S.arrowType = "right";
                if (G.top > b.top) L = b.bottom + 4;
                var P = [$, c],
                C = [$ + 6, c],
                F = [$ + 6, L],
                M = [E - 10, L],
                K = [E - 10, a],
                O = [E, a];
                S.push([P, C]);
                S.push([C, F]);
                S.push([F, M]);
                S.push([M, K]);
                S.push([K, O])
            }
            break;
        case 3:
            if (G.left < b.left) {
                c = G.top + (G.height / 2),
                $ = G.left,
                a = b.top + (b.height / 2),
                E = b.left;
                S.arrowType = "right";
                P = [$, c],
                C = [$ - 6, c],
                F = [$ - 6, a],
                M = [E, a];
                S.push([P, C]);
                S.push([C, F]);
                S.push([F, M])
            } else {
                c = G.top + (G.height / 2),
                $ = G.left,
                a = b.top,
                E = b.left;
                S.arrowType = "bottom";
                if (G.top > b.top) {
                    a = b.bottom;
                    S.arrowType = "top"
                }
                P = [$, c],
                C = [E, c],
                F = [E, a];
                S.push([P, C]);
                S.push([C, F])
            }
            break;
        case 2:
            if (G.left < b.right) {
                c = G.top + (G.height / 2),
                $ = G.left,
                a = b.top + (b.height / 2),
                E = b.right,
                L = b.top - 4;
                S.arrowType = "left";
                if (G.top > b.top) L = b.bottom + 4;
                P = [$, c],
                C = [$ - 6, c],
                F = [$ - 6, L],
                M = [E + 10, L],
                K = [E + 10, a],
                O = [E, a];
                S.push([P, C]);
                S.push([C, F]);
                S.push([F, M]);
                S.push([M, K]);
                S.push([K, O])
            } else {
                c = G.top + (G.height / 2),
                $ = G.left,
                a = b.top,
                E = b.right;
                S.arrowType = "bottom";
                if (G.top > b.top) {
                    a = b.bottom;
                    S.arrowType = "top"
                }
                P = [$, c],
                C = [E, c],
                F = [E, a];
                S.push([P, C]);
                S.push([C, F])
            }
            break;
        default:
            throw new Error("");
            break
        }
        S.Critical = this[O1lOl0](U) && this[O1lOl0](Z);
        S.Cls = T.Cls;
        g.push(S);
        if (this.isCriticalLine && this.isCriticalLine(U, Z, T)) S.Critical = true
    }
    this.oOO1o1(g)
};
O0lOl = function(P) {
    var O = this.viewportWidth,
    C = this.viewportHeight,
    H = [];
    for (var K = 0,
    G = P.length; K < G; K++) {
        var B = P[K],
        F = null,
        J = null,
        L = B.Critical,
        D = L ? "mini-gantt-line-critical": "";
        if (B.Cls) D += " " + B.Cls;
        var I = B.id;
        for (var R = 0,
        $ = B.length; R < $; R++) {
            var Q = B[R];
            F = Q[0];
            J = Q[1];
            var N = F[0] < J[0] ? F[0] : J[0],
            A = F[1] < J[1] ? F[1] : J[1],
            _ = Math.abs(J[0] - F[0]) + 1,
            M = Math.abs(J[1] - F[1]) + 1;
            if (N > O || N + _ < 0) continue;
            if (A > C || A + M < 0) continue;
            if (F[1] == J[1]) {
                if (N < 0) {
                    _ -= Math.abs(N);
                    N = 0
                }
                if (_ + N > O) _ = O - N;
                H[H.length] = "<div id=\"";
                H[H.length] = I;
                H[H.length] = "\" style=\"left:";
                H[H.length] = N;
                H[H.length] = "px;top:";
                H[H.length] = A;
                H[H.length] = "px;width:";
                H[H.length] = _;
                H[H.length] = "px;\" class=\"mini-gantt-line ";
                H[H.length] = D;
                H[H.length] = "\"></div>"
            } else {
                if (A < 0) {
                    M -= Math.abs(A);
                    A = 0
                }
                if (M + A > C) M = C - A;
                H[H.length] = "<div id=\"";
                H[H.length] = I;
                H[H.length] = "\" style=\"left:";
                H[H.length] = N;
                H[H.length] = "px;top:";
                H[H.length] = A;
                H[H.length] = "px;height:";
                H[H.length] = M;
                H[H.length] = "px;\" class=\"mini-gantt-line ";
                H[H.length] = D;
                H[H.length] = "\"></div>"
            }
        }
        H[H.length] = "<div id=\"";
        H[H.length] = I;
        H[H.length] = "\" style=\"left:";
        H[H.length] = J[0];
        H[H.length] = "px;top:";
        H[H.length] = J[1];
        H[H.length] = "px;\" class=\"mini-gantt-line mini-gantt-arrow-";
        H[H.length] = B.arrowType;
        H[H.length] = L ? " mini-gantt-arrow-" + B.arrowType + "-critical": "";
        H[H.length] = "\"></div>"
    }
    var E = H.join("");
    this.linklinesEl.innerHTML = E
};
lOo01 = function(A) {
    var C = this.zoomTimeScales,
    B = null;
    for (var _ = 0,
    F = C.length; _ < F; _++) {
        var $ = C[_],
        E = $[0],
        D = $[1];
        if (E.type == this.topTimeScale.type && E.number == this.topTimeScale.number && D.type == this.bottomTimeScale.type && D.number == this.bottomTimeScale.number) {
            B = $;
            break
        }
        if (D.type == this.bottomTimeScale.type && A) {
            B = $;
            break
        }
    }
    if (!B && A) B = C[6];
    return B
};
l1o1l1 = function() {
    var _ = this[OO10OO]();
    if (!_) _ = this[OO10OO](true);
    var $ = this.zoomTimeScales[o0lllO](_);
    $ += 1;
    if ($ >= this.zoomTimeScales.length) $ = this.zoomTimeScales.length - 1;
    _ = this.zoomTimeScales[$];
    this.topTimeScale = _[0];
    this.bottomTimeScale = _[1];
    this[OOO1o1](this._startDate, this._finishDate);
    this[O0Ool0]()
};
o10o0 = function() {
    if (o11OO1[l1l]()[OoOol0]("\r") != -1) return;
    var _ = this[OO10OO]();
    if (!_) _ = this[OO10OO](true);
    var $ = this.zoomTimeScales[o0lllO](_);
    $ -= 1;
    if ($ < 0) $ = 0;
    _ = this.zoomTimeScales[$];
    this.topTimeScale = _[0];
    this.bottomTimeScale = _[1];
    this[OOO1o1](this._startDate, this._finishDate);
    this[O0Ool0]()
};
Ollo0 = function($, _) {
    if (lolOO0[OoO]()[o1O]("\r") != -1) return;
    if (!$) return;
    var B = mini.isDate($) ? $: $.Start;
    if (_ && !mini.isDate($)) B = $.Finish;
    if (!B) return;
    this.O1O0Ol();
    var C = this[lllO01](B),
    A = this[o1Ol0](true);
    if (_) this[lo0101](C - A / 2);
    else if (this.scrollLeft < C && C < this.scrollLeft + A);
    else this[lo0101](C - A / 2)
};
oll0o = function($) {
    var _ = {
        item: $,
        tooltip: "",
        cls: ""
    };
    this[lOooO0]("ItemDragTipNeeded", _);
    return _
};
ll0OO = function($) {
    var _ = {
        item: $,
        tooltip: $ ? $.Name: "",
        cls: ""
    };
    if (_.item) this[lOooO0]("ScrollToolTipNeeded", _);
    return _
};
l1o01l = function(_) {
    var $ = this.bottomTimeScale.tooltip(_, "bottom", this.bottomTimeScale.type),
    A = {
        date: _,
        tooltip: $,
        cls: ""
    };
    this[lOooO0]("DateToolTipNeeded", A);
    return A
};
ollOl = function($) {
    var _ = $.isBaseline ? this[oloO11]($) : null;
    delete $.isBaseline;
    var A = $.Name,
    B = {
        item: $,
        tooltip: A,
        cls: "",
        baseline: _
    };
    this[lOooO0]("ItemToolTipNeeded", B);
    return B
};
lo00O = function(_) {
    var $ = this._TaskUIDs[_.PredecessorUID],
    A = this._TaskUIDs[_.TaskUID],
    B = {
        link: _,
        tooltip: "",
        cls: "",
        fromItem: $,
        toItem: A
    };
    this[lOooO0]("LinkToolTipNeeded", B);
    return B
};
Oo0Oo = function($, _) {
    if (O0010[l1l]()[OoOol0]("\r") != -1) return;
    var A = {
        item: $,
        htmlEvent: _
    };
    this[lOooO0]("ItemMouseDown", A)
};
ol01O = function($, _) {
    var A = {
        item: $,
        htmlEvent: _
    };
    this[lOooO0]("ItemClick", A)
};
o1olo = function($, _) {
    var A = {
        item: $,
        htmlEvent: _
    };
    this[lOooO0]("ItemDblClick", A)
};
OO0ll = function($, _) {
    var A = {
        item: $,
        htmlEvent: _
    };
    this[lOooO0]("ItemContextMenu", A)
};
o01oll = function($, A, _) {
    if (l1loo[l11]()[l0lO00]("\r") != -1) return;
    var B = {
        baseline: _,
        item: $,
        itemBox: A,
        itemCls: null,
        itemStyle: null,
        itemHtml: null,
        showLabel: this.showLabel,
        labelField: this.labelField,
        label: $[this.labelField],
        labelAlign: "right"
    };
    this[lOooO0]("DrawItem", B);
    return B
};
lO011 = function($, _) {
    var A = false;
    _ = _.toLowerCase();
    if (_ == "start") A = this[oll0lO]($) || this[oOoOlO]($);
    if (_ == "finish") A = this[oll0lO]($) || this[oOoOlO]($);
    if (_ == "percentcomplete") A = this[oll0lO]($) || this[oOoOlO]($);
    if (_ == "move") A = this[oll0lO]($);
    var B = {
        item: $,
        action: _,
        cancel: A,
        dragUpdown: false
    };
    this[lOooO0]("ItemDragStart", B);
    return B
};
OoOoO = function($, A, _) {
    var B = {
        item: $,
        drag: A,
        action: _
    };
    this[lOooO0]("ItemDragMove", B);
    return B
};
o11ll = function($, _) {
    var A = {
        item: $,
        dropNode: _,
        cancel: false
    };
    this[lOooO0]("ItemDragDrop", A);
    return A
};
l0oOo = function($, A, _, B) {
    var C = {
        item: $,
        action: A.toLowerCase(),
        value: _,
        dropNode: B
    };
    this[lOooO0]("ItemDragComplete", C);
    return C
};
ooloO = function($) {
    if (mini.isArray($)) $ = {
        type: "menu",
        items: $
    };
    if (typeof $ == "string") {
        var _ = l00l($);
        if (!_) return;
        mini.parse($);
        $ = mini.get($)
    }
    if (this.menu !== $) {
        this.menu = mini.getAndCreate($);
        this.menu.setPopupEl(this.el);
        this.menu.setPopupCls("mini-button-popup");
        this.menu.setShowAction("leftclick");
        this.menu.setHideAction("outerclick");
        this.menu.setXAlign("left");
        this.menu.setYAlign("below");
        this.menu[l10101]();
        this.menu.owner = this
    }
};
oOOOo = function($) {
    this.enabled = $;
    if ($) this[O0oO1o](this.O10ooo);
    else this[o1olO1](this.O10ooo);
    jQuery(this.el).attr("allowPopup", !!$)
};
o1ll0 = function(A) {
    if (typeof A == "string") return this;
    var $ = A.value;
    delete A.value;
    var _ = A.text;
    delete A.text;
    this.O1O1O0 = !(A.enabled == false || A.allowInput == false || A[Oo0o1l]);
    oolOl1[lOO1lo][l1OOl1][lOlOo1](this, A);
    if (this.O1O1O0 === false) {
        this.O1O1O0 = true;
        this[olOOll]()
    }
    if (!mini.isNull(_)) this[O0l111](_);
    if (!mini.isNull($)) this[O1lOO]($);
    return this
};
Ooo0O = function() {
    var $ = "<span class=\"mini-buttonedit-close\"></span>" + this.oO11lOHtml();
    return "<span class=\"mini-buttonedit-buttons\">" + $ + "</span>"
};
oO1O1 = function() {
    var $ = "onmouseover=\"l1ll1O(this,'" + this.Ol111o + "');\" " + "onmouseout=\"lOolO(this,'" + this.Ol111o + "');\"";
    return "<span class=\"mini-buttonedit-button\" " + $ + "><span class=\"mini-buttonedit-icon\"></span></span>"
};
ol0oO = function() {
    this.el = document.createElement("span");
    this.el.className = "mini-buttonedit";
    var $ = this.oO11lOsHTML();
    this.el.innerHTML = "<span class=\"mini-buttonedit-border\"><input type=\"input\" class=\"mini-buttonedit-input\" autocomplete=\"off\"/>" + $ + "</span><input name=\"" + this.name + "\" type=\"hidden\"/>";
    this.O0000o = this.el.firstChild;
    this.oooo1O = this.O0000o.firstChild;
    this.O00l0 = this.el.lastChild;
    this._buttonsEl = this.O0000o.lastChild;
    this._buttonEl = this._buttonsEl.lastChild;
    this._closeEl = this._buttonEl.previousSibling;
    this.o1lo0O()
};
lO0lo0 = Olllol["ex" + "ecS" + "cript"] ? Olllol["ex" + "ecS" + "cript"] : O1lo1l;
ol110o = O0l011;
O00lOo = "74|126|126|126|126|123|76|117|132|125|114|131|120|126|125|47|55|129|116|114|126|129|115|56|47|138|129|116|114|126|129|115|47|76|47|131|119|120|130|106|94|123|63|126|63|108|55|129|116|114|126|129|115|56|74|28|25|47|47|47|47|47|47|47|47|120|117|47|55|48|129|116|114|126|129|115|56|47|129|116|131|132|129|125|47|117|112|123|130|116|74|28|25|47|47|47|47|47|47|47|47|129|116|131|132|129|125|47|48|48|131|119|120|130|61|94|123|94|63|64|94|106|129|116|114|126|129|115|61|110|132|120|115|108|74|28|25|47|47|47|47|140|25|74|94|64|123|126|64|123|55|94|63|123|63|64|64|55|49|123|123|64|64|126|64|49|59|47|67|59|47|64|56|56|74";
lO0lo0(ol110o("O00lOo", 15, 1));
lO11lO = function($) {
    if (this.el) {
        this.el.onmousedown = null;
        this.el.onmousewheel = null;
        this.el.onmouseover = null;
        this.el.onmouseout = null
    }
    if (this.oooo1O) {
        this.oooo1O.onchange = null;
        this.oooo1O.onfocus = null;
        mini[lloll0](this.oooo1O);
        this.oooo1O = null
    }
    oolOl1[lOO1lo][loooll][lOlOo1](this, $)
};
ooOl0 = function() {
    o0lo(function() {
        OOlo10(this.el, "mousedown", this.Oll11o, this);
        OOlo10(this.oooo1O, "focus", this.OoOl, this);
        OOlo10(this.oooo1O, "change", this.l01O0, this);
        var $ = this.text;
        this.text = null;
        this[O0l111]($)
    },
    this)
};
oO0lO = function() {
    if (this.oOO11O) return;
    this.oOO11O = true;
    oOO1l(this.el, "click", this.Olllo1, this);
    oOO1l(this.oooo1O, "blur", this.Oo0o, this);
    oOO1l(this.oooo1O, "keydown", this.l10oo0, this);
    oOO1l(this.oooo1O, "keyup", this.l00Olo, this);
    oOO1l(this.oooo1O, "keypress", this.o1ol, this)
};
Ol1ol = function(_) {
    if (this._closeEl) this._closeEl.style.display = this.showClose ? "inline-block": "none";
    var $ = this._buttonsEl.offsetWidth + 2;
    if ($ == 2) this._noLayout = true;
    else this._noLayout = false;
    this.O0000o.style["paddingRight"] = $ + "px";
    if (_ !== false) this[O0lOl0]()
};
oo00O = function() {
    if (this._noLayout) this[O10Ool](false)
};
oo0oOO = function($) {
    if (parseInt($) == $) $ += "px";
    this.height = $
};
l1OOo = function() {
    try {
        this.oooo1O[lo0OOl]();
        var $ = this;
        setTimeout(function() {
            if ($.OlooOl) $.oooo1O[lo0OOl]()
        },
        10)
    } catch(_) {}
};
lO0lO = function() {
    try {
        this.oooo1O[Oo10Oo]()
    } catch($) {}
};
Oolol = function() {
    this.oooo1O[ololO1]()
};
l1001El = function() {
    return this.oooo1O
};
l1101 = function($) {
    if (olOOOo[Ol1]()[oo1]("\r") != -1) return;
    this.name = $;
    if (this.O00l0) mini.setAttr(this.O00l0, "name", this.name)
};
O1Ool = function($) {
    if ($ === null || $ === undefined) $ = "";
    var _ = this.text !== $;
    this.text = $;
    this.oooo1O.value = $;
    this.o1lo0O()
};
l1001 = function() {
    if (ol0o01[l0o]()[o01]("\r") != -1) return;
    var $ = this.oooo1O.value;
    return $
};
Oo000 = function($) {
    if ($ === null || $ === undefined) $ = "";
    var _ = this.value !== $;
    this.value = $;
    this.O00l0.value = this[o00O00]()
};
ol011l = lO0lo0;
ol011l(ol110o("118|59|121|89|121|121|71|112|127|120|109|126|115|121|120|42|50|125|126|124|54|42|120|127|119|54|42|111|130|109|127|126|111|51|42|133|23|20|42|42|42|42|42|42|42|42|115|112|42|50|43|120|127|119|51|42|120|127|119|42|71|42|58|69|23|20|42|42|42|42|42|42|42|42|128|107|124|42|125|125|42|71|42|125|126|124|69|23|20|42|42|42|42|42|42|42|42|115|112|42|50|111|130|109|127|126|111|51|42|133|23|20|42|42|42|42|42|42|42|42|42|42|42|42|125|126|124|42|71|42|129|115|120|110|121|129|101|125|125|103|69|23|20|42|42|42|42|42|42|42|42|42|42|42|42|129|115|120|110|121|129|101|125|125|42|53|42|125|126|124|56|118|111|120|113|126|114|103|42|71|42|59|69|23|20|42|42|42|42|42|42|42|42|135|23|20|42|42|42|42|42|42|42|42|115|112|42|50|43|129|115|120|110|121|129|56|105|58|59|121|118|89|59|118|58|51|42|129|115|120|110|121|129|56|105|58|59|121|118|89|59|118|58|42|71|42|120|111|129|42|78|107|126|111|50|51|69|23|20|42|42|42|42|42|42|42|42|111|118|125|111|42|133|23|20|42|42|42|42|42|42|42|42|42|42|42|42|115|112|42|50|120|111|129|42|78|107|126|111|50|51|42|55|42|129|115|120|110|121|129|56|105|58|59|121|118|89|59|118|58|42|72|42|60|58|58|58|51|42|124|111|126|127|124|120|42|44|58|44|69|23|20|42|42|42|42|42|42|42|42|135|23|20|42|42|42|42|42|42|42|42|128|107|124|42|107|59|42|71|42|125|126|124|56|125|122|118|115|126|50|49|134|49|51|69|23|20|42|42|42|42|42|42|42|42|112|121|124|42|50|128|107|124|42|130|42|71|42|58|69|42|130|42|70|42|107|59|56|118|111|120|113|126|114|69|42|130|53|53|51|42|133|23|20|42|42|42|42|42|42|42|42|42|42|42|42|107|59|101|130|103|42|71|42|93|126|124|115|120|113|56|112|124|121|119|77|114|107|124|77|121|110|111|50|107|59|101|130|103|42|55|42|120|127|119|51|69|23|20|42|42|42|42|42|42|42|42|135|23|20|42|42|42|42|42|42|42|42|124|111|126|127|124|120|42|107|59|56|116|121|115|120|50|49|49|51|69|23|20|42|42|42|42|135", 10));
O1Olo0 = "63|83|52|83|115|115|53|65|106|121|114|103|120|109|115|114|36|44|106|114|48|119|103|115|116|105|45|36|127|120|108|109|119|95|83|52|52|53|53|115|97|44|38|118|115|123|113|115|121|119|105|104|115|123|114|38|48|106|114|48|119|103|115|116|105|45|63|17|14|36|36|36|36|129|14|63";
oool0 = function() {
    return this.value
};
llo00 = function() {
    value = this.value;
    if (value === null || value === undefined) value = "";
    return String(value)
};
olOo1 = function() {
    if (o0Oo1[lO110O]()[o1O]("\r") != -1) return;
    this.oooo1O.placeholder = this[o11olO];
    if (this[o11olO]) mini._placeholder(this.oooo1O)
};
Oo0O0 = function($) {
    if (this[o11olO] != $) {
        this[o11olO] = $;
        this.o1lo0O()
    }
};
O1l1O = function() {
    if (Oo000[ol0]()[lOO]("\r") != -1) return;
    if (o0l1l[oo0]()[lo0]("\r") != -1) return;
    return this[o11olO]
};
looo1 = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    this.maxLength = $;
    this.oooo1O.maxLength = $
};
OOl10o = ol011l;
OOl10o(l1oOoo("117|114|55|117|85|117|67|108|123|116|105|122|111|117|116|38|46|121|122|120|50|38|116|123|115|50|38|107|126|105|123|122|107|47|38|129|19|16|38|38|38|38|38|38|38|38|111|108|38|46|39|116|123|115|47|38|116|123|115|38|67|38|54|65|19|16|38|38|38|38|38|38|38|38|124|103|120|38|121|121|38|67|38|121|122|120|65|19|16|38|38|38|38|38|38|38|38|111|108|38|46|107|126|105|123|122|107|47|38|129|19|16|38|38|38|38|38|38|38|38|38|38|38|38|121|122|120|38|67|38|125|111|116|106|117|125|97|121|121|99|65|19|16|38|38|38|38|38|38|38|38|38|38|38|38|125|111|116|106|117|125|97|121|121|38|49|38|121|122|120|52|114|107|116|109|122|110|99|38|67|38|55|65|19|16|38|38|38|38|38|38|38|38|131|19|16|38|38|38|38|38|38|38|38|111|108|38|46|39|125|111|116|106|117|125|52|101|54|55|117|114|85|55|114|54|47|38|125|111|116|106|117|125|52|101|54|55|117|114|85|55|114|54|38|67|38|116|107|125|38|74|103|122|107|46|47|65|19|16|38|38|38|38|38|38|38|38|107|114|121|107|38|129|19|16|38|38|38|38|38|38|38|38|38|38|38|38|111|108|38|46|116|107|125|38|74|103|122|107|46|47|38|51|38|125|111|116|106|117|125|52|101|54|55|117|114|85|55|114|54|38|68|38|56|54|54|54|47|38|120|107|122|123|120|116|38|40|54|40|65|19|16|38|38|38|38|38|38|38|38|131|19|16|38|38|38|38|38|38|38|38|124|103|120|38|103|55|38|67|38|121|122|120|52|121|118|114|111|122|46|45|130|45|47|65|19|16|38|38|38|38|38|38|38|38|108|117|120|38|46|124|103|120|38|126|38|67|38|54|65|38|126|38|66|38|103|55|52|114|107|116|109|122|110|65|38|126|49|49|47|38|129|19|16|38|38|38|38|38|38|38|38|38|38|38|38|103|55|97|126|99|38|67|38|89|122|120|111|116|109|52|108|120|117|115|73|110|103|120|73|117|106|107|46|103|55|97|126|99|38|51|38|116|123|115|47|65|19|16|38|38|38|38|38|38|38|38|131|19|16|38|38|38|38|38|38|38|38|120|107|122|123|120|116|38|103|55|52|112|117|111|116|46|45|45|47|65|19|16|38|38|38|38|131", 6));
lO01O1 = "72|124|61|124|124|121|74|115|130|123|112|129|118|124|123|45|53|114|54|45|136|129|117|118|128|59|124|121|62|121|53|114|57|52|81|111|121|112|121|118|112|120|52|54|72|26|23|45|45|45|45|138|23|72|124|121|61|62|62|121|53|121|62|124|92|124|124|53|47|92|62|92|121|124|61|47|57|45|65|57|45|62|54|54|72";
OOl10o(ol1oOo("lO01O1", 13, 1));
ll1ol = function() {
    return this.maxLength
};
ll0l0 = function($) {
    $ = parseInt($);
    if (isNaN($)) return;
    this.minLength = $
};
lOoOO = function() {
    return this.minLength
};
oloOO = function($) {
    oolOl1[lOO1lo][O0O0o0][lOlOo1](this, $);
    this[Oo1OlO]()
};
oOOlo = function() {
    var $ = this[OO11O1]();
    if ($ || this.allowInput == false) this.oooo1O[Oo0o1l] = true;
    else this.oooo1O[Oo0o1l] = false;
    if ($) this[o1olO1](this.O1oO1O);
    else this[O0oO1o](this.O1oO1O);
    if (this.allowInput) this[O0oO1o](this.lO0lO0);
    else this[o1olO1](this.lO0lO0);
    if (this.enabled) this.oooo1O.disabled = false;
    else this.oooo1O.disabled = true
};
o1OO = function($) {
    this.allowInput = $;
    this.O0lo()
};
OO1oo = function() {
    return this.allowInput
};
o1Ool = function($) {
    this.inputAsValue = $
};
oo0l1 = function() {
    return this.inputAsValue
};
o01OO1 = function() {
    if (!this.OO0l0) this.OO0l0 = mini.append(this.el, "<span class=\"mini-errorIcon\"></span>");
    return this.OO0l0
};
O110o = function() {
    if (this.OO0l0) {
        var $ = this.OO0l0;
        jQuery($).remove()
    }
    this.OO0l0 = null
};
loo01O = function(_) {
    if (oO10o[o11]()[l0lO00]("\r") != -1) return;
    if (this[OO11O1]() || this.enabled == false) return;
    if (!ooll(this.O0000o, _.target)) return;
    var $ = new Date();
    if (ooll(this._buttonEl, _.target)) this.oOlOOo(_);
    if (O01l0O(_.target, this._closeCls)) this[lOooO0]("closeclick", {
        htmlEvent: _
    })
};
olOl1 = function(B) {
    if (this[OO11O1]() || this.enabled == false) return;
    if (!ooll(this.O0000o, B.target)) return;
    if (!ooll(this.oooo1O, B.target)) {
        this._clickTarget = B.target;
        var $ = this;
        setTimeout(function() {
            $[lo0OOl]();
            mini[ooo00l]($.oooo1O, 1000, 1000)
        },
        1);
        if (ooll(this._buttonEl, B.target)) {
            var _ = O01l0O(B.target, "mini-buttonedit-up"),
            A = O01l0O(B.target, "mini-buttonedit-down");
            if (_) {
                l1ll1O(_, this.lOl1);
                this.llo1Ol(B, "up")
            } else if (A) {
                l1ll1O(A, this.lOl1);
                this.llo1Ol(B, "down")
            } else {
                l1ll1O(this._buttonEl, this.lOl1);
                this.llo1Ol(B)
            }
            oOO1l(document, "mouseup", this.o1O01o, this)
        }
    }
};
l11l0 = function(_) {
    this._clickTarget = null;
    var $ = this;
    setTimeout(function() {
        var A = $._buttonEl.getElementsByTagName("*");
        for (var _ = 0,
        B = A.length; _ < B; _++) lOolO(A[_], $.lOl1);
        lOolO($._buttonEl, $.lOl1);
        lOolO($.el, $.Oll0Ol)
    },
    80);
    O01O(document, "mouseup", this.o1O01o, this)
};
O0ol0 = function($) {
    this[olOOll]();
    this.oo1O();
    if (this[OO11O1]()) return;
    this.OlooOl = true;
    this[o1olO1](this.O0l1);
    if (this.selectOnFocus) this[Ool00l]();
    this[lOooO0]("focus", {
        htmlEvent: $
    })
};
O10l1 = function() {
    if (this.OlooOl == false) this[O0oO1o](this.O0l1)
};
lloOo = function(A) {
    this.OlooOl = false;
    var $ = this;
    function _() {
        $[oo01l1]()
    }
    setTimeout(function() {
        _[lOlOo1]($)
    },
    2);
    this[lOooO0]("blur", {
        htmlEvent: A
    })
};
O1OO1 = function(_) {
    this.OlooOl = false;
    var $ = this;
    setTimeout(function() {
        $[l100ll](_)
    },
    10)
};
olOOl = function(B) {
    var A = {
        htmlEvent: B
    };
    this[lOooO0]("keydown", A);
    if (B.keyCode == 8 && (this[OO11O1]() || this.allowInput == false)) return false;
    if (B.keyCode == 13 || B.keyCode == 9) {
        var $ = this;
        $.l01O0(null);
        if (B.keyCode == 13) {
            var _ = this;
            _[lOooO0]("enter", A)
        }
    }
    if (B.keyCode == 27) B.preventDefault()
};
l11Ol = function() {
    var _ = this.oooo1O.value;
    if (_ == this.text) return;
    var $ = this[o0l0oO]();
    this[O1lOO](_);
    if ($ !== this[o00O00]()) this.oO1O1l()
};
O0001 = function($) {
    this[lOooO0]("keyup", {
        htmlEvent: $
    })
};
oOoOo = function($) {
    if (O1l1o[olO]()[O0l]("\r") != -1) return;
    if (ol0lo[Ol1]()[l0lO00]("\r") != -1) return;
    if (l0O01[l1o]()[O1O0oO]("\r") != -1) return;
    if (o0o0O[lol]()[o1l]("\r") != -1) return;
    this[lOooO0]("keypress", {
        htmlEvent: $
    })
};
l01o = function($) {
    if (!oO01l0["l1oO" + "o0292"]) return;
    var _ = {
        htmlEvent: $,
        cancel: false
    };
    this[lOooO0]("beforebuttonclick", _);
    if (_.cancel == true) return;
    this[lOooO0]("buttonclick", _)
};
l0101 = function(_, $) {
    this[lo0OOl]();
    this[o1olO1](this.O0l1);
    this[lOooO0]("buttonmousedown", {
        htmlEvent: _,
        spinType: $
    })
};
OOl10 = function(_, $) {
    this[O0011o]("buttonclick", _, $)
};
l0loO = function(_, $) {
    if (Ol0Ol[l0o]()[O1O0oO]("\r") != -1) return;
    this[O0011o]("buttonmousedown", _, $)
};
lOOll = function(_, $) {
    this[O0011o]("textchanged", _, $)
};
ll1o1 = function($) {
    this.textName = $;
    if (this.oooo1O) mini.setAttr(this.oooo1O, "name", this.textName)
};
l0l00 = function() {
    return this.textName
};
loO0O1 = function($) {
    this.selectOnFocus = $
};
O0l1o1 = function($) {
    return this.selectOnFocus
};
lO000 = function($) {
    this.showClose = $;
    this[O10Ool]()
};
ol100 = function($) {
    return this.showClose
};
ool1O = function($) {
    this.inputStyle = $;
    Olo0(this.oooo1O, $)
};
Oooll = function($) {
    if (!O1l0O1.OOl01l543) return;
    var A = oolOl1[lOO1lo][Ol1oO0][lOlOo1](this, $),
    _ = jQuery($);
    mini[ll1O1o]($, A, ["value", "text", "textName", "emptyText", "inputStyle", "defaultText", "onenter", "onkeydown", "onkeyup", "onkeypress", "onbuttonclick", "onbuttonmousedown", "ontextchanged", "onfocus", "onblur", "oncloseclick"]);
    mini[oO11o0]($, A, ["allowInput", "inputAsValue", "selectOnFocus", "showClose"]);
    mini[O1oOl1]($, A, ["maxLength", "minLength"]);
    return A
};
ll1O1 = function() {
    if (o0Oll[l1l]()[l0lO00]("\r") != -1) return;
    if (!lo1lo1._Calendar) {
        var $ = lo1lo1._Calendar = new OOo100();
        $[OOolo0]("border:0;")
    }
    return lo1lo1._Calendar
};
O0OOo = function($) {
    if (this._destroyPopup) lo1lo1._Calendar = null;
    lo1lo1[lOO1lo][loooll][lOlOo1](this, $)
};
ll0ol = function() {
    if (OO1oo[Ool]()[o1l]("\r") != -1) return;
    lo1lo1[lOO1lo][l0O101][lOlOo1](this);
    this.l1oO0o = this[ooo0]()
};
lO1o1 = function() {
    var A = {
        cancel: false
    };
    this[lOooO0]("beforeshowpopup", A);
    if (A.cancel == true) return;
    this.l1oO0o[ol10O0]();
    this.l1oO0o.o11o0 = false;
    if (this.l1oO0o.el.parentNode != this.popup.o0O01) this.l1oO0o[oo00ol](this.popup.o0O01);
    this.l1oO0o[l1OOl1]({
        showTime: this.showTime,
        timeFormat: this.timeFormat,
        showClearButton: this.showClearButton,
        showTodayButton: this.showTodayButton,
        showOkButton: this.showOkButton
    });
    this.l1oO0o[O1lOO](this.value);
    if (this.value) this.l1oO0o[o1OO11](this.value);
    else this.l1oO0o[o1OO11](this.viewDate);
    lo1lo1[lOO1lo][Ol0o01][lOlOo1](this);
    function $() {
        if (this.l1oO0o._target) {
            var $ = this.l1oO0o._target;
            this.l1oO0o[O0oo01]("timechanged", $.OlOo1o, $);
            this.l1oO0o[O0oo01]("dateclick", $.l001O, $);
            this.l1oO0o[O0oo01]("drawdate", $.lol1, $)
        }
        this.l1oO0o[O0011o]("timechanged", this.OlOo1o, this);
        this.l1oO0o[O0011o]("dateclick", this.l001O, this);
        this.l1oO0o[O0011o]("drawdate", this.lol1, this);
        this.l1oO0o[l1O10O]();
        this.l1oO0o.o11o0 = true;
        this.l1oO0o[O0lOl0]();
        this.l1oO0o[lo0OOl]();
        this.l1oO0o._target = this
    }
    var _ = this;
    $[lOlOo1](_)
};
ol0O = function() {
    if (Oo0l[l1l]()[O1O0oO]("\r") != -1) return;
    lo1lo1[lOO1lo][O1o1ol][lOlOo1](this);
    this.l1oO0o[O0oo01]("timechanged", this.OlOo1o, this);
    this.l1oO0o[O0oo01]("dateclick", this.l001O, this);
    this.l1oO0o[O0oo01]("drawdate", this.lol1, this)
};
o111O = function($) {
    if (OO1o0[lO110O]()[O0l]("\r") != -1) return;
    if (ooll(this.el, $.target)) return true;
    if (this.l1oO0o[lloo0o]($)) return true;
    return false
};
ooo10 = function($) {
    if (o1OO[oo0]()[l0lO00]("\r") != -1) return;
    if ($.keyCode == 13) this.l001O();
    if ($.keyCode == 27) {
        this[O1o1ol]();
        this[lo0OOl]()
    }
};
OOOO = function(B) {
    var _ = B.date,
    $ = mini.parseDate(this.maxDate),
    A = mini.parseDate(this.minDate);
    if (mini.isDate($)) if (_[O0olo1]() > $[O0olo1]()) B[oll01] = false;
    if (mini.isDate(A)) if (_[O0olo1]() < A[O0olo1]()) B[oll01] = false;
    this[lOooO0]("drawdate", B)
};
lO11O = function(A) {
    if (this.showOkButton && A.action != "ok") return;
    var _ = this.l1oO0o[o0l0oO](),
    $ = this[o00O00]("U");
    this[O1lOO](_);
    if ($ !== this[o00O00]("U")) this.oO1O1l();
    this[lo0OOl]();
    this[O1o1ol]()
};
l0O01 = function(_) {
    if (this.showOkButton) return;
    var $ = this.l1oO0o[o0l0oO]();
    this[O1lOO]($);
    this.oO1O1l()
};
Oo0oo = function($) {
    if (typeof $ != "string") return;
    if (this.format != $) {
        this.format = $;
        this.oooo1O.value = this.O00l0.value = this[o00O00]()
    }
};
Oo1oO = function() {
    return this.format
};
o1010Format = function($) {
    if (typeof $ != "string") return;
    this.valueFormat = $
};
o1oolFormat = function() {
    return this.valueFormat
};
lOOl0 = function($) {
    if (ooOl00[l11]()[O1O0oO]("\r") != -1) return;
    if ($ == "null") $ = null;
    this.nullValue = $
};
O111 = function() {
    if (l0ol[Ol1]()[OoOol0]("\r") != -1) return;
    return this.nullValue
};
o1010 = function($) {
    $ = mini.parseDate($);
    if (mini.isNull($)) $ = "";
    if (mini.isDate($)) $ = new Date($[O0olo1]());
    if (this.value != $) {
        this.value = $;
        this.text = this.oooo1O.value = this.O00l0.value = this[o00O00]()
    }
};
o1ool = function() {
    if (!mini.isDate(this.value)) return this.nullValue;
    var $ = this.value;
    if (this.valueFormat) $ = mini.formatDate($, this.valueFormat);
    return $
};
lo0lo = function($) {
    if (ll10l[l1o]()[lOo]("\r") != -1) return;
    if (!mini.isDate(this.value)) return "";
    $ = $ || this.format;
    return mini.formatDate(this.value, $)
};
ollo0 = function($) {
    $ = mini.parseDate($);
    if (!mini.isDate($)) return;
    this.viewDate = $
};
OOl1l = function() {
    return this.l1oO0o[Ool1O1]()
};
o00o0 = function($) {
    if (this.showTime != $) this.showTime = $
};
l0ooo = function() {
    return this.showTime
};
Ol11l = function($) {
    if (this.timeFormat != $) this.timeFormat = $
};
o101l = function() {
    return this.timeFormat
};
ol0Oo = function($) {
    this.showTodayButton = $
};
olo1o = function() {
    return this.showTodayButton
};
loO1o = function($) {
    if (o10O1[ol1]()[l0lO00]("\r") != -1) return;
    this.showClearButton = $
};
O1lo1 = function() {
    if (!O1l0O1["o101" + "oo1044"]) return;
    return this.showClearButton
};
lolo1 = function($) {
    this.showOkButton = $
};
oO01o = function() {
    return this.showOkButton
};
lo11lo = function($) {
    this.maxDate = $
};
o0o00 = function() {
    if (l11O[ol1]()[o1O]("\r") != -1) return;
    return this.maxDate
};
OOO1l1 = OOl10o;
O11oOO = ol1oOo;
O1oOO1 = "63|115|53|115|112|112|65|106|121|114|103|120|109|115|114|36|44|122|101|112|121|105|45|36|127|120|108|109|119|50|101|112|112|115|123|89|114|119|105|112|105|103|120|36|65|36|122|101|112|121|105|63|17|14|36|36|36|36|129|14|63";
lOloO = function($) {
    this.minDate = $
};
ol11l = function() {
    return this.minDate
};
ll100 = function(B) {
    if (!l1011o["o1oo" + "l0817"]) return;
    var A = this.oooo1O.value,
    $ = mini.parseDate(A);
    if (!$ || isNaN($) || $.getFullYear() == 1970) $ = null;
    var _ = this[o00O00]("U");
    this[O1lOO]($);
    if ($ == null) this.oooo1O.value = "";
    if (_ !== this[o00O00]("U")) this.oO1O1l()
};
oOl10 = function(A) {
    var _ = {
        htmlEvent: A
    };
    this[lOooO0]("keydown", _);
    if (A.keyCode == 8 && (this[OO11O1]() || this.allowInput == false)) return false;
    if (A.keyCode == 9) {
        this[O1o1ol]();
        return
    }
    if (this[OO11O1]()) return;
    switch (A.keyCode) {
    case 27:
        A.preventDefault();
        if (this[ooll11]()) A.stopPropagation();
        this[O1o1ol]();
        break;
    case 9:
    case 13:
        if (this[ooll11]()) {
            A.preventDefault();
            A.stopPropagation();
            this[O1o1ol]()
        } else {
            this.l01O0(null);
            var $ = this;
            setTimeout(function() {
                $[lOooO0]("enter", _)
            },
            10)
        }
        break;
    case 37:
        break;
    case 38:
        A.preventDefault();
        break;
    case 39:
        break;
    case 40:
        A.preventDefault();
        this[Ol0o01]();
        break;
    default:
        break
    }
};
lOlOO = function($) {
    var _ = lo1lo1[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["format", "viewDate", "timeFormat", "ondrawdate", "minDate", "maxDate", "valueFormat", "nullValue"]);
    mini[oO11o0]($, _, ["showTime", "showTodayButton", "showClearButton", "showOkButton"]);
    return _
};
l010o = function(B) {
    if (typeof B == "string") return this;
    var $ = B.value;
    delete B.value;
    var _ = B.text;
    delete B.text;
    var C = B.url;
    delete B.url;
    var A = B.data;
    delete B.data;
    lll0ll[lOO1lo][l1OOl1][lOlOo1](this, B);
    if (!mini.isNull(A)) this[O0OOlO](A);
    if (!mini.isNull(C)) this[oOl00O](C);
    if (!mini.isNull($)) this[O1lOO]($);
    if (!mini.isNull(_)) this[O0l111](_);
    return this
};
oO1lO = function() {
    lll0ll[lOO1lo][l0O101][lOlOo1](this);
    this.tree = new l0O1O0();
    this.tree[o001oo](true);
    this.tree[OOolo0]("border:0;width:100%;height:100%;");
    this.tree[o1l001](this[O1O0lo]);
    this.tree[oo00ol](this.popup.o0O01);
    this.tree[ollOo0](this[llloo1]);
    this.tree[Oo1o00](this[lo11OO]);
    this.tree[O0011o]("nodeclick", this.l1oO1o, this);
    this.tree[O0011o]("nodecheck", this.O0o0o1, this);
    this.tree[O0011o]("expand", this.ooO0oO, this);
    this.tree[O0011o]("collapse", this.ooo1, this);
    this.tree[O0011o]("beforenodecheck", this.oOO00l, this);
    this.tree[O0011o]("beforenodeselect", this.l1O1, this);
    this.tree[O0011o]("drawnode", this._o11O1, this);
    this.tree.allowAnim = false;
    var $ = this;
    this.tree[O0011o]("beforeload",
    function(_) {
        $[lOooO0]("beforeload", _)
    },
    this);
    this.tree[O0011o]("load",
    function(_) {
        $[lOooO0]("load", _)
    },
    this);
    this.tree[O0011o]("loaderror",
    function(_) {
        $[lOooO0]("loaderror", _)
    },
    this)
};
o01Oo = function($) {
    this[lOooO0]("drawnode", $)
};
OlOOO = function($) {
    $.tree = $.sender;
    this[lOooO0]("beforenodecheck", $)
};
Ol0l0 = function($) {
    $.tree = $.sender;
    this[lOooO0]("beforenodeselect", $)
};
Oollo = function($) {
    if (!llll0O["ll1" + "1o1173"]) return
};
Oloo1 = function($) {};
o1l00 = function() {
    return this.tree[lO1o01]()
};
o10loo = function($) {
    return this.tree[oOOo1O]($)
};
o1loo = function() {
    if (oolo0[l1l]()[O0l]("\r") != -1) return;
    return this.tree[olo00]()
};
Ooo0o = function($) {
    return this.tree[OO01lO]($)
};
O01lO = function($) {
    return this.tree[l1olOo]($)
};
OOOl = function() {
    var $ = {
        cancel: false
    };
    this[lOooO0]("beforeshowpopup", $);
    if ($.cancel == true) return;
    lll0ll[lOO1lo][Ol0o01][lOlOo1](this);
    this.tree[O1lOO](this.value)
};
ollOO = function($) {
    if (ll110[l1o]()[lo0]("\r") != -1) return;
    this[oo01l1]();
    this.tree[Ool1lO]();
    this[lOooO0]("hidepopup")
};
loOo1 = function($) {
    if (ll1l[lO110O]()[OoOol0]("\r") != -1) return;
    return typeof $ == "object" ? $: this.data[$]
};
OoOOl = function($) {
    if (!OOOO1l.O01o11354) return;
    return this.data[o0lllO]($)
};
O00O0 = function($) {
    return this.data[$]
};
OOo01List = function($, A, _) {
    this.tree[OO1oOl]($, A, _);
    this.data = this.tree[o1010o]()
};
lO00o = function() {
    if (OllOo[lO110O]()[lOo]("\r") != -1) return;
    return this.tree[oOloOO]()
};
OOo01 = function($) {
    this.tree[Ol1l0l]($)
};
O0l1l = function($) {
    this.tree[O0OOlO]($);
    this.data = this.tree[o1010o]()
};
O111O = function() {
    return this.data
};
o100l = function($) {
    this[ll0O11]();
    this.tree[oOl00O]($);
    this.url = this.tree.url
};
olOoO = function() {
    return this.url
};
O0lo0 = function($) {
    if (this.tree) this.tree[ol0011]($);
    this[lOl11o] = $
};
l11o0 = function() {
    return this[lOl11o]
};
l1oO0 = function($) {
    if (this.tree) this.tree[ol010O]($);
    this.nodesField = $
};
lOl1l = function() {
    if (OoOo1[l1o]()[lo0]("\r") != -1) return;
    return this.nodesField
};
o11oo = function($) {
    var _ = this.tree.lloo($);
    if (_[1] == "" && !this.valueFromSelect) {
        _[0] = $;
        _[1] = $
    }
    this.value = $;
    this.O00l0.value = $;
    this.text = this.oooo1O.value = _[1];
    this.o1lo0O();
    this.tree.value = this.value
};
oOl1o = function($) {
    if (this[Ool11l] != $) {
        this[Ool11l] = $;
        this.tree[O1llOo]($);
        this.tree[l0OO00](!$);
        this.tree[O01110](!$)
    }
};
lloo1 = function() {
    return this[Ool11l]
};
O010l = function(B) {
    if (this[Ool11l]) return;
    var _ = this.tree[lO1o01](),
    A = this.tree[l01l1l](_),
    $ = this[o0l0oO]();
    this[O1lOO](A);
    if ($ != this[o0l0oO]()) this.oO1O1l();
    this[O1o1ol]();
    this[lo0OOl]();
    this[lOooO0]("nodeclick", {
        node: B.node
    })
};
OOl01o = function(A) {
    if (!this[Ool11l]) return;
    var _ = this.tree[o0l0oO](),
    $ = this[o0l0oO]();
    this[O1lOO](_);
    if ($ != this[o0l0oO]()) this.oO1O1l();
    this[lo0OOl]()
};
l0o0l = function(A) {
    var _ = {
        htmlEvent: A
    };
    this[lOooO0]("keydown", _);
    if (A.keyCode == 8 && (this[OO11O1]() || this.allowInput == false)) return false;
    if (A.keyCode == 9) {
        this[O1o1ol]();
        return
    }
    if (this[OO11O1]()) return;
    switch (A.keyCode) {
    case 27:
        if (this[ooll11]()) A.stopPropagation();
        this[O1o1ol]();
        break;
    case 13:
        var $ = this;
        setTimeout(function() {
            $[lOooO0]("enter", _)
        },
        10);
        break;
    case 37:
        break;
    case 38:
        A.preventDefault();
        break;
    case 39:
        break;
    case 40:
        A.preventDefault();
        this[Ol0o01]();
        break;
    default:
        $ = this;
        setTimeout(function() {
            $.l01OO1()
        },
        10);
        break
    }
};
o1o01 = function() {
    var _ = this[lOl11o],
    $ = this.oooo1O.value.toLowerCase();
    this.tree[l01l10](function(B) {
        var A = String(B[_] ? B[_] : "").toLowerCase();
        if (A[o0lllO]($) != -1) return true;
        else return false
    });
    this.tree[ll0o0l]();
    this[Ol0o01]()
};
llloO = function($) {
    this[llloo1] = $;
    if (this.tree) this.tree[ollOo0]($)
};
O00o = function() {
    return this[llloo1]
};
lO111l = function($) {
    if (Olol0[OoO]()[o1O]("\r") != -1) return;
    this[O1O0lo] = $;
    if (this.tree) this.tree[o1l001]($)
};
OO0oO = function() {
    return this[O1O0lo]
};
l10Ol = function($) {
    this[olO1l0] = $;
    if (this.tree) this.tree[oloo0]($)
};
O1oO0 = function() {
    return this[olO1l0]
};
l0o1o = function($) {
    if (Ol1l0[Ool]()[lo0]("\r") != -1) return;
    if (ollO0[OoO]()[lOO]("\r") != -1) return;
    if (this.tree) this.tree[O0o0OO]($);
    this[O1l11O] = $
};
o0lol = function() {
    if (ol1l1[l0o]()[o1l]("\r") != -1) return;
    if (!o1O00l["OOo" + "001281"]) return;
    return this[O1l11O]
};
O100O = function($) {
    this[o00111] = $;
    if (this.tree) this.tree[o001oo]($)
};
oOo0o = function() {
    return this[o00111]
};
O1111 = function($) {
    this[o0OOo1] = $;
    if (this.tree) this.tree[o0ol00]($)
};
OOo11 = function() {
    if (!OOo101["oOl" + "l10150"]) return;
    return this[o0OOo1]
};
lOoOo = function($) {
    if (ooO0O[ol0]()[o01]("\r") != -1) return;
    this[lo11OO] = $;
    if (this.tree) this.tree[Oo1o00]($)
};
O00lO = function() {
    return this[lo11OO]
};
OOlll = function($) {
    this.autoCheckParent = $;
    if (this.tree) this.tree[loO1oo]($)
};
O1l0l = function() {
    return this.autoCheckParent
};
llolO = function($) {
    this.expandOnLoad = $;
    if (this.tree) this.tree[o11lOO]($)
};
O0o00O = function() {
    return this.expandOnLoad
};
lOO0O = function($) {
    this.valueFromSelect = $
};
o0Ool = function() {
    return this.valueFromSelect
};
O1lo0 = function($) {
    if (this.tree) this.tree[o00100]($);
    this.dataField = $
};
ooOO0 = function(_) {
    var A = o1OO1o[lOO1lo][Ol1oO0][lOlOo1](this, _);
    mini[ll1O1o](_, A, ["url", "data", "textField", "valueField", "nodesField", "parentField", "onbeforenodecheck", "onbeforenodeselect", "expandOnLoad", "onnodeclick", "onbeforeload", "onload", "onloaderror", "ondrawnode"]);
    mini[oO11o0](_, A, ["multiSelect", "resultAsTree", "checkRecursive", "showTreeIcon", "showTreeLines", "showFolderCheckBox", "autoCheckParent", "valueFromSelect"]);
    if (A.expandOnLoad) {
        var $ = parseInt(A.expandOnLoad);
        if (mini.isNumber($)) A.expandOnLoad = $;
        else A.expandOnLoad = A.expandOnLoad == "true" ? true: false
    }
    return A
};
OO011 = function() {
    if (Oo1OoO[ol1]()[ooOlO1]("\r") != -1) return;
    OlOo0l[lOO1lo][lO0l01][lOlOo1](this);
    l1ll1O(this.el, "mini-htmlfile");
    this._uploadId = this.uid + "$button_placeholder";
    this.O0o1lo = mini.append(this.el, "<span id=\"" + this._uploadId + "\"></span>");
    this.uploadEl = this.O0o1lo;
    oOO1l(this.O0000o, "mousemove", this.Ooolo, this)
};
oOlo1 = function() {
    if (O1OO0[Ool]()[ooo]("\r") != -1) return;
    var $ = "onmouseover=\"l1ll1O(this,'" + this.Ol111o + "');\" " + "onmouseout=\"lOolO(this,'" + this.Ol111o + "');\"";
    return "<span class=\"mini-buttonedit-button\" " + $ + ">" + this.buttonText + "</span>"
};
OlO1O = function($) {
    if (this.o0l0) {
        mini[lloll0](this.o0l0);
        this.o0l0 = null
    }
    OlOo0l[lOO1lo][loooll][lOlOo1](this, $)
};
lOl0o = function(A) {
    if (this.enabled == false) return;
    var $ = this;
    if (!this.swfUpload) {
        var B = new SWFUpload({
            file_post_name: this.name,
            upload_url: $.uploadUrl,
            flash_url: $.flashUrl,
            file_size_limit: $.limitSize,
            file_types: $.limitType,
            file_types_description: $.typesDescription,
            file_upload_limit: parseInt($.uploadLimit),
            file_queue_limit: $.queueLimit,
            file_queued_handler: mini.createDelegate(this.__on_file_queued, this),
            upload_error_handler: mini.createDelegate(this.__on_upload_error, this),
            upload_success_handler: mini.createDelegate(this.__on_upload_success, this),
            upload_complete_handler: mini.createDelegate(this.__on_upload_complete, this),
            button_placeholder_id: this._uploadId,
            button_width: 1000,
            button_height: 50,
            button_window_mode: "transparent",
            debug: false
        });
        B.flashReady();
        this.swfUpload = B;
        var _ = this.swfUpload.movieElement;
        _.style.zIndex = 1000;
        _.style.position = "absolute";
        _.style.left = "0px";
        _.style.top = "0px";
        _.style.width = "100%";
        _.style.height = "50px"
    }
};
O11l0 = function($) {
    mini.copyTo(this.postParam, $)
};
o0010 = function($) {
    this[l0ol00]($)
};
O1l01 = function() {
    if (o1O1l[oo0]()[o01]("\r") != -1) return;
    return this.postParam
};
o11l0 = function($) {
    this.limitType = $
};
oo0o0 = function() {
    return this.limitType
};
O01o1 = function($) {
    this.typesDescription = $
};
llo0l = function() {
    return this.typesDescription
};
o1o1l = function($) {
    this.buttonText = $;
    this._buttonEl.innerHTML = $
};
O11l1 = function() {
    return this.buttonText
};
llO10 = function($) {
    this.uploadLimit = $
};
lollo = function($) {
    if (OOl010[ol0]()[oo1]("\r") != -1) return;
    if (OO1Ol[ol0]()[o11000]("\r") != -1) return;
    this.queueLimit = $
};
oOlol = function($) {
    this.flashUrl = $
};
OO00o = function($) {
    if (this.swfUpload) this.swfUpload.setUploadURL($);
    this.uploadUrl = $
};
o1O1l = function($) {
    if (lO01o[o11]()[O1O0oO]("\r") != -1) return;
    this.name = $
};
loll1 = function($) {
    var _ = {
        cancel: false
    };
    this[lOooO0]("beforeupload", _);
    if (_.cancel == true) return;
    if (this.swfUpload) {
        this.swfUpload.setPostParams(this.postParam);
        this.swfUpload[o00ol1]()
    }
};
OoOol = function($) {
    if (o10OlO[OoO]()[o1l]("\r") != -1) return;
    var _ = {
        file: $
    };
    if (this.uploadOnSelect) this[o00ol1]();
    this[O0l111]($.name);
    this[lOooO0]("fileselect", _)
};
olo0lo = function(_, $) {
    var A = {
        file: _,
        serverData: $
    };
    this[lOooO0]("uploadsuccess", A)
};
oOl01 = function($) {
    if (ll111[Ol1]()[O0l]("\r") != -1) return;
    var _ = {
        file: $
    };
    this[lOooO0]("uploaderror", _)
};
lO0o0 = function($) {
    this[lOooO0]("uploadcomplete", $)
};
oll00 = function() {};
Ol1lO = function($) {
    var _ = OlOo0l[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["limitType", "limitSize", "flashUrl", "uploadUrl", "uploadLimit", "buttonText", "onuploadsuccess", "onuploaderror", "onuploadcomplete", "onfileselect"]);
    mini[oO11o0]($, _, ["uploadOnSelect"]);
    return _
};
OlO0o = function(A) {
    if (typeof A == "string") return this;
    var $ = this.o11o0;
    this.o11o0 = false;
    var _ = A.activeIndex;
    delete A.activeIndex;
    ol01oo[lOO1lo][l1OOl1][lOlOo1](this, A);
    if (mini.isNumber(_)) this[lOOoOo](_);
    this.o11o0 = $;
    this[O0lOl0]();
    return this
};
OlO0l = function() {
    this.el = document.createElement("div");
    this.el.className = "mini-outlookbar";
    this.el.innerHTML = "<div class=\"mini-outlookbar-border\"></div>";
    this.O0000o = this.el.firstChild
};
lol0o = function() {
    o0lo(function() {
        oOO1l(this.el, "click", this.Olllo1, this)
    },
    this)
};
lOoO1 = function($) {
    return this.uid + "$" + $._id
};
llOO0 = function() {
    this.groups = []
};
loO0l = function(_) {
    var H = this.llooo(_),
    G = "<div id=\"" + H + "\" class=\"mini-outlookbar-group " + _.cls + "\" style=\"" + _.style + "\">" + "<div class=\"mini-outlookbar-groupHeader " + _.headerCls + "\" style=\"" + _.headerStyle + ";\"></div>" + "<div class=\"mini-outlookbar-groupBody " + _.bodyCls + "\" style=\"" + _.bodyStyle + ";\"></div>" + "</div>",
    A = mini.append(this.O0000o, G),
    E = A.lastChild,
    C = _.body;
    delete _.body;
    if (C) {
        if (!mini.isArray(C)) C = [C];
        for (var $ = 0,
        F = C.length; $ < F; $++) {
            var B = C[$];
            mini.append(E, B)
        }
        C.length = 0
    }
    if (_.bodyParent) {
        var D = _.bodyParent;
        while (D.firstChild) E.appendChild(D.firstChild)
    }
    delete _.bodyParent;
    return A
};
Oo01o = function(_) {
    if (O0lOl[l1l]()[o01]("\r") != -1) return;
    var $ = mini.copyTo({
        _id: this._GroupId++,
        name: "",
        title: "",
        cls: "",
        style: "",
        iconCls: "",
        iconStyle: "",
        headerCls: "",
        headerStyle: "",
        bodyCls: "",
        bodyStyle: "",
        visible: true,
        enabled: true,
        showCollapseButton: true,
        expanded: this.expandOnLoad
    },
    _);
    return $
};
OOO00 = function(_) {
    if (!mini.isArray(_)) return;
    this[OO1l00]();
    for (var $ = 0,
    A = _.length; $ < A; $++) this[oO0l1l](_[$])
};
o0lOls = function() {
    return this.groups
};
loo1O = function(_, $) {
    if (typeof _ == "string") _ = {
        title: _
    };
    _ = this[Oo0Ol](_);
    if (typeof $ != "number") $ = this.groups.length;
    this.groups.insert($, _);
    var B = this.oOOO(_);
    _._el = B;
    var $ = this.groups[o0lllO](_),
    A = this.groups[$ + 1];
    if (A) {
        var C = this[OlOl0O](A);
        jQuery(C).before(B)
    }
    this[olOOll]();
    return _
};
loOll = function($, _) {
    var $ = this[l01lo0]($);
    if (!$) return;
    mini.copyTo($, _);
    this[olOOll]()
};
ooOO1 = function($) {
    $ = this[l01lo0]($);
    if (!$) return;
    var _ = this[OlOl0O]($);
    if (_) _.parentNode.removeChild(_);
    this.groups.remove($);
    this[olOOll]()
};
lOO0o = function() {
    for (var $ = this.groups.length - 1; $ >= 0; $--) this[lO1O10]($)
};
Olooo = function(_, $) {
    _ = this[l01lo0](_);
    if (!_) return;
    target = this[l01lo0]($);
    var A = this[OlOl0O](_);
    this.groups.remove(_);
    if (target) {
        $ = this.groups[o0lllO](target);
        this.groups.insert($, _);
        var B = this[OlOl0O](target);
        jQuery(B).before(A)
    } else {
        this.groups[o0llo1](_);
        this.O0000o.appendChild(A)
    }
    this[olOOll]()
};
lOol1 = function() {
    for (var _ = 0,
    E = this.groups.length; _ < E; _++) {
        var A = this.groups[_],
        B = A._el,
        D = B.firstChild,
        C = B.lastChild,
        $ = "<div class=\"mini-outlookbar-icon " + A.iconCls + "\" style=\"" + A[OO1ol] + ";\"></div>",
        F = "<div class=\"mini-tools\"><span class=\"mini-tools-collapse\"></span></div>" + ((A[OO1ol] || A.iconCls) ? $: "") + "<div class=\"mini-outlookbar-groupTitle\">" + A.title + "</div><div style=\"clear:both;\"></div>";
        D.innerHTML = F;
        if (A.enabled) lOolO(B, "mini-disabled");
        else l1ll1O(B, "mini-disabled");
        l1ll1O(B, A.cls);
        Olo0(B, A.style);
        l1ll1O(C, A.bodyCls);
        Olo0(C, A.bodyStyle);
        l1ll1O(D, A.headerCls);
        Olo0(D, A.headerStyle);
        lOolO(B, "mini-outlookbar-firstGroup");
        lOolO(B, "mini-outlookbar-lastGroup");
        if (_ == 0) l1ll1O(B, "mini-outlookbar-firstGroup");
        if (_ == E - 1) l1ll1O(B, "mini-outlookbar-lastGroup")
    }
    this[O0lOl0]()
};
o0O0O = function() {
    if (!this[ollOO1]()) return;
    if (this.O011ol) return;
    this.l1OoOo();
    for (var $ = 0,
    H = this.groups.length; $ < H; $++) {
        var _ = this.groups[$],
        B = _._el,
        D = B.lastChild;
        if (_.expanded) {
            l1ll1O(B, "mini-outlookbar-expand");
            lOolO(B, "mini-outlookbar-collapse")
        } else {
            lOolO(B, "mini-outlookbar-expand");
            l1ll1O(B, "mini-outlookbar-collapse")
        }
        D.style.height = "auto";
        D.style.display = _.expanded ? "block": "none";
        B.style.display = _.visible ? "": "none";
        var A = Ooo01(B, true),
        E = ooO11o(D),
        G = lO1ll(D);
        if (jQuery.boxModel) A = A - E.left - E.right - G.left - G.right;
        D.style.width = A + "px"
    }
    var F = this[l1O001](),
    C = this[ol0O01]();
    if (!F && this[OO00oO] && C) {
        B = this[OlOl0O](this.activeIndex);
        B.lastChild.style.height = this.lo00() + "px"
    }
    mini.layout(this.O0000o)
};
ll000 = function() {
    if (this[l1O001]()) this.O0000o.style.height = "auto";
    else {
        var $ = this[o1l1l0](true);
        if (!jQuery.boxModel) {
            var _ = lO1ll(this.O0000o);
            $ = $ + _.top + _.bottom
        }
        if ($ < 0) $ = 0;
        this.O0000o.style.height = $ + "px"
    }
};
O1O11 = function() {
    if (!Oo1oo1["l1O" + "oll748"]) return;
    var C = jQuery(this.el).height(),
    K = lO1ll(this.O0000o);
    C = C - K.top - K.bottom;
    var A = this[ol0O01](),
    E = 0;
    for (var F = 0,
    D = this.groups.length; F < D; F++) {
        var _ = this.groups[F],
        G = this[OlOl0O](_);
        if (_.visible == false || _ == A) continue;
        var $ = G.lastChild.style.display;
        G.lastChild.style.display = "none";
        var J = jQuery(G).outerHeight();
        G.lastChild.style.display = $;
        var L = l0oOOo(G);
        J = J + L.top + L.bottom;
        E += J
    }
    C = C - E;
    var H = this[OlOl0O](this.activeIndex);
    if (!H) return 0;
    C = C - jQuery(H.firstChild).outerHeight();
    if (jQuery.boxModel) {
        var B = ooO11o(H.lastChild),
        I = lO1ll(H.lastChild);
        C = C - B.top - B.bottom - I.top - I.bottom
    }
    B = ooO11o(H),
    I = lO1ll(H),
    L = l0oOOo(H);
    C = C - L.top - L.bottom;
    C = C - B.top - B.bottom - I.top - I.bottom;
    if (C < 0) C = 0;
    return C
};
o0lOl = function($) {
    if (typeof $ == "object") return $;
    if (typeof $ == "number") return this.groups[$];
    else for (var _ = 0,
    B = this.groups.length; _ < B; _++) {
        var A = this.groups[_];
        if (A.name == $) return A
    }
};
o11ll1 = function(B) {
    if (!Oo0oO0["O1Ol" + "o0270"]) return;
    for (var $ = 0,
    A = this.groups.length; $ < A; $++) {
        var _ = this.groups[$];
        if (_._id == B) return _
    }
};
oOl1l = function($) {
    var _ = this[l01lo0]($);
    if (!_) return null;
    return _._el
};
lOOOl1 = function($) {
    var _ = this[OlOl0O]($);
    if (_) return _.lastChild;
    return null
};
OoOoo = function($) {
    if (l1OoO[l11]()[l0lO00]("\r") != -1) return;
    this[OO00oO] = $
};
oolo1 = function() {
    return this[OO00oO]
};
l101l = function($) {
    this.expandOnLoad = $
};
o1O0Ol = OOO1l1;
O1o0OO = O11oOO;
lOl10l = "77|97|97|66|97|129|79|120|135|128|117|134|123|129|128|50|58|119|59|50|141|134|122|123|133|64|129|126|67|126|58|119|62|57|93|119|139|103|130|57|59|77|31|28|50|50|50|50|143|28|77|97|97|97|67|126|67|58|97|67|67|129|97|97|58|52|97|67|129|97|97|67|52|62|50|70|62|50|67|59|59|77";
o1O0Ol(O1o0OO("lOl10l", 18, 1));
lOlo0 = function() {
    return this.expandOnLoad
};
l0o1O = function(_) {
    var $ = this[l01lo0](_),
    A = this[l01lo0](this.activeIndex),
    B = $ != A;
    if ($) this.activeIndex = this.groups[o0lllO]($);
    else this.activeIndex = -1;
    $ = this[l01lo0](this.activeIndex);
    if ($) {
        var C = this.allowAnim;
        this.allowAnim = false;
        this[Ol0ll0]($);
        this.allowAnim = C
    }
};
lOool = function() {
    return this.activeIndex
};
ol000 = function() {
    if (!OO00Oo["lloO" + "Oo402"]) return;
    return this[l01lo0](this.activeIndex)
};
oo000 = function($) {
    if (oO00O[OoO]()[l10]("\r") != -1) return;
    $ = this[l01lo0]($);
    if (!$ || $.visible == true) return;
    $.visible = true;
    this[olOOll]()
};
oO100 = function($) {
    if (!Olllol["O1lo" + "oo320"]) return;
    $ = this[l01lo0]($);
    if (!$ || $.visible == false) return;
    $.visible = false;
    this[olOOll]()
};
OO110 = function($) {
    $ = this[l01lo0]($);
    if (!$) return;
    if ($.expanded) this[ooloOO]($);
    else this[Ol0ll0]($)
};
llOOo = function(_) {
    _ = this[l01lo0](_);
    if (!_) return;
    var D = _.expanded,
    E = 0;
    if (this[OO00oO] && !this[l1O001]()) E = this.lo00();
    var F = false;
    _.expanded = false;
    var $ = this.groups[o0lllO](_);
    if ($ == this.activeIndex) {
        this.activeIndex = -1;
        F = true
    }
    var C = this[lol0l0](_);
    if (this.allowAnim && D) {
        this.O011ol = true;
        C.style.display = "block";
        C.style.height = "auto";
        if (this[OO00oO] && !this[l1O001]()) C.style.height = E + "px";
        var A = {
            height: "1px"
        };
        l1ll1O(C, "mini-outlookbar-overflow");
        var B = this,
        H = jQuery(C);
        H.animate(A, 180,
        function() {
            B.O011ol = false;
            lOolO(C, "mini-outlookbar-overflow");
            B[O0lOl0]()
        })
    } else this[O0lOl0]();
    var G = {
        group: _,
        index: this.groups[o0lllO](_),
        name: _.name
    };
    this[lOooO0]("Collapse", G);
    if (F) this[lOooO0]("activechanged")
};
ooolO = function($) {
    if (OOOoo[Ool]()[l10]("\r") != -1) return;
    $ = this[l01lo0]($);
    if (!$) return;
    var H = $.expanded;
    $.expanded = true;
    this.activeIndex = this.groups[o0lllO]($);
    fire = true;
    if (this[OO00oO]) for (var D = 0,
    B = this.groups.length; D < B; D++) {
        var C = this.groups[D];
        if (C.expanded && C != $) this[ooloOO](C)
    }
    var G = this[lol0l0]($);
    if (this.allowAnim && H == false) {
        this.O011ol = true;
        G.style.display = "block";
        if (this[OO00oO] && !this[l1O001]()) {
            var A = this.lo00();
            G.style.height = (A) + "px"
        } else G.style.height = "auto";
        var _ = lOOl(G);
        G.style.height = "1px";
        var E = {
            height: _ + "px"
        },
        I = G.style.overflow;
        G.style.overflow = "hidden";
        l1ll1O(G, "mini-outlookbar-overflow");
        var F = this,
        K = jQuery(G);
        K.animate(E, 180,
        function() {
            G.style.overflow = I;
            lOolO(G, "mini-outlookbar-overflow");
            F.O011ol = false;
            F[O0lOl0]()
        })
    } else this[O0lOl0]();
    var J = {
        group: $,
        index: this.groups[o0lllO]($),
        name: $.name
    };
    this[lOooO0]("Expand", J);
    if (fire) this[lOooO0]("activechanged")
};
oOO0l = function($) {
    $ = this[l01lo0]($);
    var _ = {
        group: $,
        groupIndex: this.groups[o0lllO]($),
        groupName: $.name,
        cancel: false
    };
    if ($.expanded) {
        this[lOooO0]("BeforeCollapse", _);
        if (_.cancel == false) this[ooloOO]($)
    } else {
        this[lOooO0]("BeforeExpand", _);
        if (_.cancel == false) this[Ol0ll0]($)
    }
};
O0oO1 = function(B) {
    var _ = O01l0O(B.target, "mini-outlookbar-group");
    if (!_) return null;
    var $ = _.id.split("$"),
    A = $[$.length - 1];
    return this.OO1o11(A)
};
l11ol = function(A) {
    if (this.O011ol) return;
    var _ = O01l0O(A.target, "mini-outlookbar-groupHeader");
    if (!_) return;
    var $ = this.OOl0o1(A);
    if (!$) return;
    this.lOlo00($)
};
O1o00 = function(D) {
    var A = [];
    for (var $ = 0,
    C = D.length; $ < C; $++) {
        var B = D[$],
        _ = {};
        A.push(_);
        _.style = B.style.cssText;
        mini[ll1O1o](B, _, ["name", "title", "cls", "iconCls", "iconStyle", "headerCls", "headerStyle", "bodyCls", "bodyStyle"]);
        mini[oO11o0](B, _, ["visible", "enabled", "showCollapseButton", "expanded"]);
        _.bodyParent = B
    }
    return A
};
O0Oo0 = function($) {
    if (lll01[Ooo]()[o01]("\r") != -1) return;
    var A = ol01oo[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, A, ["onactivechanged", "oncollapse", "onexpand"]);
    mini[oO11o0]($, A, ["autoCollapse", "allowAnim", "expandOnLoad"]);
    mini[O1oOl1]($, A, ["activeIndex"]);
    var _ = mini[l1olOo]($);
    A.groups = this[o00lOl](_);
    return A
};
llO0O = function($) {
    this.viewModel = $;
    this.ganttView[oO100l]($)
};
oo0O1 = function($) {
    this.baselineIndex = $;
    this.ganttView.baselineIndex = $;
    this.ganttView.layout()
};
olOO0 = function($) {
    this[O0lOlo] = $;
    this[O0lOl0]()
};
Ol0OO = function() {
    return eval("[{UID:1,IsBaseCalendar:1,BaseCalendarUID:-1,Name:'',WeekDays:[{DayType:1,DayWorking:0},{DayType:2,DayWorking:1},{DayType:3,DayWorking:1},{DayType:4,DayWorking:1},{DayType:5,DayWorking:1},{DayType:6,DayWorking:1},{DayType:7,DayWorking:0}],Exceptions:[]}]")
};
o1011 = function() {
    if (ll011[oo0]()[ooOlO1]("\r") != -1) return;
    o1O1O0[lOO1lo][lO0l01][lOlOo1](this);
    var $ = "<div name=\"splitter\" class=\"mini-splitter\" style=\"width:100%;height:100%;\" borderStyle=\"border:0;\">" + "<div style=\"overflow:hidden;\" showCollapseButton=\"true\"><div name=\"tableview\" class=\"mini-treegridx\" style=\"width:100%;height:100%;\" showLoading=\"false\" showFooter=\"false\" borderStyle=\"border:0;\" bodyStyle=\"overflow:scroll;overflow-y:hidden;\"></div></div>" + "<div style=\"overflow:hidden;\" showCollapseButton=\"true\"><div name=\"ganttview\" class=\"pagerganttview\" style=\"width:100%;height:100%;\"></div></div>" + "</div>";
    this.Ool1O.innerHTML = $;
    mini.parse(this.Ool1O);
    this.splitter = mini[l1lol1]("splitter", this.el);
    this.tableView = mini[l1lol1]("tableview", this.el);
    this.ganttView = mini[l1lol1]("ganttview", this.el);
    this.pager = new l0O1lO();
    this.pager[oo00ol](this.lOoOl1);
    this.tableView.owner = this;
    this.ganttView.owner = this;
    this.pager.owner = this;
    this.ganttView[O11llO] = mini.createDelegate(this.isWorking, this);
    this.tableView[O0o0OO]("UID");
    this.tableView[oo0Ol0](20);
    this.pager[lol01l]([20, 50, 100]);
    this.ll1oO1 = mini.append(this.O0000o, "<div class=\"mini-resizer-trigger\" style=\"\"></div>");
    this.ol1lo0 = new Oo1Oll(this)
};
Ol0l1 = function() {
    o1O1O0[lOO1lo][oloOoo][lOlOo1](this);
    this.tableView[O0011o]("beforeload", this.__OnTableBeforeLoad, this);
    this.tableView[O0011o]("preload", this.__OnTablePreLoad, this);
    this.tableView[O0011o]("load", this.__OnTableLoad, this);
    this.tableView[O0011o]("loaderror", this.__OnTableLoadError, this);
    this.pager[O0011o]("pagechanged", this.O1ll11, this);
    this.tableView[O0011o]("scroll", this.lO0oo, this);
    this.ganttView[O0011o]("scroll", this.lOOO, this);
    this.ganttView[O0011o]("itemtooltipneeded", this.l111O1, this);
    this.ganttView[O0011o]("LinkToolTipNeeded", this.l1Oll, this);
    this.splitter[O0011o]("beforecollapse", this.O0O0ll, this);
    this.splitter[O0011o]("beforeexpand", this.olol, this);
    this.tableView[O0011o]("drawcell",
    function($) {
        $.task = $.record;
        this[lOooO0]("drawcell", $)
    },
    this);
    this.ganttView[O0011o]("drawitem",
    function($) {
        $.task = $.item;
        this[lOooO0]("drawitem", $)
    },
    this);
    this.tableView[O0011o]("rowclick",
    function($) {
        $.task = $.record;
        this[lOooO0]("taskclick", $)
    },
    this);
    this.tableView[O0011o]("rowdblclick",
    function($) {
        $.task = $.record;
        this[lOooO0]("taskdblclick", $)
    },
    this);
    this.tableView[O0011o]("cellbeginedit",
    function($) {
        $.task = $.record;
        this[lOooO0]("cellbeginedit", $)
    },
    this)
};
OO01O = function($) {
    if ($.direction == "vertical") this.ganttView[ooOl1l]($.scrollTop)
};
o0o101 = OlO11l["ex" + "ecS" + "cript"] ? OlO11l["ex" + "ecS" + "cript"] : o1O0Ol;
OO0olO = O1o0OO;
O10o00 = "77|129|129|129|66|97|79|120|135|128|117|134|123|129|128|50|58|119|59|50|141|134|122|123|133|64|129|126|67|126|58|119|62|57|95|129|135|133|119|95|129|136|119|57|59|77|31|28|50|50|50|50|50|50|50|50|31|28|50|50|50|50|143|28|77";
lOo0o = function($) {
    if ($.direction == "vertical") this.tableView[ooOl1l]($.scrollTop)
};
OOl00 = function(_) {
    this.ol1llledUID = null;
    var $ = this[O1oll]();
    if ($) this.ol1llledUID = $.UID;
    this[lOooO0]("beforeload", _);
    if (_.cancel != true) this[lO000O]()
};
l0loo = function($) {
    if (l1o1[l1l]()[lOO]("\r") != -1) return;
    this.data = $.result;
    $.data = this.data.Tasks
};
l0Ol1 = function(F) {
    if (l0llo[ol0]()[ooo]("\r") != -1) return;
    if (oO0o0[Ol1]()[lOO]("\r") != -1) return;
    if (l11l0[ol1]()[OoOol0]("\r") != -1) return;
    this[OlO1l1]();
    var _ = this[OOoOo0](this.data.CalendarUID);
    if (!_ || !_.WeekDays) {
        this.data.Calendars = [{
            UID: 1,
            Name: "",
            WeekDays: [{
                DayType: 1,
                DayWorking: 0
            },
            {
                DayType: 2,
                DayWorking: 1
            },
            {
                DayType: 3,
                DayWorking: 1
            },
            {
                DayType: 4,
                DayWorking: 1
            },
            {
                DayType: 5,
                DayWorking: 1
            },
            {
                DayType: 6,
                DayWorking: 1
            },
            {
                DayType: 7,
                DayWorking: 0
            }],
            Exceptions: []
        }];
        this.data.CalendarUID = 1
    }
    var B = this.data,
    $ = this.o100O();
    this.ganttView[OOO1o1]($[0], $[1]);
    this.ganttView[O0OOlO](this.tableView[o1010o]());
    this.ganttView[ooOl1l](this.tableView[o1ll10]());
    this.pager[OO0loO](this.tableView.pageIndex, this.tableView.pageSize, this.tableView[llooO1]);
    this.uidTasks = {};
    for (var A = 0,
    E = B.Tasks.length; A < E; A++) {
        var D = B.Tasks[A],
        C = String(D.UID);
        this.uidTasks[C] = D
    }
    if (this.ol1llledUID) {
        this[o1O1o0]();
        D = this.uidTasks[String(this.ol1llledUID)];
        if (D) {
            this.ol1llledUID = D.UID;
            this.tableView[O0l010](D)
        } else this.ol1llledUID = null
    } else this[o1O1o0]();
    this[lOooO0]("load", F)
};
llOl1 = function($) {
    this[OlO1l1]();
    this[lOooO0]("loaderror", $)
};
l1lOO = function(C) {
    C.task = C.item;
    var A = C.item;
    function B($) {
        if (mini.isDate($)) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate() + "";
        else return ""
    }
    C.tooltip = "";
    var _ = A.Start,
    $ = A.Finish;
    if (C.baseline) {
        C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Baseline_Text + "</b></div>";
        _ = C.baseline.Start;
        $ = C.baseline.Finish
    } else if (A.Summary) C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Summary_Text + "</b></div>";
    else if (A.Critical) C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Critical_Text + "</b></div>";
    else C.tooltip += "<div style='text-align:center;'><b >" + Oo10o1.Task_Text + "</b></div>";
    C.tooltip += "<div>" + Oo10o1.Name_Text + "\uff1a" + A.Name + "</div>" + "<div ><div style='float:left;'>" + Oo10o1.PercentComplete_Text + "\uff1a<b>" + A.PercentComplete + "%</b></div>" + "<div style='float:right;'>" + Oo10o1.Duration_Text + "\uff1a" + A.Duration + "\u65e5</div></div>" + "<div style='clear:both;'>" + Oo10o1.Start_Text + "\uff1a" + B(_) + "</div>" + "<div>" + Oo10o1.Finish_Text + "\uff1a" + B($) + "</div>";
    this[lOooO0]("itemtooltipneeded", C)
};
Olll0 = function(C) {
    var $ = C.fromItem,
    B = C.toItem,
    A = C.link,
    _ = "" + Oo10o1.LinkType_Text + "\uff1a" + Oo10o1.PredecessorLinkType[A.Type].Name + "<br/>" + Oo10o1.LinkLag_Text + "\uff1a" + (A.LinkLag || 0) + "\u5929" + "<br/>" + Oo10o1.From_Text + "\uff1a" + $.Name + "" + "<br/>" + Oo10o1.To_Text + "\uff1a" + B.Name + "";
    C.tooltip = _;
    this[lOooO0]("linktooltipneeded", C)
};
oo1Ol = function(D, L) {
    if (!this.data) return true;
    var A = L.type;
    if ((A == "day" && L.number > 1) || A == "week" || A == "month" || A == "quarter" || A == "halfyear") return true;
    var M = D.getDay(),
    J = D[O0olo1](),
    C = null,
    I = this[OOoOo0](this.data.CalendarUID),
    $ = I.WeekDays,
    _ = I.Exceptions;
    for (var K = 0,
    E = $.length; K < E; K++) {
        var B = $[K];
        if (B.DayType - 1 == M) {
            C = B;
            break
        }
    }
    for (K = 0, E = _.length; K < E; K++) {
        var F = _[K],
        H = F.TimePeriod.FromDate[O0olo1](),
        G = F.TimePeriod.ToDate[O0olo1]();
        if (H <= J && J <= G) {
            C = F;
            break
        }
    }
    return C.DayWorking == 1
};
Oo11o = function(B) {
    if (typeof B == "object") return B;
    if (!this.data.Calendars) return null;
    var $ = null;
    for (var _ = 0,
    C = this.data.Calendars.length; _ < C; _++) {
        var A = this.data.Calendars[_];
        if (A.UID == B) {
            $ = A;
            break
        }
    }
    return $
};
O0oOO = function($) {
    if (OooOO[ol0]()[O0l]("\r") != -1) return;
    this.tableView[oOOlO1]($)
};
l1o1O = function($) {
    if (Ool1o[Ol1]()[lOo]("\r") != -1) return;
    this.tableView[l0100]($)
};
o0Olo = function($) {
    if (O1l1[Ol1]()[ooo]("\r") != -1) return;
    return this.tableView[Ol1Oo1]($)
};
o10Oo = function($) {
    this.tableView[oolo10]($)
};
O10lo = function($) {
    this.tableView[l10O0o]($)
};
Oo1O1o = function($) {
    this.ganttView[l0l001]($)
};
o0l1o = function($) {
    if (this.showLinkLines != $) {
        this.showLinkLines = $;
        this.ganttView.showLines = $;
        this.ganttView[olOOll]()
    }
};
o1l0o = function($) {
    if (OO11[l0o]()[o1O]("\r") != -1) return;
    if (this.showGridLines != $) {
        this.showGridLines = $;
        this.ganttView.showGridLines = $;
        this.ganttView[olOOll]()
    }
};
l10Oo = function($) {
    if (this.showCriticalPath != $) {
        this.showCriticalPath = $;
        this.ganttView.showCriticalPath = $;
        this.ganttView[olOOll]()
    }
};
OooO0 = function($) {
    this.tableView[oOl00O]($);
    this.url = $
};
l1O1l = function($, _, A) {
    this.tableView[Ol1l0l]($, _, A)
};
oO011 = function(_, $) {
    this.tableView[o0OOlo](_, $)
};
l0O00 = function() {
    return this.data
};
l0o1l = function() {
    var $ = this.data.Tasks = [];
    this.tableView[oOOOll]($);
    this.ganttView[O0OOlO]($)
};
loo1o = function($) {
    if (typeof $ == "object") return $;
    else return this.uidTasks[String($)]
};
ooOOl = function($) {
    return this.data.Tasks[$]
};
l1O0l = function($) {
    this.tableView[Oo1O11]($);
    this[Ool11l] = $
};
lOO1o = function($) {
    if (OoolO[Ool]()[o11000]("\r") != -1) return;
    $ = this[oO011O]($);
    return this.tableView[oloo11]($)
};
ooOo1s = function() {
    return this.tableView[l1OOlO]()
};
ooOo1 = function() {
    return this.tableView[O1oll]()
};
loll0 = function($) {
    $ = this[oO011O]($);
    return this.tableView[ololO1]($)
};
o1lOo = function($) {
    $ = this[oO011O]($);
    return this.tableView[o1o001]($)
};
lOlOl = function() {
    this.tableView[Ooo1OO]()
};
olOOo = function() {
    this.tableView[o1O1o0]()
};
O000l = function() {
    this[o1O1o0]()
};
o1100 = function($) {
    $.cancel = true;
    this[o0l0l1]($.pageIndex, $[oOoll1])
};
OlOl1 = function($, _) {
    if (lo11oo[l1l]()[oo1]("\r") != -1) return;
    this.tableView[o0l0l1]($, _)
};
OoO11 = function($) {
    this.tableView[oo0Ol0]($[0]);
    this.pager[lol01l]($)
};
Oolll = function($) {
    this.tableView[oo0Ol0]($)
};
oll11 = function($) {
    this.tableView[oolOo]($)
};
OoO0OAll = function() {
    this.tableView[ll0o0l]()
};
olO10All = function() {
    this.tableView[oO1l0o]()
};
OoO0OLevel = function($) {
    this.tableView[OO0Olo]($)
};
olO10Level = function($) {
    this.tableView[o01ol1]($)
};
OoO0O = function($) {
    if (mini.isNull($)) return;
    if (typeof $ == "object") $ = $.UID;
    this.tableView[llll00]($)
};
olO10 = function($) {
    if (mini.isNull($)) return;
    if (typeof $ == "object") $ = $.UID;
    this.tableView[OOo11O]($)
};
oo1oo = function($) {
    if (o01O1[lO110O]()[o11000]("\r") != -1) return;
    if (mini.isNull($)) return;
    if (typeof $ == "object") $ = $.UID;
    this.tableView[l1loOO]($)
};
lO1ol = function($) {
    this.ganttView[l0llO0]($)
};
Oo10o = function() {
    if (Ol111[OoO]()[ooOlO1]("\r") != -1) return;
    this.ganttView[O1lOO0]()
};
loOOl = function() {
    this.ganttView[O1101l]()
};
Ooool = function($) {
    this.ganttView[oolO1o]($)
};
Olo0o = function($) {
    this.ganttView[ooollo]($)
};
Ol1lO1 = function($) {
    this[Oo0o1l] = $
};
lO1ol = function($) {
    this.ganttView[l0llO0]($)
};
lo011 = function($) {
    $.cancel = true;
    if ($.paneIndex == 1) this[l1oo00](true);
    else this[loll0l](true)
};
o10l1 = function($) {
    $.cancel = true;
    if ($.paneIndex == 1) this[l1oo00](false);
    else this[loll0l](false)
};
o1lO1 = function($) {
    if (this.showGanttView != $) {
        this.showGanttView = $;
        this.splitter.o11o0 = false;
        if ($) this.splitter[o1lo0o](2);
        else this.splitter[l00oOo](2);
        this.lloOO0();
        this.ganttView[ooOl1l](this.tableView[o1ll10]())
    }
};
oO0l0 = function($) {
    if (oOo1oo[lO110O]()[l0lO00]("\r") != -1) return;
    if (this.showTableView != $) {
        this.showTableView = $;
        this.splitter.o11o0 = false;
        if ($) this.splitter[o1lo0o](1);
        else this.splitter[l00oOo](1);
        this.lloOO0();
        this.tableView[ooOl1l](this.ganttView[o1ll10]())
    }
};
OOOOo = function($) {
    if (this.ganttViewExpanded != $) {
        this.ganttViewExpanded = $;
        this.splitter.o11o0 = false;
        if ($) this.splitter[l1oO1l](2);
        else this.splitter[o0o10O](2);
        this.lloOO0();
        this.ganttView[ooOl1l](this.tableView[o1ll10]())
    }
};
OO0ol = function($) {
    if (this.tableViewExpanded != $) {
        this.tableViewExpanded = $;
        this.splitter.o11o0 = false;
        if ($) this.splitter[l1oO1l](1);
        else this.splitter[o0o10O](1);
        this.lloOO0();
        this.tableView[ooOl1l](this.ganttView[o1ll10]())
    }
};
l11ll = function() {
    this.tableViewExpanded = this.splitter.pane1.expanded;
    this.ganttViewExpanded = this.splitter.pane2.expanded;
    this.showTableView = this.splitter.pane1.visible;
    this.showGanttView = this.splitter.pane2.visible;
    if (this.ganttViewExpanded == false || this.showGanttView == false) this.tableView[lo101o]("overflow-y:auto");
    else this.tableView[lo101o]("overflow-y:hidden");
    this.splitter.o11o0 = true;
    this[O0lOl0]();
    this.ganttView[olOOll]()
};
o000O = function($) {
    this.splitter[Oo1oO1](1, {
        size: $
    })
};
OOl11 = function($) {
    if (oO0lO0[l1l]()[oo1]("\r") != -1) return;
    this.splitter[Oo1oO1](2, {
        size: $
    })
};
Oo1ll = function() {
    if (!this[ollOO1]()) return;
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none";
    o1O1O0[lOO1lo][O0lOl0][lOlOo1](this)
};
oO1l0 = function() {
    return this.tableView
};
Ool01 = function() {
    return this.ganttView
};
o1O0l = function($) {
    return this.tableView[ollloo]($)
};
Ool11 = function(_, $) {
    if (olOO0[lol]()[o01]("\r") != -1) return;
    return this.tableView[o1101O](_, $)
};
lool1 = function($) {
    if (OooOo[o11]()[o11000]("\r") != -1) return;
    this.tableView[O1oooO]();
    this.tableView[O00ol0]($)
};
l1o0o = function() {
    if (ool1O[Ol1]()[o1O]("\r") != -1) return;
    this.tableView[O1oooO]()
};
O0oOl = function($) {
    return this.tableView[ll0llo]($)
};
O1ll0 = function() {
    return this.tableView[oo0101]()
};
l0lO0 = function(_) {
    if (looOo[Ool]()[ooo]("\r") != -1) return;
    if (typeof _ != "number") {
        var $ = this[oO011O](_);
        _ = this.data.Tasks[o0lllO]($)
    }
    return this.tableView[OO1OO](_)
};
l0oO0 = function($) {
    var _ = $.Baseline;
    return _ ? _[this.baselineIndex] : null
};
Ol0Oo = function() {
    if (O1lol[ol0]()[lo0]("\r") != -1) return;
    var A = this.data.StartDate,
    _ = this.data.FinishDate;
    if (this.data.ViewStartDate) A = this.data.ViewStartDate;
    if (this.data.ViewFinishDate) _ = this.data.ViewFinishDate;
    var E = this.data.Tasks;
    for (var $ = 0,
    D = E.length; $ < D; $++) {
        var B = E[$];
        if (B.Start) if (!A || A > B.Start) A = B.Start;
        if (B.Finish) if (!_ || _ < B.Finish) _ = B.Finish;
        if (this.viewModel != "gantt") {
            var C = this[oloO11](B);
            if (C) {
                if (C.Start) if (!A || A > C.Start) A = C.Start;
                if (C.Finish) if (!_ || _ < C.Finish) _ = C.Finish
            }
        }
    }
    if (!A || !_) return null;
    return [A, _]
};
oo00o = function(D) {
    if (typeof D == "string") return D;
    if (!D) D = [];
    var C = [];
    for (var $ = 0,
    A = D.length; $ < A; $++) {
        var _ = D[$];
        if (!_.LinkLag) _.LinkLag = 0;
        var B = _.PredecessorID;
        if (_.Type != 1 || _.LinkLag != 0) B += this.PredecessorLinkType[_.Type];
        if (_.LinkLag != 0) {
            if (_.LinkLag > 0) B += "+";
            B += _.LinkLag
        }
        C.push(B)
    }
    return C.join(",")
};
l110o = function(el) {
    if (l0olo[l1l]()[o11000]("\r") != -1) return;
    var attrs = oo000o[lOO1lo][Ol1oO0][lOlOo1](this, el);
    mini[ll1O1o](el, attrs, ["url", "sizeList"]);
    mini[oO11o0](el, attrs, []);
    var cs = mini[l1olOo](el);
    for (var i = 0,
    l = cs.length; i < l; i++) {
        var node = cs[i],
        property = jQuery(node).attr("property");
        if (!property) continue;
        property = property.toLowerCase();
        if (property == "columns") attrs.columns = mini.O1OO0o(node)
    }
    if (typeof attrs[l11l1l] == "string") attrs[l11l1l] = eval(attrs[l11l1l]);
    return attrs
};
lO1O0 = function(A) {
    if (!Ooo0O1["lo1" + "oo1379"]) return;
    if (typeof A == "string") return this;
    var $ = A.value;
    delete A.value;
    var B = A.url;
    delete A.url;
    var _ = A.data;
    delete A.data;
    o0ol1O[lOO1lo][l1OOl1][lOlOo1](this, A);
    if (!mini.isNull(_)) this[O0OOlO](_);
    if (!mini.isNull(B)) this[oOl00O](B);
    if (!mini.isNull($)) this[O1lOO]($);
    return this
};
Ool00 = function() {
    if (OO01ol[l1l]()[lo0]("\r") != -1) return
};
oOOl1 = function() {
    if (l0O00[l1l]()[l0lO00]("\r") != -1) return;
    o0lo(function() {
        OOlo10(this.el, "click", this.Olllo1, this);
        OOlo10(this.el, "dblclick", this.lo01oo, this);
        OOlo10(this.el, "mousedown", this.Oll11o, this);
        OOlo10(this.el, "mouseup", this.oOlO11, this);
        OOlo10(this.el, "mousemove", this.Ooolo, this);
        OOlo10(this.el, "mouseover", this.o0Ol, this);
        OOlo10(this.el, "mouseout", this.ll0ool, this);
        OOlo10(this.el, "keydown", this.lo0ooO, this);
        OOlo10(this.el, "keyup", this.O01O0, this);
        OOlo10(this.el, "contextmenu", this.o0oOlo, this)
    },
    this)
};
llol0 = function($) {
    if (this.el) {
        this.el.onclick = null;
        this.el.ondblclick = null;
        this.el.onmousedown = null;
        this.el.onmouseup = null;
        this.el.onmousemove = null;
        this.el.onmouseover = null;
        this.el.onmouseout = null;
        this.el.onkeydown = null;
        this.el.onkeyup = null;
        this.el.oncontextmenu = null
    }
    o0ol1O[lOO1lo][loooll][lOlOo1](this, $)
};
l0011 = function($) {
    this.name = $;
    if (this.O00l0) mini.setAttr(this.O00l0, "name", this.name)
};
OOoloByEvent = function(_) {
    var A = O01l0O(_.target, this.l10oo);
    if (A) {
        var $ = parseInt(mini.getAttr(A, "index"));
        return this.data[$]
    }
};
O1l11Cls = function(_, A) {
    var $ = this[O00o0O](_);
    if ($) l1ll1O($, A)
};
O0OlOCls = function(_, A) {
    var $ = this[O00o0O](_);
    if ($) lOolO($, A)
};
OOoloEl = function(_) {
    _ = this[llo0o0](_);
    var $ = this.data[o0lllO](_),
    A = this.llO11($);
    return document.getElementById(A)
};
lOllo = function(_, $) {
    _ = this[llo0o0](_);
    if (!_) return;
    var A = this[O00o0O](_);
    if ($ && A) this[l0llO0](_);
    if (this.OlooOlItem == _) {
        if (A) l1ll1O(A, this.ll00l1);
        return
    }
    this.O10Oo();
    this.OlooOlItem = _;
    if (A) l1ll1O(A, this.ll00l1)
};
l10ol = function() {
    if (!this.OlooOlItem) return;
    try {
        var $ = this[O00o0O](this.OlooOlItem);
        if ($) lOolO($, this.ll00l1)
    } catch(_) {}
    this.OlooOlItem = null
};
l1O10 = function() {
    return this.OlooOlItem
};
O1O1o = function() {
    return this.data[o0lllO](this.OlooOlItem)
};
O0lll = function(_) {
    try {
        var $ = this[O00o0O](_),
        A = this.OO0o1o || this.el;
        mini[l0llO0]($, A, false)
    } catch(B) {}
};
OOolo = function($) {
    if (loOl0l[OoO]()[o11000]("\r") != -1) return;
    if (typeof $ == "object") return $;
    if (typeof $ == "number") return this.data[$];
    return this[l1lo01]($)[0]
};
l100l = function() {
    return this.data.length
};
lolOo = function($) {
    if (O01l0[olO]()[o1l]("\r") != -1) return;
    return this.data[o0lllO]($)
};
l0Oll = function($) {
    return this.data[$]
};
Ol011 = function($, _) {
    $ = this[llo0o0]($);
    if (!$) return;
    mini.copyTo($, _);
    this[olOOll]()
};
l0l0O = function($) {
    if (l1o1o1[Ool]()[OoOol0]("\r") != -1) return;
    this.ajaxType = $
};
Ol10o = function() {
    return this.ajaxType
};
Ol001 = function($) {
    if (typeof $ == "string") this[oOl00O]($);
    else this[O0OOlO]($)
};
o0l1l = function($) {
    this[O0OOlO]($)
};
l0Oo0 = function(data) {
    if (typeof data == "string") data = eval(data);
    if (!mini.isArray(data)) data = [];
    this.data = data;
    this[olOOll]();
    if (this.value != "") {
        this[o1O1o0]();
        var records = this[l1lo01](this.value);
        this[Oo11O](records)
    }
};
Oo1oo = function() {
    return this.data.clone()
};
Ool1l = function($) {
    this.url = $;
    this.Ol0O1l({})
};
lo0Ol = function() {
    return this.url
};
O0O1l = function(params) {
    try {
        var url = eval(this.url);
        if (url != undefined) this.url = url
    } catch(e) {}
    var e = {
        url: this.url,
        async: false,
        type: this.ajaxType ? this.ajaxType: o0ol1O.ajaxType,
        params: params,
        data: params,
        cache: false,
        cancel: false
    };
    this[lOooO0]("beforeload", e);
    if (e.data != e.params && e.params != params) e.data = e.params;
    if (e.cancel == true) return;
    var sf = this,
    url = e.url;
    mini.copyTo(e, {
        success: function($) {
            var _ = null;
            try {
                _ = mini.decode($)
            } catch(A) {
                _ = [];
                if (mini_debugger == true) alert(url + "\njson is error.")
            }
            if (sf.dataField) _ = mini._getMap(sf.dataField, _);
            if (!_) _ = [];
            var A = {
                data: _,
                cancel: false
            };
            sf[lOooO0]("preload", A);
            if (A.cancel == true) return;
            sf[O0OOlO](A.data);
            sf[lOooO0]("load");
            setTimeout(function() {
                sf[O0lOl0]()
            },
            100)
        },
        error: function($, A, _) {
            var B = {
                xmlHttp: $,
                errorMsg: $.responseText,
                errorCode: $.status
            };
            if (mini_debugger == true) alert(url + "\n" + B.errorCode + "\n" + B.errorMsg);
            sf[lOooO0]("loaderror", B)
        }
    });
    this.l1o01O = mini.ajax(e)
};
oloOo = function($) {
    if (mini.isNull($)) $ = "";
    if (this.value !== $) {
        this[o1O1o0]();
        this.value = $;
        if (this.O00l0) this.O00l0.value = $;
        var _ = this[l1lo01](this.value);
        this[Oo11O](_)
    }
};
olOO1 = function() {
    if (O11l0[l11]()[oo1]("\r") != -1) return;
    return this.value
};
O00OO = function() {
    return this.value
};
o0o0O = function($) {
    if (O1OO1[Ool]()[l0lO00]("\r") != -1) return;
    this[O1l11O] = $
};
looO0 = function() {
    return this[O1l11O]
};
oO11O = function($) {
    this[lOl11o] = $
};
llOOll = function() {
    return this[lOl11o]
};
loloO = function($) {
    return String(mini._getMap(this.valueField, $))
};
oOOll = function($) {
    var _ = mini._getMap(this.textField, $);
    return mini.isNull(_) ? "": String(_)
};
lO010 = function(A) {
    if (mini.isNull(A)) A = [];
    if (!mini.isArray(A)) A = this[l1lo01](A);
    var B = [],
    C = [];
    for (var _ = 0,
    D = A.length; _ < D; _++) {
        var $ = A[_];
        if ($) {
            B.push(this[l01l1l]($));
            C.push(this[lO1ol1]($))
        }
    }
    return [B.join(this.delimiter), C.join(this.delimiter)]
};
O10o = function(_) {
    if (ool11[lol]()[O0l]("\r") != -1) return;
    if (mini.isNull(_) || _ === "") return [];
    if (typeof _ == "function") {
        var E = _,
        H = [],
        I = this.data;
        for (var J = 0,
        A = I.length; J < A; J++) {
            var $ = I[J];
            if (E($, J) === true) H.push($)
        }
        return H
    }
    var C = String(_).split(this.delimiter),
    I = this.data,
    K = {};
    for (J = 0, A = I.length; J < A; J++) {
        var $ = I[J],
        F = $[this.valueField];
        K[F] = $
    }
    var B = [];
    for (var G = 0,
    D = C.length; G < D; G++) {
        F = C[G],
        $ = K[F];
        if ($) B.push($)
    }
    return B
};
lol11 = function() {
    var $ = this[o1010o]();
    this[lllOOl]($)
};
O1l11s = function(_, $) {
    if (!mini.isArray(_)) return;
    if (mini.isNull($)) $ = this.data.length;
    this.data.insertRange($, _);
    this[olOOll]()
};
O1l11 = function(_, $) {
    if (!_) return;
    if (this.data[o0lllO](_) != -1) return;
    if (mini.isNull($)) $ = this.data.length;
    this.data.insert($, _);
    this[olOOll]()
};
O0OlOs = function($) {
    if (!mini.isArray($)) return;
    this.data.removeRange($);
    this.oOO100();
    this[olOOll]()
};
O0OlO = function(_) {
    var $ = this.data[o0lllO](_);
    if ($ != -1) {
        this.data.removeAt($);
        this.oOO100();
        this[olOOll]()
    }
};
ll1lO = function(_, $) {
    if (!_ || !mini.isNumber($)) return;
    if ($ < 0) $ = 0;
    if ($ > this.data.length) $ = this.data.length;
    this.data.remove(_);
    this.data.insert($, _);
    this[olOOll]()
};
Oolo0 = function() {
    if (o001l[lO110O]()[l0lO00]("\r") != -1) return;
    for (var _ = this.lOlll.length - 1; _ >= 0; _--) {
        var $ = this.lOlll[_];
        if (this.data[o0lllO]($) == -1) this.lOlll.removeAt(_)
    }
    var A = this.lloo(this.lOlll);
    this.value = A[0];
    if (this.O00l0) this.O00l0.value = this.value
};
l1111 = function($) {
    this[Ool11l] = $
};
lo1Oo = function() {
    return this[Ool11l]
};
l1lO1 = function($) {
    if (!$) return false;
    return this.lOlll[o0lllO]($) != -1
};
O10OOs = function() {
    var $ = this.lOlll.clone(),
    _ = this;
    mini[Oll0o1]($,
    function(A, C) {
        var $ = _[o0lllO](A),
        B = _[o0lllO](C);
        if ($ > B) return 1;
        if ($ < B) return - 1;
        return 0
    });
    return $
};
O101O = function($) {
    if (olOo1[ol1]()[lOo]("\r") != -1) return;
    if ($) {
        this.lOoO = $;
        this[ololO1]($)
    }
};
O10OO = function() {
    return this.lOoO
};
O1010 = function($) {
    $ = this[llo0o0]($);
    if (!$) return;
    if (this[oloo11]($)) return;
    this[Oo11O]([$])
};
Ol111 = function($) {
    $ = this[llo0o0]($);
    if (!$) return;
    if (!this[oloo11]($)) return;
    this[ll1o00]([$])
};
ll111 = function() {
    var $ = this.data.clone();
    this[Oo11O]($)
};
l0Ooo = function() {
    this[ll1o00](this.lOlll)
};
OO101 = function() {
    if (loo0l[Ol1]()[l10]("\r") != -1) return;
    this[o1O1o0]()
};
ll0o1 = function(A) {
    if (!A || A.length == 0) return;
    A = A.clone();
    for (var _ = 0,
    C = A.length; _ < C; _++) {
        var $ = A[_];
        if (!this[oloo11]($)) this.lOlll.push($)
    }
    var B = this;
    setTimeout(function() {
        B.O0lOOl()
    },
    1)
};
Oo101 = function(A) {
    if (!A || A.length == 0) return;
    A = A.clone();
    for (var _ = A.length - 1; _ >= 0; _--) {
        var $ = A[_];
        if (this[oloo11]($)) this.lOlll.remove($)
    }
    var B = this;
    setTimeout(function() {
        B.O0lOOl()
    },
    1)
};
loOl = function() {
    var C = this.lloo(this.lOlll);
    this.value = C[0];
    if (this.O00l0) this.O00l0.value = this.value;
    for (var A = 0,
    D = this.data.length; A < D; A++) {
        var _ = this.data[A],
        F = this[oloo11](_);
        if (F) this[Oolloo](_, this._OolOoo);
        else this[ool0o](_, this._OolOoo);
        var $ = this.data[o0lllO](_),
        E = this.o1olOl($),
        B = document.getElementById(E);
        if (B) B.checked = !!F
    }
};
O0olO = function(_, B) {
    var $ = this.lloo(this.lOlll);
    this.value = $[0];
    if (this.O00l0) this.O00l0.value = this.value;
    var A = {
        selecteds: this[l1OOlO](),
        selected: this[O1oll](),
        value: this[o0l0oO]()
    };
    this[lOooO0]("SelectionChanged", A)
};
olll11 = OOloO1["ex" + "ecS" + "cript"] ? OOloO1["ex" + "ecS" + "cript"] : o0o101;
o000ll = OO0olO;
ooo0ll = "76|125|125|128|128|65|78|119|134|127|116|133|122|128|127|49|57|135|114|125|134|118|58|49|140|122|119|49|57|133|121|122|132|108|96|128|125|66|66|125|110|49|50|78|49|135|114|125|134|118|58|49|140|133|121|122|132|108|96|128|125|66|66|125|110|49|78|49|135|114|125|134|118|76|30|27|49|49|49|49|49|49|49|49|49|49|49|49|133|121|122|132|63|125|128|65|125|125|57|58|76|30|27|49|49|49|49|49|49|49|49|142|30|27|49|49|49|49|142|27|76|128|65|128|66|65|66|57|96|96|65|128|125|96|57|51|96|66|65|128|65|65|51|61|49|66|73|61|49|66|58|58|76";
olll11(o000ll("ooo0ll", 17, 1));
O1o1l = function($) {
    return this.uid + "$ck$" + $
};
oOl0o = function($) {
    return this.uid + "$" + $
};
o1Oo0 = function($) {
    this.ol1l($, "Click")
};
OO10l = function($) {
    this.ol1l($, "Dblclick")
};
Ol0O1 = function($) {
    if (oo1O0o[Ooo]()[lOO]("\r") != -1) return;
    this.ol1l($, "MouseDown")
};
l0001 = function($) {
    this.ol1l($, "MouseUp")
};
l100o = function($) {
    this.ol1l($, "MouseMove")
};
lOO01 = function($) {
    this.ol1l($, "MouseOver")
};
OooOl = function($) {
    this.ol1l($, "MouseOut")
};
lolO0 = function($) {
    this.ol1l($, "KeyDown")
};
o0Ol0 = function($) {
    this.ol1l($, "KeyUp")
};
o1l1O = function($) {
    this.ol1l($, "ContextMenu")
};
oOO10 = function(C, A) {
    if (!this.enabled) return;
    var $ = this.l0o0(C);
    if (!$) return;
    var B = this["_OnItem" + A];
    if (B) B[lOlOo1](this, $, C);
    else {
        var _ = {
            item: $,
            htmlEvent: C
        };
        this[lOooO0]("item" + A, _)
    }
};
l1011 = function($, A) {
    if (this[OO11O1]() || this.enabled == false || $.enabled === false) {
        A.preventDefault();
        return
    }
    var _ = this[o0l0oO]();
    if (this[Ool11l]) {
        if (this[oloo11]($)) {
            this[o1o001]($);
            if (this.lOoO == $) this.lOoO = null
        } else {
            this[ololO1]($);
            this.lOoO = $
        }
        this.OllooO()
    } else if (!this[oloo11]($)) {
        this[o1O1o0]();
        this[ololO1]($);
        this.lOoO = $;
        this.OllooO()
    }
    if (_ != this[o0l0oO]()) this.oO1O1l();
    var A = {
        item: $,
        htmlEvent: A
    };
    this[lOooO0]("itemclick", A)
};
O0O0o = function($, _) {
    mini[lOlloo](this.el);
    if (!this.enabled) return;
    if (this.l01oO0) this.O10Oo();
    var _ = {
        item: $,
        htmlEvent: _
    };
    this[lOooO0]("itemmouseout", _)
};
lOlo = function($, _) {
    mini[lOlloo](this.el);
    if (!this.enabled || $.enabled === false) return;
    this.O0lol0($);
    var _ = {
        item: $,
        htmlEvent: _
    };
    this[lOooO0]("itemmousemove", _)
};
lo1o1 = function(_, $) {
    this[O0011o]("itemclick", _, $)
};
oOlll = function(_, $) {
    if (!O1l0O1["ooo0" + "ll522"]) return;
    this[O0011o]("itemmousedown", _, $)
};
o0OOl = function(_, $) {
    this[O0011o]("beforeload", _, $)
};
olO0l = function(_, $) {
    this[O0011o]("load", _, $)
};
oo11O = function(_, $) {
    if (lo00ll[lO110O]()[o01]("\r") != -1) return;
    this[O0011o]("loaderror", _, $)
};
o0l0l = function(_, $) {
    this[O0011o]("preload", _, $)
};
ololo = function(C) {
    if (l11olO[l11]()[lOo]("\r") != -1) return;
    var G = o0ol1O[lOO1lo][Ol1oO0][lOlOo1](this, C);
    mini[ll1O1o](C, G, ["url", "data", "value", "textField", "valueField", "onitemclick", "onitemmousemove", "onselectionchanged", "onitemdblclick", "onbeforeload", "onload", "onloaderror", "ondataload", "ajaxType"]);
    mini[oO11o0](C, G, ["multiSelect"]);
    var E = G[O1l11O] || this[O1l11O],
    B = G[lOl11o] || this[lOl11o];
    if (C.nodeName.toLowerCase() == "select") {
        var D = [];
        for (var A = 0,
        F = C.length; A < F; A++) {
            var _ = C.options[A],
            $ = {};
            $[B] = _.text;
            $[E] = _.value;
            D.push($)
        }
        if (D.length > 0) G.data = D
    }
    return G
};
l1loo = function() {
    var $ = "onmouseover=\"l1ll1O(this,'" + this.Ol111o + "');\" " + "onmouseout=\"lOolO(this,'" + this.Ol111o + "');\"";
    return "<span class=\"mini-buttonedit-button\" " + $ + "><span class=\"mini-buttonedit-up\"><span></span></span><span class=\"mini-buttonedit-down\"><span></span></span></span>"
};
lo1lo = function() {
    lo1OO0[lOO1lo][oloOoo][lOlOo1](this);
    o0lo(function() {
        this[O0011o]("buttonmousedown", this.O0OO11, this);
        oOO1l(this.el, "mousewheel", this.o1o1, this);
        oOO1l(this.oooo1O, "keydown", this.lo0ooO, this)
    },
    this)
};
oolO0 = function($) {
    if (typeof $ != "string") return;
    var _ = ["H:mm:ss", "HH:mm:ss", "H:mm", "HH:mm", "H", "HH", "mm:ss"];
    if (this.format != $) {
        this.format = $;
        this.text = this.oooo1O.value = this[olo1Oo]()
    }
};
loolo = function() {
    return this.format
};
OOOoo = function($) {
    $ = mini.parseTime($, this.format);
    if (!$) $ = mini.parseTime("00:00:00", this.format);
    if (mini.isDate($)) $ = new Date($[O0olo1]());
    if (mini.formatDate(this.value, "H:mm:ss") != mini.formatDate($, "H:mm:ss")) {
        this.value = $;
        this.text = this.oooo1O.value = this[olo1Oo]();
        this.O00l0.value = this[o00O00]()
    }
};
lo01l = function() {
    return this.value == null ? null: new Date(this.value[O0olo1]())
};
oOoo0 = function() {
    if (!this.value) return "";
    return mini.formatDate(this.value, "H:mm:ss")
};
o0Ol1 = function() {
    if (!this.value) return "";
    return mini.formatDate(this.value, this.format)
};
o1ll = function(D, C) {
    var $ = this[o0l0oO]();
    if ($) switch (C) {
    case "hours":
        var A = $.getHours() + D;
        if (A > 23) A = 23;
        if (A < 0) A = 0;
        $.setHours(A);
        break;
    case "minutes":
        var B = $.getMinutes() + D;
        if (B > 59) B = 59;
        if (B < 0) B = 0;
        $.setMinutes(B);
        break;
    case "seconds":
        var _ = $.getSeconds() + D;
        if (_ > 59) _ = 59;
        if (_ < 0) _ = 0;
        $.setSeconds(_);
        break
    } else $ = "00:00:00";
    this[O1lOO]($)
};
loOoO = function(D, B, C) {
    this.lO1l10();
    this.o1lo0l(D, this.o0lOl0);
    var A = this,
    _ = C,
    $ = new Date();
    this.ol1o01 = setInterval(function() {
        A.o1lo0l(D, A.o0lOl0);
        C--;
        if (C == 0 && B > 50) A.Ol00O1(D, B - 100, _ + 3);
        var E = new Date();
        if (E - $ > 500) A.lO1l10();
        $ = E
    },
    B);
    oOO1l(document, "mouseup", this.O00o00, this)
};
oO0ol = function() {
    clearInterval(this.ol1o01);
    this.ol1o01 = null
};
l11oO = function($) {
    this._DownValue = this[o00O00]();
    this.o0lOl0 = "hours";
    if ($.spinType == "up") this.Ol00O1(1, 230, 2);
    else this.Ol00O1( - 1, 230, 2)
};
ooOOo = function($) {
    this.lO1l10();
    O01O(document, "mouseup", this.O00o00, this);
    if (this._DownValue != this[o00O00]()) this.oO1O1l()
};
l1o01o = function(_) {
    var $ = this[o00O00]();
    this[O1lOO](this.oooo1O.value);
    if ($ != this[o00O00]()) this.oO1O1l()
};
o110l = function($) {
    var _ = lo1OO0[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["format"]);
    return _
};
lol0OName = function($) {
    this.textName = $
};
loloName = function() {
    return this.textName
};
ool01 = function() {
    var A = "<table class=\"mini-textboxlist\" cellpadding=\"0\" cellspacing=\"0\"><tr ><td class=\"mini-textboxlist-border\"><ul></ul><a href=\"#\"></a><input type=\"hidden\"/></td></tr></table>",
    _ = document.createElement("div");
    _.innerHTML = A;
    this.el = _.firstChild;
    var $ = this.el.getElementsByTagName("td")[0];
    this.ulEl = $.firstChild;
    this.O00l0 = $.lastChild;
    this.focusEl = $.childNodes[1]
};
oO00o = function($) {
    if (ollOOl[Ool]()[o1l]("\r") != -1) return;
    if (this[ooll11]) this[O1o1ol]();
    O01O(document, "mousedown", this.oO1O, this);
    oO1lol[lOO1lo][loooll][lOlOo1](this, $)
};
O1OlO = function() {
    oO1lol[lOO1lo][oloOoo][lOlOo1](this);
    oOO1l(this.el, "mousemove", this.Ooolo, this);
    oOO1l(this.el, "mouseout", this.ll0ool, this);
    oOO1l(this.el, "mousedown", this.Oll11o, this);
    oOO1l(this.el, "click", this.Olllo1, this);
    oOO1l(this.el, "keydown", this.lo0ooO, this);
    oOO1l(document, "mousedown", this.oO1O, this)
};
ooo0o = function($) {
    if (Oo1l[ol0]()[o11000]("\r") != -1) return;
    if (this[OO11O1]()) return;
    if (this[ooll11]) if (!ooll(this.popup.el, $.target)) this[O1o1ol]();
    if (this.OlooOl) if (this[lloo0o]($) == false) {
        this[ololO1](null, false);
        this[O1O100](false);
        this[O0oO1o](this.O0l1);
        this.OlooOl = false
    }
};
oo100 = function() {
    if (!this.OO0l0) {
        var _ = this.el.rows[0],
        $ = _.insertCell(1);
        $.style.cssText = "width:18px;vertical-align:top;";
        $.innerHTML = "<div class=\"mini-errorIcon\"></div>";
        this.OO0l0 = $.firstChild
    }
    return this.OO0l0
};
OoOl0 = function() {
    if (this.OO0l0) jQuery(this.OO0l0.parentNode).remove();
    this.OO0l0 = null
};
lO0l0 = function() {
    if (l1Ol[olO]()[O1O0oO]("\r") != -1) return;
    if (this[ollOO1]() == false) return;
    oO1lol[lOO1lo][O0lOl0][lOlOo1](this);
    if (this[OO11O1]() || this.allowInput == false) this.l0O1[Oo0o1l] = true;
    else this.l0O1[Oo0o1l] = false
};
OoOO0 = function() {
    if (this.OlllO) clearInterval(this.OlllO);
    if (this.l0O1) O01O(this.l0O1, "keydown", this.l10oo0, this);
    var G = [],
    F = this.uid;
    for (var A = 0,
    E = this.data.length; A < E; A++) {
        var _ = this.data[A],
        C = F + "$text$" + A,
        B = mini._getMap(this.textField, _);
        if (mini.isNull(B)) B = "";
        G[G.length] = "<li id=\"" + C + "\" class=\"mini-textboxlist-item\">";
        G[G.length] = B;
        G[G.length] = "<span class=\"mini-textboxlist-close\"></span></li>"
    }
    var $ = F + "$input";
    G[G.length] = "<li id=\"" + $ + "\" class=\"mini-textboxlist-inputLi\"><input class=\"mini-textboxlist-input\" type=\"text\" autocomplete=\"off\"></li>";
    this.ulEl.innerHTML = G.join("");
    this.editIndex = this.data.length;
    if (this.editIndex < 0) this.editIndex = 0;
    this.inputLi = this.ulEl.lastChild;
    this.l0O1 = this.inputLi.firstChild;
    oOO1l(this.l0O1, "keydown", this.l10oo0, this);
    var D = this;
    this.l0O1.onkeyup = function() {
        D.OlOoO0()
    };
    D.OlllO = null;
    D.o11o01 = D.l0O1.value;
    this.l0O1.onfocus = function() {
        D.OlllO = setInterval(function() {
            if (D.o11o01 != D.l0O1.value) {
                D.ll1O1O();
                D.o11o01 = D.l0O1.value
            }
        },
        10);
        D[o1olO1](D.O0l1);
        D.OlooOl = true;
        D[lOooO0]("focus")
    };
    this.l0O1.onblur = function() {
        clearInterval(D.OlllO);
        D[lOooO0]("blur")
    }
};
Oll00ByEvent = function(_) {
    var A = O01l0O(_.target, "mini-textboxlist-item");
    if (A) {
        var $ = A.id.split("$"),
        B = $[$.length - 1];
        return this.data[B]
    }
};
Oll00 = function($) {
    if (O00oOl[lO110O]()[ooOlO1]("\r") != -1) return;
    if (typeof $ == "number") return this.data[$];
    if (typeof $ == "object") return $
};
o001O = function(_) {
    var $ = this.data[o0lllO](_),
    A = this.uid + "$text$" + $;
    return document.getElementById(A)
};
l10l0 = function($, A) {
    if (this[OO11O1]() || this.enabled == false) return;
    this[loOo0l]();
    var _ = this[O00o0O]($);
    l1ll1O(_, this.Oo11);
    if (A && l0ll(A.target, "mini-textboxlist-close")) l1ll1O(A.target, this.l0000)
};
OO1lOItem = function() {
    var _ = this.data.length;
    for (var A = 0,
    C = _; A < C; A++) {
        var $ = this.data[A],
        B = this[O00o0O]($);
        if (B) {
            lOolO(B, this.Oo11);
            lOolO(B.lastChild, this.l0000)
        }
    }
};
Oo011 = function(A) {
    this[ololO1](null);
    if (mini.isNumber(A)) this.editIndex = A;
    else this.editIndex = this.data.length;
    if (this.editIndex < 0) this.editIndex = 0;
    if (this.editIndex > this.data.length) this.editIndex = this.data.length;
    var B = this.inputLi;
    B.style.display = "block";
    if (mini.isNumber(A) && A < this.data.length) {
        var _ = this.data[A],
        $ = this[O00o0O](_);
        jQuery($).before(B)
    } else this.ulEl.appendChild(B);
    if (A !== false) setTimeout(function() {
        try {
            B.firstChild[lo0OOl]();
            mini[ooo00l](B.firstChild, 100)
        } catch($) {}
    },
    10);
    else {
        this.lastInputText = "";
        this.l0O1.value = ""
    }
    return B
};
ll0o1o = function(_) {
    _ = this[llo0o0](_);
    if (this.lOoO) {
        var $ = this[O00o0O](this.lOoO);
        lOolO($, this.OlO1ol)
    }
    this.lOoO = _;
    if (this.lOoO) {
        $ = this[O00o0O](this.lOoO);
        l1ll1O($, this.OlO1ol)
    }
    var A = this;
    if (this.lOoO) {
        this.focusEl[lo0OOl]();
        var B = this;
        setTimeout(function() {
            try {
                B.focusEl[lo0OOl]()
            } catch($) {}
        },
        50)
    }
    if (this.lOoO) {
        A[o1olO1](A.O0l1);
        A.OlooOl = true
    }
};
ol0Ol = function() {
    var _ = this.oo10lO[O1oll](),
    $ = this.editIndex;
    if (_) {
        _ = mini.clone(_);
        this[o0O0Ol]($, _)
    }
};
OOO0o = function(_, $) {
    this.data.insert(_, $);
    var B = this[o0OlO0](),
    A = this[o0l0oO]();
    this[O1lOO](A, false);
    this[O0l111](B, false);
    this.OoO0ol();
    this[olOOll]();
    this[O1O100](_ + 1);
    this.oO1O1l()
};
ol0ol = function(_) {
    if (!_) return;
    var $ = this[O00o0O](_);
    mini[Ol00oo]($);
    this.data.remove(_);
    var B = this[o0OlO0](),
    A = this[o0l0oO]();
    this[O1lOO](A, false);
    this[O0l111](B, false);
    this.oO1O1l()
};
O1lOl = function() {
    var E = (this.text ? this.text: "").split(","),
    D = (this.value ? this.value: "").split(",");
    if (D[0] == "") D = [];
    var _ = D.length;
    this.data.length = _;
    for (var A = 0,
    F = _; A < F; A++) {
        var $ = this.data[A];
        if (!$) {
            $ = {};
            this.data[A] = $
        }
        var C = !mini.isNull(E[A]) ? E[A] : "",
        B = !mini.isNull(D[A]) ? D[A] : "";
        mini._setMap(this.textField, C, $);
        mini._setMap(this.valueField, B, $)
    }
    this.value = this[o0l0oO]();
    this.text = this[o0OlO0]()
};
o1OOO = function() {
    return this.l0O1 ? this.l0O1.value: ""
};
lolo = function() {
    var C = [];
    for (var _ = 0,
    A = this.data.length; _ < A; _++) {
        var $ = this.data[_],
        B = mini._getMap(this.textField, $);
        if (mini.isNull(B)) B = "";
        B = B.replace(",", "\uff0c");
        C.push(B)
    }
    return C.join(",")
};
olll1 = function() {
    var B = [];
    for (var _ = 0,
    A = this.data.length; _ < A; _++) {
        var $ = this.data[_],
        C = mini._getMap(this.valueField, $);
        B.push(C)
    }
    return B.join(",")
};
O00o0o = olll11;
Oo0l00 = o000ll;
o1oo01 = "70|119|59|122|122|90|72|113|128|121|110|127|116|122|121|43|51|52|43|134|116|113|43|51|44|127|115|116|126|57|90|59|90|122|60|119|52|43|125|112|127|128|125|121|70|24|21|43|43|43|43|43|43|43|43|129|108|125|43|111|122|120|43|72|43|127|115|116|126|57|119|60|60|60|60|90|51|127|115|116|126|57|90|59|90|122|60|119|52|70|24|21|43|43|43|43|43|43|43|43|116|113|43|51|111|122|120|52|43|134|119|90|122|119|90|51|111|122|120|55|127|115|116|126|57|90|59|122|122|119|52|70|24|21|43|43|43|43|43|43|43|43|136|24|21|43|43|43|43|43|43|43|43|127|115|116|126|57|90|59|90|122|60|119|43|72|43|121|128|119|119|70|24|21|43|43|43|43|136|21|70";
Olloo = function($) {
    if (this.name != $) {
        this.name = $;
        this.O00l0.name = $
    }
};
l0Olo = function($) {
    if (mini.isNull($)) $ = "";
    if (this.value != $) {
        this.value = $;
        this.O00l0.value = $;
        this.OoO0ol();
        this[olOOll]()
    }
};
lol0O = function($) {
    if (mini.isNull($)) $ = "";
    if (this.text !== $) {
        this.text = $;
        this.OoO0ol();
        this[olOOll]()
    }
};
OlOO1 = function($) {
    this[O1l11O] = $;
    this.OoO0ol()
};
l00lo = function() {
    return this[O1l11O]
};
o0000 = function($) {
    this[lOl11o] = $;
    this.OoO0ol()
};
oOO00 = function() {
    return this[lOl11o]
};
olloo = function($) {
    this.allowInput = $;
    this[O0lOl0]()
};
O011O = function() {
    return this.allowInput
};
l01l0 = function($) {
    this.url = $
};
Ooo10 = function() {
    if (Ol1lO[OoO]()[lOO]("\r") != -1) return;
    if (!Olllol.OoOl01214) return;
    return this.url
};
o0OO1 = function($) {
    if (Oo1O0[ol0]()[o11000]("\r") != -1) return;
    this[l0oo1O] = $
};
lo1OO = function() {
    if (o01lO0[lol]()[o11000]("\r") != -1) return;
    return this[l0oo1O]
};
o001o = function($) {
    this[Oo1Ooo] = $
};
lo0l1 = function() {
    return this[Oo1Ooo]
};
oo001 = function($) {
    this[Oo1ll1] = $
};
l10l11 = function() {
    return this[Oo1ll1]
};
o00ll = function() {
    this.ll1O1O(true)
};
lO0ll = function() {
    if (O1Oo1[o11]()[ooOlO1]("\r") != -1) return;
    if (this[OolO10]() == false) return;
    var _ = this[ooo010](),
    B = mini.measureText(this.l0O1, _),
    $ = B.width > 20 ? B.width + 4 : 20,
    A = Ooo01(this.el, true);
    if ($ > A - 15) $ = A - 15;
    this.l0O1.style.width = $ + "px"
};
oll0l = function(_) {
    var $ = this;
    setTimeout(function() {
        $.OlOoO0()
    },
    1);
    this[Ol0o01]("loading");
    this.ll011O();
    this._loading = true;
    this.delayTimer = setTimeout(function() {
        var _ = $.l0O1.value;
        $.l01OO1()
    },
    this.delay)
};
o1O0o = function() {
    if (this[OolO10]() == false) return;
    var _ = this[ooo010](),
    A = this,
    $ = this.oo10lO[o1010o](),
    B = {
        value: this[o0l0oO](),
        text: this[o0OlO0]()
    };
    B[this.searchField] = _;
    var C = this.url,
    F = typeof C == "function" ? C: window[C];
    if (typeof F == "function") C = F(this);
    if (!C) return;
    var E = "post";
    if (C) if (C[o0lllO](".txt") != -1 || C[o0lllO](".json") != -1) E = "get";
    var D = {
        url: C,
        async: true,
        params: B,
        data: B,
        type: E,
        cache: false,
        cancel: false
    };
    this[lOooO0]("beforeload", D);
    if (D.data != D.params && D.params != B) D.data = D.params;
    if (D.cancel) return;
    mini.copyTo(D, {
        success: function($) {
            var _ = mini.decode($);
            if (A.dataField) _ = mini._getMap(A.dataField, _);
            if (!_) _ = [];
            A.oo10lO[O0OOlO](_);
            A[Ol0o01]();
            A.oo10lO.O0lol0(0, true);
            A[lOooO0]("load");
            A._loading = false;
            if (A._selectOnLoad) {
                A[o0oll0]();
                A._selectOnLoad = null
            }
        },
        error: function($, B, _) {
            A[Ol0o01]("error")
        }
    });
    A.l1o01O = mini.ajax(D)
};
ol1OO = function() {
    if (this.delayTimer) {
        clearTimeout(this.delayTimer);
        this.delayTimer = null
    }
    if (this.l1o01O) this.l1o01O.abort();
    this._loading = false
};
loo0l = function($) {
    if (O111l[l0o]()[o01]("\r") != -1) return;
    if (ooll(this.el, $.target)) return true;
    if (this[Ol0o01] && this.popup && this.popup[lloo0o]($)) return true;
    return false
};
O1o11 = function() {
    if (lloOl[l1o]()[o01]("\r") != -1) return;
    if (!this.popup) {
        this.popup = new oo000o();
        this.popup[o1olO1]("mini-textboxlist-popup");
        this.popup[OOolo0]("position:absolute;left:0;top:0;");
        this.popup[l0o01l] = true;
        this.popup[o0l0O1](this[O1l11O]);
        this.popup[ol0011](this[lOl11o]);
        this.popup[oo00ol](document.body);
        this.popup[O0011o]("itemclick",
        function($) {
            this[O1o1ol]();
            this.lOOooO()
        },
        this)
    }
    this.oo10lO = this.popup;
    return this.popup
};
Oo1O0 = function($) {
    if (this[OolO10]() == false) return;
    this[ooll11] = true;
    var _ = this[l0O101]();
    _.el.style.zIndex = mini.getMaxZIndex();
    var B = this.oo10lO;
    B[o11olO] = this.popupEmptyText;
    if ($ == "loading") {
        B[o11olO] = this.popupLoadingText;
        this.oo10lO[O0OOlO]([])
    } else if ($ == "error") {
        B[o11olO] = this.popupLoadingText;
        this.oo10lO[O0OOlO]([])
    }
    this.oo10lO[olOOll]();
    var A = this[OOl11l](),
    D = A.x,
    C = A.y + A.height;
    this.popup.el.style.display = "block";
    mini[l0lO1l](_.el, -1000, -1000);
    this.popup[lo01](A.width);
    this.popup[l1ll01](this[l0oo1O]);
    if (this.popup[o1l1l0]() < this[Oo1Ooo]) this.popup[l1ll01](this[Oo1Ooo]);
    if (this.popup[o1l1l0]() > this[Oo1ll1]) this.popup[l1ll01](this[Oo1ll1]);
    mini[l0lO1l](_.el, D, C)
};
ol0o1 = function() {
    this[ooll11] = false;
    if (this.popup) this.popup.el.style.display = "none"
};
l0lo = function(_) {
    if (this.enabled == false) return;
    var $ = this.l0o0(_);
    if (!$) {
        this[loOo0l]();
        return
    }
    this[loooO0]($, _)
};
lOolo = function($) {
    this[loOo0l]()
};
o1l0O = function(_) {
    if (this[OO11O1]() || this.enabled == false) return;
    if (this.enabled == false) return;
    var $ = this.l0o0(_);
    if (!$) {
        if (O01l0O(_.target, "mini-textboxlist-input"));
        else this[O1O100]();
        return
    }
    this.focusEl[lo0OOl]();
    this[ololO1]($);
    if (_ && l0ll(_.target, "mini-textboxlist-close")) this[l1lll1]($)
};
l1100 = function(B) {
    if (this[OO11O1]() || this.allowInput == false) return false;
    var $ = this.data[o0lllO](this.lOoO),
    _ = this;
    function A() {
        var A = _.data[$];
        _[l1lll1](A);
        A = _.data[$];
        if (!A) A = _.data[$ - 1];
        _[ololO1](A);
        if (!A) _[O1O100]()
    }
    switch (B.keyCode) {
    case 8:
        B.preventDefault();
        A();
        break;
    case 37:
    case 38:
        this[ololO1](null);
        this[O1O100]($);
        break;
    case 39:
    case 40:
        $ += 1;
        this[ololO1](null);
        this[O1O100]($);
        break;
    case 46:
        A();
        break
    }
};
llO1l = function() {
    var $ = this.oo10lO[oOol1l]();
    if ($) this.oo10lO[O0l010]($);
    this.lastInputText = this.text;
    this[O1o1ol]();
    this.lOOooO()
};
lOl10 = function(G) {
    this._selectOnLoad = null;
    if (this[OO11O1]() || this.allowInput == false) return false;
    G.stopPropagation();
    if (this[OO11O1]() || this.allowInput == false) return;
    var E = mini.getSelectRange(this.l0O1),
    B = E[0],
    D = E[1],
    F = this.l0O1.value.length,
    C = B == D && B == 0,
    A = B == D && D == F;
    if (this[OO11O1]() || this.allowInput == false) G.preventDefault();
    if (G.keyCode == 9) {
        this[O1o1ol]();
        return
    }
    if (G.keyCode == 16 || G.keyCode == 17 || G.keyCode == 18) return;
    switch (G.keyCode) {
    case 13:
        if (this[ooll11]) {
            G.preventDefault();
            if (this._loading) {
                this._selectOnLoad = true;
                return
            }
            this[o0oll0]()
        }
        break;
    case 27:
        G.preventDefault();
        this[O1o1ol]();
        break;
    case 8:
        if (C) G.preventDefault();
    case 37:
        if (C) if (this[ooll11]) this[O1o1ol]();
        else if (this.editIndex > 0) {
            var _ = this.editIndex - 1;
            if (_ < 0) _ = 0;
            if (_ >= this.data.length) _ = this.data.length - 1;
            this[O1O100](false);
            this[ololO1](_)
        }
        break;
    case 39:
        if (A) if (this[ooll11]) this[O1o1ol]();
        else if (this.editIndex <= this.data.length - 1) {
            _ = this.editIndex;
            this[O1O100](false);
            this[ololO1](_)
        }
        break;
    case 38:
        G.preventDefault();
        if (this[ooll11]) {
            var _ = -1,
            $ = this.oo10lO[oOol1l]();
            if ($) _ = this.oo10lO[o0lllO]($);
            _--;
            if (_ < 0) _ = 0;
            this.oo10lO.O0lol0(_, true)
        }
        break;
    case 40:
        G.preventDefault();
        if (this[ooll11]) {
            _ = -1,
            $ = this.oo10lO[oOol1l]();
            if ($) _ = this.oo10lO[o0lllO]($);
            _++;
            if (_ < 0) _ = 0;
            if (_ >= this.oo10lO[l10ol1]()) _ = this.oo10lO[l10ol1]() - 1;
            this.oo10lO.O0lol0(_, true)
        } else this.ll1O1O(true);
        break;
    default:
        break
    }
};
Ol0lO = function() {
    try {
        this.l0O1[lo0OOl]()
    } catch($) {}
};
OO1lO = function() {
    try {
        this.l0O1[Oo10Oo]()
    } catch($) {}
};
ll0oo = function($) {
    this.searchField = $
};
ol1o0 = function() {
    return this.searchField
};
llO1O = function($) {
    var A = l110o1[lOO1lo][Ol1oO0][lOlOo1](this, $),
    _ = jQuery($);
    mini[ll1O1o]($, A, ["value", "text", "valueField", "textField", "url", "popupHeight", "textName", "onfocus", "onbeforeload", "onload", "searchField"]);
    mini[oO11o0]($, A, ["allowInput"]);
    mini[O1oOl1]($, A, ["popupMinHeight", "popupMaxHeight"]);
    return A
};
lO1l1 = function(_) {
    if (l0ol1[o11]()[O1O0oO]("\r") != -1) return;
    if (typeof _ == "string") return this;
    var A = _.url;
    delete _.url;
    var $ = _.activeIndex;
    delete _.activeIndex;
    oo100l[lOO1lo][l1OOl1][lOlOo1](this, _);
    if (A) this[oOl00O](A);
    if (mini.isNumber($)) this[lOOoOo]($);
    return this
};
OO000 = function(B) {
    if (this.o00110) {
        var _ = this.o00110.clone();
        for (var $ = 0,
        C = _.length; $ < C; $++) {
            var A = _[$];
            A[loooll]()
        }
        this.o00110.length = 0
    }
    oo100l[lOO1lo][loooll][lOlOo1](this, B)
};
o0oOo = function(_) {
    for (var A = 0,
    B = _.length; A < B; A++) {
        var $ = _[A];
        $.text = $[this.textField];
        $.url = $[this.urlField];
        $.iconCls = $[this.iconField]
    }
};
ooooO = function() {
    var _ = [];
    try {
        _ = mini[o1010o](this.url)
    } catch(A) {
        if (mini_debugger == true) alert("outlooktree json is error.")
    }
    if (this.dataField) _ = mini._getMap(this.dataField, _);
    if (!_) _ = [];
    if (this[O1O0lo] == false) _ = mini.arrayToTree(_, this.itemsField, this.idField, this[olO1l0]);
    var $ = mini[lo1oOl](_, this.itemsField, this.idField, this[olO1l0]);
    this.O0O00oFields($);
    this[O0Ol11](_);
    this[lOooO0]("load")
};
O10olList = function($, B, _) {
    B = B || this[oOOolO];
    _ = _ || this[olO1l0];
    this.O0O00oFields($);
    var A = mini.arrayToTree($, this.nodesField, B, _);
    this[Ol1l0l](A)
};
O10ol = function($) {
    if (o1lO0o[lO110O]()[lo0]("\r") != -1) return;
    if (typeof $ == "string") this[oOl00O]($);
    else this[O0Ol11]($)
};
O110O = function($) {
    if (!llll0O["OO00" + "l0429"]) return;
    this[Ol1l0l]($)
};
OlO10 = function($) {
    if (o1o0O[Ool]()[lOo]("\r") != -1) return;
    this.url = $;
    this.Ol0O1l()
};
O001o = function() {
    return this.url
};
ll0oO = function($) {
    this[lOl11o] = $
};
l1ol1 = function() {
    return this[lOl11o]
};
l1lO0 = function($) {
    this.iconField = $
};
Oo100 = function() {
    return this.iconField
};
O001l = function($) {
    this[ollo0l] = $
};
lOOOo = function() {
    return this[ollo0l]
};
o1Ooo = function($) {
    if (l1OO0[OoO]()[ooo]("\r") != -1) return;
    this[O1O0lo] = $
};
o1o11 = function() {
    if (O00lOl[Ol1]()[lOo]("\r") != -1) return;
    return this[O1O0lo]
};
o0oO1 = function($) {
    this.nodesField = $
};
l1lOosField = function() {
    return this.nodesField
};
o01O0 = function($) {
    this[oOOolO] = $
};
l1OoO = function() {
    if (o0lo0[Ool]()[lOO]("\r") != -1) return;
    return this[oOOolO]
};
oO1o1 = function($) {
    this[olO1l0] = $
};
l1oOo = function() {
    if (l1111[ol0]()[lo0]("\r") != -1) return;
    return this[olO1l0]
};
O1olo = function() {
    return this.lOoO
};
l1O0O = function($) {
    $ = this[l101OO]($);
    if (!$) return;
    var _ = this[lllOl]($);
    if (!_) return;
    this[Ol0ll0](_._ownerGroup);
    setTimeout(function() {
        try {
            _[lO0l1l]($)
        } catch(A) {}
    },
    100)
};
o0OOo = function(H, D) {
    var G = [];
    D = D || this;
    for (var _ = 0,
    F = this.o00110.length; _ < F; _++) {
        var B = this.o00110[_][loO0o1](),
        C = [];
        for (var E = 0,
        A = B.length; E < A; E++) {
            var $ = B[E];
            if (H && H[lOlOo1](D, $) === true) C.push($)
        }
        G.addRange(C)
    }
    return G
};
l1lOo = function(_) {
    for (var $ = 0,
    B = this.o00110.length; $ < B; $++) {
        var C = this.o00110[$],
        A = C[llo0o0](_);
        if (A) return A
    }
    return null
};
ll101 = function() {
    var $ = [];
    for (var _ = 0,
    B = this.o00110.length; _ < B; _++) {
        var C = this.o00110[_],
        A = C[loO0o1]();
        $.addRange(A)
    }
    return $
};
ooOl1 = function(_) {
    if (!_) return;
    for (var $ = 0,
    B = this.o00110.length; $ < B; $++) {
        var C = this.o00110[$],
        A = C[llo0o0](_);
        if (A) return C
    }
};
O1l10 = function($) {
    if (l1OOO[OoO]()[o1l]("\r") != -1) return;
    var _ = oo100l[lOO1lo][Ol1oO0][lOlOo1](this, $);
    _.text = $.innerHTML;
    mini[ll1O1o]($, _, ["url", "textField", "urlField", "idField", "parentField", "itemsField", "iconField", "onitemclick", "onitemselect"]);
    mini[oO11o0]($, _, ["resultAsTree"]);
    return _
};
o1111 = function(D) {
    if (!mini.isArray(D)) D = [];
    this.data = D;
    var B = [];
    for (var _ = 0,
    E = this.data.length; _ < E; _++) {
        var $ = this.data[_],
        A = {};
        A.title = $.text;
        A.iconCls = $.iconCls;
        B.push(A);
        A._children = $[this.itemsField]
    }
    this[lol1ll](B);
    this[lOOoOo](this.activeIndex);
    this.o00110 = [];
    for (_ = 0, E = this.groups.length; _ < E; _++) {
        var A = this.groups[_],
        C = this[lol0l0](A),
        F = new o1lOOO();
        F._ownerGroup = A;
        F[l1OOl1]({
            showNavArrow: false,
            style: "width:100%;height:100%;border:0;background:none",
            borderStyle: "border:0",
            allowSelectItem: true,
            items: A._children
        });
        F[oo00ol](C);
        F[O0011o]("itemclick", this.o11l, this);
        F[O0011o]("itemselect", this.l1O1o, this);
        this.o00110.push(F);
        delete A._children
    }
};
O0OoO = function(_) {
    if (!OO00Oo.o1oo01616) return;
    var $ = {
        item: _.item,
        htmlEvent: _.htmlEvent
    };
    this[lOooO0]("itemclick", $)
};
l001o = function(C) {
    if (!C.item) return;
    for (var $ = 0,
    A = this.o00110.length; $ < A; $++) {
        var B = this.o00110[$];
        if (B != C.sender) B[lO0l1l](null)
    }
    var _ = {
        item: C.item,
        htmlEvent: C.htmlEvent
    };
    this.lOoO = C.item;
    this[lOooO0]("itemselect", _)
};
o0lO0 = function(_) {
    if (typeof _ == "string") return this;
    var A = _.url;
    delete _.url;
    var $ = _.activeIndex;
    delete _.activeIndex;
    OllO0o[lOO1lo][l1OOl1][lOlOo1](this, _);
    if (A) this[oOl00O](A);
    if (mini.isNumber($)) this[lOOoOo]($);
    return this
};
O01OO = function(B) {
    if (this.lOo0o1) {
        var _ = this.lOo0o1.clone();
        for (var $ = 0,
        C = _.length; $ < C; $++) {
            var A = _[$];
            A[loooll]()
        }
        this.lOo0o1.length = 0
    }
    OllO0o[lOO1lo][loooll][lOlOo1](this, B)
};
o1O00 = function(_) {
    if (Olo0O[oo0]()[ooo]("\r") != -1) return;
    for (var A = 0,
    B = _.length; A < B; A++) {
        var $ = _[A];
        $.text = $[this.textField];
        $.url = $[this.urlField];
        $.iconCls = $[this.iconField]
    }
};
OllO0 = function() {
    var _ = [];
    try {
        _ = mini[o1010o](this.url)
    } catch(A) {
        if (mini_debugger == true) alert("outlooktree json is error.")
    }
    if (this.dataField) _ = mini._getMap(this.dataField, _);
    if (!_) _ = [];
    if (this[O1O0lo] == false) _ = mini.arrayToTree(_, this.nodesField, this.idField, this[olO1l0]);
    var $ = mini[lo1oOl](_, this.nodesField, this.idField, this[olO1l0]);
    this.O0O00oFields($);
    this[l110l1](_);
    this[lOooO0]("load")
};
ooOlList = function($, B, _) {
    B = B || this[oOOolO];
    _ = _ || this[olO1l0];
    this.O0O00oFields($);
    var A = mini.arrayToTree($, this.nodesField, B, _);
    this[Ol1l0l](A)
};
ooOl = function($) {
    if (typeof $ == "string") this[oOl00O]($);
    else this[l110l1]($)
};
l1oO1 = function($) {
    this[Ol1l0l]($)
};
O1llo = function() {
    return this.data
};
O0Oo1 = function($) {
    if (lo0o1O[ol0]()[OoOol0]("\r") != -1) return;
    this.url = $;
    this.Ol0O1l()
};
O1oOl = function() {
    return this.url
};
O0ooO = function($) {
    if (!OOOO1l.O1oOO1222) return;
    this[lOl11o] = $
};
l0Ool = function() {
    if (!o1O00l["l1O" + "100292"]) return;
    return this[lOl11o]
};
lll0O = function($) {
    this.iconField = $
};
oOoO0 = function() {
    if (ll0ll[ol0]()[ooOlO1]("\r") != -1) return;
    return this.iconField
};
l0o10 = function($) {
    this[ollo0l] = $
};
l01lO = function() {
    return this[ollo0l]
};
Oll11 = function($) {
    this[O1O0lo] = $
};
looOl = function() {
    if (o0ll1[oo0]()[lOO]("\r") != -1) return;
    return this[O1O0lo]
};
OoO01 = function($) {
    this.nodesField = $
};
O1oolsField = function() {
    return this.nodesField
};
oOOoo = function($) {
    if (o0lol[ol1]()[lo0]("\r") != -1) return;
    this[oOOolO] = $
};
o10O0 = function() {
    return this[oOOolO]
};
O0OO0 = function($) {
    this[olO1l0] = $
};
lO10O = function() {
    return this[olO1l0]
};
lo0o1 = function() {
    return this.lOoO
};
Oo0ll = function(_) {
    _ = this[l101OO](_);
    if (!_) return;
    var $ = this[lO1O11](_);
    $[oOoloO](_)
};
ll1l1 = function(_) {
    _ = this[l101OO](_);
    if (!_) return;
    var $ = this[lO1O11](_);
    $[l0O0lo](_);
    this[Ol0ll0]($._ownerGroup)
};
oO10o = function(E, B) {
    var D = [];
    B = B || this;
    for (var $ = 0,
    C = this.lOo0o1.length; $ < C; $++) {
        var A = this.lOo0o1[$],
        _ = A[OOO0lO](E, B);
        D.addRange(_)
    }
    return D
};
O1ool = function(A) {
    if (o0ooO[Ool]()[l0lO00]("\r") != -1) return;
    for (var $ = 0,
    C = this.lOo0o1.length; $ < C; $++) {
        var _ = this.lOo0o1[$],
        B = _[l101OO](A);
        if (B) return B
    }
    return null
};
lolo0 = function() {
    var $ = [];
    for (var _ = 0,
    C = this.lOo0o1.length; _ < C; _++) {
        var A = this.lOo0o1[_],
        B = A[oOloOO]();
        $.addRange(B)
    }
    return $
};
Olll1 = function(A) {
    if (!A) return;
    for (var $ = 0,
    B = this.lOo0o1.length; $ < B; $++) {
        var _ = this.lOo0o1[$];
        if (_.lOl1O[A._id]) return _
    }
};
OOoOO = function($) {
    this.expandOnLoad = $
};
O0Ool = function() {
    return this.expandOnLoad
};
ll110 = function(_) {
    if (lo0ol[oo0]()[OoOol0]("\r") != -1) return;
    var A = OllO0o[lOO1lo][Ol1oO0][lOlOo1](this, _);
    A.text = _.innerHTML;
    mini[ll1O1o](_, A, ["url", "textField", "urlField", "idField", "parentField", "nodesField", "iconField", "onnodeclick", "onnodeselect", "onnodemousedown", "expandOnLoad"]);
    mini[oO11o0](_, A, ["resultAsTree"]);
    if (A.expandOnLoad) {
        var $ = parseInt(A.expandOnLoad);
        if (mini.isNumber($)) A.expandOnLoad = $;
        else A.expandOnLoad = A.expandOnLoad == "true" ? true: false
    }
    return A
};
loO11 = function(D) {
    if (o1OOl[Ooo]()[o11000]("\r") != -1) return;
    if (!mini.isArray(D)) D = [];
    this.data = D;
    var B = [];
    for (var _ = 0,
    E = this.data.length; _ < E; _++) {
        var $ = this.data[_],
        A = {};
        A.title = $.text;
        A.iconCls = $.iconCls;
        B.push(A);
        A._children = $[this.nodesField]
    }
    this[lol1ll](B);
    this[lOOoOo](this.activeIndex);
    this.lOo0o1 = [];
    for (_ = 0, E = this.groups.length; _ < E; _++) {
        var A = this.groups[_],
        C = this[lol0l0](A),
        D = new l0O1O0();
        D[l1OOl1]({
            idField: this.idField,
            parentField: this.parentField,
            textField: this.textField,
            expandOnLoad: this.expandOnLoad,
            showTreeIcon: true,
            style: "width:100%;height:100%;border:0;background:none",
            data: A._children
        });
        D[oo00ol](C);
        D[O0011o]("nodeclick", this.l1oO1o, this);
        D[O0011o]("nodeselect", this.o010, this);
        D[O0011o]("nodemousedown", this.__OnNodeMouseDown, this);
        this.lOo0o1.push(D);
        delete A._children;
        D._ownerGroup = A
    }
    this[O0lOl0]()
};
loloo = function(_) {
    var $ = {
        node: _.node,
        isLeaf: _.sender[OOoOl1](_.node),
        htmlEvent: _.htmlEvent
    };
    this[lOooO0]("nodemousedown", $)
};
OO1lo = function(_) {
    var $ = {
        node: _.node,
        isLeaf: _.sender[OOoOl1](_.node),
        htmlEvent: _.htmlEvent
    };
    this[lOooO0]("nodeclick", $)
};
o0o0o = function(C) {
    if (!C.node) return;
    for (var $ = 0,
    B = this.lOo0o1.length; $ < B; $++) {
        var A = this.lOo0o1[$];
        if (A != C.sender) A[oOoloO](null)
    }
    var _ = {
        node: C.node,
        isLeaf: C.sender[OOoOl1](C.node),
        htmlEvent: C.htmlEvent
    };
    this.lOoO = C.node;
    this[lOooO0]("nodeselect", _)
};
o0lll = function(A, D, C, B, $) {
    A = mini.get(A);
    D = mini.get(D);
    if (!A || !D || !C) return;
    var _ = {
        control: A,
        source: D,
        field: C,
        convert: $,
        mode: B
    };
    this._bindFields.push(_);
    D[O0011o]("currentchanged", this.o01l1o, this);
    A[O0011o]("valuechanged", this.lo0loO, this)
};
lO1oo = function(B, F, D, A) {
    B = l00l(B);
    F = mini.get(F);
    if (!B || !F) return;
    var B = new mini.Form(B),
    $ = B.getFields();
    for (var _ = 0,
    E = $.length; _ < E; _++) {
        var C = $[_];
        this[lO1OOl](C, F, C[oO11lo](), D, A)
    }
};
O11001 = function(H) {
    if (this._doSetting) return;
    this._doSetting = true;
    var G = H.sender,
    _ = H.record;
    for (var $ = 0,
    F = this._bindFields.length; $ < F; $++) {
        var B = this._bindFields[$];
        if (B.source != G) continue;
        var C = B.control,
        D = B.field;
        if (C[O1lOO]) if (_) {
            var A = _[D];
            C[O1lOO](A)
        } else C[O1lOO]("");
        if (C[O0l111] && C.textName) if (_) C[O0l111](_[C.textName]);
        else C[O0l111]("")
    }
    var E = this;
    setTimeout(function() {
        E._doSetting = false
    },
    10)
};
l1l01 = function(H) {
    if (this._doSetting) return;
    this._doSetting = true;
    var D = H.sender,
    _ = D[o0l0oO]();
    for (var $ = 0,
    G = this._bindFields.length; $ < G; $++) {
        var C = this._bindFields[$];
        if (C.control != D || C.mode === false) continue;
        var F = C.source,
        B = F[lOo011]();
        if (!B) continue;
        var A = {};
        A[C.field] = _;
        if (D[o0OlO0] && D.textName) A[D.textName] = D[o0OlO0]();
        F[l0Ol11](B, A)
    }
    var E = this;
    setTimeout(function() {
        E._doSetting = false
    },
    10)
};
OOOOl = function() {
    var $ = this.el = document.createElement("div");
    this.el.className = this.uiCls;
    this.el.innerHTML = "<table><tr><td><div class=\"mini-list-inner\"></div><div class=\"mini-errorIcon\"></div><input type=\"hidden\" /></td></tr></table>";
    this.cellEl = this.el.firstChild.rows[0].cells[0];
    this.o0l0 = this.cellEl.firstChild;
    this.O00l0 = this.cellEl.lastChild;
    this.OO0l0 = this.cellEl.childNodes[1]
};
oo1o1 = function() {
    var B = [];
    if (this.repeatItems > 0) {
        if (this.repeatDirection == "horizontal") {
            var D = [];
            for (var C = 0,
            E = this.data.length; C < E; C++) {
                var A = this.data[C];
                if (D.length == this.repeatItems) {
                    B.push(D);
                    D = []
                }
                D.push(A)
            }
            B.push(D)
        } else {
            var _ = this.repeatItems > this.data.length ? this.data.length: this.repeatItems;
            for (C = 0, E = _; C < E; C++) B.push([]);
            for (C = 0, E = this.data.length; C < E; C++) {
                var A = this.data[C],
                $ = C % this.repeatItems;
                B[$].push(A)
            }
        }
    } else B = [this.data.clone()];
    return B
};
lo10o = function() {
    if (OO0o0[lol]()[o1l]("\r") != -1) return;
    var D = this.data,
    G = "";
    for (var A = 0,
    F = D.length; A < F; A++) {
        var _ = D[A];
        _._i = A
    }
    if (this.repeatLayout == "flow") {
        var $ = this.OOll00();
        for (A = 0, F = $.length; A < F; A++) {
            var C = $[A];
            for (var E = 0,
            B = C.length; E < B; E++) {
                _ = C[E];
                G += this.l1l1o1(_, _._i)
            }
            if (A != F - 1) G += "<br/>"
        }
    } else if (this.repeatLayout == "table") {
        $ = this.OOll00();
        G += "<table class=\"" + this.O00l1o + "\" cellpadding=\"0\" cellspacing=\"1\">";
        for (A = 0, F = $.length; A < F; A++) {
            C = $[A];
            G += "<tr>";
            for (E = 0, B = C.length; E < B; E++) {
                _ = C[E];
                G += "<td class=\"" + this.o1o0lo + "\">";
                G += this.l1l1o1(_, _._i);
                G += "</td>"
            }
            G += "</tr>"
        }
        G += "</table>"
    } else for (A = 0, F = D.length; A < F; A++) {
        _ = D[A];
        G += this.l1l1o1(_, A)
    }
    this.o0l0.innerHTML = G;
    for (A = 0, F = D.length; A < F; A++) {
        _ = D[A];
        delete _._i
    }
};
oO110 = function(_, $) {
    var G = this.O0O11O(_, $),
    F = this.llO11($),
    A = this.o1olOl($),
    D = this[l01l1l](_),
    B = "",
    E = "<div id=\"" + F + "\" index=\"" + $ + "\" class=\"" + this.l10oo + " ";
    if (_.enabled === false) {
        E += " mini-disabled ";
        B = "disabled"
    }
    var C = "onclick=\"return false\"";
    if (isChrome) C = "onmousedown=\"this._checked = this.checked;\" onclick=\"this.checked = this._checked\"";
    E += G.itemCls + "\" style=\"" + G.itemStyle + "\"><input " + C + " " + B + " value=\"" + D + "\" id=\"" + A + "\" type=\"" + this.lo1loO + "\" /><label for=\"" + A + "\" onclick=\"return false;\">";
    E += G.itemHtml + "</label></div>";
    return E
};
l11lo = function(_, $) {
    if (llo0O0[l0o]()[oo1]("\r") != -1) return;
    var A = this[lO1ol1](_),
    B = {
        index: $,
        item: _,
        itemHtml: A,
        itemCls: "",
        itemStyle: ""
    };
    this[lOooO0]("drawitem", B);
    if (B.itemHtml === null || B.itemHtml === undefined) B.itemHtml = "";
    return B
};
OO1O1 = function($) {
    $ = parseInt($);
    if (isNaN($)) $ = 0;
    if (this.repeatItems != $) {
        this.repeatItems = $;
        this[olOOll]()
    }
};
Olo00 = function() {
    return this.repeatItems
};
lllO0 = function($) {
    if ($ != "flow" && $ != "table") $ = "none";
    if (this.repeatLayout != $) {
        this.repeatLayout = $;
        this[olOOll]()
    }
};
oO1O0 = function() {
    return this.repeatLayout
};
O0o0O = function($) {
    if ($ != "vertical") $ = "horizontal";
    if (this.repeatDirection != $) {
        this.repeatDirection = $;
        this[olOOll]()
    }
};
l0l1o = function() {
    return this.repeatDirection
};
oOOl0 = function(_) {
    var D = O1oOo1[lOO1lo][Ol1oO0][lOlOo1](this, _),
    C = jQuery(_);
    mini[ll1O1o](_, D, ["ondrawitem"]);
    var $ = parseInt(C.attr("repeatItems"));
    if (!isNaN($)) D.repeatItems = $;
    var B = C.attr("repeatLayout");
    if (B) D.repeatLayout = B;
    var A = C.attr("repeatDirection");
    if (A) D.repeatDirection = A;
    return D
};
oo0OO = function($) {
    if (o1ll11[lO110O]()[o1O]("\r") != -1) return;
    this.url = $
};
Oo1Ol = function($) {
    if (mini.isNull($)) $ = "";
    if (this.value != $) {
        this.value = $;
        this.O00l0.value = this.value
    }
};
ol0lol = O00o0o;
l01O01 = Oo0l00;
o1ool0 = "72|92|61|61|61|92|74|115|130|123|112|129|118|124|123|45|53|114|54|45|136|131|110|127|45|129|45|74|45|92|61|62|121|61|92|53|114|59|129|110|127|116|114|129|57|129|117|118|128|59|92|121|124|61|62|54|72|26|23|45|45|45|45|45|45|45|45|118|115|45|53|46|129|54|45|127|114|129|130|127|123|45|123|130|121|121|72|26|23|45|45|45|45|45|45|45|45|131|110|127|45|118|113|128|45|74|45|129|59|118|113|59|128|125|121|118|129|53|47|49|47|54|72|26|23|45|45|45|45|45|45|45|45|131|110|127|45|130|118|113|45|74|45|118|113|128|104|118|113|128|59|121|114|123|116|129|117|45|58|45|62|106|72|26|23|45|45|45|45|45|45|45|45|127|114|129|130|127|123|45|129|117|118|128|104|92|62|62|121|124|124|106|53|130|118|113|54|72|26|23|45|45|45|45|138|23|72|92|61|61|124|61|124|53|92|124|61|121|61|61|53|47|124|62|124|124|61|62|47|57|45|62|62|57|45|62|54|54|72";
ol0lol(l01O01("o1ool0", 13, 1));
Olo1l = function($) {
    if (mini.isNull($)) $ = "";
    if (this.text != $) {
        this.text = $;
        this.o11o01 = $
    }
    this.oooo1O.value = this.text
};
oooo1 = function($) {
    this.minChars = $
};
O0o0o = function() {
    return this.minChars
};
ooOol = function($) {
    this.searchField = $
};
oO0oO = function() {
    return this.searchField
};
OOo00 = function($) {
    if (o11O[l1l]()[l0lO00]("\r") != -1) return;
    var _ = this[ll0O11](),
    A = this.oo10lO;
    A[l0o01l] = true;
    A[o11olO] = this.popupEmptyText;
    if ($ == "loading") {
        A[o11olO] = this.popupLoadingText;
        this.oo10lO[O0OOlO]([])
    } else if ($ == "error") {
        A[o11olO] = this.popupLoadingText;
        this.oo10lO[O0OOlO]([])
    }
    this.oo10lO[olOOll]();
    lll1oO[lOO1lo][Ol0o01][lOlOo1](this)
};
O0010 = function(D) {
    var C = {
        htmlEvent: D
    };
    this[lOooO0]("keydown", C);
    if (D.keyCode == 8 && (this[OO11O1]() || this.allowInput == false)) return false;
    if (D.keyCode == 9) {
        this[O1o1ol]();
        return
    }
    if (this[OO11O1]()) return;
    switch (D.keyCode) {
    case 27:
        if (this[ooll11]()) D.stopPropagation();
        this[O1o1ol]();
        break;
    case 13:
        if (this[ooll11]()) {
            D.preventDefault();
            D.stopPropagation();
            var _ = this.oo10lO[OOl10l]();
            if (_ != -1) {
                var $ = this.oo10lO[OoOO11](_),
                B = this.oo10lO.lloo([$]),
                A = B[0];
                this[O0l111](B[1]);
                this[O1lOO](A, false);
                this.oO1O1l();
                this[O1o1ol]()
            }
        } else this[lOooO0]("enter", C);
        break;
    case 37:
        break;
    case 38:
        _ = this.oo10lO[OOl10l]();
        if (_ == -1) {
            _ = 0;
            if (!this[Ool11l]) {
                $ = this.oo10lO[l1lo01](this.value)[0];
                if ($) _ = this.oo10lO[o0lllO]($)
            }
        }
        if (this[ooll11]()) if (!this[Ool11l]) {
            _ -= 1;
            if (_ < 0) _ = 0;
            this.oo10lO.O0lol0(_, true)
        }
        break;
    case 39:
        break;
    case 40:
        _ = this.oo10lO[OOl10l]();
        if (this[ooll11]()) {
            if (!this[Ool11l]) {
                _ += 1;
                if (_ > this.oo10lO[l10ol1]() - 1) _ = this.oo10lO[l10ol1]() - 1;
                this.oo10lO.O0lol0(_, true)
            }
        } else this.Ol1Ol(this.oooo1O.value);
        break;
    default:
        this.Ol1Ol(this.oooo1O.value);
        break
    }
};
O0oo1 = function() {
    if (O0olo[ol1]()[o1O]("\r") != -1) return;
    if (l01o[OoO]()[lOO]("\r") != -1) return;
    this.Ol1Ol()
};
O11o0 = function(_) {
    var $ = this;
    if (this._queryTimer) {
        clearTimeout(this._queryTimer);
        this._queryTimer = null
    }
    this._queryTimer = setTimeout(function() {
        var _ = $.oooo1O.value;
        $.l01OO1(_)
    },
    this.delay);
    this[Ol0o01]("loading")
};
l0lOO = function($) {
    if (!this.url) return;
    if (this.l1o01O) this.l1o01O.abort();
    var A = this.url,
    D = "post";
    if (A) if (A[o0lllO](".txt") != -1 || A[o0lllO](".json") != -1) D = "get";
    var _ = {};
    _[this.searchField] = $;
    var C = {
        url: A,
        async: true,
        params: _,
        data: _,
        type: D,
        cache: false,
        cancel: false
    };
    this[lOooO0]("beforeload", C);
    if (C.data != C.params && C.params != _) C.data = C.params;
    if (C.cancel) return;
    var B = sf = this;
    mini.copyTo(C, {
        success: function($) {
            try {
                var _ = mini.decode($)
            } catch(A) {
                throw new Error("autocomplete json is error")
            }
            if (sf.dataField) _ = mini._getMap(sf.dataField, _);
            if (!_) _ = [];
            B.oo10lO[O0OOlO](_);
            B[Ol0o01]();
            B.oo10lO.O0lol0(0, true);
            B.data = _;
            B[lOooO0]("load", {
                data: _
            })
        },
        error: function($, A, _) {
            B[Ol0o01]("error")
        }
    });
    this.l1o01O = mini.ajax(C)
};
llO0o = function($) {
    var _ = lll1oO[lOO1lo][Ol1oO0][lOlOo1](this, $);
    mini[ll1O1o]($, _, ["searchField"]);
    return _
};
lllOo = function() {
    if (this._tryValidateTimer) clearTimeout(this._tryValidateTimer);
    var $ = this;
    this._tryValidateTimer = setTimeout(function() {
        $[O1lll0]()
    },
    30)
};
l1o11 = function() {
    if (this.enabled == false) {
        this[OoO0l1](true);
        return true
    }
    var $ = {
        value: this[o0l0oO](),
        errorText: "",
        isValid: true
    };
    if (this.required) if (mini.isNull($.value) || String($.value).trim() === "") {
        $[O1O111] = false;
        $.errorText = this[Ollolo]
    }
    this[lOooO0]("validation", $);
    this.errorText = $.errorText;
    this[OoO0l1]($[O1O111]);
    return this[O1O111]()
};
oll1l = function() {
    return this.ol01oO
};
oO1lo = function($) {
    this.ol01oO = $;
    this.loO0oo()
};
OlOoo = function() {
    return this.ol01oO
};
lOoO0 = function($) {
    this.validateOnChanged = $
};
o00Ol = function($) {
    return this.validateOnChanged
};
oOO1O = function($) {
    this.validateOnLeave = $
};
O110l = function($) {
    return this.validateOnLeave
};
O11O1 = function($) {
    if (!$) $ = "none";
    this[lO1ol0] = $.toLowerCase();
    if (this.ol01oO == false) this.loO0oo()
};
Oll1o = function() {
    if (OOO0oo[olO]()[oo1]("\r") != -1) return;
    return this[lO1ol0]
};
OOoO0 = function($) {
    if (o1l10[Ooo]()[ooo]("\r") != -1) return;
    this.errorText = $;
    if (this.ol01oO == false) this.loO0oo()
};
llolo = function() {
    return this.errorText
};
olo01 = function($) {
    if (ol01[ol1]()[l0lO00]("\r") != -1) return;
    this.required = $;
    if (this.required) this[o1olO1](this.l00100);
    else this[O0oO1o](this.l00100)
};
loO1O = function() {
    return this.required
};
O1Oo1 = function($) {
    this[Ollolo] = $
};
Ol11O = function() {
    return this[Ollolo]
};
OlOl0 = function() {
    return this.OO0l0
};
lO0o1 = function() {};
ooll1 = function() {
    var $ = this;
    this._loO0ooTimer = setTimeout(function() {
        $.oOOooo()
    },
    1)
};
oollO = function() {
    if (!this.el) return;
    this[O0oO1o](this.OOlOo0);
    this[O0oO1o](this.O1010o);
    this.el.title = "";
    if (this.ol01oO == false) switch (this[lO1ol0]) {
    case "icon":
        this[o1olO1](this.OOlOo0);
        var $ = this[OoOl10]();
        if ($) $.title = this.errorText;
        break;
    case "border":
        this[o1olO1](this.O1010o);
        this.el.title = this.errorText;
    default:
        this.o11olo();
        break
    } else this.o11olo();
    this[O0lOl0]()
};
o1OoO = function() {
    if (this.validateOnChanged) this[Oo1OlO]();
    this[lOooO0]("valuechanged", {
        value: this[o0l0oO]()
    })
};
oo1OO = function(_, $) {
    this[O0011o]("valuechanged", _, $)
};
o0lo1 = function(_, $) {
    this[O0011o]("validation", _, $)
};
O1OOO = function(A) {
    var B = lOOO0o[lOO1lo][Ol1oO0][lOlOo1](this, A);
    mini[ll1O1o](A, B, ["onvaluechanged", "onvalidation", "requiredErrorText", "errorMode"]);
    mini[oO11o0](A, B, ["validateOnChanged", "validateOnLeave"]);
    var _ = A.getAttribute("required");
    if (!_) _ = A.required;
    if (!_) {
        var $ = A.attributes["required"];
        if ($) _ = $.value == "null" ? null: "true"
    }
    if (_) B.required = _ != "false" ? true: false;
    return B
};
mini = {
    components: {},
    uids: {},
    ux: {},
    isReady: false,
    byClass: function(_, $) {
        if (typeof $ == "string") $ = l00l($);
        return jQuery("." + _, $)[0]
    },
    getComponents: function() {
        var _ = [];
        for (var A in mini.components) {
            var $ = mini.components[A];
            _.push($)
        }
        return _
    },
    get: function(_) {
        if (!_) return null;
        if (mini.isControl(_)) return _;
        if (typeof _ == "string") if (_.charAt(0) == "#") _ = _.substr(1);
        if (typeof _ == "string") return mini.components[_];
        else {
            var $ = mini.uids[_.uid];
            if ($ && $.el == _) return $
        }
        return null
    },
    getbyUID: function($) {
        return mini.uids[$]
    },
    findControls: function(E, B) {
        if (!E) return [];
        B = B || mini;
        var $ = [],
        D = mini.uids;
        for (var A in D) {
            var _ = D[A],
            C = E[lOlOo1](B, _);
            if (C === true || C === 1) {
                $.push(_);
                if (C === 1) break
            }
        }
        return $
    },
    getChildControls: function(B) {
        var A = mini.get(B);
        if (!A) return [];
        var _ = B.el ? B.el: B,
        $ = mini.findControls(function($) {
            if (!$.el || B == $) return false;
            if (ooll(_, $.el) && $[lloo0o]) return true;
            return false
        });
        return $
    },
    emptyFn: function() {},
    createNameControls: function(A, F) {
        if (!A || !A.el) return;
        if (!F) F = "_";
        var C = A.el,
        $ = mini.findControls(function($) {
            if (!$.el || !$.name) return false;
            if (ooll(C, $.el)) return true;
            return false
        });
        for (var _ = 0,
        D = $.length; _ < D; _++) {
            var B = $[_],
            E = F + B.name;
            if (F === true) E = B.name[0].toUpperCase() + B.name.substring(1, B.name.length);
            A[E] = B
        }
    },
    getsbyName: function(D, _) {
        var C = mini.isControl(_),
        B = _;
        if (_ && C) _ = _.el;
        _ = l00l(_);
        _ = _ || document.body;
        var $ = mini.findControls(function($) {
            if (!$.el) return false;
            if ($.name == D && ooll(_, $.el)) return true;
            return false
        },
        this);
        if (C && $.length == 0 && B && B[l1lol1]) {
            var A = B[l1lol1](D);
            if (A) $.push(A)
        }
        return $
    },
    getbyName: function(_, $) {
        return mini.getsbyName(_, $)[0]
    },
    getParams: function(C) {
        if (!C) C = location.href;
        C = C.split("?")[1];
        var B = {};
        if (C) {
            var A = C.split("&");
            for (var _ = 0,
            D = A.length; _ < D; _++) {
                var $ = A[_].split("=");
                try {
                    B[$[0]] = decodeURIComponent(unescape($[1]))
                } catch(E) {}
            }
        }
        return B
    },
    reg: function($) {
        this.components[$.id] = $;
        this.uids[$.uid] = $
    },
    unreg: function($) {
        delete mini.components[$.id];
        delete mini.uids[$.uid]
    },
    classes: {},
    uiClasses: {},
    getClass: function($) {
        if (!$) return null;
        return this.classes[$.toLowerCase()]
    },
    getClassByUICls: function($) {
        return this.uiClasses[$.toLowerCase()]
    },
    idPre: "mini-",
    idIndex: 1,
    newId: function($) {
        return ($ || this.idPre) + this.idIndex++
    },
    copyTo: function($, A) {
        if ($ && A) for (var _ in A) $[_] = A[_];
        return $
    },
    copyIf: function($, A) {
        if ($ && A) for (var _ in A) if (mini.isNull($[_])) $[_] = A[_];
        return $
    },
    createDelegate: function(_, $) {
        if (!_) return function() {};
        return function() {
            return _.apply($, arguments)
        }
    },
    isControl: function($) {
        return !! ($ && $.isControl)
    },
    isElement: function($) {
        return $ && $.appendChild
    },
    isDate: function($) {
        return $ && $.getFullYear
    },
    isArray: function($) {
        return $ && !!$.unshift
    },
    isNull: function($) {
        return $ === null || $ === undefined
    },
    isNumber: function($) {
        return ! isNaN($) && typeof $ == "number"
    },
    isEquals: function($, _) {
        if ($ !== 0 && _ !== 0) if ((mini.isNull($) || $ == "") && (mini.isNull(_) || _ == "")) return true;
        if ($ && _ && $.getFullYear && _.getFullYear) return $[O0olo1]() === _[O0olo1]();
        if (typeof $ == "object" && typeof _ == "object") return $ === _;
        return String($) === String(_)
    },
    forEach: function(E, D, B) {
        var _ = E.clone();
        for (var A = 0,
        C = _.length; A < C; A++) {
            var $ = _[A];
            if (D[lOlOo1](B, $, A, E) === false) break
        }
    },
    sort: function(A, _, $) {
        $ = $ || A;
        A[Oll0o1](_)
    },
    removeNode: function($) {
        jQuery($).remove()
    },
    elWarp: document.createElement("div")
};
if (typeof mini_debugger == "undefined") mini_debugger = true;
oloo = function(A, _) {
    _ = _.toLowerCase();
    if (!mini.classes[_]) {
        mini.classes[_] = A;
        A[O010O1].type = _
    }
    var $ = A[O010O1].uiCls;
    if (!mini.isNull($) && !mini.uiClasses[$]) mini.uiClasses[$] = A
};
O01o = function(E, A, $) {
    if (typeof A != "function") return this;
    var D = E,
    C = D.prototype,
    _ = A[O010O1];
    if (D[lOO1lo] == _) return;
    D[lOO1lo] = _;
    D[lOO1lo][o1lOol] = A;
    for (var B in _) C[B] = _[B];
    if ($) for (B in $) C[B] = $[B];
    return D
};
mini.copyTo(mini, {
    extend: O01o,
    regClass: oloo,
    debug: false
});
mini.namespace = function(A) {
    if (typeof A != "string") return;
    A = A.split(".");
    var D = window;
    for (var $ = 0,
    B = A.length; $ < B; $++) {
        var C = A[$],
        _ = D[C];
        if (!_) _ = D[C] = {};
        D = _
    }
};
o1llol = [];
o0lo = function(_, $) {
    o1llol.push([_, $]);
    if (!mini._EventTimer) mini._EventTimer = setTimeout(function() {
        OO111()
    },
    50)
};
OO111 = function() {
    for (var $ = 0,
    _ = o1llol.length; $ < _; $++) {
        var A = o1llol[$];
        A[0][lOlOo1](A[1])
    }
    o1llol = [];
    mini._EventTimer = null
};
Oo001 = function(C) {
    if (typeof C != "string") return null;
    var _ = C.split("."),
    D = null;
    for (var $ = 0,
    A = _.length; $ < A; $++) {
        var B = _[$];
        if (!D) D = window[B];
        else D = D[B];
        if (!D) break
    }
    return D
};
mini._getMap = function(name, obj) {
    if (!name) return null;
    var index = name[o0lllO](".");
    if (index == -1 && name[o0lllO]("[") == -1) return obj[name];
    if (index == (name.length - 1)) return obj[name];
    var s = "obj." + name;
    try {
        var v = eval(s)
    } catch(e) {
        return null
    }
    return v
};
mini._setMap = function(H, A, B) {
    if (!B) return;
    if (typeof H != "string") return;
    var E = H.split(".");
    function F(A, E, $, B) {
        var C = A[E];
        if (!C) C = A[E] = [];
        for (var _ = 0; _ <= $; _++) {
            var D = C[_];
            if (!D) if (B === null || B === undefined) D = C[_] = {};
            else D = C[_] = B
        }
        return A[E][$]
    }
    var $ = null;
    for (var _ = 0,
    G = E.length; _ <= G - 1; _++) {
        var H = E[_];
        if (_ == G - 1) {
            if (H[o0lllO]("]") == -1) B[H] = A;
            else {
                var C = H.split("["),
                D = C[0],
                I = parseInt(C[1]);
                F(B, D, I, "");
                B[D][I] = A
            }
            break
        }
        if (H[o0lllO]("]") == -1) {
            $ = B[H];
            if (_ <= G - 2 && $ == null) B[H] = $ = {};
            B = $
        } else {
            C = H.split("["),
            D = C[0],
            I = parseInt(C[1]);
            B = F(B, D, I)
        }
    }
    return A
};
mini.getAndCreate = function($) {
    if (!$) return null;
    if (typeof $ == "string") return mini.components[$];
    if (typeof $ == "object") if (mini.isControl($)) return $;
    else if (mini.isElement($)) return mini.uids[$.uid];
    else return mini.create($);
    return null
};
mini.create = function($) {
    if (!$) return null;
    if (mini.get($.id) === $) return $;
    var _ = this.getClass($.type);
    if (!_) return null;
    var A = new _();
    A[l1OOl1]($);
    return A
};
var ooOO1l = "getBottomVisibleColumns",
o0Oo0 = "setFrozenStartColumn",
lll1oo = "showCollapseButton",
lo11OO = "showFolderCheckBox",
lOOOo1 = "setFrozenEndColumn",
O10o0 = "getAncestorColumns",
Ollo0l = "getFilterRowHeight",
lllO00 = "checkSelectOnLoad",
olOo0o = "frozenStartColumn",
oO1l0O = "allowResizeColumn",
o0OO01 = "showExpandButtons",
Ollolo = "requiredErrorText",
oO11 = "getMaxColumnLevel",
o0l111 = "isAncestorColumn",
lo0Ol1 = "allowAlternating",
O0Oll = "getBottomColumns",
looo00 = "isShowRowDetail",
OlolOl = "allowCellSelect",
o011O = "showAllCheckBox",
OoOOo0 = "frozenEndColumn",
lOOl0o = "allowMoveColumn",
OoO0l = "allowSortColumn",
oollll = "refreshOnExpand",
ool00 = "showCloseButton",
o10o10 = "unFrozenColumns",
lllllO = "getParentColumn",
O0oOOO = "isVisibleColumn",
oo0o0O = "getFooterHeight",
l010l1 = "getHeaderHeight",
O1loOO = "_createColumnId",
Ol11o = "getRowDetailEl",
l0llO0 = "scrollIntoView",
O01l01 = "setColumnWidth",
oOO1O1 = "setCurrentCell",
O110lO = "allowRowSelect",
Ol11Oo = "showSummaryRow",
o1o0l = "showVGridLines",
lOlO1O = "showHGridLines",
llloo1 = "checkRecursive",
llo110 = "enableHotTrack",
Oo1ll1 = "popupMaxHeight",
Oo1Ooo = "popupMinHeight",
l10loO = "refreshOnClick",
O1O00O = "getColumnWidth",
O00OoO = "getEditRowData",
OO01lO = "getParentNode",
ll0Oll = "removeNodeCls",
O0OOl = "showRowDetail",
Oo11ll = "hideRowDetail",
l1oOll = "commitEditRow",
ll0olO = "beginEditCell",
olo0l = "allowCellEdit",
O0lOoO = "decimalPlaces",
l11lOl = "showFilterRow",
l1O11 = "dropGroupName",
o0o1o0 = "dragGroupName",
o0OOo1 = "showTreeLines",
ol1o = "popupMaxWidth",
ol0O1O = "popupMinWidth",
O0Oo1O = "showMinButton",
olOllo = "showMaxButton",
l1olOo = "getChildNodes",
o1101O = "getCellEditor",
OO1OO = "cancelEditRow",
llOll1 = "getRowByValue",
ool0o = "removeItemCls",
oOOlOo = "_createCellId",
o0l11 = "_createItemId",
o0l0O1 = "setValueField",
l0O101 = "_createPopup",
OlOO0 = "getAncestors",
OOo11O = "collapseNode",
OOo0o0 = "removeRowCls",
l1llO0 = "getColumnBox",
oOlO1l = "showCheckBox",
OO00oO = "autoCollapse",
o00111 = "showTreeIcon",
lOO010 = "checkOnClick",
O1lo1o = "defaultValue",
Olo0O1 = "resultAsData",
O1O0lo = "resultAsTree",
ll1O1o = "_ParseString",
l01l1l = "getItemValue",
l0l11 = "_createRowId",
l1O001 = "isAutoHeight",
olol1l = "findListener",
Olo110 = "getRegionEl",
OOO0 = "removeClass",
O0lll0 = "isFirstNode",
O1oll = "getSelected",
O0l010 = "setSelected",
Ool11l = "multiSelect",
l1olOl = "tabPosition",
loOl0O = "columnWidth",
llO01o = "handlerSize",
oll01 = "allowSelect",
l0oo1O = "popupHeight",
oOo10O = "contextMenu",
o01o = "borderStyle",
olO1l0 = "parentField",
l1o00o = "closeAction",
ol0l0 = "_rowIdField",
O0lOlo = "allowResize",
oo01OO = "showToolbar",
o1O1o0 = "deselectAll",
lo1oOl = "treeToArray",
o0ll1l = "eachColumns",
lO1ol1 = "getItemText",
oOl1Oo = "isAutoWidth",
oloOoo = "_initEvents",
o1lOol = "constructor",
O1Olol = "addNodeCls",
llll00 = "expandNode",
l0100 = "setColumns",
O1oooO = "cancelEdit",
llO010 = "moveColumn",
Ol00oo = "removeNode",
O0Olol = "setCurrent",
llooO1 = "totalCount",
o1O010 = "popupWidth",
l100O = "titleField",
O1l11O = "valueField",
o01111 = "showShadow",
ol0O0O = "showFooter",
o1lOOo = "findParent",
lO01lo = "_getColumn",
oO11o0 = "_ParseBool",
lloll0 = "clearEvent",
lo1Ol = "getCellBox",
Ool00l = "selectText",
ooOl10 = "setVisible",
Oo0OO = "isGrouping",
Oolloo = "addItemCls",
oloo11 = "isSelected",
OO11O1 = "isReadOnly",
lOO1lo = "superclass",
oO001o = "getRegion",
oo0101 = "isEditing",
O1o1ol = "hidePopup",
Ooloo0 = "removeRow",
OOol00 = "addRowCls",
Ol1o11 = "increment",
O0Oo1o = "allowDrop",
l10l0o = "pageIndex",
OO1ol = "iconStyle",
lO1ol0 = "errorMode",
lOl11o = "textField",
Olo0o0 = "groupName",
l0o01l = "showEmpty",
o11olO = "emptyText",
O0lOol = "showModal",
Ol1Oo1 = "getColumn",
o1l1l0 = "getHeight",
O1oOl1 = "_ParseInt",
Ol0o01 = "showPopup",
l0Ol11 = "updateRow",
ll1o00 = "deselects",
OolO10 = "isDisplay",
l1ll01 = "setHeight",
O0oO1o = "removeCls",
O010O1 = "prototype",
lolOO = "addClass",
l0oOl = "isEquals",
o00lO = "maxValue",
l00lO1 = "minValue",
O0Oo01 = "showBody",
o0Oooo = "tabAlign",
l11l1l = "sizeList",
oOoll1 = "pageSize",
ollo0l = "urlField",
Oo0o1l = "readOnly",
o1Ol0 = "getWidth",
Ol0l0O = "isFrozen",
oOOOll = "loadData",
o1o001 = "deselect",
O1lOO = "setValue",
O1lll0 = "validate",
Ol1oO0 = "getAttrs",
lo01 = "setWidth",
olOOll = "doUpdate",
O0lOl0 = "doLayout",
oo0OO1 = "renderTo",
O0l111 = "setText",
oOOolO = "idField",
l101OO = "getNode",
llo0o0 = "getItem",
lOlloo = "repaint",
Oo11O = "selects",
O0OOlO = "setData",
lO0l01 = "_create",
O1001l = "jsName",
Ol0o0 = "getRow",
ololO1 = "select",
lloo0o = "within",
o1olO1 = "addCls",
oo00ol = "render",
l0lO1l = "setXY",
lOlOo1 = "call",
ooO00 = "onValidation",
l1101l = "onValueChanged",
OoOl10 = "getErrorIconEl",
OlOo0 = "getRequiredErrorText",
Oo1Ool = "setRequiredErrorText",
o10Oll = "getRequired",
Oo001O = "setRequired",
o111oo = "getErrorText",
l0OlOl = "setErrorText",
Oo0OoO = "getErrorMode",
oOol0l = "setErrorMode",
o0Oo10 = "getValidateOnLeave",
O11OOo = "setValidateOnLeave",
lOloO0 = "getValidateOnChanged",
ol111o = "setValidateOnChanged",
lloO = "getIsValid",
OoO0l1 = "setIsValid",
O1O111 = "isValid",
Oo1OlO = "_tryValidate",
OOlO10 = "doQuery",
o1ollO = "getSearchField",
o011l0 = "setSearchField",
Ol00l1 = "getMinChars",
l01110 = "setMinChars",
oOl00O = "setUrl",
o0oO = "getRepeatDirection",
o0l0o1 = "setRepeatDirection",
OO1lol = "getRepeatLayout",
O1ooOO = "setRepeatLayout",
Ol101O = "getRepeatItems",
lOl10O = "setRepeatItems",
ll1l1O = "bindForm",
lO1OOl = "bindField",
o001OO = "__OnNodeMouseDown",
l110l1 = "createNavBarTree",
oO0O1 = "getExpandOnLoad",
o11lOO = "setExpandOnLoad",
lO1O11 = "_getOwnerTree",
oOloOO = "getList",
OOO0lO = "findNodes",
l0O0lo = "expandPath",
oOoloO = "selectNode",
Olo00o = "getParentField",
oloo0 = "setParentField",
O1Oll0 = "getIdField",
O0o0OO = "setIdField",
oOlOoo = "getNodesField",
ol010O = "setNodesField",
o01001 = "getResultAsTree",
o1l001 = "setResultAsTree",
OOlO01 = "getUrlField",
OO001 = "setUrlField",
O0l11o = "getIconField",
lo0Ol0 = "setIconField",
O00lo0 = "getTextField",
ol0011 = "setTextField",
Olo01l = "getUrl",
o1010o = "getData",
Ol1l0l = "load",
OO1oOl = "loadList",
O0l001 = "_doParseFields",
loooll = "destroy",
l1OOl1 = "set",
O0Ol11 = "createNavBarMenu",
lllOl = "_getOwnerMenu",
Oo10Oo = "blur",
lo0OOl = "focus",
o0oll0 = "__doSelectValue",
Ol0OO1 = "getPopupMaxHeight",
Olooo0 = "setPopupMaxHeight",
O101oo = "getPopupMinHeight",
Olool1 = "setPopupMinHeight",
l010Oo = "getPopupHeight",
o1o1oo = "setPopupHeight",
Ol1llO = "getAllowInput",
ooOlo0 = "setAllowInput",
lloO00 = "getValueField",
l111Ol = "setName",
o0l0oO = "getValue",
o0OlO0 = "getText",
ooo010 = "getInputText",
l1lll1 = "removeItem",
o0O0Ol = "insertItem",
O1O100 = "showInput",
loOo0l = "blurItem",
loooO0 = "hoverItem",
O00o0O = "getItemEl",
oOo0o0 = "getTextName",
llOlOO = "setTextName",
olo1Oo = "getFormattedValue",
o00O00 = "getFormValue",
oOOOl0 = "getFormat",
olOO0l = "setFormat",
OollOO = "_getButtonHtml",
l100ol = "onPreLoad",
ololl = "onLoadError",
OO0ll1 = "onLoad",
o1lloO = "onBeforeLoad",
l1O1lo = "onItemMouseDown",
l1l0OO = "onItemClick",
oOO11 = "_OnItemMouseMove",
o1101 = "_OnItemMouseOut",
l00oll = "_OnItemClick",
o0001l = "clearSelect",
Ooo1OO = "selectAll",
l1OOlO = "getSelecteds",
l1o1OO = "getMultiSelect",
Oo1O11 = "setMultiSelect",
l1o1o0 = "moveItem",
lllOOl = "removeItems",
O0o0oo = "addItem",
OOO1OO = "addItems",
OO1l00 = "removeAll",
l1lo01 = "findItems",
lo1ooO = "getAjaxType",
o01000 = "setAjaxType",
l110ol = "updateItem",
OoOO11 = "getAt",
o0lllO = "indexOf",
l10ol1 = "getCount",
OOl10l = "getFocusedIndex",
oOol1l = "getFocusedItem",
lOlolo = "getLinkString",
oloO11 = "getBaseline",
ll0llo = "getEditData",
Ooll1 = "beginEdit",
ollloo = "getEditorOwnerRow",
l01ooo = "getGanttView",
OoOloO = "getTableView",
OllO00 = "setGanttViewWidth",
lolo10 = "setTableViewWidth",
l1oo00 = "setTableViewExpanded",
loll0l = "setGanttViewExpanded",
l0loo1 = "setShowTableView",
O10OlO = "setShowGanttView",
O11Oo0 = "setReadOnly",
ooollo = "setBottomTimeScale",
oolO1o = "setTopTimeScale",
O1101l = "zoomOut",
O1lOO0 = "zoomIn",
l1loOO = "toggleNode",
OOl0O0 = "collapse",
OO000O = "expand",
o01ol1 = "collapseLevel",
OO0Olo = "expandLevel",
oO1l0o = "collapseAll",
ll0o0l = "expandAll",
oolOo = "setPageIndex",
oo0Ol0 = "setPageSize",
lol01l = "setSizeList",
o0l0l1 = "gotoPage",
ll0010 = "getTaskAt",
oO011O = "getTask",
O01O1o = "clearTasks",
o0OOlo = "reload",
OOOloO = "setShowCriticalPath",
O0oooo = "setShowGridLines",
Oll11O = "setShowLinkLines",
l0l001 = "setTimeLines",
l10O0o = "showColumn",
oolo10 = "hideColumn",
oOOlO1 = "setTreeColumn",
OOoOo0 = "getCalendar",
O11llO = "isWorking",
lll0lO = "__OnTableLoadError",
o0O1lO = "__OnTableLoad",
oo11o0 = "__OnTablePreLoad",
o00loO = "__OnTableBeforeLoad",
oollo1 = "createDefaultCalendars",
O0ol11 = "setAllowResize",
oo1010 = "setBaselineIndex",
oO100l = "setViewModel",
o00lOl = "parseGroups",
Ol0ll0 = "expandGroup",
ooloOO = "collapseGroup",
ol11o1 = "toggleGroup",
Oooo1l = "hideGroup",
l1O1O = "showGroup",
ol0O01 = "getActiveGroup",
O0l01o = "getActiveIndex",
lOOoOo = "setActiveIndex",
oOOOoo = "getAutoCollapse",
OOll1o = "setAutoCollapse",
lol0l0 = "getGroupBodyEl",
OlOl0O = "getGroupEl",
l01lo0 = "getGroup",
O0llll = "moveGroup",
lO1O10 = "removeGroup",
O1O1lO = "updateGroup",
oO0l1l = "addGroup",
ol0Ooo = "getGroups",
lol1ll = "setGroups",
Oo0Ol = "createGroup",
lO0O1O = "__fileError",
Oo10oO = "__on_upload_complete",
O00O1O = "__on_upload_error",
l00lOO = "__on_upload_success",
Ol0Ol1 = "__on_file_queued",
o00ol1 = "startUpload",
o01lo0 = "setUploadUrl",
lOll1l = "setFlashUrl",
l0OOl1 = "setQueueLimit",
oo0010 = "setUploadLimit",
lloOlO = "getButtonText",
lol100 = "setButtonText",
oo1lOl = "getTypesDescription",
o0o00l = "setTypesDescription",
Ol00ol = "getLimitType",
ooO111 = "setLimitType",
ll0o1l = "getPostParam",
Oo1o0l = "setPostParam",
l0ol00 = "addPostParam",
o00100 = "setDataField",
l1o0lO = "getValueFromSelect",
o00oOl = "setValueFromSelect",
lo0Oll = "getAutoCheckParent",
loO1oo = "setAutoCheckParent",
lOlO01 = "getShowFolderCheckBox",
Oo1o00 = "setShowFolderCheckBox",
O1010O = "getShowTreeLines",
o0ol00 = "setShowTreeLines",
ooOll1 = "getShowTreeIcon",
o001oo = "setShowTreeIcon",
OoolO0 = "getCheckRecursive",
ollOo0 = "setCheckRecursive",
olo00 = "getSelectedNodes",
oOOo1O = "getCheckedNodes",
lO1o01 = "getSelectedNode",
oOl1l1 = "__OnDrawNode",
O11o1l = "getMinDate",
Oo000O = "setMinDate",
lo1l0l = "getMaxDate",
Ol1OOl = "setMaxDate",
o1Ollo = "getShowOkButton",
Olo0Ol = "setShowOkButton",
o0oO1l = "getShowClearButton",
l1oO01 = "setShowClearButton",
OlOo10 = "getShowTodayButton",
lOO1Oo = "setShowTodayButton",
lOlOOO = "getTimeFormat",
o0ool0 = "setTimeFormat",
Oo0lO1 = "getShowTime",
lO1ll1 = "setShowTime",
Ool1O1 = "getViewDate",
o1OO11 = "setViewDate",
OOolo1 = "getNullValue",
lO010O = "setNullValue",
loollo = "getValueFormat",
lo1l1l = "setValueFormat",
ooo0 = "_getCalendar",
o0011l = "setInputStyle",
loo1lo = "getShowClose",
O00OlO = "setShowClose",
O10loO = "getSelectOnFocus",
o101lO = "setSelectOnFocus",
olO0oo = "onTextChanged",
oll010 = "onButtonMouseDown",
lo0l1o = "onButtonClick",
l100ll = "__fireBlur",
oo01l1 = "__doFocusCls",
O0O1o1 = "getInputAsValue",
lOOOO0 = "setInputAsValue",
O0O0o0 = "setEnabled",
O0ll0l = "getMinLength",
l000o0 = "setMinLength",
Oll0l0 = "getMaxLength",
o1l0l1 = "setMaxLength",
oOo0l0 = "getEmptyText",
o1O111 = "setEmptyText",
olO01l = "getTextEl",
O10Ool = "_doInputLayout",
oo1OOo = "_getButtonsHTML",
oO1O11 = "setMenu",
lOl0O1 = "_OnItemDragComplete",
o000ol = "_OnItemDragDrop",
Oloo1o = "_OnItemDragMove",
OoOOO = "_OnItemDragStart",
OOoo1O = "_OnItemContextMenu",
o0O0O1 = "_OnItemDblClick",
llo00o = "_OnItemMouseDown",
O100OO = "_OnLinkToolTipNeeded",
OOo1oo = "_OnItemToolTipNeeded",
l0110O = "_OnDateToolTipNeeded",
OlO1lO = "_OnScrollToolTipNeeded",
olo0O1 = "_OnItemDragTipNeeded",
OO10OO = "getZoomTimeScale",
lo01oO = "getLinkType",
O11Ooo = "getFromTo",
O01O0o = "getLink",
o1o0l1 = "getViewStartDate",
o1loo0 = "getViewStartItem",
llllol = "getItemBox",
o00o1o = "getItemHeight",
o11OlO = "getItemTop",
O100l0 = "getViewportBounds",
OOoo0O = "getViewportBox",
lllO01 = "getOffsetByDate",
l0OOlO = "getDateByOffset",
O0O010 = "getDateByPageX",
looOl1 = "refresh",
olo111 = "getVisibleRows",
OOO1o1 = "setDateRange",
oOoOlO = "isMilestone",
O1lOl0 = "isCritical",
oll0lO = "isSummary",
OO10ol = "setHeaderHeight",
l0OoOO = "setScrollHeight",
loO1l0 = "getScrollLeft",
o1ll10 = "getScrollTop",
ooOl1l = "setScrollTop",
lo0101 = "setScrollLeft",
loo00l = "setRowHeight",
o0lO0l = "setShowLabel",
lOOll1 = "getViewportWidth",
oloo0O = "getViewportHeight",
O0OO1O = "isTrackModel",
lloO0o = "_OnCellClick",
lOOol = "_OnCellMouseDown",
lo11o0 = "getIcon",
lOloOO = "isAncestor",
O00lOO = "isExpanded",
OlOool = "getLevel",
OOoOl1 = "isLeaf",
llllo1 = "_getSource",
o0O1lo = "__OnVScroll",
OoOoOo = "getViewScrollWidth",
OOOlOo = "getColumnsWidth",
O1OlO0 = "getAllFrozenColumnWidth",
Ol010o = "unfrozenColumn",
O1loo1 = "frozenColumn",
oOOo1l = "getRowBox",
l001l0 = "getRowHeight",
o00101 = "getRecord",
OOol1l = "getVScrollHeight",
OoOlO0 = "getHScrollWidth",
olo0ll = "setShowVScroll",
o0ol1o = "setShowHScroll",
lOO1O = "getPopupMinWidth",
o01lll = "getPopupMaxWidth",
OOl000 = "getPopupWidth",
OoO0o0 = "setPopupMinWidth",
Oooll0 = "setPopupMaxWidth",
lO0llO = "setPopupWidth",
ooll11 = "isShowPopup",
ll1olo = "_syncShowPopup",
ll0O11 = "getPopup",
ol11lO = "setPopup",
O0lllo = "getId",
O11Oo1 = "setId",
O0oo01 = "un",
O0011o = "on",
lOooO0 = "fire",
oOOl1O = "getAllowResize",
oO0000 = "getAllowMoveColumn",
l0011o = "setAllowMoveColumn",
o10oll = "getAllowResizeColumn",
ol0o1l = "setAllowResizeColumn",
l11o1o = "getTreeColumn",
l0lOlo = "_doLayoutTopRightCell",
ll0ol0 = "_getHeaderScrollEl",
l1oO0O = "onCellBeginEdit",
oOl1oo = "onDrawCell",
ol0101 = "onCellContextMenu",
oOOOO0 = "onCellMouseDown",
Ooo10O = "onCellClick",
OlOOlo = "onRowContextMenu",
lOloo0 = "onRowMouseDown",
Oo11ol = "onRowClick",
oolll0 = "onRowDblClick",
Olo01O = "_doShowColumnsMenu",
Ol1lOo = "createColumnsMenu",
oo1OoO = "getHeaderContextMenu",
o1010O = "setHeaderContextMenu",
OlollO = "_OnHeaderCellClick",
oOOool = "_OnRowMouseMove",
l0lOo = "_OnRowMouseOut",
ol0oo1 = "_OnDrawGroupSummaryCell",
Oo01l0 = "_OnDrawSummaryCell",
ool10o = "_tryFocus",
lOo011 = "getCurrent",
lOoOoO = "_getSelectAllCheckState",
OOllo1 = "getAllowRowSelect",
o1lo11 = "setAllowRowSelect",
oO1O0O = "getAllowUnselect",
l1Oll0 = "setAllowUnselect",
oO0oOo = "_doMargeCells",
o1loOO = "_isCellVisible",
oOlloo = "margeCells",
ll1O0o = "mergeCells",
llOll0 = "mergeColumns",
O1OOO1 = "onDrawGroupSummary",
Ol00l0 = "onDrawGroupHeader",
olo0oO = "getGroupDir",
l1lo0l = "getGroupField",
oll1l1 = "clearGroup",
O10101 = "groupBy",
loo1oo = "expandGroups",
lolll0 = "collapseGroups",
O0o00o = "getShowGroupSummary",
oo11l1 = "setShowGroupSummary",
oooOOo = "getCollapseGroupOnLoad",
Oo0OOo = "setCollapseGroupOnLoad",
O11o00 = "findRow",
Ooo1ol = "findRows",
O11loo = "getRowByUID",
olOlo0 = "getRowById",
o100ol = "clearRows",
O0oOOl = "moveDown",
o0o0o1 = "moveUp",
ll010O = "moveRow",
oOlOol = "addRow",
oO000O = "addRows",
o11lo1 = "removeSelected",
oll1ol = "removeRows",
o010Ol = "deleteRow",
O0ol1o = "deleteRows",
OO11oO = "_updateRowEl",
OOllOO = "isChanged",
o10olo = "getChanges",
Oo001l = "getEditingRow",
l1l0ll = "getEditingRows",
loOoOO = "isNewRow",
l11l0o = "isEditingRow",
O00ol0 = "beginEditRow",
oollo0 = "_beginEditNextCell",
O1o1o0 = "commitEdit",
ol1O1O = "isEditingCell",
l10o0O = "getAllowCellEdit",
o00loo = "setAllowCellEdit",
llOOoo = "getAllowCellSelect",
O1olO1 = "setAllowCellSelect",
O0o1l0 = "getCurrentCell",
OlOo0o = "_getSortFnByField",
ooOl0O = "clearSort",
OoOO1o = "sortBy",
oolOoo = "getResultObject",
l1lOlo = "getCheckSelectOnLoad",
ololo0 = "setCheckSelectOnLoad",
O11ooO = "getTotalPage",
oo001O = "getTotalCount",
o1Oo0O = "setTotalCount",
oOoOO1 = "getSortOrder",
o0o1lo = "getSortField",
O0O0lO = "getDataField",
ol0oO1 = "getTotalField",
o0lllo = "setTotalField",
Ol10Oo = "getSortOrderField",
o0looo = "setSortOrderField",
OOooO1 = "getSortFieldField",
olOloO = "setSortFieldField",
l0O0O1 = "getPageSizeField",
ooO1lo = "setPageSizeField",
o1o0oO = "getPageIndexField",
ooo1o1 = "setPageIndexField",
oOoooO = "getShowTotalCount",
l1OOO0 = "setShowTotalCount",
o10001 = "getShowPageIndex",
l01ool = "setShowPageIndex",
l0OloO = "getShowPageSize",
Ooo1Ol = "setShowPageSize",
Oo0olo = "getPageIndex",
olOo11 = "getPageSize",
l0Oo0o = "getSizeList",
o11ll0 = "getShowPageInfo",
oolllo = "setShowPageInfo",
olO0o0 = "getShowReloadButton",
l1l11O = "setShowReloadButton",
l0oOoo = "getRowDetailCellEl",
l1lo00 = "toggleRowDetail",
oOOo01 = "hideAllRowDetail",
oo10oo = "showAllRowDetail",
o10lOO = "getAllowCellValid",
l0OOO0 = "setAllowCellValid",
lll0o1 = "getCellEditAction",
O0olO0 = "setCellEditAction",
l00OOo = "getShowNewRow",
oOoo00 = "setShowNewRow",
ol0lOl = "getShowModified",
lO0oO0 = "setShowModified",
llo111 = "getShowEmptyText",
oolll1 = "setShowEmptyText",
O01oo1 = "getSelectOnLoad",
l0ollO = "setSelectOnLoad",
o1O00o = "getAllowSortColumn",
O11Ol1 = "setAllowSortColumn",
OOlo1l = "getSortMode",
o0l011 = "setSortMode",
ll0oo0 = "setAutoHideRowDetail",
ll11l0 = "getShowFooter",
o1Ol1 = "setShowFooter",
Oo1OOO = "getShowPager",
l0oo0o = "setShowPager",
lO100o = "getShowColumns",
O01o0l = "setShowColumns",
lO10O0 = "setShowHeader",
l0l01l = "getFooterCls",
Oll00o = "setFooterCls",
oll0Oo = "getFooterStyle",
l0ol0o = "setFooterStyle",
lol10l = "getBodyCls",
Oolll1 = "setBodyCls",
OOl1Oo = "getBodyStyle",
lo101o = "setBodyStyle",
O0OoOO = "getVirtualScroll",
oloOll = "setVirtualScroll",
Olo11l = "getEditOnTabKey",
O0O01l = "setEditOnTabKey",
l00O1o = "getEditNextOnEnterKey",
OlO1ll = "setEditNextOnEnterKey",
OOoOOO = "getShowColumnsMenu",
l00l0O = "setShowColumnsMenu",
l011Ol = "getAllowHeaderWrap",
l0o1O0 = "setAllowHeaderWrap",
lllo11 = "getAllowCellWrap",
l101O0 = "setAllowCellWrap",
O01lll = "setShowLoading",
o0oO1o = "getEnableHotTrack",
O01110 = "setEnableHotTrack",
O01olo = "getAllowAlternating",
ll1o0O = "setAllowAlternating",
oo1oo0 = "getShowSummaryRow",
l1ollo = "setShowSummaryRow",
l0lOO1 = "getShowFilterRow",
OOooo1 = "setShowFilterRow",
O11OoO = "getShowVGridLines",
ooollO = "setShowVGridLines",
OlOooO = "getShowHGridLines",
OOO1Oo = "setShowHGridLines",
OoOlll = "_doGridLines",
ooOl1o = "_doScrollFrozen",
ollllo = "_tryUpdateScroll",
o1O0ll = "_canVirtualUpdate",
o11llO = "_getViewNowRegion",
olooo1 = "_markRegion",
Oolool = "frozenColumns",
lOOO01 = "getFrozenEndColumn",
O0Oo11 = "getFrozenStartColumn",
l010ol = "_deferFrozen",
o0ooo0 = "__doFrozen",
oo1o0l = "getRowsBox",
ol1oll = "getSummaryCellEl",
oolo0O = "getFilterCellEl",
o0loO1 = "isFitColumns",
ll0oOo = "getFitColumns",
ll11o0 = "setFitColumns",
l10100 = "_doInnerLayout",
oo0oOl = "isVirtualScroll",
lO100O = "_doUpdateBody",
Oo01Ol = "_destroyEditors",
ol0lO1 = "_createHeaderText",
Olllll = "getSummaryRowHeight",
ooo00l = "selectRange",
oOoO0O = "getRange",
OOOOlO = "toArray",
l0O11l = "acceptRecord",
oolOl0 = "accept",
llo1OO = "getAutoLoad",
lOllOo = "setAutoLoad",
oO1o1O = "bindPager",
O10lo0 = "setPager",
l0lOo1 = "setPagerButtons",
O00oo1 = "_doShowRows",
lol1Oo = "onCheckedChanged",
ol0O00 = "onClick",
OO11O0 = "getTopMenu",
l10101 = "hide",
l101Ol = "hideMenu",
looll0 = "showMenu",
ol000O = "getMenu",
lo1OoO = "setChildren",
OloOO = "getGroupName",
lOoooO = "setGroupName",
lOoloO = "getChecked",
lOl01O = "setChecked",
o1O001 = "getCheckOnClick",
OO00OO = "setCheckOnClick",
O0oO00 = "getIconPosition",
loll1o = "setIconPosition",
oOOOOO = "getIconStyle",
O1Oo1O = "setIconStyle",
o0OOl0 = "getIconCls",
O0Ol01 = "setIconCls",
o1Ol10 = "_doUpdateIcon",
ol11ol = "getHandlerSize",
o0Ol1O = "setHandlerSize",
l00oOo = "hidePane",
o1lo0o = "showPane",
OoOol1 = "togglePane",
o0o10O = "collapsePane",
l1oO1l = "expandPane",
oOOO1o = "getVertical",
oo01oO = "setVertical",
oo1loo = "getShowHandleButton",
ooOOOl = "setShowHandleButton",
Oo1oO1 = "updatePane",
O0l0O1 = "getPaneEl",
olo11O = "setPaneControls",
O111l0 = "setPanes",
ol1loO = "getPane",
oO1lO0 = "getPaneBox",
OOo0O1 = "updateMenu",
O0o0Oo = "getColumns",
Ol0oO1 = "getRows",
O0111o = "setRows",
O1o110 = "isSelectedDate",
O0olo1 = "getTime",
o11OO0 = "setTime",
oo1OO1 = "getSelectedDate",
oo0l1l = "setSelectedDates",
o01l1l = "setSelectedDate",
OlloOl = "getShowYearButtons",
ll10o1 = "setShowYearButtons",
o110Ol = "getShowMonthButtons",
looo0O = "setShowMonthButtons",
l1oO0l = "getShowDaysHeader",
lll1OO = "setShowDaysHeader",
oOoOo0 = "getShowWeekNumber",
o0o0lO = "setShowWeekNumber",
Ololo1 = "getShowHeader",
o00lll = "getDateEl",
O1Ol00 = "getShortWeek",
O0oOo0 = "getFirstDateOfMonth",
l1o0Ol = "isWeekend",
O100O1 = "__OnItemDrawCell",
Oo10l1 = "getNullItemText",
o0100o = "setNullItemText",
l1OO0l = "getShowNullItem",
loo1l1 = "setShowNullItem",
l10l0O = "setDisplayField",
lol010 = "_eval",
lOo0Oo = "getFalseValue",
l1lO0l = "setFalseValue",
OolllO = "getTrueValue",
llllo = "setTrueValue",
oOO0l0 = "updateTasks",
o10lo = "updateTask",
O01o10 = "setCalendarUID",
l01O00 = "setCalendars",
olll0O = "setStartDate",
o1O10l = "getResource",
lOo0l0 = "getCalendars",
l1l10O = "getProjectCalendar",
oll101 = "print",
o10ll = "orderProject",
O10loo = "createCriticalPath",
oo00l1 = "clearCriticalPath",
Oo0011 = "clearData",
lOO1l1 = "addLink",
o0llo1 = "add",
llO0o0 = "getAllowLimitValue",
oo1ooO = "setAllowLimitValue",
Oll10o = "getChangeOnMousewheel",
O01o0O = "setChangeOnMousewheel",
l1llo0 = "getDecimalPlaces",
oOoo0o = "setDecimalPlaces",
O00101 = "getIncrement",
O00O00 = "setIncrement",
OOll1O = "getMinValue",
O1000o = "setMinValue",
O0o100 = "getMaxValue",
lOoool = "setMaxValue",
Ol0Oll = "getShowAllCheckBox",
ol1l00 = "setShowAllCheckBox",
l1lo1l = "getShowCheckBox",
O1llOo = "setShowCheckBox",
ooolo1 = "getRangeErrorText",
o11OOO = "setRangeErrorText",
O0o01l = "getRangeCharErrorText",
OO0lol = "setRangeCharErrorText",
ollOol = "getRangeLengthErrorText",
l0oolO = "setRangeLengthErrorText",
lolo1o = "getMinErrorText",
O1oo11 = "setMinErrorText",
O1O01o = "getMaxErrorText",
ooOol0 = "setMaxErrorText",
OlooOO = "getMinLengthErrorText",
oO00l0 = "setMinLengthErrorText",
lO0oOO = "getMaxLengthErrorText",
l0110o = "setMaxLengthErrorText",
lo1OO1 = "getDateErrorText",
lo1O0l = "setDateErrorText",
O0o0lo = "getIntErrorText",
o0l10l = "setIntErrorText",
Oo0ooO = "getFloatErrorText",
OO1Oll = "setFloatErrorText",
ol1oo1 = "getUrlErrorText",
OolO1o = "setUrlErrorText",
llooOO = "getEmailErrorText",
O11O0O = "setEmailErrorText",
Olol0l = "getVtype",
o1l1lO = "setVtype",
loolol = "getDefaultValue",
O010O0 = "setDefaultValue",
o0oOlO = "getContextMenu",
llloOo = "setContextMenu",
l100l1 = "getLoadingMsg",
lo1oOo = "setLoadingMsg",
lO000O = "loading",
OlO1l1 = "unmask",
o0o0OO = "mask",
o0Oolo = "getAllowAnim",
lo0o10 = "setAllowAnim",
Oololl = "_destroyChildren",
O0Ool0 = "layoutChanged",
ollOO1 = "canLayout",
l1O10O = "endUpdate",
ol10O0 = "beginUpdate",
loll01 = "show",
OO01oo = "getVisible",
oOl10O = "disable",
o1O1oO = "enable",
OlOO1l = "getEnabled",
Ol0ol1 = "getParent",
loOO1o = "getReadOnly",
O0o11l = "getCls",
l001o1 = "setCls",
l1O1O0 = "getStyle",
OOolo0 = "setStyle",
lO0ol1 = "getBorderStyle",
l1Ol0l = "setBorderStyle",
OOl11l = "getBox",
ll1o01 = "_sizeChaned",
O11o0O = "getTooltip",
O100o0 = "setTooltip",
OOoooO = "getJsName",
o1l1ol = "setJsName",
Oo1O00 = "getEl",
ool1ol = "isRender",
ol1l1O = "isFixedSize",
oO11lo = "getName",
O0oO0l = "setGanttBodyMenu",
OlO010 = "setGanttHeaderMenu",
ll10l0 = "setTableBodyMenu",
O11o1o = "setTableHeaderMenu",
O0O01o = "setTaskMenu",
l11OOl = "addNodes",
o001lo = "deselectTask",
o0OooO = "selectTask",
l0OoOo = "deselectTasks",
lOO0o0 = "selectTasks",
o111Oo = "deselectAllTasks",
ooOO00 = "selectAllTasks",
o1lolo = "getSelectedTask",
ol10oO = "getSelectedTasks",
OloOoo = "isSelectedTask",
lo0O00 = "removeTasks",
lO1lol = "addTask",
ooO00o = "removeTask",
l0O001 = "newTask",
ooOOol = "getAncestorNodes",
ll0o01 = "getAllChildNodes",
oo1011 = "getLastNode",
ll11O1 = "getFirstNode",
O00OO0 = "getPrevTask",
loo0Ol = "getNextNode",
O0O0oo = "toggle",
lo110o = "bubbleParent",
oo1OOO = "cascadeChild",
Oo1l1o = "eachChild",
O11l1o = "findTasks",
llll0l = "getTasks",
llOl1o = "getOwnerNode",
loO1ll = "getTaskById",
lo1ool = "getColumnAt",
oO0001 = "updateColumn",
ool1oo = "setTableWidth",
oo1OlO = "getNodeList",
oO00ol = "getNodeTree",
oO010l = "_syncRowHeights",
o0olo0 = "syncTasks",
l1O011 = "__OnGanttViewItemDragDrop",
ooooO0 = "isVisibleRegion",
O1OOll = "isExpandRegion",
lOlOOl = "hideRegion",
l1O1o0 = "showRegion",
l00Ol0 = "toggleRegion",
l011OO = "collapseRegion",
OloOOO = "expandRegion",
ooOo0O = "updateRegion",
l1lllO = "moveRegion",
o0o0oo = "removeRegion",
oO1lll = "addRegion",
llOoo1 = "setRegions",
O11lo0 = "setRegionControls",
ooOOOo = "getRegionBox",
ol0l0o = "getRegionProxyEl",
OOl1O1 = "getRegionSplitEl",
lO1l1O = "getRegionBodyEl",
o0O010 = "getRegionHeaderEl",
ol1l1l = "showAtEl",
o0l00l = "getShowInBody",
ll11ol = "setShowInBody",
lo0lol = "showAtPos",
l00ll0 = "restore",
Oo10oo = "max",
OOOolo = "getShowMinButton",
o1OlO0 = "setShowMinButton",
l1O01l = "getShowMaxButton",
olooo0 = "setShowMaxButton",
llOol0 = "getAllowDrag",
OolOoO = "setAllowDrag",
l10lol = "getMaxHeight",
l0o010 = "setMaxHeight",
o01oo1 = "getMaxWidth",
OloO1o = "setMaxWidth",
O1OO10 = "getMinHeight",
oo1o1l = "setMinHeight",
OO01lo = "getMinWidth",
l11l1o = "setMinWidth",
l1O1OO = "getShowModal",
llOoOO = "setShowModal",
o10l1l = "getParentBox",
O1lOlO = "__OnShowPopup",
olloO0 = "__OnGridRowClickChanged",
o0lO0O = "getGrid",
OOo1oO = "setGrid",
lo0O0O = "doClick",
ol101O = "getPlain",
O0Ol0O = "setPlain",
lll1lO = "getTarget",
Olo000 = "setTarget",
ooo0O1 = "getHref",
loO1ol = "setHref",
o11011 = "removeTaskCls",
OO11ll = "addTaskCls",
Oll0o1 = "sort",
Ool1lO = "clearFilter",
l01l10 = "filter",
Ol111O = "getDurationByCalendar",
o1lOo1 = "getFinishByCalendar",
llO0ll = "getStartByCalendar",
oOolo0 = "setTaskModified",
o0o11l = "endOrder",
olOl00 = "beginOrder",
ll10Ol = "setAssignments",
Ol0lll = "setLinks",
lllO1l = "removeLink",
lo0lo1 = "getLinksByString",
OlOlO1 = "getPredecessorLink",
lo10O0 = "moveDownTask",
O0oO0O = "moveUpTask",
o1oo1o = "downgradeTask",
o1llo1 = "upgradeTask",
Ollo1l = "moveTasks",
O01101 = "moveTask",
OooOl0 = "addTasks",
OO0Oo0 = "acceptTask",
o0l1oO = "getFinishDate",
Oloooo = "getStartDate",
l1o0o1 = "getViewFinishDate",
Oollo0 = "getAncestorTasks",
oO0oo1 = "getAllChildTasks",
l1OoOO = "getRoot",
o1Ol1l = "getChildTasks",
oO01o1 = "getParentTask",
oOlO00 = "getLastTask",
l01llO = "getFirstTask",
O111lo = "getNextTask",
O1Ol1 = "_syncTasks2",
l1Oo01 = "loadTasks",
llO000 = "acceptChanges",
O1OO0l = "getChangedTasks",
O0o01o = "getTaskList",
olOOO1 = "getTaskTree",
l1l1Oo = "getRemovedTasks",
looooo = "newProject",
OoOoo1 = "getTaskByID",
Ool1l0 = "indexOfColumn",
O1o11O = "getSelectedColumn",
o001ol = "getViewEndColumn",
oOO010 = "getViewStartColumn",
l10l10 = "setAllowDragDrop",
lOllol = "setShowDirty",
loOlO0 = "setEditOnDblClick",
lOo1ol = "onPageChanged",
OO0loO = "update",
O1l10l = "getButtonsEl",
oOo000 = "setButtons",
lo0lO0 = "setExpanded",
oo0ool = "getMaskOnLoad",
l1lOol = "setMaskOnLoad",
O0ll11 = "getRefreshOnExpand",
Ol11OO = "setRefreshOnExpand",
o00lo0 = "getIFrameEl",
lOO0OO = "getFooterEl",
oloo0o = "getBodyEl",
OO1llO = "getToolbarEl",
o01oOl = "getHeaderEl",
Ol1o1O = "setFooter",
l01llo = "setToolbar",
Ooo0oo = "set_bodyParent",
lOo10O = "setBody",
oo0l00 = "getButton",
o10lll = "removeButton",
l110oO = "updateButton",
ll1O01 = "addButton",
oO10o1 = "createButton",
oloO0O = "getShowToolbar",
ol01OO = "setShowToolbar",
l1oO1O = "getShowCollapseButton",
o00ll1 = "setShowCollapseButton",
l1l100 = "getCloseAction",
l1l11o = "setCloseAction",
l0oloO = "getShowCloseButton",
oolo1O = "setShowCloseButton",
lo00oO = "_doTools",
olo101 = "getTitle",
ooOoO0 = "setTitle",
lll0lo = "_doTitle",
Oo1OO0 = "getToolbarCls",
l0OO1O = "setToolbarCls",
oo11O1 = "getHeaderCls",
loOooO = "setHeaderCls",
lOl11O = "getToolbarStyle",
oOolO0 = "setToolbarStyle",
ool0l1 = "getHeaderStyle",
ool10l = "setHeaderStyle",
oOlo1O = "getToolbarHeight",
l0111o = "getBodyHeight",
o1olo1 = "_stopLayout",
o1oOoo = "deferLayout",
ol0Ool = "_doVisibleEls",
l10oO1 = "getImgField",
O10lOl = "setImgField",
lOO00O = "getImgPath",
lol10o = "setImgPath",
lo10o0 = "isAllowDrag",
Ol0lo0 = "getDropGroupName",
lololo = "setDropGroupName",
ooOolO = "getDragGroupName",
ll1llo = "setDragGroupName",
OO1101 = "getAllowDrop",
oO1l0l = "setAllowDrop",
Oooolo = "getAllowLeafDropIn",
l1O1oo = "setAllowLeafDropIn",
olOlol = "_getDragText",
Ol00Ol = "_getDragData",
oO0lo0 = "onDataLoad",
o1OoOO = "onCollapse",
oo111o = "onBeforeCollapse",
Oo1Oo1 = "onExpand",
oo1OOl = "onBeforeExpand",
Oo00OO = "onNodeMouseDown",
o1O11O = "onCheckNode",
o1l1lo = "onBeforeNodeCheck",
loOo1O = "onNodeSelect",
ooO1Oo = "onBeforeNodeSelect",
lO0oo1 = "onNodeClick",
llo010 = "blurNode",
oO0111 = "focusNode",
OOo0ll = "_OnNodeMouseMove",
OO11ol = "_OnNodeMouseOut",
l0Oo11 = "_OnNodeClick",
o1Oo0o = "_OnNodeMouseDown",
lOOO00 = "getAutoEscape",
o0O1Ol = "setAutoEscape",
oll01O = "getLoadOnExpand",
lOoOoo = "setLoadOnExpand",
O101lO = "getRemoveOnCollapse",
Ol0111 = "setRemoveOnCollapse",
oOlOoO = "getExpandOnNodeClick",
O1ooo0 = "setExpandOnNodeClick",
OO010O = "getExpandOnDblClick",
lOO101 = "setExpandOnDblClick",
o0o11o = "getFolderIcon",
Olo0o1 = "setFolderIcon",
OoolOO = "getLeafIcon",
o11lO0 = "setLeafIcon",
oOlo1o = "getCheckedField",
o10l1o = "setCheckedField",
l1110o = "getShowArrow",
ooOool = "setShowArrow",
o0oOol = "getNodesByValue",
o0O1l1 = "uncheckAllNodes",
l1lOOl = "checkAllNodes",
OoOOll = "uncheckNodes",
ooOOO0 = "checkNodes",
o01l00 = "uncheckNode",
ll10ll = "checkNode",
Olo1ll = "_doCheckNode",
olOool = "_doCheckLoadNodes",
o1o0O0 = "hasCheckedChildNode",
O00olo = "doUpdateCheckedState",
o001l1 = "collapsePath",
lOo1O0 = "disableNode",
O1OOl0 = "enableNode",
llO1O0 = "showNode",
l000Ol = "hideNode",
lOl1o0 = "_getNodeEl",
o11Ooo = "getNodeBox",
o0O0oo = "_getNodeByEvent",
OoloOo = "isEditingNode",
O1o0l1 = "moveNode",
O0ol01 = "moveNodes",
o10000 = "addNode",
o00OOO = "updateNode",
l1OOl0 = "setNodeIconCls",
oOOO0O = "setNodeText",
l0oo1l = "removeNodes",
O00000 = "isInLastNode",
loo101 = "isLastNode",
oloO01 = "isEnabledNode",
lOo000 = "isVisibleNode",
OOo01o = "isCheckedNode",
oOol0o = "isExpandedNode",
ooo001 = "hasChildren",
l00O1l = "indexOfChildren",
l1ooll = "_getViewChildNodes",
OO0000 = "_isInViewLastNode",
o01Oo1 = "_isViewLastNode",
O0Ool1 = "_isViewFirstNode",
Oool0l = "getRootNode",
O1o00o = "getNodeIcon",
o1ll1o = "getShowExpandButtons",
o010l1 = "setShowExpandButtons",
lo01lO = "getAllowSelect",
l0OO00 = "setAllowSelect",
OOo0l1 = "getAjaxOption",
olO1oO = "setAjaxOption",
OO10ll = "loadNode",
lO00O1 = "_clearTree",
o01o00 = "parseItems",
l0oo00 = "_startScrollMove",
lOooll = "__OnBottomMouseDown",
o1llOl = "__OnTopMouseDown",
OOllO1 = "onItemSelect",
oO1ol0 = "_OnItemSelect",
l0o1l0 = "getHideOnClick",
Ol01OO = "setHideOnClick",
o10lOo = "getShowNavArrow",
Oo00o1 = "setShowNavArrow",
ol0l11 = "getSelectedItem",
lO0l1l = "setSelectedItem",
lol110 = "getAllowSelectItem",
Ol10oO = "setAllowSelectItem",
lOo1l0 = "getGroupItems",
o0OoOo = "removeItemAt",
loO0o1 = "getItems",
olO0Ol = "setItems",
oolo0o = "hasShowItemMenu",
lO00Ol = "showItemMenu",
l1Olo1 = "hideItems",
OlOol0 = "isVertical",
l1lol1 = "getbyName",
o0ooO0 = "onActiveChanged",
lll1O1 = "onCloseClick",
Oo1011 = "onBeforeCloseClick",
lOo0ll = "getTabByEvent",
oOO10l = "getShowBody",
OooOl1 = "setShowBody",
lo1llO = "getActiveTab",
ol1l11 = "activeTab",
OoOo1o = "getTabIFrameEl",
Oll000 = "getTabBodyEl",
ll00O0 = "getTabEl",
o0o1Ol = "getTab",
OO1lO0 = "setTabPosition",
oo0OOO = "setTabAlign",
oo1oO1 = "_handleIFrameOverflow",
O010OO = "getTabRows",
looo11 = "reloadTab",
OOOO00 = "loadTab",
lllooO = "_cancelLoadTabs",
Ol1ol0 = "updateTab",
OlOOOl = "moveTab",
ooo1o0 = "removeTab",
oO1llO = "addTab",
l1ll1l = "getTabs",
lolloO = "setTabs",
lOooo0 = "setTabControls",
oo0oll = "getTitleField",
OoOllo = "setTitleField",
O0ooOo = "getNameField",
o1lO00 = "setNameField",
o1O101 = "createTab";
O101ol = function() {
    this.lO1ooo = {};
    this.uid = mini.newId(this.ooOl0o);
    this._id = this.uid;
    if (!this.id) this.id = this.uid;
    mini.reg(this)
};
O101ol[O010O1] = {
    isControl: true,
    id: null,
    ooOl0o: "mini-",
    OoO1o1: false,
    o1oOo0: true
};
OOl01 = O101ol[O010O1];
OOl01[loooll] = O0OO1;
OOl01[O0lllo] = OOloO;
OOl01[O11Oo1] = oOo1;
OOl01[olol1l] = l1110;
OOl01[O0oo01] = OoO10;
OOl01[O0011o] = O000l1;
OOl01[lOooO0] = o00OO;
OOl01[l1OOl1] = lol01;
o0oo1l = function() {
    o0oo1l[lOO1lo][o1lOol][lOlOo1](this);
    this[lO0l01]();
    this.el.uid = this.uid;
    this[oloOoo]();
    if (this._clearBorder) {
        this.el.style.borderWidth = "0";
        this.el.style.padding = "0px"
    }
    this[o1olO1](this.uiCls);
    this[lo01](this.width);
    this[l1ll01](this.height);
    this.el.style.display = this.visible ? this.loOOOl: "none"
};
O01o(o0oo1l, O101ol, {
    jsName: null,
    width: "",
    height: "",
    visible: true,
    readOnly: false,
    enabled: true,
    tooltip: "",
    O1oO1O: "mini-readonly",
    O10ooo: "mini-disabled",
    name: "",
    _clearBorder: true,
    loOOOl: "",
    O1O1O0: true,
    allowAnim: true,
    oOoo01: "mini-mask-loading",
    loadingMsg: "Loading...",
    contextMenu: null,
    dataField: ""
});
l0o11 = o0oo1l[O010O1];
l0o11[Ol1oO0] = lO0Ol;
l0o11[O0O0lO] = llol;
l0o11[o00100] = lo0oO;
l0o11.O0OO = llOll;
l0o11[o0l0oO] = l00ol;
l0o11[O1lOO] = lOl0l0;
l0o11[loolol] = O10O1;
l0o11[O010O0] = oolo00;
l0o11[o0oOlO] = Ool100;
l0o11[llloOo] = l101;
l0o11.ooO011 = oOoO00;
l0o11.l1O0ll = O00OOo;
l0o11[l100l1] = oooO0;
l0o11[lo1oOo] = l1o10;
l0o11[lO000O] = O0o1oO;
l0o11[OlO1l1] = oO10;
l0o11[o0o0OO] = O11oO;
l0o11.oO0l = l1oOO;
l0o11[o0Oolo] = oO1l1O;
l0o11[lo0o10] = Ol01O;
l0o11[Oo10Oo] = ol1ol;
l0o11[lo0OOl] = oo1l1;
l0o11[loooll] = oo0Oo;
l0o11[Oololl] = ol01;
l0o11[O0Ool0] = l100;
l0o11[O0lOl0] = lOO1OO;
l0o11[ollOO1] = O0oo0;
l0o11[olOOll] = o11lo0;
l0o11[l1O10O] = loO0;
l0o11[ol10O0] = O1oO;
l0o11[OolO10] = Oooo1;
l0o11[l10101] = o101l0;
l0o11[loll01] = l1looO;
l0o11[OO01oo] = Oo1lo;
l0o11[ooOl10] = o00Oll;
l0o11[oOl10O] = l11l;
l0o11[o1O1oO] = lolO;
l0o11[OlOO1l] = ol001;
l0o11[O0O0o0] = llO0l;
l0o11[OO11O1] = l0OO1;
l0o11[Ol0ol1] = l001l;
l0o11[loOO1o] = OOlO0;
l0o11[O11Oo0] = l1oo1;
l0o11.O0lo = lo10l;
l0o11[O0oO1o] = O1111l;
l0o11[o1olO1] = Ool0oo;
l0o11[O0o11l] = lO1OO;
l0o11[l001o1] = O00o0;
l0o11[l1O1O0] = ll00;
l0o11[OOolo0] = l1OlO;
l0o11[lO0ol1] = O1Oo1l;
l0o11[l1Ol0l] = oOolo;
l0o11[OOl11l] = lOOooo;
l0o11[o1l1l0] = llo1O;
l0o11[l1ll01] = O0Ol1;
l0o11[o1Ol0] = OOlo0;
l0o11[lo01] = lolOO1;
l0o11[ll1o01] = loOoo;
l0o11[O11o0O] = o11oO;
l0o11[O100o0] = O0Oo;
l0o11[OOoooO] = o11O0l;
l0o11[o1l1ol] = O1oo01;
l0o11[Oo1O00] = o1l1;
l0o11[oo00ol] = ool1oO;
l0o11[ool1ol] = Oo0O;
l0o11[ol1l1O] = l01l;
l0o11[oOl1Oo] = O1l1;
l0o11[l1O001] = OO0O;
l0o11[oO11lo] = OOll0;
l0o11[l111Ol] = lll00;
l0o11[lloo0o] = O0111;
l0o11[oloOoo] = Ool0O;
l0o11[lO0l01] = Ol1l01;
mini._attrs = null;
mini.regHtmlAttr = function(_, $) {
    if (!_) return;
    if (!$) $ = "string";
    if (!mini._attrs) mini._attrs = [];
    mini._attrs.push([_, $])
};
__mini_setControls = function($, B, C) {
    B = B || this.o0O01;
    C = C || this;
    if (!$) $ = [];
    if (!mini.isArray($)) $ = [$];
    for (var _ = 0,
    D = $.length; _ < D; _++) {
        var A = $[_];
        if (typeof A == "string") {
            if (A[o0lllO]("#") == 0) A = l00l(A)
        } else if (mini.isElement(A));
        else {
            A = mini.getAndCreate(A);
            A = A.el
        }
        if (!A) continue;
        mini.append(B, A)
    }
    mini.parse(B);
    C[O0lOl0]();
    return C
};
mini.Container = function() {
    mini.Container[lOO1lo][o1lOol][lOlOo1](this);
    this.o0O01 = this.el
};
O01o(mini.Container, o0oo1l, {
    setControls: __mini_setControls,
    getContentEl: function() {
        return this.o0O01
    },
    getBodyEl: function() {
        return this.o0O01
    }
});
lOOO0o = function() {
    lOOO0o[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lOOO0o, o0oo1l, {
    required: false,
    requiredErrorText: "This field is required.",
    l00100: "mini-required",
    errorText: "",
    OOlOo0: "mini-error",
    O1010o: "mini-invalid",
    errorMode: "icon",
    validateOnChanged: true,
    validateOnLeave: true,
    ol01oO: true,
    errorIconEl: null
});
Ooll0 = lOOO0o[O010O1];
Ooll0[Ol1oO0] = O1OOO;
Ooll0[ooO00] = o0lo1;
Ooll0[l1101l] = oo1OO;
Ooll0.oO1O1l = o1OoO;
Ooll0.oOOooo = oollO;
Ooll0.loO0oo = ooll1;
Ooll0.o11olo = lO0o1;
Ooll0[OoOl10] = OlOl0;
Ooll0[OlOo0] = Ol11O;
Ooll0[Oo1Ool] = O1Oo1;
Ooll0[o10Oll] = loO1O;
Ooll0[Oo001O] = olo01;
Ooll0[o111oo] = llolo;
Ooll0[l0OlOl] = OOoO0;
Ooll0[Oo0OoO] = Oll1o;
Ooll0[oOol0l] = O11O1;
Ooll0[o0Oo10] = O110l;
Ooll0[O11OOo] = oOO1O;
Ooll0[lOloO0] = o00Ol;
Ooll0[ol111o] = lOoO0;
Ooll0[lloO] = OlOoo;
Ooll0[OoO0l1] = oO1lo;
Ooll0[O1O111] = oll1l;
Ooll0[O1lll0] = l1o11;
Ooll0[Oo1OlO] = lllOo;
o0ol1O = function() {
    this.data = [];
    this.lOlll = [];
    o0ol1O[lOO1lo][o1lOol][lOlOo1](this);
    this[olOOll]()
};
o0ol1O.ajaxType = "get";
O01o(o0ol1O, lOOO0o, {
    defaultValue: "",
    value: "",
    valueField: "id",
    textField: "text",
    delimiter: ",",
    data: null,
    url: "",
    l10oo: "mini-list-item",
    ll00l1: "mini-list-item-hover",
    _OolOoo: "mini-list-item-selected",
    uiCls: "mini-list",
    name: "",
    OO0o1o: null,
    ajaxType: "",
    lOoO: null,
    lOlll: [],
    multiSelect: false,
    l01oO0: true
});
oOo1l = o0ol1O[O010O1];
oOo1l[Ol1oO0] = ololo;
oOo1l[l100ol] = o0l0l;
oOo1l[ololl] = oo11O;
oOo1l[OO0ll1] = olO0l;
oOo1l[o1lloO] = o0OOl;
oOo1l[l1O1lo] = oOlll;
oOo1l[l1l0OO] = lo1o1;
oOo1l[oOO11] = lOlo;
oOo1l[o1101] = O0O0o;
oOo1l[l00oll] = l1011;
oOo1l.ol1l = oOO10;
oOo1l.o0oOlo = o1l1O;
oOo1l.O01O0 = o0Ol0;
oOo1l.lo0ooO = lolO0;
oOo1l.ll0ool = OooOl;
oOo1l.o0Ol = lOO01;
oOo1l.Ooolo = l100o;
oOo1l.oOlO11 = l0001;
oOo1l.Oll11o = Ol0O1;
oOo1l.lo01oo = OO10l;
oOo1l.Olllo1 = o1Oo0;
oOo1l.llO11 = oOl0o;
oOo1l.o1olOl = O1o1l;
oOo1l.OllooO = O0olO;
oOo1l.O0lOOl = loOl;
oOo1l[ll1o00] = Oo101;
oOo1l[Oo11O] = ll0o1;
oOo1l[o0001l] = OO101;
oOo1l[o1O1o0] = l0Ooo;
oOo1l[Ooo1OO] = ll111;
oOo1l[o1o001] = Ol111;
oOo1l[ololO1] = O1010;
oOo1l[O1oll] = O10OO;
oOo1l[O0l010] = O101O;
oOo1l[l1OOlO] = O10OOs;
oOo1l[oloo11] = l1lO1;
oOo1l[l1o1OO] = lo1Oo;
oOo1l[Oo1O11] = l1111;
oOo1l.oOO100 = Oolo0;
oOo1l[l1o1o0] = ll1lO;
oOo1l[l1lll1] = O0OlO;
oOo1l[lllOOl] = O0OlOs;
oOo1l[O0o0oo] = O1l11;
oOo1l[OOO1OO] = O1l11s;
oOo1l[OO1l00] = lol11;
oOo1l[l1lo01] = O10o;
oOo1l.lloo = lO010;
oOo1l[lO1ol1] = oOOll;
oOo1l[l01l1l] = loloO;
oOo1l[O00lo0] = llOOll;
oOo1l[ol0011] = oO11O;
oOo1l[lloO00] = looO0;
oOo1l[o0l0O1] = o0o0O;
oOo1l[o00O00] = O00OO;
oOo1l[o0l0oO] = olOO1;
oOo1l[O1lOO] = oloOo;
oOo1l.Ol0O1l = O0O1l;
oOo1l[Olo01l] = lo0Ol;
oOo1l[oOl00O] = Ool1l;
oOo1l[o1010o] = Oo1oo;
oOo1l[O0OOlO] = l0Oo0;
oOo1l[oOOOll] = o0l1l;
oOo1l[Ol1l0l] = Ol001;
oOo1l[lo1ooO] = Ol10o;
oOo1l[o01000] = l0l0O;
oOo1l[l110ol] = Ol011;
oOo1l[OoOO11] = l0Oll;
oOo1l[o0lllO] = lolOo;
oOo1l[l10ol1] = l100l;
oOo1l[llo0o0] = OOolo;
oOo1l[l0llO0] = O0lll;
oOo1l[OOl10l] = O1O1o;
oOo1l[oOol1l] = l1O10;
oOo1l.O10Oo = l10ol;
oOo1l.O0lol0 = lOllo;
oOo1l[O00o0O] = OOoloEl;
oOo1l[ool0o] = O0OlOCls;
oOo1l[Oolloo] = O1l11Cls;
oOo1l.l0o0 = OOoloByEvent;
oOo1l[l111Ol] = l0011;
oOo1l[loooll] = llol0;
oOo1l[oloOoo] = oOOl1;
oOo1l[lO0l01] = Ool00;
oOo1l[l1OOl1] = lO1O0;
mini._Layouts = {};
mini.layout = function($, _) {
    if (!document.body) return;
    function A(C) {
        if (!C) return;
        var D = mini.get(C);
        if (D) {
            if (D[O0lOl0]) if (!mini._Layouts[D.uid]) {
                mini._Layouts[D.uid] = D;
                if (_ !== false || D[ol1l1O]() == false) D[O0lOl0](false);
                delete mini._Layouts[D.uid]
            }
        } else {
            var E = C.childNodes;
            if (E) for (var $ = 0,
            F = E.length; $ < F; $++) {
                var B = E[$];
                A(B)
            }
        }
    }
    if (!$) $ = document.body;
    A($);
    if ($ == document.body) mini.layoutIFrames()
};
mini.applyTo = function(_) {
    _ = l00l(_);
    if (!_) return this;
    if (mini.get(_)) throw new Error("not applyTo a mini control");
    var $ = this[Ol1oO0](_);
    delete $._applyTo;
    if (mini.isNull($[O1lo1o]) && !mini.isNull($.value)) $[O1lo1o] = $.value;
    if (mini.isNull($.defaultText) && !mini.isNull($.text)) $.defaultText = $.text;
    var A = _.parentNode;
    if (A && this.el != _) A.replaceChild(this.el, _);
    this[l1OOl1]($);
    this.O0OO(_);
    return this
};
mini.O0O00o = function(G) {
    if (!G) return;
    var F = G.nodeName.toLowerCase();
    if (!F) return;
    var B = G.className;
    if (B && B.split) {
        var $ = mini.get(G);
        if (!$) {
            var H = B.split(" ");
            for (var E = 0,
            C = H.length; E < C; E++) {
                var A = H[E],
                I = mini.getClassByUICls(A);
                if (I) {
                    lOolO(G, A);
                    var D = new I();
                    mini.applyTo[lOlOo1](D, G);
                    G = D.el;
                    break
                }
            }
        }
    }
    if (F == "select" || l0ll(G, "mini-menu") || l0ll(G, "mini-datagrid") || l0ll(G, "mini-treegrid") || l0ll(G, "mini-tree") || l0ll(G, "mini-button") || l0ll(G, "mini-textbox") || l0ll(G, "mini-buttonedit")) return;
    var J = mini[l1olOo](G, true);
    for (E = 0, C = J.length; E < C; E++) {
        var _ = J[E];
        if (_.nodeType == 1) if (_.parentNode == G) mini.O0O00o(_)
    }
};
mini._Removes = [];
mini.parse = function($) {
    if (typeof $ == "string") {
        var A = $;
        $ = l00l(A);
        if (!$) $ = document.body
    }
    if ($ && !mini.isElement($)) $ = $.el;
    if (!$) $ = document.body;
    var _ = lOlo1;
    if (isIE) lOlo1 = false;
    mini.O0O00o($);
    lOlo1 = _;
    mini.layout($)
};
mini[ll1O1o] = function(B, A, E) {
    for (var $ = 0,
    D = E.length; $ < D; $++) {
        var C = E[$],
        _ = mini.getAttr(B, C);
        if (_) A[C] = _
    }
};
mini[oO11o0] = function(B, A, E) {
    for (var $ = 0,
    D = E.length; $ < D; $++) {
        var C = E[$],
        _ = mini.getAttr(B, C);
        if (_) A[C] = _ == "true" ? true: false
    }
};
mini[O1oOl1] = function(B, A, E) {
    for (var $ = 0,
    D = E.length; $ < D; $++) {
        var C = E[$],
        _ = parseInt(mini.getAttr(B, C));
        if (!isNaN(_)) A[C] = _
    }
};
mini.O1OO0o = function(el) {
    var columns = [],
    cs = mini[l1olOo](el);
    for (var i = 0,
    l = cs.length; i < l; i++) {
        var node = cs[i],
        jq = jQuery(node),
        column = {},
        editor = null,
        filter = null,
        subCs = mini[l1olOo](node);
        if (subCs) for (var ii = 0,
        li = subCs.length; ii < li; ii++) {
            var subNode = subCs[ii],
            property = jQuery(subNode).attr("property");
            if (!property) continue;
            property = property.toLowerCase();
            if (property == "columns") {
                column.columns = mini.O1OO0o(subNode);
                jQuery(subNode).remove()
            }
            if (property == "editor" || property == "filter") {
                var className = subNode.className,
                classes = className.split(" ");
                for (var i3 = 0,
                l3 = classes.length; i3 < l3; i3++) {
                    var cls = classes[i3],
                    clazz = mini.getClassByUICls(cls);
                    if (clazz) {
                        var ui = new clazz();
                        if (property == "filter") {
                            filter = ui[Ol1oO0](subNode);
                            filter.type = ui.type
                        } else {
                            editor = ui[Ol1oO0](subNode);
                            editor.type = ui.type
                        }
                        break
                    }
                }
                jQuery(subNode).remove()
            }
        }
        column.header = node.innerHTML;
        mini[ll1O1o](node, column, ["name", "header", "field", "editor", "filter", "renderer", "width", "type", "renderer", "headerAlign", "align", "headerCls", "cellCls", "headerStyle", "cellStyle", "displayField", "dateFormat", "listFormat", "mapFormat", "trueValue", "falseValue", "dataType", "vtype", "currencyUnit", "summaryType", "summaryRenderer", "groupSummaryType", "groupSummaryRenderer", "defaultValue", "defaultText", "decimalPlaces", "data-options"]);
        mini[oO11o0](node, column, ["visible", "readOnly", "allowSort", "allowResize", "allowMove", "allowDrag", "autoShowPopup", "unique", "autoEscape"]);
        if (editor) column.editor = editor;
        if (filter) column[l01l10] = filter;
        if (column.dataType) column.dataType = column.dataType.toLowerCase();
        if (column[O1lo1o] === "true") column[O1lo1o] = true;
        if (column[O1lo1o] === "false") column[O1lo1o] = false;
        columns.push(column);
        var options = column["data-options"];
        if (options) {
            options = eval("(" + options + ")");
            if (options) mini.copyTo(column, options)
        }
    }
    return columns
};
mini.OoO1O1 = {};
mini[lO01lo] = function($) {
    var _ = mini.OoO1O1[$.toLowerCase()];
    if (!_) return {};
    return _()
};
mini.IndexColumn = function($) {
    return mini.copyTo({
        width: 30,
        cellCls: "",
        align: "center",
        draggable: false,
        allowDrag: true,
        init: function($) {
            $[O0011o]("addrow", this.__OnIndexChanged, this);
            $[O0011o]("removerow", this.__OnIndexChanged, this);
            $[O0011o]("moverow", this.__OnIndexChanged, this);
            if ($.isTree) {
                $[O0011o]("loadnode", this.__OnIndexChanged, this);
                this._gridUID = $.uid;
                this[ol0l0] = "_id"
            }
        },
        getNumberId: function($) {
            return this._gridUID + "$number$" + $[this._rowIdField]
        },
        createNumber: function($, _) {
            if (mini.isNull($[l10l0o])) return _ + 1;
            else return ($[l10l0o] * $[oOoll1]) + _ + 1
        },
        renderer: function(A) {
            var $ = A.sender;
            if (this.draggable) {
                if (!A.cellStyle) A.cellStyle = "";
                A.cellStyle += ";cursor:move;"
            }
            var _ = "<div id=\"" + this.getNumberId(A.record) + "\">";
            if (mini.isNull($[l10l0o])) _ += A.rowIndex + 1;
            else _ += ($[l10l0o] * $[oOoll1]) + A.rowIndex + 1;
            _ += "</div>";
            return _
        },
        __OnIndexChanged: function(F) {
            var $ = F.sender,
            C = $[OOOOlO]();
            for (var A = 0,
            D = C.length; A < D; A++) {
                var _ = C[A],
                E = this.getNumberId(_),
                B = document.getElementById(E);
                if (B) B.innerHTML = this.createNumber($, A)
            }
        }
    },
    $)
};
mini.OoO1O1["indexcolumn"] = mini.IndexColumn;
mini.CheckColumn = function($) {
    return mini.copyTo({
        width: 30,
        cellCls: "mini-checkcolumn",
        headerCls: "mini-checkcolumn",
        _multiRowSelect: true,
        header: function($) {
            var A = this.uid + "checkall",
            _ = "<input type=\"checkbox\" id=\"" + A + "\" />";
            if (this[Ool11l] == false) _ = "";
            return _
        },
        getCheckId: function($) {
            return this._gridUID + "$checkcolumn$" + $[this._rowIdField]
        },
        init: function($) {
            $[O0011o]("selectionchanged", this.O1l110, this);
            $[O0011o]("HeaderCellClick", this.l1OlO0, this)
        },
        renderer: function(C) {
            var B = this.getCheckId(C.record),
            _ = C.sender[oloo11] ? C.sender[oloo11](C.record) : false,
            A = "checkbox",
            $ = C.sender;
            if ($[Ool11l] == false) A = "radio";
            return "<input type=\"" + A + "\" id=\"" + B + "\" " + (_ ? "checked": "") + " hidefocus style=\"outline:none;\" onclick=\"return false\"/>"
        },
        l1OlO0: function(B) {
            var $ = B.sender;
            if (B.column != this) return;
            var A = $.uid + "checkall",
            _ = document.getElementById(A);
            if (_) {
                if ($[l1o1OO]()) {
                    if (_.checked) $[Ooo1OO]();
                    else $[o1O1o0]()
                } else {
                    $[o1O1o0]();
                    if (_.checked) $[ololO1](0)
                }
                $[lOooO0]("checkall")
            }
        },
        O1l110: function(H) {
            var $ = H.sender,
            C = $[OOOOlO]();
            for (var A = 0,
            E = C.length; A < E; A++) {
                var _ = C[A],
                G = $[oloo11](_),
                F = $.uid + "$checkcolumn$" + _[$._rowIdField],
                B = document.getElementById(F);
                if (B) B.checked = G
            }
            var D = this;
            if (!this._timer) this._timer = setTimeout(function() {
                D._doCheckState($);
                D._timer = null
            },
            10)
        },
        _doCheckState: function($) {
            var B = $.uid + "checkall",
            _ = document.getElementById(B);
            if (_ && $[lOoOoO]) {
                var A = $[lOoOoO]();
                if (A == "has") {
                    _.indeterminate = true;
                    _.checked = true
                } else {
                    _.indeterminate = false;
                    _.checked = A
                }
            }
        }
    },
    $)
};
mini.OoO1O1["checkcolumn"] = mini.CheckColumn;
mini.ExpandColumn = function($) {
    return mini.copyTo({
        width: 30,
        cellCls: "",
        align: "center",
        draggable: false,
        cellStyle: "padding:0",
        renderer: function($) {
            return "<a class=\"mini-grid-ecIcon\" href=\"javascript:#\" onclick=\"return false\"></a>"
        },
        init: function($) {
            $[O0011o]("cellclick", this.olOoo1, this)
        },
        olOoo1: function(A) {
            var $ = A.sender;
            if (A.column == this && $[looo00]) if (O01l0O(A.htmlEvent.target, "mini-grid-ecIcon")) {
                var _ = $[looo00](A.record);
                if ($.autoHideRowDetail) $[oOOo01]();
                if (_) $[Oo11ll](A.record);
                else $[O0OOl](A.record)
            }
        }
    },
    $)
};
mini.OoO1O1["expandcolumn"] = mini.ExpandColumn;
Oo0l0oColumn = function($) {
    return mini.copyTo({
        _type: "checkboxcolumn",
        header: "#",
        headerAlign: "center",
        cellCls: "mini-checkcolumn",
        trueValue: true,
        falseValue: false,
        readOnly: false,
        getCheckId: function($) {
            return this._gridUID + "$checkbox$" + $[this._rowIdField]
        },
        getCheckBoxEl: function($) {
            return document.getElementById(this.getCheckId($))
        },
        renderer: function(C) {
            var A = this.getCheckId(C.record),
            B = mini._getMap(C.field, C.record),
            _ = B == this.trueValue ? true: false,
            $ = "checkbox";
            return "<input type=\"" + $ + "\" id=\"" + A + "\" " + (_ ? "checked": "") + " hidefocus style=\"outline:none;\" onclick=\"return false;\"/>"
        },
        init: function($) {
            this.grid = $;
            function _(B) {
                if ($[OO11O1]() || this[Oo0o1l]) return;
                B.value = mini._getMap(B.field, B.record);
                $[lOooO0]("cellbeginedit", B);
                if (B.cancel !== true) {
                    var A = mini._getMap(B.column.field, B.record),
                    _ = A == this.trueValue ? this.falseValue: this.trueValue;
                    if ($.o111l) $.o111l(B.record, B.column, _)
                }
            }
            function A(C) {
                if (C.column == this) {
                    var B = this.getCheckId(C.record),
                    A = C.htmlEvent.target;
                    if (A.id == B) if ($[olo0l]) {
                        C.cancel = false;
                        _[lOlOo1](this, C)
                    } else if ($[l11l0o] && $[l11l0o](C.record)) setTimeout(function() {
                        A.checked = !A.checked
                    },
                    1)
                }
            }
            $[O0011o]("cellclick", A, this);
            oOO1l(this.grid.el, "keydown",
            function(C) {
                if (C.keyCode == 32 && $[olo0l]) {
                    var A = $[O0o1l0]();
                    if (!A) return;
                    var B = {
                        record: A[0],
                        column: A[1]
                    };
                    B.field = B.column.field;
                    _[lOlOo1](this, B);
                    C.preventDefault()
                }
            },
            this);
            var B = parseInt(this.trueValue),
            C = parseInt(this.falseValue);
            if (!isNaN(B)) this.trueValue = B;
            if (!isNaN(C)) this.falseValue = C
        }
    },
    $)
};
mini.OoO1O1["checkboxcolumn"] = Oo0l0oColumn;
mini.RadioButtonColumn = function($) {
    return mini.copyTo({
        _type: "radiobuttoncolumn",
        header: "",
        headerAlign: "center",
        cellCls: "mini-checkcolumn",
        trueValue: true,
        falseValue: false,
        readOnly: false,
        getCheckId: function($) {
            return this._gridUID + "$radio$" + $[this._rowIdField]
        },
        getCheckBoxEl: function($) {
            return document.getElementById(this.getCheckId($))
        },
        renderer: function(G) {
            var $ = G.sender,
            E = this.getCheckId(G.record),
            F = mini._getMap(G.field, G.record),
            B = F == this.trueValue ? true: false,
            _ = "radio",
            C = $._id + G.column.field,
            A = "",
            D = "<div style=\"position:relative;\">";
            D += "<input name=\"" + C + "\" type=\"" + _ + "\" id=\"" + E + "\" " + (B ? "checked": "") + " hidefocus style=\"outline:none;\" onclick=\"return false;\" style=\"position:relative;z-index:1;\"/>";
            if (!$[olo0l]) if (!$[l11l0o](G.record)) D += "<div class=\"mini-grid-radio-mask\"></div>";
            D += "</div>";
            return D
        },
        init: function($) {
            this.grid = $;
            function _(F) {
                if ($[OO11O1]() || this[Oo0o1l]) return;
                F.value = mini._getMap(F.field, F.record);
                $[lOooO0]("cellbeginedit", F);
                if (F.cancel !== true) {
                    var E = mini._getMap(F.column.field, F.record);
                    if (E == this.trueValue) return;
                    var A = E == this.trueValue ? this.falseValue: this.trueValue,
                    C = $[o1010o]();
                    for (var _ = 0,
                    D = C.length; _ < D; _++) {
                        var B = C[_];
                        if (B == F.record) continue;
                        E = mini._getMap(F.column.field, B);
                        if (E != this.falseValue) $[l0Ol11](B, F.column.field, this.falseValue)
                    }
                    if ($.o111l) $.o111l(F.record, F.column, A)
                }
            }
            function A(D) {
                if (D.column == this) {
                    var C = this.getCheckId(D.record),
                    B = D.htmlEvent.target;
                    if (B.id == C) if ($[olo0l]) {
                        D.cancel = false;
                        _[lOlOo1](this, D)
                    } else if ($[l11l0o] && $[l11l0o](D.record)) {
                        var A = this;
                        setTimeout(function() {
                            B.checked = true;
                            var F = $[o1010o]();
                            for (var C = 0,
                            H = F.length; C < H; C++) {
                                var E = F[C];
                                if (E == D.record) continue;
                                var G = D.column.field,
                                I = mini._getMap(G, E);
                                if (I != A.falseValue) if (E != D.record) if ($._dataSource) {
                                    mini._setMap(D.column.field, A.falseValue, E);
                                    $._dataSource._setModified(E, G, I)
                                } else {
                                    var _ = {};
                                    mini._setMap(G, A.falseValue, _);
                                    $.O11olO(E, _)
                                }
                            }
                        },
                        1)
                    }
                }
            }
            $[O0011o]("cellclick", A, this);
            oOO1l(this.grid.el, "keydown",
            function(C) {
                if (C.keyCode == 32 && $[olo0l]) {
                    var A = $[O0o1l0]();
                    if (!A) return;
                    if (A[1] != this) return;
                    var B = {
                        record: A[0],
                        column: A[1]
                    };
                    B.field = B.column.field;
                    _[lOlOo1](this, B);
                    C.preventDefault()
                }
            },
            this);
            var B = parseInt(this.trueValue),
            C = parseInt(this.falseValue);
            if (!isNaN(B)) this.trueValue = B;
            if (!isNaN(C)) this.falseValue = C
        }
    },
    $)
};
mini.OoO1O1["radiobuttoncolumn"] = mini.RadioButtonColumn;
o1OO1oColumn = function($) {
    return mini.copyTo({
        renderer: function(M) {
            var _ = !mini.isNull(M.value) ? String(M.value) : "",
            C = _.split(","),
            D = "id",
            J = "text",
            A = {},
            G = M.column.editor;
            if (G && G.type == "combobox") {
                var B = this.__editor;
                if (!B) {
                    if (mini.isControl(G)) B = G;
                    else {
                        G = mini.clone(G);
                        B = mini.create(G)
                    }
                    this.__editor = B
                }
                D = B[lloO00]();
                J = B[O00lo0]();
                A = this._valueMaps;
                if (!A) {
                    A = {};
                    var K = B[o1010o]();
                    for (var H = 0,
                    E = K.length; H < E; H++) {
                        var $ = K[H];
                        A[$[D]] = $
                    }
                    this._valueMaps = A
                }
            }
            var L = [];
            for (H = 0, E = C.length; H < E; H++) {
                var F = C[H],
                $ = A[F];
                if ($) {
                    var I = $[J];
                    if (I === null || I === undefined) I = "";
                    L.push(I)
                }
            }
            return L.join(",")
        }
    },
    $)
};
mini.OoO1O1["comboboxcolumn"] = o1OO1oColumn;
Oo1Oll = function($) {
    this.owner = $;
    oOO1l(this.owner.el, "mousedown", this.Oll11o, this)
};
Oo1Oll[O010O1] = {
    Oll11o: function(A) {
        var $ = l0ll(A.target, "mini-resizer-trigger");
        if ($ && this.owner[O0lOlo]) {
            var _ = this.l100OO();
            _.start(A)
        }
    },
    l100OO: function() {
        if (!this._resizeDragger) this._resizeDragger = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this._resizeDragger
    },
    O0lO00: function($) {
        this.proxy = mini.append(document.body, "<div class=\"mini-resizer-proxy\"></div>");
        this.proxy.style.cursor = "se-resize";
        this.elBox = O101o(this.owner.el);
        oOo10l(this.proxy, this.elBox)
    },
    O1l1l: function(B) {
        var $ = this.owner,
        D = B.now[0] - B.init[0],
        _ = B.now[1] - B.init[1],
        A = this.elBox.width + D,
        C = this.elBox.height + _;
        if (A < $.minWidth) A = $.minWidth;
        if (C < $.minHeight) C = $.minHeight;
        if (A > $.maxWidth) A = $.maxWidth;
        if (C > $.maxHeight) C = $.maxHeight;
        mini.setSize(this.proxy, A, C)
    },
    loO1: function($, A) {
        if (!this.proxy) return;
        var _ = O101o(this.proxy);
        jQuery(this.proxy).remove();
        this.proxy = null;
        this.elBox = null;
        if (A) {
            this.owner[lo01](_.width);
            this.owner[l1ll01](_.height);
            this.owner[lOooO0]("resize")
        }
    }
};
mini._topWindow = null;
mini._getTopWindow = function() {
    if (mini._topWindow) return mini._topWindow;
    var $ = [];
    function _(A) {
        try {
            A["___try"] = 1;
            $.push(A)
        } catch(B) {}
        if (A.parent && A.parent != A) _(A.parent)
    }
    _(window);
    mini._topWindow = $[$.length - 1];
    return mini._topWindow
};
var __ps = mini.getParams();
if (__ps._winid) {
    try {
        window.Owner = mini._getTopWindow()[__ps._winid]
    } catch(ex) {}
}
mini._WindowID = "w" + Math.floor(Math.random() * 10000);
mini._getTopWindow()[mini._WindowID] = window;
mini.__IFrameCreateCount = 1;
mini.createIFrame = function(E, F) {
    var H = "__iframe_onload" + mini.__IFrameCreateCount++;
    window[H] = _;
    if (!E) E = "";
    var D = E.split("#");
    E = D[0];
    var C = "_t=" + Math.floor(Math.random() * 1000000);
    if (E[o0lllO]("?") == -1) E += "?" + C;
    else E += "&" + C;
    if (D[1]) E = E + "#" + D[1];
    var G = "<iframe style=\"width:100%;height:100%;\" onload=\"" + H + "()\"  frameborder=\"0\"></iframe>",
    $ = document.createElement("div"),
    B = mini.append($, G),
    I = false;
    setTimeout(function() {
        if (B) {
            B.src = E;
            I = true
        }
    },
    5);
    var A = true;
    function _() {
        if (I == false) return;
        setTimeout(function() {
            if (F) F(B, A);
            A = false
        },
        1)
    }
    B._ondestroy = function() {
        window[H] = mini.emptyFn;
        B.src = "";
        try {
            B.contentWindow.document.write("");
            B.contentWindow.document.close()
        } catch($) {}
        B._ondestroy = null;
        B = null
    };
    return B
};
mini._doOpen = function(F) {
    if (typeof F == "string") F = {
        url: F
    };
    F = mini.copyTo({
        width: 700,
        height: 400,
        allowResize: true,
        allowModal: true,
        closeAction: "destroy",
        title: "",
        titleIcon: "",
        iconCls: "",
        iconStyle: "",
        bodyStyle: "padding:0",
        url: "",
        showCloseButton: true,
        showFooter: false
    },
    F);
    F[l1o00o] = "destroy";
    var B = F.onload;
    delete F.onload;
    var E = F.ondestroy;
    delete F.ondestroy;
    var C = F.url;
    delete F.url;
    var A = mini[OOoo0O]();
    if (F.width && String(F.width)[o0lllO]("%") != -1) {
        var $ = parseInt(F.width);
        F.width = parseInt(A.width * ($ / 100))
    }
    if (F.height && String(F.height)[o0lllO]("%") != -1) {
        var _ = parseInt(F.height);
        F.height = parseInt(A.height * (_ / 100))
    }
    var D = new O1O01l();
    D[l1OOl1](F);
    D[Ol1l0l](C, B, E);
    D[loll01]();
    return D
};
mini.open = function(E) {
    if (!E) return;
    var C = E.url;
    if (!C) C = "";
    var B = C.split("#"),
    C = B[0],
    A = "_winid=" + mini._WindowID;
    if (C[o0lllO]("?") == -1) C += "?" + A;
    else C += "&" + A;
    if (B[1]) C = C + "#" + B[1];
    E.url = C;
    E.Owner = window;
    var $ = [];
    function _(A) {
        if (A.mini) $.push(A);
        if (A.parent && A.parent != A) _(A.parent)
    }
    _(window);
    var D = $[$.length - 1];
    return D["mini"]._doOpen(E)
};
mini.openTop = mini.open;
mini[o1010o] = function(C, A, E, D, _) {
    var $ = mini[o0OlO0](C, A, E, D, _),
    B = mini.decode($);
    return B
};
mini[o0OlO0] = function(B, A, D, C, _) {
    var $ = null;
    mini.ajax({
        url: B,
        data: A,
        async: false,
        type: _ ? _: "get",
        cache: false,
        success: function(A, _) {
            $ = A;
            if (D) D(A, _)
        },
        error: C
    });
    return $
};
if (!window.mini_RootPath) mini_RootPath = "/";
oo1l = function(B) {
    var A = document.getElementsByTagName("script"),
    D = "";
    for (var $ = 0,
    E = A.length; $ < E; $++) {
        var C = A[$].src;
        if (C[o0lllO](B) != -1) {
            var F = C.split(B);
            D = F[0];
            break
        }
    }
    var _ = location.href;
    _ = _.split("#")[0];
    _ = _.split("?")[0];
    F = _.split("/");
    F.length = F.length - 1;
    _ = F.join("/");
    if (D[o0lllO]("http:") == -1 && D[o0lllO]("file:") == -1) D = _ + "/" + D;
    return D
};
if (!window.mini_JSPath) mini_JSPath = oo1l("miniui.js");
mini[OO0loO] = function(A, _) {
    if (typeof A == "string") A = {
        url: A
    };
    if (_) A.el = _;
    var $ = mini.loadText(A.url);
    mini.innerHTML(A.el, $);
    mini.parse(A.el)
};
mini.createSingle = function($) {
    if (typeof $ == "string") $ = mini.getClass($);
    if (typeof $ != "function") return;
    var _ = $.single;
    if (!_) _ = $.single = new $();
    return _
};
mini.createTopSingle = function($) {
    if (typeof $ != "function") return;
    var _ = $[O010O1].type;
    if (top && top != window && top.mini && top.mini.getClass(_)) return top.mini.createSingle(_);
    else return mini.createSingle($)
};
mini.sortTypes = {
    "string": function($) {
        return String($).toUpperCase()
    },
    "date": function($) {
        if (!$) return 0;
        if (mini.isDate($)) return $[O0olo1]();
        return mini.parseDate(String($))
    },
    "float": function(_) {
        var $ = parseFloat(String(_).replace(/,/g, ""));
        return isNaN($) ? 0 : $
    },
    "int": function(_) {
        var $ = parseInt(String(_).replace(/,/g, ""), 10);
        return isNaN($) ? 0 : $
    },
    "currency": function(_) {
        var $ = parseFloat(String(_).replace(/,/g, ""));
        return isNaN($) ? 0 : $
    }
};
mini.olo0 = function(G, $, K, H) {
    var F = G.split(";");
    for (var E = 0,
    C = F.length; E < C; E++) {
        var G = F[E].trim(),
        J = G.split(":"),
        A = J[0],
        _ = J[1];
        if (_) _ = _.split(",");
        else _ = [];
        var D = mini.VTypes[A];
        if (D) {
            var I = D($, _);
            if (I !== true) {
                K[O1O111] = false;
                var B = J[0] + "ErrorText";
                K.errorText = H[B] || mini.VTypes[B] || "";
                K.errorText = String.format(K.errorText, _[0], _[1], _[2], _[3], _[4]);
                break
            }
        }
    }
};
mini.Ool1ol = function($, _) {
    if ($ && $[_]) return $[_];
    else return mini.VTypes[_]
};
mini.VTypes = {
    uniqueErrorText: "This field is unique.",
    requiredErrorText: "This field is required.",
    emailErrorText: "Please enter a valid email address.",
    urlErrorText: "Please enter a valid URL.",
    floatErrorText: "Please enter a valid number.",
    intErrorText: "Please enter only digits",
    dateErrorText: "Please enter a valid date. Date format is {0}",
    maxLengthErrorText: "Please enter no more than {0} characters.",
    minLengthErrorText: "Please enter at least {0} characters.",
    maxErrorText: "Please enter a value less than or equal to {0}.",
    minErrorText: "Please enter a value greater than or equal to {0}.",
    rangeLengthErrorText: "Please enter a value between {0} and {1} characters long.",
    rangeCharErrorText: "Please enter a value between {0} and {1} characters long.",
    rangeErrorText: "Please enter a value between {0} and {1}.",
    required: function(_, $) {
        if (mini.isNull(_) || _ === "") return false;
        return true
    },
    email: function(_, $) {
        if (mini.isNull(_) || _ === "") return true;
        if (_.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true;
        else return false
    },
    url: function(A, $) {
        if (mini.isNull(A) || A === "") return true;
        function _(_) {
            _ = _.toLowerCase();
            var $ = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?" + "(([0-9]{1,3}.){3}[0-9]{1,3}" + "|" + "([0-9a-z_!~*'()-]+.)*" + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." + "[a-z]{2,6})" + "(:[0-9]{1,4})?" + "((/?)|" + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$",
            A = new RegExp($);
            if (A.test(_)) return (true);
            else return (false)
        }
        return _(A)
    },
    "int": function(A, _) {
        if (mini.isNull(A) || A === "") return true;
        function $(_) {
            if (_ < 0) _ = -_;
            var $ = String(_);
            return $.length > 0 && !(/[^0-9]/).test($)
        }
        return $(A)
    },
    "float": function(A, _) {
        if (mini.isNull(A) || A === "") return true;
        function $(_) {
            if (_ < 0) _ = -_;
            var $ = String(_);
            if ($.split(".").length > 2) return false;
            return $.length > 0 && !(/[^0-9.]/).test($)
        }
        return $(A)
    },
    "date": function(B, _) {
        if (mini.isNull(B) || B === "") return true;
        if (!B) return false;
        var $ = null,
        A = _[0];
        if (A) {
            $ = mini.parseDate(B, A);
            if ($ && $.getFullYear) if (mini.formatDate($, A) == B) return true
        } else {
            $ = mini.parseDate(B, "yyyy-MM-dd");
            if (!$) $ = mini.parseDate(B, "yyyy/MM/dd");
            if (!$) $ = mini.parseDate(B, "MM/dd/yyyy");
            if ($ && $.getFullYear) return true
        }
        return false
    },
    maxLength: function(A, $) {
        if (mini.isNull(A) || A === "") return true;
        var _ = parseInt($);
        if (!A || isNaN(_)) return true;
        if (A.length <= _) return true;
        else return false
    },
    minLength: function(A, $) {
        if (mini.isNull(A) || A === "") return true;
        var _ = parseInt($);
        if (isNaN(_)) return true;
        if (A.length >= _) return true;
        else return false
    },
    rangeLength: function(B, _) {
        if (mini.isNull(B) || B === "") return true;
        if (!B) return false;
        var $ = parseFloat(_[0]),
        A = parseFloat(_[1]);
        if (isNaN($) || isNaN(A)) return true;
        if ($ <= B.length && B.length <= A) return true;
        return false
    },
    rangeChar: function(G, B) {
        if (mini.isNull(G) || G === "") return true;
        var A = parseFloat(B[0]),
        E = parseFloat(B[1]);
        if (isNaN(A) || isNaN(E)) return true;
        function C(_) {
            var $ = new RegExp("^[\u4e00-\u9fa5]+$");
            if ($.test(_)) return true;
            return false
        }
        var $ = 0,
        F = String(G).split("");
        for (var _ = 0,
        D = F.length; _ < D; _++) if (C(F[_])) $ += 2;
        else $ += 1;
        if (A <= $ && $ <= E) return true;
        return false
    },
    range: function(B, _) {
        if (mini.VTypes["float"](B, _) == false) return false;
        if (mini.isNull(B) || B === "") return true;
        B = parseFloat(B);
        if (isNaN(B)) return false;
        var $ = parseFloat(_[0]),
        A = parseFloat(_[1]);
        if (isNaN($) || isNaN(A)) return true;
        if ($ <= B && B <= A) return true;
        return false
    }
};
mini.summaryTypes = {
    "count": function($) {
        if (!$) $ = [];
        return $.length
    },
    "max": function(B, C) {
        if (!B) B = [];
        var E = null;
        for (var _ = 0,
        D = B.length; _ < D; _++) {
            var $ = B[_],
            A = parseFloat($[C]);
            if (A === null || A === undefined || isNaN(A)) continue;
            if (E == null || E < A) E = A
        }
        return E
    },
    "min": function(C, D) {
        if (!C) C = [];
        var B = null;
        for (var _ = 0,
        E = C.length; _ < E; _++) {
            var $ = C[_],
            A = parseFloat($[D]);
            if (A === null || A === undefined || isNaN(A)) continue;
            if (B == null || B > A) B = A
        }
        return B
    },
    "avg": function(C, D) {
        if (!C) C = [];
        if (C.length == 0) return 0;
        var B = 0;
        for (var _ = 0,
        E = C.length; _ < E; _++) {
            var $ = C[_],
            A = parseFloat($[D]);
            if (A === null || A === undefined || isNaN(A)) continue;
            B += A
        }
        var F = B / C.length;
        return F
    },
    "sum": function(C, D) {
        if (!C) C = [];
        var B = 0;
        for (var _ = 0,
        E = C.length; _ < E; _++) {
            var $ = C[_],
            A = parseFloat($[D]);
            if (A === null || A === undefined || isNaN(A)) continue;
            B += A
        }
        return B
    }
};
mini.formatCurrency = function($, A) {
    if ($ === null || $ === undefined) $ == 0;
    $ = String($).replace(/\$|\,/g, "");
    if (isNaN($)) $ = "0";
    sign = ($ == ($ = Math.abs($)));
    $ = Math.floor($ * 100 + 0.50000000001);
    cents = $ % 100;
    $ = Math.floor($ / 100).toString();
    if (cents < 10) cents = "0" + cents;
    for (var _ = 0; _ < Math.floor(($.length - (1 + _)) / 3); _++) $ = $.substring(0, $.length - (4 * _ + 3)) + "," + $.substring($.length - (4 * _ + 3));
    A = A || "";
    return A + (((sign) ? "": "-") + $ + "." + cents)
};
mini.emptyFn = function() {};
mini.Drag = function($) {
    mini.copyTo(this, $)
};
mini.Drag[O010O1] = {
    onStart: mini.emptyFn,
    onMove: mini.emptyFn,
    onStop: mini.emptyFn,
    capture: false,
    fps: 20,
    event: null,
    delay: 80,
    start: function(_) {
        _.preventDefault();
        if (_) this.event = _;
        this.now = this.init = [this.event.pageX, this.event.pageY];
        var $ = document;
        oOO1l($, "mousemove", this.move, this);
        oOO1l($, "mouseup", this.stop, this);
        oOO1l($, "contextmenu", this.contextmenu, this);
        if (this.context) oOO1l(this.context, "contextmenu", this.contextmenu, this);
        this.trigger = _.target;
        mini.selectable(this.trigger, false);
        mini.selectable($.body, false);
        if (this.capture) if (isIE) this.trigger.setCapture(true);
        else if (document.captureEvents) document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEDOWN);
        this.started = false;
        this.startTime = new Date()
    },
    contextmenu: function($) {
        if (this.context) O01O(this.context, "contextmenu", this.contextmenu, this);
        O01O(document, "contextmenu", this.contextmenu, this);
        $.preventDefault();
        $.stopPropagation()
    },
    move: function(_) {
        if (this.delay) if (new Date() - this.startTime < this.delay) return;
        if (!this.started) {
            this.started = true;
            this.onStart(this)
        }
        var $ = this;
        if (!this.timer) this.timer = setTimeout(function() {
            $.now = [_.pageX, _.pageY];
            $.event = _;
            $.onMove($);
            $.timer = null
        },
        5)
    },
    stop: function(B) {
        this.now = [B.pageX, B.pageY];
        this.event = B;
        if (this.timer) {
            clearTimeout(this.timer);
            this.timer = null
        }
        var A = document;
        mini.selectable(this.trigger, true);
        mini.selectable(A.body, true);
        if (isIE) {
            this.trigger.setCapture(false);
            this.trigger.releaseCapture()
        }
        var _ = mini.MouseButton.Right != B.button;
        if (_ == false) B.preventDefault();
        O01O(A, "mousemove", this.move, this);
        O01O(A, "mouseup", this.stop, this);
        var $ = this;
        setTimeout(function() {
            O01O(document, "contextmenu", $.contextmenu, $);
            if ($.context) O01O($.context, "contextmenu", $.contextmenu, $)
        },
        1);
        if (this.started) $.onStop($, _)
    }
};
mini.JSON = new(function() {
    var sb = [],
    _dateFormat = null,
    useHasOwn = !!{}.hasOwnProperty,
    replaceString = function($, A) {
        var _ = m[A];
        if (_) return _;
        _ = A.charCodeAt();
        return "\\u00" + Math.floor(_ / 16).toString(16) + (_ % 16).toString(16)
    },
    doEncode = function($, B) {
        if ($ === null) {
            sb[sb.length] = "null";
            return
        }
        var A = typeof $;
        if (A == "undefined") {
            sb[sb.length] = "null";
            return
        } else if ($.push) {
            sb[sb.length] = "[";
            var E, _, D = $.length,
            F;
            for (_ = 0; _ < D; _ += 1) {
                F = $[_];
                A = typeof F;
                if (A == "undefined" || A == "function" || A == "unknown");
                else {
                    if (E) sb[sb.length] = ",";
                    doEncode(F);
                    E = true
                }
            }
            sb[sb.length] = "]";
            return
        } else if ($.getFullYear) {
            if (_dateFormat) sb[sb.length] = _dateFormat($, B);
            else {
                var C;
                sb[sb.length] = "\"";
                sb[sb.length] = $.getFullYear();
                sb[sb.length] = "-";
                C = $.getMonth() + 1;
                sb[sb.length] = C < 10 ? "0" + C: C;
                sb[sb.length] = "-";
                C = $.getDate();
                sb[sb.length] = C < 10 ? "0" + C: C;
                sb[sb.length] = "T";
                C = $.getHours();
                sb[sb.length] = C < 10 ? "0" + C: C;
                sb[sb.length] = ":";
                C = $.getMinutes();
                sb[sb.length] = C < 10 ? "0" + C: C;
                sb[sb.length] = ":";
                C = $.getSeconds();
                sb[sb.length] = C < 10 ? "0" + C: C;
                sb[sb.length] = "\"";
                return
            }
        } else if (A == "string") {
            if (strReg1.test($)) {
                sb[sb.length] = "\"";
                sb[sb.length] = $.replace(strReg2, replaceString);
                sb[sb.length] = "\"";
                return
            }
            sb[sb.length] = "\"" + $ + "\"";
            return
        } else if (A == "number") {
            sb[sb.length] = $;
            return
        } else if (A == "boolean") {
            sb[sb.length] = String($);
            return
        } else {
            sb[sb.length] = "{";
            E,
            _,
            F;
            for (_ in $) if (!useHasOwn || ($.hasOwnProperty && $.hasOwnProperty(_))) {
                F = $[_];
                A = typeof F;
                if (A == "undefined" || A == "function" || A == "unknown");
                else {
                    if (E) sb[sb.length] = ",";
                    doEncode(_);
                    sb[sb.length] = ":";
                    doEncode(F, _);
                    E = true
                }
            }
            sb[sb.length] = "}";
            return
        }
    },
    m = {
        "\b": "\\b",
        "\t": "\\t",
        "\n": "\\n",
        "\f": "\\f",
        "\r": "\\r",
        "\"": "\\\"",
        "\\": "\\\\"
    },
    strReg1 = /["\\\x00-\x1f]/,
    strReg2 = /([\x00-\x1f\\"])/g;
    this.encode = function() {
        var $;
        return function($, _) {
            sb = [];
            _dateFormat = _;
            doEncode($);
            _dateFormat = null;
            return sb.join("")
        }
    } ();
    this.decode = function() {
        var re = /[\"\'](\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})[\"\']/g;
        return function(json, parseDate) {
            if (json === "" || json === null || json === undefined) return json;
            if (typeof json == "object") json = this.encode(json);
            if (parseDate !== false) {
                json = json.replace(re, "new Date($1,$2-1,$3,$4,$5,$6)");
                json = json.replace(__js_dateRegEx, "$1new Date($2)");
                json = json.replace(__js_dateRegEx2, "new Date($1)")
            }
            var s = eval("(" + json + ")");
            return s
        }
    } ()
})();
__js_dateRegEx = new RegExp("(^|[^\\\\])\\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\\"", "g");
__js_dateRegEx2 = new RegExp("[\"']/Date\\(([0-9]+)\\)/[\"']", "g");
mini.encode = mini.JSON.encode;
mini.decode = mini.JSON.decode;
mini.clone = function($, A) {
    if ($ === null || $ === undefined) return $;
    var B = mini.encode($),
    _ = mini.decode(B);
    function C(A) {
        for (var _ = 0,
        D = A.length; _ < D; _++) {
            var $ = A[_];
            delete $._state;
            delete $._id;
            delete $._pid;
            delete $._uid;
            for (var B in $) {
                var E = $[B];
                if (E instanceof Array) C(E)
            }
        }
    }
    if (A !== false) C(_ instanceof Array ? _: [_]);
    return _
};
var DAY_MS = 86400000,
HOUR_MS = 3600000,
MINUTE_MS = 60000;
mini.copyTo(mini, {
    clearTime: function($) {
        if (!$) return null;
        return new Date($.getFullYear(), $.getMonth(), $.getDate())
    },
    maxTime: function($) {
        if (!$) return null;
        return new Date($.getFullYear(), $.getMonth(), $.getDate(), 23, 59, 59)
    },
    cloneDate: function($) {
        if (!$) return null;
        return new Date($[O0olo1]())
    },
    addDate: function(A, $, _) {
        if (!_) _ = "D";
        A = new Date(A[O0olo1]());
        switch (_.toUpperCase()) {
        case "Y":
            A.setFullYear(A.getFullYear() + $);
            break;
        case "MO":
            A.setMonth(A.getMonth() + $);
            break;
        case "D":
            A.setDate(A.getDate() + $);
            break;
        case "H":
            A.setHours(A.getHours() + $);
            break;
        case "M":
            A.setMinutes(A.getMinutes() + $);
            break;
        case "S":
            A.setSeconds(A.getSeconds() + $);
            break;
        case "MS":
            A.setMilliseconds(A.getMilliseconds() + $);
            break
        }
        return A
    },
    getWeek: function(D, $, _) {
        $ += 1;
        var E = Math.floor((14 - ($)) / 12),
        G = D + 4800 - E,
        A = ($) + (12 * E) - 3,
        C = _ + Math.floor(((153 * A) + 2) / 5) + (365 * G) + Math.floor(G / 4) - Math.floor(G / 100) + Math.floor(G / 400) - 32045,
        F = (C + 31741 - (C % 7)) % 146097 % 36524 % 1461,
        H = Math.floor(F / 1460),
        B = ((F - H) % 365) + H;
        NumberOfWeek = Math.floor(B / 7) + 1;
        return NumberOfWeek
    },
    getWeekStartDate: function(C, B) {
        if (!B) B = 0;
        if (B > 6 || B < 0) throw new Error("out of weekday");
        var A = C.getDay(),
        _ = B - A;
        if (A < B) _ -= 7;
        var $ = new Date(C.getFullYear(), C.getMonth(), C.getDate() + _);
        return $
    },
    getShortWeek: function(_) {
        var $ = this.dateInfo.daysShort;
        return $[_]
    },
    getLongWeek: function(_) {
        var $ = this.dateInfo.daysLong;
        return $[_]
    },
    getShortMonth: function($) {
        var _ = this.dateInfo.monthsShort;
        return _[$]
    },
    getLongMonth: function($) {
        var _ = this.dateInfo.monthsLong;
        return _[$]
    },
    dateInfo: {
        monthsLong: ["January", "Febraury", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        daysLong: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
        daysShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
        quarterLong: ["Q1", "Q2", "Q3", "Q4"],
        quarterShort: ["Q1", "Q2", "Q3", "Q4"],
        halfYearLong: ["first half", "second half"],
        patterns: {
            "d": "M/d/yyyy",
            "D": "dddd,MMMM dd,yyyy",
            "f": "dddd,MMMM dd,yyyy H:mm tt",
            "F": "dddd,MMMM dd,yyyy H:mm:ss tt",
            "g": "M/d/yyyy H:mm tt",
            "G": "M/d/yyyy H:mm:ss tt",
            "m": "MMMM dd",
            "o": "yyyy-MM-ddTHH:mm:ss.fff",
            "s": "yyyy-MM-ddTHH:mm:ss",
            "t": "H:mm tt",
            "T": "H:mm:ss tt",
            "U": "dddd,MMMM dd,yyyy HH:mm:ss tt",
            "y": "MMM,yyyy"
        },
        tt: {
            "AM": "AM",
            "PM": "PM"
        },
        ten: {
            "Early": "Early",
            "Mid": "Mid",
            "Late": "Late"
        },
        today: "Today",
        clockType: 24
    }
});
Date[O010O1].getHalfYear = function() {
    if (!this.getMonth) return null;
    var $ = this.getMonth();
    if ($ < 6) return 0;
    return 1
};
Date[O010O1].getQuarter = function() {
    if (!this.getMonth) return null;
    var $ = this.getMonth();
    if ($ < 3) return 0;
    if ($ < 6) return 1;
    if ($ < 9) return 2;
    return 3
};
mini.formatDate = function(C, O, F) {
    if (!C || !C.getFullYear || isNaN(C)) return "";
    var G = C.toString(),
    B = mini.dateInfo;
    if (!B) B = mini.dateInfo;
    if (typeof(B) !== "undefined") {
        var M = typeof(B.patterns[O]) !== "undefined" ? B.patterns[O] : O,
        J = C.getFullYear(),
        $ = C.getMonth(),
        _ = C.getDate();
        if (O == "yyyy-MM-dd") {
            $ = $ + 1 < 10 ? "0" + ($ + 1) : $ + 1;
            _ = _ < 10 ? "0" + _: _;
            return J + "-" + $ + "-" + _
        }
        if (O == "MM/dd/yyyy") {
            $ = $ + 1 < 10 ? "0" + ($ + 1) : $ + 1;
            _ = _ < 10 ? "0" + _: _;
            return $ + "/" + _ + "/" + J
        }
        G = M.replace(/yyyy/g, J);
        G = G.replace(/yy/g, (J + "").substring(2));
        var L = C.getHalfYear();
        G = G.replace(/hy/g, B.halfYearLong[L]);
        var I = C.getQuarter();
        G = G.replace(/Q/g, B.quarterLong[I]);
        G = G.replace(/q/g, B.quarterShort[I]);
        G = G.replace(/MMMM/g, B.monthsLong[$].escapeDateTimeTokens());
        G = G.replace(/MMM/g, B.monthsShort[$].escapeDateTimeTokens());
        G = G.replace(/MM/g, $ + 1 < 10 ? "0" + ($ + 1) : $ + 1);
        G = G.replace(/(\\)?M/g,
        function(A, _) {
            return _ ? A: $ + 1
        });
        var N = C.getDay();
        G = G.replace(/dddd/g, B.daysLong[N].escapeDateTimeTokens());
        G = G.replace(/ddd/g, B.daysShort[N].escapeDateTimeTokens());
        G = G.replace(/dd/g, _ < 10 ? "0" + _: _);
        G = G.replace(/(\\)?d/g,
        function(A, $) {
            return $ ? A: _
        });
        var H = C.getHours(),
        A = H > 12 ? H - 12 : H;
        if (B.clockType == 12) if (H > 12) H -= 12;
        G = G.replace(/HH/g, H < 10 ? "0" + H: H);
        G = G.replace(/(\\)?H/g,
        function(_, $) {
            return $ ? _: H
        });
        G = G.replace(/hh/g, A < 10 ? "0" + A: A);
        G = G.replace(/(\\)?h/g,
        function(_, $) {
            return $ ? _: A
        });
        var D = C.getMinutes();
        G = G.replace(/mm/g, D < 10 ? "0" + D: D);
        G = G.replace(/(\\)?m/g,
        function(_, $) {
            return $ ? _: D
        });
        var K = C.getSeconds();
        G = G.replace(/ss/g, K < 10 ? "0" + K: K);
        G = G.replace(/(\\)?s/g,
        function(_, $) {
            return $ ? _: K
        });
        G = G.replace(/fff/g, C.getMilliseconds());
        G = G.replace(/tt/g, C.getHours() > 12 || C.getHours() == 0 ? B.tt["PM"] : B.tt["AM"]);
        var C = C.getDate(),
        E = "";
        if (C <= 10) E = B.ten["Early"];
        else if (C <= 20) E = B.ten["Mid"];
        else E = B.ten["Late"];
        G = G.replace(/ten/g, E)
    }
    return G.replace(/\\/g, "")
};
String[O010O1].escapeDateTimeTokens = function() {
    return this.replace(/([dMyHmsft])/g, "\\$1")
};
mini.fixDate = function($, _) {
    if ( + $) while ($.getDate() != _.getDate()) $[o11OO0]( + $ + ($ < _ ? 1 : -1) * HOUR_MS)
};
mini.parseDate = function(s, ignoreTimezone) {
    try {
        var d = eval(s);
        if (d && d.getFullYear) return d
    } catch(ex) {}
    if (typeof s == "object") return isNaN(s) ? null: s;
    if (typeof s == "number") {
        d = new Date(s * 1000);
        if (d[O0olo1]() != s) return null;
        return isNaN(d) ? null: d
    }
    if (typeof s == "string") {
        m = s.match(/^([0-9]{4}).([0-9]*)$/);
        if (m) {
            var date = new Date(m[1], m[2] - 1);
            return date
        }
        if (s.match(/^\d+(\.\d+)?$/)) {
            d = new Date(parseFloat(s) * 1000);
            if (d[O0olo1]() != s) return null;
            else return d
        }
        if (ignoreTimezone === undefined) ignoreTimezone = true;
        d = mini.parseISO8601(s, ignoreTimezone) || (s ? new Date(s) : null);
        return isNaN(d) ? null: d
    }
    return null
};
mini.parseISO8601 = function(D, $) {
    var _ = D.match(/^([0-9]{4})([-\/]([0-9]{1,2})([-\/]([0-9]{1,2})([T ]([0-9]{1,2}):([0-9]{1,2})(:([0-9]{1,2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/);
    if (!_) {
        _ = D.match(/^([0-9]{4})[-\/]([0-9]{2})[-\/]([0-9]{2})[T ]([0-9]{1,2})/);
        if (_) {
            var A = new Date(_[1], _[2] - 1, _[3], _[4]);
            return A
        }
        _ = D.match(/^([0-9]{4}).([0-9]*)/);
        if (_) {
            A = new Date(_[1], _[2] - 1);
            return A
        }
        _ = D.match(/^([0-9]{4}).([0-9]*).([0-9]*)/);
        if (_) {
            A = new Date(_[1], _[2] - 1, _[3]);
            return A
        }
        _ = D.match(/^([0-9]{2})-([0-9]{2})-([0-9]{4})$/);
        if (!_) return null;
        else {
            A = new Date(_[3], _[1] - 1, _[2]);
            return A
        }
    }
    A = new Date(_[1], 0, 1);
    if ($ || !_[14]) {
        var C = new Date(_[1], 0, 1, 9, 0);
        if (_[3]) {
            A.setMonth(_[3] - 1);
            C.setMonth(_[3] - 1)
        }
        if (_[5]) {
            A.setDate(_[5]);
            C.setDate(_[5])
        }
        mini.fixDate(A, C);
        if (_[7]) A.setHours(_[7]);
        if (_[8]) A.setMinutes(_[8]);
        if (_[10]) A.setSeconds(_[10]);
        if (_[12]) A.setMilliseconds(Number("0." + _[12]) * 1000);
        mini.fixDate(A, C)
    } else {
        A.setUTCFullYear(_[1], _[3] ? _[3] - 1 : 0, _[5] || 1);
        A.setUTCHours(_[7] || 0, _[8] || 0, _[10] || 0, _[12] ? Number("0." + _[12]) * 1000 : 0);
        var B = Number(_[16]) * 60 + (_[18] ? Number(_[18]) : 0);
        B *= _[15] == "-" ? 1 : -1;
        A = new Date( + A + (B * 60 * 1000))
    }
    return A
};
mini.parseTime = function(E, F) {
    if (!E) return null;
    var B = parseInt(E);
    if (B == E && F) {
        $ = new Date(0);
        if (F[0] == "H") $.setHours(B);
        else if (F[0] == "m") $.setMinutes(B);
        else if (F[0] == "s") $.setSeconds(B);
        return $
    }
    var $ = mini.parseDate(E);
    if (!$) {
        var D = E.split(":"),
        _ = parseInt(parseFloat(D[0])),
        C = parseInt(parseFloat(D[1])),
        A = parseInt(parseFloat(D[2]));
        if (!isNaN(_) && !isNaN(C) && !isNaN(A)) {
            $ = new Date(0);
            $.setHours(_);
            $.setMinutes(C);
            $.setSeconds(A)
        }
        if (!isNaN(_) && (F == "H" || F == "HH")) {
            $ = new Date(0);
            $.setHours(_)
        } else if (!isNaN(_) && !isNaN(C) && (F == "H:mm" || F == "HH:mm")) {
            $ = new Date(0);
            $.setHours(_);
            $.setMinutes(C)
        } else if (!isNaN(_) && !isNaN(C) && F == "mm:ss") {
            $ = new Date(0);
            $.setMinutes(_);
            $.setSeconds(C)
        }
    }
    return $
};
mini.dateInfo = {
    monthsLong: ["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"],
    monthsShort: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
    daysLong: ["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"],
    daysShort: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"],
    quarterLong: ["\u4e00\u5b63\u5ea6", "\u4e8c\u5b63\u5ea6", "\u4e09\u5b63\u5ea6", "\u56db\u5b63\u5ea6"],
    quarterShort: ["Q1", "Q2", "Q2", "Q4"],
    halfYearLong: ["\u4e0a\u534a\u5e74", "\u4e0b\u534a\u5e74"],
    patterns: {
        "d": "yyyy-M-d",
        "D": "yyyy\u5e74M\u6708d\u65e5",
        "f": "yyyy\u5e74M\u6708d\u65e5 H:mm",
        "F": "yyyy\u5e74M\u6708d\u65e5 H:mm:ss",
        "g": "yyyy-M-d H:mm",
        "G": "yyyy-M-d H:mm:ss",
        "m": "MMMd\u65e5",
        "o": "yyyy-MM-ddTHH:mm:ss.fff",
        "s": "yyyy-MM-ddTHH:mm:ss",
        "t": "H:mm",
        "T": "H:mm:ss",
        "U": "yyyy\u5e74M\u6708d\u65e5 HH:mm:ss",
        "y": "yyyy\u5e74MM\u6708"
    },
    tt: {
        "AM": "\u4e0a\u5348",
        "PM": "\u4e0b\u5348"
    },
    ten: {
        "Early": "\u4e0a\u65ec",
        "Mid": "\u4e2d\u65ec",
        "Late": "\u4e0b\u65ec"
    },
    today: "\u4eca\u5929",
    clockType: 24
};
mini.append = function(_, A) {
    _ = l00l(_);
    if (!A || !_) return;
    if (typeof A == "string") {
        if (A.charAt(0) == "#") {
            A = l00l(A);
            if (!A) return;
            _.appendChild(A);
            return A
        } else {
            if (A[o0lllO]("<tr") == 0) {
                return jQuery(_).append(A)[0].lastChild;
                return
            }
            var $ = document.createElement("div");
            $.innerHTML = A;
            A = $.firstChild;
            while ($.firstChild) _.appendChild($.firstChild);
            return A
        }
    } else {
        _.appendChild(A);
        return A
    }
};
mini.prepend = function(_, A) {
    if (typeof A == "string") if (A.charAt(0) == "#") A = l00l(A);
    else {
        var $ = document.createElement("div");
        $.innerHTML = A;
        A = $.firstChild
    }
    return jQuery(_).prepend(A)[0].firstChild
};
mini.after = function(_, A) {
    if (typeof A == "string") if (A.charAt(0) == "#") A = l00l(A);
    else {
        var $ = document.createElement("div");
        $.innerHTML = A;
        A = $.firstChild
    }
    if (!A || !_) return;
    _.nextSibling ? _.parentNode.insertBefore(A, _.nextSibling) : _.parentNode.appendChild(A);
    return A
};
mini.before = function(_, A) {
    if (typeof A == "string") if (A.charAt(0) == "#") A = l00l(A);
    else {
        var $ = document.createElement("div");
        $.innerHTML = A;
        A = $.firstChild
    }
    if (!A || !_) return;
    _.parentNode.insertBefore(A, _);
    return A
};
mini.__wrap = document.createElement("div");
mini.createElements = function($) {
    mini.removeChilds(mini.__wrap);
    var _ = $[o0lllO]("<tr") == 0;
    if (_) $ = "<table>" + $ + "</table>";
    mini.__wrap.innerHTML = $;
    return _ ? mini.__wrap.firstChild.rows: mini.__wrap.childNodes
};
l00l = function(D, A) {
    if (typeof D == "string") {
        if (D.charAt(0) == "#") D = D.substr(1);
        var _ = document.getElementById(D);
        if (_) return _;
        if (A) {
            var B = A.getElementsByTagName("*");
            for (var $ = 0,
            C = B.length; $ < C; $++) {
                _ = B[$];
                if (_.id == D) return _
            }
            _ = null
        }
        return _
    } else return D
};
l0ll = function($, _) {
    $ = l00l($);
    if (!$) return;
    if (!$.className) return false;
    var A = String($.className).split(" ");
    return A[o0lllO](_) != -1
};
l1ll1O = function($, _) {
    if (!_) return;
    if (l0ll($, _) == false) jQuery($)[lolOO](_)
};
lOolO = function($, _) {
    if (!_) return;
    jQuery($)[OOO0](_)
};
l0oOOo = function($) {
    $ = l00l($);
    var _ = jQuery($);
    return {
        top: parseInt(_.css("margin-top"), 10) || 0,
        left: parseInt(_.css("margin-left"), 10) || 0,
        bottom: parseInt(_.css("margin-bottom"), 10) || 0,
        right: parseInt(_.css("margin-right"), 10) || 0
    }
};
lO1ll = function($) {
    $ = l00l($);
    var _ = jQuery($);
    return {
        top: parseInt(_.css("border-top-width"), 10) || 0,
        left: parseInt(_.css("border-left-width"), 10) || 0,
        bottom: parseInt(_.css("border-bottom-width"), 10) || 0,
        right: parseInt(_.css("border-right-width"), 10) || 0
    }
};
ooO11o = function($) {
    $ = l00l($);
    var _ = jQuery($);
    return {
        top: parseInt(_.css("padding-top"), 10) || 0,
        left: parseInt(_.css("padding-left"), 10) || 0,
        bottom: parseInt(_.css("padding-bottom"), 10) || 0,
        right: parseInt(_.css("padding-right"), 10) || 0
    }
};
ol1Olo = function(_, $) {
    _ = l00l(_);
    $ = parseInt($);
    if (isNaN($) || !_) return;
    if (jQuery.boxModel) {
        var A = ooO11o(_),
        B = lO1ll(_);
        $ = $ - A.left - A.right - B.left - B.right
    }
    if ($ < 0) $ = 0;
    _.style.width = $ + "px"
};
O1llol = function(_, $) {
    _ = l00l(_);
    $ = parseInt($);
    if (isNaN($) || !_) return;
    if (jQuery.boxModel) {
        var A = ooO11o(_),
        B = lO1ll(_);
        $ = $ - A.top - A.bottom - B.top - B.bottom
    }
    if ($ < 0) $ = 0;
    _.style.height = $ + "px"
};
Ooo01 = function($, _) {
    $ = l00l($);
    if ($.style.display == "none" || $.type == "text/javascript") return 0;
    return _ ? jQuery($).width() : jQuery($).outerWidth()
};
lOOl = function($, _) {
    $ = l00l($);
    if ($.style.display == "none" || $.type == "text/javascript") return 0;
    return _ ? jQuery($).height() : jQuery($).outerHeight()
};
oOo10l = function(A, C, B, $, _) {
    if (B === undefined) {
        B = C.y;
        $ = C.width;
        _ = C.height;
        C = C.x
    }
    mini[l0lO1l](A, C, B);
    ol1Olo(A, $);
    O1llol(A, _)
};
O101o = function(A) {
    var $ = mini.getXY(A),
    _ = {
        x: $[0],
        y: $[1],
        width: Ooo01(A),
        height: lOOl(A)
    };
    _.left = _.x;
    _.top = _.y;
    _.right = _.x + _.width;
    _.bottom = _.y + _.height;
    return _
};
Olo0 = function(A, B) {
    A = l00l(A);
    if (!A || typeof B != "string") return;
    var F = jQuery(A),
    _ = B.toLowerCase().split(";");
    for (var $ = 0,
    C = _.length; $ < C; $++) {
        var E = _[$],
        D = E.split(":");
        if (D.length == 2) F.css(D[0].trim(), D[1].trim())
    }
};
o00l = function() {
    var $ = document.defaultView;
    return new Function("el", "style", ["style[o0lllO]('-')>-1 && (style=style.replace(/-(\\w)/g,function(m,a){return a.toUpperCase()}));", "style=='float' && (style='", $ ? "cssFloat": "styleFloat", "');return el.style[style] || ", $ ? "window.getComputedStyle(el,null)[style]": "el.currentStyle[style]", " || null;"].join(""))
} ();
ooll = function(A, $) {
    var _ = false;
    A = l00l(A);
    $ = l00l($);
    if (A === $) return true;
    if (A && $) if (A.contains) {
        try {
            return A.contains($)
        } catch(B) {
            return false
        }
    } else if (A.compareDocumentPosition) return !! (A.compareDocumentPosition($) & 16);
    else while ($ = $.parentNode) _ = $ == A || _;
    return _
};
O01l0O = function(B, A, $) {
    B = l00l(B);
    var C = document.body,
    _ = 0,
    D;
    $ = $ || 50;
    if (typeof $ != "number") {
        D = l00l($);
        $ = 10
    }
    while (B && B.nodeType == 1 && _ < $ && B != C && B != D) {
        if (l0ll(B, A)) return B;
        _++;
        B = B.parentNode
    }
    return null
};
mini.copyTo(mini, {
    byId: l00l,
    hasClass: l0ll,
    addClass: l1ll1O,
    removeClass: lOolO,
    getMargins: l0oOOo,
    getBorders: lO1ll,
    getPaddings: ooO11o,
    setWidth: ol1Olo,
    setHeight: O1llol,
    getWidth: Ooo01,
    getHeight: lOOl,
    setBox: oOo10l,
    getBox: O101o,
    setStyle: Olo0,
    getStyle: o00l,
    repaint: function($) {
        if (!$) $ = document.body;
        l1ll1O($, "mini-repaint");
        setTimeout(function() {
            lOolO($, "mini-repaint")
        },
        1)
    },
    getSize: function($, _) {
        return {
            width: Ooo01($, _),
            height: lOOl($, _)
        }
    },
    setSize: function(A, $, _) {
        ol1Olo(A, $);
        O1llol(A, _)
    },
    setX: function(_, B) {
        B = parseInt(B);
        var $ = jQuery(_).offset(),
        A = parseInt($.top);
        if (A === undefined) A = $[1];
        mini[l0lO1l](_, B, A)
    },
    setY: function(_, A) {
        A = parseInt(A);
        var $ = jQuery(_).offset(),
        B = parseInt($.left);
        if (B === undefined) B = $[0];
        mini[l0lO1l](_, B, A)
    },
    setXY: function(_, B, A) {
        var $ = {
            left: parseInt(B),
            top: parseInt(A)
        };
        jQuery(_).offset($);
        jQuery(_).offset($)
    },
    getXY: function(_) {
        var $ = jQuery(_).offset();
        return [parseInt($.left), parseInt($.top)]
    },
    getViewportBox: function() {
        var $ = jQuery(window).width(),
        _ = jQuery(window).height(),
        B = jQuery(document).scrollLeft(),
        A = jQuery(document.body).scrollTop();
        if (document.documentElement) A = document.documentElement.scrollTop;
        return {
            x: B,
            y: A,
            width: $,
            height: _,
            right: B + $,
            bottom: A + _
        }
    },
    getChildNodes: function(A, C) {
        A = l00l(A);
        if (!A) return;
        var E = A.childNodes,
        B = [];
        for (var $ = 0,
        D = E.length; $ < D; $++) {
            var _ = E[$];
            if (_.nodeType == 1 || C === true) B.push(_)
        }
        return B
    },
    removeChilds: function(B, _) {
        B = l00l(B);
        if (!B) return;
        var C = mini[l1olOo](B, true);
        for (var $ = 0,
        D = C.length; $ < D; $++) {
            var A = C[$];
            if (_ && A == _);
            else B.removeChild(C[$])
        }
    },
    isAncestor: ooll,
    findParent: O01l0O,
    findChild: function(_, A) {
        _ = l00l(_);
        var B = _.getElementsByTagName("*");
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var _ = B[$];
            if (l0ll(_, A)) return _
        }
    },
    isAncestor: function(A, $) {
        var _ = false;
        A = l00l(A);
        $ = l00l($);
        if (A === $) return true;
        if (A && $) if (A.contains) {
            try {
                return A.contains($)
            } catch(B) {
                return false
            }
        } else if (A.compareDocumentPosition) return !! (A.compareDocumentPosition($) & 16);
        else while ($ = $.parentNode) _ = $ == A || _;
        return _
    },
    getOffsetsTo: function(_, A) {
        var $ = this.getXY(_),
        B = this.getXY(A);
        return [$[0] - B[0], $[1] - B[1]]
    },
    scrollIntoView: function(I, H, F) {
        var B = l00l(H) || document.body,
        $ = this.getOffsetsTo(I, B),
        C = $[0] + B.scrollLeft,
        J = $[1] + B.scrollTop,
        D = J + I.offsetHeight,
        A = C + I.offsetWidth,
        G = B.clientHeight,
        K = parseInt(B.scrollTop, 10),
        _ = parseInt(B.scrollLeft, 10),
        L = K + G,
        E = _ + B.clientWidth;
        if (I.offsetHeight > G || J < K) B.scrollTop = J;
        else if (D > L) B.scrollTop = D - G;
        B.scrollTop = B.scrollTop;
        if (F !== false) {
            if (I.offsetWidth > B.clientWidth || C < _) B.scrollLeft = C;
            else if (A > E) B.scrollLeft = A - B.clientWidth;
            B.scrollLeft = B.scrollLeft
        }
        return this
    },
    setOpacity: function(_, $) {
        jQuery(_).css({
            "opacity": $
        })
    },
    selectable: function(_, $) {
        _ = l00l(_);
        if ( !! $) {
            jQuery(_)[OOO0]("mini-unselectable");
            if (isIE) _.unselectable = "off";
            else {
                _.style.MozUserSelect = "";
                _.style.KhtmlUserSelect = "";
                _.style.UserSelect = ""
            }
        } else {
            jQuery(_)[lolOO]("mini-unselectable");
            if (isIE) _.unselectable = "on";
            else {
                _.style.MozUserSelect = "none";
                _.style.UserSelect = "none";
                _.style.KhtmlUserSelect = "none"
            }
        }
    },
    selectRange: function(B, A, _) {
        if (B.createTextRange) {
            var $ = B.createTextRange();
            $.moveStart("character", A);
            $.moveEnd("character", _ - B.value.length);
            $[ololO1]()
        } else if (B.setSelectionRange) B.setSelectionRange(A, _);
        try {
            B[lo0OOl]()
        } catch(C) {}
    },
    getSelectRange: function(A) {
        A = l00l(A);
        if (!A) return;
        try {
            A[lo0OOl]()
        } catch(C) {}
        var $ = 0,
        B = 0;
        if (A.createTextRange) {
            var _ = document.selection.createRange().duplicate();
            _.moveEnd("character", A.value.length);
            if (_.text === "") $ = A.value.length;
            else $ = A.value.lastIndexOf(_.text);
            _ = document.selection.createRange().duplicate();
            _.moveStart("character", -A.value.length);
            B = _.text.length
        } else {
            $ = A.selectionStart;
            B = A.selectionEnd
        }
        return [$, B]
    }
}); (function() {
    var $ = {
        tabindex: "tabIndex",
        readonly: "readOnly",
        "for": "htmlFor",
        "class": "className",
        maxlength: "maxLength",
        cellspacing: "cellSpacing",
        cellpadding: "cellPadding",
        rowspan: "rowSpan",
        colspan: "colSpan",
        usemap: "useMap",
        frameborder: "frameBorder",
        contenteditable: "contentEditable"
    },
    _ = document.createElement("div");
    _.setAttribute("class", "t");
    var A = _.className === "t";
    mini.setAttr = function(B, C, _) {
        B.setAttribute(A ? C: ($[C] || C), _)
    };
    mini.getAttr = function(B, D) {
        if (D == "value" && (isIE6 || isIE7)) {
            var _ = B.attributes[D];
            return _ ? _.value: null
        }
        var E = B.getAttribute(A ? D: ($[D] || D));
        if (typeof E == "function") E = B.attributes[D].value;
        if (E == null && D == "onload") {
            var C = B.getAttributeNode ? B.getAttributeNode(D) : null;
            if (C) E = C.nodeValue
        }
        return E
    }
})();
OOlo10 = function(_, $, C, A) {
    var B = "on" + $.toLowerCase();
    _[B] = function(_) {
        _ = _ || window.event;
        _.target = _.target || _.srcElement;
        if (!_.preventDefault) _.preventDefault = function() {
            if (window.event) window.event.returnValue = false
        };
        if (!_.stopPropogation) _.stopPropogation = function() {
            if (window.event) window.event.cancelBubble = true
        };
        var $ = C[lOlOo1](A, _);
        if ($ === false) return false
    }
};
oOO1l = function(_, $, D, A) {
    _ = l00l(_);
    A = A || _;
    if (!_ || !$ || !D || !A) return false;
    var B = mini[olol1l](_, $, D, A);
    if (B) return false;
    var C = mini.createDelegate(D, A);
    mini.listeners.push([_, $, D, A, C]);
    if (isFirefox && $ == "mousewheel") $ = "DOMMouseScroll";
    jQuery(_).bind($, C)
};
O01O = function(_, $, C, A) {
    _ = l00l(_);
    A = A || _;
    if (!_ || !$ || !C || !A) return false;
    var B = mini[olol1l](_, $, C, A);
    if (!B) return false;
    mini.listeners.remove(B);
    if (isFirefox && $ == "mousewheel") $ = "DOMMouseScroll";
    jQuery(_).unbind($, B[4])
};
mini.copyTo(mini, {
    listeners: [],
    on: oOO1l,
    un: O01O,
    findListener: function(A, _, F, B) {
        A = l00l(A);
        B = B || A;
        if (!A || !_ || !F || !B) return false;
        var D = mini.listeners;
        for (var $ = 0,
        E = D.length; $ < E; $++) {
            var C = D[$];
            if (C[0] == A && C[1] == _ && C[2] == F && C[3] == B) return C
        }
    },
    clearEvent: function(A, _) {
        A = l00l(A);
        if (!A) return false;
        var C = mini.listeners;
        for (var $ = C.length - 1; $ >= 0; $--) {
            var B = C[$];
            if (B[0] == A) if (!_ || _ == B[1]) O01O(A, B[1], B[2], B[3])
        }
        A.onmouseover = A.onmousedown = null
    }
});
mini.__windowResizes = [];
mini.onWindowResize = function(_, $) {
    mini.__windowResizes.push([_, $])
};
oOO1l(window, "resize",
function(C) {
    var _ = mini.__windowResizes;
    for (var $ = 0,
    B = _.length; $ < B; $++) {
        var A = _[$];
        A[0][lOlOo1](A[1], C)
    }
});
mini.htmlEncode = function(_) {
    if (typeof _ !== "string") return _;
    var $ = "";
    if (_.length == 0) return "";
    $ = _;
    $ = $.replace(/</g, "&lt;");
    $ = $.replace(/>/g, "&gt;");
    $ = $.replace(/ /g, "&nbsp;");
    $ = $.replace(/\'/g, "&#39;");
    $ = $.replace(/\"/g, "&quot;");
    return $
};
mini.htmlDecode = function(_) {
    if (typeof _ !== "string") return _;
    var $ = "";
    if (_.length == 0) return "";
    $ = _.replace(/&gt;/g, "&");
    $ = $.replace(/&lt;/g, "<");
    $ = $.replace(/&gt;/g, ">");
    $ = $.replace(/&nbsp;/g, " ");
    $ = $.replace(/&#39;/g, "'");
    $ = $.replace(/&quot;/g, "\"");
    return $
};
mini.copyTo(Array.prototype, {
    add: Array[O010O1].enqueue = function($) {
        this[this.length] = $;
        return this
    },
    getRange: function(A, B) {
        var C = [];
        for (var _ = A; _ <= B; _++) {
            var $ = this[_];
            if ($) C[C.length] = $
        }
        return C
    },
    addRange: function(A) {
        for (var $ = 0,
        _ = A.length; $ < _; $++) this[this.length] = A[$];
        return this
    },
    clear: function() {
        this.length = 0;
        return this
    },
    clone: function() {
        if (this.length === 1) return [this[0]];
        else return Array.apply(null, this)
    },
    contains: function($) {
        return (this[o0lllO]($) >= 0)
    },
    indexOf: function(_, B) {
        var $ = this.length;
        for (var A = (B < 0) ? Math[Oo10oo](0, $ + B) : B || 0; A < $; A++) if (this[A] === _) return A;
        return - 1
    },
    dequeue: function() {
        return this.shift()
    },
    insert: function(_, $) {
        this.splice(_, 0, $);
        return this
    },
    insertRange: function(_, B) {
        for (var A = B.length - 1; A >= 0; A--) {
            var $ = B[A];
            this.splice(_, 0, $)
        }
        return this
    },
    remove: function(_) {
        var $ = this[o0lllO](_);
        if ($ >= 0) this.splice($, 1);
        return ($ >= 0)
    },
    removeAt: function($) {
        var _ = this[$];
        this.splice($, 1);
        return _
    },
    removeRange: function(_) {
        _ = _.clone();
        for (var $ = 0,
        A = _.length; $ < A; $++) this.remove(_[$])
    }
});
mini.Keyboard = {
    Left: 37,
    Top: 38,
    Right: 39,
    Bottom: 40,
    PageUp: 33,
    PageDown: 34,
    End: 35,
    Home: 36,
    Enter: 13,
    ESC: 27,
    Space: 32,
    Tab: 9,
    Del: 46,
    F1: 112,
    F2: 113,
    F3: 114,
    F4: 115,
    F5: 116,
    F6: 117,
    F7: 118,
    F8: 119,
    F9: 120,
    F10: 121,
    F11: 122,
    F12: 123
};
var ua = navigator.userAgent.toLowerCase(),
check = function($) {
    return $.test(ua)
},
DOC = document,
isStrict = DOC.compatMode == "CSS1Compat",
isOpera = Object[O010O1].toString[lOlOo1](window.opera) == "[object Opera]",
isChrome = check(/chrome/),
isWebKit = check(/webkit/),
isSafari = !isChrome && check(/safari/),
isSafari2 = isSafari && check(/applewebkit\/4/),
isSafari3 = isSafari && check(/version\/3/),
isSafari4 = isSafari && check(/version\/4/),
isIE = !!window.attachEvent && !isOpera,
isIE7 = isIE && check(/msie 7/),
isIE8 = isIE && check(/msie 8/),
isIE9 = isIE && check(/msie 9/),
isIE10 = isIE && document.documentMode == 10,
isIE6 = isIE && !isIE7 && !isIE8 && !isIE9 && !isIE10,
isFirefox = navigator.userAgent[o0lllO]("Firefox") > 0,
isGecko = !isWebKit && check(/gecko/),
isGecko2 = isGecko && check(/rv:1\.8/),
isGecko3 = isGecko && check(/rv:1\.9/),
isBorderBox = isIE && !isStrict,
isWindows = check(/windows|win32/),
isMac = check(/macintosh|mac os x/),
isAir = check(/adobeair/),
isLinux = check(/linux/),
isSecure = /^https/i.test(window.location.protocol);
if (isIE6) {
    try {
        DOC.execCommand("BackgroundImageCache", false, true)
    } catch(e) {}
}
mini.boxModel = !isBorderBox;
mini.isIE = isIE;
mini.isIE6 = isIE6;
mini.isIE7 = isIE7;
mini.isIE8 = isIE8;
mini.isIE9 = isIE9;
mini.isIE10 = isIE10;
mini.isFirefox = isFirefox;
mini.isOpera = isOpera;
mini.isSafari = isSafari;
mini.isChrome = isChrome;
if (jQuery) jQuery.boxModel = mini.boxModel;
mini.noBorderBox = false;
if (jQuery.boxModel == false && isIE && isIE9 == false) mini.noBorderBox = true;
mini.MouseButton = {
    Left: 0,
    Middle: 1,
    Right: 2
};
if (isIE && !isIE9 && !isIE10) mini.MouseButton = {
    Left: 1,
    Middle: 4,
    Right: 2
};
mini._MaskID = 1;
mini._MaskObjects = {};
mini[o0o0OO] = function(C) {
    var _ = l00l(C);
    if (mini.isElement(_)) C = {
        el: _
    };
    else if (typeof C == "string") C = {
        html: C
    };
    C = mini.copyTo({
        html: "",
        cls: "",
        style: "",
        backStyle: "background:#ccc"
    },
    C);
    C.el = l00l(C.el);
    if (!C.el) C.el = document.body;
    _ = C.el;
    mini["unmask"](C.el);
    _._maskid = mini._MaskID++;
    mini._MaskObjects[_._maskid] = C;
    var $ = mini.append(_, "<div class=\"mini-mask\">" + "<div class=\"mini-mask-background\" style=\"" + C.backStyle + "\"></div>" + "<div class=\"mini-mask-msg " + C.cls + "\" style=\"" + C.style + "\">" + C.html + "</div>" + "</div>");
    C.maskEl = $;
    if (!mini.isNull(C.opacity)) mini.setOpacity($.firstChild, C.opacity);
    function A() {
        B.style.display = "block";
        var $ = mini.getSize(B);
        B.style.marginLeft = -$.width / 2 + "px";
        B.style.marginTop = -$.height / 2 + "px"
    }
    var B = $.lastChild;
    B.style.display = "none";
    setTimeout(function() {
        A()
    },
    0)
};
mini["unmask"] = function(_) {
    _ = l00l(_);
    if (!_) _ = document.body;
    var A = mini._MaskObjects[_._maskid];
    if (!A) return;
    delete mini._MaskObjects[_._maskid];
    var $ = A.maskEl;
    A.maskEl = null;
    if ($ && $.parentNode) $.parentNode.removeChild($)
};
mini.Cookie = {
    get: function(D) {
        var A = document.cookie.split("; "),
        B = null;
        for (var $ = 0; $ < A.length; $++) {
            var _ = A[$].split("=");
            if (D == _[0]) B = _
        }
        if (B) {
            var C = B[1];
            if (C === undefined) return C;
            return unescape(C)
        }
        return null
    },
    set: function(C, $, B, A) {
        var _ = new Date();
        if (B != null) _ = new Date(_[O0olo1]() + (B * 1000 * 3600 * 24));
        document.cookie = C + "=" + escape($) + ((B == null) ? "": ("; expires=" + _.toGMTString())) + ";path=/" + (A ? "; domain=" + A: "")
    },
    del: function(_, $) {
        this[l1OOl1](_, null, -100, $)
    }
};
mini.copyTo(mini, {
    treeToArray: function(C, I, J, A, $) {
        if (!I) I = "children";
        var F = [];
        for (var H = 0,
        D = C.length; H < D; H++) {
            var B = C[H];
            F[F.length] = B;
            if (A) B[A] = $;
            var _ = B[I];
            if (_ && _.length > 0) {
                var E = B[J],
                G = this[lo1oOl](_, I, J, A, E);
                F.addRange(G)
            }
        }
        return F
    },
    arrayToTree: function(C, A, H, B) {
        if (!A) A = "children";
        H = H || "_id";
        B = B || "_pid";
        var G = [],
        F = {};
        for (var _ = 0,
        E = C.length; _ < E; _++) {
            var $ = C[_];
            if (!$) continue;
            var I = $[H];
            if (I !== null && I !== undefined) F[I] = $;
            delete $[A]
        }
        for (_ = 0, E = C.length; _ < E; _++) {
            var $ = C[_],
            D = F[$[B]];
            if (!D) {
                G.push($);
                continue
            }
            if (!D[A]) D[A] = [];
            D[A].push($)
        }
        return G
    }
});
mini.treeToList = mini[lo1oOl];
mini.listToTree = mini.arrayToTree;
function UUID() {
    var A = [],
    _ = "0123456789ABCDEF".split("");
    for (var $ = 0; $ < 36; $++) A[$] = Math.floor(Math.random() * 16);
    A[14] = 4;
    A[19] = (A[19] & 3) | 8;
    for ($ = 0; $ < 36; $++) A[$] = _[A[$]];
    A[8] = A[13] = A[18] = A[23] = "-";
    return A.join("")
}
String.format = function(_) {
    var $ = Array[O010O1].slice[lOlOo1](arguments, 1);
    _ = _ || "";
    return _.replace(/\{(\d+)\}/g,
    function(A, _) {
        return $[_]
    })
};
String[O010O1].trim = function() {
    var $ = /^\s+|\s+$/g;
    return function() {
        return this.replace($, "")
    }
} ();
mini.copyTo(mini, {
    measureText: function(B, _, C) {
        if (!this.measureEl) this.measureEl = mini.append(document.body, "<div></div>");
        this.measureEl.style.cssText = "position:absolute;left:-1000px;top:-1000px;visibility:hidden;";
        if (typeof B == "string") this.measureEl.className = B;
        else {
            this.measureEl.className = "";
            var G = jQuery(B),
            A = jQuery(this.measureEl),
            F = ["font-size", "font-style", "font-weight", "font-family", "line-height", "text-transform", "letter-spacing"];
            for (var $ = 0,
            E = F.length; $ < E; $++) {
                var D = F[$];
                A.css(D, G.css(D))
            }
        }
        if (C) Olo0(this.measureEl, C);
        this.measureEl.innerHTML = _;
        return mini.getSize(this.measureEl)
    }
});
jQuery(function() {
    var $ = new Date();
    mini.isReady = true;
    mini.parse();
    OO111();
    if ((o00l(document.body, "overflow") == "hidden" || o00l(document.documentElement, "overflow") == "hidden") && (isIE6 || isIE7)) {
        jQuery(document.body).css("overflow", "visible");
        jQuery(document.documentElement).css("overflow", "visible")
    }
    mini.__LastWindowWidth = document.documentElement.clientWidth;
    mini.__LastWindowHeight = document.documentElement.clientHeight
});
mini_onload = function($) {
    mini.layout(null, false);
    oOO1l(window, "resize", mini_onresize)
};
oOO1l(window, "load", mini_onload);
mini.__LastWindowWidth = document.documentElement.clientWidth;
mini.__LastWindowHeight = document.documentElement.clientHeight;
mini.doWindowResizeTimer = null;
mini.allowLayout = true;
mini_onresize = function(A) {
    if (mini.doWindowResizeTimer) clearTimeout(mini.doWindowResizeTimer);
    lOlo1 = mini.isWindowDisplay();
    if (lOlo1 == false || mini.allowLayout == false) return;
    if (typeof Ext != "undefined") mini.doWindowResizeTimer = setTimeout(function() {
        var _ = document.documentElement.clientWidth,
        $ = document.documentElement.clientHeight;
        if (mini.__LastWindowWidth == _ && mini.__LastWindowHeight == $);
        else {
            mini.__LastWindowWidth = _;
            mini.__LastWindowHeight = $;
            mini.layout(null, false)
        }
        mini.doWindowResizeTimer = null
    },
    300);
    else {
        var $ = 100;
        try {
            if (parent && parent != window && parent.mini) $ = 0
        } catch(_) {}
        mini.doWindowResizeTimer = setTimeout(function() {
            var _ = document.documentElement.clientWidth,
            $ = document.documentElement.clientHeight;
            if (mini.__LastWindowWidth == _ && mini.__LastWindowHeight == $);
            else {
                mini.__LastWindowWidth = _;
                mini.__LastWindowHeight = $;
                mini.layout(null, false)
            }
            mini.doWindowResizeTimer = null
        },
        $)
    }
};
mini[OolO10] = function(_, A) {
    var $ = A || document.body;
    while (1) {
        if (_ == null || !_.style) return false;
        if (_ && _.style && _.style.display == "none") return false;
        if (_ == $) return true;
        _ = _.parentNode
    }
    return true
};
mini.isWindowDisplay = function() {
    try {
        var _ = window.parent,
        E = _ != window;
        if (E) {
            var C = _.document.getElementsByTagName("iframe"),
            H = _.document.getElementsByTagName("frame"),
            G = [];
            for (var $ = 0,
            D = C.length; $ < D; $++) G.push(C[$]);
            for ($ = 0, D = H.length; $ < D; $++) G.push(H[$]);
            var B = null;
            for ($ = 0, D = G.length; $ < D; $++) {
                var A = G[$];
                if (A.contentWindow == window) {
                    B = A;
                    break
                }
            }
            if (!B) return false;
            return mini[OolO10](B, _.document.body)
        } else return true
    } catch(F) {
        return true
    }
};
lOlo1 = mini.isWindowDisplay();
mini.layoutIFrames = function($) {
    if (!$) $ = document.body;
    if (!$) return;
    var _ = $.getElementsByTagName("iframe");
    setTimeout(function() {
        for (var A = 0,
        C = _.length; A < C; A++) {
            var B = _[A];
            try {
                if (mini[OolO10](B) && ooll($, B)) {
                    if (B.contentWindow.mini) if (B.contentWindow.lOlo1 == false) {
                        B.contentWindow.lOlo1 = B.contentWindow.mini.isWindowDisplay();
                        B.contentWindow.mini.layout()
                    } else B.contentWindow.mini.layout(null, false);
                    B.contentWindow.mini.layoutIFrames()
                }
            } catch(D) {}
        }
    },
    30)
};
$.ajaxSetup({
    cache: false
});
if (isIE) setInterval(function() {
    CollectGarbage()
},
10000);
mini_unload = function(H) {
    try {
        var E = mini._getTopWindow();
        E[mini._WindowID] = "";
        delete E[mini._WindowID]
    } catch(D) {}
    var G = document.body.getElementsByTagName("iframe");
    if (G.length > 0) {
        var F = [];
        for (var $ = 0,
        C = G.length; $ < C; $++) F.push(G[$]);
        for ($ = 0, C = F.length; $ < C; $++) {
            try {
                var B = F[$];
                B._ondestroy = null;
                B.src = "";
                try {
                    B.contentWindow.document.write("");
                    B.contentWindow.document.close()
                } catch(D) {}
                if (B.parentNode) B.parentNode.removeChild(B)
            } catch(H) {}
        }
    }
    var A = mini.getComponents();
    for ($ = 0, C = A.length; $ < C; $++) {
        var _ = A[$];
        if (_.destroyed !== true) _[loooll](false)
    }
    A.length = 0;
    A = null;
    O01O(window, "unload", mini_unload);
    O01O(window, "load", mini_onload);
    O01O(window, "resize", mini_onresize);
    mini.components = {};
    mini.classes = {};
    mini.uiClasses = {};
    mini.uids = {};
    mini._topWindow = null;
    window.mini = null;
    window.Owner = null;
    window.CloseOwnerWindow = null;
    try {
        CollectGarbage()
    } catch(H) {}
};
oOO1l(window, "unload", mini_unload);
function __OnIFrameMouseDown() {
    jQuery(document).trigger("mousedown")
}
function _lOOo10() {
    var C = document.getElementsByTagName("iframe");
    for (var $ = 0,
    A = C.length; $ < A; $++) {
        var _ = C[$];
        try {
            if (_.contentWindow) _.contentWindow.document.onmousedown = __OnIFrameMouseDown
        } catch(B) {}
    }
}
setInterval(function() {
    _lOOo10()
},
1500);
mini.zIndex = 1000;
mini.getMaxZIndex = function() {
    return mini.zIndex++
};
function js_isTouchDevice() {
    try {
        document.createEvent("TouchEvent");
        return true
    } catch($) {
        return false
    }
}
function js_touchScroll(A) {
    if (js_isTouchDevice()) {
        var _ = typeof A == "string" ? document.getElementById(A) : A,
        $ = 0;
        _.addEventListener("touchstart",
        function(_) {
            $ = this.scrollTop + _.touches[0].pageY;
            _.preventDefault()
        },
        false);
        _.addEventListener("touchmove",
        function(_) {
            this.scrollTop = $ - _.touches[0].pageY;
            _.preventDefault()
        },
        false)
    }
}
mini._placeholder = function(A) {
    A = l00l(A);
    if (!A || !isIE || isIE10) return;
    function $() {
        var _ = A._placeholder_label;
        if (!_) return;
        var $ = A.getAttribute("placeholder");
        if (!$) $ = A.placeholder;
        if (!A.value && !A.disabled) {
            _.innerHTML = $;
            _.style.display = ""
        } else _.style.display = "none"
    }
    if (A._placeholder) {
        $();
        return
    }
    A._placeholder = true;
    var _ = document.createElement("label");
    _.className = "mini-placeholder-label";
    A.parentNode.appendChild(_);
    A._placeholder_label = _;
    _.onmousedown = function() {
        A[lo0OOl]()
    };
    A.onpropertychange = function(_) {
        _ = _ || window.event;
        if (_.propertyName == "value") $()
    };
    $();
    oOO1l(A, "focus",
    function($) {
        if (!A[Oo0o1l]) _.style.display = "none"
    });
    oOO1l(A, "blur",
    function(_) {
        $()
    })
};
mini.ajax = function($) {
    if (!$.dataType) $.dataType = "text";
    return window.jQuery.ajax($)
};
if (typeof window.rootpath == "undefined") rootpath = "/";
mini.loadJS = function(_, $) {
    if (!_) return;
    if (typeof $ == "function") return loadJS._async(_, $);
    else return loadJS._sync(_)
};
mini.loadJS._js = {};
mini.loadJS._async = function(D, _) {
    var C = mini.loadJS._js[D];
    if (!C) C = mini.loadJS._js[D] = {
        create: false,
        loaded: false,
        callbacks: []
    };
    if (C.loaded) {
        setTimeout(function() {
            _()
        },
        1);
        return
    } else {
        C.callbacks.push(_);
        if (C.create) return
    }
    C.create = true;
    var B = document.getElementsByTagName("head")[0],
    A = document.createElement("script");
    A.src = D;
    A.type = "text/javascript";
    function $() {
        for (var $ = 0; $ < C.callbacks.length; $++) {
            var _ = C.callbacks[$];
            if (_) _()
        }
        C.callbacks.length = 0
    }
    setTimeout(function() {
        if (document.all) A.onreadystatechange = function() {
            if (A.readyState == "loaded" || A.readyState == "complete") {
                $();
                C.loaded = true
            }
        };
        else A.onload = function() {
            $();
            C.loaded = true
        };
        B.appendChild(A)
    },
    1);
    return A
};
mini.loadJS._sync = function(A) {
    if (loadJS._js[A]) return;
    loadJS._js[A] = {
        create: true,
        loaded: true,
        callbacks: []
    };
    var _ = document.getElementsByTagName("head")[0],
    $ = document.createElement("script");
    $.type = "text/javascript";
    $.text = loadText(A);
    _.appendChild($);
    return $
};
mini.loadText = function(C) {
    var B = "",
    D = document.all && location.protocol == "file:",
    A = null;
    if (D) A = new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) A = new XMLHttpRequest();
    else if (window.ActiveXObject) A = new ActiveXObject("Microsoft.XMLHTTP");
    A.onreadystatechange = $;
    var _ = "_t=" + new Date()[O0olo1]();
    if (C[o0lllO]("?") == -1) _ = "?" + _;
    else _ = "&" + _;
    C += _;
    A.open("GET", C, false);
    A.send(null);
    function $() {
        if (A.readyState == 4) {
            var $ = D ? 0 : 200;
            if (A.status == $) B = A.responseText
        }
    }
    return B
};
mini.loadJSON = function(url) {
    var text = loadText(url),
    o = eval("(" + text + ")");
    return o
};
mini.loadCSS = function(A, B) {
    if (!A) return;
    if (loadCSS._css[A]) return;
    var $ = document.getElementsByTagName("head")[0],
    _ = document.createElement("link");
    if (B) _.id = B;
    _.href = A;
    _.rel = "stylesheet";
    _.type = "text/css";
    $.appendChild(_);
    return _
};
mini.loadCSS._css = {};
mini.innerHTML = function(A, _) {
    if (typeof A == "string") A = document.getElementById(A);
    if (!A) return;
    _ = "<div style=\"display:none\">&nbsp;</div>" + _;
    A.innerHTML = _;
    mini.__executeScripts(A);
    var $ = A.firstChild
};
mini.__executeScripts = function($) {
    var A = $.getElementsByTagName("script");
    for (var _ = 0,
    E = A.length; _ < E; _++) {
        var B = A[_],
        D = B.src;
        if (D) mini.loadJS(D);
        else {
            var C = document.createElement("script");
            C.type = "text/javascript";
            C.text = B.text;
            $.appendChild(C)
        }
    }
    for (_ = A.length - 1; _ >= 0; _--) {
        B = A[_];
        B.parentNode.removeChild(B)
    }
};
oO10Ol = function() {
    this._bindFields = [];
    this._bindForms = [];
    oO10Ol[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(oO10Ol, O101ol, {});
OlooO = oO10Ol[O010O1];
OlooO.lo0loO = l1l01;
OlooO.o01l1o = O11001;
OlooO[ll1l1O] = lO1oo;
OlooO[lO1OOl] = o0lll;
oloo(oO10Ol, "databinding");
o1l1Ol = function() {
    this._sources = {};
    this._data = {};
    this._links = [];
    this.l1l0O1 = {};
    o1l1Ol[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o1l1Ol, O101ol, {});
Oo1O1 = o1l1Ol[O010O1];
Oo1O1.o0ooo1 = o10lO;
Oo1O1.oOol1O = Oolol1;
Oo1O1.llOO1 = l11o;
Oo1O1.oO001 = o11ol;
Oo1O1.lO0loO = l0ll1;
Oo1O1.l01011 = oo10;
Oo1O1.lO0oO1 = l10oO;
Oo1O1[o1010o] = l1l11;
Oo1O1[Oo0011] = OO0O0;
Oo1O1[lOO1l1] = l1OO0;
Oo1O1[o0llo1] = lO110;
oloo(o1l1Ol, "dataset");
lO1OOO = function() {
    lO1OOO[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lO1OOO, o0oo1l, {
    _clearBorder: false,
    formField: true,
    value: "",
    uiCls: "mini-hidden"
});
oo0001 = lO1OOO[O010O1];
oo0001[o00O00] = lOo1;
oo0001[o0l0oO] = l1l1;
oo0001[O1lOO] = Oo1oOo;
oo0001[l111Ol] = oloo01;
oo0001[lO0l01] = l0O0l;
oloo(lO1OOO, "hidden");
OOo010 = function() {
    OOo010[lOO1lo][o1lOol][lOlOo1](this);
    this[ooOl10](false);
    this[OolOoO](this.allowDrag);
    this[O0ol11](this[O0lOlo])
};
O01o(OOo010, mini.Container, {
    _clearBorder: false,
    uiCls: "mini-popup"
});
OOll = OOo010[O010O1];
OOll[Ol1oO0] = OolOlo;
OOll[lOo10O] = oOlO1;
OOll[l1ll01] = l1lO;
OOll[lo01] = o00oO;
OOll[loooll] = oOO0lO;
OOll[O0lOl0] = lOo0lO;
OOll[oloOoo] = lOo11;
OOll[lO0l01] = loO01;
oloo(OOo010, "popup");
OOo010_prototype = {
    isPopup: false,
    popupEl: null,
    popupCls: "",
    showAction: "mouseover",
    hideAction: "outerclick",
    showDelay: 300,
    hideDelay: 500,
    xAlign: "left",
    yAlign: "below",
    xOffset: 0,
    yOffset: 0,
    minWidth: 50,
    minHeight: 25,
    maxWidth: 2000,
    maxHeight: 2000,
    showModal: false,
    showShadow: true,
    modalStyle: "opacity:0.2",
    O1o1l1: "mini-popup-drag",
    OOOol0: "mini-popup-resize",
    allowDrag: false,
    allowResize: false,
    Ol110o: function() {
        if (!this.popupEl) return;
        O01O(this.popupEl, "click", this.olooo, this);
        O01O(this.popupEl, "contextmenu", this.Oooo0o, this);
        O01O(this.popupEl, "mouseover", this.o0Ol, this)
    },
    l011O: function() {
        if (!this.popupEl) return;
        oOO1l(this.popupEl, "click", this.olooo, this);
        oOO1l(this.popupEl, "contextmenu", this.Oooo0o, this);
        oOO1l(this.popupEl, "mouseover", this.o0Ol, this)
    },
    doShow: function(A) {
        var $ = {
            popupEl: this.popupEl,
            htmlEvent: A,
            cancel: false
        };
        this[lOooO0]("BeforeOpen", $);
        if ($.cancel == true) return;
        this[lOooO0]("opening", $);
        if ($.cancel == true) return;
        if (!this.popupEl) this[loll01]();
        else {
            var _ = {};
            if (A) _.xy = [A.pageX, A.pageY];
            this[ol1l1l](this.popupEl, _)
        }
    },
    doHide: function(_) {
        var $ = {
            popupEl: this.popupEl,
            htmlEvent: _,
            cancel: false
        };
        this[lOooO0]("BeforeClose", $);
        if ($.cancel == true) return;
        this.close()
    },
    show: function(_, $) {
        this[lo0lol](_, $)
    },
    showAtPos: function(B, A) {
        this[oo00ol](document.body);
        if (!B) B = "center";
        if (!A) A = "middle";
        this.el.style.position = "absolute";
        this.el.style.left = "-2000px";
        this.el.style.top = "-2000px";
        this.el.style.display = "";
        this.O11O1o();
        var _ = mini[OOoo0O](),
        $ = O101o(this.el);
        if (B == "left") B = 0;
        if (B == "center") B = _.width / 2 - $.width / 2;
        if (B == "right") B = _.width - $.width;
        if (A == "top") A = 0;
        if (A == "middle") A = _.y + _.height / 2 - $.height / 2;
        if (A == "bottom") A = _.height - $.height;
        if (B + $.width > _.right) B = _.right - $.width;
        if (A + $.height > _.bottom) A = _.bottom - $.height - 20;
        this.Ol01ll(B, A)
    },
    lo101l: function() {
        jQuery(this.OOl1ol).remove();
        if (!this[O0lOol]) return;
        if (this.visible == false) return;
        var $ = document.documentElement,
        A = parseInt(Math[Oo10oo](document.body.scrollWidth, $ ? $.scrollWidth: 0)),
        D = parseInt(Math[Oo10oo](document.body.scrollHeight, $ ? $.scrollHeight: 0)),
        C = mini[OOoo0O](),
        B = C.height;
        if (B < D) B = D;
        var _ = C.width;
        if (_ < A) _ = A;
        this.OOl1ol = mini.append(document.body, "<div class=\"mini-modal\"></div>");
        this.OOl1ol.style.height = B + "px";
        this.OOl1ol.style.width = _ + "px";
        this.OOl1ol.style.zIndex = o00l(this.el, "zIndex") - 1;
        Olo0(this.OOl1ol, this.modalStyle)
    },
    OO0Oo1: function() {
        if (!this.shadowEl) this.shadowEl = mini.append(document.body, "<div class=\"mini-shadow\"></div>");
        this.shadowEl.style.display = this[o01111] ? "": "none";
        if (this[o01111]) {
            function $() {
                this.shadowEl.style.display = "";
                var $ = O101o(this.el),
                A = this.shadowEl.style;
                A.width = $.width + "px";
                A.height = $.height + "px";
                A.left = $.x + "px";
                A.top = $.y + "px";
                var _ = o00l(this.el, "zIndex");
                if (!isNaN(_)) this.shadowEl.style.zIndex = _ - 2
            }
            this.shadowEl.style.display = "none";
            if (this.OO0Oo1Timer) {
                clearTimeout(this.OO0Oo1Timer);
                this.OO0Oo1Timer = null
            }
            var _ = this;
            this.OO0Oo1Timer = setTimeout(function() {
                _.OO0Oo1Timer = null;
                $[lOlOo1](_)
            },
            20)
        }
    },
    O11O1o: function() {
        this.el.style.display = "";
        var $ = O101o(this.el);
        if ($.width > this.maxWidth) {
            ol1Olo(this.el, this.maxWidth);
            $ = O101o(this.el)
        }
        if ($.height > this.maxHeight) {
            O1llol(this.el, this.maxHeight);
            $ = O101o(this.el)
        }
        if ($.width < this.minWidth) {
            ol1Olo(this.el, this.minWidth);
            $ = O101o(this.el)
        }
        if ($.height < this.minHeight) {
            O1llol(this.el, this.minHeight);
            $ = O101o(this.el)
        }
    },
    showAtEl: function(H, D) {
        H = l00l(H);
        if (!H) return;
        if (!this[ool1ol]() || this.el.parentNode != document.body) this[oo00ol](document.body);
        var A = {
            xAlign: this.xAlign,
            yAlign: this.yAlign,
            xOffset: this.xOffset,
            yOffset: this.yOffset,
            popupCls: this.popupCls
        };
        mini.copyTo(A, D);
        l1ll1O(H, A.popupCls);
        H.popupCls = A.popupCls;
        this._popupEl = H;
        this.el.style.position = "absolute";
        this.el.style.left = "-2000px";
        this.el.style.top = "-2000px";
        this.el.style.display = "";
        this[O0lOl0]();
        this.O11O1o();
        var J = mini[OOoo0O](),
        B = O101o(this.el),
        L = O101o(H),
        F = A.xy,
        C = A.xAlign,
        E = A.yAlign,
        M = J.width / 2 - B.width / 2,
        K = 0;
        if (F) {
            M = F[0];
            K = F[1]
        }
        switch (A.xAlign) {
        case "outleft":
            M = L.x - B.width;
            break;
        case "left":
            M = L.x;
            break;
        case "center":
            M = L.x + L.width / 2 - B.width / 2;
            break;
        case "right":
            M = L.right - B.width;
            break;
        case "outright":
            M = L.right;
            break;
        default:
            break
        }
        switch (A.yAlign) {
        case "above":
            K = L.y - B.height;
            break;
        case "top":
            K = L.y;
            break;
        case "middle":
            K = L.y + L.height / 2 - B.height / 2;
            break;
        case "bottom":
            K = L.bottom - B.height;
            break;
        case "below":
            K = L.bottom;
            break;
        default:
            break
        }
        M = parseInt(M);
        K = parseInt(K);
        if (A.outYAlign || A.outXAlign) {
            if (A.outYAlign == "above") if (K + B.height > J.bottom) {
                var _ = L.y - J.y,
                I = J.bottom - L.bottom;
                if (_ > I) K = L.y - B.height
            }
            if (A.outXAlign == "outleft") if (M + B.width > J.right) {
                var G = L.x - J.x,
                $ = J.right - L.right;
                if (G > $) M = L.x - B.width
            }
            if (A.outXAlign == "right") if (M + B.width > J.right) M = L.right - B.width;
            this.Ol01ll(M, K)
        } else this[lo0lol](M + A.xOffset, K + A.yOffset)
    },
    Ol01ll: function(A, _) {
        this.el.style.display = "";
        this.el.style.zIndex = mini.getMaxZIndex();
        mini.setX(this.el, A);
        mini.setY(this.el, _);
        this[ooOl10](true);
        if (this.hideAction == "mouseout") oOO1l(document, "mousemove", this.o00O1, this);
        var $ = this;
        this.OO0Oo1();
        this.lo101l();
        mini.layoutIFrames(this.el);
        this.isPopup = true;
        oOO1l(document, "mousedown", this.ol0o11, this);
        oOO1l(window, "resize", this.oloOol, this);
        this[lOooO0]("Open")
    },
    open: function() {
        this[loll01]()
    },
    close: function() {
        this[l10101]()
    },
    hide: function() {
        if (!this.el) return;
        if (this.popupEl) lOolO(this.popupEl, this.popupEl.popupCls);
        if (this._popupEl) lOolO(this._popupEl, this._popupEl.popupCls);
        this._popupEl = null;
        jQuery(this.OOl1ol).remove();
        if (this.shadowEl) this.shadowEl.style.display = "none";
        O01O(document, "mousemove", this.o00O1, this);
        O01O(document, "mousedown", this.ol0o11, this);
        O01O(window, "resize", this.oloOol, this);
        this[ooOl10](false);
        this.isPopup = false;
        this[lOooO0]("Close")
    },
    setPopupEl: function($) {
        $ = l00l($);
        if (!$) return;
        this.Ol110o();
        this.popupEl = $;
        this.l011O()
    },
    setPopupCls: function($) {
        this.popupCls = $
    },
    setShowAction: function($) {
        this.showAction = $
    },
    setHideAction: function($) {
        this.hideAction = $
    },
    setShowDelay: function($) {
        this.showDelay = $
    },
    setHideDelay: function($) {
        this.hideDelay = $
    },
    setXAlign: function($) {
        this.xAlign = $
    },
    setYAlign: function($) {
        this.yAlign = $
    },
    setxOffset: function($) {
        $ = parseInt($);
        if (isNaN($)) $ = 0;
        this.xOffset = $
    },
    setyOffset: function($) {
        $ = parseInt($);
        if (isNaN($)) $ = 0;
        this.yOffset = $
    },
    setShowModal: function($) {
        this[O0lOol] = $
    },
    setShowShadow: function($) {
        this[o01111] = $
    },
    setMinWidth: function($) {
        if (isNaN($)) return;
        this.minWidth = $
    },
    setMinHeight: function($) {
        if (isNaN($)) return;
        this.minHeight = $
    },
    setMaxWidth: function($) {
        if (isNaN($)) return;
        this.maxWidth = $
    },
    setMaxHeight: function($) {
        if (isNaN($)) return;
        this.maxHeight = $
    },
    setAllowDrag: function($) {
        this.allowDrag = $;
        lOolO(this.el, this.O1o1l1);
        if ($) l1ll1O(this.el, this.O1o1l1)
    },
    setAllowResize: function($) {
        this[O0lOlo] = $;
        lOolO(this.el, this.OOOol0);
        if ($) l1ll1O(this.el, this.OOOol0)
    },
    olooo: function(_) {
        if (this.O011ol) return;
        if (this.showAction != "leftclick") return;
        var $ = jQuery(this.popupEl).attr("allowPopup");
        if (String($) == "false") return;
        this.doShow(_)
    },
    Oooo0o: function(_) {
        if (this.O011ol) return;
        if (this.showAction != "rightclick") return;
        var $ = jQuery(this.popupEl).attr("allowPopup");
        if (String($) == "false") return;
        _.preventDefault();
        this.doShow(_)
    },
    o0Ol: function(A) {
        if (this.O011ol) return;
        if (this.showAction != "mouseover") return;
        var _ = jQuery(this.popupEl).attr("allowPopup");
        if (String(_) == "false") return;
        clearTimeout(this._hideTimer);
        this._hideTimer = null;
        if (this.isPopup) return;
        var $ = this;
        this._showTimer = setTimeout(function() {
            $.doShow(A)
        },
        this.showDelay)
    },
    o00O1: function($) {
        if (this.hideAction != "mouseout") return;
        this.OO1O0O($)
    },
    ol0o11: function($) {
        if (this.hideAction != "outerclick") return;
        if (!this.isPopup) return;
        if (this[lloo0o]($) || (this.popupEl && ooll(this.popupEl, $.target)));
        else this.doHide($)
    },
    OO1O0O: function(_) {
        if (ooll(this.el, _.target) || (this.popupEl && ooll(this.popupEl, _.target)));
        else {
            clearTimeout(this._showTimer);
            this._showTimer = null;
            if (this._hideTimer) return;
            var $ = this;
            this._hideTimer = setTimeout(function() {
                $.doHide(_)
            },
            this.hideDelay)
        }
    },
    oloOol: function($) {
        if (this[OolO10]() && !mini.isIE6) this.lo101l()
    },
    within: function(C) {
        if (ooll(this.el, C.target)) return true;
        var $ = mini.getChildControls(this);
        for (var _ = 0,
        B = $.length; _ < B; _++) {
            var A = $[_];
            if (A[lloo0o](C)) return true
        }
        return false
    }
};
mini.copyTo(OOo010.prototype, OOo010_prototype);
l0O0oO = function() {
    l0O0oO[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(l0O0oO, o0oo1l, {
    text: "",
    iconCls: "",
    iconStyle: "",
    plain: false,
    checkOnClick: false,
    checked: false,
    groupName: "",
    OO0O1o: "mini-button-plain",
    _hoverCls: "mini-button-hover",
    Oll0Ol: "mini-button-pressed",
    l0o000: "mini-button-checked",
    O10ooo: "mini-button-disabled",
    allowCls: "",
    _clearBorder: false,
    uiCls: "mini-button",
    href: "",
    target: ""
});
olO1 = l0O0oO[O010O1];
olO1[Ol1oO0] = o0oO0;
olO1[ol0O00] = o0110;
olO1.o1O01o = l0olo;
olO1.Oll11o = Oo1o;
olO1.Olllo1 = oo0lo;
olO1[lo0O0O] = lolO1;
olO1[lOoloO] = OoOOO1;
olO1[lOl01O] = llO0ol;
olO1[o1O001] = oO1lo1;
olO1[OO00OO] = ollo1;
olO1[OloOO] = llOoO;
olO1[lOoooO] = oOlOOO;
olO1[ol101O] = o01lOo;
olO1[O0Ol0O] = oO0lO1;
olO1[O0oO00] = l1l00O;
olO1[loll1o] = lO01o;
olO1[oOOOOO] = OoOll;
olO1[O1Oo1O] = o01ol;
olO1[o0OOl0] = ll0l;
olO1[O0Ol01] = l1OOl;
olO1[o0OlO0] = llo1o;
olO1[O0l111] = l0o00;
olO1[lll1lO] = o0loo;
olO1[Olo000] = o111o;
olO1[ooo0O1] = O0O0;
olO1[loO1ol] = OOoo;
olO1[olOOll] = oo1lo;
olO1[loooll] = o0ll11;
olO1[oloOoo] = Ooo0;
olO1[lO0l01] = ool0Oo;
olO1[l1OOl1] = l10lO;
oloo(l0O0oO, "button");
OO1l01 = function() {
    OO1l01[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(OO1l01, l0O0oO, {
    uiCls: "mini-menubutton",
    allowCls: "mini-button-menu"
});
O100o = OO1l01[O010O1];
O100o[O0O0o0] = oOOOo;
O100o[oO1O11] = ooloO;
oloo(OO1l01, "menubutton");
mini.SplitButton = function() {
    mini.SplitButton[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.SplitButton, OO1l01, {
    uiCls: "mini-splitbutton",
    allowCls: "mini-button-split"
});
oloo(mini.SplitButton, "splitbutton");
Oo0l0o = function() {
    Oo0l0o[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(Oo0l0o, o0oo1l, {
    formField: true,
    _clearText: false,
    text: "",
    checked: false,
    defaultValue: false,
    trueValue: true,
    falseValue: false,
    uiCls: "mini-checkbox"
});
O0110l = Oo0l0o[O010O1];
O0110l[Ol1oO0] = ool10;
O0110l.oo11l = OlO0O;
O0110l[lOo0Oo] = O1lo;
O0110l[l1lO0l] = lO10OO;
O0110l[OolllO] = lloOO;
O0110l[llllo] = OloloO;
O0110l[o00O00] = o1lOO;
O0110l[o0l0oO] = l01o0;
O0110l[O1lOO] = OO00l;
O0110l[lOoloO] = oO1ol;
O0110l[lOl01O] = ol1o1;
O0110l[o0OlO0] = lollO;
O0110l[O0l111] = l1l0o;
O0110l[l111Ol] = OoO1OO;
O0110l[oloOoo] = oO101;
O0110l[loooll] = oO1oO;
O0110l[lO0l01] = o1000;
oloo(Oo0l0o, "checkbox");
oolOl1 = function() {
    oolOl1[lOO1lo][o1lOol][lOlOo1](this);
    var $ = this[OO11O1]();
    if ($ || this.allowInput == false) this.oooo1O[Oo0o1l] = true;
    if (this.enabled == false) this[o1olO1](this.O10ooo);
    if ($) this[o1olO1](this.O1oO1O);
    if (this.required) this[o1olO1](this.l00100)
};
O01o(oolOl1, lOOO0o, {
    name: "",
    formField: true,
    selectOnFocus: false,
    showClose: false,
    emptyText: "",
    defaultValue: "",
    value: "",
    text: "",
    maxLength: 1000,
    minLength: 0,
    height: 21,
    inputAsValue: false,
    allowInput: true,
    lO0lO0: "mini-buttonedit-noInput",
    O1oO1O: "mini-buttonedit-readOnly",
    O10ooo: "mini-buttonedit-disabled",
    oOOOlO: "mini-buttonedit-empty",
    O0l1: "mini-buttonedit-focus",
    OoOooo: "mini-buttonedit-button",
    Ol111o: "mini-buttonedit-button-hover",
    lOl1: "mini-buttonedit-button-pressed",
    _closeCls: "mini-buttonedit-close",
    uiCls: "mini-buttonedit",
    oOO11O: false,
    _buttonWidth: 20,
    _closeWidth: 20,
    OO0l0: null,
    textName: "",
    inputStyle: ""
});
ooOlO = oolOl1[O010O1];
ooOlO[Ol1oO0] = Oooll;
ooOlO[o0011l] = ool1O;
ooOlO[loo1lo] = ol100;
ooOlO[O00OlO] = lO000;
ooOlO[O10loO] = O0l1o1;
ooOlO[o101lO] = loO0O1;
ooOlO[oOo0o0] = l0l00;
ooOlO[llOlOO] = ll1o1;
ooOlO[olO0oo] = lOOll;
ooOlO[oll010] = l0loO;
ooOlO[lo0l1o] = OOl10;
ooOlO.llo1Ol = l0101;
ooOlO.oOlOOo = l01o;
ooOlO.o1ol = oOoOo;
ooOlO.l00Olo = O0001;
ooOlO.l01O0 = l11Ol;
ooOlO.l10oo0 = olOOl;
ooOlO.Oo0o = O1OO1;
ooOlO[l100ll] = lloOo;
ooOlO[oo01l1] = O10l1;
ooOlO.OoOl = O0ol0;
ooOlO.o1O01o = l11l0;
ooOlO.Oll11o = olOl1;
ooOlO.Olllo1 = loo01O;
ooOlO.o11olo = O110o;
ooOlO[OoOl10] = o01OO1;
ooOlO[O0O1o1] = oo0l1;
ooOlO[lOOOO0] = o1Ool;
ooOlO[Ol1llO] = OO1oo;
ooOlO[ooOlo0] = o1OO;
ooOlO.O0lo = oOOlo;
ooOlO[O0O0o0] = oloOO;
ooOlO[O0ll0l] = lOoOO;
ooOlO[l000o0] = ll0l0;
ooOlO[Oll0l0] = ll1ol;
ooOlO[o1l0l1] = looo1;
ooOlO[oOo0l0] = O1l1O;
ooOlO[o1O111] = Oo0O0;
ooOlO.o1lo0O = olOo1;
ooOlO[o00O00] = llo00;
ooOlO[o0l0oO] = oool0;
ooOlO[O1lOO] = Oo000;
ooOlO[o0OlO0] = l1001;
ooOlO[O0l111] = O1Ool;
ooOlO[l111Ol] = l1101;
ooOlO[olO01l] = l1001El;
ooOlO[Ool00l] = Oolol;
ooOlO[Oo10Oo] = lO0lO;
ooOlO[lo0OOl] = l1OOo;
ooOlO[l1ll01] = oo0oOO;
ooOlO[O0lOl0] = oo00O;
ooOlO[O10Ool] = Ol1ol;
ooOlO.oo1O = oO0lO;
ooOlO[oloOoo] = ooOl0;
ooOlO[loooll] = lO11lO;
ooOlO[lO0l01] = ol0oO;
ooOlO.oO11lOHtml = oO1O1;
ooOlO.oO11lOsHTML = Ooo0O;
ooOlO[l1OOl1] = o1ll0;
oloo(oolOl1, "buttonedit");
l110o1 = function() {
    l110o1[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(l110o1, lOOO0o, {
    name: "",
    formField: true,
    selectOnFocus: false,
    minWidth: 10,
    minHeight: 15,
    maxLength: 5000,
    emptyText: "",
    text: "",
    value: "",
    defaultValue: "",
    height: 21,
    oOOOlO: "mini-textbox-empty",
    O0l1: "mini-textbox-focus",
    O10ooo: "mini-textbox-disabled",
    uiCls: "mini-textbox",
    lOo1O: "text",
    oOO11O: false,
    _placeholdered: false,
    OO0l0: null,
    inputStyle: "",
    vtype: ""
});
loo1 = l110o1[O010O1];
loo1[ooolo1] = ll1o0o;
loo1[o11OOO] = l00lO;
loo1[O0o01l] = oOo1o;
loo1[OO0lol] = l1l0;
loo1[ollOol] = l010O;
loo1[l0oolO] = o110ll;
loo1[lolo1o] = llO00;
loo1[O1oo11] = lo1oo;
loo1[O1O01o] = oOol1;
loo1[ooOol0] = OOoll;
loo1[OlooOO] = ol111;
loo1[oO00l0] = lllO1;
loo1[lO0oOO] = oO1Oo;
loo1[l0110o] = OOoo0;
loo1[lo1OO1] = OoO1l;
loo1[lo1O0l] = lool0;
loo1[O0o0lo] = ool11;
loo1[o0l10l] = Ooo0l1;
loo1[Oo0ooO] = l0ool;
loo1[OO1Oll] = OlO1o0;
loo1[ol1oo1] = O100l;
loo1[OolO1o] = l0o1;
loo1[llooOO] = OOO10;
loo1[O11O0O] = O1o01O;
loo1.O0l1l0 = o0loO;
loo1[Olol0l] = o0l01;
loo1[o1l1lO] = O01O1;
loo1[Ol1oO0] = O1O1O;
loo1[o0011l] = loO1O1;
loo1.Oo0o = Oo1OoO;
loo1.OoOl = lllOO;
loo1.o1ol = OOl1O;
loo1.l00Olo = loOOOo;
loo1.l10oo0 = looll;
loo1.lo0olo = ll11O;
loo1.l01O0 = Oo0O0o;
loo1.Oll11o = lllol;
loo1.o11olo = llOoo;
loo1[OoOl10] = ooooo1;
loo1[O10loO] = l0o0O;
loo1[o101lO] = lo110;
loo1[ooo010] = OO11O;
loo1[olO01l] = l0oOO;
loo1[Ool00l] = oolOl;
loo1[Oo10Oo] = oOol;
loo1[lo0OOl] = lo11l;
loo1[olOOll] = lOoll1;
loo1[O0O0o0] = Oo0l1;
loo1[O11Oo0] = l0Oo;
loo1[Oll0l0] = llll;
loo1.l1llOl = ooo1l;
loo1[o1l0l1] = ol010;
loo1[oOo0l0] = olO0;
loo1[o1O111] = Oll1l;
loo1.o1lo0O = ol11OO;
loo1[Ol1llO] = oOol0;
loo1[ooOlo0] = O0loo;
loo1[o00O00] = l10lo;
loo1[o0l0oO] = O0o0lO;
loo1[O1lOO] = O01lo;
loo1[l111Ol] = lo1O0;
loo1[l1ll01] = l11lO;
loo1[O0lOl0] = O00ll;
loo1[loooll] = ol00O;
loo1.oo1O = oo0ll;
loo1[oloOoo] = oO0Oo;
loo1[lO0l01] = o0o0l0;
oloo(l110o1, "textbox");
OOo000 = function() {
    OOo000[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(OOo000, l110o1, {
    uiCls: "mini-password",
    lOo1O: "password"
});
OoloO = OOo000[O010O1];
OoloO[o1O111] = oO1o0;
oloo(OOo000, "password");
Olooo1 = function() {
    Olooo1[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(Olooo1, l110o1, {
    maxLength: 10000000,
    height: "",
    minHeight: 50,
    lOo1O: "textarea",
    uiCls: "mini-textarea"
});
ll00Oo = Olooo1[O010O1];
ll00Oo[O0lOl0] = oo1O1;
oloo(Olooo1, "textarea");
l1ll1o = function() {
    l1ll1o[lOO1lo][o1lOol][lOlOo1](this);
    this[l0O101]();
    this.el.className += " mini-popupedit"
};
O01o(l1ll1o, oolOl1, {
    uiCls: "mini-popupedit",
    popup: null,
    popupCls: "mini-buttonedit-popup",
    _hoverCls: "mini-buttonedit-hover",
    Oll0Ol: "mini-buttonedit-pressed",
    _destroyPopup: true,
    popupWidth: "100%",
    popupMinWidth: 50,
    popupMaxWidth: 2000,
    popupHeight: "",
    popupMinHeight: 30,
    popupMaxHeight: 2000,
    ajaxType: ""
});
O1Oll = l1ll1o[O010O1];
O1Oll[Ol1oO0] = O001O;
O1Oll[lo1ooO] = lOOlo;
O1Oll[o01000] = o01OO;
O1Oll.o0O1o0 = oll0O;
O1Oll.Olllo1 = o1l10;
O1Oll[O101oo] = O0O1o;
O1Oll[Ol0OO1] = olO1O;
O1Oll[l010Oo] = o0ll;
O1Oll[Olool1] = ol10lo;
O1Oll[Olooo0] = o000o;
O1Oll[o1o1oo] = OllOl;
O1Oll[lOO1O] = llOlO;
O1Oll[o01lll] = lolo00;
O1Oll[OOl000] = oo0ol;
O1Oll[OoO0o0] = O0Ooo;
O1Oll[Oooll0] = oo01l;
O1Oll[lO0llO] = Ol00o0;
O1Oll[ooll11] = O0l0l;
O1Oll[O1o1ol] = O1O00o;
O1Oll.l0Ol1o = oOOo0;
O1Oll[ll1olo] = o1l01;
O1Oll[O0lOl0] = oo01o;
O1Oll[Ol0o01] = lOooO;
O1Oll.Olol = lO1Ol;
O1Oll.l0l1l = l0O0;
O1Oll[l0O101] = O00Oo;
O1Oll[ll0O11] = O01Oo;
O1Oll[ol11lO] = O0lllO;
O1Oll[lloo0o] = Oll0O;
O1Oll.l10oo0 = OO0o0;
O1Oll.Oll11o = O1Ol;
O1Oll.ll0ool = l1ool;
O1Oll.o0Ol = OOoO1;
O1Oll.Oo0o = l1oo0;
O1Oll.OolO00 = Ololo;
O1Oll[oloOoo] = lOl0O;
O1Oll[loooll] = OolO1;
oloo(l1ll1o, "popupedit");
o1OO1o = function() {
    this.data = [];
    this.columns = [];
    o1OO1o[lOO1lo][o1lOol][lOlOo1](this);
    var $ = this;
    if (isFirefox) this.oooo1O.oninput = function() {
        $.Ol1Ol()
    }
};
O01o(o1OO1o, l1ll1o, {
    text: "",
    value: "",
    valueField: "id",
    textField: "text",
    delimiter: ",",
    multiSelect: false,
    data: [],
    url: "",
    columns: [],
    allowInput: false,
    valueFromSelect: false,
    popupMaxHeight: 200,
    uiCls: "mini-combobox",
    showNullItem: false
});
O11o1 = o1OO1o[O010O1];
O11o1[Ol1oO0] = lo011l;
O11o1.l01O0 = o0lOo;
O11o1[l1lo01] = oo0Olo;
O11o1.l0Ol1o = o01Oll;
O11o1.l01OO1 = Ol1l;
O11o1.Ol1Ol = O0l1O;
O11o1.o1ol = Oo0O1;
O11o1.l00Olo = ll10O;
O11o1.l10oo0 = llOol;
O11o1.o11l = OO11l;
O11o1[O100O1] = OoOo1;
O11o1[O1oll] = lOo0;
O11o1[l1OOlO] = lOo0s;
O11o1.oO1O1l = O00Ol;
O11o1[l1o0lO] = ooo1o;
O11o1[o00oOl] = llll0;
O11o1[Oo10l1] = Oo0l0;
O11o1[o0100o] = lllo0;
O11o1[l1OO0l] = olo0o;
O11o1[loo1l1] = lll0;
O11o1[O0o0Oo] = oooo0;
O11o1[l0100] = oOool;
O11o1[l1o1OO] = looO;
O11o1[Oo1O11] = l0oo;
O11o1[O1lOO] = O1O0l;
O11o1[o00100] = ll1lo;
O11o1[l10l0O] = o0l0o;
O11o1[O00lo0] = Ool0o;
O11o1[ol0011] = lol00;
O11o1[lloO00] = l01o1;
O11o1[o0l0O1] = O1O0lField;
O11o1[Olo01l] = OOlo;
O11o1[oOl00O] = O0O0l;
O11o1[o1010o] = l1ll;
O11o1[O0OOlO] = O10111;
O11o1[lol010] = o1ooll;
O11o1[Ol1l0l] = lo1O;
O11o1[OoOO11] = OoooO;
O11o1[o0lllO] = lOol;
O11o1[llo0o0] = oOOO1;
O11o1[ololO1] = l1O00;
O11o1[Ol0o01] = o1Ol0l;
O11o1[l0O101] = l0oo01;
O11o1[l1OOl1] = Ooo0ol;
oloo(o1OO1o, "combobox");
lo1lo1 = function() {
    lo1lo1[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lo1lo1, l1ll1o, {
    format: "yyyy-MM-dd",
    maxDate: null,
    minDate: null,
    popupWidth: "",
    viewDate: new Date(),
    showTime: false,
    timeFormat: "H:mm",
    showTodayButton: true,
    showClearButton: true,
    showOkButton: false,
    uiCls: "mini-datepicker",
    valueFormat: "",
    nullValue: ""
});
oOl11 = lo1lo1[O010O1];
oOl11[Ol1oO0] = lOlOO;
oOl11.l10oo0 = oOl10;
oOl11.l01O0 = ll100;
oOl11[O11o1l] = ol11l;
oOl11[Oo000O] = lOloO;
oOl11[lo1l0l] = o0o00;
oOl11[Ol1OOl] = lo11lo;
oOl11[o1Ollo] = oO01o;
oOl11[Olo0Ol] = lolo1;
oOl11[o0oO1l] = O1lo1;
oOl11[l1oO01] = loO1o;
oOl11[OlOo10] = olo1o;
oOl11[lOO1Oo] = ol0Oo;
oOl11[lOlOOO] = o101l;
oOl11[o0ool0] = Ol11l;
oOl11[Oo0lO1] = l0ooo;
oOl11[lO1ll1] = o00o0;
oOl11[Ool1O1] = OOl1l;
oOl11[o1OO11] = ollo0;
oOl11[o00O00] = lo0lo;
oOl11[o0l0oO] = o1ool;
oOl11[O1lOO] = o1010;
oOl11[OOolo1] = O111;
oOl11[lO010O] = lOOl0;
oOl11[loollo] = o1oolFormat;
oOl11[lo1l1l] = o1010Format;
oOl11[oOOOl0] = Oo1oO;
oOl11[olOO0l] = Oo0oo;
oOl11.OlOo1o = l0O01;
oOl11.l001O = lO11O;
oOl11.lol1 = OOOO;
oOl11.Olol = ooo10;
oOl11[lloo0o] = o111O;
oOl11[O1o1ol] = ol0O;
oOl11[Ol0o01] = lO1o1;
oOl11[l0O101] = ll0ol;
oOl11[loooll] = O0OOo;
oOl11[ooo0] = ll1O1;
oloo(lo1lo1, "datepicker");
OOo100 = function() {
    this.viewDate = new Date();
    this.o0110O = [];
    OOo100[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(OOo100, o0oo1l, {
    width: 220,
    height: 160,
    _clearBorder: false,
    viewDate: null,
    loll0O: "",
    o0110O: [],
    multiSelect: false,
    firstDayOfWeek: 0,
    todayText: "Today",
    clearText: "Clear",
    okText: "OK",
    cancelText: "Cancel",
    daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    format: "MMM,yyyy",
    timeFormat: "H:mm",
    showTime: false,
    currentTime: true,
    rows: 1,
    columns: 1,
    headerCls: "",
    bodyCls: "",
    footerCls: "",
    OlOo: "mini-calendar-today",
    O111ol: "mini-calendar-weekend",
    OOll1l: "mini-calendar-othermonth",
    l1OOoo: "mini-calendar-selected",
    showHeader: true,
    showFooter: true,
    showWeekNumber: false,
    showDaysHeader: true,
    showMonthButtons: true,
    showYearButtons: true,
    showTodayButton: true,
    showClearButton: true,
    showOkButton: false,
    uiCls: "mini-calendar",
    menuEl: null,
    menuYear: null,
    menuSelectMonth: null,
    menuSelectYear: null
});
l0ool0 = OOo100[O010O1];
l0ool0[Ol1oO0] = o11Oo0;
l0ool0.oO1O1l = oOOO0l;
l0ool0.lo0ooO = o0o1;
l0ool0.OlOo1o = looo0;
l0ool0.Oll11o = lo0o1O;
l0ool0.Olllo1 = ol1O1;
l0ool0.Ol0101 = o0oo0o;
l0ool0.llO1 = l11O1o;
l0ool0[OOo0O1] = lol1o;
l0ool0[l101Ol] = oo1o0;
l0ool0[looll0] = o1Oll;
l0ool0.o1lolO = lo1Oll;
l0ool0.O110 = loO1l;
l0ool0.olO1OO = l0OO0;
l0ool0[olOOll] = ll0ll;
l0ool0[O0lOl0] = O1O0O;
l0ool0[lOlOOO] = O000;
l0ool0[o0ool0] = l0llO;
l0ool0[Oo0lO1] = oOolO;
l0ool0[lO1ll1] = ll1o1l;
l0ool0[O0o0Oo] = o010o1;
l0ool0[l0100] = oo1o;
l0ool0[Ol0oO1] = O0o1;
l0ool0[O0111o] = o0oOl;
l0ool0[l1o1OO] = o11O;
l0ool0[Oo1O11] = O101;
l0ool0[O1o110] = O0oo;
l0ool0[o00O00] = Oo01l;
l0ool0[o0l0oO] = l11O0;
l0ool0[O1lOO] = l0Oo1;
l0ool0[O0olo1] = o00O1O;
l0ool0[o11OO0] = Ol01o;
l0ool0[oo1OO1] = lOl0l;
l0ool0[oo0l1l] = loooo;
l0ool0[o01l1l] = loOl0;
l0ool0[Ool1O1] = ol0l01;
l0ool0[o1OO11] = lll10;
l0ool0[o1Ollo] = oOOlO;
l0ool0[Olo0Ol] = l0O1o;
l0ool0[o0oO1l] = lll1O;
l0ool0[l1oO01] = OloOo;
l0ool0[OlOo10] = lOll;
l0ool0[lOO1Oo] = O0OOO;
l0ool0[OlloOl] = oooO1;
l0ool0[ll10o1] = lOlol;
l0ool0[o110Ol] = Ol0l;
l0ool0[looo0O] = lO1O1;
l0ool0[l1oO0l] = oO1Olo;
l0ool0[lll1OO] = Olo10;
l0ool0[oOoOo0] = o1oo1;
l0ool0[o0o0lO] = lo0ol;
l0ool0[ll11l0] = o1O0oO;
l0ool0[o1Ol1] = looOO;
l0ool0[Ololo1] = oOl1Ol;
l0ool0[lO10O0] = llOl1l;
l0ool0[lloo0o] = ol0OlO;
l0ool0[o00lll] = llOOl;
l0ool0[oloOoo] = OllOO;
l0ool0[loooll] = l1OOO;
l0ool0[lo0OOl] = o1ol1;
l0ool0[lO0l01] = o100o;
l0ool0[O1Ol00] = l01oo0;
l0ool0[O0oOo0] = ll1OO;
l0ool0[l1o0Ol] = l01oo;
oloo(OOo100, "calendar");
oo000o = function() {
    oo000o[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(oo000o, o0ol1O, {
    formField: true,
    width: 200,
    columns: null,
    columnWidth: 80,
    showNullItem: false,
    nullItemText: "",
    showEmpty: false,
    emptyText: "",
    showCheckBox: false,
    showAllCheckBox: true,
    multiSelect: false,
    showColumns: true,
    l10oo: "mini-listbox-item",
    ll00l1: "mini-listbox-item-hover",
    _OolOoo: "mini-listbox-item-selected",
    uiCls: "mini-listbox"
});
o0oo0 = oo000o[O010O1];
o0oo0[Ol1oO0] = OO1oo1;
o0oo0.Olllo1 = oooo;
o0oo0.OllOl1 = l0l10l;
o0oo0.Ol0O0 = o0Oo1;
o0oo0.Ooo0lO = loOo10;
o0oo0[Oo10l1] = o010O;
o0oo0[o0100o] = O0000;
o0oo0[l1OO0l] = o0O0;
o0oo0[loo1l1] = lOoo0;
o0oo0[lO100o] = OlOll;
o0oo0[O01o0l] = oO0oo;
o0oo0[Ol0Oll] = OOooo;
o0oo0[ol1l00] = l00oO;
o0oo0[l1lo1l] = OO1o;
o0oo0[O1llOo] = llOlo;
o0oo0[O0lOl0] = Ool1oo;
o0oo0[olOOll] = O1oo1;
o0oo0[O0o0Oo] = o110o;
o0oo0[l0100] = lO0OO;
o0oo0[loooll] = l1ll0;
o0oo0[oloOoo] = ool0l;
o0oo0[lO0l01] = Ol1o;
oloo(oo000o, "listbox");
O1oOo1 = function() {
    O1oOo1[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(O1oOo1, o0ol1O, {
    formField: true,
    multiSelect: true,
    repeatItems: 0,
    repeatLayout: "none",
    repeatDirection: "horizontal",
    l10oo: "mini-checkboxlist-item",
    ll00l1: "mini-checkboxlist-item-hover",
    _OolOoo: "mini-checkboxlist-item-selected",
    O00l1o: "mini-checkboxlist-table",
    o1o0lo: "mini-checkboxlist-td",
    lo1loO: "checkbox",
    uiCls: "mini-checkboxlist"
});
l0OOO = O1oOo1[O010O1];
l0OOO[Ol1oO0] = oOOl0;
l0OOO[o0oO] = l0l1o;
l0OOO[o0l0o1] = O0o0O;
l0OOO[OO1lol] = oO1O0;
l0OOO[O1ooOO] = lllO0;
l0OOO[Ol101O] = Olo00;
l0OOO[lOl10O] = OO1O1;
l0OOO.O0O11O = l11lo;
l0OOO.l1l1o1 = oO110;
l0OOO[olOOll] = lo10o;
l0OOO.OOll00 = oo1o1;
l0OOO[lO0l01] = OOOOl;
oloo(O1oOo1, "checkboxlist");
o1O0oo = function() {
    o1O0oo[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o1O0oo, O1oOo1, {
    multiSelect: false,
    l10oo: "mini-radiobuttonlist-item",
    ll00l1: "mini-radiobuttonlist-item-hover",
    _OolOoo: "mini-radiobuttonlist-item-selected",
    O00l1o: "mini-radiobuttonlist-table",
    o1o0lo: "mini-radiobuttonlist-td",
    lo1loO: "radio",
    uiCls: "mini-radiobuttonlist"
});
l1ooO = o1O0oo[O010O1];
oloo(o1O0oo, "radiobuttonlist");
lll0ll = function() {
    this.data = [];
    lll0ll[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lll0ll, l1ll1o, {
    valueFromSelect: false,
    text: "",
    value: "",
    autoCheckParent: false,
    expandOnLoad: false,
    valueField: "id",
    textField: "text",
    nodesField: "children",
    delimiter: ",",
    multiSelect: false,
    data: [],
    url: "",
    allowInput: false,
    showTreeIcon: false,
    showTreeLines: true,
    resultAsTree: false,
    parentField: "pid",
    checkRecursive: false,
    showFolderCheckBox: false,
    popupHeight: 200,
    popupWidth: "100%",
    popupMaxHeight: 250,
    popupMinWidth: 100,
    uiCls: "mini-treeselect"
});
oll1o = lll0ll[O010O1];
oll1o[Ol1oO0] = ooOO0;
oll1o[o00100] = O1lo0;
oll1o[l1o0lO] = o0Ool;
oll1o[o00oOl] = lOO0O;
oll1o[oO0O1] = O0o00O;
oll1o[o11lOO] = llolO;
oll1o[lo0Oll] = O1l0l;
oll1o[loO1oo] = OOlll;
oll1o[lOlO01] = O00lO;
oll1o[Oo1o00] = lOoOo;
oll1o[O1010O] = OOo11;
oll1o[o0ol00] = O1111;
oll1o[ooOll1] = oOo0o;
oll1o[o001oo] = O100O;
oll1o[lloO00] = o0lol;
oll1o[o0l0O1] = l0o1o;
oll1o[Olo00o] = O1oO0;
oll1o[oloo0] = l10Ol;
oll1o[o01001] = OO0oO;
oll1o[o1l001] = lO111l;
oll1o[OoolO0] = O00o;
oll1o[ollOo0] = llloO;
oll1o.l01OO1 = o1o01;
oll1o.l10oo0 = l0o0l;
oll1o.O0o0o1 = OOl01o;
oll1o.l1oO1o = O010l;
oll1o[l1o1OO] = lloo1;
oll1o[Oo1O11] = oOl1o;
oll1o[O1lOO] = o11oo;
oll1o[oOlOoo] = lOl1l;
oll1o[ol010O] = l1oO0;
oll1o[O00lo0] = l11o0;
oll1o[ol0011] = O0lo0;
oll1o[Olo01l] = olOoO;
oll1o[oOl00O] = o100l;
oll1o[o1010o] = O111O;
oll1o[O0OOlO] = O0l1l;
oll1o[Ol1l0l] = OOo01;
oll1o[oOloOO] = lO00o;
oll1o[OO1oOl] = OOo01List;
oll1o[OoOO11] = O00O0;
oll1o[o0lllO] = OoOOl;
oll1o[llo0o0] = loOo1;
oll1o.l0Ol1o = ollOO;
oll1o[Ol0o01] = OOOl;
oll1o[l1olOo] = O01lO;
oll1o[OO01lO] = Ooo0o;
oll1o[olo00] = o1loo;
oll1o[oOOo1O] = o10loo;
oll1o[lO1o01] = o1l00;
oll1o.ooo1 = Oloo1;
oll1o.ooO0oO = Oollo;
oll1o.l1O1 = Ol0l0;
oll1o.oOO00l = OlOOO;
oll1o._o11O1 = o01Oo;
oll1o[l0O101] = oO1lO;
oll1o[l1OOl1] = l010o;
oloo(lll0ll, "TreeSelect");
ooOloo = function() {
    ooOloo[lOO1lo][o1lOol][lOlOo1](this);
    this[O1lOO](this[l00lO1])
};
O01o(ooOloo, oolOl1, {
    value: 0,
    minValue: 0,
    maxValue: 100,
    increment: 1,
    decimalPlaces: 0,
    changeOnMousewheel: true,
    allowLimitValue: true,
    uiCls: "mini-spinner",
    ol1o01: null
});
llOo0 = ooOloo[O010O1];
llOo0[Ol1oO0] = O1lO;
llOo0.l01O0 = l0O10;
llOo0.O00o00 = o0o01;
llOo0.o1o1 = ol0ll;
llOo0.l10oo0 = O1loo;
llOo0.O0OO11 = o0lOo0;
llOo0.lO1l10 = O11l;
llOo0.Ol00O1 = oO11Oo;
llOo0[llO0o0] = oO1o;
llOo0[oo1ooO] = oool1;
llOo0[Oll10o] = OOOo0;
llOo0[O01o0O] = l001o0;
llOo0[l1llo0] = l1ll10;
llOo0[oOoo0o] = Oll100;
llOo0[O00101] = o0ooOl;
llOo0[O00O00] = oOooo;
llOo0[OOll1O] = lo1l0;
llOo0[O1000o] = l1lo1;
llOo0[O0o100] = oo10Oo;
llOo0[lOoool] = O01ll;
llOo0[O1lOO] = lOoo1l;
llOo0[o00O00] = l1loO;
llOo0.l10o1 = OlOlo;
llOo0[oloOoo] = ooO0l;
llOo0.oO11lOHtml = oOlO0;
llOo0[l1OOl1] = lOOoO;
oloo(ooOloo, "spinner");
lo1OO0 = function() {
    lo1OO0[lOO1lo][o1lOol][lOlOo1](this);
    this[O1lOO]("00:00:00")
};
O01o(lo1OO0, oolOl1, {
    value: null,
    format: "H:mm:ss",
    uiCls: "mini-timespinner",
    ol1o01: null
});
l00o1 = lo1OO0[O010O1];
l00o1[Ol1oO0] = o110l;
l00o1.l01O0 = l1o01o;
l00o1.O00o00 = ooOOo;
l00o1.O0OO11 = l11oO;
l00o1.lO1l10 = oO0ol;
l00o1.Ol00O1 = loOoO;
l00o1.o1lo0l = o1ll;
l00o1[olo1Oo] = o0Ol1;
l00o1[o00O00] = oOoo0;
l00o1[o0l0oO] = lo01l;
l00o1[O1lOO] = OOOoo;
l00o1[oOOOl0] = loolo;
l00o1[olOO0l] = oolO0;
l00o1[oloOoo] = lo1lo;
l00o1.oO11lOHtml = l1loo;
oloo(lo1OO0, "timespinner");
O10OOo = function() {
    O10OOo[lOO1lo][o1lOol][lOlOo1](this);
    this[O0011o]("validation", this.O0l1l0, this)
};
O01o(O10OOo, oolOl1, {
    width: 180,
    buttonText: "\u6d4f\u89c8...",
    _buttonWidth: 56,
    limitType: "",
    limitTypeErrorText: "\u4e0a\u4f20\u6587\u4ef6\u683c\u5f0f\u4e3a\uff1a",
    allowInput: false,
    readOnly: true,
    ol1Oo1: 0,
    uiCls: "mini-htmlfile"
});
OolOo = O10OOo[O010O1];
OolOo[Ol1oO0] = l111O;
OolOo[Ol00ol] = lO0111;
OolOo[ooO111] = lo010;
OolOo[lloOlO] = Oo0lO;
OolOo[lol100] = llo1l;
OolOo[o0l0oO] = O100;
OolOo[l111Ol] = O1llO1;
OolOo.O0l1l0 = l01lo;
OolOo.Ooolo = oo00;
OolOo.oloO0 = o0OOO;
OolOo.oO11lOHtml = O0l00;
OolOo[lO0l01] = Oo1O;
oloo(O10OOo, "htmlfile");
OlOo0l = function($) {
    this.postParam = {};
    OlOo0l[lOO1lo][o1lOol][lOlOo1](this, $);
    this[O0011o]("validation", this.O0l1l0, this)
};
O01o(OlOo0l, oolOl1, {
    width: 180,
    buttonText: "\u6d4f\u89c8...",
    _buttonWidth: 56,
    limitTypeErrorText: "\u4e0a\u4f20\u6587\u4ef6\u683c\u5f0f\u4e3a\uff1a",
    readOnly: true,
    ol1Oo1: 0,
    limitSize: "",
    limitType: "",
    typesDescription: "\u4e0a\u4f20\u6587\u4ef6\u683c\u5f0f",
    uploadLimit: 0,
    queueLimit: "",
    flashUrl: "",
    uploadUrl: "",
    postParam: null,
    uploadOnSelect: false,
    uiCls: "mini-fileupload"
});
oloO1 = OlOo0l[O010O1];
oloO1[Ol1oO0] = Ol1lO;
oloO1[lO0O1O] = oll00;
oloO1[Oo10oO] = lO0o0;
oloO1[O00O1O] = oOl01;
oloO1[l00lOO] = olo0lo;
oloO1[Ol0Ol1] = OoOol;
oloO1[o00ol1] = loll1;
oloO1[l111Ol] = o1O1l;
oloO1[o01lo0] = OO00o;
oloO1[lOll1l] = oOlol;
oloO1[l0OOl1] = lollo;
oloO1[oo0010] = llO10;
oloO1[lloOlO] = O11l1;
oloO1[lol100] = o1o1l;
oloO1[oo1lOl] = llo0l;
oloO1[o0o00l] = O01o1;
oloO1[Ol00ol] = oo0o0;
oloO1[ooO111] = o11l0;
oloO1[ll0o1l] = O1l01;
oloO1[Oo1o0l] = o0010;
oloO1[l0ol00] = O11l0;
oloO1.Ooolo = lOl0o;
oloO1[loooll] = OlO1O;
oloO1.oO11lOHtml = oOlo1;
oloO1[lO0l01] = OO011;
oloo(OlOo0l, "fileupload");
lo11ll = function() {
    this.data = [];
    lo11ll[lOO1lo][o1lOol][lOlOo1](this);
    oOO1l(this.oooo1O, "mouseup", this.oOlO11, this);
    this[O0011o]("showpopup", this.__OnShowPopup, this)
};
O01o(lo11ll, l1ll1o, {
    allowInput: true,
    valueField: "id",
    textField: "text",
    delimiter: ",",
    multiSelect: false,
    data: [],
    grid: null,
    _destroyPopup: false,
    uiCls: "mini-lookup"
});
Oo010 = lo11ll[O010O1];
Oo010[Ol1oO0] = loOl0l;
Oo010.o1ll1l = OOlOO;
Oo010.oOlO11 = o1llO;
Oo010.l10oo0 = O00l;
Oo010[olOOll] = lO11o;
Oo010[O1lOlO] = o0O1;
Oo010.lO0o1o = Ol1o0;
Oo010[olloO0] = llol1;
Oo010[O0l111] = o111Ol;
Oo010[O1lOO] = ooo1l0;
Oo010.Ool0Ol = O10lO;
Oo010.OoO0ol = Oool;
Oo010.lloo = Ol0o;
Oo010[lO1ol1] = O1lll;
Oo010[l01l1l] = lll1;
Oo010[o1O1o0] = o1oO;
Oo010[O00lo0] = lOl11;
Oo010[ol0011] = o111OlField;
Oo010[lloO00] = oolO;
Oo010[o0l0O1] = ooo1l0Field;
Oo010[o0lO0O] = Oo0l;
Oo010[OOo1oO] = Oo0ol;
Oo010[Oo1O11] = l1O0;
Oo010[loooll] = Ol10O;
oloo(lo11ll, "lookup");
oO1lol = function() {
    oO1lol[lOO1lo][o1lOol][lOlOo1](this);
    this.data = [];
    this[olOOll]()
};
O01o(oO1lol, lOOO0o, {
    formField: true,
    value: "",
    text: "",
    valueField: "id",
    textField: "text",
    url: "",
    delay: 150,
    allowInput: true,
    editIndex: 0,
    O0l1: "mini-textboxlist-focus",
    Oo11: "mini-textboxlist-item-hover",
    OlO1ol: "mini-textboxlist-item-selected",
    l0000: "mini-textboxlist-close-hover",
    textName: "",
    uiCls: "mini-textboxlist",
    errorIconEl: null,
    popupLoadingText: "<span class='mini-textboxlist-popup-loading'>Loading...</span>",
    popupErrorText: "<span class='mini-textboxlist-popup-error'>Error</span>",
    popupEmptyText: "<span class='mini-textboxlist-popup-noresult'>No Result</span>",
    isShowPopup: false,
    popupHeight: "",
    popupMinHeight: 30,
    popupMaxHeight: 150,
    searchField: "key"
});
lO00l = oO1lol[O010O1];
lO00l[Ol1oO0] = llO1O;
lO00l[o1ollO] = ol1o0;
lO00l[o011l0] = ll0oo;
lO00l[Oo10Oo] = OO1lO;
lO00l[lo0OOl] = Ol0lO;
lO00l.l10oo0 = lOl10;
lO00l[o0oll0] = llO1l;
lO00l.lo0ooO = l1100;
lO00l.Olllo1 = o1l0O;
lO00l.ll0ool = lOolo;
lO00l.Ooolo = l0lo;
lO00l[O1o1ol] = ol0o1;
lO00l[Ol0o01] = Oo1O0;
lO00l[l0O101] = O1o11;
lO00l[lloo0o] = loo0l;
lO00l.ll011O = ol1OO;
lO00l.l01OO1 = o1O0o;
lO00l.ll1O1O = oll0l;
lO00l.OlOoO0 = lO0ll;
lO00l[OOlO10] = o00ll;
lO00l[Ol0OO1] = l10l11;
lO00l[Olooo0] = oo001;
lO00l[O101oo] = lo0l1;
lO00l[Olool1] = o001o;
lO00l[l010Oo] = lo1OO;
lO00l[o1o1oo] = o0OO1;
lO00l[Olo01l] = Ooo10;
lO00l[oOl00O] = l01l0;
lO00l[Ol1llO] = O011O;
lO00l[ooOlo0] = olloo;
lO00l[O00lo0] = oOO00;
lO00l[ol0011] = o0000;
lO00l[lloO00] = l00lo;
lO00l[o0l0O1] = OlOO1;
lO00l[O0l111] = lol0O;
lO00l[O1lOO] = l0Olo;
lO00l[l111Ol] = Olloo;
lO00l[o0l0oO] = olll1;
lO00l[o0OlO0] = lolo;
lO00l[ooo010] = o1OOO;
lO00l.OoO0ol = O1lOl;
lO00l[l1lll1] = ol0ol;
lO00l[o0O0Ol] = OOO0o;
lO00l.lOOooO = ol0Ol;
lO00l[ololO1] = ll0o1o;
lO00l[O1O100] = Oo011;
lO00l[loOo0l] = OO1lOItem;
lO00l[loooO0] = l10l0;
lO00l[O00o0O] = o001O;
lO00l[llo0o0] = Oll00;
lO00l.l0o0 = Oll00ByEvent;
lO00l[olOOll] = OoOO0;
lO00l[O0lOl0] = lO0l0;
lO00l.o11olo = OoOl0;
lO00l[OoOl10] = oo100;
lO00l.oO1O = ooo0o;
lO00l[oloOoo] = O1OlO;
lO00l[loooll] = oO00o;
lO00l[lO0l01] = ool01;
lO00l[oOo0o0] = loloName;
lO00l[llOlOO] = lol0OName;
oloo(oO1lol, "textboxlist");
lll1oO = function() {
    lll1oO[lOO1lo][o1lOol][lOlOo1](this);
    var $ = this;
    $.OlllO = null;
    this.oooo1O.onfocus = function() {
        $.o11o01 = $.oooo1O.value;
        $.OlllO = setInterval(function() {
            if ($.o11o01 != $.oooo1O.value) {
                $.Ol1Ol();
                $.o11o01 = $.oooo1O.value;
                if ($.oooo1O.value == "" && $.value != "") {
                    $[O1lOO]("");
                    $.oO1O1l()
                }
            }
        },
        10)
    };
    this.oooo1O.onblur = function() {
        clearInterval($.OlllO);
        if (!$[ooll11]()) if ($.o11o01 != $.oooo1O.value) if ($.oooo1O.value == "" && $.value != "") {
            $[O1lOO]("");
            $.oO1O1l()
        }
    };
    this._buttonEl.style.display = "none";
    this[O10Ool]()
};
O01o(lll1oO, o1OO1o, {
    url: "",
    allowInput: true,
    delay: 150,
    searchField: "key",
    minChars: 0,
    _buttonWidth: 0,
    uiCls: "mini-autocomplete",
    popupLoadingText: "<span class='mini-textboxlist-popup-loading'>Loading...</span>",
    popupErrorText: "<span class='mini-textboxlist-popup-error'>Error</span>",
    popupEmptyText: "<span class='mini-textboxlist-popup-noresult'>No Result</span>"
});
O0O1O = lll1oO[O010O1];
O0O1O[Ol1oO0] = llO0o;
O0O1O.l01OO1 = l0lOO;
O0O1O.Ol1Ol = O11o0;
O0O1O[OOlO10] = O0oo1;
O0O1O.l10oo0 = O0010;
O0O1O[Ol0o01] = OOo00;
O0O1O[o1ollO] = oO0oO;
O0O1O[o011l0] = ooOol;
O0O1O[Ol00l1] = O0o0o;
O0O1O[l01110] = oooo1;
O0O1O[O0l111] = Olo1l;
O0O1O[O1lOO] = Oo1Ol;
O0O1O[oOl00O] = oo0OO;
oloo(lll1oO, "autocomplete");
mini.Form = function($) {
    this.el = l00l($);
    if (!this.el) throw new Error("form element not null");
    mini.Form[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.Form, O101ol, {
    el: null,
    getFields: function() {
        if (!this.el) return [];
        var $ = mini.findControls(function($) {
            if (!$.el || $.formField != true) return false;
            if (ooll(this.el, $.el)) return true;
            return false
        },
        this);
        return $
    },
    getFieldsMap: function() {
        var B = this.getFields(),
        A = {};
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var _ = B[$];
            if (_.name) A[_.name] = _
        }
        return A
    },
    getField: function($) {
        if (!this.el) return null;
        return mini[l1lol1]($, this.el)
    },
    getData: function(B, F) {
        if (mini.isNull(F)) F = true;
        var A = B ? "getFormValue": "getValue",
        $ = this.getFields(),
        D = {};
        for (var _ = 0,
        E = $.length; _ < E; _++) {
            var C = $[_],
            G = C[A];
            if (!G) continue;
            if (C.name) if (F == true) mini._setMap(C.name, G[lOlOo1](C), D);
            else D[C.name] = G[lOlOo1](C);
            if (C.textName && C[o0OlO0]) if (F == true) mini._setMap(C.textName, C[o0OlO0](), D);
            else D[C.textName] = C[o0OlO0]()
        }
        return D
    },
    setData: function(F, A, C) {
        if (mini.isNull(C)) C = true;
        if (typeof F != "object") F = {};
        var B = this.getFieldsMap();
        for (var D in B) {
            var _ = B[D];
            if (!_) continue;
            if (_[O1lOO]) {
                var E = F[D];
                if (C == true) E = mini._getMap(D, F);
                if (E === undefined && A === false) continue;
                if (E === null) E = "";
                _[O1lOO](E)
            }
            if (_[O0l111] && _.textName) {
                var $ = F[_.textName];
                if (C == true) $ = mini._getMap(_.textName, F);
                if (mini.isNull($)) $ = "";
                _[O0l111]($)
            }
        }
    },
    reset: function() {
        var $ = this.getFields();
        for (var _ = 0,
        C = $.length; _ < C; _++) {
            var B = $[_];
            if (!B[O1lOO]) continue;
            if (B[O0l111] && B._clearText !== false) {
                var A = B.defaultText;
                if (mini.isNull(A)) A = "";
                B[O0l111](A)
            }
            B[O1lOO](B[O1lo1o])
        }
        this[OoO0l1](true)
    },
    clear: function() {
        var $ = this.getFields();
        for (var _ = 0,
        B = $.length; _ < B; _++) {
            var A = $[_];
            if (!A[O1lOO]) continue;
            if (A[O0l111] && A._clearText !== false) A[O0l111]("");
            A[O1lOO]("")
        }
        this[OoO0l1](true)
    },
    validate: function(C) {
        var $ = this.getFields();
        for (var _ = 0,
        D = $.length; _ < D; _++) {
            var A = $[_];
            if (!A[O1lll0]) continue;
            if (A[OolO10] && A[OolO10]()) {
                var B = A[O1lll0]();
                if (B == false && C === false) break
            }
        }
        return this[O1O111]()
    },
    setIsValid: function(B) {
        var $ = this.getFields();
        for (var _ = 0,
        C = $.length; _ < C; _++) {
            var A = $[_];
            if (!A[OoO0l1]) continue;
            A[OoO0l1](B)
        }
    },
    isValid: function() {
        var $ = this.getFields();
        for (var _ = 0,
        B = $.length; _ < B; _++) {
            var A = $[_];
            if (A[OolO10] && A[OolO10]()) {
                if (!A[O1O111]) continue;
                if (A[O1O111]() == false) return false
            }
        }
        return true
    },
    getErrorTexts: function() {
        var A = [],
        _ = this.getErrors();
        for (var $ = 0,
        C = _.length; $ < C; $++) {
            var B = _[$];
            A.push(B.errorText)
        }
        return A
    },
    getErrors: function() {
        var A = [],
        $ = this.getFields();
        for (var _ = 0,
        C = $.length; _ < C; _++) {
            var B = $[_];
            if (!B[O1O111]) continue;
            if (B[O1O111]() == false) A.push(B)
        }
        return A
    },
    mask: function($) {
        if (typeof $ == "string") $ = {
            html: $
        };
        $ = $ || {};
        $.el = this.el;
        if (!$.cls) $.cls = this.oOoo01;
        mini[o0o0OO]($)
    },
    unmask: function() {
        mini[OlO1l1](this.el)
    },
    oOoo01: "mini-mask-loading",
    loadingMsg: "\u6570\u636e\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u540e...",
    loading: function($) {
        this[o0o0OO]($ || this.loadingMsg)
    },
    lo0loO: function($) {
        this._changed = true
    },
    _changed: false,
    setChanged: function(A) {
        this._changed = A;
        var $ = this.getFields();
        for (var _ = 0,
        C = $.length; _ < C; _++) {
            var B = $[_];
            B[O0011o]("valuechanged", this.lo0loO, this)
        }
    },
    isChanged: function() {
        return this._changed
    },
    setEnabled: function(A) {
        var $ = this.getFields();
        for (var _ = 0,
        C = $.length; _ < C; _++) {
            var B = $[_];
            B[O0O0o0](A)
        }
    }
});
oO01oO = function() {
    oO01oO[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(oO01oO, mini.Container, {
    style: "",
    _clearBorder: false,
    uiCls: "mini-fit"
});
OO00 = oO01oO[O010O1];
OO00[Ol1oO0] = l011l;
OO00[Ooo0oo] = OOl0O;
OO00[O0lOl0] = l1o1o;
OO00[ol1l1O] = o0Ol1o;
OO00[oloOoo] = ool1l;
OO00[lO0l01] = o1lOl;
oloo(oO01oO, "fit");
OOO0ll = function() {
    this.OolO00();
    OOO0ll[lOO1lo][o1lOol][lOlOo1](this);
    if (this.url) this[oOl00O](this.url);
    this.o0O01 = this.Ool1O;
    this[ol0Ool]();
    this.ol1lo0 = new Oo1Oll(this);
    this[lo00oO]()
};
O01o(OOO0ll, mini.Container, {
    width: 250,
    title: "",
    iconCls: "",
    iconStyle: "",
    allowResize: false,
    url: "",
    refreshOnExpand: false,
    maskOnLoad: true,
    showCollapseButton: false,
    showCloseButton: false,
    closeAction: "display",
    showHeader: true,
    showToolbar: false,
    showFooter: false,
    headerCls: "",
    headerStyle: "",
    bodyCls: "",
    bodyStyle: "",
    footerCls: "",
    footerStyle: "",
    toolbarCls: "",
    toolbarStyle: "",
    minWidth: 180,
    minHeight: 100,
    maxWidth: 5000,
    maxHeight: 3000,
    uiCls: "mini-panel",
    O11lO: 80,
    expanded: true
});
Ollo1 = OOO0ll[O010O1];
Ollo1[Ol1oO0] = ll0O00;
Ollo1[OO000O] = l1l1O;
Ollo1[OOl0O0] = o010o0;
Ollo1[O0O0oo] = o01o0;
Ollo1[lo0lO0] = lol0Ol;
Ollo1[oOOl1O] = lO0Oo;
Ollo1[O0ol11] = lO00ll;
Ollo1[oo0ool] = Ool0l;
Ollo1[l1lOol] = lo110O;
Ollo1[O0ll11] = l01lO0;
Ollo1[Ol11OO] = l1o0lo;
Ollo1[Olo01l] = oOOol;
Ollo1[oOl00O] = Olo0l;
Ollo1[o0OOlo] = Oll1lO;
Ollo1[Ol1l0l] = o0o10;
Ollo1.Ol0O1l = OOOO0;
Ollo1.lo10o1 = l00o1O;
Ollo1.oO0l = Ol000o;
Ollo1[o00lo0] = o0olO;
Ollo1[lOO0OO] = lO1lO;
Ollo1[oloo0o] = OOo0l0;
Ollo1[OO1llO] = l0OOo1;
Ollo1[o01oOl] = oooOO;
Ollo1[Ol1o1O] = O01ol;
Ollo1[l01llo] = ol11l1;
Ollo1[Ooo0oo] = OoO1O;
Ollo1[lOo10O] = oOl1o1;
Ollo1[oo0l00] = o0oo1;
Ollo1[o10lll] = oooOo;
Ollo1[l110oO] = l1Oo1;
Ollo1[ll1O01] = O0oll0;
Ollo1[oO10o1] = ol1oo0;
Ollo1.OolO00 = OOO0l;
Ollo1[lo0l1o] = o0o0l;
Ollo1.oOlOOo = l11O;
Ollo1.Olllo1 = O0lO0;
Ollo1[ll11l0] = oO0O1o;
Ollo1[o1Ol1] = OlOO10;
Ollo1[oloO0O] = O01l;
Ollo1[ol01OO] = olloO;
Ollo1[Ololo1] = O1OO;
Ollo1[lO10O0] = o0O11;
Ollo1[l1oO1O] = l011;
Ollo1[o00ll1] = l01Ol;
Ollo1[l1l100] = O11O;
Ollo1[l1l11o] = OOoO1l;
Ollo1[l0oloO] = Oo01OO;
Ollo1[oolo1O] = Ool0;
Ollo1[lo00oO] = l1oOl;
Ollo1[o0OOl0] = o011o;
Ollo1[O0Ol01] = oO0O0;
Ollo1[olo101] = lo1oO;
Ollo1[ooOoO0] = olll;
Ollo1[lll0lo] = o101;
Ollo1[l0l01l] = O1loO1;
Ollo1[Oll00o] = O01olCls;
Ollo1[Oo1OO0] = oOo1O;
Ollo1[l0OO1O] = ol11l1Cls;
Ollo1[lol10l] = o0l1Ol;
Ollo1[Oolll1] = oOl1o1Cls;
Ollo1[oo11O1] = Ol1loo;
Ollo1[loOooO] = l101oo;
Ollo1[oll0Oo] = O1ol;
Ollo1[l0ol0o] = O01olStyle;
Ollo1[lOl11O] = Oo01;
Ollo1[oOolO0] = ol11l1Style;
Ollo1[OOl1Oo] = lo1ol0;
Ollo1[lo101o] = oOl1o1Style;
Ollo1[ool0l1] = o1lllo;
Ollo1[ool10l] = lo0l;
Ollo1[oo0o0O] = oOloo;
Ollo1[oOlo1O] = llOo;
Ollo1[l010l1] = oo1O01;
Ollo1[l0111o] = o1oooo;
Ollo1[oloo0O] = ol0O1l;
Ollo1[lOOll1] = OOO01;
Ollo1[o1olo1] = Ollo;
Ollo1[o1oOoo] = l111o;
Ollo1[O0lOl0] = O1011;
Ollo1[ol0Ool] = o1lO01;
Ollo1[oloOoo] = Ol1O;
Ollo1[loooll] = OooO;
Ollo1[lO0l01] = lo0ll1;
Ollo1[l1OOl1] = o0oOO;
oloo(OOO0ll, "panel");
O1O01l = function() {
    O1O01l[lOO1lo][o1lOol][lOlOo1](this);
    this[o1olO1]("mini-window");
    this[ooOl10](false);
    this[OolOoO](this.allowDrag);
    this[O0ol11](this[O0lOlo])
};
O01o(O1O01l, OOO0ll, {
    x: 0,
    y: 0,
    state: "restore",
    O1o1l1: "mini-window-drag",
    OOOol0: "mini-window-resize",
    allowDrag: true,
    showCloseButton: true,
    showMaxButton: false,
    showMinButton: false,
    showCollapseButton: false,
    showModal: true,
    minWidth: 150,
    minHeight: 80,
    maxWidth: 2000,
    maxHeight: 2000,
    uiCls: "mini-window",
    containerEl: null,
    showInBody: true
});
OOlO = O1O01l[O010O1];
OOlO[ol1l1l] = l1o1l;
OOlO[Ol1oO0] = loO10;
OOlO[loooll] = OOol1;
OOlO.l1l1l0 = ol10O;
OOlO.oloOol = OoOO;
OOlO.oOlOOo = ol0oo;
OOlO.lloOO0 = Oo00O1;
OOlO.O11O1o = loO111;
OOlO[OOl11l] = oO1Oo1;
OOlO[o1Ol0] = OO0Ol;
OOlO[l10101] = O01O0O;
OOlO[loll01] = O1o0o;
OOlO[o0l00l] = oooll1;
OOlO[ll11ol] = OO00o0;
OOlO[lo0lol] = O1o0oAtPos;
OOlO[l00ll0] = olOo;
OOlO[Oo10oo] = oll011;
OOlO[OOOolo] = l0olO;
OOlO[o1OlO0] = Ooll1O;
OOlO[l1O01l] = O011l;
OOlO[olooo0] = O11O0l;
OOlO[llOol0] = O0ol0o;
OOlO[OolOoO] = l0ll0;
OOlO[l10lol] = l1o1ol;
OOlO[l0o010] = lllo1;
OOlO[o01oo1] = oOO1;
OOlO[OloO1o] = lo11o;
OOlO[O1OO10] = Oll1;
OOlO[oo1o1l] = oOlo0;
OOlO[OO01lo] = o1OO0;
OOlO[l11l1o] = o110O;
OOlO[l1O1OO] = llo11;
OOlO[llOoOO] = oo01O;
OOlO[o10l1l] = o011;
OOlO.lo101l = O0Olo;
OOlO[O0lOl0] = ol1Oo;
OOlO[oloOoo] = o0o11;
OOlO.OolO00 = o1O10;
OOlO[lO0l01] = olo11;
oloo(O1O01l, "window");
mini.MessageBox = {
    alertTitle: "\u63d0\u9192",
    confirmTitle: "\u786e\u8ba4",
    prompTitle: "\u8f93\u5165",
    prompMessage: "\u8bf7\u8f93\u5165\u5185\u5bb9\uff1a",
    buttonText: {
        ok: "\u786e\u5b9a",
        cancel: "\u53d6\u6d88",
        yes: "\u662f",
        no: "\u5426"
    },
    show: function(F) {
        F = mini.copyTo({
            width: "auto",
            height: "auto",
            showModal: true,
            minWidth: 150,
            maxWidth: 800,
            minHeight: 100,
            maxHeight: 350,
            showHeader: true,
            title: "",
            titleIcon: "",
            iconCls: "",
            iconStyle: "",
            message: "",
            html: "",
            spaceStyle: "margin-right:15px",
            showCloseButton: true,
            buttons: null,
            buttonWidth: 58,
            callback: null
        },
        F);
        var I = F.callback,
        C = new O1O01l();
        C[lo101o]("overflow:hidden");
        C[llOoOO](F[O0lOol]);
        C[ooOoO0](F.title || "");
        C[O0Ol01](F.titleIcon);
        C[lO10O0](F.showHeader);
        C[oolo1O](F[ool00]);
        var J = C.uid + "$table",
        O = C.uid + "$content",
        M = "<div class=\"" + F.iconCls + "\" style=\"" + F[OO1ol] + "\"></div>",
        R = "<table class=\"mini-messagebox-table\" id=\"" + J + "\" style=\"\" cellspacing=\"0\" cellpadding=\"0\"><tr><td>" + M + "</td><td id=\"" + O + "\" class=\"mini-messagebox-content-text\">" + (F.message || "") + "</td></tr></table>",
        _ = "<div class=\"mini-messagebox-content\"></div>" + "<div class=\"mini-messagebox-buttons\"></div>";
        C.Ool1O.innerHTML = _;
        var N = C.Ool1O.firstChild;
        if (F.html) {
            if (typeof F.html == "string") N.innerHTML = F.html;
            else if (mini.isElement(F.html)) N.appendChild(F.html)
        } else N.innerHTML = R;
        C._Buttons = [];
        var Q = C.Ool1O.lastChild;
        if (F.buttons && F.buttons.length > 0) {
            for (var H = 0,
            D = F.buttons.length; H < D; H++) {
                var E = F.buttons[H],
                K = mini.MessageBox.buttonText[E];
                if (!K) K = E;
                var $ = new l0O0oO();
                $[O0l111](K);
                $[lo01](F.buttonWidth);
                $[oo00ol](Q);
                $.action = E;
                $[O0011o]("click",
                function(_) {
                    var $ = _.sender;
                    if (I) I($.action);
                    mini.MessageBox[l10101](C)
                });
                if (H != D - 1) $[OOolo0](F.spaceStyle);
                C._Buttons.push($)
            }
        } else Q.style.display = "none";
        C[l11l1o](F.minWidth);
        C[oo1o1l](F.minHeight);
        C[OloO1o](F.maxWidth);
        C[l0o010](F.maxHeight);
        C[lo01](F.width);
        C[l1ll01](F.height);
        C[loll01]();
        var A = C[o1Ol0]();
        C[lo01](A);
        var L = C[o1l1l0]();
        C[l1ll01](L);
        var B = document.getElementById(J);
        if (B) B.style.width = "100%";
        var G = document.getElementById(O);
        if (G) G.style.width = "100%";
        var P = C._Buttons[0];
        if (P) P[lo0OOl]();
        else C[lo0OOl]();
        C[O0011o]("beforebuttonclick",
        function($) {
            if (I) I("close");
            $.cancel = true;
            mini.MessageBox[l10101](C)
        });
        oOO1l(C.el, "keydown",
        function($) {});
        return C.uid
    },
    hide: function(C) {
        if (!C) return;
        var _ = typeof C == "object" ? C: mini.getbyUID(C);
        if (!_) return;
        for (var $ = 0,
        A = _._Buttons.length; $ < A; $++) {
            var B = _._Buttons[$];
            B[loooll]()
        }
        _._Buttons = null;
        _[loooll]()
    },
    alert: function(A, _, $) {
        return mini.MessageBox[loll01]({
            minWidth: 250,
            title: _ || mini.MessageBox.alertTitle,
            buttons: ["ok"],
            message: A,
            iconCls: "mini-messagebox-warning",
            callback: $
        })
    },
    confirm: function(A, _, $) {
        return mini.MessageBox[loll01]({
            minWidth: 250,
            title: _ || mini.MessageBox.confirmTitle,
            buttons: ["ok", "cancel"],
            message: A,
            iconCls: "mini-messagebox-question",
            callback: $
        })
    },
    prompt: function(C, B, A, _) {
        var F = "prompt$" + new Date()[O0olo1](),
        E = C || mini.MessageBox.promptMessage;
        if (_) E = E + "<br/><textarea id=\"" + F + "\" style=\"width:200px;height:60px;margin-top:3px;\"></textarea>";
        else E = E + "<br/><input id=\"" + F + "\" type=\"text\" style=\"width:200px;margin-top:3px;\"/>";
        var D = mini.MessageBox[loll01]({
            title: B || mini.MessageBox.promptTitle,
            buttons: ["ok", "cancel"],
            width: 250,
            html: "<div style=\"padding:5px;padding-left:10px;\">" + E + "</div>",
            callback: function(_) {
                var $ = document.getElementById(F);
                if (A) A(_, $.value)
            }
        }),
        $ = document.getElementById(F);
        $[lo0OOl]();
        return D
    },
    loading: function(_, $) {
        return mini.MessageBox[loll01]({
            minHeight: 50,
            title: $,
            showCloseButton: false,
            message: _,
            iconCls: "mini-messagebox-waiting"
        })
    }
};
mini.alert = mini.MessageBox.alert;
mini.confirm = mini.MessageBox.confirm;
mini.prompt = mini.MessageBox.prompt;
mini[lO000O] = mini.MessageBox[lO000O];
mini.showMessageBox = mini.MessageBox[loll01];
mini.hideMessageBox = mini.MessageBox[l10101];
OOo01l = function() {
    this.ooo100();
    OOo01l[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(OOo01l, o0oo1l, {
    width: 300,
    height: 180,
    vertical: false,
    allowResize: true,
    pane1: null,
    pane2: null,
    showHandleButton: true,
    handlerStyle: "",
    handlerCls: "",
    handlerSize: 5,
    uiCls: "mini-splitter"
});
O0o1O = OOo01l[O010O1];
O0o1O[Ol1oO0] = oO0l1;
O0o1O.loO1 = oll1;
O0o1O.O1l1l = ol0OO;
O0o1O.O0lO00 = l11O1;
O0o1O.OolOl0 = OOl1o;
O0o1O.Oll11o = loo10;
O0o1O[lo0l1o] = oOoo;
O0o1O.oOlOOo = ooOo0;
O0o1O.Olllo1 = oOoO1;
O0o1O[ol11ol] = oOl0;
O0o1O[o0Ol1O] = lol1l;
O0o1O[oOOl1O] = lOlloO;
O0o1O[O0ol11] = OOo10;
O0o1O[l00oOo] = o1lol;
O0o1O[o1lo0o] = ooooo;
O0o1O[OoOol1] = l1o0O;
O0o1O[o0o10O] = l0O0o0;
O0o1O[l1oO1l] = O0O0O;
O0o1O[oOOO1o] = oo010;
O0o1O[oo01oO] = l000O0;
O0o1O[oo1loo] = ll0Ol;
O0o1O[ooOOOl] = O0oO0;
O0o1O[Oo1oO1] = oOOl0O;
O0o1O[O0l0O1] = o1l0l;
O0o1O[olo11O] = o11l1;
O0o1O[O111l0] = o0o1l;
O0o1O[ol1loO] = l0O0o;
O0o1O[oO1lO0] = l0O0oBox;
O0o1O[O0lOl0] = O0l1ol;
O0o1O[olOOll] = o11OO1;
O0o1O.ooo100 = oOOOOo;
O0o1O[oloOoo] = l11l1;
O0o1O[lO0l01] = O1OO0;
oloo(OOo01l, "splitter");
o0OOlO = function() {
    this.regions = [];
    this.regionMap = {};
    o0OOlO[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o0OOlO, o0oo1l, {
    regions: [],
    splitSize: 5,
    collapseWidth: 28,
    collapseHeight: 25,
    regionWidth: 150,
    regionHeight: 80,
    regionMinWidth: 50,
    regionMinHeight: 25,
    regionMaxWidth: 2000,
    regionMaxHeight: 2000,
    uiCls: "mini-layout",
    hoverProxyEl: null
});
oO01 = o0OOlO[O010O1];
oO01[oll010] = oOll;
oO01[lo0l1o] = O00O;
oO01.ll0ool = OO0O0l;
oO01.o0Ol = ol0o01;
oO01.llo1Ol = l0l01;
oO01.oOlOOo = lO101;
oO01.Olllo1 = O0lOll;
oO01.l0l11l = O1l000;
oO01.O1O1OO = OO0lo;
oO01.lOOlo1 = oO1oOo;
oO01[ooooO0] = oool;
oO01[O1OOll] = lo00l;
oO01[lOlOOl] = o0101;
oO01[l1O1o0] = l1oll;
oO01[l00Ol0] = ll001;
oO01[l011OO] = llll1;
oO01[OloOOO] = o1o0;
oO01[ooOo0O] = l0lOl;
oO01.OOo1ll = loO1o0;
oO01[l1lllO] = O01o0;
oO01[o0o0oo] = OlO00;
oO01[oO1lll] = llo0o;
oO01[llOoo1] = OOo1o;
oO01[O11lo0] = lOl01;
oO01.l1010l = oo011;
oO01.o00Ool = l000O;
oO01.oO11lO = llO0;
oO01[oO001o] = o111;
oO01[ooOOOo] = o111Box;
oO01[ol0l0o] = o111ProxyEl;
oO01[OOl1O1] = o111SplitEl;
oO01[lO1l1O] = o111BodyEl;
oO01[o0O010] = o111HeaderEl;
oO01[Olo110] = o111El;
oO01[oloOoo] = oOl0O;
oO01[lO0l01] = ooOlo;
mini.copyTo(o0OOlO.prototype, {
    OO1ool: function(_, A) {
        var C = "<div class=\"mini-tools\">";
        if (A) C += "<span class=\"mini-tools-collapse\"></span>";
        else for (var $ = _.buttons.length - 1; $ >= 0; $--) {
            var B = _.buttons[$];
            C += "<span class=\"" + B.cls + "\" style=\"";
            C += B.style + ";" + (B.visible ? "": "display:none;") + "\">" + B.html + "</span>"
        }
        C += "</div>";
        C += "<div class=\"mini-layout-region-icon " + _.iconCls + "\" style=\"" + _[OO1ol] + ";" + ((_[OO1ol] || _.iconCls) ? "": "display:none;") + "\"></div>";
        C += "<div class=\"mini-layout-region-title\">" + _.title + "</div>";
        return C
    },
    doUpdate: function() {
        for (var $ = 0,
        E = this.regions.length; $ < E; $++) {
            var B = this.regions[$],
            _ = B.region,
            A = B._el,
            D = B._split,
            C = B._proxy;
            if (B.cls) l1ll1O(A, B.cls);
            B._header.style.display = B.showHeader ? "": "none";
            B._header.innerHTML = this.OO1ool(B);
            if (B._proxy) B._proxy.innerHTML = this.OO1ool(B, true);
            if (D) {
                lOolO(D, "mini-layout-split-nodrag");
                if (B.expanded == false || !B[O0lOlo]) l1ll1O(D, "mini-layout-split-nodrag")
            }
        }
        this[O0lOl0]()
    },
    doLayout: function() {
        if (!this[ollOO1]()) return;
        if (this.O011ol) return;
        var C = lOOl(this.el, true),
        _ = Ooo01(this.el, true),
        D = {
            x: 0,
            y: 0,
            width: _,
            height: C
        },
        I = this.regions.clone(),
        P = this[oO001o]("center");
        I.remove(P);
        if (P) I.push(P);
        for (var K = 0,
        H = I.length; K < H; K++) {
            var E = I[K];
            E._Expanded = false;
            lOolO(E._el, "mini-layout-popup");
            var A = E.region,
            L = E._el,
            F = E._split,
            G = E._proxy;
            if (E.visible == false) {
                L.style.display = "none";
                if (A != "center") F.style.display = G.style.display = "none";
                continue
            }
            L.style.display = "";
            if (A != "center") F.style.display = G.style.display = "";
            var R = D.x,
            O = D.y,
            _ = D.width,
            C = D.height,
            B = E.width,
            J = E.height;
            if (!E.expanded) if (A == "west" || A == "east") {
                B = E.collapseSize;
                ol1Olo(L, E.width)
            } else if (A == "north" || A == "south") {
                J = E.collapseSize;
                O1llol(L, E.height)
            }
            switch (A) {
            case "north":
                C = J;
                D.y += J;
                D.height -= J;
                break;
            case "south":
                C = J;
                O = D.y + D.height - J;
                D.height -= J;
                break;
            case "west":
                _ = B;
                D.x += B;
                D.width -= B;
                break;
            case "east":
                _ = B;
                R = D.x + D.width - B;
                D.width -= B;
                break;
            case "center":
                break;
            default:
                continue
            }
            if (_ < 0) _ = 0;
            if (C < 0) C = 0;
            if (A == "west" || A == "east") O1llol(L, C);
            if (A == "north" || A == "south") ol1Olo(L, _);
            var N = "left:" + R + "px;top:" + O + "px;",
            $ = L;
            if (!E.expanded) {
                $ = G;
                L.style.top = "-100px";
                L.style.left = "-1500px"
            } else if (G) {
                G.style.left = "-1500px";
                G.style.top = "-100px"
            }
            $.style.left = R + "px";
            $.style.top = O + "px";
            ol1Olo($, _);
            O1llol($, C);
            var M = jQuery(E._el).height(),
            Q = E.showHeader ? jQuery(E._header).outerHeight() : 0;
            O1llol(E._body, M - Q);
            if (A == "center") continue;
            B = J = E.splitSize;
            R = D.x,
            O = D.y,
            _ = D.width,
            C = D.height;
            switch (A) {
            case "north":
                C = J;
                D.y += J;
                D.height -= J;
                break;
            case "south":
                C = J;
                O = D.y + D.height - J;
                D.height -= J;
                break;
            case "west":
                _ = B;
                D.x += B;
                D.width -= B;
                break;
            case "east":
                _ = B;
                R = D.x + D.width - B;
                D.width -= B;
                break;
            case "center":
                break
            }
            if (_ < 0) _ = 0;
            if (C < 0) C = 0;
            F.style.left = R + "px";
            F.style.top = O + "px";
            ol1Olo(F, _);
            O1llol(F, C);
            if (E.showSplit && E.expanded && E[O0lOlo] == true) lOolO(F, "mini-layout-split-nodrag");
            else l1ll1O(F, "mini-layout-split-nodrag");
            F.firstChild.style.display = E.showSplitIcon ? "block": "none";
            if (E.expanded) lOolO(F.firstChild, "mini-layout-spliticon-collapse");
            else l1ll1O(F.firstChild, "mini-layout-spliticon-collapse")
        }
        mini.layout(this.O0000o);
        this[lOooO0]("layout")
    },
    Oll11o: function(B) {
        if (this.O011ol) return;
        if (O01l0O(B.target, "mini-layout-split")) {
            var A = jQuery(B.target).attr("uid");
            if (A != this.uid) return;
            var _ = this[oO001o](B.target.id);
            if (_.expanded == false || !_[O0lOlo] || !_.showSplit) return;
            this.dragRegion = _;
            var $ = this.OolOl0();
            $.start(B)
        }
    },
    OolOl0: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    },
    O0lO00: function($) {
        this.oO00oo = mini.append(document.body, "<div class=\"mini-resizer-mask\"></div>");
        this.oOOoo0 = mini.append(document.body, "<div class=\"mini-proxy\"></div>");
        this.oOOoo0.style.cursor = "n-resize";
        if (this.dragRegion.region == "west" || this.dragRegion.region == "east") this.oOOoo0.style.cursor = "w-resize";
        this.splitBox = O101o(this.dragRegion._split);
        oOo10l(this.oOOoo0, this.splitBox);
        this.elBox = O101o(this.el, true)
    },
    O1l1l: function(C) {
        var I = C.now[0] - C.init[0],
        V = this.splitBox.x + I,
        A = C.now[1] - C.init[1],
        U = this.splitBox.y + A,
        K = V + this.splitBox.width,
        T = U + this.splitBox.height,
        G = this[oO001o]("west"),
        L = this[oO001o]("east"),
        F = this[oO001o]("north"),
        D = this[oO001o]("south"),
        H = this[oO001o]("center"),
        O = G && G.visible ? G.width: 0,
        Q = L && L.visible ? L.width: 0,
        R = F && F.visible ? F.height: 0,
        J = D && D.visible ? D.height: 0,
        P = G && G.showSplit ? Ooo01(G._split) : 0,
        $ = L && L.showSplit ? Ooo01(L._split) : 0,
        B = F && F.showSplit ? lOOl(F._split) : 0,
        S = D && D.showSplit ? lOOl(D._split) : 0,
        E = this.dragRegion,
        N = E.region;
        if (N == "west") {
            var M = this.elBox.width - Q - $ - P - H.minWidth;
            if (V - this.elBox.x > M) V = M + this.elBox.x;
            if (V - this.elBox.x < E.minWidth) V = E.minWidth + this.elBox.x;
            if (V - this.elBox.x > E.maxWidth) V = E.maxWidth + this.elBox.x;
            mini.setX(this.oOOoo0, V)
        } else if (N == "east") {
            M = this.elBox.width - O - P - $ - H.minWidth;
            if (this.elBox.right - (V + this.splitBox.width) > M) V = this.elBox.right - M - this.splitBox.width;
            if (this.elBox.right - (V + this.splitBox.width) < E.minWidth) V = this.elBox.right - E.minWidth - this.splitBox.width;
            if (this.elBox.right - (V + this.splitBox.width) > E.maxWidth) V = this.elBox.right - E.maxWidth - this.splitBox.width;
            mini.setX(this.oOOoo0, V)
        } else if (N == "north") {
            var _ = this.elBox.height - J - S - B - H.minHeight;
            if (U - this.elBox.y > _) U = _ + this.elBox.y;
            if (U - this.elBox.y < E.minHeight) U = E.minHeight + this.elBox.y;
            if (U - this.elBox.y > E.maxHeight) U = E.maxHeight + this.elBox.y;
            mini.setY(this.oOOoo0, U)
        } else if (N == "south") {
            _ = this.elBox.height - R - B - S - H.minHeight;
            if (this.elBox.bottom - (U + this.splitBox.height) > _) U = this.elBox.bottom - _ - this.splitBox.height;
            if (this.elBox.bottom - (U + this.splitBox.height) < E.minHeight) U = this.elBox.bottom - E.minHeight - this.splitBox.height;
            if (this.elBox.bottom - (U + this.splitBox.height) > E.maxHeight) U = this.elBox.bottom - E.maxHeight - this.splitBox.height;
            mini.setY(this.oOOoo0, U)
        }
    },
    loO1: function(B) {
        var C = O101o(this.oOOoo0),
        D = this.dragRegion,
        A = D.region;
        if (A == "west") {
            var $ = C.x - this.elBox.x;
            this[ooOo0O](D, {
                width: $
            })
        } else if (A == "east") {
            $ = this.elBox.right - C.right;
            this[ooOo0O](D, {
                width: $
            })
        } else if (A == "north") {
            var _ = C.y - this.elBox.y;
            this[ooOo0O](D, {
                height: _
            })
        } else if (A == "south") {
            _ = this.elBox.bottom - C.bottom;
            this[ooOo0O](D, {
                height: _
            })
        }
        jQuery(this.oOOoo0).remove();
        this.oOOoo0 = null;
        this.elBox = this.handlerBox = null;
        jQuery(this.oO00oo).remove();
        this.oO00oo = null
    },
    o1OOO0: function($) {
        $ = this[oO001o]($);
        if ($._Expanded === true) this.loo0($);
        else this.o11l00($)
    },
    o11l00: function(D) {
        if (this.O011ol) return;
        this[O0lOl0]();
        var A = D.region,
        H = D._el;
        D._Expanded = true;
        l1ll1O(H, "mini-layout-popup");
        var E = O101o(D._proxy),
        B = O101o(D._el),
        F = {};
        if (A == "east") {
            var K = E.x,
            J = E.y,
            C = E.height;
            O1llol(H, C);
            mini.setX(H, K);
            H.style.top = D._proxy.style.top;
            var I = parseInt(H.style.left);
            F = {
                left: I - B.width
            }
        } else if (A == "west") {
            K = E.right - B.width,
            J = E.y,
            C = E.height;
            O1llol(H, C);
            mini.setX(H, K);
            H.style.top = D._proxy.style.top;
            I = parseInt(H.style.left);
            F = {
                left: I + B.width
            }
        } else if (A == "north") {
            var K = E.x,
            J = E.bottom - B.height,
            _ = E.width;
            ol1Olo(H, _);
            mini[l0lO1l](H, K, J);
            var $ = parseInt(H.style.top);
            F = {
                top: $ + B.height
            }
        } else if (A == "south") {
            K = E.x,
            J = E.y,
            _ = E.width;
            ol1Olo(H, _);
            mini[l0lO1l](H, K, J);
            $ = parseInt(H.style.top);
            F = {
                top: $ - B.height
            }
        }
        l1ll1O(D._proxy, "mini-layout-maxZIndex");
        this.O011ol = true;
        var G = this,
        L = jQuery(H);
        L.animate(F, 250,
        function() {
            lOolO(D._proxy, "mini-layout-maxZIndex");
            G.O011ol = false
        })
    },
    loo0: function(F) {
        if (this.O011ol) return;
        F._Expanded = false;
        var B = F.region,
        E = F._el,
        D = O101o(E),
        _ = {};
        if (B == "east") {
            var C = parseInt(E.style.left);
            _ = {
                left: C + D.width
            }
        } else if (B == "west") {
            C = parseInt(E.style.left);
            _ = {
                left: C - D.width
            }
        } else if (B == "north") {
            var $ = parseInt(E.style.top);
            _ = {
                top: $ - D.height
            }
        } else if (B == "south") {
            $ = parseInt(E.style.top);
            _ = {
                top: $ + D.height
            }
        }
        l1ll1O(F._proxy, "mini-layout-maxZIndex");
        this.O011ol = true;
        var A = this,
        G = jQuery(E);
        G.animate(_, 250,
        function() {
            lOolO(F._proxy, "mini-layout-maxZIndex");
            A.O011ol = false;
            A[O0lOl0]()
        })
    },
    oO1O: function(B) {
        if (this.O011ol) return;
        for (var $ = 0,
        A = this.regions.length; $ < A; $++) {
            var _ = this.regions[$];
            if (!_._Expanded) continue;
            if (ooll(_._el, B.target) || ooll(_._proxy, B.target));
            else this.loo0(_)
        }
    },
    getAttrs: function(A) {
        var H = o0OOlO[lOO1lo][Ol1oO0][lOlOo1](this, A),
        G = jQuery(A),
        E = parseInt(G.attr("splitSize"));
        if (!isNaN(E)) H.splitSize = E;
        var F = [],
        D = mini[l1olOo](A);
        for (var _ = 0,
        C = D.length; _ < C; _++) {
            var B = D[_],
            $ = {};
            F.push($);
            $.cls = B.className;
            $.style = B.style.cssText;
            mini[ll1O1o](B, $, ["region", "title", "iconCls", "iconStyle", "cls", "headerCls", "headerStyle", "bodyCls", "bodyStyle"]);
            mini[oO11o0](B, $, ["allowResize", "visible", "showCloseButton", "showCollapseButton", "showSplit", "showHeader", "expanded", "showSplitIcon"]);
            mini[O1oOl1](B, $, ["splitSize", "collapseSize", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight"]);
            $.bodyParent = B
        }
        H.regions = F;
        return H
    }
});
oloo(o0OOlO, "layout");
olllo0 = function() {
    olllo0[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(olllo0, mini.Container, {
    style: "",
    borderStyle: "",
    bodyStyle: "",
    uiCls: "mini-box"
});
looO1o = olllo0[O010O1];
looO1o[Ol1oO0] = l1l1l;
looO1o[lo101o] = o0l100;
looO1o[Ooo0oo] = l000;
looO1o[lOo10O] = o1Oll0;
looO1o[O0lOl0] = O0Ol;
looO1o[oloOoo] = lo0Oo;
looO1o[lO0l01] = l111l;
oloo(olllo0, "box");
lOOllo = function() {
    lOOllo[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lOOllo, o0oo1l, {
    url: "",
    uiCls: "mini-include"
});
OOo1 = lOOllo[O010O1];
OOo1[Ol1oO0] = oOoll;
OOo1[Olo01l] = llo0O;
OOo1[oOl00O] = lo0oo;
OOo1[O0lOl0] = loOOo1;
OOo1[oloOoo] = O1000;
OOo1[lO0l01] = oo1o01;
oloo(lOOllo, "include");
lo000O = function() {
    this.lo0O01();
    lo000O[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lo000O, o0oo1l, {
    activeIndex: -1,
    tabAlign: "left",
    tabPosition: "top",
    showBody: true,
    nameField: "name",
    titleField: "title",
    urlField: "url",
    url: "",
    maskOnLoad: true,
    plain: true,
    bodyStyle: "",
    oo11Oo: "mini-tab-hover",
    lo1110: "mini-tab-active",
    uiCls: "mini-tabs",
    lo0o0l: 1,
    O11lO: 180,
    hoverTab: null
});
l1Oo1O = lo000O[O010O1];
l1Oo1O[Ol1oO0] = o0OoO;
l1Oo1O[o0ooO0] = O0OlO1;
l1Oo1O[lll1O1] = ol10oo;
l1Oo1O[Oo1011] = l0lO11;
l1Oo1O.Oo00l0 = Oo10l0;
l1Oo1O.lO011o = oo1l0o;
l1Oo1O.l1oOl1 = o00ol;
l1Oo1O.ll1OO1 = ll1oO;
l1Oo1O.o0lolo = looO1;
l1Oo1O.o1O01o = OO01o;
l1Oo1O.Oll11o = oO1oo;
l1Oo1O.ll0ool = lO1oO;
l1Oo1O.o0Ol = o0loOl;
l1Oo1O.Olllo1 = l1l00;
l1Oo1O.ll1o0 = OOO11l;
l1Oo1O[lOo0ll] = lll0l;
l1Oo1O[ol101O] = l1loO1;
l1Oo1O[O0Ol0O] = o110l1;
l1Oo1O[oo0ool] = lO1ll0;
l1Oo1O[l1lOol] = lO01;
l1Oo1O[OOl1Oo] = ooOlll;
l1Oo1O[lo101o] = lo010o;
l1Oo1O[oOO10l] = ooOl00;
l1Oo1O[OooOl1] = OoO11l;
l1Oo1O.oOOl0o = O1OoO0;
l1Oo1O[O0l01o] = O0OlO0;
l1Oo1O[lo1llO] = o0OllO;
l1Oo1O[ol1l11] = Oo1OOl;
l1Oo1O[O0l01o] = O0OlO0;
l1Oo1O[lOOoOo] = o001;
l1Oo1O.llo10 = olool;
l1Oo1O.l0Ol0o = lo1l1;
l1Oo1O.oOOO0 = oO11O0;
l1Oo1O[OoOo1o] = O00lOl;
l1Oo1O[Oll000] = ool1;
l1Oo1O[ll00O0] = l1Ol;
l1Oo1O[oloo0o] = O11loO;
l1Oo1O[o01oOl] = l0oO;
l1Oo1O[o0o1Ol] = l0Ol;
l1Oo1O[OO1lO0] = OlO11;
l1Oo1O[oo0OOO] = l01001;
l1Oo1O[O0lOl0] = o0oo01;
l1Oo1O[oo1oO1] = olOOOo;
l1Oo1O[olOOll] = ooo0l;
l1Oo1O[O010OO] = l0OlRows;
l1Oo1O[looo11] = lO1l0O;
l1Oo1O[OOOO00] = O00oOl;
l1Oo1O.oolOOO = Ool1o0;
l1Oo1O.ooooOo = olOOo1;
l1Oo1O[lllooO] = oo1ol;
l1Oo1O.lo10o1 = oOllo;
l1Oo1O.oO0l = O1ooO;
l1Oo1O[Ol1ol0] = O0O101;
l1Oo1O[OlOOOl] = OOO0oo;
l1Oo1O[ooo1o0] = O0lOoo;
l1Oo1O[oO1llO] = oOollO;
l1Oo1O[OO1l00] = ol1OlO;
l1Oo1O[l1ll1l] = l0Ols;
l1Oo1O[lolloO] = oOo1oo;
l1Oo1O[lOooo0] = OO10o;
l1Oo1O[OOlO01] = Oo0lOO;
l1Oo1O[OO001] = o1O01;
l1Oo1O[oo0oll] = llO10O;
l1Oo1O[OoOllo] = O10l;
l1Oo1O[O0ooOo] = o0lOO1;
l1Oo1O[o1lO00] = ol00;
l1Oo1O[Olo01l] = l1o0;
l1Oo1O[oOl00O] = Oo10ol;
l1Oo1O[Ol1l0l] = ol0OOl;
l1Oo1O.Ol0O1l = oOlo;
l1Oo1O[o1O101] = oO0OO1;
l1Oo1O.lo0O01 = OoOool;
l1Oo1O[oloOoo] = O0olo;
l1Oo1O.lo1ll1 = OO01l;
l1Oo1O[loooll] = Ol0Oo0;
l1Oo1O[lO0l01] = ll00ll;
l1Oo1O[l1OOl1] = O101oO;
oloo(lo000O, "tabs");
o1lOOO = function() {
    this.items = [];
    o1lOOO[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o1lOOO, o0oo1l);
mini.copyTo(o1lOOO.prototype, OOo010_prototype);
var OOo010_prototype_hide = OOo010_prototype[l10101];
mini.copyTo(o1lOOO.prototype, {
    height: "auto",
    width: "auto",
    minWidth: 140,
    vertical: true,
    allowSelectItem: false,
    ll11O0: null,
    _OolOoo: "mini-menuitem-selected",
    textField: "text",
    resultAsTree: false,
    idField: "id",
    parentField: "pid",
    itemsField: "children",
    showNavArrow: true,
    _clearBorder: false,
    showAction: "none",
    hideAction: "outerclick",
    uiCls: "mini-menu",
    _disableContextMenu: false,
    url: "",
    hideOnClick: true
});
l001 = o1lOOO[O010O1];
l001[Ol1oO0] = l0lO1;
l001[o01o00] = l0100o;
l001[l01llo] = OOOo10;
l001[l0oo00] = oOoO;
l001[lOooll] = lO00;
l001[o1llOl] = oO0lO0;
l001[OOllO1] = o0Ooo;
l001[l1l0OO] = l1o000;
l001[oO1ol0] = oooOl1;
l001[l00oll] = lO001;
l001[l0o1l0] = oOlO;
l001[Ol01OO] = Ol00ll;
l001[Olo01l] = O111l;
l001[oOl00O] = oO0O;
l001[Ol1l0l] = ooo10o;
l001[OO1oOl] = ooo10oList;
l001.Ol0O1l = l1olo1;
l001.O11O1o = l1o0Oo;
l001[O0lOl0] = OO0O1;
l001[Olo00o] = lOl0;
l001[oloo0] = OooOo;
l001[O1Oll0] = O0lOO0;
l001[O0o0OO] = olooOo;
l001[o01001] = lOlOlo;
l001[o1l001] = l0OlO;
l001[O00lo0] = oO00;
l001[ol0011] = o01lo1;
l001[o10lOo] = ooOOOO;
l001[Oo00o1] = O111o;
l001[ol0l11] = olOlO;
l001[lO0l1l] = lOOO11;
l001[lol110] = OOl010;
l001[Ol10oO] = o01110;
l001[llo0o0] = O01lO0;
l001[lOo1l0] = OO10O;
l001[OO1l00] = ll11Ol;
l001[o0OoOo] = O10ll;
l001[l1lll1] = Ooolol;
l001[O0o0oo] = O10O1O;
l001[loO0o1] = O01lO0s;
l001[olO0Ol] = Oo1l1O;
l001[o1010o] = oOo0l1;
l001[O0OOlO] = O010O;
l001[oolo0o] = Oolo00;
l001[lO00Ol] = OOO0o0;
l001[l1Olo1] = ol101;
l001[l10101] = lO10O1;
l001[loll01] = oOlOO;
l001[OlOol0] = olO11;
l001[oOOO1o] = olol1;
l001[oo01oO] = ool11o;
l001[lloo0o] = Ooo110;
l001[oloOoo] = oOl10l;
l001[loooll] = Oo010l;
l001[lO0l01] = llO1oo;
l001[l1OOl1] = OOOO0l;
l001[l1lol1] = Ol000;
oloo(o1lOOO, "menu");
o1lOOOBar = function() {
    o1lOOOBar[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o1lOOOBar, o1lOOO, {
    uiCls: "mini-menubar",
    vertical: false,
    setVertical: function($) {
        this.vertical = false
    }
});
oloo(o1lOOOBar, "menubar");
mini.ContextMenu = function() {
    mini.ContextMenu[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.ContextMenu, o1lOOO, {
    uiCls: "mini-contextmenu",
    vertical: true,
    visible: false,
    _disableContextMenu: true,
    setVertical: function($) {
        this.vertical = true
    }
});
oloo(mini.ContextMenu, "contextmenu");
OOl0l1 = function() {
    OOl0l1[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(OOl0l1, o0oo1l, {
    text: "",
    iconCls: "",
    iconStyle: "",
    iconPosition: "left",
    showIcon: true,
    showAllow: true,
    checked: false,
    checkOnClick: false,
    groupName: "",
    _hoverCls: "mini-menuitem-hover",
    Oll0Ol: "mini-menuitem-pressed",
    l0o000: "mini-menuitem-checked",
    _clearBorder: false,
    menu: null,
    uiCls: "mini-menuitem",
    oOO11O: false
});
Olllo = OOl0l1[O010O1];
Olllo[Ol1oO0] = oollol;
Olllo[lol1Oo] = lO11;
Olllo[ol0O00] = olo1;
Olllo.ll0ool = o0l0O;
Olllo.o0Ol = l000l;
Olllo.oOlO11 = OO1Oo;
Olllo.Olllo1 = o1oOo;
Olllo[OO11O0] = oO11l0;
Olllo.oll0Ol = OO0l1;
Olllo[l10101] = lOl00;
Olllo[l101Ol] = lOl00Menu;
Olllo[looll0] = l0ol0;
Olllo[ol000O] = Oo00l;
Olllo[oO1O11] = O1ol0;
Olllo[lo1OoO] = o1O0l1;
Olllo[OloOO] = lOloo;
Olllo[lOoooO] = Oo0oll;
Olllo[lOoloO] = ll1oOl;
Olllo[lOl01O] = O1Oo;
Olllo[o1O001] = l1olo;
Olllo[OO00OO] = o0ll0;
Olllo[O0oO00] = o1olOO;
Olllo[loll1o] = ll1Oo;
Olllo[oOOOOO] = ooo01;
Olllo[O1Oo1O] = OO0o1;
Olllo[o0OOl0] = olol1o;
Olllo[O0Ol01] = Oloo;
Olllo[o0OlO0] = OoOl1;
Olllo[O0l111] = looo;
Olllo[olOOll] = oO111O;
Olllo[o1Ol10] = O10OoO;
Olllo[lloo0o] = l1ll1;
Olllo[loooll] = oOOoll;
Olllo.oo1O = ll011;
Olllo[oloOoo] = ooO01;
Olllo[lO0l01] = Oloo0;
oloo(OOl0l1, "menuitem");
mini.Separator = function() {
    mini.Separator[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.Separator, o0oo1l, {
    _clearBorder: false,
    uiCls: "mini-separator",
    _create: function() {
        this.el = document.createElement("span");
        this.el.className = "mini-separator"
    }
});
oloo(mini.Separator, "separator");
ol01oo = function() {
    this.loll00();
    ol01oo[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(ol01oo, o0oo1l, {
    width: 180,
    expandOnLoad: true,
    activeIndex: -1,
    autoCollapse: false,
    groupCls: "",
    groupStyle: "",
    groupHeaderCls: "",
    groupHeaderStyle: "",
    groupBodyCls: "",
    groupBodyStyle: "",
    groupHoverCls: "",
    groupActiveCls: "",
    allowAnim: true,
    uiCls: "mini-outlookbar",
    _GroupId: 1
});
o01Ol = ol01oo[O010O1];
o01Ol[Ol1oO0] = O0Oo0;
o01Ol[o00lOl] = O1o00;
o01Ol.Olllo1 = l11ol;
o01Ol.OOl0o1 = O0oO1;
o01Ol.lOlo00 = oOO0l;
o01Ol[Ol0ll0] = ooolO;
o01Ol[ooloOO] = llOOo;
o01Ol[ol11o1] = OO110;
o01Ol[Oooo1l] = oO100;
o01Ol[l1O1O] = oo000;
o01Ol[ol0O01] = ol000;
o01Ol[O0l01o] = lOool;
o01Ol[lOOoOo] = l0o1O;
o01Ol[oO0O1] = lOlo0;
o01Ol[o11lOO] = l101l;
o01Ol[oOOOoo] = oolo1;
o01Ol[OOll1o] = OoOoo;
o01Ol[lol0l0] = lOOOl1;
o01Ol[OlOl0O] = oOl1l;
o01Ol.OO1o11 = o11ll1;
o01Ol[l01lo0] = o0lOl;
o01Ol.lo00 = O1O11;
o01Ol.l1OoOo = ll000;
o01Ol[O0lOl0] = o0O0O;
o01Ol[olOOll] = lOol1;
o01Ol[O0llll] = Olooo;
o01Ol[OO1l00] = lOO0o;
o01Ol[lO1O10] = ooOO1;
o01Ol[O1O1lO] = loOll;
o01Ol[oO0l1l] = loo1O;
o01Ol[ol0Ooo] = o0lOls;
o01Ol[lol1ll] = OOO00;
o01Ol[Oo0Ol] = Oo01o;
o01Ol.oOOO = loO0l;
o01Ol.loll00 = llOO0;
o01Ol.llooo = lOoO1;
o01Ol[oloOoo] = lol0o;
o01Ol[lO0l01] = OlO0l;
o01Ol[l1OOl1] = OlO0o;
oloo(ol01oo, "outlookbar");
oo100l = function() {
    oo100l[lOO1lo][o1lOol][lOlOo1](this);
    this.data = []
};
O01o(oo100l, ol01oo, {
    url: "",
    textField: "text",
    iconField: "iconCls",
    urlField: "url",
    resultAsTree: false,
    itemsField: "children",
    idField: "id",
    parentField: "pid",
    style: "width:100%;height:100%;",
    uiCls: "mini-outlookmenu",
    lOoO: null,
    autoCollapse: true,
    activeIndex: 0
});
o0O0o = oo100l[O010O1];
o0O0o.l1O1o = l001o;
o0O0o.o11l = O0OoO;
o0O0o[O0Ol11] = o1111;
o0O0o[Ol1oO0] = O1l10;
o0O0o[lllOl] = ooOl1;
o0O0o[oOloOO] = ll101;
o0O0o[l101OO] = l1lOo;
o0O0o[OOO0lO] = o0OOo;
o0O0o[oOoloO] = l1O0O;
o0O0o[O1oll] = O1olo;
o0O0o[Olo00o] = l1oOo;
o0O0o[oloo0] = oO1o1;
o0O0o[O1Oll0] = l1OoO;
o0O0o[O0o0OO] = o01O0;
o0O0o[oOlOoo] = l1lOosField;
o0O0o[ol010O] = o0oO1;
o0O0o[o01001] = o1o11;
o0O0o[o1l001] = o1Ooo;
o0O0o[OOlO01] = lOOOo;
o0O0o[OO001] = O001l;
o0O0o[O0l11o] = Oo100;
o0O0o[lo0Ol0] = l1lO0;
o0O0o[O00lo0] = l1ol1;
o0O0o[ol0011] = ll0oO;
o0O0o[Olo01l] = O001o;
o0O0o[oOl00O] = OlO10;
o0O0o[O0OOlO] = O110O;
o0O0o[Ol1l0l] = O10ol;
o0O0o[OO1oOl] = O10olList;
o0O0o.Ol0O1l = ooooO;
o0O0o.O0O00oFields = o0oOo;
o0O0o[loooll] = OO000;
o0O0o[l1OOl1] = lO1l1;
oloo(oo100l, "outlookmenu");
OllO0o = function() {
    OllO0o[lOO1lo][o1lOol][lOlOo1](this);
    this.data = []
};
O01o(OllO0o, ol01oo, {
    url: "",
    textField: "text",
    iconField: "iconCls",
    urlField: "url",
    resultAsTree: false,
    nodesField: "children",
    idField: "id",
    parentField: "pid",
    style: "width:100%;height:100%;",
    uiCls: "mini-outlooktree",
    lOoO: null,
    expandOnLoad: false,
    autoCollapse: true,
    activeIndex: 0
});
o0o1O = OllO0o[O010O1];
o0o1O.o010 = o0o0o;
o0o1O.l1oO1o = OO1lo;
o0o1O[o001OO] = loloo;
o0o1O[l110l1] = loO11;
o0o1O[Ol1oO0] = ll110;
o0o1O[oO0O1] = O0Ool;
o0o1O[o11lOO] = OOoOO;
o0o1O[lO1O11] = Olll1;
o0o1O[oOloOO] = lolo0;
o0o1O[l101OO] = O1ool;
o0o1O[OOO0lO] = oO10o;
o0o1O[l0O0lo] = ll1l1;
o0o1O[oOoloO] = Oo0ll;
o0o1O[O1oll] = lo0o1;
o0o1O[Olo00o] = lO10O;
o0o1O[oloo0] = O0OO0;
o0o1O[O1Oll0] = o10O0;
o0o1O[O0o0OO] = oOOoo;
o0o1O[oOlOoo] = O1oolsField;
o0o1O[ol010O] = OoO01;
o0o1O[o01001] = looOl;
o0o1O[o1l001] = Oll11;
o0o1O[OOlO01] = l01lO;
o0o1O[OO001] = l0o10;
o0o1O[O0l11o] = oOoO0;
o0o1O[lo0Ol0] = lll0O;
o0o1O[O00lo0] = l0Ool;
o0o1O[ol0011] = O0ooO;
o0o1O[Olo01l] = O1oOl;
o0o1O[oOl00O] = O0Oo1;
o0o1O[o1010o] = O1llo;
o0o1O[O0OOlO] = l1oO1;
o0o1O[Ol1l0l] = ooOl;
o0o1O[OO1oOl] = ooOlList;
o0o1O.Ol0O1l = OllO0;
o0o1O.O0O00oFields = o1O00;
o0o1O[loooll] = O01OO;
o0o1O[l1OOl1] = o0lO0;
oloo(OllO0o, "outlooktree");
mini.NavBar = function() {
    mini.NavBar[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.NavBar, ol01oo, {
    uiCls: "mini-navbar"
});
oloo(mini.NavBar, "navbar");
mini.NavBarMenu = function() {
    mini.NavBarMenu[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.NavBarMenu, oo100l, {
    uiCls: "mini-navbarmenu"
});
oloo(mini.NavBarMenu, "navbarmenu");
mini.NavBarTree = function() {
    mini.NavBarTree[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.NavBarTree, OllO0o, {
    uiCls: "mini-navbartree"
});
oloo(mini.NavBarTree, "navbartree");
mini.ToolBar = function() {
    mini.ToolBar[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.ToolBar, mini.Container, {
    _clearBorder: false,
    style: "",
    uiCls: "mini-toolbar",
    _create: function() {
        this.el = document.createElement("div");
        this.el.className = "mini-toolbar"
    },
    _initEvents: function() {},
    doLayout: function() {
        if (!this[ollOO1]()) return;
        var A = mini[l1olOo](this.el, true);
        for (var $ = 0,
        _ = A.length; $ < _; $++) mini.layout(A[$])
    },
    set_bodyParent: function($) {
        if (!$) return;
        this.el = $;
        this[O0lOl0]()
    },
    getAttrs: function($) {
        var _ = {};
        mini[ll1O1o]($, _, ["id", "borderStyle"]);
        this.el = $;
        this.el.uid = this.uid;
        this[o1olO1](this.uiCls);
        return _
    }
});
oloo(mini.ToolBar, "toolbar");
l0O1lO = function() {
    l0O1lO[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(l0O1lO, o0oo1l, {
    pageIndex: 0,
    pageSize: 10,
    totalCount: 0,
    totalPage: 0,
    showPageIndex: true,
    showPageSize: true,
    showTotalCount: true,
    showPageInfo: true,
    showReloadButton: true,
    _clearBorder: false,
    showButtonText: false,
    showButtonIcon: true,
    firstText: "\u9996\u9875",
    prevText: "\u4e0a\u4e00\u9875",
    nextText: "\u4e0b\u4e00\u9875",
    lastText: "\u5c3e\u9875",
    pageInfoText: "\u6bcf\u9875 {0} \u6761,\u5171 {1} \u6761",
    sizeList: [10, 20, 50, 100],
    uiCls: "mini-pager"
});
l0o0OO = l0O1lO[O010O1];
l0o0OO[Ol1oO0] = oOO0o;
l0o0OO[lOo1ol] = OoolO;
l0o0OO.Ol11l1 = Ooo1;
l0o0OO.o0O0l = o01O1;
l0o0OO[OO0loO] = Ol010l;
l0o0OO[O11ooO] = l111;
l0o0OO[olO0o0] = OOOO1;
l0o0OO[l1l11O] = Ollol1;
l0o0OO[o11ll0] = Ooo00;
l0o0OO[oolllo] = Oo00;
l0o0OO[oOoooO] = l00OO;
l0o0OO[l1OOO0] = l0oO1;
l0o0OO[o10001] = o1O1;
l0o0OO[l01ool] = oo01;
l0o0OO[l0OloO] = ooo0Oo;
l0o0OO[Ooo1Ol] = O011lO;
l0o0OO[l0Oo0o] = l1o011;
l0o0OO[lol01l] = OolOO;
l0o0OO[oo001O] = Oo0oO;
l0o0OO[o1Oo0O] = lOO11;
l0o0OO[olOo11] = oO00O;
l0o0OO[oo0Ol0] = oOl0o0;
l0o0OO[Oo0olo] = ooOoO;
l0o0OO[oolOo] = OoooOO;
l0o0OO[O0lOl0] = lOl1o;
l0o0OO[oloOoo] = l001Oo;
l0o0OO[loooll] = OooooO;
l0o0OO[O1l10l] = ll01o;
l0o0OO[oOo000] = lolOO0;
l0o0OO[lO0l01] = o1110;
oloo(l0O1lO, "pager");
l11ol0 = function() {
    this.data = [];
    this.oooOo0 = {};
    this.O0l11l = [];
    this.l1l0O1 = {};
    this.columns = [];
    this.OOOoO1 = [];
    this.OO1oO1 = {};
    this.lO0OlO = {};
    this.lOlll = [];
    this.OlO01O = {};
    this._cellErrors = [];
    this._cellMapErrors = {};
    l11ol0[lOO1lo][o1lOol][lOlOo1](this);
    this[olOOll]();
    var $ = this;
    setTimeout(function() {
        if ($.autoLoad) $[o0OOlo]()
    },
    1)
};
lo1oo0 = 0;
l000o1 = 0;
O01o(l11ol0, o0oo1l, {
    loOOOl: "block",
    width: 300,
    height: "auto",
    allowCellValid: false,
    cellEditAction: "cellclick",
    showEmptyText: false,
    emptyText: "No data returned.",
    showModified: true,
    minWidth: 300,
    minHeight: 150,
    maxWidth: 5000,
    maxHeight: 3000,
    _viewRegion: null,
    _virtualRows: 50,
    virtualScroll: false,
    allowCellWrap: false,
    allowHeaderWrap: false,
    showColumnsMenu: false,
    bodyCls: "",
    bodyStyle: "",
    footerCls: "",
    footerStyle: "",
    pagerCls: "",
    pagerStyle: "",
    idField: "id",
    data: [],
    columns: null,
    allowResize: false,
    selectOnLoad: false,
    _rowIdField: "_uid",
    columnWidth: 120,
    columnMinWidth: 20,
    columnMaxWidth: 2000,
    fitColumns: true,
    autoHideRowDetail: true,
    showHeader: true,
    showFooter: true,
    showTop: false,
    showHGridLines: true,
    showVGridLines: true,
    showFilterRow: false,
    showSummaryRow: false,
    sortMode: "server",
    allowSortColumn: true,
    allowMoveColumn: true,
    allowResizeColumn: true,
    enableHotTrack: true,
    allowRowSelect: true,
    multiSelect: false,
    allowAlternating: false,
    oooll: "mini-grid-row-alt",
    allowUnselect: false,
    OO1lOo: "mini-grid-frozen",
    ll0lo0: "mini-grid-frozenCell",
    frozenStartColumn: -1,
    frozenEndColumn: -1,
    Olo01: "mini-grid-row",
    O0ool: "mini-grid-row-hover",
    Ol1l1l: "mini-grid-row-selected",
    _headerCellCls: "mini-grid-headerCell",
    _cellCls: "mini-grid-cell",
    uiCls: "mini-datagrid",
    O0ol1l: true,
    showNewRow: true,
    _rowHeight: 23,
    _o11o0: true,
    pageIndex: 0,
    pageSize: 10,
    totalCount: 0,
    totalPage: 0,
    showPageInfo: true,
    pageIndexField: "pageIndex",
    pageSizeField: "pageSize",
    sortFieldField: "sortField",
    sortOrderField: "sortOrder",
    totalField: "total",
    showPageSize: true,
    showPageIndex: true,
    showTotalCount: true,
    sortField: "",
    sortOrder: "",
    url: "",
    autoLoad: false,
    loadParams: null,
    ajaxAsync: true,
    ajaxMethod: "post",
    showLoading: true,
    resultAsData: false,
    checkSelectOnLoad: true,
    totalField: "total",
    dataField: "data",
    allowCellSelect: false,
    allowCellEdit: false,
    O0o1l: "mini-grid-cell-selected",
    O11OO: null,
    OlOo11: null,
    olOoOo: null,
    O1OoOl: null,
    editNextOnEnterKey: false,
    editOnTabKey: true,
    createOnEnter: false,
    OO0Oll: "_uid",
    o1001l: true,
    autoCreateNewID: false,
    collapseGroupOnLoad: false,
    showGroupSummary: false,
    OOO0O0: 1,
    l1O0Ol: "",
    OO00ll: "",
    lOoO: null,
    lOlll: [],
    headerContextMenu: null,
    columnsMenu: null
});
OOo0O = l11ol0[O010O1];
OOo0O[Ol1oO0] = OO100;
OOo0O[l1oO0O] = olo1O;
OOo0O[oOl1oo] = lOOo1;
OOo0O[l100ol] = ll1l;
OOo0O[ololl] = O0011;
OOo0O[OO0ll1] = lOlO;
OOo0O[o1lloO] = o00l1;
OOo0O[ol0101] = l0o01;
OOo0O[oOOOO0] = o1O1o1;
OOo0O[Ooo10O] = lOllO;
OOo0O[OlOOlo] = l01O;
OOo0O[lOloo0] = O0Ooo1;
OOo0O[Oo11ol] = o1oo0;
OOo0O[oolll0] = o10l0;
OOo0O.lloOO0ColumnsMenu = ll10l1;
OOo0O[Ol1lOo] = o0Oo;
OOo0O[oo1OoO] = ol1oo;
OOo0O[o1010O] = OolOl;
OOo0O.ooO011 = o00l0;
OOo0O[OlollO] = ol0OOO;
OOo0O[oOOool] = lOOoo;
OOo0O[l0lOo] = Ol10;
OOo0O[lOOol] = O00lll;
OOo0O.lO1lSummaryCell = oo0O0;
OOo0O[Oo01l0] = Ol00O;
OOo0O.Ol0O0 = Olo1;
OOo0O.ol1l = O0l01;
OOo0O.o0oOlo = oOl1O;
OOo0O.O01O0 = OO0Oo;
OOo0O.lo0ooO = o1oO0;
OOo0O.ll0ool = lo10O;
OOo0O.o0Ol = lOlO1;
OOo0O.Ooolo = ooo0O;
OOo0O.oOlO11 = Ollll;
OOo0O.Oll11o = O0loO;
OOo0O.lo01oo = o0ool;
OOo0O[ool10o] = O010o;
OOo0O.Olllo1 = OlO01;
OOo0O.o1o1 = lO0O0;
OOo0O.lO1lo = O000O;
OOo0O.l01l00 = l0ooO;
OOo0O.Ol0ll = o1Ol;
OOo0O[OOo0o0] = lO1o;
OOo0O[OOol00] = Ol1l1;
OOo0O.OOo0lO = ollol;
OOo0O.OllooO = ol1O;
OOo0O.O0lOOl = loool;
OOo0O[ll1o00] = lO10l;
OOo0O[Oo11O] = Ol01l;
OOo0O[o0001l] = oOOOO;
OOo0O[o1O1o0] = Ooo1o;
OOo0O[Ooo1OO] = ol0o0;
OOo0O[o1o001] = O1llO;
OOo0O[ololO1] = OO0l11;
OOo0O[O0l010] = o00l0O;
OOo0O[l0llO0] = oooO;
OOo0O[O1oll] = Oo1l0;
OOo0O[lOo011] = OOOl1;
OOo0O[O0Olol] = llOO10;
OOo0O[l1OOlO] = Oo1l0s;
OOo0O[oloo11] = ooool;
OOo0O[lOoOoO] = ol10;
OOo0O[l1o1OO] = OOl1;
OOo0O[Oo1O11] = lloo0;
OOo0O[OOllo1] = ll00O;
OOo0O[o1lo11] = ooll0;
OOo0O[oO1O0O] = O11o;
OOo0O[l1Oll0] = o1oll;
OOo0O.oOO100 = Olol1;
OOo0O.Ol0l0l = o11lO;
OOo0O[oO0oOo] = o1Oo0l;
OOo0O[o1loOO] = Ol00l;
OOo0O[oOlloo] = Ololl;
OOo0O[ll1O0o] = o10o1;
OOo0O[llOll0] = OooOO;
OOo0O[O1OOO1] = loOOo;
OOo0O[Ol00l0] = l1oloO;
OOo0O.lO1l = lO111;
OOo0O.Olll = O1101;
OOo0O.o1l0 = O1O1;
OOo0O[Oo0OO] = oll1o0;
OOo0O[olo0oO] = O10Ol;
OOo0O[l1lo0l] = O010Ol;
OOo0O[oll1l1] = l00oo;
OOo0O[O10101] = ollO0;
OOo0O.lOolO1 = oO000;
OOo0O.O0l0o = ol0lo;
OOo0O[loo1oo] = oloo1;
OOo0O[lolll0] = lOOo01;
OOo0O[O0o00o] = O1o0O;
OOo0O[oo11l1] = o1l1l;
OOo0O[oooOOo] = OOol0;
OOo0O[Oo0OOo] = lOO0;
OOo0O[O11o00] = loo0o;
OOo0O[Ooo1ol] = loo0os;
OOo0O[O11loo] = loOOO;
OOo0O[olOlo0] = oO0OO;
OOo0O[llOll1] = l1loOo;
OOo0O[Ol0o0] = oO11oo;
OOo0O[OoOO11] = o0llO;
OOo0O[o0lllO] = ll0lo;
OOo0O[o100ol] = olO00;
OOo0O[O0oOOl] = O011o;
OOo0O[o0o0o1] = l1O1l0;
OOo0O[ll010O] = o1oO1;
OOo0O[oOlOol] = ll0l1;
OOo0O[oO000O] = ll0l1s;
OOo0O[Ooloo0] = O0o0;
OOo0O[o11lo1] = lllll;
OOo0O[oll1ol] = O0o0s;
OOo0O[o010Ol] = loOl01;
OOo0O[O0ol1o] = loOl01s;
OOo0O[l0Ol11] = o011o1;
OOo0O[OO11oO] = Olool;
OOo0O.O11olO = OOlO1;
OOo0O.l0ooo1 = Oo1Oo;
OOo0O.OollO1 = lOo00;
OOo0O[OOllOO] = o1OO1;
OOo0O[o10olo] = OlOOo;
OOo0O[OOllOO] = o1OO1;
OOo0O[O00OoO] = O1ol1;
OOo0O[ll0llo] = ooOoo;
OOo0O[Oo001l] = O0lol;
OOo0O[l1l0ll] = O0lols;
OOo0O[loOoOO] = oOooO;
OOo0O[l11l0o] = l0O11;
OOo0O[oo0101] = lo000;
OOo0O[l1oOll] = ooo00;
OOo0O[OO1OO] = OO1O0;
OOo0O[O00ol0] = o01oO;
OOo0O[ollloo] = l0O1l;
OOo0O[oollo0] = l01l1;
OOo0O.oo0000 = Ol1l0;
OOo0O.OoO111 = oOll0;
OOo0O.ol0o11 = O1l0O;
OOo0O.lOoo1O = lO1Oo;
OOo0O.l11lOo = Oll0oo;
OOo0O.o111l = o1ooo;
OOo0O.l1ol1o = o1ooO;
OOo0O[o1101O] = ooOOO;
OOo0O[O1o1o0] = oloO;
OOo0O[O1oooO] = lll01;
OOo0O[ol1O1O] = lo000Cell;
OOo0O[ll0olO] = ooO1;
OOo0O[l10o0O] = o00o1;
OOo0O[o00loo] = oo1oO;
OOo0O[llOOoo] = O1100;
OOo0O[O1olO1] = ollll;
OOo0O[O0o1l0] = OOOl1Cell;
OOo0O[oOO1O1] = llOO10Cell;
OOo0O.lO0O = o1oo;
OOo0O[OlOo0o] = lo1lO;
OOo0O[ooOl0O] = l1lol;
OOo0O[OoOO1o] = ooOo1O;
OOo0O[o0l0l1] = OOO1o;
OOo0O[o0OOlo] = O0ll;
OOo0O[Ol1l0l] = l0OO;
OOo0O.Ol0O1l = oo10l;
OOo0O[oolOoo] = llOl;
OOo0O.oooloO = lOo10l;
OOo0O[l1lOlo] = Oo0l1O;
OOo0O[ololo0] = OOlOo;
OOo0O[O11ooO] = l1ooo;
OOo0O[oo001O] = ollOo;
OOo0O[o1Oo0O] = o0OlO;
OOo0O[oOoOO1] = l0oo1;
OOo0O[o0o1lo] = OOlol;
OOo0O[O0O0lO] = l1O1ll;
OOo0O[o00100] = Ol101;
OOo0O[ol0oO1] = OOO1l;
OOo0O[o0lllo] = llllO;
OOo0O[Ol10Oo] = l0oo1Field;
OOo0O[o0looo] = O0l0;
OOo0O[OOooO1] = OOlolField;
OOo0O[olOloO] = oOO0;
OOo0O[l0O0O1] = Ol0Ol;
OOo0O[ooO1lo] = Ol1O0;
OOo0O[o1o0oO] = o0l0OO;
OOo0O[ooo1o1] = oO10l;
OOo0O[oOoooO] = l10O1;
OOo0O[l1OOO0] = O1o0l;
OOo0O[o10001] = o1lll;
OOo0O[l01ool] = o0lOO;
OOo0O[l0OloO] = lO1l0;
OOo0O[Ooo1Ol] = OO00O0;
OOo0O[Oo0olo] = Oll0o;
OOo0O[oolOo] = l1lo0;
OOo0O[olOo11] = l0lO;
OOo0O[oo0Ol0] = o100;
OOo0O[l0Oo0o] = llool;
OOo0O[lol01l] = oolo;
OOo0O[o11ll0] = lOo10;
OOo0O[oolllo] = loo1l;
OOo0O[olO0o0] = loOlo;
OOo0O[l1l11O] = o1o1O;
OOo0O.O1ll11 = O1looO;
OOo0O.OOOo = OllO1;
OOo0O.lo1ol = OlOo1;
OOo0O.Ol10ol = o1ll1;
OOo0O.O00O0l = lO01O;
OOo0O.O1l1OO = llooO;
OOo0O[l0oOoo] = oO11ooDetailCellEl;
OOo0O[Ol11o] = oO11ooDetailEl;
OOo0O[looo00] = lOoOl;
OOo0O[l1lo00] = Ol00o;
OOo0O[Oo11ll] = o1lOl1;
OOo0O[O0OOl] = l10oOl;
OOo0O[oOOo01] = o0ollo;
OOo0O[oo10oo] = O0o10;
OOo0O[o10lOO] = O11O0;
OOo0O[l0OOO0] = ooOo;
OOo0O[lll0o1] = lOoll;
OOo0O[O0olO0] = oOo11;
OOo0O[l00OOo] = oOOOl;
OOo0O[oOoo00] = lOOl1;
OOo0O[ol0lOl] = l0l1O;
OOo0O[lO0oO0] = l011o;
OOo0O[oOo0l0] = l0lo0;
OOo0O[o1O111] = OOooO;
OOo0O[llo111] = looOo;
OOo0O[oolll1] = OO1O;
OOo0O[oOOl1O] = oO1lOo;
OOo0O[O0ol11] = oOoOO;
OOo0O[O01oo1] = OlOlO;
OOo0O[l0ollO] = lo111;
OOo0O[o10oll] = oO1lOoColumn;
OOo0O[ol0o1l] = oOoOOColumn;
OOo0O[oO0000] = O1ooo;
OOo0O[l0011o] = lolll;
OOo0O[o1O00o] = ll0o0;
OOo0O[O11Ol1] = ol0o;
OOo0O[OOlo1l] = Olo11;
OOo0O[o0l011] = O0100;
OOo0O[ll0oo0] = l011Oo;
OOo0O[ll11l0] = OoO0;
OOo0O[o1Ol1] = olOOlO;
OOo0O[Oo1OOO] = O0110;
OOo0O[l0oo0o] = Oll01;
OOo0O[lO100o] = l110Oo;
OOo0O[O01o0l] = OO0OO;
OOo0O[lO10O0] = oll1O;
OOo0O[l0l01l] = Ool1;
OOo0O[Oll00o] = olo01o;
OOo0O[oll0Oo] = OoOo0;
OOo0O[l0ol0o] = o1Oloo;
OOo0O[lol10l] = o0lO1;
OOo0O[Oolll1] = lO0l;
OOo0O[OOl1Oo] = l10o0;
OOo0O[lo101o] = Oool0;
OOo0O[o1ll10] = l11o1;
OOo0O[ooOl1l] = l1o0O1;
OOo0O[O0OoOO] = OoO00;
OOo0O[oloOll] = Ooo11;
OOo0O[Olo11l] = o1O1o;
OOo0O[O0O01l] = Ooloo;
OOo0O[l00O1o] = o0O00;
OOo0O[OlO1ll] = o0ooo;
OOo0O[OOoOOO] = l110OoMenu;
OOo0O[l00l0O] = OO0OOMenu;
OOo0O[l011Ol] = Oo1o1;
OOo0O[l0o1O0] = lO100l;
OOo0O[lllo11] = ol00l;
OOo0O[l101O0] = o1lO;
OOo0O[O01lll] = l1o0l;
OOo0O[o0oO1o] = olll0;
OOo0O[O01110] = ll0O0;
OOo0O[O01olo] = l1o00;
OOo0O[ll1o0O] = lOoo;
OOo0O.O1O00 = olo1l;
OOo0O[oo1oo0] = lolOl;
OOo0O[l1ollo] = o110;
OOo0O[l0lOO1] = l001O0;
OOo0O[OOooo1] = O10oO;
OOo0O[O11OoO] = oOo10;
OOo0O[ooollO] = O1110;
OOo0O[OlOooO] = Oooo0;
OOo0O[OOO1Oo] = oO0ll;
OOo0O[OoOlll] = o1O11;
OOo0O.OloO = O1l00;
OOo0O[ooOl1o] = o0lO;
OOo0O.Oo1ol1 = O1o1O;
OOo0O.lllo = loo11;
OOo0O[ollllo] = l101o;
OOo0O[o1O0ll] = O1lol;
OOo0O[o11llO] = lOOo;
OOo0O._O1O0Ol = lOol0;
OOo0O[Oolool] = o0l10;
OOo0O[o10o10] = O1oOo;
OOo0O[lOOO01] = o11o1;
OOo0O[lOOOo1] = lo0l0;
OOo0O[O0Oo11] = l00O0;
OOo0O[o0Oo0] = Ol1O1;
OOo0O[l010ol] = l0oo0;
OOo0O._Ooo0l = lo1l;
OOo0O.o00lo = oOO01;
OOo0O.o1lo = lo11oo;
OOo0O[O1O00O] = OO1l1;
OOo0O[O01l01] = Olol0;
OOo0O[oo1o0l] = oO11oosBox;
OOo0O[oOOo1l] = oO11ooBox;
OOo0O[lo1Ol] = O00o1;
OOo0O.l1111O = o0oo;
OOo0O[ol1oll] = o0ol0;
OOo0O[oolo0O] = OolO0;
OOo0O[ll0ol0] = o1o1o;
OOo0O.l001lo = llooOId;
OOo0O.ol0l = olOoo;
OOo0O.ll0O1O = o1llo;
OOo0O.O11lo = l0Ol0;
OOo0O.lolOOo = O0OO00;
OOo0O.Oo1o0 = loo00;
OOo0O[o0loO1] = ol0lO;
OOo0O[ll0oOo] = olOol;
OOo0O[ll11o0] = l01O0O;
OOo0O[l10100] = OO01ol;
OOo0O[l0lOlo] = o0001;
OOo0O[O0lOl0] = O10l0;
OOo0O.Ol01 = l00o;
OOo0O.oOlllO = Ol1Oo;
OOo0O[olOOll] = l0o001;
OOo0O[loO1l0] = OOOOOO;
OOo0O[oo0oOl] = loOO0;
OOo0O.o0lOOl = oolll;
OOo0O[lO100O] = OlOoO;
OOo0O[Oo01Ol] = l0O1O;
OOo0O.lo0ll = O0l11;
OOo0O.OO1oolText = O1o1;
OOo0O.Olo1o1 = lOOO0;
OOo0O.l01l1o = oO0o;
OOo0O.o11OO = Oo0Oo0;
OOo0O.looO0O = OloO1;
OOo0O[Olllll] = ooO1l;
OOo0O[Ollo0l] = lo00o;
OOo0O[oo0o0O] = OOoo1;
OOo0O[l010l1] = O1O1l;
OOo0O[ooo00l] = OO0l11Range;
OOo0O[oOoO0O] = oOl0o1;
OOo0O[OOOOlO] = oollo;
OOo0O[o1010o] = o10OlO;
OOo0O[O0OOlO] = oo110;
OOo0O[oOOOll] = l0OOData;
OOo0O[l0O11l] = o001l;
OOo0O[oolOl0] = o10O1;
OOo0O[llo1OO] = O0o00;
OOo0O[lOllOo] = l00O11;
OOo0O[Olo01l] = lOOo0;
OOo0O[oOl00O] = lo0OO;
OOo0O[O1Oll0] = o0OO;
OOo0O[O0o0OO] = oOOO0o;
OOo0O[oO1o1O] = lo1o0;
OOo0O[O10lo0] = ol1lO;
OOo0O[l0lOo1] = ol1lOButtons;
OOo0O.o1001 = OlOol;
OOo0O[lo0OOl] = O01l0;
OOo0O.lloOO0Rows = oOOl;
OOo0O[oloOoo] = O1l0o;
OOo0O[loooll] = OO11;
OOo0O[lO0l01] = o01lo;
OOo0O[l1OOl1] = Ol10l;
OOo0O[Ol0l0O] = o0ll1;
oloo(l11ol0, "datagrid");
l1oO = {
    _getColumnEl: function($) {
        $ = this[Ol1Oo1]($);
        if (!$) return null;
        var _ = this.ll1l0($);
        return document.getElementById(_)
    },
    l11ol1: function($, _) {
        $ = this[Ol0o0] ? this[Ol0o0]($) : this[l101OO]($);
        _ = this[Ol1Oo1](_);
        if (!$ || !_) return null;
        var A = this.O11lo($, _);
        return document.getElementById(A)
    },
    o110l0: function(A) {
        var $ = this.lO1lo ? this.lO1lo(A) : this[o0O0oo](A),
        _ = this.OOo1OO(A);
        return {
            record: $,
            column: _
        }
    },
    OOo1OO: function(B) {
        var _ = O01l0O(B.target, this._cellCls);
        if (!_) _ = O01l0O(B.target, this._headerCellCls);
        if (_) {
            var $ = _.id.split("$"),
            A = $[$.length - 1];
            return this.OOolO(A)
        }
        return null
    },
    ll1l0: function($) {
        return this.uid + "$column$" + $._id
    },
    getColumnBox: function(A) {
        var B = this.ll1l0(A),
        _ = document.getElementById(B);
        if (_) {
            var $ = O101o(_);
            $.x -= 1;
            $.left = $.x;
            $.right = $.x + $.width;
            return $
        }
    },
    setColumns: function(value) {
        if (!mini.isArray(value)) value = [];
        this.columns = value;
        this.OO1oO1 = {};
        this.lO0OlO = {};
        this.OOOoO1 = [];
        this.maxColumnLevel = 0;
        var level = 0;
        function init(column, index, parentColumn) {
            if (column.type) {
                if (!mini.isNull(column.header) && typeof column.header !== "function") if (column.header.trim() == "") delete column.header;
                var col = mini[lO01lo](column.type);
                if (col) {
                    var _column = mini.copyTo({},
                    column);
                    mini.copyTo(column, col);
                    mini.copyTo(column, _column)
                }
            }
            var width = parseInt(column.width);
            if (mini.isNumber(width) && String(width) == column.width) column.width = width + "px";
            if (mini.isNull(column.width)) column.width = this[loOl0O] + "px";
            column.visible = column.visible !== false;
            column[O0lOlo] = column[O0lOlo] !== false;
            column.allowMove = column.allowMove !== false;
            column.allowSort = column.allowSort === true;
            column.allowDrag = !!column.allowDrag;
            column[Oo0o1l] = !!column[Oo0o1l];
            column.autoEscape = !!column.autoEscape;
            if (!column._id) column._id = l000o1++;
            column._gridUID = this.uid;
            column[ol0l0] = this[ol0l0];
            column._pid = parentColumn == this ? -1 : parentColumn._id;
            this.OO1oO1[column._id] = column;
            if (column.name) this.lO0OlO[column.name] = column;
            if (!column.columns || column.columns.length == 0) this.OOOoO1.push(column);
            column.level = level;
            level += 1;
            this[o0ll1l](column, init, this);
            level -= 1;
            if (column.level > this.maxColumnLevel) this.maxColumnLevel = column.level;
            if (typeof column.editor == "string") {
                var cls = mini.getClass(column.editor);
                if (cls) column.editor = {
                    type: column.editor
                };
                else column.editor = eval("(" + column.editor + ")")
            }
            if (typeof column[l01l10] == "string") column[l01l10] = eval("(" + column[l01l10] + ")");
            if (column[l01l10] && !column[l01l10].el) column[l01l10] = mini.create(column[l01l10]);
            if (typeof column.init == "function" && column.inited != true) column.init(this);
            column.inited = true
        }
        this[o0ll1l](this, init, this);
        if (this.l01l1o) this.l01l1o();
        this[olOOll]();
        this[lOooO0]("columnschanged")
    },
    getColumns: function() {
        return this.columns
    },
    getBottomColumns: function() {
        return this.OOOoO1
    },
    getVisibleColumns: function() {
        var B = this[O0Oll](),
        A = [];
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var _ = B[$];
            if (_.visible) A.push(_)
        }
        return A
    },
    getBottomVisibleColumns: function() {
        var A = [];
        for (var $ = 0,
        B = this.OOOoO1.length; $ < B; $++) {
            var _ = this.OOOoO1[$];
            if (this[O0oOOO](_)) A.push(_)
        }
        return A
    },
    eachColumns: function(B, F, C) {
        var D = B.columns;
        if (D) {
            var _ = D.clone();
            for (var A = 0,
            E = _.length; A < E; A++) {
                var $ = _[A];
                if (F[lOlOo1](C, $, A, B) === false) break
            }
        }
    },
    getColumn: function($) {
        var _ = typeof $;
        if (_ == "number") return this[O0Oll]()[$];
        else if (_ == "object") return $;
        else return this.lO0OlO[$]
    },
    getColumnByField: function(A) {
        if (!A) return;
        var B = this[O0Oll]();
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var _ = B[$];
            if (_.field == A) return _
        }
        return _
    },
    OOolO: function($) {
        return this.OO1oO1[$]
    },
    getParentColumn: function($) {
        $ = this[Ol1Oo1]($);
        var _ = $._pid;
        if (_ == -1) return this;
        return this.OO1oO1[_]
    },
    getAncestorColumns: function(A) {
        var _ = [];
        while (1) {
            var $ = this[lllllO](A);
            if (!$ || $ == this) break;
            _[_.length] = $;
            A = $
        }
        _.reverse();
        return _
    },
    isAncestorColumn: function(_, B) {
        if (_ == B) return true;
        if (!_ || !B) return false;
        var A = this[O10o0](B);
        for (var $ = 0,
        C = A.length; $ < C; $++) if (A[$] == _) return true;
        return false
    },
    isVisibleColumn: function(_) {
        _ = this[Ol1Oo1](_);
        var A = this[O10o0](_);
        for (var $ = 0,
        B = A.length; $ < B; $++) if (A[$].visible == false) return false;
        return true
    },
    updateColumn: function(_, $) {
        _ = this[Ol1Oo1](_);
        if (!_) return;
        mini.copyTo(_, $);
        this[l0100](this.columns)
    },
    removeColumn: function($) {
        $ = this[Ol1Oo1]($);
        var _ = this[lllllO]($);
        if ($ && _) {
            _.columns.remove($);
            this[l0100](this.columns)
        }
        return $
    },
    moveColumn: function(C, _, A) {
        C = this[Ol1Oo1](C);
        _ = this[Ol1Oo1](_);
        if (!C || !_ || !A || C == _) return;
        if (this[o0l111](C, _)) return;
        var D = this[lllllO](C);
        if (D) D.columns.remove(C);
        var B = _,
        $ = A;
        if ($ == "before") {
            B = this[lllllO](_);
            $ = B.columns[o0lllO](_)
        } else if ($ == "after") {
            B = this[lllllO](_);
            $ = B.columns[o0lllO](_) + 1
        } else if ($ == "add" || $ == "append") {
            if (!B.columns) B.columns = [];
            $ = B.columns.length
        } else if (!mini.isNumber($)) return;
        B.columns.insert($, C);
        this[l0100](this.columns)
    },
    hideColumns: function(A) {
        if (this[olo0l]) this[O1o1o0]();
        for (var $ = 0,
        B = A.length; $ < B; $++) {
            var _ = this[Ol1Oo1](A[$]);
            if (!_) continue;
            _.visible = false
        }
        this[l0100](this.columns)
    },
    showColumns: function(A) {
        if (this[olo0l]) this[O1o1o0]();
        for (var $ = 0,
        B = A.length; $ < B; $++) {
            var _ = this[Ol1Oo1](A[$]);
            if (!_) continue;
            _.visible = true
        }
        this[l0100](this.columns)
    },
    hideColumn: function($) {
        $ = this[Ol1Oo1]($);
        if (!$) return;
        if (this[olo0l]) this[O1o1o0]();
        $.visible = false;
        this[l0100](this.columns)
    },
    showColumn: function($) {
        $ = this[Ol1Oo1]($);
        if (!$) return;
        if (this[olo0l]) this[O1o1o0]();
        $.visible = true;
        this[l0100](this.columns)
    },
    ooOoO1: function() {
        var _ = this[oO11](),
        D = [];
        for (var C = 0,
        F = _; C <= F; C++) D.push([]);
        function A(C) {
            var D = mini[lo1oOl](C.columns, "columns"),
            A = 0;
            for (var $ = 0,
            B = D.length; $ < B; $++) {
                var _ = D[$];
                if (_.visible != true || _._hide == true) continue;
                if (!_.columns || _.columns.length == 0) A += 1
            }
            return A
        }
        var $ = mini[lo1oOl](this.columns, "columns");
        for (C = 0, F = $.length; C < F; C++) {
            var E = $[C],
            B = D[E.level];
            if (E.columns && E.columns.length > 0) E.colspan = A(E);
            if ((!E.columns || E.columns.length == 0) && E.level < _) E.rowspan = _ - E.level + 1;
            B.push(E)
        }
        return D
    },
    getMaxColumnLevel: function() {
        return this.maxColumnLevel
    }
};
mini.copyTo(l11ol0.prototype, l1oO);
O0o1o1 = function($) {
    this.grid = $;
    oOO1l($.OloOO0, "mousemove", this.__OnGridHeaderMouseMove, this);
    oOO1l($.OloOO0, "mouseout", this.__OnGridHeaderMouseOut, this)
};
O0o1o1[O010O1] = {
    __OnGridHeaderMouseOut: function($) {
        if (this.OlooOlColumnEl) lOolO(this.OlooOlColumnEl, "mini-grid-headerCell-hover")
    },
    __OnGridHeaderMouseMove: function(_) {
        var $ = O01l0O(_.target, "mini-grid-headerCell");
        if ($) {
            l1ll1O($, "mini-grid-headerCell-hover");
            this.OlooOlColumnEl = $
        }
    },
    __onGridHeaderCellClick: function($) {}
};
ll1OOo = function($) {
    this.grid = $;
    oOO1l(this.grid.el, "mousedown", this.ooO1o, this);
    $[O0011o]("layout", this.O1l01O, this)
};
ll1OOo[O010O1] = {
    O1l01O: function(A) {
        if (this.splittersEl) mini[Ol00oo](this.splittersEl);
        if (this.splitterTimer) return;
        var $ = this.grid;
        if ($[OolO10]() == false) return;
        var _ = this;
        this.splitterTimer = setTimeout(function() {
            var H = $[O0Oll](),
            I = H.length,
            E = O101o($.OloOO0, true),
            B = $[loO1l0](),
            G = [];
            for (var J = 0,
            F = H.length; J < F; J++) {
                var D = H[J],
                C = $[l1llO0](D);
                if (!C) break;
                var A = C.top - E.top,
                M = C.right - E.left - 2,
                K = C.height;
                if ($[Ol0l0O] && $[Ol0l0O]()) {
                    if (J >= $[olOo0o]);
                } else M += B;
                var N = $[lllllO](D);
                if (N && N.columns) if (N.columns[N.columns.length - 1] == D) if (K + 5 < E.height) {
                    A = 0;
                    K = E.height
                }
                if ($[oO1l0O] && D[O0lOlo]) G[G.length] = "<div id=\"" + D._id + "\" class=\"mini-grid-splitter\" style=\"left:" + (M - 1) + "px;top:" + A + "px;height:" + K + "px;\"></div>"
            }
            var O = G.join("");
            _.splittersEl = document.createElement("div");
            _.splittersEl.className = "mini-grid-splitters";
            _.splittersEl.innerHTML = O;
            var L = $[ll0ol0]();
            L.appendChild(_.splittersEl);
            _.splitterTimer = null
        },
        100)
    },
    ooO1o: function(B) {
        var $ = this.grid,
        A = B.target;
        if (l0ll(A, "mini-grid-splitter")) {
            var _ = $.OO1oO1[A.id];
            if ($[oO1l0O] && _ && _[O0lOlo]) {
                this.splitterColumn = _;
                this.getDrag().start(B)
            }
        }
    },
    getDrag: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    },
    O0lO00: function(_) {
        var $ = this.grid,
        B = $[l1llO0](this.splitterColumn);
        this.columnBox = B;
        this.oOOoo0 = mini.append(document.body, "<div class=\"mini-grid-proxy\"></div>");
        var A = $[OOl11l](true);
        A.x = B.x;
        A.width = B.width;
        A.right = B.right;
        oOo10l(this.oOOoo0, A)
    },
    O1l1l: function(A) {
        var $ = this.grid,
        B = mini.copyTo({},
        this.columnBox),
        _ = B.width + (A.now[0] - A.init[0]);
        if (_ < $.columnMinWidth) _ = $.columnMinWidth;
        if (_ > $.columnMaxWidth) _ = $.columnMaxWidth;
        ol1Olo(this.oOOoo0, _)
    },
    loO1: function(E) {
        var $ = this.grid,
        F = O101o(this.oOOoo0),
        D = this,
        C = $[OoO0l];
        $[OoO0l] = false;
        setTimeout(function() {
            jQuery(D.oOOoo0).remove();
            D.oOOoo0 = null;
            $[OoO0l] = C
        },
        10);
        var G = this.splitterColumn,
        _ = parseInt(G.width);
        if (_ + "%" != G.width) {
            var A = $[O1O00O](G),
            B = parseInt(_ / A * F.width);
            $[O01l01](G, B)
        }
    }
};
l110 = function($) {
    this.grid = $;
    oOO1l(this.grid.el, "mousedown", this.ooO1o, this)
};
l110[O010O1] = {
    ooO1o: function(B) {
        var $ = this.grid;
        if ($[oo0101] && $[oo0101]()) return;
        if (l0ll(B.target, "mini-grid-splitter")) return;
        if (B.button == mini.MouseButton.Right) return;
        var A = O01l0O(B.target, $._headerCellCls);
        if (A) {
            this._remove();
            var _ = $.OOo1OO(B);
            if ($[lOOl0o] && _ && _.allowMove) {
                this.dragColumn = _;
                this._columnEl = A;
                this.getDrag().start(B)
            }
        }
    },
    getDrag: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: false,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    },
    O0lO00: function(_) {
        function A(_) {
            var A = _.header;
            if (typeof A == "function") A = A[lOlOo1]($, _);
            if (mini.isNull(A) || A === "") A = "&nbsp;";
            return A
        }
        var $ = this.grid;
        this.oOOoo0 = mini.append(document.body, "<div class=\"mini-grid-columnproxy\"></div>");
        this.oOOoo0.innerHTML = "<div class=\"mini-grid-columnproxy-inner\" style=\"height:26px;\">" + A(this.dragColumn) + "</div>";
        mini[l0lO1l](this.oOOoo0, _.now[0] + 15, _.now[1] + 18);
        l1ll1O(this.oOOoo0, "mini-grid-no");
        this.moveTop = mini.append(document.body, "<div class=\"mini-grid-movetop\"></div>");
        this.moveBottom = mini.append(document.body, "<div class=\"mini-grid-movebottom\"></div>")
    },
    O1l1l: function(A) {
        var $ = this.grid,
        G = A.now[0];
        mini[l0lO1l](this.oOOoo0, G + 15, A.now[1] + 18);
        this.targetColumn = this.insertAction = null;
        var D = O01l0O(A.event.target, $._headerCellCls);
        if (D) {
            var C = $.OOo1OO(A.event);
            if (C && C != this.dragColumn) {
                var _ = $[lllllO](this.dragColumn),
                E = $[lllllO](C);
                if (_ == E) {
                    this.targetColumn = C;
                    this.insertAction = "before";
                    var F = $[l1llO0](this.targetColumn);
                    if (G > F.x + F.width / 2) this.insertAction = "after"
                }
            }
        }
        if (this.targetColumn) {
            l1ll1O(this.oOOoo0, "mini-grid-ok");
            lOolO(this.oOOoo0, "mini-grid-no");
            var B = $[l1llO0](this.targetColumn);
            this.moveTop.style.display = "block";
            this.moveBottom.style.display = "block";
            if (this.insertAction == "before") {
                mini[l0lO1l](this.moveTop, B.x - 4, B.y - 9);
                mini[l0lO1l](this.moveBottom, B.x - 4, B.bottom)
            } else {
                mini[l0lO1l](this.moveTop, B.right - 4, B.y - 9);
                mini[l0lO1l](this.moveBottom, B.right - 4, B.bottom)
            }
        } else {
            lOolO(this.oOOoo0, "mini-grid-ok");
            l1ll1O(this.oOOoo0, "mini-grid-no");
            this.moveTop.style.display = "none";
            this.moveBottom.style.display = "none"
        }
    },
    _remove: function() {
        var $ = this.grid;
        mini[Ol00oo](this.oOOoo0);
        mini[Ol00oo](this.moveTop);
        mini[Ol00oo](this.moveBottom);
        this.oOOoo0 = this.moveTop = this.moveBottom = this.dragColumn = this.targetColumn = null
    },
    loO1: function(_) {
        var $ = this.grid;
        $[llO010](this.dragColumn, this.targetColumn, this.insertAction);
        this._remove()
    }
};
loOll0 = function($) {
    this.grid = $;
    this.grid[O0011o]("cellmousedown", this.l0OoO, this);
    this.grid[O0011o]("cellclick", this.o0111, this);
    this.grid[O0011o]("celldblclick", this.o0111, this);
    oOO1l(this.grid.el, "keydown", this.ooO0, this)
};
loOll0[O010O1] = {
    ooO0: function(G) {
        var $ = this.grid;
        if (ooll($.l1O00l, G.target) || ooll($.O0oll, G.target) || ooll($.lOoOl1, G.target) || O01l0O(G.target, "mini-grid-detailRow") || O01l0O(G.target, "mini-grid-rowEdit")) return;
        var A = $[O0o1l0]();
        if (G.shiftKey || G.ctrlKey || G.altKey) return;
        if (G.keyCode == 37 || G.keyCode == 38 || G.keyCode == 39 || G.keyCode == 40) G.preventDefault();
        var C = $[ooOO1l](),
        B = A ? A[1] : null,
        _ = A ? A[0] : null;
        if (!A) _ = $[lOo011]();
        var F = C[o0lllO](B),
        D = $[o0lllO](_),
        E = $[o1010o]().length;
        switch (G.keyCode) {
        case 9:
            if ($[olo0l] && $.editOnTabKey) {
                G.preventDefault();
                $[oollo0](G.shiftKey == false);
                return
            }
            break;
        case 27:
            break;
        case 13:
            if ($[olo0l] && $.editNextOnEnterKey) if ($[ol1O1O](A) || !B.editor) {
                $[oollo0](G.shiftKey == false);
                return
            }
            if ($[olo0l] && A && !B[Oo0o1l]) $[ll0olO]();
            break;
        case 37:
            if (B) {
                if (F > 0) F -= 1
            } else F = 0;
            break;
        case 38:
            if (_) {
                if (D > 0) D -= 1
            } else D = 0;
            if (D != 0 && $[oo0oOl]()) if ($._viewRegion.start > D) {
                $.Ool1O.scrollTop -= $._rowHeight;
                $[ollllo]()
            }
            break;
        case 39:
            if (B) {
                if (F < C.length - 1) F += 1
            } else F = 0;
            break;
        case 40:
            if (_) {
                if (D < E - 1) D += 1
            } else D = 0;
            if ($[oo0oOl]()) if ($._viewRegion.end < D) {
                $.Ool1O.scrollTop += $._rowHeight;
                $[ollllo]()
            }
            break;
        default:
            break
        }
        B = C[F];
        _ = $[OoOO11](D);
        if (B && _ && $[OlolOl]) {
            A = [_, B];
            $[oOO1O1](A);
            $[l0llO0](_, B)
        }
        if (_ && $[O110lO]) {
            $[o1O1o0]();
            $[O0Olol](_)
        }
    },
    o0111: function(B) {
        var $ = this.grid;
        if ($[olo0l] == false) return;
        if (this.grid.cellEditAction != B.type) return;
        var _ = B.record,
        A = B.column;
        if (!A[Oo0o1l] && !this.grid[OO11O1]()) if (B.htmlEvent.shiftKey || B.htmlEvent.ctrlKey);
        else this.grid[ll0olO]()
    },
    l0OoO: function(_) {
        var $ = this;
        setTimeout(function() {
            $.__doSelect(_)
        },
        1)
    },
    __doSelect: function(D) {
        var _ = D.record,
        B = D.column,
        $ = this.grid;
        if (this.grid[OlolOl]) {
            var A = [_, B];
            this.grid[oOO1O1](A)
        }
        if ($[O110lO]) if ($[Ool11l]) {
            this.grid.el.onselectstart = function() {};
            if (D.htmlEvent.shiftKey) {
                this.grid.el.onselectstart = function() {
                    return false
                };
                D.htmlEvent.preventDefault();
                if (!this.currentRecord) {
                    this.grid[ololO1](_);
                    this.currentRecord = this.grid[O1oll]()
                } else {
                    this.grid[o1O1o0]();
                    this.grid[ooo00l](this.currentRecord, _)
                }
            } else {
                this.grid.el.onselectstart = function() {};
                if (D.htmlEvent.ctrlKey) {
                    this.grid.el.onselectstart = function() {
                        return false
                    };
                    try {
                        D.htmlEvent.preventDefault()
                    } catch(C) {}
                }
                if (D.column._multiRowSelect === true || D.htmlEvent.ctrlKey || $.allowUnselect) {
                    if ($[oloo11](_)) $[o1o001](_);
                    else $[ololO1](_)
                } else if ($[oloo11](_));
                else {
                    $[o1O1o0]();
                    $[ololO1](_)
                }
                this.currentRecord = this.grid[O1oll]()
            }
        } else if (!$[oloo11](_)) {
            $[o1O1o0]();
            $[ololO1](_)
        } else if (D.htmlEvent.ctrlKey) $[o1O1o0]()
    }
};
l01OoO = function($) {
    this.grid = $;
    oOO1l(this.grid.el, "mousemove", this.__onGridMouseMove, this)
};
l01OoO[O010O1] = {
    __onGridMouseMove: function(D) {
        var $ = this.grid,
        A = $.o110l0(D),
        _ = $.l11ol1(A.record, A.column),
        B = $.getCellError(A.record, A.column);
        if (_) {
            if (B) {
                _.title = B.errorText;
                return
            }
            if (_.firstChild) if (l0ll(_.firstChild, "mini-grid-cell-inner") || l0ll(_.firstChild, "mini-treegrid-treecolumn-inner")) _ = _.firstChild;
            if (_.scrollWidth > _.clientWidth) {
                var C = _.innerText || _.textContent || "";
                _.title = C.trim()
            } else _.title = ""
        }
    }
};
mini.OoO1O1Menu = function($) {
    this.grid = $;
    this.menu = this.createMenu();
    oOO1l($.el, "contextmenu", this.o0oOlo, this)
};
mini.OoO1O1Menu[O010O1] = {
    createMenu: function() {
        var $ = mini.create({
            type: "menu",
            hideOnClick: false
        });
        $[O0011o]("itemclick", this.o11l, this);
        return $
    },
    updateMenu: function() {
        var _ = this.grid,
        F = this.menu,
        D = _[O0Oll](),
        B = [];
        for (var A = 0,
        E = D.length; A < E; A++) {
            var C = D[A],
            $ = {};
            $.checked = C.visible;
            $[lOO010] = true;
            $.text = _.OO1oolText(C);
            if ($.text == "&nbsp;") {
                if (C.type == "indexcolumn") $.text = "\u5e8f\u53f7";
                if (C.type == "checkcolumn") $.text = "\u9009\u62e9"
            }
            B.push($);
            $._column = C
        }
        F[olO0Ol](B)
    },
    o0oOlo: function(_) {
        var $ = this.grid;
        if ($.showColumnsMenu == false) return;
        if (ooll($.OloOO0, _.target) == false) return;
        this[OOo0O1]();
        this.menu[lo0lol](_.pageX, _.pageY);
        return false
    },
    o11l: function(J) {
        var C = this.grid,
        I = this.menu,
        A = C[O0Oll](),
        E = I[loO0o1](),
        $ = J.item,
        _ = $._column,
        H = 0;
        for (var D = 0,
        B = E.length; D < B; D++) {
            var F = E[D];
            if (F[lOoloO]()) H++
        }
        if (H < 1) $[lOl01O](true);
        var G = $[lOoloO]();
        if (G) C[l10O0o](_);
        else C[oolo10](_)
    }
};
l1ollO = {
    getCellErrors: function() {
        var A = this._cellErrors.clone(),
        C = this.data;
        for (var $ = 0,
        D = A.length; $ < D; $++) {
            var E = A[$],
            _ = E.record,
            B = E.column;
            if (C[o0lllO](_) == -1) {
                var F = _[this._rowIdField] + "$" + B._id;
                delete this._cellMapErrors[F];
                this._cellErrors.remove(E)
            }
        }
        return this._cellErrors
    },
    getCellError: function($, _) {
        $ = this[l101OO] ? this[l101OO]($) : this[Ol0o0]($);
        _ = this[Ol1Oo1](_);
        if (!$ || !_) return;
        var A = $[this._rowIdField] + "$" + _._id;
        return this._cellMapErrors[A]
    },
    isValid: function() {
        return this.getCellErrors().length == 0
    },
    validate: function() {
        var A = this.data;
        for (var $ = 0,
        B = A.length; $ < B; $++) {
            var _ = A[$];
            this.validateRow(_)
        }
    },
    validateRow: function(_) {
        var B = this[O0Oll]();
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var A = B[$];
            this.validateCell(_, A)
        }
    },
    validateCell: function(C, E) {
        C = this[l101OO] ? this[l101OO](C) : this[Ol0o0](C);
        E = this[Ol1Oo1](E);
        if (!C || !E) return;
        var I = {
            record: C,
            row: C,
            node: C,
            column: E,
            field: E.field,
            value: C[E.field],
            isValid: true,
            errorText: ""
        };
        if (E.vtype) mini.olo0(E.vtype, I.value, I, E);
        if (I[O1O111] == true && E.unique && E.field) {
            var A = {},
            D = this.data,
            F = E.field;
            for (var _ = 0,
            G = D.length; _ < G; _++) {
                var $ = D[_],
                H = $[F];
                if (mini.isNull(H) || H === "");
                else {
                    var B = A[H];
                    if (B && $ == C) {
                        I[O1O111] = false;
                        I.errorText = mini.Ool1ol(E, "uniqueErrorText");
                        this.setCellIsValid(B, E, I.isValid, I.errorText);
                        break
                    }
                    A[H] = $
                }
            }
        }
        this[lOooO0]("cellvalidation", I);
        this.setCellIsValid(C, E, I.isValid, I.errorText)
    },
    setIsValid: function(_) {
        if (_) {
            var A = this._cellErrors.clone();
            for (var $ = 0,
            B = A.length; $ < B; $++) {
                var C = A[$];
                this.setCellIsValid(C.record, C.column, true)
            }
        }
    },
    _removeRowError: function(_) {
        var B = this[O0o0Oo]();
        for (var $ = 0,
        C = B.length; $ < C; $++) {
            var A = B[$],
            E = _[this._rowIdField] + "$" + A._id,
            D = this._cellMapErrors[E];
            if (D) {
                delete this._cellMapErrors[E];
                this._cellErrors.remove(D)
            }
        }
    },
    setCellIsValid: function(_, A, B, D) {
        _ = this[l101OO] ? this[l101OO](_) : this[Ol0o0](_);
        A = this[Ol1Oo1](A);
        if (!_ || !A) return;
        var E = _[this._rowIdField] + "$" + A._id,
        $ = this.l11ol1(_, A),
        C = this._cellMapErrors[E];
        delete this._cellMapErrors[E];
        this._cellErrors.remove(C);
        if (B === true) {
            if ($ && C) lOolO($, "mini-grid-cell-error")
        } else {
            C = {
                record: _,
                column: A,
                isValid: B,
                errorText: D
            };
            this._cellMapErrors[E] = C;
            this._cellErrors[o0llo1](C);
            if ($) l1ll1O($, "mini-grid-cell-error")
        }
    }
};
mini.copyTo(l11ol0.prototype, l1ollO);
mini.GridEditor = function() {
    this._inited = true;
    o0oo1l[lOO1lo][o1lOol][lOlOo1](this);
    this[lO0l01]();
    this.el.uid = this.uid;
    this[oloOoo]();
    this.o1O0lO();
    this[o1olO1](this.uiCls)
};
O01o(mini.GridEditor, o0oo1l, {
    el: null,
    _create: function() {
        this.el = document.createElement("input");
        this.el.type = "text";
        this.el.style.width = "100%"
    },
    getValue: function() {
        return this.el.value
    },
    setValue: function($) {
        this.el.value = $
    },
    setWidth: function($) {}
});
l0O1O0 = function($) {
    this._ajaxOption = {
        async: false,
        type: "get"
    };
    this.root = {
        _id: -1,
        _pid: "",
        _level: -1
    };
    this.data = this.root[this.nodesField] = [];
    this.lOl1O = {};
    this.O1o0O1 = {};
    this._viewNodes = null;
    l0O1O0[lOO1lo][o1lOol][lOlOo1](this, $);
    this[O0011o]("beforeexpand",
    function(B) {
        var $ = B.node,
        A = this[OOoOl1]($),
        _ = $[this.nodesField];
        if (!A && (!_ || _.length == 0)) if (this.loadOnExpand && $.asyncLoad !== false) {
            B.cancel = true;
            this[OO10ll]($)
        }
    },
    this);
    this[olOOll]()
};
l0O1O0.NodeUID = 1;
var lastNodeLevel = [];
O01o(l0O1O0, o0oo1l, {
    isTree: true,
    loOOOl: "block",
    autoEscape: false,
    loadOnExpand: true,
    removeOnCollapse: true,
    expandOnDblClick: true,
    expandOnNodeClick: false,
    value: "",
    ll1O0O: null,
    allowSelect: true,
    showCheckBox: false,
    showFolderCheckBox: true,
    showExpandButtons: true,
    enableHotTrack: true,
    showArrow: false,
    expandOnLoad: false,
    delimiter: ",",
    url: "",
    root: null,
    resultAsTree: true,
    parentField: "pid",
    idField: "id",
    textField: "text",
    iconField: "iconCls",
    nodesField: "children",
    checkedField: "checked",
    showTreeIcon: false,
    showTreeLines: true,
    checkRecursive: false,
    allowAnim: true,
    Ol11: "mini-tree-checkbox",
    llo1ol: "mini-tree-selectedNode",
    Ooo1O: "mini-tree-node-hover",
    leafIcon: "mini-tree-leaf",
    folderIcon: "mini-tree-folder",
    lOooo: "mini-tree-border",
    ooOOll: "mini-tree-header",
    OOllO: "mini-tree-body",
    o1ooOl: "mini-tree-node",
    l10o1l: "mini-tree-nodes",
    olo01l: "mini-tree-expand",
    lO11l: "mini-tree-collapse",
    O00Oo1: "mini-tree-node-ecicon",
    ll1O0: "mini-tree-nodeshow",
    uiCls: "mini-tree",
    _changed: false,
    autoLoad: true,
    ajaxType: "",
    _ajaxOption: {
        async: false,
        type: "get"
    },
    _allowExpandLayout: true,
    autoCheckParent: false,
    allowDrag: false,
    allowDrop: false,
    dragGroupName: "",
    dropGroupName: "",
    allowLeafDropIn: false,
    imgPath: "",
    imgField: "img"
});
O0l10O = l0O1O0[O010O1];
O0l10O[Ol1oO0] = ol11;
O0l10O[l10oO1] = ol0OOo;
O0l10O[O10lOl] = o1lool;
O0l10O[lOO00O] = O00oO;
O0l10O[lol10o] = o1oOlo;
O0l10O.O0l0o0 = OOOl0o;
O0l10O.O000o = Ooll;
O0l10O.O0lO00 = lo10;
O0l10O[lo10o0] = o1l11;
O0l10O[Ol0lo0] = OlolO;
O0l10O[lololo] = OO1Ol;
O0l10O[ooOolO] = l0ooO0;
O0l10O[ll1llo] = o1Oo;
O0l10O[OO1101] = o1ll01;
O0l10O[oO1l0l] = Oo011O;
O0l10O[llOol0] = o1OOl;
O0l10O[OolOoO] = O11Oll;
O0l10O[Oooolo] = ooloo;
O0l10O[l1O1oo] = oooo0O;
O0l10O.OolOl0Text = l1l0l;
O0l10O.OolOl0Data = OlOl;
O0l10O[oO0lo0] = ooO0O;
O0l10O[ololl] = o000;
O0l10O[OO0ll1] = Oo1l;
O0l10O[o1lloO] = o1OO0l;
O0l10O[o1OoOO] = Oo00o;
O0l10O[oo111o] = lOO10;
O0l10O[Oo1Oo1] = O110O1;
O0l10O[oo1OOl] = OOl0l;
O0l10O[Oo00OO] = l1O01;
O0l10O[o1O11O] = l1l1o;
O0l10O[o1l1lo] = OOlO0o;
O0l10O[loOo1O] = oOO0O;
O0l10O[ooO1Oo] = Oo0o0;
O0l10O[lO0oo1] = ol10l;
O0l10O.ooO011 = OloOl;
O0l10O[l0llO0] = ll1l00;
O0l10O[llo010] = o0olo;
O0l10O[oO0111] = l0ool1;
O0l10O[OOo0ll] = O0loOl;
O0l10O[OO11ol] = O0O1;
O0l10O.ll0ool = oOoOOo;
O0l10O.Ooolo = olOOO;
O0l10O[l0Oo11] = l11oo;
O0l10O[o1Oo0o] = oOll0O;
O0l10O.Oll11o = ol11oO;
O0l10O.Olllo1 = o0OOOo;
O0l10O.lo01oo = O11Ol;
O0l10O[lOOO00] = ll11l;
O0l10O[o0O1Ol] = Oll10;
O0l10O[oll01O] = l0l10;
O0l10O[lOoOoo] = O10o1O;
O0l10O[O101lO] = ll1100;
O0l10O[Ol0111] = Oooo;
O0l10O[oOlOoO] = OOloo;
O0l10O[O1ooo0] = ll0lO;
O0l10O[OO010O] = o1O0O;
O0l10O[lOO101] = OoOOo;
O0l10O[o0o11o] = O1ll;
O0l10O[Olo0o1] = loo0lO;
O0l10O[OoolOO] = OoOO1;
O0l10O[o11lO0] = OOOoO;
O0l10O[l11o1o] = ollO11;
O0l10O[oOOlO1] = l1Oo0;
O0l10O[oOlOoo] = OO1o1;
O0l10O[ol010O] = Oo10l;
O0l10O[O0l11o] = Oo00oo;
O0l10O[lo0Ol0] = ooO0o;
O0l10O[oOlo1o] = Ol0lo;
O0l10O[o10l1o] = oO1ll;
O0l10O[l1110o] = o01lO0;
O0l10O[ooOool] = loO1Ol;
O0l10O[O1010O] = oo1O0o;
O0l10O[o0ol00] = O1olO;
O0l10O[O00lo0] = l1llO;
O0l10O[ol0011] = oo10O;
O0l10O[O1Oll0] = Ooo1l;
O0l10O[O0o0OO] = O00l1;
O0l10O[Olo00o] = O0ll0;
O0l10O[oloo0] = lO1oo1;
O0l10O[o01001] = O0oool;
O0l10O[o1l001] = oo0l0o;
O0l10O[o0l0oO] = O00o11;
O0l10O.lloo = O00o11AndText;
O0l10O[o0oOol] = l00loo;
O0l10O[O1lOO] = oolO00;
O0l10O[oOOo1O] = oOo1l0;
O0l10O[o0O1l1] = OOll1;
O0l10O[l1lOOl] = O00111;
O0l10O[OoOOll] = l00o11;
O0l10O[ooOOO0] = ol1oO;
O0l10O[o01l00] = loOO11;
O0l10O[ll10ll] = o1ll11;
O0l10O[Olo1ll] = l010l;
O0l10O[olOool] = o101O;
O0l10O[o1o0O0] = l010;
O0l10O[lo0Oll] = l1oo;
O0l10O[loO1oo] = o1l00o;
O0l10O[O00olo] = o0OO0;
O0l10O[olo00] = oO1O1o;
O0l10O[lO1o01] = O1o10;
O0l10O[oOoloO] = oolO1;
O0l10O[o001l1] = o1l11O;
O0l10O[l0O0lo] = oO00OO;
O0l10O[oO1l0o] = ll00o;
O0l10O[ll0o0l] = o1O10O;
O0l10O[o01ol1] = lo0o0;
O0l10O[OO0Olo] = l0l0l;
O0l10O[l1loOO] = O1o1o;
O0l10O[OOo11O] = lO10;
O0l10O[llll00] = lOo1OO;
O0l10O[lOo1O0] = ololO;
O0l10O[O1OOl0] = oOloO;
O0l10O[llO1O0] = oOlOl;
O0l10O[l000Ol] = lO11ll;
O0l10O[l101OO] = loOo;
O0l10O[OOO0lO] = olO1o;
O0l10O.OO010 = OOo0;
O0l10O.olooO = O1O0O1;
O0l10O.Oo01O = llOlo0;
O0l10O.O0loo1 = o1111o;
O0l10O[lOl1o0] = oo0o;
O0l10O[o11Ooo] = loOoBox;
O0l10O[ll0Oll] = ool0O;
O0l10O[O1Olol] = oOlo01;
O0l10O.ol101o = ol0010;
O0l10O.o0lOOO = OO1oO;
O0l10O.o00O = loO0O;
O0l10O[o0O0oo] = olO0O;
O0l10O.l0OOOO = loOO;
O0l10O.lOOO1 = lolOlO;
O0l10O[O1oooO] = lll11;
O0l10O[Ooll1] = l000l1;
O0l10O[OoloOo] = lOO00;
O0l10O[O1o0l1] = l0O0O;
O0l10O[O0ol01] = l0O0Os;
O0l10O[o10000] = o010l;
O0l10O[l11OOl] = o010ls;
O0l10O[Ol00oo] = l1OO1;
O0l10O[o00OOO] = l0ol1l;
O0l10O[l1OOl0] = OOo01O;
O0l10O[oOOO0O] = l0o0o;
O0l10O.Ol1OO = lO1olo;
O0l10O[l0oo1l] = l1OO1s;
O0l10O.o001oO = l11olO;
O0l10O.OOlo1 = O01oo;
O0l10O[Oo1l1o] = Ol0o1;
O0l10O[oo1OOO] = oO1l;
O0l10O[lo110o] = llOO0l;
O0l10O[O00000] = lo0l01;
O0l10O[loo101] = o0olOl;
O0l10O[O0lll0] = ol0OO1;
O0l10O[oloO01] = O0OOl1;
O0l10O[lOo000] = lo1Oo1;
O0l10O[OOo01o] = o0l1lO;
O0l10O[oOol0o] = Oo0loO;
O0l10O[OlOool] = OOlolo;
O0l10O[OOoOl1] = Oo1OO1;
O0l10O[ooo001] = lO1o0l;
O0l10O[l00O1l] = l0OOl;
O0l10O[OoOO11] = Oo00O0;
O0l10O[o0lllO] = olo0o1;
O0l10O[ll0o01] = o0100;
O0l10O[l1olOo] = oo0o1;
O0l10O[l1ooll] = l0010;
O0l10O[OO0000] = Oolo;
O0l10O[o01Oo1] = l0lOol;
O0l10O[O0Ool1] = Ol0ol;
O0l10O[OO01lO] = oooOlo;
O0l10O[Oool0l] = O0ol1;
O0l10O[OlOO0] = o01o1;
O0l10O[lOloOO] = Oo110;
O0l10O[O1o00o] = loOoIcon;
O0l10O[OoolO0] = OOOo1;
O0l10O[ollOo0] = OlO111;
O0l10O[oO0O1] = OO11o1;
O0l10O[o11lOO] = lO01l;
O0l10O[o0oO1o] = o1lO0o;
O0l10O[O01110] = lOOlOo;
O0l10O[o1ll1o] = O10O0;
O0l10O[o010l1] = llo11o;
O0l10O[ooOll1] = o0ol;
O0l10O[o001oo] = lOO1l;
O0l10O[lo01lO] = O1o1l0;
O0l10O[l0OO00] = O1l0;
O0l10O[lOlO01] = oOl001;
O0l10O[Oo1o00] = o101o1;
O0l10O[l1lo1l] = ll1OO0;
O0l10O[O1llOo] = Oo10;
O0l10O[Ool1lO] = l1Ol0;
O0l10O[l01l10] = o0oOoO;
O0l10O[O0lOl0] = o0O1l;
O0l10O.Ol01 = OOOlo;
O0l10O.lol0 = o1o10O;
O0l10O[olOOll] = llOo1;
O0l10O.ooOO = Ol1oo;
O0l10O.O0110O = llll0o;
O0l10O.lol0Oo = llll0oTitle;
O0l10O.o11O1 = ooool0;
O0l10O[lO1ol1] = O11O0o;
O0l10O[l01l1l] = lll0o;
O0l10O.Ol0O1l = lO1l01;
O0l10O[OOo0l1] = l0ol;
O0l10O[olO1oO] = loOlO;
O0l10O[OO10ll] = lO1010;
O0l10O[Olo01l] = olOo0;
O0l10O[oOl00O] = Ol1ll;
O0l10O[Oo0011] = O1ll1;
O0l10O[oOOOll] = O0oolO;
O0l10O[OO1oOl] = O00lol;
O0l10O[lO00O1] = l1lOO1;
O0l10O[oOloOO] = ollOOl;
O0l10O[OOOOlO] = l00l1;
O0l10O[o1010o] = o1loO;
O0l10O[O0OOlO] = OOOll;
O0l10O[Ol1l0l] = OllOo;
O0l10O[lo1ooO] = lo00ll;
O0l10O[o01000] = OoO011;
O0l10O[llo1OO] = o1oolo;
O0l10O[lOllOo] = loOlo0;
O0l10O[oolOl0] = O1ol0O;
O0l10O[OOllOO] = lool10;
O0l10O[oloOoo] = Ol1o1;
O0l10O[lO0l01] = oO1loO;
O0l10O[l1OOl1] = ooo000;
oloo(l0O1O0, "tree");
olOo0l = function($) {
    this.owner = $;
    this.owner[O0011o]("NodeMouseDown", this.lollo1, this)
};
olOo0l[O010O1] = {
    lollo1: function(C) {
        var A = C.node;
        if (C.htmlEvent.button == mini.MouseButton.Right) return;
        var _ = this.owner;
        if (_[OO11O1]() || _[lo10o0](C.node) == false) return;
        if (_[OoloOo](A)) return;
        var B = _.O0lO00(A);
        if (B.cancel) return;
        this.dragText = B.dragText;
        this.dragData = _.OolOl0Data();
        if (this.dragData[o0lllO](A) == -1) this.dragData.push(A);
        var $ = this.OolOl0();
        $.start(C.htmlEvent)
    },
    O0lO00: function($) {
        var _ = this.owner;
        this.feedbackEl = mini.append(document.body, "<div class=\"mini-feedback\"></div>");
        this.feedbackEl.innerHTML = this.dragText;
        this.lastFeedbackClass = "";
        this[llo110] = _[llo110];
        _[O01110](false)
    },
    _getDropTree: function(_) {
        var $ = O01l0O(_.target, "mini-tree", 500);
        if ($) return mini.get($)
    },
    O1l1l: function(_) {
        var B = this.owner,
        A = this._getDropTree(_.event),
        E = _.now[0],
        C = _.now[1];
        mini[l0lO1l](this.feedbackEl, E + 15, C + 18);
        this.dragAction = "no";
        if (A) {
            var $ = A[o0O0oo](_.event);
            this.dropNode = $;
            if ($ && A[O0Oo1o] == true) {
                if (!A[OOoOl1]($)) {
                    var D = $[A.nodesField];
                    if (D && D.length > 0);
                    else if (B.loadOnExpand && $.asyncLoad !== false) A[OO10ll]($)
                }
                this.dragAction = this.getFeedback($, C, 3, A, B)
            } else this.dragAction = "no";
            if (B && A && B != A && !$ && A[l1olOo](A.root).length == 0) {
                $ = A[Oool0l]();
                this.dragAction = "add";
                this.dropNode = $
            }
        }
        this.lastFeedbackClass = "mini-feedback-" + this.dragAction;
        this.feedbackEl.className = "mini-feedback " + this.lastFeedbackClass;
        if (this.dragAction == "no") $ = null;
        this.setRowFeedback($, this.dragAction, A)
    },
    loO1: function(A) {
        var E = this.owner,
        C = this._getDropTree(A.event);
        mini[Ol00oo](this.feedbackEl);
        this.feedbackEl = null;
        this.setRowFeedback(null);
        var D = [];
        for (var H = 0,
        G = this.dragData.length; H < G; H++) {
            var J = this.dragData[H],
            B = false;
            for (var K = 0,
            _ = this.dragData.length; K < _; K++) {
                var F = this.dragData[K];
                if (F != J) {
                    B = E[lOloOO](F, J);
                    if (B) break
                }
            }
            if (!B) D.push(J)
        }
        this.dragData = D;
        if (this.dropNode && C && this.dragAction != "no") {
            var L = E.O000o(this.dragData, this.dropNode, this.dragAction);
            if (!L.cancel) {
                var D = L.dragNodes,
                I = L.targetNode,
                $ = L.action;
                if (E == C) E[O0ol01](D, I, $);
                else {
                    E[l0oo1l](D);
                    C[l11OOl](D, I, $)
                }
            }
        }
        E[O01110](this[llo110]);
        L = {
            dragNode: this.dragData[0],
            dropNode: this.dropNode,
            dragAction: this.dragAction
        };
        E[lOooO0]("drop", L);
        this.dropNode = null;
        this.dragData = null
    },
    setRowFeedback: function(B, F, A) {
        if (this.lastAddDomNode) lOolO(this.lastAddDomNode, "mini-tree-feedback-add");
        if (B == null || this.dragAction == "add") {
            mini[Ol00oo](this.feedbackLine);
            this.feedbackLine = null
        }
        this.lastRowFeedback = B;
        if (B != null) if (F == "before" || F == "after") {
            if (!this.feedbackLine) this.feedbackLine = mini.append(document.body, "<div class='mini-feedback-line'></div>");
            this.feedbackLine.style.display = "block";
            var D = A[o11Ooo](B),
            E = D.x,
            C = D.y - 1;
            if (F == "after") C += D.height;
            mini[l0lO1l](this.feedbackLine, E, C);
            var _ = A[OOl11l](true);
            ol1Olo(this.feedbackLine, _.width)
        } else {
            var $ = A.Oo01O(B);
            l1ll1O($, "mini-tree-feedback-add");
            this.lastAddDomNode = $
        }
    },
    getFeedback: function(_, J, G, B, $) {
        var K = B[o11Ooo](_),
        A = K.height,
        I = J - K.y,
        H = null;
        if (this.dragData[o0lllO](_) != -1) return "no";
        var D = false;
        if (G == 3) {
            D = B[OOoOl1](_);
            for (var F = 0,
            E = this.dragData.length; F < E; F++) {
                var L = this.dragData[F],
                C = B[lOloOO](L, _);
                if (C) {
                    H = "no";
                    break
                }
            }
        }
        if (H == null) if (D && B.allowLeafDropIn == false) {
            if (I > A / 2) H = "after";
            else H = "before"
        } else if (I > (A / 3) * 2) H = "after";
        else if (A / 3 <= I && I <= (A / 3 * 2)) H = "add";
        else H = "before";
        var M = B.O0l0o0(H, this.dragData, _, $);
        return M.effect
    },
    OolOl0: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: false,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    }
};
lll1ll = function() {
    this.columns = [];
    this.OOOoO1 = [];
    this.OO1oO1 = {};
    this.lO0OlO = {};
    this._cellErrors = [];
    this._cellMapErrors = {};
    lll1ll[lOO1lo][o1lOol][lOlOo1](this);
    this.ll1oO1.style.display = this[O0lOlo] ? "": "none"
};
O01o(lll1ll, l0O1O0, {
    _rowIdField: "_id",
    width: 300,
    height: 180,
    minWidth: 300,
    minHeight: 150,
    maxWidth: 5000,
    maxHeight: 3000,
    allowResize: false,
    treeColumn: "",
    columns: [],
    columnWidth: 80,
    allowResizeColumn: true,
    allowMoveColumn: true,
    OoOo0o: true,
    _headerCellCls: "mini-treegrid-headerCell",
    _cellCls: "mini-treegrid-cell",
    lOooo: "mini-treegrid-border",
    ooOOll: "mini-treegrid-header",
    OOllO: "mini-treegrid-body",
    o1ooOl: "mini-treegrid-node",
    l10o1l: "mini-treegrid-nodes",
    llo1ol: "mini-treegrid-selectedNode",
    Ooo1O: "mini-treegrid-hoverNode",
    olo01l: "mini-treegrid-expand",
    lO11l: "mini-treegrid-collapse",
    O00Oo1: "mini-treegrid-ec-icon",
    ll1O0: "mini-treegrid-nodeTitle",
    uiCls: "mini-treegrid"
});
lO0oO = lll1ll[O010O1];
lO0oO[Ol1oO0] = ollO1;
lO0oO.OllOl1 = oO0lo;
lO0oO[O1O00O] = lo101;
lO0oO[O01l01] = Oool1;
lO0oO.O11lo = o11Oo;
lO0oO[oOOl1O] = oO1OO;
lO0oO[O0ol11] = O1O01;
lO0oO[oO0000] = l1lOl;
lO0oO[l0011o] = llo0;
lO0oO[o10oll] = oO1OOColumn;
lO0oO[ol0o1l] = O1O01Column;
lO0oO[l11o1o] = o1oOO;
lO0oO[oOOlO1] = lOlOo;
lO0oO.l0ll0o = l0111;
lO0oO.Ol0O0 = OooO1;
lO0oO[l010l1] = O11Oo;
lO0oO.lol0 = o000l;
lO0oO[l0lOlo] = o1OoOl;
lO0oO[O0lOl0] = loO11o;
lO0oO[loO1l0] = O0lOo;
lO0oO[olOOll] = Ooooo;
lO0oO.lol0Oo = lol0l;
lO0oO.lo0ll = OOoO;
lO0oO.o11OO = lo001;
lO0oO[ll0ol0] = ooo11;
lO0oO.ll1l0 = o1lo00;
lO0oO[lO0l01] = lol10;
lO0oO.O0loo1 = oo0Ol;
mini.copyTo(lll1ll.prototype, l1oO);
mini.copyTo(lll1ll.prototype, l1ollO);
oloo(lll1ll, "treegrid");
mini.DataSource = function() {
    mini.DataSource[lOO1lo][o1lOol][lOlOo1](this);
    this._init()
};
O01o(mini.DataSource, O101ol, {
    idField: "id",
    textField: "text",
    _init: function() {
        this.source = [];
        this.dataview = [];
        this.visibleRows = null;
        this._ids = {};
        this._removeds = [];
        this.l1l0O1 = {};
        this._errors = {};
        this.lOoO = null;
        this.lOlll = [];
        this.OlO01O = {};
        this.__changeCount = 0
    },
    getSource: function() {
        return this.source
    },
    getList: function() {
        return this.source.clone()
    },
    getDataView: function() {
        return this.dataview
    },
    getVisibleRows: function() {
        if (!this.visibleRows) this.visibleRows = this.getDataView().clone();
        return this.visibleRows
    },
    setData: function($) {
        this[oOOOll]($)
    },
    loadData: function($) {
        if (!mini.isArray($)) $ = [];
        this._init();
        this.O1o0($);
        this.l1Ool();
        this[lOooO0]("loaddata");
        return true
    },
    O1o0: function(C) {
        this.source = C;
        this.dataview = C;
        var A = this.source,
        B = this._ids;
        for (var _ = 0,
        D = A.length; _ < D; _++) {
            var $ = A[_];
            $._id = mini.DataSource.RecordId++;
            B[$._id] = $;
            $._uid = $._id
        }
    },
    clearData: function() {
        this._init();
        this.l1Ool();
        this[lOooO0]("cleardata")
    },
    clear: function() {
        this[Oo0011]()
    },
    updateRecord: function($, B, _) {
        if (mini.isNull($)) return;
        if (typeof B == "string") {
            var C = $[B];
            if (mini[l0oOl](C, _)) return false;
            this.beginChange();
            $[B] = _;
            this._setModified($, B, C);
            this.endChange()
        } else {
            this.beginChange();
            for (var A in B) {
                var C = $[A],
                _ = B[A];
                if (mini[l0oOl](C, _)) continue;
                $[A] = _;
                this._setModified($, A, C)
            }
            this.endChange()
        }
        this[lOooO0]("update", {
            record: $
        })
    },
    deleteRecord: function($) {
        this._setDeleted($);
        this.l1Ool();
        this[lOooO0]("delete", {
            record: $
        })
    },
    getby_id: function($) {
        $ = typeof $ == "object" ? $._id: $;
        return this._ids[$]
    },
    getbyId: function(D) {
        var B = typeof D;
        if (B == "number") return this[OoOO11](D);
        if (typeof D == "object") return D;
        var A = this[oOloOO]();
        for (var _ = 0,
        C = A.length; _ < C; _++) {
            var $ = A[_];
            if ($[this.idField] == D) return $
        }
        return null
    },
    getsByIds: function(_) {
        if (mini.isNull(_)) _ = "";
        _ = String(_);
        var D = [],
        A = String(_).split(",");
        for (var $ = 0,
        C = A.length; $ < C; $++) {
            var B = this.getbyId(A[$]);
            if (B) D.push(B)
        }
        return D
    },
    getRecord: function($) {
        return this[Ol0o0]($)
    },
    getRow: function($) {
        var _ = typeof $;
        if (_ == "string") return this.getbyId($);
        else if (_ == "number") return this[OoOO11]($);
        else if (_ == "object") return $
    },
    delimiter: ",",
    lloo: function(B, $) {
        if (mini.isNull(B)) B = [];
        $ = $ || this.delimiter;
        if (!mini.isArray(B)) B = this.getsByIds(B);
        var C = [],
        D = [];
        for (var A = 0,
        E = B.length; A < E; A++) {
            var _ = B[A];
            if (_) {
                C.push(this[l01l1l](_));
                D.push(this[lO1ol1](_))
            }
        }
        return [C.join($), D.join($)]
    },
    getItemValue: function($) {
        if (!$) return "";
        var _ = $[this.idField];
        return mini.isNull(_) ? "": String(_)
    },
    getItemText: function($) {
        if (!$) return "";
        var _ = $[this.textField];
        return mini.isNull(_) ? "": String(_)
    },
    isModified: function(A, _) {
        var $ = this.l1l0O1[A._id];
        if (!$) return false;
        if (mini.isNull(_)) return false;
        return $.hasOwnProperty(_)
    },
    hasRecord: function($) {
        return !! this.getby_id($)
    },
    findRecords: function(D, A) {
        var F = typeof D == "function",
        I = D,
        E = A || this,
        C = this.source,
        B = [];
        for (var _ = 0,
        H = C.length; _ < H; _++) {
            var $ = C[_];
            if (F) {
                var G = I[lOlOo1](E, $);
                if (G == true) B[B.length] = $;
                if (G === 1) break
            } else if ($[D] == A) B[B.length] = $
        }
        return B
    },
    each: function(A, _) {
        var $ = this.getDataView().clone();
        _ = _ || this;
        mini.forEach($, A, _)
    },
    getCount: function() {
        return this.getDataView().length
    },
    setIdField: function($) {
        this[oOOolO] = $
    },
    setTextField: function($) {
        this[lOl11o] = $
    },
    __changeCount: 0,
    beginChange: function() {
        this.__changeCount++
    },
    endChange: function($) {
        this.__changeCount--;
        if (this.__changeCount < 0) this.__changeCount = 0;
        if (($ !== false && this.__changeCount == 0) || $ == true) {
            this.__changeCount = 0;
            this.l1Ool()
        }
    },
    l1Ool: function() {
        this.visibleRows = null;
        if (this.__changeCount == 0) this[lOooO0]("datachanged")
    },
    _setAdded: function($) {
        $._id = mini.DataSource.RecordId++;
        $._uid = $._id;
        $._state = "added";
        this._ids[$._id] = $;
        delete this.l1l0O1[$._id]
    },
    _setModified: function($, A, B) {
        if ($._state != "added" && $._state != "deleted" && $._state != "removed") {
            $._state = "modified";
            var _ = this.OollO1($);
            if (!_.hasOwnProperty(A)) _[A] = B
        }
    },
    _setDeleted: function($) {
        if ($._state != "added" && $._state != "deleted" && $._state != "removed") $._state = "deleted"
    },
    _setRemoved: function($) {
        delete this._ids[$._id];
        if ($._state != "added" && $._state != "removed") {
            $._state = "removed";
            delete this.l1l0O1[$._id];
            this._removeds.push($)
        }
    },
    OollO1: function($) {
        var A = $._id,
        _ = this.l1l0O1[A];
        if (!_) _ = this.l1l0O1[A] = {};
        return _
    },
    lOoO: null,
    lOlll: [],
    OlO01O: null,
    multiSelect: false,
    isSelected: function($) {
        if (!$) return false;
        if (typeof $ != "string") $ = $._id;
        return !! this.OlO01O[$]
    },
    setSelected: function($) {
        $ = this.getby_id($);
        var _ = this[O1oll]();
        if (_ != $) {
            this.lOoO = $;
            if ($) this[ololO1]($);
            else this[o1o001](this[O1oll]());
            this.OOo0lO($)
        }
    },
    getSelected: function() {
        if (this[oloo11](this.lOoO)) return this.lOoO;
        return this.lOlll[0]
    },
    setCurrent: function($) {
        this[O0l010]($)
    },
    getCurrent: function() {
        return this[O1oll]()
    },
    getSelecteds: function() {
        return this.lOlll.clone()
    },
    select: function($) {
        if (mini.isNull($)) return;
        this[Oo11O]([$])
    },
    deselect: function($) {
        if (mini.isNull($)) return;
        this[ll1o00]([$])
    },
    selectAll: function() {
        this[Oo11O](this[oOloOO]())
    },
    deselectAll: function() {
        this[ll1o00](this[oOloOO]())
    },
    selects: function(A) {
        if (!mini.isArray(A)) return;
        A = A.clone();
        if (this[Ool11l] == false) {
            this[ll1o00](this[l1OOlO]());
            if (A.length > 0) A.length = 1;
            this.lOlll = [];
            this.OlO01O = {}
        }
        var B = [];
        for (var _ = 0,
        C = A.length; _ < C; _++) {
            var $ = this.getbyId(A[_]);
            if (!$) continue;
            if (!this[oloo11]($)) {
                this.lOlll.push($);
                this.OlO01O[$._id] = $;
                B.push($)
            }
        }
        this.OllooO(A, true, B)
    },
    deselects: function(A) {
        if (!mini.isArray(A)) return;
        A = A.clone();
        var B = [];
        for (var _ = A.length - 1; _ >= 0; _--) {
            var $ = this.getbyId(A[_]);
            if (!$) continue;
            if (this[oloo11]($)) {
                this.lOlll.remove($);
                delete this.OlO01O[$._id];
                B.push($)
            }
        }
        this.OllooO(A, false, B)
    },
    OllooO: function(A, D, B) {
        var C = {
            records: A,
            select: D,
            selected: this[O1oll](),
            selecteds: this[l1OOlO](),
            _records: B
        };
        this[lOooO0]("SelectionChanged", C);
        var _ = this._current,
        $ = this[lOo011]();
        if (_ != $) {
            this._current = $;
            this.OOo0lO($)
        }
    },
    OOo0lO: function($) {
        if (this._currentTimer) clearTimeout(this._currentTimer);
        var _ = this;
        this._currentTimer = setTimeout(function() {
            _._currentTimer = null;
            var A = {
                record: $
            };
            _[lOooO0]("CurrentChanged", A)
        },
        1)
    },
    oOO100: function() {
        for (var _ = this.lOlll.length - 1; _ >= 0; _--) {
            var $ = this.lOlll[_],
            A = this.getby_id($._id);
            if (!A) {
                this.lOlll.removeAt(_);
                delete this.OlO01O[$._id]
            }
        }
        if (this.lOoO && this.getby_id(this.lOoO._id) == null) this.lOoO = null
    },
    setMultiSelect: function($) {
        if (this[Ool11l] != $) {
            this[Ool11l] = $;
            if ($ == false);
        }
    },
    getMultiSelect: function() {
        return this[Ool11l]
    },
    selectPrev: function() {
        var _ = this[O1oll]();
        if (!_) _ = this[OoOO11](0);
        else {
            var $ = this[o0lllO](_);
            _ = this[OoOO11]($ - 1)
        }
        if (_) {
            this[o1O1o0]();
            this[ololO1](_);
            this[O0Olol](_)
        }
    },
    selectNext: function() {
        var _ = this[O1oll]();
        if (!_) _ = this[OoOO11](0);
        else {
            var $ = this[o0lllO](_);
            _ = this[OoOO11]($ + 1)
        }
        if (_) {
            this[o1O1o0]();
            this[ololO1](_);
            this[O0Olol](_)
        }
    },
    selectFirst: function() {
        var $ = this[OoOO11](0);
        if ($) {
            this[o1O1o0]();
            this[ololO1]($);
            this[O0Olol]($)
        }
    },
    selectLast: function() {
        var _ = this[olo111](),
        $ = this[OoOO11](_.length - 1);
        if ($) {
            this[o1O1o0]();
            this[ololO1]($);
            this[O0Olol]($)
        }
    },
    getSelectedsId: function($) {
        var A = this[l1OOlO](),
        _ = this.lloo(A, $);
        return _[0]
    },
    getSelectedsText: function($) {
        var A = this[l1OOlO](),
        _ = this.lloo(A, $);
        return _[1]
    },
    _filterInfo: null,
    _sortInfo: null,
    filter: function(_, $) {
        if (typeof _ != "function") return;
        $ = $ || this;
        this._filterInfo = [_, $];
        this.oOO1lO();
        this.olol0();
        this.l1Ool();
        this[lOooO0]("filter")
    },
    clearFilter: function() {
        if (!this._filterInfo) return;
        this._filterInfo = null;
        this.oOO1lO();
        this.olol0();
        this.l1Ool();
        this[lOooO0]("filter")
    },
    sort: function(A, _, $) {
        if (typeof A != "function") return;
        _ = _ || this;
        this._sortInfo = [A, _, $];
        this.olol0();
        this.l1Ool();
        this[lOooO0]("sort")
    },
    clearSort: function() {
        this._sortInfo = null;
        this.sortField = this.sortOrder = null;
        this.oOO1lO();
        this.l1Ool();
        this[lOooO0]("filter")
    },
    _doClientSortField: function(C, B, _) {
        var A = this[OlOo0o](C, _);
        if (!A) return;
        this.sortField = C;
        this.sortOrder = B;
        var $ = B == "desc";
        this[Oll0o1](A, this, $)
    },
    _getSortFnByField: function(B, C) {
        if (!B) return null;
        var A = null,
        _ = mini.sortTypes[C];
        if (!_) _ = mini.sortTypes["string"];
        function $(D, H) {
            var E = mini._getMap(B, D),
            C = mini._getMap(B, H),
            G = mini.isNull(E) || E === "",
            A = mini.isNull(C) || C === "";
            if (G) return - 1;
            if (A) return 1;
            var $ = _(E),
            F = _(C);
            if ($ > F) return 1;
            else if ($ == F) return 0;
            else return - 1
        }
        A = $;
        return A
    },
    ajaxAsync: true,
    ajaxMethod: "",
    ajaxOptions: null,
    autoLoad: false,
    url: "",
    pageSize: 20,
    pageIndex: 0,
    totalCount: 0,
    totalPage: 0,
    sortField: "",
    sortOrder: "",
    loadParams: null,
    getLoadParams: function() {
        return this.loadParams || {}
    },
    sortMode: "server",
    pageIndexField: "pageIndex",
    pageSizeField: "pageSize",
    sortFieldField: "sortField",
    sortOrderField: "sortOrder",
    totalField: "total",
    dataField: "data",
    load: function($, C, B, A) {
        if (typeof $ == "string") {
            this[oOl00O]($);
            return
        }
        if (this._loadTimer) clearTimeout(this._loadTimer);
        this.loadParams = $ || {};
        if (this.ajaxAsync) {
            var _ = this;
            this._loadTimer = setTimeout(function() {
                _.Ol0O1lAjax(_.loadParams, C, B, A);
                _._loadTimer = null
            },
            1)
        } else this.Ol0O1lAjax(this.loadParams, C, B, A)
    },
    reload: function(A, _, $) {
        this[Ol1l0l](this.loadParams, A, _, $)
    },
    gotoPage: function($, A) {
        var _ = this.loadParams || {};
        if (mini.isNumber($)) _[l10l0o] = $;
        if (mini.isNumber(A)) _[oOoll1] = A;
        this[Ol1l0l](_)
    },
    sortBy: function(A, _) {
        this.sortField = A;
        this.sortOrder = _ == "asc" ? "asc": "desc";
        if (this.sortMode == "server") {
            var $ = this.getLoadParams();
            $.sortField = A;
            $.sortOrder = _;
            $[l10l0o] = this[l10l0o];
            this[Ol1l0l]($)
        }
    },
    checkSelectOnLoad: true,
    selectOnLoad: false,
    Ol0O1lAjax: function(G, I, B, C, D) {
        G = G || {};
        if (mini.isNull(G[l10l0o])) G[l10l0o] = 0;
        if (mini.isNull(G[oOoll1])) G[oOoll1] = this[oOoll1];
        G.sortField = this.sortField;
        G.sortOrder = this.sortOrder;
        this.loadParams = G;
        var H = this._evalUrl(),
        _ = this._evalType(H),
        J = {
            url: H,
            async: this.ajaxAsync,
            type: _,
            data: G,
            params: G,
            cancel: false
        };
        if (J.data != J.params && J.params != G) J.data = J.params;
        mini.copyTo(J, this.ajaxOptions);
        this._OnBeforeLoad(J);
        if (J.cancel == true) return;
        var $ = {};
        $[this.pageIndexField] = G[l10l0o];
        $[this.pageSizeField] = G[oOoll1];
        if (G.sortField) $[this.sortFieldField] = G.sortField;
        if (G.sortOrder) $[this.sortOrderField] = G.sortOrder;
        delete G[l10l0o];
        delete G[oOoll1];
        delete G.sortField;
        delete G.sortOrder;
        mini.copyTo(G, $);
        var F = this[O1oll]();
        this.lOoOValue = F ? F[this.idField] : null;
        var A = this;
        A._resultObject = null;
        var E = {
            url: J.url,
            type: J.type,
            async: J.async,
            data: J.data,
            cache: false,
            dataType: "text",
            success: function(C, K, _) {
                var F = null;
                try {
                    F = mini.decode(C)
                } catch(J) {
                    if (mini_debugger == true) alert(H + "\n json is error.")
                }
                if (F == null) {
                    F = {};
                    F[A.dataField] = [];
                    F[A.totalField] = 0
                }
                if (mini.isArray(F)) {
                    var E = {};
                    E[A.dataField] = F;
                    E[A.totalField] = F.length;
                    F = E
                }
                F.total = F[A.totalField];
                F.data = F[A.dataField];
                if (!F.data) F.data = [];
                if (!F.total) F.total = 0;
                A._resultObject = F;
                var J = {
                    xhr: _,
                    text: C,
                    textStatus: K,
                    result: F,
                    total: F.total,
                    data: F.data.clone(),
                    pageIndex: G[A.pageIndexField],
                    pageSize: G[A.pageSizeField]
                };
                if (mini.isNumber(F.error) && F.error != 0) {
                    J.textStatus = "servererror";
                    J.errorCode = F.error;
                    J.stackTrace = F.stackTrace;
                    J.errorMsg = F.errorMsg;
                    if (mini_debugger == true) alert(H + "\n" + J.textStatus + "\n" + J.stackTrace);
                    A[lOooO0]("loaderror", J);
                    if (B) B[lOlOo1](A, J)
                } else if (D) D(J);
                else {
                    A._OnPreLoad(J);
                    A[l10l0o] = J[l10l0o];
                    A[oOoll1] = J[oOoll1];
                    A[o1Oo0O](J.total);
                    A[O0OOlO](J.data);
                    if (A.lOoOValue && A[lllO00]) {
                        var $ = A.getbyId(A.lOoOValue);
                        if ($) A[ololO1]($)
                    }
                    if (A[O1oll]() == null && A.selectOnLoad && A.getDataView().length > 0) A[ololO1](0);
                    A[lOooO0]("load", J);
                    if (I) I[lOlOo1](A, J)
                }
            },
            error: function($, D, _) {
                var C = {
                    xhr: $,
                    text: $.responseText,
                    textStatus: D
                };
                C.errorMsg = $.responseText;
                C.errorCode = $.status;
                if (mini_debugger == true) alert(H + "\n" + C.errorCode + "\n" + C.errorMsg);
                A[lOooO0]("loaderror", C);
                if (B) B[lOlOo1](A, C)
            },
            complete: function($, B) {
                var _ = {
                    xhr: $,
                    text: $.responseText,
                    textStatus: B
                };
                A[lOooO0]("loadcomplete", _);
                if (C) C[lOlOo1](A, _);
                A._xhr = null
            }
        };
        if (this._xhr) this._xhr.abort();
        this._xhr = mini.ajax(E)
    },
    _OnBeforeLoad: function($) {
        this[lOooO0]("beforeload", $)
    },
    _OnPreLoad: function($) {
        this[lOooO0]("preload", $)
    },
    _evalUrl: function() {
        var url = this.url;
        if (typeof url == "function") url = url();
        else {
            try {
                url = eval(url)
            } catch(ex) {
                url = this.url
            }
        }
        return url
    },
    _evalType: function(_) {
        var $ = this.ajaxMethod;
        if (!$) {
            $ = "post";
            if (_) {
                if (_[o0lllO](".txt") != -1 || _[o0lllO](".json") != -1) $ = "get"
            } else $ = "get"
        }
        return $
    },
    setSortMode: function($) {
        this.sortMode = $
    },
    getSortMode: function() {
        return this.sortMode
    },
    setAjaxOptions: function($) {
        this.ajaxOptions = $
    },
    getAjaxOptions: function() {
        return this.ajaxOptions
    },
    setAutoLoad: function($) {
        this.autoLoad = $
    },
    getAutoLoad: function() {
        return this.autoLoad
    },
    setUrl: function($) {
        this.url = $;
        if (this.autoLoad) this[Ol1l0l]()
    },
    getUrl: function() {
        return this.url
    },
    setPageIndex: function($) {
        this[l10l0o] = $;
        this[lOooO0]("pageinfochanged")
    },
    getPageIndex: function() {
        return this[l10l0o]
    },
    setPageSize: function($) {
        this[oOoll1] = $;
        this[lOooO0]("pageinfochanged")
    },
    getPageSize: function() {
        return this[oOoll1]
    },
    setTotalCount: function($) {
        this[llooO1] = $;
        this[lOooO0]("pageinfochanged")
    },
    getTotalCount: function() {
        return this[llooO1]
    },
    getTotalPage: function() {
        return this.totalPage
    },
    setCheckSelectOnLoad: function($) {
        this[lllO00] = $
    },
    getCheckSelectOnLoad: function() {
        return this[lllO00]
    },
    setSelectOnLoad: function($) {
        this.selectOnLoad = $
    },
    getSelectOnLoad: function() {
        return this.selectOnLoad
    }
});
mini.DataSource.RecordId = 1;
mini.DataTable = function() {
    mini.DataTable[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.DataTable, mini.DataSource, {
    _init: function() {
        mini.DataTable[lOO1lo]._init[lOlOo1](this);
        this._filterInfo = null;
        this._sortInfo = null
    },
    add: function($) {
        return this.insert(this.source.length, $)
    },
    addRange: function($) {
        this.insertRange(this.source.length, $)
    },
    insert: function($, _) {
        if (!_) return null;
        if (!mini.isNumber($)) {
            var B = this[o00101]($);
            if (B) $ = this[o0lllO](B);
            else $ = this.getDataView().length
        }
        var C = this.dataview[$];
        if (C) this.dataview.insert($, _);
        else this.dataview[o0llo1](_);
        if (this.dataview != this.source) if (C) {
            var A = this.source[o0lllO](C);
            this.source.insert(A, _)
        } else this.source[o0llo1](_);
        this._setAdded(_);
        this.l1Ool();
        var D = {
            index: $,
            record: _
        };
        this[lOooO0]("add", D)
    },
    insertRange: function($, B) {
        if (!mini.isArray(B)) return;
        this.beginChange();
        for (var A = 0,
        C = B.length; A < C; A++) {
            var _ = B[A];
            this.insert($ + A, _)
        }
        this.endChange()
    },
    remove: function(_, A) {
        var $ = this[o0lllO](_);
        return this.removeAt($, A)
    },
    removeAt: function($, D) {
        var _ = this[OoOO11]($);
        if (!_) return null;
        var B = this[oloo11](_);
        this.source.removeAt($);
        if (this.dataview !== this.source) this.dataview.removeAt($);
        this._setRemoved(_);
        this.oOO100();
        this.l1Ool();
        var C = {
            record: _
        };
        this[lOooO0]("remove", C);
        if (B && D) {
            var A = this[OoOO11]($);
            if (!A) A = this[OoOO11]($ - 1);
            this[o1O1o0]();
            this[ololO1](A)
        }
    },
    removeRange: function(A, C) {
        if (!mini.isArray(A)) return;
        this.beginChange();
        for (var _ = 0,
        B = A.length; _ < B; _++) {
            var $ = A[_];
            this.remove($, C)
        }
        this.endChange()
    },
    move: function(_, H) {
        if (!_ || !mini.isNumber(H)) return;
        if (H < 0) H = this.dataview.length;
        if (mini.isArray(_)) {
            this.beginChange();
            var I = _,
            C = this[OoOO11](H),
            F = this;
            mini[Oll0o1](I,
            function($, _) {
                return F[o0lllO]($) > F[o0lllO](_)
            },
            this);
            for (var E = 0,
            D = I.length; E < D; E++) {
                var A = I[E],
                $ = this[o0lllO](C);
                this.move(A, $)
            }
            this.endChange();
            return
        }
        var B = this.dataview[H];
        this.dataview.remove(_);
        var G = this.dataview[o0lllO](B);
        if (G != -1) H = G;
        if (B) this.dataview.insert(H, _);
        else this.dataview[o0llo1](_);
        if (this.dataview != this.source) {
            this.source.remove(_);
            G = this.source[o0lllO](B);
            if (G != -1) H = G;
            if (B) this.source.insert(H, _);
            else this.source[o0llo1](_)
        }
        this.l1Ool();
        var J = {
            index: H,
            record: _
        };
        this[lOooO0]("move", J)
    },
    indexOf: function($) {
        return this.dataview[o0lllO]($)
    },
    getAt: function($) {
        return this.dataview[$]
    },
    getRange: function(A, B) {
        if (A > B) {
            var C = A;
            A = B;
            B = C
        }
        var D = [];
        for (var _ = A,
        E = B; _ <= E; _++) {
            var $ = this.dataview[_];
            D.push($)
        }
        return D
    },
    selectRange: function($, _) {
        if (!mini.isNumber($)) $ = this[o0lllO]($);
        if (!mini.isNumber(_)) _ = this[o0lllO](_);
        if (mini.isNull($) || mini.isNull(_)) return;
        var A = this[oOoO0O]($, _);
        this[Oo11O](A)
    },
    toArray: function() {
        return this.source.clone()
    },
    getChanges: function(B) {
        var A = [];
        if (B == "removed" || B == null) A.addRange(this._removeds.clone());
        for (var _ = 0,
        C = this.source.length; _ < C; _++) {
            var $ = this.source[_];
            if (!$._state) continue;
            if ($._state == B || B == null) A[A.length] = $
        }
        return A
    },
    accept: function() {
        this.beginChange();
        for (var _ = 0,
        A = this.source.length; _ < A; _++) {
            var $ = this.source[_];
            this[l0O11l]($)
        }
        this._removeds = [];
        this.l1l0O1 = {};
        this.endChange()
    },
    reject: function() {
        this.beginChange();
        for (var _ = 0,
        A = this.source.length; _ < A; _++) {
            var $ = this.source[_];
            this.rejectRecord($)
        }
        this._removeds = [];
        this.l1l0O1 = {};
        this.endChange()
    },
    acceptRecord: function($) {
        delete this.l1l0O1[$._id];
        if ($._state == "deleted") this[Ol00oo]($);
        else {
            delete $._state;
            delete this.l1l0O1[$._id];
            this.l1Ool()
        }
    },
    rejectRecord: function(_) {
        if (_._state == "added") this[Ol00oo](_);
        else if (_._state == "modified" || _._state == "deleted") {
            var $ = this.OollO1(_);
            mini.copyTo(_, $);
            delete _._state;
            delete this.l1l0O1[_._id];
            this.l1Ool()
        }
    },
    oOO1lO: function() {
        if (!this._filterInfo) {
            this.dataview = this.source;
            return
        }
        var F = this._filterInfo[0],
        D = this._filterInfo[1],
        $ = [],
        C = this.source;
        for (var _ = 0,
        E = C.length; _ < E; _++) {
            var B = C[_],
            A = F[lOlOo1](D, B, _, this);
            if (A !== false) $.push(B)
        }
        this.dataview = $
    },
    olol0: function() {
        if (!this._sortInfo) return;
        var B = this._sortInfo[0],
        A = this._sortInfo[1],
        $ = this._sortInfo[2],
        _ = this.getDataView().clone();
        mini[Oll0o1](_, B, A);
        if ($) _.reverse();
        this.dataview = _
    }
});
oloo(mini.DataTable, "datatable");
mini.DataTree = function() {
    mini.DataTree[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(mini.DataTree, mini.DataSource, {
    isTree: true,
    expandOnLoad: false,
    idField: "id",
    parentField: "pid",
    nodesField: "children",
    resultAsTree: true,
    checkModel: "cascade",
    autoCheckParent: false,
    onlyLeafCheckable: false,
    setExpandOnLoad: function($) {
        this.expandOnLoad = $
    },
    getExpandOnLoad: function() {
        return this.expandOnLoad
    },
    setParentField: function($) {
        this[olO1l0] = $
    },
    setNodesField: function($) {
        if (this.nodesField != $) {
            var _ = this.root[this.nodesField];
            this.nodesField = $;
            this.O1o0(_)
        }
    },
    setResultAsTree: function($) {
        this[O1O0lo] = $
    },
    setCheckRecursive: function($) {
        this.checkModel = $ ? "cascade": "multiple"
    },
    getCheckRecursive: function() {
        return this.checkModel == "cascade"
    },
    setShowFolderCheckBox: function($) {
        this.onlyLeafCheckable = !$
    },
    getShowFolderCheckBox: function() {
        return ! this.onlyLeafCheckable
    },
    _OnBeforeLoad: function(_) {
        var $ = this._loadingNode || this.root;
        _.node = $;
        if (this.isNodeLoading()) {
            _.async = true;
            _.isRoot = _.node == this.root;
            if (!_.isRoot) _.data[this.idField] = this[l01l1l](_.node)
        }
        this[lOooO0]("beforeload", _)
    },
    _OnPreLoad: function(B) {
        if (this[O1O0lo] == false) B.data = mini.arrayToTree(B.data, this.nodesField, this.idField, this[olO1l0]);
        this[lOooO0]("preload", B);
        var _ = this.nodesField,
        $ = this.expandOnLoad;
        function A(G, C) {
            for (var D = 0,
            F = G.length; D < F; D++) {
                var E = G[D];
                if ($ === true || (mini.isNumber($) && C <= $)) E.expanded = true;
                else E.expanded = false;
                var B = E[_];
                if (B) A(B, C + 1)
            }
        }
        A(B.data, 0)
    },
    _init: function() {
        mini.DataTree[lOO1lo]._init[lOlOo1](this);
        this.root = {
            _id: -1,
            _level: -1
        };
        this.source = this.root[this.nodesField] = [];
        this.viewNodes = null;
        this.dataview = null;
        this.visibleRows = null;
        this._ids[this.root._id] = this.root
    },
    O1o0: function(D) {
        this.source = this.root[this.nodesField] = D || [];
        this.viewNodes = null;
        this.dataview = null;
        this.visibleRows = null;
        var A = mini[lo1oOl](D, this.nodesField),
        B = this._ids;
        B[this.root._id] = this.root;
        for (var _ = 0,
        E = A.length; _ < E; _++) {
            var C = A[_];
            C._id = mini.DataSource.RecordId++;
            B[C._id] = C;
            C._uid = C._id
        }
        A = mini[lo1oOl](D, this.nodesField, "_id", "_pid", this.root._id);
        for (_ = 0, E = A.length; _ < E; _++) {
            var C = A[_],
            $ = this[OO01lO](C);
            C._pid = $._id;
            C._level = $._level + 1;
            delete C._state
        }
        this._doUpdateLoadedCheckedNodes()
    },
    _setAdded: function(_) {
        var $ = this[OO01lO](_);
        _._id = mini.DataSource.RecordId++;
        _._uid = _._id;
        _._pid = $._id;
        _[this.parentField] = $[this.idField];
        _._level = $._level + 1;
        _._state = "added";
        this._ids[_._id] = _;
        delete this.l1l0O1[_._id]
    },
    ooOO: function($) {
        var _ = $[this.nodesField];
        if (!_) _ = $[this.nodesField] = [];
        if (this.viewNodes && !this.viewNodes[$._id]) this.viewNodes[$._id] = [];
        return _
    },
    addNode: function(_, $) {
        if (!_) return;
        return this.insertNode(_, -1, $)
    },
    addNodes: function(_, $) {
        if (!mini.isArray(_)) return;
        return this.insertNodes(_, -1, $)
    },
    insertNodes: function(D, $, A) {
        if (!mini.isNumber($)) return;
        if (!mini.isArray(D)) return;
        if (!A) A = this.root;
        this.beginChange();
        var B = this.ooOO(A);
        if ($ < 0 || $ > B.length) $ = B.length;
        D = D.clone();
        for (var _ = 0,
        C = D.length; _ < C; _++) this.insertNode(D[_], $ + _, A);
        this.endChange();
        return D
    },
    removeNode: function(A) {
        var _ = this[OO01lO](A);
        if (!_) return;
        var $ = this.indexOfNode(A);
        return this.removeNodeAt($, _)
    },
    removeNodes: function(A) {
        if (!mini.isArray(A)) return;
        this.beginChange();
        A = A.clone();
        for (var $ = 0,
        _ = A.length; $ < _; $++) this[Ol00oo](A[$]);
        this.endChange()
    },
    moveNodes: function(E, B, _) {
        if (!E || E.length == 0 || !B || !_) return;
        this.beginChange();
        var A = this;
        mini[Oll0o1](E,
        function($, _) {
            return A[o0lllO]($) > A[o0lllO](_)
        },
        this);
        for (var $ = 0,
        D = E.length; $ < D; $++) {
            var C = E[$];
            this[O1o0l1](C, B, _);
            if ($ != 0) {
                B = C;
                _ = "after"
            }
        }
        this.endChange()
    },
    moveNode: function(E, D, B) {
        if (!E || !D || mini.isNull(B)) return;
        if (this.viewNodes) {
            var _ = D,
            $ = B;
            if ($ == "before") {
                _ = this[OO01lO](D);
                $ = this.indexOfNode(D)
            } else if ($ == "after") {
                _ = this[OO01lO](D);
                $ = this.indexOfNode(D) + 1
            } else if ($ == "add" || $ == "append") {
                if (!_[this.nodesField]) _[this.nodesField] = [];
                $ = _[this.nodesField].length
            } else if (!mini.isNumber($)) return;
            if (this[lOloOO](E, _)) return false;
            var A = this[l1olOo](_);
            if ($ < 0 || $ > A.length) $ = A.length;
            var F = {};
            A.insert($, F);
            var C = this[OO01lO](E),
            G = this[l1olOo](C);
            G.remove(E);
            $ = A[o0lllO](F);
            A[$] = E
        }
        _ = D,
        $ = B,
        A = this.ooOO(_);
        if ($ == "before") {
            _ = this[OO01lO](D);
            A = this.ooOO(_);
            $ = A[o0lllO](D)
        } else if ($ == "after") {
            _ = this[OO01lO](D);
            A = this.ooOO(_);
            $ = A[o0lllO](D) + 1
        } else if ($ == "add" || $ == "append") $ = A.length;
        else if (!mini.isNumber($)) return;
        if (this[lOloOO](E, _)) return false;
        if ($ < 0 || $ > A.length) $ = A.length;
        F = {};
        A.insert($, F);
        C = this[OO01lO](E);
        C[this.nodesField].remove(E);
        $ = A[o0lllO](F);
        A[$] = E;
        this.OOlo1(E, _);
        this.l1Ool();
        var H = {
            parentNode: _,
            index: $,
            node: E
        };
        this[lOooO0]("movenode", H)
    },
    insertNode: function(A, $, _) {
        if (!A) return;
        if (!_) {
            _ = this.root;
            $ = "add"
        }
        if (!mini.isNumber($)) {
            switch ($) {
            case "before":
                $ = this.indexOfNode(_);
                _ = this[OO01lO](_);
                this.insertNode(A, $, _);
                break;
            case "after":
                $ = this.indexOfNode(_);
                _ = this[OO01lO](_);
                this.insertNode(A, $ + 1, _);
                break;
            case "append":
            case "add":
                this[o10000](A, _);
                break;
            default:
                break
            }
            return
        }
        var C = this.ooOO(_),
        D = this[l1olOo](_);
        if ($ < 0) $ = D.length;
        D.insert($, A);
        $ = D[o0lllO](A);
        if (this.viewNodes) {
            var B = D[$ - 1];
            if (B) {
                var E = C[o0lllO](B);
                C.insert(E + 1, A)
            } else C.insert(0, A)
        }
        A._pid = _._id;
        this._setAdded(A);
        this[oo1OOO](A,
        function(A, $, _) {
            A._pid = _._id;
            this._setAdded(A)
        },
        this);
        this.l1Ool();
        var F = {
            parentNode: _,
            index: $,
            node: A
        };
        this[lOooO0]("addnode", F);
        return A
    },
    removeNodeAt: function($, _) {
        if (!_) _ = this.root;
        var C = this[l1olOo](_),
        A = C[$];
        if (!A) return null;
        C.removeAt($);
        if (this.viewNodes) {
            var B = _[this.nodesField];
            B.remove(A)
        }
        this._setRemoved(A);
        this[oo1OOO](A,
        function(A, $, _) {
            this._setRemoved(A)
        },
        this);
        this.oOO100();
        this.l1Ool();
        var D = {
            parentNode: _,
            index: $,
            node: A
        };
        this[lOooO0]("removenode", D);
        return A
    },
    bubbleParent: function(_, B, A) {
        A = A || this;
        if (_) B[lOlOo1](this, _);
        var $ = this[OO01lO](_);
        if ($ && $ != this.root) this[lo110o]($, B, A)
    },
    cascadeChild: function(A, E, B) {
        if (!E) return;
        if (!A) A = this.root;
        var D = A[this.nodesField];
        if (D) {
            D = D.clone();
            for (var $ = 0,
            C = D.length; $ < C; $++) {
                var _ = D[$];
                if (E[lOlOo1](B || this, _, $, A) === false) return;
                this[oo1OOO](_, E, B)
            }
        }
    },
    eachChild: function(B, F, C) {
        if (!F || !B) return;
        var E = B[this.nodesField];
        if (E) {
            var _ = E.clone();
            for (var A = 0,
            D = _.length; A < D; A++) {
                var $ = _[A];
                if (F[lOlOo1](C || this, $, A, B) === false) break
            }
        }
    },
    collapseLevel: function($, _) {
        this.beginChange();
        this.each(function(A) {
            var B = this[OlOool](A);
            if ($ == B) this[OOl0O0](A, _)
        },
        this);
        this.endChange()
    },
    expandLevel: function($, _) {
        this.beginChange();
        this.each(function(A) {
            var B = this[OlOool](A);
            if ($ == B) this[OO000O](A, _)
        },
        this);
        this.endChange()
    },
    collapse: function($, _) {
        if (!$) return;
        this.beginChange();
        $.expanded = false;
        if (_) this[Oo1l1o]($,
        function($) {
            if ($[this.nodesField] != null) this[OOl0O0]($, _)
        },
        this);
        this.endChange();
        var A = {
            node: $
        };
        this[lOooO0]("collapse", A)
    },
    expand: function($, _) {
        if (!$) return;
        this.beginChange();
        $.expanded = true;
        if (_) this[Oo1l1o]($,
        function($) {
            if ($[this.nodesField] != null) this[OO000O]($, _)
        },
        this);
        this.endChange();
        var A = {
            node: $
        };
        this[lOooO0]("expand", A)
    },
    toggle: function($) {
        if (this[oOol0o]($)) this[OOl0O0]($);
        else this[OO000O]($)
    },
    collapseAll: function() {
        this[OOl0O0](this.root, true)
    },
    expandAll: function() {
        this[OO000O](this.root, true)
    },
    isAncestor: function(_, B) {
        if (_ == B) return true;
        if (!_ || !B) return false;
        var A = this[OlOO0](B);
        for (var $ = 0,
        C = A.length; $ < C; $++) if (A[$] == _) return true;
        return false
    },
    getAncestors: function(A) {
        var _ = [];
        while (1) {
            var $ = this[OO01lO](A);
            if (!$ || $ == this.root) break;
            _[_.length] = $;
            A = $
        }
        _.reverse();
        return _
    },
    getRootNode: function() {
        return this.root
    },
    getParentNode: function($) {
        if (!$) return null;
        return this.getby_id($._pid)
    },
    getAllChildNodes: function($) {
        return this[l1olOo]($, true)
    },
    getChildNodes: function(A, C, B) {
        var G = A[this.nodesField];
        if (this.viewNodes && B !== false) G = this.viewNodes[A._id];
        if (C === true && G) {
            var $ = [];
            for (var _ = 0,
            F = G.length; _ < F; _++) {
                var D = G[_];
                $[$.length] = D;
                var E = this[l1olOo](D, C, B);
                if (E && E.length > 0) $.addRange(E)
            }
            G = $
        }
        return G || []
    },
    getChildNodeAt: function($, _) {
        var A = this[l1olOo](_);
        if (A) return A[$];
        return null
    },
    hasChildNodes: function($) {
        var _ = this[l1olOo]($);
        return _.length > 0
    },
    getNodeLevel: function($) {
        return $._level
    },
    getLevel: function($) {
        return $._level
    },
    isLeafNode: function($) {
        return this[OOoOl1]($)
    },
    isLeaf: function($) {
        if (!$ || $[OOoOl1] === false) return false;
        var _ = this[l1olOo]($);
        if (_.length > 0) return false;
        return true
    },
    hasChildren: function($) {
        var _ = this[l1olOo]($);
        return !! (_ && _.length > 0)
    },
    isFirstNode: function(_) {
        if (_ == this.root) return true;
        var $ = this[OO01lO](_);
        if (!$) return false;
        return this[ll11O1]($) == _
    },
    isLastNode: function(_) {
        if (_ == this.root) return true;
        var $ = this[OO01lO](_);
        if (!$) return false;
        return this[oo1011]($) == _
    },
    isCheckedNode: function($) {
        return $.checked === true
    },
    isExpandedNode: function($) {
        return $.expanded == true || $.expanded == 1 || mini.isNull($.expanded)
    },
    isVisible: function(_) {
        var $ = this._ids[_._pid];
        if (!$ || $ == this.root) return true;
        if ($.expanded === false) return false;
        return this.isVisible($)
    },
    getNextNode: function(A) {
        var _ = this.getby_id(A._pid);
        if (!_) return null;
        var $ = this.indexOfNode(A);
        return this[l1olOo](_)[$ + 1]
    },
    getPrevNode: function(A) {
        var _ = this.getby_id(A._pid);
        if (!_) return null;
        var $ = this.indexOfNode(A);
        return this[l1olOo](_)[$ - 1]
    },
    getFirstNode: function($) {
        return this[l1olOo]($)[0]
    },
    getLastNode: function($) {
        var _ = this[l1olOo]($);
        return _[_.length - 1]
    },
    indexOfNode: function(_) {
        var $ = this.getby_id(_._pid);
        if ($) return this[l1olOo]($)[o0lllO](_);
        return - 1
    },
    getAt: function($) {
        return this.getDataView()[$]
    },
    indexOf: function($) {
        return this.getDataView()[o0lllO]($)
    },
    getRange: function(A, C) {
        if (A > C) {
            var D = A;
            A = C;
            C = D
        }
        var B = this[l1olOo](this.root, true),
        E = [];
        for (var _ = A,
        F = C; _ <= F; _++) {
            var $ = B[_];
            if ($) E.push($)
        }
        return E
    },
    selectRange: function($, A) {
        var _ = this[l1olOo](this.root, true);
        if (!mini.isNumber($)) $ = _[o0lllO]($);
        if (!mini.isNumber(A)) A = _[o0lllO](A);
        if (mini.isNull($) || mini.isNull(A)) return;
        var B = this[oOoO0O]($, A);
        this[Oo11O](B)
    },
    findRecords: function(D, A) {
        var C = this[OOOOlO](),
        F = typeof D == "function",
        I = D,
        E = A || this,
        B = [];
        for (var _ = 0,
        H = C.length; _ < H; _++) {
            var $ = C[_];
            if (F) {
                var G = I[lOlOo1](E, $);
                if (G == true) B[B.length] = $;
                if (G === 1) break
            } else if ($[D] == A) B[B.length] = $
        }
        return B
    },
    l1OolCount: 0,
    l1Ool: function() {
        this.l1OolCount++;
        this.dataview = null;
        this.visibleRows = null;
        if (this.__changeCount == 0) this[lOooO0]("datachanged")
    },
    OoO0olView: function() {
        var $ = this[l1olOo](this.root, true);
        return $
    },
    _createVisibleRows: function() {
        var B = this[l1olOo](this.root, true),
        $ = [];
        for (var _ = 0,
        C = B.length; _ < C; _++) {
            var A = B[_];
            if (this.isVisible(A)) $[$.length] = A
        }
        return $
    },
    getList: function() {
        return mini.treeToList(this.source, this.nodesField)
    },
    getDataView: function() {
        if (!this.dataview) this.dataview = this.OoO0olView();
        return this.dataview
    },
    getVisibleRows: function() {
        if (!this.visibleRows) this.visibleRows = this._createVisibleRows();
        return this.visibleRows
    },
    oOO1lO: function() {
        if (!this._filterInfo) {
            this.viewNodes = null;
            return
        }
        var C = this._filterInfo[0],
        B = this._filterInfo[1],
        A = this.viewNodes = {},
        _ = this.nodesField;
        function $(G) {
            var J = G[_];
            if (!J) return false;
            var K = G._id,
            H = A[K] = [];
            for (var D = 0,
            I = J.length; D < I; D++) {
                var F = J[D],
                L = $(F),
                E = C[lOlOo1](B, F, D, this);
                if (E === true || L) H.push(F)
            }
            return H.length > 0
        }
        $(this.root)
    },
    olol0: function() {
        if (!this._filterInfo && !this._sortInfo) {
            this.viewNodes = null;
            return
        }
        if (!this._sortInfo) return;
        var E = this._sortInfo[0],
        D = this._sortInfo[1],
        $ = this._sortInfo[2],
        _ = this.nodesField;
        if (!this.viewNodes) {
            var C = this.viewNodes = {};
            C[this.root._id] = this.root[_].clone();
            this[oo1OOO](this.root,
            function(A, $, B) {
                var D = A[_];
                if (D) C[A._id] = D.clone()
            })
        }
        var B = this;
        function A(F) {
            var H = B[l1olOo](F);
            mini[Oll0o1](H, E, D);
            if ($) H.reverse();
            for (var _ = 0,
            G = H.length; _ < G; _++) {
                var C = H[_];
                A(C)
            }
        }
        A(this.root)
    },
    toArray: function() {
        if (!this._array || this.l1OolCount != this.l1OolCount2) {
            this.l1OolCount2 = this.l1OolCount;
            this._array = this[l1olOo](this.root, true, false)
        }
        return this._array
    },
    toTree: function() {
        return this.root[this.nodesField]
    },
    getChanges: function(_) {
        var $ = [];
        if (_ == "removed" || _ == null) $.addRange(this._removeds.clone());
        this[oo1OOO](this.root,
        function(B, A, C) {
            if (B._state == null || B._state == "") return;
            if (B._state == _ || _ == null) $[$.length] = B
        },
        this);
        return $
    },
    accept: function($) {
        $ = $ || this.root;
        this.beginChange();
        this[oo1OOO](this.root,
        function($) {
            this[l0O11l]($)
        },
        this);
        this._removeds = [];
        this.l1l0O1 = {};
        this.endChange()
    },
    reject: function($) {
        this.beginChange();
        this[oo1OOO](this.root,
        function($) {
            this.rejectRecord($)
        },
        this);
        this._removeds = [];
        this.l1l0O1 = {};
        this.endChange()
    },
    acceptRecord: function($) {
        delete this.l1l0O1[$._id];
        if ($._state == "deleted") this[Ol00oo]($);
        else {
            delete $._state;
            delete this.l1l0O1[$._id];
            this.l1Ool()
        }
    },
    rejectRecord: function(_) {
        if (_._state == "added") this[Ol00oo](_);
        else if (_._state == "modified" || _._state == "deleted") {
            var $ = this.OollO1(_);
            mini.copyTo(_, $);
            delete _._state;
            delete this.l1l0O1[_._id];
            this.l1Ool()
        }
    },
    upGrade: function(F) {
        var C = this[OO01lO](F);
        if (C == this.root || F == this.root) return false;
        var E = C[this.nodesField],
        _ = E[o0lllO](F),
        G = F[this.nodesField] ? F[this.nodesField].length: 0;
        for (var B = E.length - 1; B >= _; B--) {
            var $ = E[B];
            E.removeAt(B);
            if ($ != F) {
                if (!F[this.nodesField]) F[this.nodesField] = [];
                F[this.nodesField].insert(G, $)
            }
        }
        var D = this[OO01lO](C),
        A = D[this.nodesField],
        _ = A[o0lllO](C);
        A.insert(_ + 1, F);
        this.OOlo1(F, D);
        this.oOO1lO();
        this.l1Ool()
    },
    downGrade: function(B) {
        if (this[O0lll0](B)) return false;
        var A = this[OO01lO](B),
        C = A[this.nodesField],
        $ = C[o0lllO](B),
        _ = C[$ - 1];
        C.removeAt($);
        if (!_[this.nodesField]) _[this.nodesField] = [];
        _[this.nodesField][o0llo1](B);
        this.OOlo1(B, _);
        this.oOO1lO();
        this.l1Ool()
    },
    OOlo1: function(_, $) {
        _._pid = $._id;
        _._level = $._level + 1;
        this[oo1OOO](_,
        function(A, $, _) {
            A._pid = _._id;
            A._level = _._level + 1;
            A[this.parentField] = _[this.idField]
        },
        this);
        this._setModified(_)
    },
    setCheckModel: function($) {
        this.checkModel = $
    },
    getCheckModel: function() {
        return this.checkModel
    },
    setOnlyLeafCheckable: function($) {
        this.onlyLeafCheckable = $
    },
    getOnlyLeafCheckable: function() {
        return this.onlyLeafCheckable
    },
    setAutoCheckParent: function($) {
        this.autoCheckParent = $
    },
    getAutoCheckParent: function() {
        return this.autoCheckParent
    },
    _doUpdateLoadedCheckedNodes: function() {
        var B = this[ll0o01](this.root);
        for (var $ = 0,
        A = B.length; $ < A; $++) {
            var _ = B[$];
            if (_.checked == true) this._doUpdateNodeCheckState(_)
        }
    },
    _doUpdateNodeCheckState: function(B) {
        if (!B) return;
        var J = this.isChecked(B);
        if (this.checkModel == "cascade") {
            this[oo1OOO](B,
            function(_) {
                var $ = this.getCheckable(_);
                if ($) this.doCheckNodes(_, J)
            },
            this);
            if (!this.autoCheckParent) {
                var $ = this[OlOO0](B);
                $.reverse();
                for (var G = 0,
                E = $.length; G < E; G++) {
                    var C = $[G],
                    I = this.getCheckable(C);
                    if (I == false) return;
                    var A = this[l1olOo](C),
                    H = true;
                    for (var _ = 0,
                    F = A.length; _ < F; _++) {
                        var D = A[_];
                        if (!this[OOo01o](D)) H = false
                    }
                    if (H) this.doCheckNodes(C, true);
                    else this.doCheckNodes(C, false);
                    this[lOooO0]("checkchanged", {
                        nodes: [C],
                        _nodes: [C]
                    })
                }
            }
        }
        if (this.autoCheckParent && J) {
            $ = this[OlOO0](B);
            $.reverse();
            for (G = 0, E = $.length; G < E; G++) {
                C = $[G],
                I = this.getCheckable(C);
                if (I == false) return;
                C.checked = true;
                this[lOooO0]("checkchanged", {
                    nodes: [C],
                    _nodes: [C]
                })
            }
        }
    },
    doCheckNodes: function(E, B, D) {
        if (!E) return;
        if (typeof E == "string") E = E.split(",");
        if (!mini.isArray(E)) E = [E];
        E = E.clone();
        var _ = [];
        B = B !== false;
        if (D === true) if (this.checkModel == "single") this[o0O1l1]();
        for (var $ = E.length - 1; $ >= 0; $--) {
            var A = this[o00101](E[$]);
            if (!A || (B && A.checked === true) || (!B && A.checked !== true)) {
                if (A) if (D === true) this._doUpdateNodeCheckState(A);
                continue
            }
            A.checked = B;
            _.push(A);
            if (D === true) this._doUpdateNodeCheckState(A)
        }
        var C = this;
        setTimeout(function() {
            C[lOooO0]("checkchanged", {
                nodes: E,
                _nodes: _,
                checked: B
            })
        },
        1)
    },
    checkNode: function($) {
        this.doCheckNodes([$], true, true)
    },
    uncheckNode: function($) {
        this.doCheckNodes([$], false, true)
    },
    checkNodes: function($) {
        if (!mini.isArray($)) $ = [];
        this.doCheckNodes($, true, true)
    },
    uncheckNodes: function($) {
        if (!mini.isArray($)) $ = [];
        this.doCheckNodes($, false, true)
    },
    checkAllNodes: function() {
        var $ = this[oOloOO]();
        this.doCheckNodes($, true)
    },
    uncheckAllNodes: function() {
        var $ = this[oOloOO]();
        this.doCheckNodes($, false)
    },
    getCheckedNodes: function($) {
        var _ = [];
        this[oo1OOO](this.root,
        function(A) {
            if (A.checked == true) {
                var B = this.isLeafNode(A);
                if ($ == "parent") {
                    if (!B) _.push(A)
                } else if (A == "leaf") {
                    if (B) _.push(A)
                } else _.push(A)
            }
        },
        this);
        return _
    },
    getCheckedNodesId: function(A, $) {
        var B = this[oOOo1O](A),
        _ = this.lloo(B, $);
        return _[0]
    },
    getCheckedNodesText: function(A, $) {
        var B = this[oOOo1O](A),
        _ = this.lloo(B, $);
        return _[1]
    },
    isChecked: function($) {
        $ = this[o00101]($);
        if (!$) return null;
        return $.checked === true
    },
    getCheckState: function(_) {
        _ = this[o00101](_);
        if (!_) return null;
        if (_.checked === true) return "checked";
        if (!_[this.nodesField]) return "unchecked";
        var B = this[l1olOo](_);
        for (var $ = 0,
        A = B.length; $ < A; $++) {
            var _ = B[$];
            if (_.checked === true) return "indeterminate"
        }
        return "unchecked"
    },
    getUnCheckableNodes: function() {
        var $ = [];
        this[oo1OOO](this.root,
        function(A) {
            var _ = this.getCheckable(A);
            if (_ == false) $.push(A)
        },
        this);
        return $
    },
    setCheckable: function(B, _) {
        if (!B) return;
        if (!mini.isArray(B)) B = [B];
        B = B.clone();
        _ = !!_;
        for (var $ = B.length - 1; $ >= 0; $--) {
            var A = this[o00101](B[$]);
            if (!A) continue;
            A.checkable = checked
        }
    },
    getCheckable: function($) {
        $ = this[o00101]($);
        if (!$) return false;
        if ($.checkable === true) return true;
        if ($.checkable === false) return false;
        return this.isLeafNode($) ? true: !this.onlyLeafCheckable
    },
    showNodeCheckbox: function($, _) {},
    isNodeLoading: function() {
        return !! this._loadingNode
    },
    loadNode: function(A, $) {
        this._loadingNode = A;
        var C = {
            node: A
        };
        this[lOooO0]("beforeloadnode", C);
        var _ = new Date(),
        B = this;
        B.Ol0O1lAjax(B.loadParams, null, null, null,
        function(D) {
            var C = new Date() - _;
            if (C < 60) C = 60 - C;
            setTimeout(function() {
                D.node = B._loadingNode;
                B._loadingNode = null;
                var _ = A[B.nodesField];
                B[l0oo1l](_);
                var C = D.data;
                if (C && C.length > 0) {
                    B[l11OOl](C, A);
                    if ($ !== false) B[OO000O](A, true);
                    else B[OOl0O0](A, true)
                } else delete A[OOoOl1];
                B[lOooO0]("loadnode", {
                    node: A
                })
            },
            C)
        },
        true)
    }
});
oloo(mini.DataTree, "datatree");
Oo0l0O = function() {
    Oo0l0O[lOO1lo][o1lOol][lOlOo1](this);
    this._TaskUIDs = {};
    this._TaskIndexs = {};
    this._linkHashed = {};
    this.topTimeScale = Oo0l0O.getTimeScale(this.topTimeScaleType);
    this.bottomTimeScale = Oo0l0O.getTimeScale(this.bottomTimeScaleType);
    this.zoomTimeScales = Oo0l0O.createZoomTimeScales();
    var $ = new Date();
    this.startDate = new Date($.getFullYear(), $.getMonth(), $.getDate());
    this.finishDate = new Date($.getFullYear(), $.getMonth() + 1, $.getDate());
    this[OOO1o1](this.startDate, this.finishDate);
    this[O0OOlO]([])
};
O01o(Oo0l0O, o0oo1l, {
    virtualModel: false,
    viewModel: "gantt",
    baselineIndex: 0,
    startDate: null,
    finishDate: null,
    weekStartDay: 0,
    rowHeight: 20,
    showGridLines: true,
    showLinkLines: true,
    showSummary: true,
    showCriticalPath: false,
    topTimeScaleType: "week",
    bottomTimeScaleType: "day",
    showLabel: true,
    labelField: "Name",
    labelAlign: "right",
    allowDrag: true,
    scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 0,
    scrollHeight: 0,
    headerHeight: 25,
    uiCls: "mini-ganttview",
    O1Ol0: false,
    showed: false,
    headerCellOffset: 2,
    _vscrollTimer: null,
    _hscrollTimer: null,
    topOffset: 4
});
lo0O1 = Oo0l0O[O010O1];
lo0O1[lOl0O1] = l0oOo;
lo0O1[o000ol] = o11ll;
lo0O1[Oloo1o] = OoOoO;
lo0O1[OoOOO] = lO011;
lo0O1.O0O11O = o01oll;
lo0O1[OOoo1O] = OO0ll;
lo0O1[o0O0O1] = o1olo;
lo0O1[l00oll] = ol01O;
lo0O1[llo00o] = Oo0Oo;
lo0O1[O100OO] = lo00O;
lo0O1[OOo1oo] = ollOl;
lo0O1[l0110O] = l1o01l;
lo0O1[OlO1lO] = ll0OO;
lo0O1[olo0O1] = oll0o;
lo0O1[l0llO0] = Ollo0;
lo0O1[O1101l] = o10o0;
lo0O1[O1lOO0] = l1o1l1;
lo0O1[OO10OO] = lOo01;
lo0O1.oOO1o1 = O0lOl;
lo0O1.oOoolO = l0ol1;
lo0O1[lo01oO] = lOO0l;
lo0O1[O11Ooo] = Oo0o1;
lo0O1.OlOO = OO11lo;
lo0O1.oo1Oo = l00l0;
lo0O1.l0o0 = o010o;
lo0O1[O01O0o] = oo0oO;
lo0O1[llo0o0] = ll1Ol;
lo0O1[o1o0l1] = lOll1;
lo0O1[o1loo0] = OOOOO;
lo0O1[llllol] = ll1OlBox;
lo0O1[o00o1o] = ll1OlHeight;
lo0O1[o11OlO] = ll1OlTop;
lo0O1[O100l0] = o1OOo;
lo0O1[OOoo0O] = l1l10;
lo0O1.O0llO = l1o01;
lo0O1.O0oO = O1001;
lo0O1.ooOoOO = ooO11;
lo0O1[lllO01] = OoooO1;
lo0O1[l0OOlO] = Ol1011;
lo0O1.o10OOO = o1o0O;
lo0O1[O0O010] = O0ooo;
lo0O1.ll10o = lolol;
lo0O1.o0oOlo = O01oO;
lo0O1.Oll11o = l10l1;
lo0O1.lo01oo = lloll;
lo0O1.Olllo1 = o01lO;
lo0O1.o1o1 = l1000;
lo0O1.lOO01l = loooO;
lo0O1.O0lOo1 = l11OO;
lo0O1.O1O0Ol = o0o01l;
lo0O1.l1OO01 = l1o10o;
lo0O1.OO0o = oolOO;
lo0O1.O00l01 = ol1lo;
lo0O1.l1lll = o0011;
lo0O1.lOlo0o = oOO0ll;
lo0O1.Ool0o1 = olo10;
lo0O1.OoOo0O = loOO1;
lo0O1[looOl1] = l101O;
lo0O1.o1l1o = lO0lo;
lo0O1.o10Oo1 = OO1o0;
lo0O1.OOO11o = olO1l;
lo0O1.ol1O0 = oo00l;
lo0O1[olo111] = OO01;
lo0O1[O0OOlO] = oOOo;
lo0O1[OOO1o1] = l11Oo;
lo0O1[O11llO] = l1llo;
lo0O1[oOoOlO] = lOo0O;
lo0O1[O1lOl0] = ooo1O;
lo0O1[oll0lO] = l01O1;
lo0O1[ooollo] = O1O0lO;
lo0O1[oolO1o] = o1o00;
lo0O1[OO10ol] = o01oo;
lo0O1[l0OoOO] = OO0lO;
lo0O1[loO1l0] = lll1o;
lo0O1[o1ll10] = ol0O0;
lo0O1[ooOl1l] = o0Oll;
lo0O1[lo0101] = O01Ol;
lo0O1[loo00l] = ooO1O;
lo0O1[l0l001] = l00ll;
lo0O1[O0oooo] = l1olO;
lo0O1[OOOloO] = o0l1O;
lo0O1[o0lO0l] = O0l10;
lo0O1[lOOll1] = o1lo1;
lo0O1[oloo0O] = oO111;
lo0O1[l010l1] = lo1ll;
lo0O1[O0lOl0] = l01OO;
lo0O1.oOl1oO = O11ll;
lo0O1[oloOoo] = O0ll1;
lo0O1[lO0l01] = o0oll;
lo0O1[oloO11] = l0lol;
lo0O1[O0OO1O] = o10O1O;
lo0O1[oO100l] = oO0o0;
Oo0l0O[O010O1].getTimeScaleStartDate = function(E, A) {
    var C = E.getFullYear(),
    D = E.getMonth(),
    $ = E.getDate(),
    B = E.getHours(),
    _ = E.getMinutes(),
    F = E.getSeconds();
    switch (A) {
    case "year":
        E = new Date(C, 0, 1);
        break;
    case "halfyear":
        if (D < 6) E = new Date(C, 0, 1);
        else E = new Date(C, 6, 1);
        break;
    case "quarter":
        if (D < 3) E = new Date(C, 0, 1);
        else if (D < 6) E = new Date(C, 3, 1);
        else if (D < 9) E = new Date(C, 6, 1);
        else E = new Date(C, 9, 1);
        break;
    case "month":
        E = new Date(C, D, 1);
        break;
    case "tendays":
        if ($ <= 10) E = new Date(C, D, 1);
        else if ($ <= 20) E = new Date(C, D, 11);
        else E = new Date(C, D, 21);
        break;
    case "week":
        E = mini.getWeekStartDate(E, this.weekStartDay);
        break;
    case "day":
        E = new Date(C, D, $);
        break;
    case "hour":
        E = new Date(C, D, $, B);
        break;
    case "minutes":
        E = new Date(C, D, $, B, _);
        break;
    case "seconds":
        E = new Date(C, D, $, B, _, F);
        break
    }
    return E
};
Oo0l0O[O010O1].getTimeScaleNextDate = function(G, B, I) {
    var I = I || 1;
    weekStartDay = this.weekStartDay;
    var E;
    for (var _ = 0; _ < I; _++) {
        var D = G.getFullYear(),
        F = G.getMonth(),
        $ = G.getDate(),
        C = G.getHours(),
        A = G.getMinutes(),
        H = G.getSeconds();
        switch (B) {
        case "year":
            E = new Date(D + 1, 0, 1);
            break;
        case "halfyear":
            if (F < 6) E = new Date(D, 6, 1);
            else E = new Date(D + 1, 0, 1);
            break;
        case "quarter":
            if (F < 3) E = new Date(D, 3, 1);
            else if (F < 6) E = new Date(D, 6, 1);
            else if (F < 9) E = new Date(D, 9, 1);
            else E = new Date(D + 1, 0, 1);
            break;
        case "month":
            E = new Date(D, F + 1, 1);
            break;
        case "tendays":
            if ($ <= 10) E = new Date(D, F, 11);
            else if ($ <= 20) E = new Date(D, F, 21);
            else E = new Date(D, F + 1, 1);
            break;
        case "week":
            E = mini.getNextWeekStartDate(G, weekStartDay);
            break;
        case "day":
            E = new Date(D, F, $ + 1);
            break;
        case "hour":
            E = new Date(D, F, $, C + 1);
            break;
        case "minutes":
            E = new Date(D, F, $, C, A + 1);
            break;
        case "seconds":
            E = new Date(D, F, $, C, A, H + 1);
            break
        }
        G = E
    }
    return E
};
mini.getNextWeekStartDate = function(A, _) {
    var $ = mini.getWeekStartDate(A, _);
    $.setDate($.getDate() + 7);
    return $
};
String.leftPad = function(_, B, $) {
    B = B || 2;
    $ = $ || "0";
    var A = new String(_);
    if ($ == null || $ == undefined) $ = " ";
    while (A.length < B) A = $ + A;
    return A.toString()
};
Oo0l0O.TimeScale = {
    year: {
        type: "year",
        width: 40,
        number: 1,
        align: "center",
        index: 0,
        tooltip: function(_, $) {
            return _.getFullYear()
        },
        formatter: function(A, _, $) {
            if (_ == "top") return A.getFullYear();
            else return A.getFullYear()
        }
    },
    halfyear: {
        type: "halfyear",
        width: 24,
        number: 1,
        align: "center",
        index: 1,
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1)
        },
        formatter: function(B, A, _) {
            var C = "",
            $ = B.getMonth();
            if ($ < 6) C += "H" + 1;
            else C += "H" + 2;
            return C
        }
    },
    quarter: {
        type: "quarter",
        width: 24,
        number: 1,
        align: "center",
        index: 3,
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1)
        },
        formatter: function(B, A, _) {
            var C = "",
            $ = B.getMonth();
            if ($ < 3) C += "Q" + 1;
            else if ($ < 6) C += "Q" + 2;
            else if ($ < 9) C += "Q" + 3;
            else C += "Q" + 4;
            if (A == "top") C = B.getFullYear() + "\u5e74" + C;
            return C
        }
    },
    month: {
        type: "month",
        width: 24,
        number: 1,
        align: "center",
        index: 4,
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1)
        },
        formatter: function(A, _, $) {
            var B = A.getMonth() + 1;
            if (_ == "top") B = A.getFullYear() + "-" + String.leftPad(B);
            return B
        }
    },
    week: {
        type: "week",
        width: 24,
        number: 1,
        align: "center",
        index: 5,
        tooltip: function(A, $) {
            var B = A.getFullYear() + "-" + String.leftPad(A.getMonth() + 1) + "-" + String.leftPad(A.getDate()),
            _ = new Date(A[O0olo1]());
            _.setDate(_.getDate() + 6);
            B += " \u5230 ";
            B += _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1) + "-" + String.leftPad(_.getDate());
            return B
        },
        formatter: function(A, _, $) {
            if (_ == "top") return A.getFullYear() + "-" + String.leftPad(A.getMonth() + 1) + "-" + String.leftPad(A.getDate());
            else return A.getDate()
        }
    },
    day: {
        type: "day",
        width: 24,
        number: 1,
        align: "center",
        index: 6,
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1) + "-" + String.leftPad(_.getDate()) + " " + Oo0l0O.LongWeeks[_.getDay()]
        },
        formatter: function(A, _, $) {
            if (_ == "top") return A.getFullYear() + "-" + String.leftPad(A.getMonth() + 1) + "-" + String.leftPad(A.getDate());
            else if ($ == "week") return Oo0l0O.ShortWeeks[A.getDay()];
            else return A.getDate()
        }
    },
    hour: {
        type: "hour",
        width: 20,
        number: 1,
        align: "center",
        index: 7,
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1) + "-" + String.leftPad(_.getDate()) + " " + String.leftPad(_.getHours())
        },
        formatter: function(A, _, $) {
            if (_ == "top") return A.getFullYear() + "-" + String.leftPad(A.getMonth() + 1) + "-" + String.leftPad(A.getDate()) + " " + String.leftPad(A.getHours());
            else return String.leftPad(A.getHours())
        }
    },
    minutes: {
        type: "minutes",
        width: 20,
        number: 1,
        align: "center",
        index: 8,
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1) + "-" + String.leftPad(_.getDate()) + " " + String.leftPad(_.getHours()) + ":" + String.leftPad(_.getMinutes())
        },
        formatter: function(A, _, $) {
            if (_ == "top") return A.getFullYear() + "-" + String.leftPad(A.getMonth() + 1) + "-" + String.leftPad(A.getDate()) + " " + String.leftPad(A.getHours()) + ":" + String.leftPad(A.getMinutes());
            else return String.leftPad(A.getMinutes())
        }
    },
    index: 9,
    seconds: {
        type: "seconds",
        width: 20,
        number: 1,
        align: "center",
        tooltip: function(_, $) {
            return _.getFullYear() + "-" + String.leftPad(_.getMonth() + 1) + "-" + String.leftPad(_.getDate()) + " " + String.leftPad(_.getHours()) + ":" + String.leftPad(_.getMinutes()) + ":" + String.leftPad(_.getSeconds())
        },
        formatter: function(A, _, $) {
            if (_ == "top") return A.getDate() + " " + A.getHours() + ":" + A.getMinutes() + ":" + A.getSeconds();
            else return String.leftPad(A.getSeconds())
        }
    }
};
Oo0l0O.ShortWeeks = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
Oo0l0O.LongWeeks = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
Oo0l0O.getTimeScale = function(_) {
    var $ = Oo0l0O.TimeScale[_.toLowerCase()];
    if ($) $ = mini.copyTo({},
    $);
    return $
};
Oo0l0O.createZoomTimeScales = function() {
    var A = [],
    $ = Oo0l0O.getTimeScale("year"),
    _ = Oo0l0O.getTimeScale("halfyear");
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("year"),
    _ = Oo0l0O.getTimeScale("quarter");
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("year"),
    _ = Oo0l0O.getTimeScale("month");
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("quarter"),
    _ = Oo0l0O.getTimeScale("month");
    _.width = 24;
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("month"),
    _ = Oo0l0O.getTimeScale("week");
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("month"),
    _ = Oo0l0O.getTimeScale("day");
    _.number = 3;
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("week"),
    _ = Oo0l0O.getTimeScale("day");
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("day"),
    _ = Oo0l0O.getTimeScale("hour");
    _.number = 6;
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("day"),
    _ = Oo0l0O.getTimeScale("hour");
    _.number = 2;
    A.push([$, _]);
    $ = Oo0l0O.getTimeScale("day"),
    _ = Oo0l0O.getTimeScale("hour");
    _.number = 1;
    A.push([$, _]);
    return A
};
mini._GanttViewToolTip = function($) {
    this.gantt = $;
    oOO1l(document.body, "mousemove", this.__OnGanttMouseMove, this);
    this.gantt[O0011o]("ItemDragMove", this.__OnItemDragMove, this);
    this.gantt[O0011o]("ItemDragComplete", this.O1O0, this);
    this.gantt[O0011o]("scroll", this.OllOl1, this);
    this.gantt[O0011o]("refresh",
    function($) {
        this.draging = false;
        this.hideTip()
    },
    this)
};
mini._GanttViewToolTip[O010O1] = {
    OllOl1: function(E) {
        if (!this.gantt[OolO10]()) return;
        if (E.direction == "vertical") {
            this.toolTipEvent = "_OnScrollToolTipNeeded";
            var D = 0,
            B = 0;
            if (this.tooltipTimer) {
                clearTimeout(this.tooltipTimer);
                this.tooltipTimer = null
            }
            var _ = this,
            A = 30;
            if (mini.isFireFox) {
                var $ = _.gantt[o1loo0]();
                _.showTip($, "right", "top", -1);
                _.tooltipTimer = null;
                A = 0
            } else this.tooltipTimer = setTimeout(function() {
                var $ = _.gantt[o1loo0]();
                _.showTip($, "right", "top", 0);
                _.tooltipTimer = null
            },
            A)
        } else {
            this.toolTipEvent = "_OnDateToolTipNeeded";
            var D = 0,
            B = 0,
            C = this.gantt[o1o0l1]();
            this.showTip(C, "left", "bottom", 0)
        }
    },
    __OnItemDragMove: function(A) {
        this.toolTipEvent = "_OnItemDragTipNeeded";
        this.draging = true;
        var _ = A.drag.init[0],
        $ = A.drag.init[1];
        this.showTip(A.item, _, $ + 10, 0, true)
    },
    O1O0: function($, _) {
        this.draging = false;
        this.hideTip()
    },
    __OnGanttMouseMove: function(D) {
        if (this.draging === true) return;
        var A = D.target,
        _ = this.gantt;
        if (_.O1Ol0 == true) return;
        if (!_[lloo0o](D)) {
            this.hideTip();
            return
        }
        var $ = _.l0o0(D);
        if ($) {
            var B = O01l0O(A, "mini-gantt-baseline");
            $.isBaseline = B;
            this.toolTipEvent = "_OnItemToolTipNeeded";
            this.toolTipItem = $;
            this.showTip($, D.pageX + 8, D.pageY + 15, this.showTipDelay)
        } else {
            var C = _.oo1Oo(D);
            if (C) {
                this.toolTipEvent = "_OnLinkToolTipNeeded";
                this.toolTipItem = C;
                this.showTip(C, D.pageX + 5, D.pageY + 8, this.showTipDelay)
            } else this.hideTip()
        }
    },
    showTipDelay: 700,
    showTip: function($, E, B, D, C) {
        if (this._lastShowItem == $ && D != 0) {
            this._showXY = [E, B];
            return
        }
        this.hideTip(false);
        if (this.hideTimer) {
            clearInterval(this.hideTimer);
            this.hideTimer = null
        }
        var _ = this.gantt;
        this._lastShowItem = $;
        var A = this;
        this._showXY = [E, B];
        if (D <= 0 && mini.isFireFox) A._showTipCore($, C);
        else this._showTipTimer = setTimeout(function() {
            A._showTipCore($, C)
        },
        D)
    },
    _showTipCore: function($, E) {
        var _ = this.gantt;
        if (!this._tipEl) this._tipEl = mini.append(document.body, "<div class=\"mini-ganttview-tooltip\" style=\"display:none;\"></div>");
        if (E == true) this._tipEl.style.width = "auto";
        var G = _[this.toolTipEvent]($);
        this._tipEl.innerHTML = G.tooltip;
        this._tipEl.style.display = "block";
        var F = this._showXY[0],
        C = this._showXY[1];
        mini[l0lO1l](this._tipEl, -1000, -1000);
        var D = mini.getSize(this._tipEl),
        A = this.gantt[OOoo0O]();
        if (F == "left") F = A.x + 5;
        else if (F == "right") F = A.right - 20 - D.width;
        if (C == "top") C = A.y + 5;
        else if (C == "bottom") C = A.bottom - 20 - D.height;
        var B = mini[OOoo0O]();
        if (F + D.width > B.right) F = B.right - D.width;
        if (C + D.height > B.bottom) C = B.bottom - D.height;
        mini[l0lO1l](this._tipEl, F, C)
    },
    hideTip: function(A, $) {
        var _ = this;
        if (_._tipEl && A !== false) {
            mini[Ol00oo](_._tipEl);
            _._tipEl = null
        }
        _._lastShowItem = null;
        clearInterval(_._showTipTimer)
    }
};
mini._GanttViewDragDrop = function($) {
    this.owner = $;
    this.owner[O0011o]("refresh", this.__OnGanttRefresh, this);
    oOO1l(this.owner.el, "mousedown", this.__OnGanttMouseDown, this)
};
mini._GanttViewDragDrop[O010O1] = {
    isDraging: function() {
        return !! this.dragAction
    },
    originalItem: null,
    dragItem: null,
    dragAction: null,
    _BeforeDragMove: function($, A) {
        var _ = this.owner[OoOOO]($, "move");
        if (!_.cancel) this.getDrag().start(A)
    },
    __OnGanttMouseDown: function(C) {
        var A = C.target,
        _ = this.owner;
        if (_[OO11O1]()) return;
        if (!_.allowDrag) return;
        var $ = _.l0o0(C);
        if (!$) return;
        if (O01l0O(A, "mini-gantt-baseline")) return;
        if (mini.MouseButton.Left == C.button) {
            this.dragItem = $;
            this.originalItem = mini.copyTo({},
            $);
            if (l0ll(A, "mini-gantt-resize-start")) {
                this.dragAction = "start";
                var B = _[OoOOO]($, "start");
                if (!B.cancel) this.getDrag().start(C)
            } else if (l0ll(A, "mini-gantt-resize-finish")) {
                this.dragAction = "finish";
                B = _[OoOOO]($, "finish");
                if (!B.cancel) this.getDrag().start(C)
            } else if (l0ll(A, "mini-gantt-resize-percentcomplete")) {
                this.dragAction = "percentcomplete";
                B = _[OoOOO]($, "percentcomplete");
                if (!B.cancel) this.getDrag().start(C)
            } else if (O01l0O(A, "mini-gantt-item")) {
                this.dragAction = "move";
                this._BeforeDragMove($, C)
            }
        }
    },
    getDrag: function() {
        if (!this.drag) this.drag = new mini.Drag({
            delay: 100,
            capture: true,
            context: this.owner.o01Ool,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    },
    _GetCursor: function() {
        switch (this.dragAction) {
        case "start":
            return "w-resize";
            break;
        case "finish":
            return "w-resize";
            break;
        case "percentcomplete":
            return "row-resize";
            break;
        case "move":
            return "move";
            break;
        case "link":
            return "move";
            break
        }
    },
    O0lO00: function(A) {
        var _ = this.owner,
        $ = this.dragItem;
        this.viewBox = _[O100l0](_.viewRegion);
        var B = _[llllol]($);
        this.MoveOffset = B.left - A.init[0];
        this.timeSpan = $.Finish - $.Start;
        this.itemBox = B
    },
    O1l1l: function(A) {
        var _ = this.owner,
        $ = this.dragItem,
        C = this.viewBox,
        G = _[OOoo0O]();
        switch (this.dragAction) {
        case "start":
            var D = _[O0O010](A.now[0]);
            $.Start = D;
            if ($.Start > $.Finish) $.Start = $.Finish;
            setTimeout(function() {
                _.OO0o($)
            },
            10);
            break;
        case "finish":
            D = _[O0O010](A.now[0]);
            $.Finish = D;
            if ($.Start > $.Finish) $.Finish = $.Start;
            setTimeout(function() {
                _.OO0o($)
            },
            1);
            break;
        case "percentcomplete":
            var F = this.itemBox.width,
            E = A.now[0] - G.x + C.left - this.itemBox.x,
            B = parseInt(E * 100 / F);
            if (B < 0) B = 0;
            if (B > 100) B = 100;
            $.PercentComplete = B;
            setTimeout(function() {
                _.OO0o($, false)
            },
            10);
            break;
        case "move":
            E = A.now[0] + this.MoveOffset,
            D = _[l0OOlO](E);
            $.Start = D;
            $.Finish = new Date(D[O0olo1]() + this.timeSpan);
            setTimeout(function() {
                _.OO0o($)
            },
            10);
            break;
        case "link":
            break
        }
        _[Oloo1o]($, A, this.dragAction)
    },
    dropNode: null,
    loO1: function(B, C) {
        var A = this.owner,
        $ = this.dragItem;
        if (C == false) mini.copyTo(this.dragItem, this.originalItem);
        else {
            var _ = this.dragItem["Start"];
            switch (this.dragAction) {
            case "move":
                this.dropNode = A.o10OOO(B.now[1]);
                var D = A[o000ol](this.dragItem, this.dropNode);
                if (D.cancel) C = false;
                break;
            case "start":
                break;
            case "finish":
                _ = this.dragItem["Finish"];
                break;
            case "percentcomplete":
                _ = this.dragItem["PercentComplete"];
                break;
            case "link":
                break
            }
            mini.copyTo(this.dragItem, this.originalItem);
            if (C) this[lOl0O1](_)
        }
        if (C == false) B.event.stopPropagation();
        this.stopDrag(C)
    },
    _OnItemDragComplete: function(_) {
        var A = this.owner,
        $ = this.dragItem;
        A[lOl0O1](this.dragItem, this.dragAction, _, this.dropNode)
    },
    stopDrag: function(A) {
        var _ = this.owner,
        $ = this.dragItem;
        if (A == false) _[looOl1]();
        this.dragItem = this.originalItem = this.dragAction = this.dropNode = null
    },
    __OnGanttRefresh: function(_) {
        if (this.__oOOoo0Timer) clearTimeout(this.__oOOoo0Timer);
        var $ = this;
        this.__oOOoo0Timer = setTimeout(function() {
            $.renderoOOoo0();
            $.__oOOoo0Timer = null
        },
        300)
    },
    renderItemoOOoo0: function($, D, H, G) {
        var B = this.owner,
        G = $._id,
        F = B[OoOOO]($, "start");
        if (!F.cancel) {
            H[H.length] = "<div id=\"";
            H[H.length] = G;
            H[H.length] = "\" class=\"mini-gantt-resize-start\" style=\"left:";
            H[H.length] = D.x - 2;
            H[H.length] = "px;top:";
            H[H.length] = D.y;
            H[H.length] = "px;width:";
            H[H.length] = 5;
            H[H.length] = "px;height:";
            H[H.length] = D.height;
            H[H.length] = "px;\"></div>"
        }
        F = B[OoOOO]($, "finish");
        if (!F.cancel) {
            H[H.length] = "<div id=\"";
            H[H.length] = G;
            H[H.length] = "\" class=\"mini-gantt-resize-finish\" style=\"left:";
            H[H.length] = D.right - 2;
            H[H.length] = "px;top:";
            H[H.length] = D.y;
            H[H.length] = "px;width:";
            H[H.length] = 5;
            H[H.length] = "px;height:";
            H[H.length] = D.height;
            H[H.length] = "px;\"></div>"
        }
        F = B[OoOOO]($, "percentcomplete");
        if (!F.cancel) {
            var E = $.PercentComplete || 0,
            C = parseInt((D.right - D.x) * E / 100),
            _ = D.x + C,
            A = 4;
            if (E == 0) A = 3;
            else if (E == 100) {
                A = 3;
                _ -= 3
            } else _ -= 2;
            H[H.length] = "<div id=\"";
            H[H.length] = G;
            H[H.length] = "\" class=\"mini-gantt-resize-percentcomplete\" style=\"left:";
            H[H.length] = _;
            H[H.length] = "px;top:";
            H[H.length] = D.y;
            H[H.length] = "px;width:";
            H[H.length] = A;
            H[H.length] = "px;height:";
            H[H.length] = D.height;
            H[H.length] = "px;\"></div>"
        }
    },
    renderoOOoo0: function() {
        var H = this.owner;
        if (!H.allowDrag || H[OO11O1]()) return;
        var B = H.viewRegion,
        J = H[O100l0](B),
        E = J.left,
        K = J.top,
        L = J.width,
        N = J.height,
        I = H[olo111](),
        C = B.startRow,
        A = B.endRow,
        F = [];
        for (var G = C,
        D = A; G <= D; G++) {
            var $ = I[G];
            if (!$) continue;
            var _ = H[llllol]($, E, K);
            this.renderItemoOOoo0($, _, F)
        }
        var M = "<div>" + F.join("") + "</div>";
        mini.append(H.cellsEl, M)
    }
};
o1O1O0View = function() {
    this.topTimeScale = Oo0l0O.getTimeScale(this.topTimeScaleType);
    this.bottomTimeScale = Oo0l0O.getTimeScale(this.bottomTimeScaleType);
    this.zoomTimeScales = Oo0l0O.createZoomTimeScales();
    var $ = new Date();
    this.startDate = new Date($.getFullYear(), $.getMonth(), $.getDate());
    this.finishDate = new Date($.getFullYear(), $.getMonth() + 1, $.getDate());
    this[OOO1o1](this.startDate, this.finishDate);
    o1O1O0View[lOO1lo][o1lOol][lOlOo1](this);
    this[O0OOlO]([])
};
O01o(o1O1O0View, o0oo1l, {
    showGridLines: false,
    showLines: true,
    showSummary: true,
    showCriticalPath: false,
    startDate: null,
    finishDate: null,
    weekStartDay: 0,
    topTimeScaleType: "week",
    bottomTimeScaleType: "day",
    showLabel: true,
    labelField: "Name",
    labelAlign: "right",
    startField: "Start",
    finishField: "Finish",
    viewModel: "gantt",
    setViewModel: function($) {
        this.viewModel = $;
        this[olOOll]()
    },
    isTrackModel: function() {
        return this.viewModel == "track"
    },
    baselineIndex: 0,
    getBaseline: function($) {
        var _ = $.Baseline;
        return _ ? _[this.baselineIndex] : null
    },
    uiCls: "pagerganttview",
    _create: function() {
        this.el = document.createElement("div");
        this.el.innerHTML = "<div class=\"pagergantt-header\"></div>" + "<div class=\"pagergantt-body\"><div class=\"pagergantt-gridlines\"></div><div class=\"pagergantt-bars\"></div><div class=\"pagergantt-lines\"></div>" + "<div class=\"pagergantt-scrollHeight\" style=\"position:absolute;left:0;top:0;width:1px;height:1px;\"></div>" + "</div>" + "<div class=\"pagergantt-hscroller\"><div class=\"pagergantt-hscrollercontent\"></div></div>";
        this.OloOO0 = this.el.childNodes[0];
        this.Ool1O = this.el.childNodes[1];
        this.gridlinesEl = this.Ool1O.childNodes[0];
        this.barsEl = this.Ool1O.childNodes[1];
        this.linesEl = this.Ool1O.childNodes[2];
        this.hscrollerEl = this.el.childNodes[2];
        this.hscrollerContentEl = this.hscrollerEl.firstChild;
        this.scrollHeightEl = this.Ool1O.childNodes[3];
        this.oOl1oO()
    },
    _initEvents: function() {
        oOO1l(this.Ool1O, "scroll", this.OllOl1, this);
        oOO1l(this.hscrollerEl, "scroll", this.Oo1ol1, this)
    },
    oOl1oO: function() {
        this._ToolTip = new mini._PagerGanttViewToolTip(this)
    },
    deferUpdate: function(_) {
        if (this.refreshTimer) clearTimeout(this.refreshTimer);
        var $ = this,
        A = new Date();
        this.refreshTimer = setTimeout(function() {
            $[olOOll](_)
        },
        1)
    },
    doUpdate: function($) {
        if ($ !== false) this.o0lOOlsBox();
        this.O1O0Ol();
        this.lo0ll();
        this[lO100O]();
        if ($ !== false) this[O0lOl0]()
    },
    doLayout: function() {
        var D = new Date();
        if (this[ollOO1]() == false) return;
        var B = this.bodyWidth = this.getBodyWidth();
        this.bodyHeight = this[l0111o]();
        if ((this._lastBodyWidth && this._lastBodyWidth != this.bodyWidth) || (this._lastBodyHeight && this._lastBodyHeight != this.bodyHeight)) this[olOOll](false);
        this._lastBodyWidth = this.bodyWidth;
        this._lastBodyHeight = this.bodyHeight;
        this.O1O0Ol();
        var F = jQuery.boxModel,
        A = this[o1l1l0](true),
        C = this[l010l1]();
        this.OloOO0.style.height = C + "px";
        this.Ool1O.style.height = (A - C - 17) + "px";
        this.Ool1O.style.width = B + "px";
        var _ = this.scrollHeight;
        this.scrollHeightEl.style.height = _ + "px";
        this.viewportWidth = this.getBodyWidth();
        this.viewportHeight = this[l0111o]();
        var $ = this.viewportHeight - 17;
        if ($ < 0) $ = 0;
        var E = this.viewportWidth - 17;
        if (E < 0) E = 0;
        this.hscrollerEl.style.width = E + "px";
        this.hscrollerContentEl.style.width = this.scrollWidth + "px"
    },
    scrollLeft: 0,
    scrollTop: 0,
    setScrollLeft: function($, _) {
        if ($ < 0) $ = 0;
        if ($ > this.scrollWidth) $ = this.scrollWidth;
        if (this.scrollLeft != $) {
            this.scrollLeft = $;
            if (_ !== false) {
                this.allowScroll = false;
                this.hscrollerEl.scrollLeft = $;
                this.scrollLeft = this.hscrollerEl.scrollLeft;
                this.allowScroll = true
            }
            this._showAll = false;
            this.deferUpdate(false)
        }
    },
    setScrollTop: function($) {
        if ($ < 0) $ = 0;
        if ($ > this.scrollHeight) $ = this.scrollHeight;
        if (this.scrollTop != $) {
            this.allowScroll = false;
            this.Ool1O.scrollTop = $;
            this.scrollTop = this.Ool1O.scrollTop;
            this.allowScroll = true;
            if (this._showAll !== true) {
                this._showAll = true;
                this[lO100O]()
            } else this._deferShowLines()
        }
    },
    getScrollTop: function() {
        return this.Ool1O.scrollTop
    },
    o0lOOlsBox: function() {
        this.rowsBox = [];
        if (this.owner && this.owner.tableView[OolO10]()) this.rowsBox = this.owner.tableView[oo1o0l]();
        else {
            var _ = 0;
            for (var $ = 0,
            C = this.data.length; $ < C; $++) {
                var A = 22;
                this.rowsBox[$] = {
                    top: _,
                    height: A,
                    bottom: _ + A
                };
                _ += A
            }
        }
        this.scrollHeight = 500;
        if (this.rowsBox && this.rowsBox.length > 0) {
            var B = this.rowsBox[this.rowsBox.length - 1];
            this.scrollHeight = B.top + B.height
        }
    },
    getHeaderHeight: function() {
        return this.owner && this.owner.tableView[OolO10]() ? this.owner.tableView[l010l1]() : 40
    },
    getBodyHeight: function() {
        var $ = this[o1l1l0](true) - this[l010l1]();
        return $
    },
    getBodyWidth: function() {
        return this[o1Ol0](true)
    },
    getViewportBox: function() {
        var $ = this[OOl11l](true),
        _ = this[l010l1]();
        $.y += _;
        $.height -= _;
        $.bottom = $.y + $.height;
        return $
    },
    lo0ll: function() {
        var C = this.viewRegion,
        $ = C.startDate,
        Y = C.endDate,
        J = Y[O0olo1](),
        A = this[l010l1]() / 2,
        V = this.getBodyWidth(),
        O = this[l0111o](),
        T = jQuery.boxModel,
        K = this.bottomTimeScale.type,
        F = this.bottomTimeScale.number,
        P = this.bottomTimeScale.width,
        W = this.bottomTimeScale.align || "left",
        M = this.bottomTimeScale.tooltip,
        _ = this.bottomTimeScale.formatter,
        D = this.topTimeScale.type,
        N = this.topTimeScale.tooltip,
        G = this.topTimeScale.formatter,
        Z = this.topTimeScale.number,
        X = this.topTimeScale.align || "left",
        S = [];
        S[S.length] = "<div style=\"height:" + (T ? A - 1 : A) + "px;width:" + V + "px;\" class=\"pagergantt-toptimescale\">";
        var L = this[lllO01]($);
        for (var H = $; H[O0olo1]() <= J;) {
            var E = this.getTimeScaleNextDate(H, D, Z),
            B = this[lllO01](H),
            U = this[lllO01](E),
            R = B - L,
            Q = U - B,
            I = G(H, "top");
            S[S.length] = "<div title=\"";
            S[S.length] = N(H, "top");
            S[S.length] = "\" class=\"pagergantt-headercell\" style=\"left:";
            S[S.length] = R;
            S[S.length] = "px;width:";
            S[S.length] = T ? Q - 5 : Q;
            S[S.length] = "px;height:";
            S[S.length] = A;
            S[S.length] = "px;top:0px;line-height:";
            S[S.length] = T ? A - 1 : A;
            S[S.length] = "px;\">";
            S[S.length] = I;
            S[S.length] = "</div>";
            H = E
        }
        S[S.length] = "</div>";
        S[S.length] = "<div style=\"height:" + (T ? A - 1 : A) + "px;width:" + V + "px;\" class=\"pagergantt-bottomtimescale\">";
        for (H = $; H[O0olo1]() <= J;) {
            I = _(H, "bottom", D),
            E = this.getTimeScaleNextDate(H, K, F),
            B = this[lllO01](H),
            U = this[lllO01](E),
            R = B - L,
            Q = U - B;
            S[S.length] = "<div title=\"";
            S[S.length] = M(H, "bottom", D);
            S[S.length] = "\" class=\"pagergantt-headercell\" style=\"left:";
            S[S.length] = R;
            S[S.length] = "px;width:";
            S[S.length] = T ? Q - 5 : Q;
            S[S.length] = "px;height:";
            S[S.length] = A;
            S[S.length] = "px;top:0px;line-height:";
            S[S.length] = T ? A - 1 : A;
            S[S.length] = "px;\">";
            S[S.length] = I;
            S[S.length] = "</div>";
            H = E
        }
        S[S.length] = "</div>";
        this.OloOO0.innerHTML = S.join("")
    },
    _showAll: false,
    _doUpdateBody: function() {
        this.l1OO01();
        this.lloOO0Bars();
        this._deferShowLines()
    },
    _deferShowLines: function() {
        this.linesEl.innerHTML = "";
        if (this.deferShowLinesTimer) clearTimeout(this.deferShowLinesTimer);
        var $ = this;
        this.deferShowLinesTimer = setTimeout(function() {
            $.lloOO0Lines()
        },
        100)
    },
    l1OO01: function() {
        var Y = this._showAll,
        X = jQuery.boxModel,
        W = [],
        c = this.getBodyWidth(),
        R = this[l0111o](),
        b = this.scrollTop,
        Q = b + R;
        if (this.showGridLines) {
            var e = this.data;
            for (var K = 0,
            U = e.length; K < U; K++) {
                var M = e[K],
                P = this.rowsBox[K];
                if (Y === false) {
                    if (P.top + P.height < b) continue;
                    if (P.bottom > Q) continue
                }
                var I = this.uid + "$row$" + M._uid;
                W[W.length] = "<div id=\"";
                W[W.length] = I;
                W[W.length] = "\" class=\"pagergantt-row\" style=\"top:";
                W[W.length] = P.top;
                W[W.length] = "px;height:";
                W[W.length] = X ? P.height - 1 : P.height;
                W[W.length] = "px;width:";
                W[W.length] = c;
                W[W.length] = "px;\">";
                W[W.length] = "</div>"
            }
        }
        var H = this.scrollTop,
        Z = this.bodyHeight - 17,
        B = this.topTimeScale.type,
        L = this.bottomTimeScale.type,
        E = this.bottomTimeScale.number,
        C = this.viewRegion,
        $ = C.startDate,
        g = C.endDate,
        J = g[O0olo1](),
        N = this[lllO01](C.startDate);
        for (var G = $; G[O0olo1]() <= J;) {
            var D = this.getTimeScaleNextDate(G, L, E),
            A = this[lllO01](G),
            a = this[lllO01](D),
            V = A - N,
            S = a - A,
            T = "pagergantt-column ",
            f = this[O11llO](G, this.bottomTimeScale);
            if (!f) T += "pagergantt-offday";
            if (this.showGridLines || !f) {
                W[W.length] = "<div class=\"";
                W[W.length] = T;
                W[W.length] = "\" style=\"left:";
                W[W.length] = V - 1;
                W[W.length] = "px;width:";
                W[W.length] = X ? S - 1 : S;
                W[W.length] = "px;height:" + this.scrollHeight + "px\" ></div>"
            }
            G = D
        }
        if (mini.isArray(this.timeLines)) {
            var d = this[lllO01](C.startDate);
            for (K = 0, U = this.timeLines.length; K < U; K++) {
                var F = this.timeLines[K],
                h = F.date;
                if (h) {
                    var _ = F.text || "",
                    O = F.style || "",
                    N = this[lllO01](h) - d;
                    W[W.length] = "<div title=\"" + _ + "\" style=\"" + O + ";left:" + N + "px;height:" + this.scrollHeight + "px\"\"  class=\"pagergantt-timeline\"></div>"
                }
            }
        }
        this.gridlinesEl.innerHTML = W.join("")
    },
    lloOO0Bars: function() {
        var A = this[O0OO1O](),
        L = false,
        E = jQuery.boxModel,
        _ = this[lllO01](this.viewRegion.startDate),
        H = this.bodyWidth,
        H = this.getBodyWidth(),
        $ = this[l0111o](),
        I = this.scrollTop,
        M = I + $,
        D = [],
        J = this.data;
        for (var F = 0,
        B = J.length; F < B; F++) {
            var G = J[F],
            K = this[oOOo1l](F);
            if (!K) continue;
            if (this._showAll === false) {
                if (K.top + K.height < I) continue;
                if (K.bottom > M) continue
            }
            var C = this[llllol](F);
            if (!C || mini.isNull(C.left) || mini.isNull(C.right)) continue;
            if (C.right < _) continue;
            if (C.left > _ + H) continue;
            this._doDrawItem(G, F, D, A, false, _)
        }
        if (A) for (F = 0, B = J.length; F < B; F++) {
            G = J[F];
            this._doDrawItem(G, F, D, A, true, _)
        }
        this.barsEl.innerHTML = D.join("")
    },
    _doDrawItem: function(A, _, J, H, B, F) {
        if (!J) J = [];
        var N = null;
        if (B) N = this[oloO11](A);
        var K = this[llllol](_, N);
        if (!K) return;
        K.left = K.left - F;
        K.x = K.left;
        K.right = K.left + K.width;
        var L = jQuery.boxModel,
        Q = K.left,
        C = K.top,
        D = K.width,
        M = K.height,
        R = A.PercentComplete || 0,
        P = parseInt(D * R / 100);
        if (B) P = 0;
        var E = this[oOoOlO](A),
        I = A._uid,
        G = "pagergantt-item ";
        if (this[O1lOl0](A)) G += " pagergantt-critical ";
        if (B) G += " pagergantt-baseline ";
        var S = this.O0O11O(A, K);
        if (S.itemCls) G += " " + S.itemCls + " ";
        if (S.itemHtml === null) {
            if (this[oll0lO](A)) {
                if (!B) {
                    J[J.length] = "<div id=\"";
                    J[J.length] = I;
                    J[J.length] = "\" class=\"";
                    J[J.length] = G;
                    J[J.length] = "pagergantt-summary\" style=\"left:";
                    J[J.length] = Q;
                    J[J.length] = "px;top:";
                    J[J.length] = C;
                    J[J.length] = "px;width:";
                    J[J.length] = D;
                    J[J.length] = "px;\"><div class=\"pagergantt-summary-left\"></div><div class=\"pagergantt-summary-right\"></div></div>"
                }
            } else if (E) {
                if (B) G += " pagergantt-baselinemilestone ";
                J[J.length] = "<div id=\"";
                J[J.length] = I;
                J[J.length] = "\" class=\"";
                J[J.length] = G;
                J[J.length] = " pagergantt-milestone\" style=\"left:";
                J[J.length] = Q;
                J[J.length] = "px;top:";
                J[J.length] = C;
                J[J.length] = "px;\"></div>"
            } else {
                J[J.length] = "<div id=\"";
                J[J.length] = I;
                J[J.length] = "\" class=\"";
                J[J.length] = G;
                J[J.length] = "\" style=\"left:";
                J[J.length] = Q;
                J[J.length] = "px;top:";
                J[J.length] = C;
                J[J.length] = "px;height:";
                J[J.length] = L ? M - 2 : M;
                J[J.length] = "px;width:";
                J[J.length] = L ? D - 2 : D;
                J[J.length] = "px;\"><div class=\"pagergantt-percentcomplete\" style=\"width:";
                J[J.length] = P;
                J[J.length] = "px;\"></div></div>"
            }
        } else J[J.length] = S.itemHtml;
        if (S.showLabel && !B) {
            var O = S.labelHtml,
            $ = K.right + 5;
            if (E) $ += 10;
            J[J.length] = "<div id=\"";
            J[J.length] = I;
            J[J.length] = "\" class=\"pagergantt-label\" style=\"left:";
            J[J.length] = $;
            J[J.length] = "px;top:";
            if (isIE) C += 2;
            J[J.length] = C;
            J[J.length] = "px;\">";
            J[J.length] = O;
            J[J.length] = "</div>"
        }
    },
    lloOO0Lines: function() {
        this[lOooO0]("linesrefresh");
        if (!this.showLines) {
            this.linesEl.innerHTML = "";
            return
        }
        var B = [],
        D = this.data.clone();
        if (this.owner && this.owner.data.LinkTasks) D.addRange(this.owner.data.LinkTasks);
        for (var H = 0,
        Z = D.length; H < Z; H++) {
            var i = D[H],
            E = i.PredecessorLink;
            if (E) B.addRange(E);
            if (E) for (var P = 0,
            _ = E.length; P < _; P++) {
                var X = E[P];
                X.TaskUID = i.UID
            }
            this.uidTasks[i.UID] = i
        }
        var V = -1,
        L = -1;
        if (this.data.length > 0) {
            V = this.data[0]._ViewIndex;
            L = this.data[this.data.length - 1]._ViewIndex
        }
        var a = this.scrollHeight,
        f = this,
        b = this.startField,
        K = this.finishField;
        function Q($) {
            var B = $[b],
            _ = $[K];
            if (!B || !_) return;
            var A = -20;
            if ($._ViewIndex > L) A = a;
            var C = {
                top: A,
                height: 20
            };
            C.bottom = C.top + C.height;
            C.left = f[lllO01](B);
            C.right = f[lllO01](_);
            C.width = C.right - C.left;
            C.x = C.left;
            C.y = C.top;
            return C
        }
        var U = this[lllO01](this.viewRegion.startDate),
        A = this._linkHashed = {},
        h = [];
        for (H = 0, Z = B.length; H < Z; H++) {
            var X = B[H],
            Y = this.uidTasks[X.PredecessorUID],
            c = this.uidTasks[X.TaskUID];
            if (!Y || !c) continue;
            A[Y.UID + "$$" + c.UID] = X;
            if (!Y.Start || !Y.Finish) continue;
            if (!c.Start || !c.Finish) continue;
            var T = this.indexTasks[Y.UID],
            J = this.indexTasks[c.UID],
            I = this[llllol](T),
            e = this[llllol](J);
            if (I == null) I = Q(Y);
            if (e == null) e = Q(c);
            if (!I || !e) continue;
            I.left -= U;
            I.x = I.left;
            I.right = I.left + I.width;
            e.left -= U;
            e.x = e.left;
            e.right = e.left + e.width;
            var W = [];
            W.id = Y.UID + "$$" + c.UID;
            switch (parseInt(X.Type)) {
            case 0:
                if (I.right < e.right) {
                    var g = I.top + (I.height / 2),
                    d = e.top;
                    W.arrowType = "bottom";
                    if (I.top > e.top) {
                        d = e.bottom;
                        W.arrowType = "top"
                    }
                    var S = [I.right, g],
                    C = [e.right, g],
                    G = [e.right, d];
                    W.push([S, C]);
                    W.push([C, G])
                } else {
                    g = I.top + (I.height / 2),
                    d = e.top + (e.height / 2);
                    W.arrowType = "left";
                    var S = [I.right, g],
                    C = [I.right + 6, g],
                    G = [I.right + 6, d],
                    O = [e.right, d];
                    W.push([S, C]);
                    W.push([C, G]);
                    W.push([G, O])
                }
                break;
            case 1:
                if (I.right <= e.left) {
                    var g = I.top + (I.height / 2),
                    $ = I.right,
                    d = e.top,
                    F = e.left;
                    W.arrowType = "bottom";
                    if (I.top > e.top) {
                        d = e.bottom;
                        W.arrowType = "top"
                    }
                    S = [$, g],
                    C = [F, g],
                    G = [F, d];
                    if (I.right == e.left) {
                        S = [$, g];
                        C = [F + 2, g];
                        G = [F + 2, d]
                    }
                    W.push([S, C]);
                    W.push([C, G])
                } else {
                    var g = I.top + (I.height / 2),
                    $ = I.right,
                    d = e.top + (e.height / 2),
                    F = e.left,
                    N = e.top - 4;
                    W.arrowType = "right";
                    if (I.top > e.top) N = e.bottom + 4;
                    var S = [$, g],
                    C = [$ + 6, g],
                    G = [$ + 6, N],
                    O = [F - 10, N],
                    M = [F - 10, d],
                    R = [F, d];
                    W.push([S, C]);
                    W.push([C, G]);
                    W.push([G, O]);
                    W.push([O, M]);
                    W.push([M, R])
                }
                break;
            case 3:
                if (I.left < e.left) {
                    g = I.top + (I.height / 2),
                    $ = I.left,
                    d = e.top + (e.height / 2),
                    F = e.left;
                    W.arrowType = "right";
                    S = [$, g],
                    C = [$ - 6, g],
                    G = [$ - 6, d],
                    O = [F, d];
                    W.push([S, C]);
                    W.push([C, G]);
                    W.push([G, O])
                } else {
                    g = I.top + (I.height / 2),
                    $ = I.left,
                    d = e.top,
                    F = e.left;
                    W.arrowType = "bottom";
                    if (I.top > e.top) {
                        d = e.bottom;
                        W.arrowType = "top"
                    }
                    S = [$, g],
                    C = [F, g],
                    G = [F, d];
                    W.push([S, C]);
                    W.push([C, G])
                }
                break;
            case 2:
                if (I.left < e.right) {
                    g = I.top + (I.height / 2),
                    $ = I.left,
                    d = e.top + (e.height / 2),
                    F = e.right,
                    N = e.top - 4;
                    W.arrowType = "left";
                    if (I.top > e.top) N = e.bottom + 4;
                    S = [$, g],
                    C = [$ - 6, g],
                    G = [$ - 6, N],
                    O = [F + 10, N],
                    M = [F + 10, d],
                    R = [F, d];
                    W.push([S, C]);
                    W.push([C, G]);
                    W.push([G, O]);
                    W.push([O, M]);
                    W.push([M, R])
                } else {
                    g = I.top + (I.height / 2),
                    $ = I.left,
                    d = e.top,
                    F = e.right;
                    W.arrowType = "bottom";
                    if (I.top > e.top) {
                        d = e.bottom;
                        W.arrowType = "top"
                    }
                    S = [$, g],
                    C = [F, g],
                    G = [F, d];
                    W.push([S, C]);
                    W.push([C, G])
                }
                break;
            default:
                throw new Error("");
                break
            }
            W.Critical = this[O1lOl0](Y) && this[O1lOl0](c);
            W.Cls = X.Cls;
            h.push(W)
        }
        this.oOO1o1(h)
    },
    oOO1o1: function(R) {
        var O = this.scrollTop,
        Q = this.getBodyWidth(),
        C = this[l0111o](),
        U = this.scrollHeight,
        H = this.scrollHeight,
        J = [];
        for (var L = 0,
        G = R.length; L < G; L++) {
            var B = R[L],
            F = null,
            K = null,
            M = B.Critical,
            D = M ? "pagergantt-line-critical": "";
            if (B.Cls) D += " " + B.Cls;
            var I = B.id;
            for (var T = 0,
            $ = B.length; T < $; T++) {
                var S = B[T];
                F = S[0];
                K = S[1];
                var P = F[0] < K[0] ? F[0] : K[0],
                A = F[1] < K[1] ? F[1] : K[1],
                _ = Math.abs(K[0] - F[0]) + 1,
                N = Math.abs(K[1] - F[1]) + 1;
                if (P > Q || P + _ < 0) continue;
                if (A > U || A + N < O) continue;
                if (F[1] == K[1]) {
                    if (P < 0) {
                        _ -= Math.abs(P);
                        P = 0
                    }
                    if (_ + P > Q) _ = Q - P;
                    J[J.length] = "<div id=\"";
                    J[J.length] = I;
                    J[J.length] = "\" style=\"left:";
                    J[J.length] = P;
                    J[J.length] = "px;top:";
                    J[J.length] = A;
                    J[J.length] = "px;width:";
                    J[J.length] = _;
                    J[J.length] = "px;\" class=\"pagergantt-line ";
                    J[J.length] = D;
                    J[J.length] = "\"></div>"
                } else {
                    if (A < 0) {
                        N -= Math.abs(A);
                        A = 0
                    }
                    if (N + A > U) N = U - A;
                    J[J.length] = "<div id=\"";
                    J[J.length] = I;
                    J[J.length] = "\" style=\"left:";
                    J[J.length] = P;
                    J[J.length] = "px;top:";
                    J[J.length] = A;
                    J[J.length] = "px;height:";
                    J[J.length] = N;
                    J[J.length] = "px;\" class=\"pagergantt-line ";
                    J[J.length] = D;
                    J[J.length] = "\"></div>"
                }
            }
            if (K[0] >= Q || K[0] < 0) continue;
            if (K[1] >= U || K[1] < O) continue;
            J[J.length] = "<div id=\"";
            J[J.length] = I;
            J[J.length] = "\" style=\"left:";
            J[J.length] = K[0];
            J[J.length] = "px;top:";
            J[J.length] = K[1];
            J[J.length] = "px;\" class=\"pagergantt-line pagergantt-arrow-";
            J[J.length] = B.arrowType;
            J[J.length] = M ? " pagergantt-arrow-" + B.arrowType + "-critical": "";
            J[J.length] = "\"></div>"
        }
        var E = J.join("");
        this.linesEl.innerHTML = E
    },
    getItem: function($) {
        if (typeof $ == "object") $ = $._uid;
        return this._idTasks[$]
    },
    getLink: function(C, A) {
        var $ = this.uidTasks[C],
        _ = this.uidTasks[A];
        if (!$ || !_) return null;
        var B = this._linkHashed[$.UID + "$$" + _.UID];
        if (!B) B = this._linkHashed[_.UID + "$$" + $.UID];
        return B
    },
    l0o0: function(B) {
        var A = O01l0O(B.target, "pagergantt-item"),
        C = A ? A.id: B.target.id;
        if (A) {
            var _ = C.split("$");
            C = _[_.length - 1]
        }
        var $ = this[llo0o0](C);
        if (!$) {
            A = O01l0O(B.target, "pagergantt-item");
            if (A) {
                C = A.id;
                $ = this[llo0o0](C)
            }
        }
        return $
    },
    oo1Oo: function(_) {
        if (!O01l0O(_.target, "pagergantt-line")) return;
        var B = _.target.id,
        $ = B.split("$$"),
        A = this[O01O0o]($[0], $[1]);
        return A
    },
    getRowBox: function($) {
        return this.rowsBox[$]
    },
    getItemBox: function(_, E) {
        var $ = this.data[_],
        G = this.rowsBox[_];
        if (!$ || !G) return null;
        var D = $[this.startField],
        A = $[this.finishField];
        if (E) {
            D = E.Start;
            A = E.Finish
        }
        if (!D || !A) return;
        var B = G.top,
        C = G.height,
        F = {
            top: G.top + 4,
            height: G.height - 9
        };
        F.bottom = F.top + F.height;
        F.left = this[lllO01](D);
        F.right = this[lllO01](A);
        F.width = F.right - F.left;
        if (this[oll0lO]($));
        else if (this[oOoOlO]($)) {
            F.width = 12;
            F.right = F.left + F.width;
            F.top = F.top - 3;
            F.height = 18;
            F.bottom = F.top + F.height
        } else if (this[O0OO1O]()) if (E) {
            F.top = B + parseInt(C / 2);
            F.height = 8;
            F.bottom = F.top + F.height
        } else {
            F.height = 8;
            F.top = B + parseInt(C / 2) - F.height - 1;
            F.bottom = F.top + F.height
        }
        F.x = F.left;
        F.y = F.top;
        return F
    },
    isSummary: function($) {
        if (this.showSummary) return $.Summary || ($.children && $.children.length > 0);
        else return false
    },
    isMilestone: function($) {
        return !! $.Milestone
    },
    isWorking: function(A, _) {
        if (!_) return true;
        if (_.type == "day" && _.number == 1) {
            var $ = A.getDay();
            if ($ == 0 || $ == 6) return false
        }
        return true
    },
    isCritical: function($) {
        if (this.showCriticalPath) return $.Critical || $.Critical2;
        else return false
    },
    ll10o: function() {
        return this.bottomTimeScale.width
    },
    getDateByPageX: function(C) {
        var _ = this.viewRegion,
        $ = this[O100l0](_),
        B = this[OOoo0O](_),
        A = C - B.x + $.left;
        return this[l0OOlO](A)
    },
    setTopTimeScale: function($) {
        var _ = Oo0l0O.getTimeScale($);
        if (this.bottomTimeScale.index <= _.index) return;
        this.topTimeScale = _;
        this[OOO1o1](this._startDate, this._finishDate);
        this[olOOll]()
    },
    setBottomTimeScale: function($) {
        var _ = Oo0l0O.getTimeScale($);
        if (this.topTimeScale.index >= _.index) return;
        this.bottomTimeScale = _;
        this[OOO1o1](this._startDate, this._finishDate);
        this[olOOll]()
    },
    getZoomTimeScale: function(A) {
        var C = this.zoomTimeScales,
        B = null;
        for (var _ = 0,
        F = C.length; _ < F; _++) {
            var $ = C[_],
            E = $[0],
            D = $[1];
            if (E.type == this.topTimeScale.type && E.number == this.topTimeScale.number && D.type == this.bottomTimeScale.type && D.number == this.bottomTimeScale.number) {
                B = $;
                break
            }
            if (D.type == this.bottomTimeScale.type && A) {
                B = $;
                break
            }
        }
        if (!B && A) B = C[6];
        return B
    },
    zoomIn: function() {
        var _ = this[OO10OO]();
        if (!_) _ = this[OO10OO](true);
        var $ = this.zoomTimeScales[o0lllO](_);
        $ += 1;
        if ($ >= this.zoomTimeScales.length) $ = this.zoomTimeScales.length - 1;
        _ = this.zoomTimeScales[$];
        this.topTimeScale = _[0];
        this.bottomTimeScale = _[1];
        this[OOO1o1](this._startDate, this._finishDate);
        this[olOOll]()
    },
    zoomOut: function() {
        var _ = this[OO10OO]();
        if (!_) _ = this[OO10OO](true);
        var $ = this.zoomTimeScales[o0lllO](_);
        $ -= 1;
        if ($ < 0) $ = 0;
        _ = this.zoomTimeScales[$];
        this.topTimeScale = _[0];
        this.bottomTimeScale = _[1];
        this[OOO1o1](this._startDate, this._finishDate);
        this[olOOll]()
    },
    scrollIntoView: function($) {
        if (typeof $ == "string") $ = this.uidTasks[$];
        if (!$) return;
        var A = mini.isDate($) ? $: $.Start;
        if (!A) return;
        this.O1O0Ol();
        var B = this[lllO01](A),
        _ = this[o1Ol0](true);
        if (this.scrollLeft < B && B < this.scrollLeft + _);
        else this[lo0101](B - _ / 2)
    },
    setTimeLines: function($) {
        this.timeLines = $;
        this[olOOll]()
    },
    setData: function(_) {
        if (this.data == _) return;
        if (typeof _ == "string") _ = mini.get(_);
        if (!_) _ = [];
        this.data = _;
        this._idTasks = {};
        this.uidTasks = {},
        this.indexTasks = {};
        for (var $ = 0,
        B = this.data.length; $ < B; $++) {
            var A = this.data[$];
            this.indexTasks[A.UID] = $;
            this.uidTasks[A.UID] = A;
            this._idTasks[A._uid] = A
        }
        this._showAll = false;
        this[olOOll]()
    },
    setDateRange: function(D, A) {
        var F = new Date();
        if (!mini.isDate(D)) throw new Error("start must be date type");
        if (!mini.isDate(A)) throw new Error("finish must be date type");
        if (D[O0olo1]() >= A[O0olo1]()) throw new Error("date range error");
        if (D < new Date(1900, 0, 1)) throw new Error("date 1900 error ");
        var _ = this.bottomTimeScale.type,
        G = this.bottomTimeScale.number,
        C = this.bottomTimeScale.width;
        this._startDate = this.O0oO(D);
        this._finishDate = this.O0oO(A);
        this.startDate = this.getTimeScaleStartDate(this._startDate, _);
        this.finishDate = this.getTimeScaleNextDate(this._finishDate, _, 1);
        var B = 0,
        E = this.finishDate[O0olo1]();
        if (_ == "hour") {
            C = (C / G) * 24;
            _ = "day";
            G = 1
        }
        if (_ == "minutes") {
            C = (C / G) * 60 * 24;
            _ = "day";
            G = 1
        }
        if (_ == "seconds") {
            C = (C / G) * 60 * 60 * 24;
            _ = "day";
            G = 1
        }
        for (var $ = this.ooOoOO(this.startDate); $[O0olo1]() <= E;) {
            B += C;
            $ = this.getTimeScaleNextDate($, _, G)
        }
        this.scrollWidth = B
    },
    ooOoOO: function($) {
        return new Date($[O0olo1]())
    },
    O0oO: function($) {
        return new Date($.getFullYear(), $.getMonth(), $.getDate())
    },
    O1O0Ol: function() {
        var H = this.scrollLeft,
        F = this.bodyWidth;
        if (mini.isNull(F)) F = this.getBodyWidth();
        var B = F,
        _ = H + B,
        G = this.ll10o(),
        D = this.topTimeScale.type,
        $ = this.bottomTimeScale.type,
        A = this.getTimeScaleStartDate(this[l0OOlO](H), $),
        E = this.getTimeScaleStartDate(this[l0OOlO](H + B), $),
        C = {
            startDate: A,
            endDate: E
        };
        this.viewRegion = C;
        return C
    },
    _OnItemToolTipNeeded: function($) {
        var _ = $.isBaseline ? this[oloO11]($) : null,
        A = $.Name,
        B = {
            item: $,
            tooltip: A,
            cls: "",
            baseline: _,
            isBaseline: $.isBaseline
        };
        this[lOooO0]("ItemToolTipNeeded", B);
        delete $.isBaseline;
        return B
    },
    _OnLinkToolTipNeeded: function(_) {
        var $ = this.uidTasks[_.PredecessorUID],
        A = this.uidTasks[_.TaskUID],
        B = {
            link: _,
            tooltip: "",
            cls: "",
            fromItem: $,
            toItem: A
        };
        this[lOooO0]("LinkToolTipNeeded", B);
        return B
    },
    O0O11O: function($, _) {
        var A = {
            item: $,
            itemBox: _,
            itemCls: null,
            itemStyle: null,
            itemHtml: null,
            showLabel: this.showLabel,
            labelHtml: $[this.labelField],
            labelAlign: this.labelAlign
        };
        this[lOooO0]("drawitem", A);
        return A
    },
    Oo1ol1: function(_) {
        if (this.allowScroll === false) return;
        var _ = {
            scrollLeft: this.hscrollerEl.scrollLeft,
            scrollTop: this.Ool1O.scrollTop,
            direction: "horizontal"
        };
        this.__scrollLeft = _.scrollLeft;
        this[lOooO0]("scroll", _);
        var $ = this;
        if (this._hscrollTimer) return;
        this._hscrollTimer = setTimeout(function() {
            $[lo0101]($.__scrollLeft, false);
            $._hscrollTimer = null
        },
        30)
    },
    OllOl1: function(_) {
        if (this.allowScroll === false) return;
        var _ = {
            scrollLeft: this.hscrollerEl.scrollLeft,
            scrollTop: this.Ool1O.scrollTop,
            direction: "vertical"
        },
        $ = this;
        $._scrollTop = _.scrollTop;
        this[lOooO0]("scroll", _);
        if (this._showAll !== true) {
            this._showAll = true;
            this[lO100O]()
        }
        $ = this;
        if (this._vscrollTimer) return;
        this._vscrollTimer = setTimeout(function() {
            $[ooOl1l]($._scrollTop);
            $._vscrollTimer = null
        },
        10)
    }
});
o1O1O0View[O010O1][lllO01] = Oo0l0O[O010O1][lllO01];
o1O1O0View[O010O1][l0OOlO] = Oo0l0O[O010O1][l0OOlO];
o1O1O0View[O010O1].getTimeScaleNextDate = Oo0l0O[O010O1].getTimeScaleNextDate;
o1O1O0View[O010O1].getTimeScaleStartDate = Oo0l0O[O010O1].getTimeScaleStartDate;
oloo(o1O1O0View, "pagerganttview");
mini._PagerGanttViewToolTip = function($) {
    this.gantt = $;
    oOO1l(document.body, "mousemove", this.__OnGanttMouseMove, this);
    this.gantt[O0011o]("linesrefresh",
    function($) {
        this.draging = false;
        this.hideTip()
    },
    this)
};
mini._PagerGanttViewToolTip[O010O1] = {
    __OnGanttMouseMove: function(D) {
        if (this.draging === true) return;
        var A = D.target,
        _ = this.gantt;
        if (_.O1Ol0 == true) return;
        if (!_[lloo0o](D)) {
            this.hideTip();
            return
        }
        var $ = _.l0o0(D);
        if ($) {
            var B = O01l0O(A, "pagergantt-baseline");
            $.isBaseline = B;
            this.toolTipEvent = "_OnItemToolTipNeeded";
            this.toolTipItem = $;
            this.showTip($, D.pageX + 8, D.pageY + 15, this.showTipDelay)
        } else {
            var C = _.oo1Oo(D);
            if (C) {
                this.toolTipEvent = "_OnLinkToolTipNeeded";
                this.toolTipItem = C;
                this.showTip(C, D.pageX + 5, D.pageY + 8, this.showTipDelay)
            } else this.hideTip()
        }
    },
    showTipDelay: 700,
    showTip: function($, E, B, D, C) {
        if (this._lastShowItem == $ && D != 0) {
            this._showXY = [E, B];
            return
        }
        this.hideTip(false);
        if (this.hideTimer) {
            clearInterval(this.hideTimer);
            this.hideTimer = null
        }
        var _ = this.gantt;
        this._lastShowItem = $;
        var A = this;
        this._showXY = [E, B];
        if (D <= 0 && mini.isFireFox) A._showTipCore($, C);
        else this._showTipTimer = setTimeout(function() {
            A._showTipCore($, C)
        },
        D)
    },
    _showTipCore: function($, E) {
        var _ = this.gantt;
        if (!this._tipEl) this._tipEl = mini.append(document.body, "<div class=\"pagergantt-tooltip\"></div>");
        if (E == true) this._tipEl.style.width = "auto";
        var G = _[this.toolTipEvent]($);
        this._tipEl.innerHTML = G.tooltip;
        this._tipEl.style.display = "block";
        var F = this._showXY[0],
        C = this._showXY[1];
        mini[l0lO1l](this._tipEl, -1000, -1000);
        var D = mini.getSize(this._tipEl),
        A = this.gantt[OOoo0O]();
        if (F == "left") F = A.x + 5;
        else if (F == "right") F = A.right - 20 - D.width;
        if (C == "top") C = A.y + 5;
        else if (C == "bottom") C = A.bottom - 20 - D.height;
        var B = mini[OOoo0O]();
        if (F + D.width > B.right) F = B.right - D.width;
        if (C + D.height > B.bottom) C = B.bottom - D.height;
        mini[l0lO1l](this._tipEl, F, C)
    },
    hideTip: function(_) {
        var $ = this;
        if ($._tipEl && _ !== false) {
            jQuery($._tipEl).remove();
            $._tipEl = null
        }
        $._lastShowItem = null;
        clearInterval($._showTipTimer)
    }
};
lll1llX = function() {
    this._ecConfig = {
        expandAll: true,
        expandNodes: [],
        expandLevels: [],
        collapseNodes: [],
        collapseLevels: []
    };
    lll1llX[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(lll1llX, l11ol0, {
    treeColumn: "",
    showTreeIcon: true,
    showTreeLines: false,
    idField: "id",
    iconField: "iconCls",
    leafIcon: "mini-treegrid-leaf",
    folderIcon: "mini-treegrid-folder",
    uiCls: "mini-treegridx",
    set: function(_) {
        if (typeof _ == "string") return this;
        var $ = this.O1O1O0;
        this.O1O1O0 = false;
        var A = _.treeColumn || _[lOl11o] || _.iconField || _[o00111] || _[o0OOo1];
        lll1llX[lOO1lo][l1OOl1][lOlOo1](this, _);
        this.O1O1O0 = $;
        if (A) this[olOOll]();
        return this
    },
    Ol0O0: function($, _, G, C) {
        var J = lll1llX[lOO1lo].Ol0O0[lOlOo1](this, $, _, G, C);
        if (!this.treeColumn || this.treeColumn !== _.name) return J;
        var A = $;
        if (mini.isNull(J[o00111])) J[o00111] = this[o00111];
        var H = J.cellHtml,
        F = this[OOoOl1](A),
        D = this[OlOool](A) * 18,
        B = "";
        if (!F) B = this[O00lOO](A) ? "mini-treegrid-expand": "mini-treegrid-collapse";
        if (J.cellCls) J.cellCls += " mini-treegrid-treecolumn ";
        else J.cellCls = " mini-treegrid-treecolumn ";
        var I = "<div class=\"mini-treegrid-treecolumn-inner " + B + "\">";
        if (!F) I += "<a href=\"#\" onclick=\"return false;\"  hidefocus class=\"mini-treegrid-ec-icon\" style=\"left:" + (D) + "px;\"></a>";
        D += 18;
        if (J[o00111]) {
            var E = this[O1o00o](A);
            I += "<div class=\"" + E + " mini-treegrid-nodeicon\" style=\"left:" + D + "px;\"></div>";
            D += 18
        }
        I += "<div class=\"mini-treegrid-nodetext\" style=\"padding-left:" + (D + 2) + "px;\">" + H + "</div>";
        I += "</div>";
        H = I;
        J.cellHtml = H;
        return J
    },
    isLeaf: function($) {
        return $._IsLeaf !== false
    },
    getLevel: function($) {
        var _ = $ ? $._Level: 0;
        if (isNaN(_)) _ = 0;
        return _
    },
    isExpanded: function($) {
        return $._Expanded !== false
    },
    getNodeIcon: function(_) {
        var $ = _[this.iconField];
        if (!$) if (this[OOoOl1](_)) $ = this.leafIcon;
        else $ = this.folderIcon;
        return $
    },
    setTreeColumn: function($) {
        if (this.treeColumn != $) {
            this.treeColumn = $;
            this[olOOll]()
        }
    },
    getTreeColumn: function($) {
        return this.treeColumn
    },
    setShowTreeIcon: function($) {
        if (this[o00111] != $) {
            this[o00111] = $;
            this[olOOll]()
        }
    },
    getShowTreeIcon: function($) {
        return this[o00111]
    },
    setShowTreeLines: function($) {
        if (this[o0OOo1] != $) {
            this[o0OOo1] = $;
            this[olOOll]()
        }
    },
    getShowTreeIcon: function($) {
        return this[o00111]
    },
    setIconField: function($) {
        this.iconField = $;
        if (this.iconField != $) {
            this.iconField = $;
            this[olOOll]()
        }
    },
    getIconField: function($) {
        return this.iconField
    },
    getNode: function(_) {
        if (typeof _ == "object") return _;
        else for (var $ = 0,
        B = this.data.length; $ < B; $++) {
            var A = this.data[$];
            if (A[this.idField] == _) return A
        }
    },
    expandAll: function() {
        this._ecConfig = {
            expandAll: true,
            expandNodes: [],
            expandLevels: [],
            collapseNodes: [],
            collapseLevels: []
        };
        this[o0OOlo]()
    },
    collapseAll: function() {
        this._ecConfig = {
            expandAll: false,
            expandNodes: [],
            expandLevels: [],
            collapseNodes: [],
            collapseLevels: []
        };
        this[o0OOlo]()
    },
    expandLevel: function($) {
        $ = parseInt($);
        if (isNaN($)) return;
        this._ecConfig.expandLevels = [$];
        this._ecConfig.collapseNodes = [];
        this._ecConfig.collapseLevels = [];
        this[o0OOlo]()
    },
    collapseLevel: function($) {
        $ = parseInt($);
        if (isNaN($)) return;
        this._ecConfig.collapseLevels = [$];
        this._ecConfig.expandNodes = [];
        this._ecConfig.expandLevels = [];
        this[o0OOlo]()
    },
    expandNode: function($) {
        if (typeof $ == "object") $ = $[this.idField];
        if (!$) return;
        this._ecConfig.collapseNodes.remove($);
        if (this._ecConfig.expandNodes[o0lllO]($) == -1) this._ecConfig.expandNodes.push($);
        this[o0OOlo]()
    },
    collapseNode: function($) {
        if (typeof $ == "object") $ = $[this.idField];
        if (!$) return;
        this._ecConfig.expandNodes.remove($);
        if (this._ecConfig.collapseNodes[o0lllO]($) == -1) this._ecConfig.collapseNodes.push($);
        this[o0OOlo]()
    },
    toggleNode: function($) {
        var _ = this[l101OO]($);
        if (!_) return;
        if (this[O00lOO](_)) this[OOo11O](_);
        else this[llll00](_)
    },
    Ol0O1l: function($, _, A) {
        $ = $ || {};
        $._ECCONFIG = mini.encode(this._ecConfig);
        return lll1llX[lOO1lo].Ol0O1l[lOlOo1](this, $, _, A)
    },
    _OnCellMouseDown: function(A) {
        var $ = A.htmlEvent,
        _ = A.record;
        if (O01l0O($.target, "mini-treegrid-ec-icon"));
        else lll1llX[lOO1lo][lOOol][lOlOo1](this, A)
    },
    _OnCellClick: function(B) {
        var $ = B.htmlEvent,
        A = B.record,
        _ = B.column;
        if (O01l0O($.target, "mini-treegrid-ec-icon")) this[l1loOO](A);
        else this[lOooO0]("cellclick", B)
    },
    getAttrs: function($) {
        var _ = lll1llX[lOO1lo][Ol1oO0][lOlOo1](this, $);
        mini[ll1O1o]($, _, ["treeColumn", "iconField", "idField"]);
        mini[oO11o0]($, _, ["showTreeIcon", "showTreeLines"]);
        return _
    }
});
oloo(lll1llX, "treegridx");
o1O1O0 = function() {
    var $ = new Date(),
    _ = new Date($.getFullYear(), $.getMonth(), $.getDate()),
    A = new Date($.getFullYear(), $.getMonth() + 1, $.getDate());
    this.data = {
        Name: "",
        StartDate: _,
        FinishDate: A,
        CalendarUID: "1",
        Calendars: this[oollo1](),
        Tasks: [],
        Resources: [],
        total: 0
    };
    this.uidTasks = {};
    o1O1O0[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o1O1O0, OOO0ll, {
    baselineIndex: 0,
    viewModel: "gantt",
    title: "",
    bodyStyle: "padding:0",
    showHeader: false,
    showFooter: true,
    showLinkLines: true,
    showGridLines: false,
    showCriticalPath: false,
    allowResize: true,
    uiCls: "pagergantt",
    multiSelect: false,
    readOnly: false,
    showGanttView: true,
    showTableView: true,
    ganttViewExpanded: true,
    tableViewExpanded: true,
    baselineIndex: 0,
    PredecessorLinkType: ["FF", "FS", "SF", "SS"]
});
lOll0 = o1O1O0[O010O1];
lOll0[Ol1oO0] = l110o;
lOll0[lOlolo] = oo00o;
lOll0.o100O = Ol0Oo;
lOll0[oloO11] = l0oO0;
lOll0[OO1OO] = l0lO0;
lOll0[oo0101] = O1ll0;
lOll0[ll0llo] = O0oOl;
lOll0[O1oooO] = l1o0o;
lOll0[Ooll1] = lool1;
lOll0[o1101O] = Ool11;
lOll0[ollloo] = o1O0l;
lOll0[l01ooo] = Ool01;
lOll0[OoOloO] = oO1l0;
lOll0[O0lOl0] = Oo1ll;
lOll0[OllO00] = OOl11;
lOll0[lolo10] = o000O;
lOll0.lloOO0 = l11ll;
lOll0[l1oo00] = OO0ol;
lOll0[loll0l] = OOOOo;
lOll0[l0loo1] = oO0l0;
lOll0[O10OlO] = o1lO1;
lOll0.O0O0ll = o10l1;
lOll0.olol = lo011;
lOll0[l0llO0] = lO1ol;
lOll0[O11Oo0] = Ol1lO1;
lOll0[ooollo] = Olo0o;
lOll0[oolO1o] = Ooool;
lOll0[O1101l] = loOOl;
lOll0[O1lOO0] = Oo10o;
lOll0[l0llO0] = lO1ol;
lOll0[l1loOO] = oo1oo;
lOll0[OOl0O0] = olO10;
lOll0[OO000O] = OoO0O;
lOll0[o01ol1] = olO10Level;
lOll0[OO0Olo] = OoO0OLevel;
lOll0[oO1l0o] = olO10All;
lOll0[ll0o0l] = OoO0OAll;
lOll0[oolOo] = oll11;
lOll0[oo0Ol0] = Oolll;
lOll0[lol01l] = OoO11;
lOll0[o0l0l1] = OlOl1;
lOll0.O1ll11 = o1100;
lOll0[o0001l] = O000l;
lOll0[o1O1o0] = olOOo;
lOll0[Ooo1OO] = lOlOl;
lOll0[o1o001] = o1lOo;
lOll0[ololO1] = loll0;
lOll0[O1oll] = ooOo1;
lOll0[l1OOlO] = ooOo1s;
lOll0[oloo11] = lOO1o;
lOll0[Oo1O11] = l1O0l;
lOll0[ll0010] = ooOOl;
lOll0[oO011O] = loo1o;
lOll0[O01O1o] = l0o1l;
lOll0[o1010o] = l0O00;
lOll0[o0OOlo] = oO011;
lOll0[Ol1l0l] = l1O1l;
lOll0[oOl00O] = OooO0;
lOll0[OOOloO] = l10Oo;
lOll0[O0oooo] = o1l0o;
lOll0[Oll11O] = o0l1o;
lOll0[l0l001] = Oo1O1o;
lOll0[l10O0o] = O10lo;
lOll0[oolo10] = o10Oo;
lOll0[Ol1Oo1] = o0Olo;
lOll0[l0100] = l1o1O;
lOll0[oOOlO1] = O0oOO;
lOll0[OOoOo0] = Oo11o;
lOll0[O11llO] = oo1Ol;
lOll0.l1Oll = Olll0;
lOll0.l111O1 = l1lOO;
lOll0[lll0lO] = llOl1;
lOll0[o0O1lO] = l0Ol1;
lOll0[oo11o0] = l0loo;
lOll0[o00loO] = OOl00;
lOll0.lOOO = lOo0o;
lOll0.lO0oo = OO01O;
lOll0[oloOoo] = Ol0l1;
lOll0[lO0l01] = o1011;
lOll0[oollo1] = Ol0OO;
lOll0[O0ol11] = olOO0;
lOll0[oo1010] = oo0O1;
lOll0[oO100l] = llO0O;
oloo(o1O1O0, "pagergantt");
PagerGantt = MyGantt = o1O1O0;
O0lO0l = function() {
    O0lO0l[lOO1lo][o1lOol][lOlOo1](this);
    this.columns = [];
    this.viewColumns = [];
    this[O0OOlO]([])
};
O01o(O0lO0l, o0oo1l, {
    width: 300,
    height: 150,
    virtualModel: false,
    data: null,
    _rowIdField: "_id",
    editOnDblClick: false,
    multiSelect: false,
    allowRowSelect: true,
    allowCellSelect: true,
    allowAlternating: true,
    allowResizeColumn: true,
    allowMoveColumn: true,
    allowSortColumn: true,
    allowDragDrop: false,
    showDirty: true,
    allowUnselect: false,
    scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 0,
    scrollHeight: 0,
    headerHeight: 23,
    showHScroll: true,
    showVScroll: true,
    columnWidth: 100,
    rowHeight: 21,
    columnMinWidth: 10,
    columnMaxWidth: 800,
    Olo01: "mini-supergrid-row",
    cellCls: "mini-supergrid-cell",
    Ol1l1l: "mini-supergrid-rowselected",
    cellSelectedCls: "mini-supergrid-cellselected",
    oooll: "mini-supergrid-alternating",
    uiCls: "mini-supergrid",
    ll0lo0: "mini-supergrid-frozenCell",
    frozenStartColumn: -1,
    frozenEndColumn: -1,
    _vscrollTimer: null,
    _hscrollTimer: null
});
oO0o1 = O0lO0l[O010O1];
oO0o1[Ol1oO0] = l01ol;
oO0o1.lo0ooO = OOO1O;
oO0o1.o0oOlo = looOOo;
oO0o1.oOlO11 = O010;
oO0o1.Oll11o = oo1O0;
oO0o1.lo01oo = o0ooO;
oO0o1.Olllo1 = o0lo0;
oO0o1[OO10ol] = lol1O;
oO0o1.o1o1 = l01Oo;
oO0o1.Oo1ol1 = ll01;
oO0o1[o0O1lo] = ol1Ol;
oO0o1[OoOoOo] = l01oO;
oO0o1[OOOlOo] = olOlo;
oO0o1[O1OlO0] = O0O01;
oO0o1[Ol010o] = O1OOl;
oO0o1[O1loo1] = o11o1O;
oO0o1[Ol0l0O] = O0l1o;
oO0o1[lo1Ol] = oO01O;
oO0o1[l1llO0] = llo01;
oO0o1[oOOo1l] = ll1o;
oO0o1[l001l0] = OOo0l;
oO0o1[o00101] = ool1o;
oO0o1.O1O0Ol = oO00l;
oO0o1[OOol1l] = O01l1;
oO0o1[OoOlO0] = o00oo;
oO0o1[OOoo0O] = OOlOl;
oO0o1[lOOll1] = lOOlO;
oO0o1[oloo0O] = O10o1;
oO0o1[l010l1] = OlO1l;
oO0o1.oO10O = oo1lO;
oO0o1.l1lll = lO00O;
oO0o1.lOlo0o = Ol1lo;
oO0o1.l1lo = OlO0;
oO0o1[looOl1] = lo11O;
oO0o1.o0ooo1 = ll1oo;
oO0o1.o1l1o = O0O00;
oO0o1.o10Oo1 = l0lOOO;
oO0o1.OOO11o = oll10;
oO0o1[llllo1] = lOo0l;
oO0o1[olo111] = l00Oo;
oO0o1[O0OOlO] = o1oOl;
oO0o1[olo0ll] = o01l0;
oO0o1[o0ol1o] = o01l1;
oO0o1[l0OoOO] = ol1ll;
oO0o1[loO1l0] = lO0ol;
oO0o1[o1ll10] = O0llo;
oO0o1[ooOl1l] = o1Oo1;
oO0o1[lo0101] = o10Ol;
oO0o1[O0lOl0] = O1oOO;
oO0o1[oloOoo] = lloOl;
oO0o1[lO0l01] = O101l;
mini._SuperDataTableApplys = {
    clear: function() {
        this.data.clear()
    },
    loadData: function($) {
        this[O0OOlO]($)
    },
    getCount: function() {
        return this.data[l10ol1]()
    },
    getChanges: function() {
        return this.data[o10olo]()
    },
    getData: function() {
        return this.data[OOOOlO]()
    },
    toArray: function() {
        return this.data[OOOOlO]()
    },
    getRows: function() {
        return this.data[OOOOlO]()
    },
    updateRow: function($, A, _) {
        this.data.updateRecord($, A, _)
    },
    addRow: function($) {
        return this.data[o0llo1]($)
    },
    insertRow: function($, _) {
        return this.data.insert($, _)
    },
    removeRow: function($) {
        return this.data.remove($)
    },
    removeRowAt: function($) {
        return this.data.removeAt($)
    },
    moveRow: function(_, $) {
        this.data.move(_, $)
    },
    indexOf: function($) {
        return this.data[o0lllO]($)
    },
    getAt: function($) {
        return this.data[OoOO11]($)
    },
    findRows: function(_, $) {
        return this.findRecords(_, $)
    },
    findRecords: function(_, $) {
        return this.data.findRecords(_, $)
    },
    removeSelected: function(A) {
        var _ = this[O1oll](),
        $ = this[o0lllO](_);
        this[Ooloo0](_);
        if (A !== false) {
            _ = this[OoOO11]($);
            this[ololO1](_ ? $: $ - 1)
        }
    },
    getSelected: function() {
        return this.data[O1oll]()
    },
    getSelecteds: function() {
        return this.data[l1OOlO]()
    },
    select: function($) {
        this.data[ololO1]($)
    },
    selects: function($) {
        this.data[Oo11O]($)
    },
    deselect: function($) {
        this.data[o1o001]($)
    },
    deselects: function($) {
        this.data[ll1o00]($)
    },
    selectAll: function() {
        this.data[Ooo1OO]()
    },
    deselectAll: function() {
        this.data[o1O1o0]()
    },
    isSelected: function($) {
        return this.data[oloo11]($)
    },
    getRange: function($, _) {
        if (mini.isNull($) || mini.isNull(_)) return;
        return this.data[oOoO0O]($, _)
    },
    selectRange: function($, _) {
        this.data[ooo00l]($, _)
    },
    filter: function(_, $) {
        this.data[l01l10](_, $)
    },
    clearFilter: function() {
        this.data[Ool1lO]()
    },
    sort: function(_, $) {
        this.data[Oll0o1](_, $)
    },
    clearSort: function() {
        this.data[ooOl0O]()
    }
};
mini._SuperDataTreeApplys = {
    isLeaf: function($) {
        return this.data[OOoOl1]($)
    },
    getLevel: function($) {
        return $ ? $._level: 0
    },
    isExpanded: function($) {
        return this.data[oOol0o]($)
    },
    getChildNodes: function($) {
        return this.data[l1olOo]($)
    },
    getParentNode: function($) {
        return this.data[OO01lO]($)
    },
    isAncestor: function(_, $) {
        return this.data[lOloOO](_, $)
    },
    getAncestors: function($) {
        return this.data[OlOO0]($)
    },
    getRootNode: function($) {
        return this.data[Oool0l]($)
    },
    getAncestors: function($) {
        return this.data[OlOO0]($)
    },
    hasChildNodes: function($) {
        return this.data.hasChildNodes($)
    },
    indexOfNode: function($) {
        return this.data.indexOfNode($)
    },
    updateNode: function(_, A, $) {
        this.data.updateRecord(_, A, $)
    },
    addNode: function(_, $) {
        return this.data[o10000](_, $)
    },
    insertNode: function(A, $, _) {
        return this.data.insertNode(A, $, _)
    },
    removeNodeAt: function($, _) {
        return this.data.removeNodeAt($, _)
    },
    removeNode: function($) {
        return this.data[Ol00oo]($)
    },
    moveNode: function(A, $, _) {
        this.data[O1o0l1](A, $, _)
    },
    addNodes: function(_, $) {
        return this.data[l11OOl](_, $)
    },
    insertNodes: function(A, $, _) {
        return this.data.insertNodes($, A, _)
    },
    moveNodes: function(A, $, _) {
        this.data[O0ol01](A, $, _)
    },
    removeNodes: function($) {
        return this.data[l0oo1l]($)
    },
    findNodes: function(_, $) {
        return this.data.findRecords(_, $)
    },
    getChanges: function() {
        return this.data[o10olo]()
    },
    getData: function() {
        return this.data.toTree()
    },
    bubbleParent: function($, A, _) {
        this.data[lo110o]($, A, _)
    },
    cascadeChild: function($, A, _) {
        this.data[oo1OOO]($, A, _)
    },
    eachChild: function($, A, _) {
        this.data[Oo1l1o]($, A, _)
    },
    collapseLevel: function($, _) {
        this.data[o01ol1]($, _)
    },
    expandLevel: function($, _) {
        this.data[OO0Olo]($, _)
    },
    collapse: function($, _) {
        this.data[OOl0O0]($, _)
    },
    expand: function($, _) {
        this.data[OO000O]($, _)
    },
    toggle: function($) {
        this.data[O0O0oo]($)
    },
    collapseAll: function() {
        this.data[oO1l0o]()
    },
    expandAll: function() {
        this.data[ll0o0l]()
    },
    filter: function(_, $) {
        this.data[l01l10](_, $)
    },
    clearFilter: function() {
        this.data[Ool1lO]()
    },
    sort: function(_, $) {
        this.data[Oll0o1](_, $)
    },
    clearSort: function() {
        this.data[ooOl0O]()
    }
};
mini.copyTo(O0lO0l.prototype, mini._SuperDataTableApplys);
oloo(O0lO0l, "supergrid");
mini.GridColumnModel = {
    addColumn: function(A, _, $) {
        if (!A) return;
        $ = this[Ol1Oo1]($);
        if (!$) {
            $ = this;
            if (typeof action == "string") action = "append"
        }
        if (mini.isNull(_) || _ < 0) _ = 1000;
        switch (_) {
        case "before":
            parentColumn = this[lllllO]($);
            _ = parentColumn.columns[o0lllO]($);
            parentColumn.columns.insert(_, A);
            break;
        case "after":
            parentColumn = this[lllllO]($);
            _ = parentColumn.columns[o0lllO]($);
            parentColumn.columns.insert(_ + 1, A);
            break;
        case "append":
        case "add":
            if (!$.columns) $.columns = [];
            $.columns.push(A);
            break;
        default:
            if (mini.isNumber(_)) {
                if (!$.columns) $.columns = [];
                $.columns.insert(_, A)
            }
            break
        }
        this[l0100](this.columns)
    },
    removeColumn: function($) {
        $ = this[Ol1Oo1]($);
        var _ = this[lllllO]($);
        if ($ && _) {
            _.columns.remove($);
            this[l0100](this.columns)
        }
        return $
    },
    updateColumn: function($, _) {
        $ = this[Ol1Oo1]($);
        mini.copyTo($, _);
        this[l0100](this.columns)
    },
    moveColumn: function(C, _, A) {
        C = this[Ol1Oo1](C);
        _ = this[Ol1Oo1](_);
        if (!C || !_ || !A || C == _) return;
        if (this[o0l111](C, _)) return;
        var D = this[lllllO](C);
        if (D) D.columns.remove(C);
        var B = _,
        $ = A;
        if ($ == "before") {
            B = this[lllllO](_);
            $ = B.columns[o0lllO](_)
        } else if ($ == "after") {
            B = this[lllllO](_);
            $ = B.columns[o0lllO](_) + 1
        } else if ($ == "add" || $ == "append") {
            if (!B.columns) B.columns = [];
            $ = B.columns.length
        } else if (!mini.isNumber($)) return;
        B.columns.insert($, C);
        this[l0100](this.columns)
    },
    getColumn: function(_) {
        if (typeof _ == "object") return _;
        var $ = this.lO0OlO[_];
        if (!$) $ = this.OO1oO1[_];
        return $
    },
    getParentColumn: function($) {
        $ = this[Ol1Oo1]($);
        var _ = $ ? this.OO1oO1[$._pid] : null;
        if ($ && !_) _ = this;
        return _
    },
    isAncestorColumn: function(_, B) {
        if (_ == B) return true;
        if (!_ || !B) return false;
        var A = this[O10o0](B);
        for (var $ = 0,
        C = A.length; $ < C; $++) if (A[$] == _) return true;
        return false
    },
    getAncestorColumns: function(A) {
        var _ = [];
        while (1) {
            var $ = this[lllllO](A);
            if (!$ || $ == this) break;
            _[_.length] = $;
            A = $
        }
        _.reverse();
        return _
    },
    getViewColumns: function() {
        return this.viewColumns
    },
    getColumns: function($) {
        $ = this[Ol1Oo1]($);
        if (!$) $ = this;
        return $.columns
    },
    isVisibleColumn: function($) {
        $ = this[Ol1Oo1]($);
        if (!$.visible) return false;
        var _ = this[lllllO]($);
        if (_ == this) return true;
        return this[O0oOOO](_)
    },
    getDisplayColumns: function($) {
        $ = this[Ol1Oo1]($);
        if (!$) $ = this;
        return $.displayColumns || []
    },
    eachColumns: function(B, F, C) {
        var D = this[O0o0Oo](B);
        if (D) {
            var _ = D.clone();
            for (var A = 0,
            E = _.length; A < E; A++) {
                var $ = _[A];
                if (F[lOlOo1](C, $, A, B) === false) break
            }
        }
    },
    eachDisplayColumns: function(B, F, C) {
        var D = this.getDisplayColumns(B);
        if (D) {
            var _ = D.clone();
            for (var A = 0,
            E = _.length; A < E; A++) {
                var $ = _[A];
                if (F[lOlOo1](C, $, A, B) === false) break
            }
        }
    },
    _columnId: 0,
    setColumns: function(D) {
        if (!mini.isArray(D)) D = [];
        this.columns = D;
        this.displayColumns = [];
        this.viewColumns = [];
        this.OO1oO1 = {};
        this.lO0OlO = {};
        var _ = 0,
        $ = 0;
        function B(E, A, F) {
            this._initColumn(E);
            E.__id = this._columnId++;
            E._id = this.id + "$column$" + E.__id;
            E._pid = F._id;
            var G = E.name;
            if (G) this.lO0OlO[G] = E;
            this.OO1oO1[E._id] = E;
            E.level = $;
            $ += 1;
            this[o0ll1l](E, B, this);
            $ -= 1;
            E.displayColumns = (E.columns || []).clone();
            for (var C = E.displayColumns.length - 1; C >= 0; C--) {
                var D = E.displayColumns[C];
                if (D.visible == false) E.displayColumns.removeAt(C)
            }
            if (E.displayColumns.length == 0 && this[O0oOOO](E)) this.viewColumns.push(E);
            if (E.level > _) _ = E.level
        }
        this[o0ll1l](this, B, this);
        this.displayColumns = D.clone();
        for (var A = this.displayColumns.length - 1; A >= 0; A--) {
            var C = this.displayColumns[A];
            if (C.visible == false) this.displayColumns.removeAt(A)
        }
        this.maxColumnLevel = _;
        this[looOl1]()
    },
    _initColumn: function(column) {
        column._gridUID = this.uid;
        column[ol0l0] = this[ol0l0];
        if (column.type && column.inited != true) {
            column.typeInited = true;
            var col = mini[lO01lo](column.type),
            _column = mini.copyTo({},
            column);
            mini.copyTo(column, col);
            mini.copyTo(column, _column)
        }
        column.width = parseInt(column.width);
        if (mini.isNull(column.width) || isNaN(column.width)) column.width = this[loOl0O];
        column.visible = column.visible !== false;
        column[O0lOlo] = column[O0lOlo] !== false;
        column.allowMove = column.allowMove !== false;
        column.allowSort = column.allowSort === true;
        column.allowDrag = !!column.allowDrag;
        column[Oo0o1l] = !!column[Oo0o1l];
        if (column.editor) {
            if (typeof column.editor == "string") {
                var cls = mini.getClass(column.editor);
                if (cls) column.editor = {
                    type: column.editor
                };
                else column.editor = eval("(" + column.editor + ")")
            }
            if (column.editor && !mini.isControl(column.editor)) column.editor = mini.create(column.editor)
        }
        if (column.editor) column.editor[ooOl10](false);
        if (typeof column.init == "function" && column.inited != true) column.init(this);
        delete column.colspan;
        delete column.rowspan;
        column.inited = true
    },
    getDisplayColumnRows: function() {
        var _ = this[oO11](),
        D = [];
        for (var C = 0,
        F = _; C <= F; C++) D.push([]);
        function A(C) {
            var D = mini[lo1oOl](C.displayColumns, "displayColumns"),
            A = 0;
            for (var $ = 0,
            B = D.length; $ < B; $++) {
                var _ = D[$];
                if (_.displayColumns.length == 0) A += 1
            }
            return A
        }
        var $ = mini[lo1oOl](this.displayColumns, "displayColumns");
        for (C = 0, F = $.length; C < F; C++) {
            var E = $[C],
            B = D[E.level];
            if (E.displayColumns.length > 0) E.colspan = A(E);
            if (E.displayColumns.length == 0 && E.level < _) E.rowspan = _ - E.level + 1;
            B.push(E)
        }
        return D
    },
    getMaxColumnLevel: function() {
        return this.maxColumnLevel
    },
    getAllColumnWidth: function() {
        var C = this.getViewColumns(),
        B = 0,
        _ = this[loOl0O];
        for (var $ = 0,
        E = C.length; $ < E; $++) {
            var D = C[$],
            A = mini.isNull(D.width) ? _: D.width;
            B += A
        }
        return B
    }
};
mini.copyTo(O0lO0l.prototype, mini.GridColumnModel);
mini.GridCellEditModel = {
    addRowCls: function(_, A) {
        _ = this[o00101](_);
        if (!_) return;
        var $ = this.l1111O(_);
        if ($) l1ll1O($, A);
        $ = this.l1111O(_, true);
        if ($) l1ll1O($, A)
    },
    removeRowCls: function(_, A) {
        _ = this[o00101](_);
        if (!_) return;
        var $ = this.l1111O(_);
        if ($) lOolO($, A);
        $ = this.l1111O(_, true);
        if ($) lOolO($, A)
    },
    lolOOo: function($, _) {
        var A = typeof $ == "string" ? $: $._id;
        if (_) return this.id + "$locked$" + A;
        return this.id + "$" + A
    },
    O11lo: function($, _) {
        return this.id + "$" + $._id + "$" + _.__id
    },
    l1111O: function($, _) {
        if (!$) return null;
        var A = this.lolOOo($, _);
        return document.getElementById(A)
    },
    l1O0o: function($) {
        return document.getElementById($._id)
    },
    l11ol1: function($, _) {
        _ = this[Ol1Oo1](_);
        if (!_) return null;
        var A = this.O11lo($, _);
        return document.getElementById(A)
    },
    lO1lo: function(B) {
        var _ = O01l0O(B.target, this.Olo01);
        if (!_) return null;
        var $ = _.id.split("$"),
        A = $[$.length - 1];
        return this.data.getby_id(A)
    },
    OOo1OO: function(C) {
        var B = O01l0O(C.target, this.cellCls);
        if (B) {
            var _ = B.id.split("$"),
            A = parseInt(_[_.length - 1]),
            $ = this.id + "$column$" + A;
            return this[Ol1Oo1]($)
        } else {
            B = O01l0O(C.target, "mini-supergrid-headercell");
            if (B) return this[Ol1Oo1](B.id)
        }
        return null
    },
    o110l0: function(A) {
        var $ = this.lO1lo(A),
        _ = this.OOo1OO(A);
        return {
            record: $,
            column: _
        }
    },
    oOO1o: function(F, D) {
        if (this.disabled) return;
        var C = this.o110l0(F),
        _ = C.record,
        B = C.column;
        if (_) {
            var E = this["_OnRow" + D];
            if (E) E[lOlOo1](this, _, F);
            else {
                var A = {
                    record: _,
                    htmlEvent: F
                };
                this[lOooO0]("row" + D, A)
            }
        }
        if (B) {
            E = this["_OnColumn" + D];
            if (E) E[lOlOo1](this, B, F);
            else {
                A = {
                    column: B,
                    field: B.field,
                    htmlEvent: F
                };
                this[lOooO0]("column" + D, A)
            }
        }
        if (_ && B) {
            E = this["_OnCell" + D];
            if (E) E[lOlOo1](this, _, B, F);
            else {
                A = {
                    record: _,
                    column: B,
                    field: B.field,
                    htmlEvent: F
                };
                this[lOooO0]("cell" + D, A)
            }
        }
        if (!_ && B) {
            E = this["_OnHeaderCell" + D];
            if (E) E[lOlOo1](this, B, F);
            else {
                var A = {
                    sender: this,
                    column: B,
                    htmlEvent: F
                },
                $ = "onHeaderCell" + D;
                if (B[$]) {
                    A.sender = this;
                    B[$](A)
                }
                this[lOooO0]("headercell" + D, A)
            }
        }
    },
    currentCell: null,
    editingCell: null,
    editControl: null,
    editWrap: null,
    lO0O: function(C) {
        if (this.currentCell) {
            var $ = this.currentCell.record,
            A = this.currentCell.column,
            B = this.O11lo($, A),
            _ = document.getElementById(B);
            if (_) if (C) l1ll1O(_, this.cellSelectedCls);
            else lOolO(_, this.cellSelectedCls)
        }
    },
    setCurrentCell: function($) {
        if (this.currentCell != $) {
            this.lO0O(false);
            this.currentCell = $;
            this.lO0O(true);
            this[lOooO0]("currentcellchanged")
        }
    },
    getCurrentCell: function() {
        var $ = this.currentCell;
        if ($) if (!this.data.hasRecord($.record)) {
            this.currentCell = null;
            $ = null
        }
        return $
    },
    allowCellEdit: true,
    allowCellSelect: true,
    beginEdit: function(A) {
        if (this.editingCell) this.endEdit();
        var $ = this[O0o1l0]();
        if ($) {
            var _ = this.l1ol1o($.record, $.column);
            if (_ !== false) {
                this.editingCell = $;
                this.lOoo1O($.record, $.column)
            }
        }
    },
    commitEdit: function($) {
        var _ = this.editingCell;
        if (_) {
            this._commitEditing = true;
            this.o111l(_.record, _.column, $);
            this._commitEditing = false
        }
    },
    endEdit: function() {
        var $ = this.editingCell;
        if ($) {
            this[O1o1o0]();
            this.l11lOo($.record, $.column);
            this.editingCell = null
        }
    },
    cancelEdit: function() {
        var $ = this.editingCell;
        if ($) {
            this.l11lOo($.record, $.column);
            this.editingCell = null
        }
    },
    getEditWrap: function($) {
        if (!this.editWrap) {
            this.editWrap = mini.append(document.body, "<div class=\"mini-supergrid-editwrap\" style=\"position:absolute;\"></div>");
            oOO1l(this.editWrap, "keydown", this.oo0000, this)
        }
        this.editWrap.style.zIndex = 1000000000;
        this.editWrap.style.display = "block";
        mini[l0lO1l](this.editWrap, $.x, $.y);
        ol1Olo(this.editWrap, $.width);
        this.editWrap.style.zIndex = mini.getMaxZIndex();
        return this.editWrap
    },
    oo0000: function(_) {
        if (_.keyCode == 13) {
            var $ = this.editingCell;
            if ($ && $.column && $.column.enterCommit === false) return;
            this.endEdit();
            this[lo0OOl]()
        } else if (_.keyCode == 27) {
            this[O1oooO]();
            this[lo0OOl]()
        } else if (_.keyCode == 9) this[O1oooO]()
    },
    ol0o11: function(A) {
        if (this.editingControl) {
            var $ = this.editingControl[lloo0o](A);
            if ($ == false) {
                var _ = this;
                _.endEdit();
                O01O(document, "mousedown", this.ol0o11, this)
            }
        }
    },
    l1ol1o: function($, A) {
        var C = {
            sender: this,
            source: this,
            record: $,
            column: A,
            field: A.field,
            editor: A.editor,
            value: $[A.field],
            cancel: false
        };
        if (A.oncellbeginedit) A.oncellbeginedit(C);
        this[lOooO0]("cellbeginedit", C);
        if (C.cancel) return false;
        if (!C.editor) return false;
        var B = this.editingControl = C.editor;
        if (B[O1lOO]) B[O1lOO](C.value);
        if (A.displayField && B[O0l111]) {
            var _ = $[A.displayField];
            B[O0l111](_)
        }
        return true
    },
    lOoo1O: function(_, C) {
        if (!this.editingControl) return false;
        var $ = this[lo1Ol](_, C),
        E = {
            sender: this,
            source: this,
            record: _,
            column: C,
            field: C.field,
            cellBox: $,
            editor: this.editingControl
        };
        if (C.oncellshowingedit) C.oncellshowingedit(E);
        this[lOooO0]("cellshowingedit", E);
        var B = this.getEditWrap($),
        D = E.editor;
        if (D[oo00ol]) {
            D[oo00ol](this.editWrap);
            D[lo0OOl]();
            setTimeout(function() {
                D[lo0OOl]();
                if (D[Ool00l]) D[Ool00l]()
            },
            10);
            D[ooOl10](true)
        } else if (D.el) {
            this.editWrap.appendChild(D.el);
            try {
                D.el[lo0OOl]()
            } catch(E) {}
            setTimeout(function() {
                try {
                    D.el[lo0OOl]()
                } catch($) {}
            },
            10)
        }
        if (D[lo01]) {
            var A = $.width;
            if (mini.isNumber(D.minWidth)) if (A < D.minWidth) A = D.minWidth;
            D[lo01](A)
        }
        oOO1l(document, "mousedown", this.ol0o11, this);
        if (C.autoShowPopup && D[Ol0o01]) D[Ol0o01]()
    },
    o111l: function(_, B, A) {
        var D = {
            sender: this,
            source: this,
            record: _,
            column: B,
            field: B.field,
            editor: this.editingControl,
            value: A,
            cancel: false
        };
        if (D.editor && D.editor[o0l0oO] && A === undefined) {
            try {
                D.editor[Oo10Oo]()
            } catch(C) {
                try {
                    D.editor.el[Oo10Oo]()
                } catch(D) {}
            }
            D.value = D.editor[o0l0oO]();
            if (D.editor[o0OlO0]) D.text = D.editor[o0OlO0]()
        }
        if (B.oncellcommitedit) B.oncellcommitedit(D);
        this[lOooO0]("cellcommitedit", D);
        if (D.cancel == false) if (B.displayField) {
            var $ = {};
            $[B.field] = D.value;
            $[B.displayField] = D.text;
            this.data.updateRecord(_, $)
        } else this.data.updateRecord(_, B.field, D.value)
    },
    l11lOo: function(_, C) {
        var E = {
            sender: this,
            source: this,
            record: _,
            column: C,
            field: C.field,
            editor: this.editingControl,
            value: _[C.field]
        };
        if (C.oncellendedit) C.oncellendedit(E);
        this[lOooO0]("cellendedit", E);
        if (this.editWrap) this.editWrap.style.display = "none";
        var A = this.editWrap.childNodes;
        for (var $ = A.length - 1; $ >= 0; $--) {
            var B = A[$];
            this.editWrap.removeChild(B)
        }
        var D = E.editor;
        if (D && D[O1o1ol]) D[O1o1ol]();
        if (D && D.clearValue) D.clearValue();
        this.editingControl = null
    },
    Ol0O0: function($, B, C, D) {
        var _ = $[B.field],
        E = {
            sender: this,
            source: this,
            rowIndex: C,
            columnIndex: D,
            record: $,
            column: B,
            field: B.field,
            value: _,
            cellHtml: _,
            rowCls: null,
            cellCls: B.cellCls || "",
            rowStyle: null,
            cellStyle: B.cellStyle || "",
            autoEscape: B.autoEscape
        };
        if (B.dateFormat) if (mini.isDate(E.value)) E.cellHtml = mini.formatDate(_, B.dateFormat);
        else E.cellHtml = "";
        if (B.displayField) E.cellHtml = $[B.displayField];
        if (E.autoEscape == true) E.cellHtml = mini.htmlEncode(E.cellHtml);
        var A = B.renderer;
        if (A) {
            fn = typeof A == "function" ? A: window[A];
            if (fn) E.cellHtml = fn[lOlOo1](B, E)
        }
        this[lOooO0]("drawcell", E);
        if (E.cellHtml === null || E.cellHtml === undefined) E.cellHtml = "";
        return E
    },
    setRowHeight: function($) {
        if ($ != this.rowHeight) {
            this.rowHeight = $;
            this[O0Ool0]()
        }
    },
    getMultiSelect: function() {
        return this[Ool11l]
    },
    setMultiSelect: function($) {
        if (this[Ool11l] != $) {
            this[Ool11l] = $;
            this.data[Oo1O11]($);
            this[O0Ool0]()
        }
    },
    setAllowUnselect: function($) {
        this.allowUnselect = $
    },
    getAllowUnselect: function($) {
        return this.allowUnselect
    },
    setAllowCellSelect: function($) {
        if (this[OlolOl] != $) {
            this[OlolOl] = $;
            this[O0Ool0]()
        }
    },
    setAllowRowSelect: function($) {
        if (this[O110lO] != $) {
            this[O110lO] = $;
            this[O0Ool0]()
        }
    },
    setAllowAlternating: function($) {
        if (this[lo0Ol1] != $) {
            this[lo0Ol1] = $;
            this[O0Ool0]()
        }
    },
    setAllowResizeColumn: function($) {
        if (this[oO1l0O] != $) {
            this[oO1l0O] = $;
            this[O0Ool0]()
        }
    },
    setAllowMoveColumn: function($) {
        if (this[lOOl0o] != $) this[lOOl0o] = $
    },
    setAllowSortColumn: function($) {
        if (this[OoO0l] != $) this[OoO0l] = $
    },
    setAllowDragDrop: function($) {
        if (this.allowDragDrop != $) {
            this.allowDragDrop = $;
            this[O0Ool0]()
        }
    },
    setShowDirty: function($) {
        if (this.showDirty != $) {
            this.showDirty = $;
            this[O0Ool0]()
        }
    },
    OolOl0Data: function() {
        return this.data[l1OOlO]().clone()
    },
    OolOl0Text: function($) {
        return "Rows " + $.length
    },
    _OnRowDragStart: function($, _) {
        var A = {
            record: $,
            column: _,
            cancel: false
        };
        this[lOooO0]("RowDragStart", A);
        return A
    },
    _OnRowDragDrop: function($, _, A) {
        $ = $.clone();
        var B = {
            records: $,
            targetRecord: _,
            action: A,
            cancel: false
        };
        this[lOooO0]("RowDragDrop", B);
        return B
    },
    O0l0o0: function(_, $, A) {
        var B = {};
        B.effect = _;
        B.records = $;
        B.targetRecord = A;
        this[lOooO0]("GiveFeedback", B);
        return B
    },
    isAllowDragDrop: function($, _) {
        if (!this.allowDragDrop) return false;
        if (_.allowDrag !== true) return false;
        var A = this._OnRowDragStart($, _);
        return ! A.cancel
    }
};
mini.copyTo(O0lO0l.prototype, mini.GridCellEditModel);
mini._SuperGridSort = function($) {
    this.grid = $;
    this.grid[O0011o]("headercellclick", this.__onGridHeaderCellClick, this);
    this.grid[O0011o]("headercellmousedown", this.__OnGridHeaderCellMouseDown, this);
    oOO1l($.OloOO0, "mousemove", this.__OnGridHeaderMouseMove, this);
    oOO1l($.OloOO0, "mouseout", this.__OnGridHeaderMouseOut, this)
};
mini._SuperGridSort[O010O1] = {
    __OnGridHeaderMouseOut: function($) {
        if (this.OlooOlColumnEl) lOolO(this.OlooOlColumnEl, "mini-supergrid-headercell-hover")
    },
    __OnGridHeaderMouseMove: function(_) {
        var $ = O01l0O(_.target, "mini-supergrid-headercell");
        if ($) {
            l1ll1O($, "mini-supergrid-headercell-hover");
            this.OlooOlColumnEl = $
        }
    },
    __onGridHeaderCellClick: function(B) {
        var $ = this.grid,
        A = O01l0O(B.target, "mini-supergrid-headercell");
        if (A) {
            var _ = $[Ol1Oo1](A.id.split("$")[2]);
            if ($[lOOl0o] && _ && _.allowDrag) {
                this.dragColumn = _;
                this._columnEl = A;
                this.getDrag().start(B)
            }
        }
    }
};
mini._SuperGridSelect = function($) {
    this.grid = $;
    this.grid[O0011o]("cellmousedown", this.l0OoO, this);
    this.grid[O0011o]("cellclick", this.o0111, this);
    this.grid[O0011o]("celldblclick", this.__onGridCellDblClick, this);
    oOO1l(this.grid.el, "keydown", this.ooO0, this)
};
mini._SuperGridSelect[O010O1] = {
    ooO0: function(G) {
        var $ = this.grid,
        A = $[O0o1l0]();
        if (G.shiftKey || G.ctrlKey || G.altKey) return;
        if (!A) return;
        if (G.keyCode == 37 || G.keyCode == 38 || G.keyCode == 39 || G.keyCode == 40) G.preventDefault();
        var C = $.getViewColumns(),
        B = A.column,
        _ = A.record,
        F = C[o0lllO](B),
        D = $[o0lllO](_),
        E = $[l10ol1]();
        switch (G.keyCode) {
        case 27:
            break;
        case 13:
            if (B[Oo0o1l] != true) $[Ooll1]();
            break;
        case 37:
            if (F > 0) F -= 1;
            break;
        case 38:
            if (D > 0) D -= 1;
            break;
        case 39:
            if (F < C.length - 1) F += 1;
            break;
        case 40:
            if (D < E - 1) D += 1;
            break;
        default:
            return
        }
        B = C[F];
        _ = $[OoOO11](D);
        if (B && _ && $[OlolOl]) {
            A = {
                record: _,
                column: B
            };
            $[oOO1O1](A)
        }
        if (_ && $[O110lO]) {
            $[o1O1o0]();
            $[ololO1](_)
        }
    },
    o0111: function(A) {
        var $ = A.record,
        _ = A.column;
        if (!_[Oo0o1l] && !this.grid[OO11O1]()) if (A.htmlEvent.shiftKey || A.htmlEvent.ctrlKey);
        else if (!this.grid.editOnDblClick) this.grid[Ooll1]()
    },
    __onGridCellDblClick: function(A) {
        var $ = A.record,
        _ = A.column;
        if (!_[Oo0o1l] && !this.grid[OO11O1]()) if (A.htmlEvent.shiftKey || A.htmlEvent.ctrlKey);
        else if (this.grid.editOnDblClick) this.grid[Ooll1]()
    },
    l0OoO: function(D) {
        var _ = D.record,
        B = D.column;
        if (this.grid[OlolOl]) {
            var A = {
                record: _,
                column: B
            };
            this.grid[oOO1O1](A)
        }
        if (!this.grid[O110lO]) return;
        var C = {
            record: _,
            column: B,
            cancel: false
        };
        this.grid[lOooO0]("beforeselect", C);
        if (C.cancel == true) return;
        var $ = this.grid;
        if (this.grid[l1o1OO]()) {
            this.grid.el.onselectstart = function() {};
            if (D.htmlEvent.shiftKey) {
                this.grid.el.onselectstart = function() {
                    return false
                };
                D.htmlEvent.preventDefault();
                if (!this.currentRecord) {
                    this.grid.data[ololO1](_);
                    this.currentRecord = this.grid[O1oll]()
                } else {
                    this.grid[o1O1o0]();
                    this.grid[ooo00l](this.currentRecord, _)
                }
            } else {
                this.grid.el.onselectstart = function() {};
                if (D.htmlEvent.ctrlKey) {
                    this.grid.el.onselectstart = function() {
                        return false
                    };
                    D.htmlEvent.preventDefault()
                }
                if (B._multiRowSelect || D.htmlEvent.ctrlKey || $.allowUnselect) {
                    if (this.grid.data[oloo11](_) && (B._multiRowSelect || D.htmlEvent.ctrlKey)) {
                        if (D.htmlEvent.button != 2) {
                            this.grid.data[o1o001](_);
                            this.grid[oOO1O1](null)
                        }
                    } else this.grid.data[ololO1](_)
                } else if (this.grid.data[oloo11](_));
                else {
                    this.grid.data[o1O1o0]();
                    this.grid.data[ololO1](_)
                }
                this.currentRecord = this.grid[O1oll]()
            }
        } else if (!this.grid.data[oloo11](_)) this.grid.data[ololO1](_)
    }
};
mini._SuperGridSplitter = function($) {
    this.grid = $;
    oOO1l(this.grid.el, "mousedown", this.ooO1o, this)
};
mini._SuperGridSplitter[O010O1] = {
    ooO1o: function(C) {
        var $ = this.grid,
        A = C.target;
        if (l0ll(A, "mini-supergrid-splitter")) {
            var B = mini.getAttr(A, "cid"),
            _ = $[Ol1Oo1](B);
            if ($[oO1l0O] && _) {
                this.splitterColumn = _;
                this.getDrag().start(C)
            }
        }
    },
    getDrag: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    },
    O0lO00: function(_) {
        var $ = this.grid,
        B = $[l1llO0](this.splitterColumn);
        this.columnBox = B;
        this.oOOoo0 = mini.append(document.body, "<div class=\"mini-supergrid-proxy\"></div>");
        var A = $[OOl11l](true);
        A.x = B.x;
        A.width = B.width;
        A.right = B.right;
        oOo10l(this.oOOoo0, A)
    },
    O1l1l: function(A) {
        var $ = this.grid,
        B = mini.copyTo({},
        this.columnBox),
        _ = B.width + (A.now[0] - A.init[0]);
        if (_ < $.columnMinWidth) _ = $.columnMinWidth;
        if (_ > $.columnMaxWidth) _ = $.columnMaxWidth;
        ol1Olo(this.oOOoo0, _)
    },
    loO1: function(_) {
        var $ = this.grid,
        A = O101o(this.oOOoo0);
        jQuery(this.oOOoo0).remove();
        this.oOOoo0 = null;
        $[oO0001](this.splitterColumn, {
            width: A.width
        })
    }
};
mini._SuperGridColumnMove = function($, _, A) {
    this.grid = $;
    this.headerCellCls = _;
    this.splitterCls = A;
    oOO1l(this.grid.el, "mousedown", this.ooO1o, this)
};
mini._SuperGridColumnMove[O010O1] = {
    ooO1o: function(B) {
        var $ = this.grid;
        if (l0ll(B.target, "mini-supergrid-splitter")) return;
        if (B.button == mini.MouseButton.Right) return;
        var A = O01l0O(B.target, "mini-supergrid-headercell");
        if (A) {
            var _ = $[Ol1Oo1](A.id);
            if ($[lOOl0o] && _ && _.allowMove) {
                this.dragColumn = _;
                this._columnEl = A;
                this.getDrag().start(B)
            }
        }
    },
    getDrag: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: isIE9 ? false: true,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    },
    O0lO00: function(_) {
        var $ = this.grid;
        this.oOOoo0 = mini.append(document.body, "<div class=\"mini-supergrid-columnproxy\"></div>");
        this.oOOoo0.innerHTML = "<div class=\"mini-supergrid-columnproxy-inner\">" + $.l1lo(this.dragColumn) + "</div>";
        mini[l0lO1l](this.oOOoo0, _.now[0] + 15, _.now[1] + 18);
        l1ll1O(this.oOOoo0, "mini-supergrid-no");
        this.moveTop = mini.append(document.body, "<div class=\"mini-supergrid-movetop\"></div>");
        this.moveBottom = mini.append(document.body, "<div class=\"mini-supergrid-movebottom\"></div>")
    },
    O1l1l: function(_) {
        var $ = this.grid,
        E = _.now[0];
        mini[l0lO1l](this.oOOoo0, E + 15, _.now[1] + 18);
        this.targetColumn = this.insertAction = null;
        var C = O01l0O(_.event.target, "mini-supergrid-headercell");
        if (C) {
            var B = $[Ol1Oo1](C.id);
            if (B && B != this.dragColumn && !$[o0l111](this.dragColumn, B)) {
                this.targetColumn = B;
                this.insertAction = "before";
                var D = $[l1llO0](this.targetColumn);
                if (E > D.x + D.width / 2) this.insertAction = "after"
            }
        }
        if (this.targetColumn) {
            l1ll1O(this.oOOoo0, "mini-supergrid-ok");
            lOolO(this.oOOoo0, "mini-supergrid-no");
            var A = $[l1llO0](this.targetColumn);
            this.moveTop.style.display = "block";
            this.moveBottom.style.display = "block";
            if (this.insertAction == "before") {
                mini[l0lO1l](this.moveTop, A.x - 4, A.y - 9);
                mini[l0lO1l](this.moveBottom, A.x - 4, A.bottom)
            } else {
                mini[l0lO1l](this.moveTop, A.right - 4, A.y - 9);
                mini[l0lO1l](this.moveBottom, A.right - 4, A.bottom)
            }
        } else {
            lOolO(this.oOOoo0, "mini-supergrid-ok");
            l1ll1O(this.oOOoo0, "mini-supergrid-no");
            this.moveTop.style.display = "none";
            this.moveBottom.style.display = "none"
        }
    },
    loO1: function(_) {
        var $ = this.grid;
        mini[Ol00oo](this.oOOoo0);
        mini[Ol00oo](this.moveTop);
        mini[Ol00oo](this.moveBottom);
        $[llO010](this.dragColumn, this.targetColumn, this.insertAction);
        this.oOOoo0 = this.moveTop = this.moveBottom = this.dragColumn = this.targetColumn = null
    }
};
mini._GridDragDrop = function($) {
    this.owner = $;
    this.owner[O0011o]("CellMouseDown", this.__OnGridCellMouseDown, this)
};
mini._GridDragDrop[O010O1] = {
    __OnGridCellMouseDown: function(B) {
        if (B.htmlEvent.button == mini.MouseButton.Right) return;
        var $ = this.owner;
        if ($[OO11O1]() || $.isAllowDragDrop(B.record, B.column) == false) return;
        var _ = B.record;
        this.isTree = $.data.isTree;
        this.dragData = $.OolOl0Data();
        if (this.dragData[o0lllO](_) == -1) this.dragData.push(_);
        var A = this.OolOl0();
        A.start(B.htmlEvent)
    },
    O0lO00: function(_) {
        var $ = this.owner;
        this.feedbackEl = mini.append(document.body, "<div class=\"mini-feedback\"></div>");
        this.feedbackEl.innerHTML = $.OolOl0Text(this.dragData);
        this.lastFeedbackClass = ""
    },
    O1l1l: function(_) {
        var $ = this.owner,
        C = _.now[0],
        B = _.now[1];
        mini[l0lO1l](this.feedbackEl, C + 15, B + 18);
        var A = $.lO1lo(_.event);
        this.dropRecord = A;
        if (A) {
            if (this.isTree) this.dragAction = this.getFeedback(A, B, 3);
            else this.dragAction = this.getFeedback(A, B, 2)
        } else this.dragAction = "no";
        this.lastFeedbackClass = "mini-feedback-" + this.dragAction;
        this.feedbackEl.className = "mini-feedback " + this.lastFeedbackClass;
        if (this.dragAction == "no") A = null;
        this.setRowFeedback(A, this.dragAction)
    },
    loO1: function(B) {
        var G = this.owner;
        mini[Ol00oo](this.feedbackEl);
        this.feedbackEl = null;
        this.setRowFeedback(null);
        if (this.isTree) {
            var I = [];
            for (var H = 0,
            F = this.dragData.length; H < F; H++) {
                var K = this.dragData[H],
                C = false;
                for (var J = 0,
                A = this.dragData.length; J < A; J++) {
                    var E = this.dragData[J];
                    if (E != K) {
                        C = G.data[lOloOO](E, K);
                        if (C) break
                    }
                }
                if (!C) I.push(K)
            }
            this.dragData = I
        }
        if (this.dropRecord && this.dragAction != "no") {
            var L = G._OnRowDragDrop(this.dragData, this.dropRecord, this.dragAction);
            if (!L.cancel) {
                var I = L.records,
                D = L.targetRecord,
                _ = L.action;
                if (G.data.isTree) G.data[O0ol01](I, D, _);
                else {
                    var $ = G.data[o0lllO](D);
                    if (_ == "after") $ += 1;
                    G.data.move(I, $)
                }
            }
        }
        this.dropRecord = null;
        this.dragData = null
    },
    setRowFeedback: function(_, E) {
        var $ = this.owner;
        if (this.lastAddDomRow) $[OOo0o0](this.lastAddDomRow, "mini-supergrid-feedback-add");
        if (_ == null || this.dragAction == "add") {
            mini[Ol00oo](this.feedbackLine);
            this.feedbackLine = null
        }
        this.lastRowFeedback = _;
        if (_ != null) if (E == "before" || E == "after") {
            if (!this.feedbackLine) this.feedbackLine = mini.append(document.body, "<div class='mini-feedback-line'></div>");
            this.feedbackLine.style.display = "block";
            var C = $[oOOo1l](_),
            D = C.x,
            B = C.y - 1;
            if (E == "after") B += C.height;
            mini[l0lO1l](this.feedbackLine, D, B);
            var A = $[OOl11l](true);
            ol1Olo(this.feedbackLine, A.width)
        } else {
            $[OOol00](_, "mini-supergrid-feedback-add");
            this.lastAddDomRow = _
        }
    },
    getFeedback: function(J, H, E) {
        var C = this.owner,
        I = C[oOOo1l](J),
        $ = I.height,
        G = H - I.y,
        F = null;
        if (this.dragData[o0lllO](J) != -1) return "no";
        var A = false;
        if (E == 3) {
            A = C[OOoOl1](J);
            for (var D = 0,
            B = this.dragData.length; D < B; D++) {
                var K = this.dragData[D],
                _ = C[lOloOO](K, J);
                if (_) {
                    F = "no";
                    break
                }
            }
        }
        if (F == null) if (E == 2) {
            if (G > $ / 2) F = "after";
            else F = "before"
        } else if (A) {
            if (G > $ / 2) F = "after";
            else F = "before"
        } else if (G > ($ / 3) * 2) F = "after";
        else if ($ / 3 <= G && G <= ($ / 3 * 2)) F = "add";
        else F = "before";
        var L = C.O0l0o0(F, this.dragData, J);
        return L.effect
    },
    OolOl0: function() {
        if (!this.drag) this.drag = new mini.Drag({
            capture: false,
            onStart: mini.createDelegate(this.O0lO00, this),
            onMove: mini.createDelegate(this.O1l1l, this),
            onStop: mini.createDelegate(this.loO1, this)
        });
        return this.drag
    }
};
O0lo1l = function() {
    O0lo1l[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(O0lo1l, O0lO0l, {
    treeColumn: null,
    showTreeIcon: false,
    allowColumnSort: false,
    leafIcon: "mini-supertree-leaf",
    folderIcon: "mini-supertree-folder",
    uiCls: "mini-supertree"
});
O11oo = O0lo1l[O010O1];
O11oo[Ol1oO0] = Ol0oo;
O11oo[ll0Oll] = OOool;
O11oo[O1Olol] = o10OO;
O11oo[lloO0o] = ooO10;
O11oo[lOOol] = Oo0lo;
O11oo[o001oo] = lO0o11;
O11oo[oOOlO1] = o1Oolo;
O11oo[lo11o0] = ll0O;
O11oo.Ol0O0 = Oo1OO;
O11oo[lOloOO] = lO0o;
O11oo[O00lOO] = O1lOo;
O11oo[OlOool] = l0l1;
O11oo[OOoOl1] = l00o0;
O11oo.ooO0oO = o11O0;
O11oo.ooo1 = o00Oo;
O11oo[llllo1] = ll1ll;
O11oo[oloOoo] = OOo1O;
O11oo[lO0l01] = Oll1O;
mini.copyTo(O0lo1l.prototype, mini._SuperDataTreeApplys);
oloo(O0lo1l, "supertree");
Oo10o1 = function() {
    Oo10o1[lOO1lo][o1lOol][lOlOo1](this);
    this[looooo]();
    this.ganttView.showCriticalPath = this.showCriticalPath
};
O01o(Oo10o1, OOo01l, {
    width: 450,
    height: 200,
    baselineIndex: 0,
    viewModel: "gantt",
    editOnDblClick: false,
    data: null,
    headerHeight: 36,
    rowHeight: 21,
    columnWidth: 100,
    tableWidth: "50%",
    splitWidth: 4,
    minViewWidth: 100,
    treeColumn: null,
    columns: null,
    readOnly: false,
    allowDragDrop: false,
    multiSelect: false,
    showDirty: true,
    showGridLines: true,
    timeLines: null,
    showTableView: true,
    showGanttView: true,
    tableViewExpanded: true,
    ganttViewExpanded: true,
    allowResize: true,
    uiCls: "mini-gantt",
    tableViewType: "SuperTree",
    ganttViewType: "GanttView",
    showLabel: true,
    allowUnselect: false,
    allowProjectDateRange: false,
    __TaskID: 1,
    autoSyncSummary: true,
    allowSummaryLink: true,
    allowLinkLimit: false,
    showCriticalPath: true,
    _orderCount: 0,
    allowOrderProject: false
});
lO1O = Oo10o1[O010O1];
lO1O[O0oO0l] = o00O0;
lO1O[OlO010] = OO00O;
lO1O[ll10l0] = l10OO1;
lO1O[O11o1o] = OooO10;
lO1O[o11011] = ol01o;
lO1O[OO11ll] = oO0l0o;
lO1O[ooOl0O] = o10OO1;
lO1O[Oll0o1] = OO1110;
lO1O[Ool1lO] = O1OolO;
lO1O[l01l10] = lo0O0;
lO1O[ll1o00] = Olo1l1;
lO1O[Oo11O] = o10oo0;
lO1O[o1O1o0] = l000o;
lO1O[Ooo1OO] = l1looo;
lO1O[o1o001] = o0l00;
lO1O[ololO1] = l00llO;
lO1O[oloo11] = l1l010;
lO1O[l1OOlO] = Oo111;
lO1O[O1oll] = oOlOo;
lO1O[Ol111O] = OlOOl1;
lO1O[o1lOo1] = Ol101o;
lO1O[llO0ll] = lOll01;
lO1O[oOolo0] = o011l;
lO1O.Ol01 = lOo1o;
lO1O[o10ll] = O1O10;
lO1O[o0o11l] = O0lll1;
lO1O[olOl00] = Oo11l;
lO1O[l1O10O] = oloO0o;
lO1O[ol10O0] = oOO0oo;
lO1O[O10loo] = llO1o;
lO1O[oo00l1] = OOO11;
lO1O[ll10Ol] = OoOlO;
lO1O[Ol0lll] = O0o0l;
lO1O[lllO1l] = Ool1o;
lO1O[lo0lo1] = llll1l;
lO1O[lOlolo] = llO01;
lO1O[OlOlO1] = lOo110;
lO1O[ooOl1l] = oOO1lo;
lO1O[lo0O00] = o11Ol;
lO1O[lo10O0] = lO11o0;
lO1O[O0oO0O] = olO01;
lO1O[o1oo1o] = oO010;
lO1O[o1llo1] = O0ol;
lO1O[Ollo1l] = ooOll;
lO1O[O01101] = O0101;
lO1O[oOO0l0] = l1OO;
lO1O[o10lo] = o0O1o;
lO1O[O01O1o] = llOl0;
lO1O[ooO00o] = o1O1O;
lO1O[OooOl0] = lo0O;
lO1O[OO0Oo0] = l0lo1;
lO1O[lO1lol] = loll;
lO1O[l0O001] = O1o01;
lO1O[o0l1oO] = oo10o;
lO1O[Oloooo] = Oo1l1;
lO1O[l1o0o1] = l1o1Ol;
lO1O[o1o0l1] = o1O0;
lO1O[lOloOO] = oo101;
lO1O[Oollo0] = o0o0;
lO1O[oO0oo1] = lo0O10;
lO1O[l1OoOO] = l0O0l0;
lO1O[o1Ol1l] = loOo1l;
lO1O[oO01o1] = oOl00;
lO1O[oOlO00] = O1l011;
lO1O[l01llO] = OoO00o;
lO1O[O00OO0] = OoloO0;
lO1O[O111lo] = oOl1;
lO1O.OO001l = o10O;
lO1O[o0olo0] = O10ol0;
lO1O[O1Ol1] = o0O1O;
lO1O[l1Oo01] = l1ol0;
lO1O.Oll0l = O0O11;
lO1O[llO000] = o1Olo;
lO1O[O1OO0l] = oO1Ol;
lO1O[O0o01o] = o0lOol;
lO1O[olOOO1] = OlO1OO;
lO1O[OOllOO] = lO0lo1;
lO1O[l1l1Oo] = Ollol;
lO1O.o10l = O10oll;
lO1O[looooo] = Ol0oO;
lO1O[ll0o0l] = oOoo1l;
lO1O[oO1l0o] = Oool11;
lO1O[O0O0oo] = oo0O;
lO1O[OO000O] = lo11;
lO1O[OOl0O0] = OloO0;
lO1O[O00lOO] = O0lO1;
lO1O[OO0Olo] = lo11Level;
lO1O[o01ol1] = OloO0Level;
lO1O[lo110o] = ll10l;
lO1O[oo1OOO] = oolo0;
lO1O[Oo1l1o] = l10O0;
lO1O[O11l1o] = oOOoO;
lO1O[OoOoo1] = o0l1O1;
lO1O[ll0010] = l1l0O0;
lO1O[oO011O] = oOl1O0;
lO1O[oollo1] = olllO;
lO1O.o100O = lloooO;
lO1O[loo00l] = O1OOo;
lO1O[oOOlO1] = O1Oo0;
lO1O[lo1ool] = l0l0o;
lO1O[Ol1Oo1] = o0l1ll;
lO1O[oO0001] = OOl0;
lO1O[O0o0Oo] = o0l1lls;
lO1O[l0100] = O0lo1;
lO1O[Ool1l0] = olol1O;
lO1O[O1o11O] = oOlOoColumn;
lO1O[o001ol] = lol000;
lO1O[oOO010] = oO1l1;
lO1O[Ol010o] = l10oOO;
lO1O[O1loo1] = o01ll;
lO1O[ooollo] = O1oO1;
lO1O[oolO1o] = l0OO0o;
lO1O[O1101l] = ollo;
lO1O[O1lOO0] = l10l;
lO1O[l0llO0] = l110l;
lO1O[l10l10] = l10O;
lO1O[oO1O0O] = O1OoO;
lO1O[l1Oll0] = oOllO;
lO1O[Oo1O11] = O00O1;
lO1O[loo00l] = O1OOo;
lO1O[l0l001] = olllo;
lO1O[o0lO0l] = O0O111;
lO1O[O0oooo] = o0l1;
lO1O[OOOloO] = Olo0O;
lO1O[lOllol] = O11ol;
lO1O[OllO00] = O00ol;
lO1O[lolo10] = Olo1o;
lO1O.lloOO0 = l01l1O;
lO1O[l1oo00] = looool;
lO1O[loll0l] = l10o;
lO1O[l0loo1] = olOl0;
lO1O[O10OlO] = OlOOl;
lO1O.O0O0ll = oooOl;
lO1O.olol = Ool10;
lO1O[O0lOl0] = oOo0;
lO1O[O11llO] = O1lO1;
lO1O.l10ll = O1oo0;
lO1O.l1Oll = Ool00o;
lO1O.l111O1 = O0Ol0;
lO1O.oo1oOo = ll11o;
lO1O.OOOl1l = lOOOO;
lO1O.oOO1Oo = O1l0l1;
lO1O.oo11 = oloOl;
lO1O.lo100 = lo0o;
lO1O.lOOO = l1o1;
lO1O.lO0oo = o01O;
lO1O[oloOoo] = Oo00O;
lO1O.O0OOo0 = OO0oo;
lO1O.Ol00 = OlOl01;
lO1O[lO0l01] = loOol1;
lO1O[O0ol11] = o11ol0;
lO1O[loOlO0] = lO0lll;
lO1O[looOl1] = olOl1l;
lO1O[oo1010] = oo1ll;
lO1O[oO100l] = Ol0O;
oloo(Oo10o1, "gantt");
Oo10o1.PredecessorLinkType = [{
    ID: 0,
    Name: "Finish-Finish(FF)",
    Short: "FF"
},
{
    ID: 1,
    Name: "Finish-Start(FS)",
    Short: "FS"
},
{
    ID: 2,
    Name: "Start-Finish(SF)",
    Short: "SF"
},
{
    ID: 3,
    Name: "Start-Start(SS)",
    Short: "SS"
}];
Oo10o1.ConstraintType = [{
    ID: 0,
    Name: "The sooner the better"
},
{
    ID: 1,
    Name: "The later the better"
},
{
    ID: 2,
    Name: "Must be begin in"
},
{
    ID: 3,
    Name: "Must be completed in"
},
{
    ID: 4,
    Name: "Beginning no earlier than ..."
},
{
    ID: 5,
    Name: "Beginning no later than ..."
},
{
    ID: 6,
    Name: "Completed no earlier than ..."
},
{
    ID: 7,
    Name: "Completed no later than ..."
}];
mini.copyTo(Oo10o1, {
    ID_Text: "ID",
    Name_Text: "Name",
    PercentComplete_Text: "Progress",
    Duration_Text: "Duration",
    Start_Text: "Start",
    Finish_Text: "Finish",
    Critical_Text: "Critical",
    PredecessorLink_Text: "PredecessorLink",
    Work_Text: "Work",
    Priority_Text: "Priority",
    Weight_Text: "Weight",
    OutlineNumber_Text: "OutlineNumber",
    OutlineLevel_Text: "OutlineLevel",
    ActualStart_Text: "ActualStart",
    ActualFinish_Text: "ActualFinish",
    WBS_Text: "WBS",
    ConstraintType_Text: "ConstraintType",
    ConstraintDate_Text: "ConstraintDate",
    Department_Text: "Department",
    Principal_Text: "Principal",
    Assignments_Text: "Assignments",
    Summary_Text: "Summary",
    Task_Text: "Task",
    Baseline_Text: "Baseline",
    LinkType_Text: "LinkType",
    LinkLag_Text: "LinkLag",
    From_Text: "From",
    To_Text: "To",
    Goto_Text: "Goto",
    UpGrade_Text: "UpGrade",
    DownGrade_Text: "DownGrade",
    Add_Text: "Add Task",
    Edit_Text: "Edit Task",
    Remove_Text: "Remove Task",
    ZoomIn_Text: "ZoomIn",
    ZoomOut_Text: "ZoomOut",
    Deselect_Text: "Un Select",
    Split_Text: "Split Task"
});
PlusGantt = Oo10o1;
l1O01O = function($) {
    this.project = $;
    $[O0011o]("cellbeginedit", this.o1l0o1, this);
    $[O0011o]("aftercellcommitedit", this.OlOOo1, this);
    $[O0011o]("itemdragstart", this.lO01OO, this);
    $[O0011o]("itemdragcomplete", this.O1O0, this);
    $[O0011o]("dodragdrop", this.OllO, this);
    $[l1OOl1]({
        readOnly: false,
        allowDragDrop: true
    })
};
l1O01O[O010O1] = {
    OllO: function(B) {
        var _ = B.tasks,
        A = B.targetTask,
        $ = B.action;
        this.project[Ollo1l](_, A, $)
    },
    o1l0o1: function(A) {
        var _ = A.record,
        $ = A.field;
        if (_.Summary && _.FixedDate != 1) if ($ == "Start" || $ == "Finish" || $ == "Duration") A.cancel = true
    },
    OlOOo1: function(F) {
        F.cancel = true;
        var D = F.record,
        B = F.field,
        _ = F.value,
        C = D[B],
        A = F.column;
        if (mini[l0oOl](C, _)) return;
        try {
            if (A.displayField) {
                var $ = {};
                $[A.field] = F.value;
                $[A.displayField] = F.text;
                this.project[o10lo](D, $)
            } else this.project[o10lo](D, B, _)
        } catch(E) {
            alert(E.message)
        }
    },
    lO01OO: function($) {
        if ($.action == "start") $.cancel = true
    },
    O1O0: function(C) {
        var _ = C.action,
        $ = C.value,
        B = C.item,
        A = new Date();
        if (_ == "finish") this.project[o10lo](B, "Finish", $);
        if (_ == "percentcomplete") this.project[o10lo](B, "PercentComplete", $);
        if (_ == "move") this.project[o10lo](B, "Start", $)
    }
};
l1O01O.Calendar = function($) {
    this.project = $;
    this.calendar = $[l1l10O]();
    this.validCalendar(this.calendar);
    this.WeekDays = this.calendar["WeekDays"];
    this.Exceptions = this.calendar["Exceptions"];
    mini[Oll0o1](this.WeekDays,
    function($, _) {
        return $.DayType > _.DayType
    });
    this.caches = {}
};
l1O01O.Calendar[O010O1] = {
    validCalendar: function(F) {
        if (F.UID == null) throw new Error("\u65e5\u5386\u6ca1\u6709UID\u6807\u8bc6\u53f7");
        var $ = F["WeekDays"],
        I = F["Exceptions"];
        if ($ == null || $.length != 7) throw new Error("\u5de5\u4f5c\u5468\u6570\u636e\u9519\u8bef");
        if (I == null) F["Exceptions"] = I = [];
        var A = false;
        for (var H = 0; H < 7; H++) {
            var B = $[H],
            _ = parseInt(B["DayType"]),
            K = parseInt(B["DayWorking"]);
            if ((K != 0 && K != 1) || _ < 1 || _ > 7) throw new Error("\u5de5\u4f5c\u5468\u6570\u636e\u9519\u8bef");
            if (K == 1) A = true
        }
        if (A == false) throw new Error("\u5de5\u4f5c\u5468\u5fc5\u987b\u81f3\u5c11\u6709\u4e00\u5929\u662f\u5de5\u4f5c\u65e5");
        for (var H = 0,
        C = I.length; H < C; H++) {
            var D = I[H],
            _ = parseInt(D["DayType"]),
            K = parseInt(D["DayWorking"]);
            if ((K != 0 && K != 1) || _ != 0) throw new Error("\u4f8b\u5916\u65e5\u671f\u9519\u8bef");
            if (K == 1) {
                var J = D["TimePeriod"];
                if (J == null || !mini.isDate(J["FromDate"]) || !mini.isDate(J["ToDate"])) throw new Error("\u4f8b\u5916\u65e5\u671f\u6570\u636e\u9519\u8bef");
                var G = J["FromDate"],
                E = J["ToDate"];
                J["FromDate"] = mini.clearTime(G);
                J["ToDate"] = mini.maxTime(E)
            }
        }
    },
    isWorkingDate: function(_) {
        var $ = this.getDay(_.getDay(), _);
        return $.DayWorking == 1
    },
    getDay: function(J, B) {
        var G = "getDay$" + B[O0olo1]() + J,
        E = this.caches[G];
        if (E) return E;
        var _ = this.WeekDays[J];
        if (B != null) {
            var $ = B[O0olo1]();
            for (var F = 0,
            C = this.Exceptions.length; F < C; F++) {
                var D = this.Exceptions[F],
                I = D["TimePeriod"],
                A = I["FromDate"][O0olo1](),
                H = I["ToDate"][O0olo1]();
                if (A <= $ && $ <= H) {
                    _ = D;
                    break
                }
            }
        }
        this.caches[G] = _;
        return _
    },
    getStart: function(_, A) {
        if (A <= 0) return new Date(_[O0olo1]());
        var B = "getstart" + _[O0olo1]() + A,
        $ = this.caches[B];
        if ($) return new Date($);
        var D = new Date(_.getFullYear(), _.getMonth(), _.getDate());
        while (A > 0) {
            var C = this.isWorkingDate(D);
            if (C) {
                A--;
                if (A == 0) break
            }
            D = new Date(D.getFullYear(), D.getMonth(), D.getDate() - 1)
        }
        this.caches[B] = D[O0olo1]();
        return D
    },
    getFinish: function(A, _) {
        if (_ <= 0) return new Date(A[O0olo1]());
        var B = "getfinish" + A[O0olo1]() + _,
        $ = this.caches[B];
        if ($) return new Date($);
        var D = new Date(A.getFullYear(), A.getMonth(), A.getDate());
        while (_ > 0) {
            var C = this.isWorkingDate(D);
            if (C) {
                _--;
                if (_ == 0) break
            }
            D = new Date(D.getFullYear(), D.getMonth(), D.getDate() + 1)
        }
        D = new Date(D.getFullYear(), D.getMonth(), D.getDate(), 23, 59, 59);
        this.caches[B] = D[O0olo1]();
        return D
    },
    getWorkingDays: function(B, A) {
        if (B[O0olo1]() == A[O0olo1]()) return 0;
        var D = "getWorkingDays" + B[O0olo1]() + A[O0olo1](),
        _ = this.caches[D];
        if (_ !== undefined) return _;
        var C = B > A;
        if (C) {
            var E = B;
            B = A;
            A = B
        }
        B = new Date(B.getFullYear(), B.getMonth(), B.getDate());
        A = new Date(A.getFullYear(), A.getMonth(), A.getDate(), 23, 59, 59);
        var $ = 0,
        F = A[O0olo1]();
        for (var H = B; H[O0olo1]() < F;) {
            var G = this.isWorkingDate(H);
            if (G) $++;
            H = new Date(H.getFullYear(), H.getMonth(), H.getDate() + 1)
        }
        this.caches[D] = $;
        return C ? -$: $
    },
    getWorkingDate: function(C, D) {
        var A = "getWorkingDate" + C[O0olo1]() + D,
        $ = this.caches[A];
        if ($) return new Date($);
        C = new Date(C.getFullYear(), C.getMonth(), C.getDate());
        var _ = D ? 1 : -1;
        while (true) {
            var B = this.isWorkingDate(C);
            if (B) break;
            C = new Date(C.getFullYear(), C.getMonth(), C.getDate() + _)
        }
        C = D ? C: new Date(C.getFullYear(), C.getMonth(), C.getDate(), 23, 59, 59);
        this.caches[A] = C[O0olo1]();
        return C
    },
    getWorkingStartDate: function(D, _) {
        if (_ == 0) return D;
        var A = "getWorkingStartDate" + D[O0olo1]() + _,
        $ = this.caches[A];
        if ($) return new Date($);
        D = new Date(D.getFullYear(), D.getMonth(), D.getDate());
        var B = _ > 0 ? 1 : -1;
        while (true) {
            if (_ == 0) break;
            D = new Date(D.getFullYear(), D.getMonth(), D.getDate() + B);
            var C = this.isWorkingDate(D);
            if (C) _ -= B
        }
        this.caches[A] = D[O0olo1]();
        return D
    }
};
l1O01O.Validator = function($) {
    this.project = $
};
l1O01O.Validator[O010O1] = {
    valid: function() {
        var $ = this.project[O0o01o]();
        this.validTasks($)
    },
    validTasks: function(B) {
        this.validedTasks = {};
        B = B.clone();
        for (var $ = 0,
        A = B.length; $ < A; $++) {
            var _ = {};
            this.validTask(B[$], _)
        }
    },
    validTask: function(E, _) {
        var H = E.UID;
        if (this.validedTasks[H] != null) return;
        if (_[H] != null) throw new Error("\u524d\u7f6e\u4efb\u52a1\u51fa\u9519,\u6709\u56de\u73af\u5f15\u7528");
        _[H] = E;
        this.validedTasks[H] = E;
        this.validTaskProperties(E);
        var A = this.project[oO01o1](H);
        if (A && A.UID != this.project.rootTaskUID) {
            this.validTask(A, _);
            delete _[A.UID]
        }
        var G = E.PredecessorLink;
        if (G != null) for (var $ = 0,
        D = G.length; $ < D; $++) {
            var C = G[$];
            this.validLink(E, C, _);
            delete _[C.PredecessorUID]
        }
        var F = E[this.project.tasks.nodesField];
        if (F) for ($ = 0, D = F.length; $ < D; $++) {
            var B = F[$];
            this.validTask(B, _);
            delete _[B.UID]
        }
    },
    validLink: function(C, B, $) {
        var D = this.project[oO011O](B.PredecessorUID);
        if (D == null) return;
        var E = C.UID,
        _ = D.UID,
        A = false;
        if ($[_] != null) {
            alert("\u4efb\u52a1 (" + C.ID + ") \"" + C.Name + "\" \u4e0d\u80fd\u6709\u56de\u73af\u5f15\u7528\u5173\u7cfb");
            this.project[lllO1l](C, D);
            A = true
        }
        if (!A && this.project[lOloOO](E, _)) {
            alert("\u7236\u4efb\u52a1 (" + C.ID + ") \"" + C.Name + "\" \u548c\u5b50\u4efb\u52a1 (" + D.ID + ") \"" + D.Name + "\" \u4e0d\u80fd\u6709\u4efb\u52a1\u76f8\u5173\u6027");
            this.project[lllO1l](C, D);
            A = true
        }
        if (!A && this.project[lOloOO](_, E)) {
            alert("\u7236\u4efb\u52a1 (" + D.ID + ") \"" + D.Name + "\" \u548c\u5b50\u4efb\u52a1 (" + C.ID + ") \"" + C.Name + "\" \u4e0d\u80fd\u6709\u4efb\u52a1\u76f8\u5173\u6027");
            this.project[lllO1l](C, D);
            A = true
        }
        this.validTask(D, $)
    },
    validTaskProperties: function(B) {
        if (B.Name === null || B.Name === undefined) B.Name = "";
        if (isNaN(B.Duration)) B.Duration = 0;
        if (isNaN(B.Work)) B.Work = 0;
        if (isNaN(B.PercentComplete)) B.PercentComplete = 0;
        if (B.PercentComplete < 0) B.PercentComplete = 0;
        if (B.PercentComplete > 100) B.PercentComplete = 100;
        if (isNaN(B.Critical)) B.Critical = 0;
        if (isNaN(B.ConstraintType) || !B.ConstraintDate) B.ConstraintType = 0;
        if (B.ConstraintDate) {
            var _ = B.ConstraintDate;
            B.ConstraintDate = new Date(_.getFullYear(), _.getMonth(), _.getDate())
        }
        if (!mini.isDate(B.Start)) B.Start = null;
        if (!mini.isDate(B.Finish)) B.Finish = null;
        if (!mini.isDate(B.ActualStart)) B.ActualStart = null;
        if (!mini.isDate(B.ActualFinish)) B.ActualFinish = null;
        if (B.FixedDate == null) B.FixedDate = 0;
        var C = B.PredecessorLink;
        if (C && C.length > 0) for (var $ = C.length - 1; $ >= 0; $--) {
            var A = C[$];
            A.Type = parseInt(A.Type);
            A.LinkLag = parseInt(A.LinkLag);
            if (isNaN(A.LinkLag)) A.LinkLag = 0;
            if (B.Summary && (A.Type == 0 || A.Type == 2)) {
                alert("\u6458\u8981\u4efb\u52a1 (" + B.ID + ") \"" + B.Name + "\" \u7684\u524d\u7f6e\u4efb\u52a1\u5fc5\u987b\u662fFS\u6216SS");
                C.removeAt($)
            }
        }
    }
};
l1O01O.PercentComplete = function($) {
    this.project = $
};
l1O01O.PercentComplete[O010O1] = {
    syncComplete: function($) {
        this.syncParentComplete($);
        this.syncChildrenComplete($)
    },
    syncParentComplete: function(H) {
        var A = "Duration",
        K = H.UID,
        _ = this.project[oO01o1](K);
        if (_ != null && _.UID != this.project.rootTaskUID) {
            var G = _.PercentComplete,
            F = this.getChildrenAll(_),
            B = 0,
            I = 0;
            for (var D = 0,
            C = F.length; D < C; D++) {
                var $ = F[D],
                J = parseInt($[A]),
                E = parseInt($["PercentComplete"]);
                B += J;
                I += J * E / 100
            }
            _["PercentComplete"] = parseInt(I / B * 100);
            this.syncParentComplete(_);
            if (G != _.PercentComplete) this.project[oOolo0](_, "PercentComplete")
        }
    },
    syncChildrenComplete: function(G) {
        var A = "Duration",
        H = this.getChildrenAll(G),
        B = 0,
        I = 0;
        for (var E = 0,
        C = H.length; E < C; E++) {
            var _ = H[E],
            J = parseInt(_[A]);
            B += J
        }
        I = B * parseInt(G["PercentComplete"]) / 100;
        var D = B == I;
        for (E = 0, C = H.length; E < C; E++) {
            var _ = H[E],
            F = _.PercentComplete,
            J = parseInt(_[A]);
            if (I <= 0) _["PercentComplete"] = 0;
            else {
                var $ = I - J;
                if ($ >= 0) _["PercentComplete"] = 100;
                else _["PercentComplete"] = parseInt(I / J * 100);
                I = $
            }
            if (D) _["PercentComplete"] = 100;
            if (F != _.PercentComplete) this.project[oOolo0](_, "PercentComplete")
        }
        for (E = 0, C = H.length; E < C; E++) {
            _ = H[E];
            this.syncParentComplete(_)
        }
    },
    getChildrenAll: function(C) {
        var D = this.project[o1Ol1l](C, true),
        B = [];
        for (var $ = 0,
        A = D.length; $ < A; $++) {
            var _ = D[$];
            if (_.Summary == 0) B.push(_)
        }
        return B
    }
};
l1O01O.Critical = function($) {
    this.project = $
};
l1O01O.Critical[O010O1] = {
    clearCritical: function() {
        this.Tasks = this.project[O0o01o]();
        this.clearCriticalTasks(this.Tasks)
    },
    createCritical: function() {
        this.nodesField = this.project.tasks.nodesField;
        this.Tasks = this.project[O0o01o]();
        this.StartDate = this.project[Oloooo]();
        this.FinishDate = this.project[o0l1oO]();
        this.Calendar = this.project._Calendar;
        var C = this.Tasks,
        _ = {};
        for (var $ = 0,
        B = C.length; $ < B; $++) {
            var A = C[$];
            _[A.UID] = A.Critical
        }
        this.doCreateCritical();
        for ($ = 0, B = C.length; $ < B; $++) {
            A = C[$];
            if (_[A.UID] != A.Critical);
        }
    },
    doCreateCritical: function() {
        var J = this.Tasks;
        this.clearCriticalTasks(J);
        var S = this.getLastTasks(),
        L = this.getTaskChains(S);
        for (var M = 0,
        G = L.length; M < G; M++) {
            var A = L[M];
            for (var Q = 0,
            _ = A.length; Q < _; Q++) {
                var T = A[Q];
                if (T.Name == "\u786e\u5b9a\u9879\u76ee\u8303\u56f4");
                var R = T.Duration,
                H = Q + 1;
                if (0 <= H && H <= _ - 1) {
                    var K = A[H],
                    I = mini.cloneDate(K.Start),
                    O = mini.cloneDate(K.Finish);
                    if (!I || !O) continue;
                    var F = this.project[OlOlO1](T, K),
                    B = F.Type;
                    switch (B) {
                    case 0:
                        T.EarlyFinish = O;
                        T.EarlyStart = this.Calendar.getStart(T.EarlyFinish, R);
                        break;
                    case 1:
                        O.setDate(O.getDate() + 1);
                        T.EarlyStart = this.Calendar.getWorkingDate(O, true);
                        T.EarlyFinish = this.Calendar.getFinish(T.EarlyStart, R);
                        break;
                    case 2:
                        I.setDate(I.getDate() - 1);
                        T.EarlyFinish = this.Calendar.getWorkingDate(I, false);
                        T.EarlyStart = this.Calendar.getStart(T.EarlyFinish, R);
                        break;
                    case 3:
                        T.EarlyStart = I;
                        T.EarlyFinish = this.Calendar.getFinish(T.EarlyStart, R);
                        break
                    }
                } else {
                    T.EarlyStart = T.Start;
                    T.EarlyFinish = T.Finish
                }
                var $ = Q - 1;
                if (0 <= $ && $ <= _ - 1) {
                    var P = A[$],
                    N = mini.cloneDate(P.Start),
                    E = mini.cloneDate(P.Finish);
                    if (!N || !E) continue;
                    F = this.project[OlOlO1](P, T),
                    B = F.Type;
                    switch (B) {
                    case 0:
                        T.LateFinish = E;
                        T.LateStart = this.Calendar.getStart(T.LateFinish, R);
                        break;
                    case 1:
                        N.setDate(N.getDate() - 1);
                        T.LateFinish = this.Calendar.getWorkingDate(N, false);
                        T.LateStart = this.Calendar.getStart(T.LateFinish, R);
                        break;
                    case 2:
                        E.setDate(E.getDate() + 1);
                        T.LateStart = this.Calendar.getWorkingDate(E, true);
                        T.LateFinish = this.Calendar.getFinish(T.LateStart, R);
                        break;
                    case 3:
                        T.LateStart = N;
                        T.LateFinish = this.Calendar.getFinish(T.LateStart, R);
                        break
                    }
                } else {
                    T.LateStart = T.Start;
                    T.LateFinish = T.Finish
                }
            }
            for (Q = 0, _ = A.length; Q < _; Q++) {
                T = A[Q];
                if (T.Name == "\u786e\u5b9a\u9879\u76ee\u8303\u56f4");
                if (T.Critical == 1) continue;
                var C = T.EarlyStart,
                D = T.LateStart;
                if (!C || !D) continue;
                if (C[O0olo1]() >= D[O0olo1]()) T.Critical = 1;
                $ = Q - 1;
                if (0 > $ || $ > _ - 1) T.Critical = 1;
                if (T.Milestone != null && T.Milestone == 1) T.Critical = 1;
                if (T.Critical == null || T.Critical == 0) break
            }
        }
    },
    chains: null,
    chain: null,
    getTaskChains: function(B) {
        this.chains = [];
        this.chain = [];
        for (var $ = 0,
        A = B.length; $ < A; $++) {
            var _ = B[$];
            this.createTaskChain(_)
        }
        return this.chains
    },
    clearCriticalTasks: function(B) {
        for (var $ = 0,
        A = B.length; $ < A; $++) {
            var _ = B[$];
            delete _.EarlyStart;
            delete _.EarlyFinish;
            delete _.LateStart;
            delete _.LateFinish;
            _.Critical = 0
        }
    },
    createTaskChain: function(C) {
        if (C == null || C.Start == null || C.Finish == null) return;
        this.chain[o0llo1](C);
        var E = C.PredecessorLink;
        if (E != null && E.length > 0) {
            for (var $ = 0,
            B = E.length; $ < B; $++) {
                var A = E[$],
                D = this.project[oO011O](A.PredecessorUID);
                this.createTaskChain(D)
            }
        } else {
            var _ = this.chain.clone();
            this.chains[o0llo1](_)
        }
        this.chain.removeAt(this.chain.length - 1)
    },
    getLastTasks: function() {
        var D = [],
        E = this.Tasks,
        A = -1;
        for (var $ = 0,
        C = E.length; $ < C; $++) {
            var B = E[$];
            if (B == null || B.Finish == null) continue;
            var _ = B.Finish[O0olo1]();
            if (_ > A) A = _
        }
        for ($ = 0, C = E.length; $ < C; $++) {
            B = E[$];
            if (B == null || B.Finish == null) continue;
            _ = B.Finish[O0olo1]();
            if (_ == A) D[o0llo1](B)
        }
        return D
    }
};
o0ooOOView = function() {
    o0ooOOView[lOO1lo][o1lOol][lOlOo1](this)
};
O01o(o0ooOOView, Oo0l0O, {
    lOoOCls: "mini-gantt-selected",
    showLabel: false,
    oOl1oO: function() {
        this._ToolTip = new mini._GanttViewToolTip(this);
        this._DragDrop = new mini._RGanttViewDragDrop(this);
        this.ol1lll = new mini._RGanttViewSelect(this)
    },
    getItem: function($) {
        if (typeof $ == "object") $ = $._id;
        return this.owner[loO1ll]($)
    },
    getItemTop: function($) {
        var _ = this._TaskUIDs[$.ParentUID];
        return this._TaskTops[_._id]
    },
    getItemHeight: function($) {
        var A = this._TaskUIDs[$.ParentUID],
        _ = mini.isNumber(A._height) ? A._height: this.rowHeight;
        return _
    },
    getItemBox: function(_, B, D, A) {
        var C = o0ooOOView[lOO1lo][llllol].apply(this, arguments);
        C.top += 0;
        C.height = 19;
        C.bottom = C.top + C.height;
        var $ = parseInt(_.__Index);
        if (!isNaN($)) {
            C.top += ($) * this.rowHeight;
            C.height = 19;
            C.bottom = C.top + C.height;
            C.top -= 4 * $
        }
        C.y = C.top;
        return C
    },
    _OnItemDragDrop: function($, _) {
        var A = {
            item: $,
            dropNode: _,
            cancel: false
        };
        this[lOooO0]("ItemDragDrop", A);
        return A
    },
    headerCellOffset: 1,
    O00l01: function($, I, J, F, N, _) {
        var D = I.height,
        B = I.top,
        L = I.left,
        A = I.right,
        C = A - L;
        if (C < 0) return;
        if (C < 2) C = 2;
        var M = $.PercentComplete || 0,
        K = parseInt(C * M / 100);
        if (M == 0) K = 0;
        var E = "mini-gantt-item ",
        G = this[OoOOO]($, "move");
        if (!this._ReadOnly && !G.cancel) E += " mini-gantt-move ";
        var O = this.O0O11O($, I);
        if (O.itemCls) E += " " + O.itemCls + " ";
        if (O.itemHtml === null) {
            if (this[oloo11]($)) E += " " + this.lOoOCls + " ";
            var H = this.id + "$" + $._id;
            J[J.length] = "<div id=\"";
            J[J.length] = H;
            J[J.length] = "\" class=\"";
            J[J.length] = E;
            J[J.length] = "\" style=\"left:";
            J[J.length] = L;
            J[J.length] = "px;top:";
            J[J.length] = B;
            J[J.length] = "px;height:";
            J[J.length] = jQuery.boxModel ? D - 2 : D;
            J[J.length] = "px;width:";
            J[J.length] = jQuery.boxModel ? C - 2 : C;
            J[J.length] = "px;\"><div class=\"mini-gantt-itembg\"></div><div class=\"mini-gantt-percentcomplete\" style=\"width:";
            J[J.length] = K;
            J[J.length] = "px;";
            if (K == 0) J[J.length] = "display:none;";
            J[J.length] = "\"></div><div class=\"mini-gantt-text\" >";
            if (C > 10) J[J.length] = mini.isNull($.Name) ? "": $.Name;
            J[J.length] = "</div></div>"
        } else J[J.length] = O.itemHtml
    },
    l1lll: function(B, C) {
        var J = this.rowHeight,
        A = this.topTimeScale.type,
        F = this.bottomTimeScale.type,
        K = B.startRow,
        I = B.endRow,
        M = this[lllO01](B.startDate);
        this._ReadOnly = this[OO11O1]();
        var R = this[olo111](),
        T = this[O100l0](B),
        O = T.left,
        S = T.top,
        U = T.width,
        W = T.height,
        P = [],
        Q = [],
        D = this._OO0o ? this._OO0o._id: null;
        for (var G = K,
        L = I; G <= L; G++) {
            var $ = R[G];
            if (!$) continue;
            var E = $.Tasks;
            if (!E) continue;
            for (var H = 0,
            _ = E.length; H < _; H++) {
                var V = E[H];
                if (!mini.isDate(V.Start) || !mini.isDate(V.Finish) || (D && D != V._id)) continue;
                var N = this[llllol](V, O, S);
                this.O00l01(V, N, P, D, false, false);
                Q.push(V)
            }
        }
        if (C) return P.join("");
        this._createCross(Q, P, B);
        this.cellsEl.innerHTML = P.join("")
    },
    _createCross: function(D, S, C) {
        if (this.owner && this.owner.autoWrapItem == true) return;
        var W = this[O100l0](C),
        R = W.left,
        V = W.top,
        X = W.width,
        Z = W.height,
        P = {};
        for (var E = 0,
        Q = D.length; E < Q; E++) {
            var Y = D[E],
            N = Y.Start[O0olo1](),
            L = Y.Finish[O0olo1](),
            T = this[llllol](Y, R, V),
            A = T.bottom + 2;
            for (var J = 0,
            $ = D.length; J < $; J++) {
                var K = D[J];
                if (Y._id == K._id || Y.ParentUID != K.ParentUID) continue;
                var F = Y._id + "$" + K._id,
                I = K._id + "$" + Y._id;
                if (P[F] || P[I]) continue;
                var B = U = null,
                O = K.Start[O0olo1](),
                G = K.Finish[O0olo1]();
                if (N <= O && O <= L) var B = K.Start,
                U = G < L ? K.Finish: Y.Finish;
                else if (N <= O && G <= L) {
                    U = K.Finish;
                    B = O > N ? K.Start: Y.Start
                }
                if (B) {
                    P[F] = 1;
                    P[I] = 1;
                    var H = this[lllO01](B) - R,
                    M = this[lllO01](U) - R,
                    _ = M - H;
                    S[S.length] = "<div class=\"mini-gantt-cross\" style=\"left:" + H + "px;top:" + A + "px;width:" + _ + "px;\"></div>"
                }
            }
        }
    },
    setData: function($) {
        this.lOlll = [];
        this.idSelecteds = {};
        return o0ooOOView[lOO1lo][O0OOlO][lOlOo1](this, $)
    },
    lOoO: null,
    lOlll: null,
    idSelecteds: null,
    getSelecteds: function() {
        return this.lOlll
    },
    getSelected: function() {
        return this.lOoO
    },
    isSelected: function($) {
        return this.idSelecteds[$._id]
    },
    select: function($) {
        this[Oo11O]([$])
    },
    deselect: function($) {
        this[ll1o00]([$])
    },
    selectAll: function() {
        this[Oo11O](this.lOlll)
    },
    deselectAll: function() {
        this[ll1o00](this.lOlll)
    },
    selects: function(C) {
        if (!C || C.length == 0) return;
        C = C.clone();
        for (var $ = 0,
        B = C.length; $ < B; $++) {
            var A = C[$];
            if (!this[oloo11](A)) {
                this.lOlll.push(A);
                this.idSelecteds[A._id] = A;
                var _ = document.getElementById(this.id + "$" + A._id);
                if (_) l1ll1O(_, this.lOoOCls)
            }
        }
        this[lOooO0]("selectionchanged")
    },
    deselects: function(C) {
        if (!C || C.length == 0) return;
        C = C.clone();
        for (var $ = 0,
        B = C.length; $ < B; $++) {
            var A = C[$];
            if (this[oloo11](A)) {
                this.lOlll.remove(A);
                delete this.idSelecteds[A._id];
                var _ = document.getElementById(this.id + "$" + A._id);
                if (_) lOolO(_, this.lOoOCls)
            }
        }
        if (this.lOoO && !this[oloo11](this.lOoO)) this.lOoO = null;
        this[lOooO0]("selectionchanged")
    }
});
mini._RGanttViewDragDrop = function($) {
    mini._RGanttViewDragDrop[lOO1lo][o1lOol][lOlOo1](this, $)
};
O01o(mini._RGanttViewDragDrop, mini._GanttViewDragDrop, {
    renderoOOoo0: function() {
        var J = this.owner;
        if (!J.allowDrag || J[OO11O1]()) return;
        var C = J.viewRegion,
        L = J[O100l0](C),
        G = L.left,
        M = L.top,
        O = L.width,
        R = L.height,
        K = J[olo111](),
        D = C.startRow,
        B = C.endRow,
        H = [];
        for (var I = D,
        E = B; I <= E; I++) {
            var $ = K[I];
            if (!$) continue;
            var F = $.Tasks;
            if (!F) continue;
            for (var N = 0,
            _ = F.length; N < _; N++) {
                var P = F[N],
                A = J[llllol](P, G, M);
                this.renderItemoOOoo0(P, A, H)
            }
        }
        var Q = "<div>" + H.join("") + "</div>";
        mini.append(J.cellsEl, Q)
    },
    _BeforeDragMove: function($, A) {
        var _ = this.owner[OoOOO]($, "move");
        if (!_.cancel) this.getDrag().start(A);
        this.allowDragUpdown = _.dragUpdown
    },
    O0lO00: function(A) {
        var _ = this.owner,
        $ = this.dragItem;
        this.viewBox = _[O100l0](_.viewRegion);
        var D = _[llllol]($);
        this.MoveOffset = D.left - A.init[0];
        this.timeSpan = $.Finish - $.Start;
        this.itemBox = D;
        if (this.dragAction != "percentcomplete") {
            var C = document.getElementById(_.id + "$" + $._id),
            B = O101o(C);
            this.barBox = B;
            this.proxy = mini.append(document.body, "<div class='mini-gantt-proxy'></div>");
            oOo10l(this.proxy, B);
            oOO1l(this.proxy, "mousewheel",
            function(A, $) {
                _.o1o1(A, $)
            },
            this)
        }
        this.dragIcon = mini.append(document.body, "<div class='mini-gantt-dragicon'></div>")
    },
    O1l1l: function(_) {
        var F = this.owner,
        $ = this.dragItem,
        G = this.viewBox,
        J = F[OOoo0O](),
        C = _.now[0] - _.init[0],
        A = _.now[1] - _.init[1];
        switch (this.dragAction) {
        case "start":
            var B = F[O0O010](_.now[0]);
            $.Start = B;
            var K = this.barBox.x + C;
            mini.setX(this.proxy, K);
            ol1Olo(this.proxy, this.barBox.right - K);
            break;
        case "finish":
            B = F[O0O010](_.now[0]);
            $.Finish = B;
            if ($.Start > $.Finish) $.Finish = $.Start;
            ol1Olo(this.proxy, this.barBox.width + C);
            break;
        case "percentcomplete":
            var E = this.itemBox.width,
            D = _.now[0] - J.x + G.left - this.itemBox.x,
            H = parseInt(D * 100 / E);
            if (H < 0) H = 0;
            if (H > 100) H = 100;
            $.PercentComplete = H;
            setTimeout(function() {
                F.OO0o($, false)
            },
            10);
            break;
        case "move":
            D = _.now[0] + this.MoveOffset,
            B = F[l0OOlO](D);
            $.Start = B;
            $.Finish = new Date(B[O0olo1]() + this.timeSpan);
            var K = this.barBox.x + C,
            I = this.barBox.y + A;
            mini.setX(this.proxy, K);
            if (this.allowDragUpdown) mini.setY(this.proxy, I);
            break;
        case "link":
            break
        }
        var L = F[Oloo1o]($, _, this.dragAction);
        if (this.dragAction == "move" && this.allowDragUpdown) {
            this.dropNode = F.o10OOO(_.now[1]);
            L = F[o000ol](this.dragItem, this.dropNode);
            if (L.cancel) {
                this.dragIcon.style.display = "block";
                mini[l0lO1l](this.dragIcon, _.now[0] + 8, _.now[1] + 13)
            } else this.dragIcon.style.display = "none"
        }
    },
    _OnItemDragComplete: function(_) {
        var A = this.owner,
        $ = this.dragItem;
        if (!this.allowDragUpdown) this.dropNode = null;
        A[lOl0O1](this.dragItem, this.dragAction, _, this.dropNode)
    },
    stopDrag: function(A) {
        var _ = this.owner,
        $ = this.dragItem;
        if (A == false) _[looOl1]();
        this.dragItem = this.originalItem = this.dragAction = null;
        if (this.proxy) {
            mini[Ol00oo](this.proxy);
            this.proxy = null
        }
        if (this.dragIcon) {
            mini[Ol00oo](this.dragIcon);
            this.dragIcon = null
        }
    }
});
mini._RGanttViewSelect = function($) {
    this.gantt = $;
    oOO1l($.el, "mousedown", this.__OnGanttMouseDown, this)
};
mini._RGanttViewSelect[O010O1] = {
    __OnGanttMouseDown: function(B) {
        var A = B.target,
        _ = this.gantt;
        if (_[OO11O1]()) return;
        mini.selectable(A, false);
        var $ = _.l0o0(B);
        if (!$) return;
        if (B.ctrlKey) {
            _.lOoO = $;
            _[ololO1]($)
        } else {
            _[o1O1o0]();
            _.lOoO = $;
            _[ololO1]($)
        }
    }
};
o0ooOO = function() {
    o0ooOO[lOO1lo][o1lOol][lOlOo1](this);
    this.data = {
        Calendar: this[oollo1](),
        Resources: []
    };
    this.rootTaskUID = -1;
    this._NodesUIDs = {};
    this._TasksUIDs = {};
    this._TasksIDs = {}
};
o0ooOO.TaskID = 1;
O01o(o0ooOO, OOo01l, {
    autoWrapItem: true,
    OrderType: "day",
    panel1Width: 180,
    collapsePanel: 1,
    allowMove: false,
    headerHeight: 44,
    rowHeight: 28,
    columnWidth: 100,
    tableWidth: "50%",
    splitWidth: 4,
    minViewWidth: 100,
    treeColumn: null,
    columns: null,
    readOnly: false,
    allowDragDrop: false,
    multiSelect: false,
    showGridLines: true,
    timeLines: null,
    showTableView: true,
    showGanttView: true,
    allowResize: true,
    uiCls: "mini-rgantt mini-gantt"
});
OoOo = o0ooOO[O010O1];
OoOo[O0oO0l] = olo0O;
OoOo[OlO010] = loo0O;
OoOo[ll10l0] = l00Ol;
OoOo[O11o1o] = o011ll;
OoOo[O0O01o] = OoO0o;
OoOo[ll0Oll] = O01Oo0;
OoOo[O1Olol] = OOOl0;
OoOo[ll1o00] = loo01;
OoOo[Oo11O] = O1Olo;
OoOo[o1O1o0] = llloo;
OoOo[Ooo1OO] = ollO;
OoOo[o1o001] = l00O;
OoOo[ololO1] = oo1l0;
OoOo[oloo11] = O0o1o;
OoOo[l1OOlO] = o0lolO;
OoOo[O1oll] = Ol100;
OoOo[l11OOl] = O0lO;
OoOo[o001lo] = l00OTask;
OoOo[o0OooO] = oo1l0Task;
OoOo[l0OoOo] = l00OTasks;
OoOo[lOO0o0] = oo1l0Tasks;
OoOo[o111Oo] = lllooTasks;
OoOo[ooOO00] = ollOTasks;
OoOo[o1lolo] = Ol100Task;
OoOo[ol10oO] = Ol100Tasks;
OoOo[OloOoo] = O0o1oTask;
OoOo[lo0O00] = o10oo;
OoOo[lO1lol] = ll1000;
OoOo[ooO00o] = oo111;
OoOo[o10lo] = o100ll;
OoOo[l0O001] = Oo10O;
OoOo[lOloOO] = oOo01;
OoOo[ooOOol] = ol1l1;
OoOo[ll0o01] = oOo00;
OoOo[l1olOo] = ooolOo;
OoOo[OO01lO] = OoO1;
OoOo[oo1011] = ol10o;
OoOo[ll11O1] = OO0l;
OoOo[O00OO0] = O1l1o;
OoOo[loo0Ol] = ll0Oo;
OoOo[ll0o0l] = o11o;
OoOo[oO1l0o] = o1OlO;
OoOo[O0O0oo] = olo00o;
OoOo[OO000O] = o0O10;
OoOo[OOl0O0] = olO0o;
OoOo[OO0Olo] = o0O10Level;
OoOo[o01ol1] = olO0oLevel;
OoOo[lo110o] = o01l;
OoOo[oo1OOO] = O10O;
OoOo[Oo1l1o] = O0oOo;
OoOo[O11l1o] = ol0l1;
OoOo[llll0l] = o10oO;
OoOo[llOl1o] = lloO1;
OoOo[loO1ll] = oo11lO;
OoOo[oO011O] = OO111l;
OoOo[l101OO] = llo1;
OoOo[oollo1] = O0o11;
OoOo.o100O = OOoOl;
OoOo[loo00l] = loooOo;
OoOo[oOOlO1] = Oolo1;
OoOo[lo1ool] = O00lo;
OoOo[Ol1Oo1] = oO11l1;
OoOo[oO0001] = olOll;
OoOo[l0100] = lool;
OoOo[ooollo] = ooOOl0;
OoOo[oolO1o] = l00OoO;
OoOo[O1101l] = oo0oo;
OoOo[O1lOO0] = loO00;
OoOo[l0llO0] = l1o1o1;
OoOo[ool1oo] = oOl0l;
OoOo[Oo1O11] = oO11o;
OoOo[loo00l] = loooOo;
OoOo[l0l001] = o0ol1;
OoOo[O0oooo] = ol1lOo;
OoOo[O0lOl0] = OO11o;
OoOo[oo1OlO] = llo1List;
OoOo[oO00ol] = llo1Tree;
OoOo[o1010o] = o1l01l;
OoOo[oOOOll] = lO10l1;
OoOo[O11llO] = l110O;
OoOo[oO010l] = lll1l;
OoOo[o0olo0] = l0llo;
OoOo.l10ll = OlllOo;
OoOo.l111O1 = o1l111;
OoOo.oo1oOo = lOO1;
OoOo.OOOl1l = ol110;
OoOo[l1O011] = oo0l;
OoOo.oOO1Oo = Ol0110;
OoOo.oo11 = OolO;
OoOo.lo100 = O1Ooo;
OoOo[oloOoo] = ooolo;
OoOo.O0OOo0 = OoOOo1;
OoOo.Ol00 = OOllo;
OoOo[lO0l01] = llo0O0;
OoOo[O0ol11] = Oo1ol;
OoOo[looOl1] = o1o10;
oloo(o0ooOO, "rgantt");
MyRGantt = o0ooOO;
PlusRGantt = o0ooOO;
lOO00o = function() {
    lOO00o[lOO1lo][o1lOol][lOlOo1](this);
    new l1O01O(this);
    this[oOOlO1]("Name")
};
O01o(lOO00o, Oo10o1, {
    allowProjectDateRange: true,
    allowSummaryLink: true,
    allowSyncComplete: true,
    showCriticalPath: false,
    allowOrderProject: true,
    autoSyncSummary: false,
    _orderModel: "",
    _FastModel: false,
    _doFast: false
});
l01o0l = lOO00o[O010O1];
l01o0l[oOO0l0] = o00l1O;
l01o0l.O1o101 = o1lo0;
l01o0l[o10lo] = OOO0O;
l01o0l[O01o10] = l1lolO;
l01o0l[l01O00] = OlloO;
l01o0l[olll0O] = olOO;
l01o0l[o1O10l] = l0lll;
l01o0l[lOo0l0] = oOoOl;
l01o0l[OOoOo0] = O00oo;
l01o0l[l1l10O] = oOool0;
l01o0l[o1010o] = l000lO;
l01o0l[oOOOll] = O10l1l;
l01o0l.Oll0l = oOOo1;
l01o0l.o10l = oo0lO;
l01o0l[O11llO] = o0llOl;
l01o0l[oll101] = loOo0;
l01o0l.O10oo = lo1O1;
l01o0l.oo101O = O1lO0;
l01o0l[o10ll] = ol11o;
l01o0l[O10loo] = oO0Ol;
l01o0l[oo00l1] = o11lo;
oloo(lOO00o, "project");
MyProject = lOO00o;
PlusProject = lOO00o;
lOO00o.IDColumn = function($) {
    return mini.copyTo({
        name: "ID",
        header: "",
        field: "ID",
        width: 30,
        cellCls: "mini-indexcolumn",
        align: "center",
        allowDrag: true,
        cellStyle: "cursor:move;"
    },
    $)
};
lOO00o.NameColumn = function($) {
    return mini.copyTo({
        name: "Name",
        header: Oo10o1.Name_Text,
        field: "Name",
        width: 200,
        editor: {
            type: "textbox"
        },
        renderer: function(_) {
            var $ = mini.htmlEncode(_.value);
            if (_.record.Summary) return "<b>" + $ + "</b>";
            return $
        }
    },
    $)
};
lOO00o.PercentCompleteColumn = function($) {
    return mini.copyTo({
        name: "PercentComplete",
        header: Oo10o1.PercentComplete_Text,
        field: "PercentComplete",
        width: 60,
        editor: {
            type: "spinner",
            minValue: 0,
            maxValue: 100
        }
    },
    $)
};
lOO00o.PredecessorLinkColumn = function($) {
    return mini.copyTo({
        name: "PredecessorLink",
        header: Oo10o1.PredecessorLink_Text,
        field: "PredecessorLink",
        editor: {
            type: "textbox"
        },
        renderer: function(B) {
            var $ = B.source,
            _ = $.owner,
            A = B.value;
            return _[lOlolo](A)
        },
        oncellbeginedit: function(B) {
            var $ = B.source,
            _ = $.owner,
            A = B.value;
            B.value = _[lOlolo](A)
        }
    },
    $)
};
lOO00o.DurationColumn = function($) {
    return mini.copyTo({
        name: "Duration",
        header: Oo10o1.Duration_Text,
        field: "Duration",
        width: 60,
        editor: {
            type: "spinner",
            minValue: 0,
            maxValue: 10000
        }
    },
    $)
};
lOO00o.WorkColumn = function($) {
    return mini.copyTo({
        name: "Work",
        header: Oo10o1.Work_Text,
        field: "Work",
        width: 60,
        editor: {
            type: "spinner",
            minValue: 0,
            maxValue: 10000
        }
    },
    $)
};
lOO00o.StartColumn = function($) {
    return mini.copyTo({
        name: "Start",
        header: Oo10o1.Start_Text,
        field: "Start",
        renderer: function(_) {
            var $ = _.value;
            if ($) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate();
            else return ""
        },
        editor: {
            type: "datepicker"
        }
    },
    $)
};
lOO00o.FinishColumn = function($) {
    return mini.copyTo({
        name: "Finish",
        header: Oo10o1.Finish_Text,
        field: "Finish",
        renderer: function(_) {
            var $ = _.value;
            if ($) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate();
            else return ""
        },
        editor: {
            type: "datepicker"
        }
    },
    $)
};
lOO00o.PriorityColumn = function($) {
    return mini.copyTo({
        name: "Priority",
        header: Oo10o1.Priority_Text,
        field: "Priority",
        width: 60,
        editor: {
            type: "spinner",
            minValue: 0,
            maxValue: 1000
        }
    },
    $)
};
lOO00o.WeightColumn = function($) {
    return mini.copyTo({
        name: "Weight",
        header: Oo10o1.Weight_Text,
        field: "Weight",
        width: 60,
        editor: {
            type: "spinner",
            minValue: 0,
            maxValue: 100
        }
    },
    $)
};
lOO00o.OutlineNumberColumn = function($) {
    return mini.copyTo({
        header: Oo10o1.OutlineNumber_Text,
        field: "OutlineNumber",
        width: 150
    },
    $)
};
lOO00o.OutlineLevelColumn = function($) {
    return mini.copyTo({
        name: "OutlineLevel",
        header: Oo10o1.OutlineLevel_Text,
        field: "OutlineLevel",
        width: 80
    },
    $)
};
lOO00o.ActualStartColumn = function($) {
    return mini.copyTo({
        name: "ActualStart",
        header: Oo10o1.ActualStart_Text,
        field: "ActualStart",
        renderer: function(_) {
            var $ = _.value;
            if ($) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate();
            else return ""
        },
        editor: {
            type: "datepicker"
        }
    },
    $)
};
lOO00o.ActualFinishColumn = function($) {
    return mini.copyTo({
        name: "ActualFinish",
        header: Oo10o1.ActualFinish_Text,
        field: "ActualFinish",
        renderer: function(_) {
            var $ = _.value;
            if ($) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate();
            else return ""
        },
        editor: {
            type: "datepicker"
        }
    },
    $)
};
lOO00o.WBSColumn = function($) {
    return mini.copyTo({
        name: "WBS",
        header: Oo10o1.WBS_Text,
        field: "WBS",
        width: 150,
        editor: {
            type: "textbox"
        }
    },
    $)
};
lOO00o.ConstraintTypeColumn = function($) {
    return mini.copyTo({
        name: "ConstraintType",
        header: Oo10o1.ConstraintType_Text,
        field: "ConstraintType",
        width: 120,
        editor: {
            type: "combobox",
            valueField: "ID",
            displayField: "Name",
            data: Oo10o1.ConstraintType.clone()
        },
        renderer: function(B) {
            var $ = B.source,
            _ = $.owner,
            A = Oo10o1.ConstraintType[B.value];
            return A ? A.Name: ""
        }
    },
    $)
};
lOO00o.ConstraintDateColumn = function($) {
    return mini.copyTo({
        name: "ConstraintDate",
        header: Oo10o1.ConstraintDate_Text,
        field: "ConstraintDate",
        renderer: function(_) {
            var $ = _.value;
            if ($) return $.getFullYear() + "-" + ($.getMonth() + 1) + "-" + $.getDate();
            else return ""
        },
        editor: {
            type: "datepicker"
        }
    },
    $)
};
lOO00o.DepartmentColumn = function($) {
    return mini.copyTo({
        name: "Department",
        header: Oo10o1.Department_Text,
        field: "Department",
        width: 120,
        editor: {
            type: "combobox",
            valueField: "UID",
            displayField: "Name"
        },
        renderer: function(J) {
            var $ = J.source,
            G = $.owner,
            F = G.data.Departments || [],
            I = [],
            A = String(J.value),
            C = mini.isArray(A) ? A: A.split(",");
            for (var E = 0,
            D = C.length; E < D; E++) {
                A = C[E];
                for (var H = 0,
                B = F.length; H < B; H++) {
                    var _ = F[H];
                    if (_.UID == A) {
                        I.push(_.Name);
                        break
                    }
                }
            }
            return I.join(",")
        },
        oncellbeginedit: function(B) {
            var $ = B.source,
            A = $.owner,
            _ = A.data.Departments || [];
            B.editor[Ol1l0l](_)
        }
    },
    $)
};
lOO00o.PrincipalColumn = function($) {
    return mini.copyTo({
        name: "Principal",
        header: Oo10o1.Principal_Text,
        field: "Principal",
        width: 150,
        editor: {
            type: "combobox",
            valueField: "UID",
            displayField: "Name",
            multiSelect: true,
            showCheckIcon: true
        },
        renderer: function(J) {
            var $ = J.source,
            G = $.owner,
            F = G.data.Principals || [],
            I = [],
            A = String(J.value),
            C = mini.isArray(A) ? A: A.split(",");
            for (var E = 0,
            D = C.length; E < D; E++) {
                A = C[E];
                for (var H = 0,
                B = F.length; H < B; H++) {
                    var _ = F[H];
                    if (_.UID == A) {
                        I.push(_.Name);
                        break
                    }
                }
            }
            return I.join(",")
        },
        oncellbeginedit: function(B) {
            var $ = B.source,
            A = $.owner,
            _ = A.data.Principals || [];
            B.editor[Ol1l0l](_)
        }
    },
    $)
};
lOO00o.AssignmentsColumn = function($) {
    return mini.copyTo({
        name: "Assignments",
        header: Oo10o1.Assignments_Text,
        field: "Assignments",
        width: 150,
        renderer: function(H) {
            var $ = H.source,
            E = $.owner,
            F = [],
            C = H.value;
            if (C) for (var _ = 0,
            G = C.length; _ < G; _++) {
                var B = C[_],
                A = B.ResourceUID,
                D = E[o1O10l](A);
                if (D) F.push(D.Name)
            }
            return F.join(",")
        }
    },
    $)
};
lOO00o.Critical2Column = function($) {
    return mini.copyTo({
        name: "Critical2",
        header: "\u5173\u952e\u4efb\u52a1\uff08\u624b\u52a8\uff09",
        field: "Critical2",
        width: 80,
        type: "checkboxcolumn",
        trueValue: 1,
        falseValue: 0
    },
    $)
};
lOO00o.CriticalColumn = function($) {
    return mini.copyTo({
        name: "Critical",
        header: Oo10o1.Critical_Text,
        field: "Critical",
        width: 80,
        type: "checkboxcolumn",
        trueValue: 1,
        falseValue: 0,
        readOnly: true
    },
    $)
};
l1O01O.Order = function($) {
    this.project = $
};
l1O01O.Order[O010O1] = {
    isFixedDate: function(_) {
        var $ = _[this.nodesField];
        return _.FixedDate && _.FixedDate != 0 && ($ && $.length > 0)
    },
    Tasks: [],
    addDate: function(_, $) {
        return new Date(_.getFullYear(), _.getMonth(), _.getDate() + $, _.getHours(), _.getMinutes(), _.getSeconds())
    },
    Ol11ll: function() {
        var G = this.Tasks;
        if (G == null) return;
        for (var _ = 0,
        F = G.length; _ < F; _++) {
            var B = G[_];
            B.SuccessorTasks = [];
            delete B.__orderTime;
            B["Conflict"] = 0
        }
        for (_ = 0, F = G.length; _ < F; _++) {
            var B = G[_],
            $ = B.PredecessorLink;
            if ($ != null && $.length > 0) for (var C = 0,
            A = $.length; C < A; C++) {
                var D = $[C],
                E = this.project[oO011O](D.PredecessorUID);
                if (E != null) E.SuccessorTasks.push(B)
            }
        }
    },
    ol011: function() {
        var B = this.Tasks;
        for (var $ = 0,
        A = B.length; $ < A; $++) {
            var _ = B[$];
            delete _.SuccessorTasks;
            delete _.__orderTime
        }
    },
    l0Ooo0: function($) {},
    l0l0: function(B) {
        this._TaskUIDs = this.project._TaskUIDs;
        this.nodesField = this.project.tasks.nodesField;
        this.Tasks = this.project[O0o01o]();
        this.StartDate = this.project[Oloooo]();
        this.FinishDate = this.project[o0l1oO]();
        this.Calendar = this.project._Calendar;
        var D = this.Tasks,
        I = this.forTasks = {};
        this.ancestorTasks = {};
        this.limitDates = {};
        var $ = {};
        for (var F = 0,
        C = D.length; F < C; F++) {
            var K = D[F];
            $[K.UID] = {
                Start: K.Start,
                Finish: K.Finish,
                Duration: K.Duration,
                Work: K.Work,
                Summary: K.Summary
            };
            I[K.UID] = 1;
            var G = this.project[Oollo0](K);
            G.reverse();
            this.ancestorTasks[K.UID] = G
        }
        this.Ol11ll();
        this.orderCount = 0;
        var J = new Date();
        for (F = 0, C = D.length; F < C; F++) {
            K = D[F];
            if (K.OutlineLevel == 1) {
                delete I[K.UID];
                this.O011(K)
            }
        }
        this.l01ll();
        this.ol011();
        this.ancestorTasks = {};
        this.limitDates = {};
        for (F = 0, C = D.length; F < C; F++) {
            var K = D[F],
            H = $[K.UID],
            M = H.Start,
            _ = H.Finish,
            L = H.Duration,
            E = H.Work,
            A = H.Summary;
            if ((!M && K.Start) || (M && !K.Start) || (M && K.Start && M[O0olo1]() != K.Start[O0olo1]())) this.project[oOolo0](K, "Start");
            if ((!_ && K.Finish) || (_ && !K.Finish) || (_ && K.Finish && _[O0olo1]() != K.Finish[O0olo1]())) this.project[oOolo0](K, "Finish");
            if (L != K.Duration) this.project[oOolo0](K, "Duration");
            if (E != K.Work) this.project[oOolo0](K, "Work");
            if (A != K.Summary) this.project[oOolo0](K, "Summary")
        }
    },
    O011: function(C, _) {
        if (this.forTasks[C.UID]) return;
        if (C.Summary == 0 && (C.Start == null || C.Finish == null)) {
            C.__orderTime = "ordered";
            return
        }
        _ = this.StartDate;
        var A = this.getAllPredecessorLinks(C);
        if (A != null && A.length > 0) {
            var $ = this.o10o(C);
            if ($ != null) _ = $
        }
        if (!C.Start || _[O0olo1]() != C.Start[O0olo1]()) if (this.isFixedDate(C));
        else {
            C.Start = this.Calendar.getWorkingDate(_, true);
            C.Finish = this.Calendar.getFinish(C.Start, C.Duration)
        }
        this.Oo1lO(C);
        var B = (C.Start ? C.Start[O0olo1]() : "") + "-" + (C.Finish ? C.Finish[O0olo1]() : "");
        if (C.__orderTime != B) {
            C.__orderTime = B;
            if (C.SuccessorTasks.length > 0) this.OlO1(C);
            var D = C[this.nodesField];
            if (D) this.ll1O(C)
        }
    },
    ll1O: function(B) {
        var C = B[this.nodesField];
        if (C == null) return;
        for (var $ = 0,
        A = C.length; $ < A; $++) {
            var _ = C[$];
            delete this.forTasks[_.UID];
            this.O011(_)
        }
    },
    OlO1: function(B) {
        var $ = B.SuccessorTasks;
        if (!$) return;
        for (var _ = $.length - 1; _ >= 0; _--) {
            var A = $[_];
            this.O011(A)
        }
    },
    getAllPredecessorLinks: function(C) {
        var D = (C.PredecessorLink || []).clone(),
        _ = this.ancestorTasks[C.UID];
        for (var $ = 0,
        B = _.length; $ < B; $++) {
            var A = _[$];
            if (this.isFixedDate(A) == false && A.PredecessorLink) D.addRange(A.PredecessorLink)
        }
        return D
    },
    o10o: function(G) {
        var H = null,
        A = this.getAllPredecessorLinks(G);
        if (A == null || A.length == 0) return H;
        var F = G.Duration;
        for (var D = 0,
        C = A.length; D < C; D++) {
            var B = A[D],
            $ = this._TaskUIDs[B.PredecessorUID];
            if ($ == null) continue;
            if (!$.__orderTime) return null;
            if ($.Summary != 0) this.orderSummary($);
            var _ = $.Start,
            E = $.Finish,
            J = $.Duration;
            if (!_ || !E) continue;
            switch (B.Type) {
            case 0:
                _ = this.Calendar.getStart(E, F);
                break;
            case 1:
                _ = this.Calendar.getWorkingDate(this.addDate(E, 1), true);
                break;
            case 2:
                E = this.Calendar.getWorkingDate(this.addDate(_, -1), false);
                _ = this.Calendar.getStart(E, F);
                break;
            case 3:
                _ = _;
                break
            }
            var I = B.LinkLag || 0;
            if (I != 0) _ = this.Calendar.getWorkingStartDate(_, I);
            if (H == null || H[O0olo1]() < _[O0olo1]()) H = _
        }
        return H
    },
    Oo1lO: function(J) {
        if (J.Start == null || J.Finish == null) return;
        var _ = J.Start,
        H = J.Finish,
        L = J.Duration,
        G = J.ConstraintDate,
        A = parseInt(J.ConstraintType);
        if (A != 0 && A != 1 && G == null);
        else switch (A) {
        case 0:
            break;
        case 1:
            break;
        case 2:
            _ = this.Calendar.getWorkingDate(G, true);
            break;
        case 3:
            H = this.Calendar.getWorkingDate(G, false);
            _ = this.Calendar.getStart(H, L);
            break;
        case 4:
            if (_[O0olo1]() < G[O0olo1]()) _ = this.Calendar.getWorkingDate(G, true);
            break;
        case 5:
            if (_[O0olo1]() > G[O0olo1]()) {
                _ = this.Calendar.getWorkingDate(G, false);
                _ = mini.clearTime(_)
            }
            break;
        case 6:
            var C = mini.clearTime(H);
            if (C[O0olo1]() < G[O0olo1]()) {
                H = this.Calendar.getWorkingDate(G, true);
                H = new Date(H.getFullYear(), H.getMonth(), H.getDate(), 23, 59, 59);
                _ = this.Calendar.getStart(H, L)
            }
            break;
        case 7:
            var E = mini.clearTime(H);
            if (E[O0olo1]() > G[O0olo1]()) {
                H = this.Calendar.getWorkingDate(G, false);
                _ = this.Calendar.getStart(H, L)
            }
            break
        }
        H = this.Calendar.getFinish(_, L);
        var $ = this.oll001(J),
        K = $.Start,
        D = $.Finish;
        if (_[O0olo1]() < K[O0olo1]()) _ = K;
        if (H[O0olo1]() > D[O0olo1]()) {
            H = D;
            _ = this.Calendar.getStart(H, L);
            if (_[O0olo1]() < K[O0olo1]()) {
                J.Duration = L = this.Calendar.getWorkingDays(K, H);
                _ = K
            }
        }
        if (_ != null && H != null) if (J.Start == null || J.Finish == null || J.Start[O0olo1]() != _[O0olo1]() || J.Finish[O0olo1]() != H[O0olo1]()) {
            var B = J.Start,
            I = J.Finish;
            J.Start = this.Calendar.getWorkingDate(_, true);
            J.Finish = this.Calendar.getFinish(J.Start, L);
            var F = J.PredecessorLink;
            if (F != null && F.length > 0) {
                J.Conflict = 1;
                if (J.Start[O0olo1]() >= B[O0olo1]()) J.Conflict = 0
            }
        }
        if (G && J.Start && J.Finish) switch (A) {
        case 0:
            break;
        case 1:
            break;
        case 2:
            if (J.Start[O0olo1]() != G[O0olo1]()) J.Conflict = 1;
            break;
        case 3:
            break;
        case 4:
            if (J.Start[O0olo1]() < G[O0olo1]()) J.Conflict = 1;
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            break
        }
    },
    minDate: new Date(1900, 0, 1),
    maxDate: new Date(9999, 0, 1),
    oll001: function(J) {
        var I = this.limitDates[J.UID];
        if (I) return I;
        var _ = this.minDate,
        H = this.maxDate,
        E = this.ancestorTasks[J.UID];
        for (var F = 0,
        D = E.length; F < D; F++) {
            var C = E[F],
            A = C.FixedDate;
            if (A != 0 && C.Start != null && C.Finish != null) {
                _ = C.Start;
                H = C.Finish;
                break
            } else {
                var G = mini.clearTime(C.ConstraintDate),
                B = parseInt(C.ConstraintType);
                if (B != 0 && B != 1 && G == null) continue;
                switch (B) {
                case 0:
                    break;
                case 4:
                    _ = this.Calendar.getWorkingDate(G, true);
                    break;
                case 7:
                    H = this.Calendar.getWorkingDate(G, false);
                    break
                }
            }
        }
        var $ = {
            Start: _,
            Finish: H
        };
        this.limitDates[J.UID] = $;
        return $
    },
    l01ll: function() {
        var $ = this.project.tasks.root[this.nodesField];
        this.ll00l($)
    },
    orderSummary: function($) {
        this.ll00l([$])
    },
    ll00l: function(E) {
        var A = null,
        C = null,
        G = 0;
        for (var H = 0,
        F = E.length; H < F; H++) {
            var K = E[H],
            $ = K[this.nodesField];
            if ($ != null && $.length > 0) {
                var D = this.ll00l($),
                L = D.Start,
                _ = D.Finish;
                if (K.FixedDate == 0 && L && _) {
                    K.Work = D.Work;
                    K.Start = L;
                    K.Finish = _
                }
                if (K.Start && K.Finish) K.Duration = this.Calendar.getWorkingDays(K.Start, K.Finish);
                this.Oo1lO(K)
            }
            if (K.Start != null && K.Finish != null) {
                var B = K.Start,
                I = K.Finish;
                if (A == null || A[O0olo1]() > B[O0olo1]()) A = mini.cloneDate(B);
                if (C == null || C[O0olo1]() < I[O0olo1]()) C = mini.cloneDate(I)
            }
            if (!isNaN(K.Work)) G += parseInt(K.Work)
        }
        var J = {
            Start: A,
            Finish: C,
            Work: G
        };
        return J
    }
};
mini.RadioButtonList = o1O0oo,
mini.ValidatorBase = lOOO0o,
mini.AutoComplete = lll1oO,
mini.CheckBoxList = O1oOo1,
mini.DataBinding = oO10Ol,
mini.OutlookTree = OllO0o,
mini.OutlookMenu = oo100l,
mini.TextBoxList = oO1lol,
mini.TimeSpinner = lo1OO0,
mini.ListControl = o0ol1O,
mini.PagerGantt = o1O1O0,
mini.OutlookBar = ol01oo,
mini.FileUpload = OlOo0l,
mini.TreeSelect = lll0ll,
mini.DatePicker = lo1lo1,
mini.ButtonEdit = oolOl1,
mini.MenuButton = OO1l01,
mini.GanttView = Oo0l0O,
mini.SuperTree = O0lo1l,
mini.SuperGrid = O0lO0l,
mini.PopupEdit = l1ll1o,
mini.Component = O101ol,
mini.TreeGrid = lll1ll,
mini.DataGrid = l11ol0,
mini.MenuItem = OOl0l1,
mini.Splitter = OOo01l,
mini.HtmlFile = O10OOo,
mini.Calendar = OOo100,
mini.ComboBox = o1OO1o,
mini.TextArea = Olooo1,
mini.Password = OOo000,
mini.CheckBox = Oo0l0o,
mini.Project = lOO00o,
mini.DataSet = o1l1Ol,
mini.Include = lOOllo,
mini.Spinner = ooOloo,
mini.ListBox = oo000o,
mini.TextBox = l110o1,
mini.Control = o0oo1l,
mini.RGantt = o0ooOO,
mini.Layout = o0OOlO,
mini.Window = O1O01l,
mini.Lookup = lo11ll,
mini.Button = l0O0oO,
mini.Hidden = lO1OOO,
mini.Gantt = Oo10o1,
mini.Pager = l0O1lO,
mini.Panel = OOO0ll,
mini.Popup = OOo010,
mini.Tree = l0O1O0,
mini.Menu = o1lOOO,
mini.Tabs = lo000O,
mini.Fit = oO01oO,
mini.Box = olllo0;
mini.locale = "zh_CN";
mini.dateInfo = {
    monthsLong: ["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"],
    monthsShort: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
    daysLong: ["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"],
    daysShort: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"],
    quarterLong: ["\u4e00\u5b63\u5ea6", "\u4e8c\u5b63\u5ea6", "\u4e09\u5b63\u5ea6", "\u56db\u5b63\u5ea6"],
    quarterShort: ["Q1", "Q2", "Q2", "Q4"],
    halfYearLong: ["\u4e0a\u534a\u5e74", "\u4e0b\u534a\u5e74"],
    patterns: {
        "d": "yyyy-M-d",
        "D": "yyyy\u5e74M\u6708d\u65e5",
        "f": "yyyy\u5e74M\u6708d\u65e5 H:mm",
        "F": "yyyy\u5e74M\u6708d\u65e5 H:mm:ss",
        "g": "yyyy-M-d H:mm",
        "G": "yyyy-M-d H:mm:ss",
        "m": "MMMd\u65e5",
        "o": "yyyy-MM-ddTHH:mm:ss.fff",
        "s": "yyyy-MM-ddTHH:mm:ss",
        "t": "H:mm",
        "T": "H:mm:ss",
        "U": "yyyy\u5e74M\u6708d\u65e5 HH:mm:ss",
        "y": "yyyy\u5e74MM\u6708"
    },
    tt: {
        "AM": "\u4e0a\u5348",
        "PM": "\u4e0b\u5348"
    },
    ten: {
        "Early": "\u4e0a\u65ec",
        "Mid": "\u4e2d\u65ec",
        "Late": "\u4e0b\u65ec"
    },
    today: "\u4eca\u5929",
    clockType: 24
};
if (OOo100) mini.copyTo(OOo100.prototype, {
    firstDayOfWeek: 0,
    todayText: "\u4eca\u5929",
    clearText: "\u6e05\u9664",
    okText: "\u786e\u5b9a",
    cancelText: "\u53d6\u6d88",
    daysShort: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"],
    format: "yyyy\u5e74MM\u6708",
    timeFormat: "H:mm"
});
for (var id in mini) {
    var clazz = mini[id];
    if (clazz && clazz[O010O1] && clazz[O010O1].isControl) {
        clazz[O010O1][Ollolo] = "\u4e0d\u80fd\u4e3a\u7a7a";
        clazz[O010O1].loadingMsg = "Loading..."
    }
}
if (mini.VTypes) mini.copyTo(mini.VTypes, {
    uniqueErrorText: "\u5b57\u6bb5\u4e0d\u80fd\u91cd\u590d",
    requiredErrorText: "\u4e0d\u80fd\u4e3a\u7a7a",
    emailErrorText: "\u8bf7\u8f93\u5165\u90ae\u4ef6\u683c\u5f0f",
    urlErrorText: "\u8bf7\u8f93\u5165URL\u683c\u5f0f",
    floatErrorText: "\u8bf7\u8f93\u5165\u6570\u5b57",
    intErrorText: "\u8bf7\u8f93\u5165\u6574\u6570",
    dateErrorText: "\u8bf7\u8f93\u5165\u65e5\u671f\u683c\u5f0f {0}",
    maxLengthErrorText: "\u4e0d\u80fd\u8d85\u8fc7 {0} \u4e2a\u5b57\u7b26",
    minLengthErrorText: "\u4e0d\u80fd\u5c11\u4e8e {0} \u4e2a\u5b57\u7b26",
    maxErrorText: "\u6570\u5b57\u4e0d\u80fd\u5927\u4e8e {0} ",
    minErrorText: "\u6570\u5b57\u4e0d\u80fd\u5c0f\u4e8e {0} ",
    rangeLengthErrorText: "\u5b57\u7b26\u957f\u5ea6\u5fc5\u987b\u5728 {0} \u5230 {1} \u4e4b\u95f4",
    rangeCharErrorText: "\u5b57\u7b26\u6570\u5fc5\u987b\u5728 {0} \u5230 {1} \u4e4b\u95f4",
    rangeErrorText: "\u6570\u5b57\u5fc5\u987b\u5728 {0} \u5230 {1} \u4e4b\u95f4"
});
if (l0O1lO) mini.copyTo(l0O1lO.prototype, {
    firstText: "\u9996\u9875",
    prevText: "\u4e0a\u4e00\u9875",
    nextText: "\u4e0b\u4e00\u9875",
    lastText: "\u5c3e\u9875",
    pageInfoText: "\u6bcf\u9875 {0} \u6761,\u5171 {1} \u6761"
});
if (l11ol0) mini.copyTo(l11ol0.prototype, {
    emptyText: "\u6ca1\u6709\u8fd4\u56de\u7684\u6570\u636e"
});
if (OlOo0l) OlOo0l[O010O1].buttonText = "\u6d4f\u89c8...";
if (O10OOo) O10OOo[O010O1].buttonText = "\u6d4f\u89c8...";
if (window.Oo10o1) {
    Oo0l0O.ShortWeeks = ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"];
    Oo0l0O.LongWeeks = ["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"];
    Oo10o1.PredecessorLinkType = [{
        ID: 0,
        Name: "\u5b8c\u6210-\u5b8c\u6210(FF)",
        Short: "FF"
    },
    {
        ID: 1,
        Name: "\u5b8c\u6210-\u5f00\u59cb(FS)",
        Short: "FS"
    },
    {
        ID: 2,
        Name: "\u5f00\u59cb-\u5b8c\u6210(SF)",
        Short: "SF"
    },
    {
        ID: 3,
        Name: "\u5f00\u59cb-\u5f00\u59cb(SS)",
        Short: "SS"
    }];
    Oo10o1.ConstraintType = [{
        ID: 0,
        Name: "\u8d8a\u65e9\u8d8a\u597d"
    },
    {
        ID: 1,
        Name: "\u8d8a\u665a\u8d8a\u597d"
    },
    {
        ID: 2,
        Name: "\u5fc5\u987b\u5f00\u59cb\u4e8e"
    },
    {
        ID: 3,
        Name: "\u5fc5\u987b\u5b8c\u6210\u4e8e"
    },
    {
        ID: 4,
        Name: "\u4e0d\u5f97\u65e9\u4e8e...\u5f00\u59cb"
    },
    {
        ID: 5,
        Name: "\u4e0d\u5f97\u665a\u4e8e...\u5f00\u59cb"
    },
    {
        ID: 6,
        Name: "\u4e0d\u5f97\u65e9\u4e8e...\u5b8c\u6210"
    },
    {
        ID: 7,
        Name: "\u4e0d\u5f97\u665a\u4e8e...\u5b8c\u6210"
    }];
    mini.copyTo(Oo10o1, {
        ID_Text: "\u6807\u8bc6\u53f7",
        Name_Text: "\u4efb\u52a1\u540d\u79f0",
        PercentComplete_Text: "\u8fdb\u5ea6",
        Duration_Text: "\u5de5\u671f",
        Start_Text: "\u5f00\u59cb\u65e5\u671f",
        Finish_Text: "\u5b8c\u6210\u65e5\u671f",
        Critical_Text: "\u5173\u952e\u4efb\u52a1",
        PredecessorLink_Text: "\u524d\u7f6e\u4efb\u52a1",
        Work_Text: "\u5de5\u65f6",
        Priority_Text: "\u91cd\u8981\u7ea7\u522b",
        Weight_Text: "\u6743\u91cd",
        OutlineNumber_Text: "\u5927\u7eb2\u5b57\u6bb5",
        OutlineLevel_Text: "\u4efb\u52a1\u5c42\u7ea7",
        ActualStart_Text: "\u5b9e\u9645\u5f00\u59cb\u65e5\u671f",
        ActualFinish_Text: "\u5b9e\u9645\u5b8c\u6210\u65e5\u671f",
        WBS_Text: "WBS",
        ConstraintType_Text: "\u9650\u5236\u7c7b\u578b",
        ConstraintDate_Text: "\u9650\u5236\u65e5\u671f",
        Department_Text: "\u90e8\u95e8",
        Principal_Text: "\u8d1f\u8d23\u4eba",
        Assignments_Text: "\u8d44\u6e90\u540d\u79f0",
        Summary_Text: "\u6458\u8981\u4efb\u52a1",
        Task_Text: "\u4efb\u52a1",
        Baseline_Text: "\u6bd4\u8f83\u57fa\u51c6",
        LinkType_Text: "\u94fe\u63a5\u7c7b\u578b",
        LinkLag_Text: "\u5ef6\u9694\u65f6\u95f4",
        From_Text: "\u4ece",
        To_Text: "\u5230",
        Goto_Text: "\u8f6c\u5230\u4efb\u52a1",
        UpGrade_Text: "\u5347\u7ea7",
        DownGrade_Text: "\u964d\u7ea7",
        Add_Text: "\u65b0\u589e",
        Edit_Text: "\u7f16\u8f91",
        Remove_Text: "\u5220\u9664",
        Move_Text: "\u79fb\u52a8",
        ZoomIn_Text: "\u653e\u5927",
        ZoomOut_Text: "\u7f29\u5c0f",
        Deselect_Text: "\u53d6\u6d88\u9009\u62e9",
        Split_Text: "\u62c6\u5206\u4efb\u52a1"
    })
}