/**
 * jquery.Jcrop.min.js v0.9.12 (build:20130202)
 * jQuery Image Cropping Plugin - released under MIT License
 * Copyright (c) 2008-2013 Tapmodo Interactive LLC
 * https://github.com/tapmodo/Jcrop
 */
(function (a) {
    a.Jcrop = function (b, c) {
        function i(a) {
            return Math.round(a) + "px"
        }

        function j(a) {
            return d.baseClass + "-" + a
        }

        function k() {
            return a.fx.step.hasOwnProperty("backgroundColor")
        }

        function l(b) {
            var c = a(b).offset();
            return [c.left, c.top]
        }

        function m(a) {
            return [a.pageX - e[0], a.pageY - e[1]]
        }

        function n(b) {
            typeof b != "object" && (b = {}), d = a.extend(d, b), a.each(["onChange", "onSelect", "onRelease", "onDblClick"], function (a, b) {
                typeof d[b] != "function" && (d[b] = function () { })
            })
        }

        function o(a, b, c) {
            e = l(D), bc.setCursor(a === "move" ? a : a + "-resize");
            if (a === "move") return bc.activateHandlers(q(b), v, c);
            var d = _.getFixed(),
                f = r(a),
                g = _.getCorner(r(f));
            _.setPressed(_.getCorner(f)), _.setCurrent(g), bc.activateHandlers(p(a, d), v, c)
        }

        function p(a, b) {
            return function (c) {
                if (!d.aspectRatio) switch (a) {
                    case "e":
                        c[1] = b.y2;
                        break;
                    case "w":
                        c[1] = b.y2;
                        break;
                    case "n":
                        c[0] = b.x2;
                        break;
                    case "s":
                        c[0] = b.x2
                } else switch (a) {
                    case "e":
                        c[1] = b.y + 1;
                        break;
                    case "w":
                        c[1] = b.y + 1;
                        break;
                    case "n":
                        c[0] = b.x + 1;
                        break;
                    case "s":
                        c[0] = b.x + 1
                }
                _.setCurrent(c), bb.update()
            }
        }

        function q(a) {
            var b = a;
            return bd.watchKeys(),
            function (a) {
                _.moveOffset([a[0] - b[0], a[1] - b[1]]), b = a, bb.update()
            }
        }

        function r(a) {
            switch (a) {
                case "n":
                    return "sw";
                case "s":
                    return "nw";
                case "e":
                    return "nw";
                case "w":
                    return "ne";
                case "ne":
                    return "sw";
                case "nw":
                    return "se";
                case "se":
                    return "nw";
                case "sw":
                    return "ne"
            }
        }

        function s(a) {
            return function (b) {
                return d.disabled ? !1 : a === "move" && !d.allowMove ? !1 : (e = l(D), W = !0, o(a, m(b)), b.stopPropagation(), b.preventDefault(), !1)
            }
        }

        function t(a, b, c) {
            var d = a.width(),
                e = a.height();
            d > b && b > 0 && (d = b, e = b / a.width() * a.height()), e > c && c > 0 && (e = c, d = c / a.height() * a.width()), T = a.width() / d, U = a.height() / e, a.width(d).height(e)
        }

        function u(a) {
            return {
                x: a.x * T,
                y: a.y * U,
                x2: a.x2 * T,
                y2: a.y2 * U,
                w: a.w * T,
                h: a.h * U
            }
        }

        function v(a) {
            var b = _.getFixed();
            b.w > d.minSelect[0] && b.h > d.minSelect[1] ? (bb.enableHandles(), bb.done()) : bb.release(), bc.setCursor(d.allowSelect ? "crosshair" : "default")
        }

        function w(a) {
            if (d.disabled) return !1;
            if (!d.allowSelect) return !1;
            W = !0, e = l(D), bb.disableHandles(), bc.setCursor("crosshair");
            var b = m(a);
            return _.setPressed(b), bb.update(), bc.activateHandlers(x, v, a.type.substring(0, 5) === "touch"), bd.watchKeys(), a.stopPropagation(), a.preventDefault(), !1
        }

        function x(a) {
            _.setCurrent(a), bb.update()
        }

        function y() {
            var b = a("<div></div>").addClass(j("tracker"));
            return g && b.css({
                opacity: 0,
                backgroundColor: "white"
            }), b
        }

        function be(a) {
            G.removeClass().addClass(j("holder")).addClass(a)
        }

        function bf(a, b) {
            function t() {
                window.setTimeout(u, l)
            }
            var c = a[0] / T,
                e = a[1] / U,
                f = a[2] / T,
                g = a[3] / U;
            if (X) return;
            var h = _.flipCoords(c, e, f, g),
                i = _.getFixed(),
                j = [i.x, i.y, i.x2, i.y2],
                k = j,
                l = d.animationDelay,
                m = h[0] - j[0],
                n = h[1] - j[1],
                o = h[2] - j[2],
                p = h[3] - j[3],
                q = 0,
                r = d.swingSpeed;
            c = k[0], e = k[1], f = k[2], g = k[3], bb.animMode(!0);
            var s, u = function () {
                return function () {
                    q += (100 - q) / r, k[0] = Math.round(c + q / 100 * m), k[1] = Math.round(e + q / 100 * n), k[2] = Math.round(f + q / 100 * o), k[3] = Math.round(g + q / 100 * p), q >= 99.8 && (q = 100), q < 100 ? (bh(k), t()) : (bb.done(), bb.animMode(!1), typeof b == "function" && b.call(bs))
                }
            }();
            t()
        }

        function bg(a) {
            bh([a[0] / T, a[1] / U, a[2] / T, a[3] / U]), d.onSelect.call(bs, u(_.getFixed())), bb.enableHandles()
        }

        function bh(a) {
            _.setPressed([a[0], a[1]]), _.setCurrent([a[2],
                a[3]
            ]), bb.update()
        }

        function bi() {
            return u(_.getFixed())
        }

        function bj() {
            return _.getFixed()
        }

        function bk(a) {
            n(a), br()
        }

        function bl() {
            d.disabled = !0, bb.disableHandles(), bb.setCursor("default"), bc.setCursor("default")
        }

        function bm() {
            d.disabled = !1, br()
        }

        function bn() {
            bb.done(), bc.activateHandlers(null, null)
        }

        function bo() {
            G.remove(), A.show(), A.css("visibility", "visible"), a(b).removeData("Jcrop")
        }

        function bp(a, b) {
            bb.release(), bl();
            var c = new Image;
            c.onload = function () {
                var e = c.width,
                    f = c.height,
                    g = d.boxWidth,
                    h = d.boxHeight;
                D.width(e).height(f), D.attr("src", a), H.attr("src", a), t(D, g, h), E = D.width(), F = D.height(), H.width(E).height(F), M.width(E + L * 2).height(F + L * 2), G.width(E).height(F), ba.resize(E, F), bm(), typeof b == "function" && b.call(bs)
            }, c.src = a
        }

        function bq(a, b, c) {
            var e = b || d.bgColor;
            d.bgFade && k() && d.fadeTime && !c ? a.animate({
                backgroundColor: e
            }, {
                queue: !1,
                duration: d.fadeTime
            }) : a.css("backgroundColor", e)
        }

        function br(a) {
            d.allowResize ? a ? bb.enableOnly() : bb.enableHandles() : bb.disableHandles(), bc.setCursor(d.allowSelect ? "crosshair" : "default"), bb
                .setCursor(d.allowMove ? "move" : "default"), d.hasOwnProperty("trueSize") && (T = d.trueSize[0] / E, U = d.trueSize[1] / F), d.hasOwnProperty("setSelect") && (bg(d.setSelect), bb.done(), delete d.setSelect), ba.refresh(), d.bgColor != N && (bq(d.shade ? ba.getShades() : G, d.shade ? d.shadeColor || d.bgColor : d.bgColor), N = d.bgColor), O != d.bgOpacity && (O = d.bgOpacity, d.shade ? ba.refresh() : bb.setBgOpacity(O)), P = d.maxSize[0] || 0, Q = d.maxSize[1] || 0, R = d.minSize[0] || 0, S = d.minSize[1] || 0, d.hasOwnProperty("outerImage") && (D.attr("src", d.outerImage), delete d.outerImage), bb.refresh()
        }
        var d = a.extend({}, a.Jcrop.defaults),
            e, f = navigator.userAgent.toLowerCase(),
            g = /msie/.test(f),
            h = /msie [1-6]\./.test(f);
        typeof b != "object" && (b = a(b)[0]), typeof c != "object" && (c = {}), n(c);
        var z = {
            border: "none",
            visibility: "visible",
            margin: 0,
            padding: 0,
            position: "absolute",
            top: 0,
            left: 0
        }, A = a(b),
            B = !0;
        if (b.tagName == "IMG") {
            if (A[0].width != 0 && A[0].height != 0) A.width(A[0].width), A.height(A[0].height);
            else {
                var C = new Image;
                C.src = A[0].src, A.width(C.width), A.height(C.height)
            }
            var D = A.clone().removeAttr("id").
            css(z).show();
            D.width(A.width()), D.height(A.height()), A.after(D).hide()
        } else D = A.css(z).show(), B = !1, d.shade === null && (d.shade = !0);
        t(D, d.boxWidth, d.boxHeight);
        var E = D.width(),
            F = D.height(),
            G = a("<div />").width(E).height(F).addClass(j("holder")).css({
                position: "relative",
                backgroundColor: d.bgColor
            }).insertAfter(A).append(D);
        d.addClass && G.addClass(d.addClass);
        var H = a("<div />"),
            I = a("<div />").width("100%").height("100%").css({
                zIndex: 310,
                position: "absolute",
                overflow: "hidden"
            }),
            J = a("<div />").width("100%").height("100%").css("zIndex", 320),
            K = a("<div />").css({
                position: "absolute",
                zIndex: 600
            }).dblclick(function () {
                var a = _.getFixed();
                d.onDblClick.call(bs, a)
            }).insertBefore(D).append(I, J);
        B && (H = a("<img />").attr("src", D.attr("src")).css(z).width(E).height(F), I.append(H)), h && K.css({
            overflowY: "hidden"
        });
        var L = d.boundary,
            M = y().width(E + L * 2).height(F + L * 2).css({
                position: "absolute",
                top: i(-L),
                left: i(-L),
                zIndex: 290
            }).mousedown(w),
            N = d.bgColor,
            O = d.bgOpacity,
            P, Q, R, S, T, U, V = !0,
            W, X, Y;
        e = l(D);
        var Z = function () {
            function a() {
                var a = {}, b = ["touchstart", "touchmove", "touchend"],
                    c = document.createElement("div"),
                    d;
                try {
                    for (d = 0; d < b.length; d++) {
                        var e = b[d];
                        e = "on" + e;
                        var f = e in c;
                        f || (c.setAttribute(e, "return;"), f = typeof c[e] == "function"), a[b[d]] = f
                    }
                    return a.touchstart && a.touchend && a.touchmove
                } catch (g) {
                    return !1
                }
            }

            function b() {
                return d.touchSupport === !0 || d.touchSupport === !1 ? d.touchSupport : a()
            }
            return {
                createDragger: function (a) {
                    return function (b) {
                        return d.disabled ? !1 : a === "move" && !d.allowMove ? !1 : (e = l(D), W = !0, o(a, m(Z.cfilter(b)), !0), b.stopPropagation(), b.preventDefault(), !1)
                    }
                },
                newSelection: function (a) {
                    return w(Z.cfilter(a))
                },
                cfilter: function (a) {
                    return a.pageX = a.originalEvent.changedTouches[0].pageX, a.pageY = a.originalEvent.changedTouches[0].pageY, a
                },
                isSupported: a,
                support: b()
            }
        }(),
            _ = function () {
                function h(d) {
                    d = n(d), c = a = d[0], e = b = d[1]
                }

                function i(a) {
                    a = n(a), f = a[0] - c, g = a[1] - e, c = a[0], e = a[1]
                }

                function j() {
                    return [f, g]
                }

                function k(d) {
                    var f = d[0],
                        g = d[1];
                    0 > a + f && (f -= f + a), 0 > b + g && (g -= g + b), F < e + g && (g += F - (e + g)), E < c + f && (f += E - (c + f)), a += f, c += f, b += g, e += g
                }

                function l(a) {
                    var b = m();
                    switch (a) {
                        case "ne":
                            return [
                                b.x2, b.y];
                        case "nw":
                            return [b.x, b.y];
                        case "se":
                            return [b.x2, b.y2];
                        case "sw":
                            return [b.x, b.y2]
                    }
                }

                function m() {
                    if (!d.aspectRatio) return p();
                    var f = d.aspectRatio,
                        g = d.minSize[0] / T,
                        h = d.maxSize[0] / T,
                        i = d.maxSize[1] / U,
                        j = c - a,
                        k = e - b,
                        l = Math.abs(j),
                        m = Math.abs(k),
                        n = l / m,
                        r, s, t, u;
                    return h === 0 && (h = E * 10), i === 0 && (i = F * 10), n < f ? (s = e, t = m * f, r = j < 0 ? a - t : t + a, r < 0 ? (r = 0, u = Math.abs((r - a) / f), s = k < 0 ? b - u : u + b) : r > E && (r = E, u = Math.abs((r - a) / f), s = k < 0 ? b - u : u + b)) : (r = c, u = l / f, s = k < 0 ? b - u : b + u, s < 0 ? (s = 0, t = Math.abs((s - b) * f), r = j < 0 ? a - t : t + a) : s > F && (s = F, t = Math.abs(s - b) * f, r = j < 0 ? a - t : t + a)), r > a ? (r - a < g ? r = a + g : r - a > h && (r = a + h), s > b ? s = b + (r - a) / f : s = b - (r - a) / f) : r < a && (a - r < g ? r = a - g : a - r > h && (r = a - h), s > b ? s = b + (a - r) / f : s = b - (a - r) / f), r < 0 ? (a -= r, r = 0) : r > E && (a -= r - E, r = E), s < 0 ? (b -= s, s = 0) : s > F && (b -= s - F, s = F), q(o(a, b, r, s))
                }

                function n(a) {
                    return a[0] < 0 && (a[0] = 0), a[1] < 0 && (a[1] = 0), a[0] > E && (a[0] = E), a[1] > F && (a[1] = F), [Math.round(a[0]), Math.round(a[1])]
                }

                function o(a, b, c, d) {
                    var e = a,
                        f = c,
                        g = b,
                        h = d;
                    return c < a && (e = c, f = a), d < b && (g = d, h = b), [e, g, f, h]
                }

                function p() {
                    var d = c - a,
                        f = e - b,
                        g;
                    return P && Math.abs(d) > P && (c = d > 0 ? a + P : a - P), Q && Math.abs(f) > Q && (e = f > 0 ? b + Q : b - Q), S / U && Math.abs(f) < S / U && (e = f > 0 ? b + S / U : b - S / U), R / T && Math.abs(d) < R / T && (c = d > 0 ? a + R / T : a - R / T), a < 0 && (c -= a, a -= a), b < 0 && (e -= b, b -= b), c < 0 && (a -= c, c -= c), e < 0 && (b -= e, e -= e), c > E && (g = c - E, a -= g, c -= g), e > F && (g = e - F, b -= g, e -= g), a > E && (g = a - F, e -= g, b -= g), b > F && (g = b - F, e -= g, b -= g), q(o(a, b, c, e))
                }

                function q(a) {
                    return {
                        x: a[0],
                        y: a[1],
                        x2: a[2],
                        y2: a[3],
                        w: a[2] - a[0],
                        h: a[3] - a[1]
                    }
                }
                var a = 0,
                    b = 0,
                    c = 0,
                    e = 0,
                    f, g;
                return {
                    flipCoords: o,
                    setPressed: h,
                    setCurrent: i,
                    getOffset: j,
                    moveOffset: k,
                    getCorner: l,
                    getFixed: m
                }
            }(),
            ba = function () {
                function f(a, b) {
                    e.left.css({
                        height: i(b)
                    }), e.right.css({
                        height: i(b)
                    })
                }

                function g() {
                    return h(_.getFixed())
                }

                function h(a) {
                    e.top.css({
                        left: i(a.x),
                        width: i(a.w),
                        height: i(a.y)
                    }), e.bottom.css({
                        top: i(a.y2),
                        left: i(a.x),
                        width: i(a.w),
                        height: i(F - a.y2)
                    }), e.right.css({
                        left: i(a.x2),
                        width: i(E - a.x2)
                    }), e.left.css({
                        width: i(a.x)
                    })
                }

                function j() {
                    return a("<div />").css({
                        position: "absolute",
                        backgroundColor: d.shadeColor || d.bgColor
                    }).appendTo(c)
                }

                function k() {
                    b || (b = !0, c.insertBefore(D), g(), bb.setBgOpacity(1, 0, 1), H.hide(), l(d.shadeColor || d.bgColor, 1), bb.isAwake() ? n(d.bgOpacity, 1) : n(1, 1))
                }

                function l(a, b) {
                    bq(p(), a, b)
                }

                function m() {
                    b && (c.remove(), H.show(), b = !1, bb.isAwake() ? bb.setBgOpacity(d.bgOpacity, 1, 1) : (bb.setBgOpacity(1, 1, 1), bb.disableHandles()), bq(G, 0, 1))
                }

                function n(a, e) {
                    b && (d.bgFade && !e ? c.animate({
                        opacity: 1 - a
                    }, {
                        queue: !1,
                        duration: d.fadeTime
                    }) : c.css({
                        opacity: 1 - a
                    }))
                }

                function o() {
                    d.shade ? k() : m(), bb.isAwake() && n(d.bgOpacity)
                }

                function p() {
                    return c.children()
                }
                var b = !1,
                    c = a("<div />").css({
                        position: "absolute",
                        zIndex: 240,
                        opacity: 0
                    }),
                    e = {
                        top: j(),
                        left: j().height(F),
                        right: j().height(F),
                        bottom: j()
                    };
                return {
                    update: g,
                    updateRaw: h,
                    getShades: p,
                    setBgColor: l,
                    enable: k,
                    disable: m,
                    resize: f,
                    refresh: o,
                    opacity: n
                }
            }(),
            bb = function () {
                function k(b) {
                    var c = a("<div />").css({
                        position: "absolute",
                        opacity: d.borderOpacity
                    }).addClass(j(b));
                    return I.append(c), c
                }

                function l(b, c) {
                    var d = a("<div />").mousedown(s(b)).css({
                        cursor: b + "-resize",
                        position: "absolute",
                        zIndex: c
                    }).addClass("ord-" + b);
                    return Z.support && d.bind("touchstart.jcrop", Z.createDragger(b)), J.append(d), d
                }

                function m(a) {
                    var b = d.handleSize,
                        e = l(a, c++).css({
                            opacity: d.handleOpacity
                        }).addClass(j("handle"));
                    return b && e.width(b).height(b), e
                }

                function n(a) {
                    return l(a, c++).addClass("jcrop-dragbar")
                }

                function o(a) {
                    var b;
                    for (b = 0; b < a.length; b++) g[a[b]] = n(a[b])
                }

                function p(a) {
                    var b, c;
                    for (c = 0; c < a.length; c++) {
                        switch (a[c]) {
                            case "n":
                                b = "hline";
                                break;
                            case "s":
                                b = "hline bottom";
                                break;
                            case "e":
                                b = "vline right";
                                break;
                            case "w":
                                b = "vline"
                        }
                        e[a[c]] = k(b)
                    }
                }

                function q(a) {
                    var b;
                    for (b = 0; b < a.length; b++) f[a[b]] = m(a[b])
                }

                function r(a, b) {
                    d.shade || H.css({
                        top: i(-b),
                        left: i(-a)
                    }), K.css({
                        top: i(b),
                        left: i(a)
                    })
                }

                function t(a, b) {
                    K.width(Math.round(a)).height(Math.round(b))
                }

                function v() {
                    var a = _.getFixed();
                    _.setPressed([a.x, a.y]), _.setCurrent([a.x2, a.y2]), w()
                }

                function w(a) {
                    if (b) return x(a)
                }

                function x(a) {
                    var c = _.getFixed();
                    t(c.w, c.h), r(c.x, c.y), d.shade && ba.updateRaw(c), b || A(), a ? d.onSelect.call(bs, u(c)) : d.onChange.call(bs, u(c))
                }

                function z(a, c, e) {
                    if (!b && !c) return;
                    d.bgFade && !e ? D.animate({
                        opacity: a
                    }, {
                        queue: !1,
                        duration: d.fadeTime
                    }) : D.css("opacity", a)
                }

                function A() {
                    K.show(), d.shade ? ba.opacity(O) : z(O, !0), b = !0
                }

                function B() {
                    F(), K.hide(), d.shade ? ba.opacity(1) : z(1), b = !1, d.onRelease.call(bs)
                }

                function C() {
                    h && J.show()
                }

                function E() {
                    h = !0;
                    if (d.allowResize) return J.show(), !0
                }

                function F() {
                    h = !1, J.hide()
                }

                function G(a) {
                    a ? (X = !0, F()) : (X = !1, E())
                }

                function L() {
                    G(!1), v()
                }
                var b, c = 370,
                    e = {}, f = {}, g = {}, h = !1;
                d.dragEdges && a.isArray(d.createDragbars) && o(d.createDragbars), a.isArray(d.createHandles) && q(d.createHandles), d.drawBorders && a.isArray(d.createBorders) && p(d.createBorders), a(document).bind("touchstart.jcrop-ios", function (b) {
                    a(b.currentTarget).hasClass("jcrop-tracker") && b.stopPropagation()
                });
                var M = y().mousedown(s("move")).css({
                    cursor: "move",
                    position: "absolute",
                    zIndex: 360
                });
                return Z.support && M.bind("touchstart.jcrop", Z.createDragger("move")), I.append(M), F(), {
                    updateVisible: w,
                    update: x,
                    release: B,
                    refresh: v,
                    isAwake: function () {
                        return b
                    },
                    setCursor: function (a) {
                        M.css("cursor", a)
                    },
                    enableHandles: E,
                    enableOnly: function () {
                        h = !0
                    },
                    showHandles: C,
                    disableHandles: F,
                    animMode: G,
                    setBgOpacity: z,
                    done: L
                }
            }(),
            bc = function () {
                function f(b) {
                    M.css({
                        zIndex: 450
                    }), b ? a(document).bind("touchmove.jcrop", k).bind("touchend.jcrop", l) : e && a(document).bind("mousemove.jcrop", h).bind("mouseup.jcrop", i)
                }

                function g() {
                    M.css({
                        zIndex: 290
                    }), a(document).unbind(".jcrop")
                }

                function h(a) {
                    return b(m(a)), !1
                }

                function i(a) {
                    return a.preventDefault(), a.stopPropagation(), W && (W = !1, c(m(a)), bb.isAwake() && d.onSelect.call(bs, u(_.getFixed())), g(), b = function () { }, c = function () { }), !1
                }

                function j(a, d, e) {
                    return W = !0, b = a, c = d, f(e), !1
                }

                function k(a) {
                    return b(m(Z.cfilter(a))), !1
                }

                function l(a) {
                    return i(Z.cfilter(a))
                }

                function n(a) {
                    M.css("cursor", a)
                }
                var b = function () { }, c = function () { }, e = d.trackDocument;
                return e || M.mousemove(h).mouseup(i).mouseout(i), D.before(M), {
                    activateHandlers: j,
                    setCursor: n
                }
            }(),
            bd = function () {
                function e() {
                    d.keySupport && (b.show(), b.focus())
                }

                function f(a) {
                    b.hide()
                }

                function g(a, b, c) {
                    d.allowMove && (_.moveOffset([b, c]), bb.updateVisible(!0)), a.preventDefault(), a.stopPropagation()
                }

                function i(a) {
                    if (a.ctrlKey || a.metaKey) return !0;
                    Y = a.shiftKey ? !0 : !1;
                    var b = Y ? 10 : 1;
                    switch (a.keyCode) {
                        case 37:
                            g(a, -b, 0);
                            break;
                        case 39:
                            g(a, b, 0);
                            break;
                        case 38:
                            g(a, 0, -b);
                            break;
                        case 40:
                            g(a, 0, b);
                            break;
                        case 27:
                            d.allowSelect && bb.release();
                            break;
                        case 9:
                            return !0
                    }
                    return !1
                }
                var b = a('<input type="radio" />').css({
                    position: "fixed",
                    left: "-120px",
                    width: "12px"
                }).addClass("jcrop-keymgr"),
                    c = a("<div />").css({
                        position: "absolute",
                        overflow: "hidden"
                    }).append(b);
                return d.keySupport && (b.keydown(i).blur(f), h || !d.fixedSupport ? (b.css({
                    position: "absolute",
                    left: "-20px"
                }), c.append(b).insertBefore(D)) : b.insertBefore(D)), {
                    watchKeys: e
                }
            }();
        Z.support && M.bind("touchstart.jcrop", Z.newSelection), J.hide(), br(!0);
        var bs = {
            setImage: bp,
            animateTo: bf,
            setSelect: bg,
            setOptions: bk,
            tellSelect: bi,
            tellScaled: bj,
            setClass: be,
            disable: bl,
            enable: bm,
            cancel: bn,
            release: bb.release,
            destroy: bo,
            focus: bd.watchKeys,
            getBounds: function () {
                return [E * T, F * U]
            },
            getWidgetSize: function () {
                return [E, F]
            },
            getScaleFactor: function () {
                return [T, U]
            },
            getOptions: function () {
                return d
            },
            ui: {
                holder: G,
                selection: K
            }
        };
        return g && G.bind("selectstart", function () {
            return !1
        }), A.data("Jcrop", bs), bs
    }, a.fn.Jcrop = function (b, c) {
        var d;
        return this.each(function () {
            if (a(this).data("Jcrop")) {
                if (
                    b === "api") return a(this).data("Jcrop");
                a(this).data("Jcrop").setOptions(b)
            } else this.tagName == "IMG" ? a.Jcrop.Loader(this, function () {
                a(this).css({
                    display: "block",
                    visibility: "hidden"
                }), d = a.Jcrop(this, b), a.isFunction(c) && c.call(d)
            }) : (a(this).css({
                display: "block",
                visibility: "hidden"
            }), d = a.Jcrop(this, b), a.isFunction(c) && c.call(d))
        }), this
    }, a.Jcrop.Loader = function (b, c, d) {
        function g() {
            f.complete ? (e.unbind(".jcloader"), a.isFunction(c) && c.call(f)) : window.setTimeout(g, 50)
        }
        var e = a(b),
            f = e[0];
        e.bind("load.jcloader", g).bind("error.jcloader", function (b) {
            e.unbind(".jcloader"), a.isFunction(d) && d.call(f)
        }), f.complete && a.isFunction(c) && (e.unbind(".jcloader"), c.call(f))
    }, a.Jcrop.defaults = {
        allowSelect: !0,
        allowMove: !0,
        allowResize: !0,
        trackDocument: !0,
        baseClass: "jcrop",
        addClass: null,
        bgColor: "black",
        bgOpacity: .6,
        bgFade: !1,
        borderOpacity: .4,
        handleOpacity: .5,
        handleSize: null,
        aspectRatio: 0,
        keySupport: !0,
        createHandles: ["n", "s", "e", "w", "nw", "ne", "se", "sw"],
        createDragbars: ["n", "s", "e", "w"],
        createBorders: ["n", "s", "e", "w"],
        drawBorders: !0,
        dragEdges: !0,
        fixedSupport: !0,
        touchSupport: null,
        shade: null,
        boxWidth: 0,
        boxHeight: 0,
        boundary: 2,
        fadeTime: 400,
        animationDelay: 20,
        swingSpeed: 3,
        minSelect: [0, 0],
        maxSize: [0, 0],
        minSize: [0, 0],
        onChange: function () { },
        onSelect: function () { },
        onDblClick: function () { },
        onRelease: function () { }
    }
})(jQuery);