jQuery控件

(function(c, ea, aa, M) {
    var ba = 0,
    r, N = function() {
        var c = M.userAgent,
        a = /msie\s\d+/i;
        return 0 < c.search(a) && (c = a.exec(c).toString(), c = c.split(" ")[1], 9 > c) ? !0 : !1
    } (),
    X = "ontouchstart" in aa || 0 < M.msMaxTouchPoints,
    O = function(c) {
        "number" !== typeof c && (c = parseFloat(c));
        return isNaN(c) ? null: c
    },
    H = {
        init: function(fa) {
            return this.each(function() {
                var a = c.extend({
                    min: null,
                    max: null,
                    from: null,
                    to: null,
                    type: "single",
                    step: null,
                    prefix: "",
                    postfix: "",
                    maxPostfix: "",
                    hasGrid: !1,
                    gridMargin: 0,
                    hideMinMax: !1,
                    hideFromTo: !1,
                    prettify: !0,
                    disable: !1,
                    values: null,
                    onLoad: null,
                    onChange: null,
                    onFinish: null
                },
                fa),
                e = c(this),
                l = this,
                I = !1,
                g = null;
                if (!e.data("isActive")) {
                    e.data("isActive", !0);
                    this.plugin_count = ba += 1;
                    e.prop("value") && (g = e.prop("value").split(";"));
                    "single" === a.type ? g && 1 < g.length ? ("number" !== typeof a.min ? a.min = parseFloat(g[0]) : "number" !== typeof a.from && (a.from = parseFloat(g[0])), "number" !== typeof a.max && (a.max = parseFloat(g[1]))) : g && 1 === g.length && "number" !== typeof a.from && (a.from = parseFloat(g[0])) : "double" === a.type && (g && 1 < g.length ? ("number" !== typeof a.min ? a.min = parseFloat(g[0]) : "number" !== typeof a.from && (a.from = parseFloat(g[0])), "number" !== typeof a.max ? a.max = parseFloat(g[1]) : "number" !== typeof a.to && (a.to = parseFloat(g[1]))) : g && 1 === g.length && ("number" !== typeof a.min ? a.min = parseFloat(g[0]) : "number" !== typeof a.from && (a.from = parseFloat(g[0]))));
                    "number" === typeof e.data("min") && (a.min = parseFloat(e.data("min")));
                    "number" === typeof e.data("max") && (a.max = parseFloat(e.data("max")));
                    "number" === typeof e.data("from") && (a.from = parseFloat(e.data("from")));
                    "number" === typeof e.data("to") && (a.to = parseFloat(e.data("to")));
                    e.data("step") && (a.step = parseFloat(e.data("step")));
                    e.data("type") && (a.type = e.data("type"));
                    e.data("prefix") && (a.prefix = e.data("prefix"));
                    e.data("postfix") && (a.postfix = e.data("postfix"));
                    e.data("maxpostfix") && (a.maxPostfix = e.data("maxpostfix"));
                    e.data("hasgrid") && (a.hasGrid = e.data("hasgrid"));
                    e.data("gridmargin") && (a.gridMargin = +e.data("gridmargin"));
                    e.data("hideminmax") && (a.hideMinMax = e.data("hideminmax"));
                    e.data("hidefromto") && (a.hideFromTo = e.data("hidefromto"));
                    e.data("prettify") && (a.prettify = e.data("prettify"));
                    e.data("disable") && (a.disable = e.data("disable"));
                    e.data("values") && (a.values = e.data("values").split(","));
                    a.min = O(a.min);
                    a.min || 0 === a.min || (a.min = 10);
                    a.max = O(a.max);
                    a.max || 0 === a.max || (a.max = 100);
                    "[object Array]" !== Object.prototype.toString.call(a.values) && (a.values = null);
                    a.values && 0 < a.values.length && (a.min = 0, a.max = a.values.length - 1, a.step = 1, I = !0);
                    a.from = O(a.from);
                    a.from || 0 === a.from || (a.from = a.min);
                    a.to = O(a.to);
                    a.to || 0 === a.to || (a.to = a.max);
                    a.step = O(a.step);
                    a.step || (a.step = 1);
                    a.from < a.min && (a.from = a.min);
                    a.from > a.max && (a.from = a.min);
                    a.to < a.min && (a.to = a.max);
                    a.to > a.max && (a.to = a.max);
                    "double" === a.type && (a.from > a.to && (a.from = a.to), a.to < a.from && (a.to = a.from));
                    var z = function(b) {
                        b = b.toString();
                        a.prettify && (b = b.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1 "));
                        return b
                    },
                    g = '<span class="irs" id="irs-' + this.plugin_count + '"></span>';
                    e[0].style.display = "none";
                    e.before(g);
                    var n = e.prev(),
                    C = c(ea.body),
                    P = c(aa),
                    p,
                    D,
                    E,
                    A,
                    B,
                    w,
                    x,
                    m,
                    s,
                    q,
                    H,
                    Y,
                    v = !1,
                    y = !1,
                    J = !0,
                    f = {},
                    U = 0,
                    Q = 0,
                    R = 0,
                    t = 0,
                    F = 0,
                    G = 0,
                    V = 0,
                    S = 0,
                    T = 0,
                    Z = 0,
                    u = 0;
                    parseInt(a.step, 10) !== parseFloat(a.step) && (u = a.step.toString().split(".")[1], u = Math.pow(10, u.length));
                    this.updateData = function(b) {
                        c.extend(a, b);
                        n.find("*").off();
                        P.off("mouseup.irs" + l.plugin_count);
                        C.off("mouseup.irs" + l.plugin_count);
                        C.off("mouseleave.irs" + l.plugin_count);
                        C.off("mousemove.irs" + l.plugin_count);
                        n.html("");
                        M()
                    };
                    //www.jq22.com
                    this.removeSlider = function() {
                        n.find("*").off();
                        P.off("mouseup.irs" + l.plugin_count);
                        C.off("mouseup.irs" + l.plugin_count);
                        C.off("mouseleave.irs" + l.plugin_count);
                        C.off("mousemove.irs" + l.plugin_count);
                        n.html("").remove();
                        e.data("isActive", !1);
                        e.show()
                    };
                    var M = function() {
                        n.html('<span class="irs"><span class="irs-line"><span class="irs-line-left"></span><span class="irs-line-mid"></span><span class="irs-line-right"></span></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span>');
                        p = n.find(".irs");
                        D = p.find(".irs-min");
                        E = p.find(".irs-max");
                        A = p.find(".irs-from");
                        B = p.find(".irs-to");
                        w = p.find(".irs-single");
                        Y = n.find(".irs-grid");
                        a.hideFromTo && (A[0].style.visibility = "hidden", B[0].style.visibility = "hidden", w[0].style.visibility = "hidden");
                        a.hideFromTo || (A[0].style.visibility = "visible", B[0].style.visibility = "visible", w[0].style.visibility = "visible");
                        a.hideMinMax && (D[0].style.visibility = "hidden", E[0].style.visibility = "hidden", R = Q = 0);
                        a.hideMinMax || (D[0].style.visibility = "visible", E[0].style.visibility = "visible", a.values ? (D.html(a.prefix + a.values[0] + a.postfix), E.html(a.prefix + a.values[a.values.length - 1] + a.maxPostfix + a.postfix)) : (D.html(a.prefix + z(a.min) + a.postfix), E.html(a.prefix + z(a.max) + a.maxPostfix + a.postfix)), Q = D.outerWidth(!1), R = E.outerWidth(!1));
                        ga()
                    },
                    ga = function() {
                        if ("single" === a.type) {
                            if (p.append('<span class="irs-slider single"></span>'), x = p.find(".single"), x.on("mousedown",
                            function(a) {
                                a.preventDefault();
                                a.stopPropagation();
                                K(a, c(this), null);
                                y = v = !0;
                                r = l.plugin_count;
                                N && c("*").prop("unselectable", !0)
                            }), X) x.on("touchstart",
                            function(a) {
                                a.preventDefault();
                                a.stopPropagation();
                                K(a.originalEvent.touches[0], c(this), null);
                                y = v = !0;
                                r = l.plugin_count
                            })
                        } else "double" === a.type && (p.append('<span class="irs-diapason"></span><span class="irs-slider from"></span><span class="irs-slider to"></span>'), m = p.find(".from"), s = p.find(".to"), H = p.find(".irs-diapason"), L(), m.on("mousedown",
                        function(a) {
                            a.preventDefault();
                            a.stopPropagation();
                            c(this).addClass("last");
                            s.removeClass("last");
                            K(a, c(this), "from");
                            y = v = !0;
                            r = l.plugin_count;
                            N && c("*").prop("unselectable", !0)
                        }), s.on("mousedown",
                        function(a) {
                            a.preventDefault();
                            a.stopPropagation();
                            c(this).addClass("last");
                            m.removeClass("last");
                            K(a, c(this), "to");
                            y = v = !0;
                            r = l.plugin_count;
                            N && c("*").prop("unselectable", !0)
                        }), X && (m.on("touchstart",
                        function(a) {
                            a.preventDefault();
                            a.stopPropagation();
                            c(this).addClass("last");
                            s.removeClass("last");
                            K(a.originalEvent.touches[0], c(this), "from");
                            y = v = !0;
                            r = l.plugin_count
                        }), s.on("touchstart",
                        function(a) {
                            a.preventDefault();
                            a.stopPropagation();
                            c(this).addClass("last");
                            m.removeClass("last");
                            K(a.originalEvent.touches[0], c(this), "to");
                            y = v = !0;
                            r = l.plugin_count
                        })), a.to === a.max && m.addClass("last"));
                        var b = function() {
                            r === l.plugin_count && v && (v = y = !1, q.removeAttr("id"), q = null, "double" === a.type && L(), $(), N && c("*").prop("unselectable", !1))
                        };
                        P.on("mouseup.irs" + l.plugin_count,
                        function() {
                            b()
                        });
                        if (N) C.on("mouseleave.irs" + l.plugin_count,
                        function() {
                            b()
                        });
                        C.on("mousemove.irs" + l.plugin_count,
                        function(a) {
                            v && (U = a.pageX, W())
                        });
                        n.on("mousedown",
                        function() {
                            r = l.plugin_count
                        });
                        n.on("mouseup",
                        function(b) {
                            if (r === l.plugin_count && !v && !a.disable) {
                                b = b.pageX;
                                J = !1;
                                b -= n.offset().left;
                                var h = f.fromX + (f.toX - f.fromX) / 2;
                                S = 0;
                                V = p.width() - G;
                                T = p.width() - G;
                                "single" === a.type ? (q = x, q.prop("id", "irs-active-slider"), W(b)) : "double" === a.type && (q = b <= h ? m: s, q.prop("id", "irs-active-slider"), W(b), L());
                                q.removeAttr("id");
                                q = null
                            }
                        });
                        X && (P.on("touchend",
                        function() {
                            v && (v = y = !1, q.removeAttr("id"), q = null, "double" === a.type && L(), $())
                        }), P.on("touchmove",
                        function(a) {
                            v && (U = a.originalEvent.touches[0].pageX, W())
                        }));
                        ca();
                        ha();
                        a.hasGrid && ia();
                        a.disable ? (n.addClass("irs-disabled"), n.append('<span class="irs-disable-mask"></span>')) : (n.removeClass("irs-disabled"), n.find(".irs-disable-mask").remove())
                    },
                    ca = function() {
                        t = p.width();
                        G = x ? x.width() : m.width();
                        F = t - G
                    },
                    K = function(b, d, h) {
                        ca();
                        J = !1;
                        q = d;
                        q.prop("id", "irs-active-slider");
                        d = q.offset().left;
                        Z = d + (b.pageX - d) - q.position().left;
                        "single" === a.type ? V = p.width() - G: "double" === a.type && ("from" === h ? (S = 0, T = parseInt(s.css("left"), 10)) : (S = parseInt(m.css("left"), 10), T = p.width() - G))
                    },
                    L = function() {
                        var a = m.width(),
                        d = c.data(m[0], "x") || parseInt(m[0].style.left, 10) || m.position().left,
                        h = (c.data(s[0], "x") || parseInt(s[0].style.left, 10) || s.position().left) - d;
                        H[0].style.left = d + a / 2 + "px";
                        H[0].style.width = h + "px"
                    },
                    W = function(b) {
                        var d = U - Z,
                        d = b ? b: U - Z;
                        "single" === a.type ? (0 > d && (d = 0), d > V && (d = V)) : "double" === a.type && (d < S && (d = S), d > T && (d = T), L());
                        c.data(q[0], "x", d);
                        $();
                        b = Math.round(d);
                        q[0].style.left = b + "px"
                    },
                    $ = function() {
                        var b = {
                            input: e,
                            slider: n,
                            min: a.min,
                            max: a.max,
                            fromNumber: 0,
                            toNumber: 0,
                            fromPers: 0,
                            toPers: 0,
                            fromX: 0,
                            fromX_pure: 0,
                            toX: 0,
                            toX_pure: 0
                        },
                        d = a.max - a.min,
                        h;
                        "single" === a.type ? (b.fromX = c.data(x[0], "x") || parseInt(x[0].style.left, 10) || x.position().left, b.fromPers = b.fromX / F * 100, h = d / 100 * b.fromPers + a.min, b.fromNumber = Math.round(h / a.step) * a.step, b.fromNumber < a.min && (b.fromNumber = a.min), b.fromNumber > a.max && (b.fromNumber = a.max), u && (b.fromNumber = parseInt(b.fromNumber * u, 10) / u), I && (b.fromValue = a.values[b.fromNumber])) : "double" === a.type && (b.fromX = c.data(m[0], "x") || parseInt(m[0].style.left, 10) || m.position().left, b.fromPers = b.fromX / F * 100, h = d / 100 * b.fromPers + a.min, b.fromNumber = Math.round(h / a.step) * a.step, b.fromNumber < a.min && (b.fromNumber = a.min), b.toX = c.data(s[0], "x") || parseInt(s[0].style.left, 10) || s.position().left, b.toPers = b.toX / F * 100, d = d / 100 * b.toPers + a.min, b.toNumber = Math.round(d / a.step) * a.step, b.toNumber > a.max && (b.toNumber = a.max), u && (b.fromNumber = parseInt(b.fromNumber * u, 10) / u, b.toNumber = parseInt(b.toNumber * u, 10) / u), I && (b.fromValue = a.values[b.fromNumber], b.toValue = a.values[b.toNumber]));
                        f = b;
                        da()
                    },
                    ha = function() {
                        var b = {
                            input: e,
                            slider: n,
                            min: a.min,
                            max: a.max,
                            fromNumber: a.from,
                            toNumber: a.to,
                            fromPers: 0,
                            toPers: 0,
                            fromX: 0,
                            fromX_pure: 0,
                            toX: 0,
                            toX_pure: 0
                        },
                        d = a.max - a.min;
                        "single" === a.type ? (b.fromPers = 0 !== d ? (b.fromNumber - a.min) / d * 100 : 0, b.fromX_pure = F / 100 * b.fromPers, b.fromX = Math.round(b.fromX_pure), x[0].style.left = b.fromX + "px", c.data(x[0], "x", b.fromX_pure)) : "double" === a.type && (b.fromPers = 0 !== d ? (b.fromNumber - a.min) / d * 100 : 0, b.fromX_pure = F / 100 * b.fromPers, b.fromX = Math.round(b.fromX_pure), m[0].style.left = b.fromX + "px", c.data(m[0], "x", b.fromX_pure), b.toPers = 0 !== d ? (b.toNumber - a.min) / d * 100 : 1, b.toX_pure = F / 100 * b.toPers, b.toX = Math.round(b.toX_pure), s[0].style.left = b.toX + "px", c.data(s[0], "x", b.toX_pure), L());
                        f = b;
                        da()
                    },
                    da = function() {
                        var b, d, h, c, g, k;
                        k = G / 2;
                        h = "";
                        "single" === a.type ? (h = f.fromNumber === a.max ? a.maxPostfix: "", A[0].style.display = "none", B[0].style.display = "none", h = I ? a.prefix + a.values[f.fromNumber] + h + a.postfix: a.prefix + z(f.fromNumber) + h + a.postfix, w.html(h), g = w.outerWidth(!1), k = f.fromX - g / 2 + k, 0 > k && (k = 0), k > t - g && (k = t - g), w[0].style.left = k + "px", a.hideMinMax || a.hideFromTo || (D[0].style.display = k < Q ? "none": "block", E[0].style.display = k + g > t - R ? "none": "block"), e.prop("value", parseFloat(f.fromNumber))) : "double" === a.type && (h = f.toNumber === a.max ? a.maxPostfix: "", I ? (b = a.prefix + a.values[f.fromNumber] + a.postfix, d = a.prefix + a.values[f.toNumber] + h + a.postfix, h = f.fromNumber !== f.toNumber ? a.prefix + a.values[f.fromNumber] + " \u2014 " + a.prefix + a.values[f.toNumber] + h + a.postfix: a.prefix + a.values[f.fromNumber] + h + a.postfix) : (b = a.prefix + z(f.fromNumber) + a.postfix, d = a.prefix + z(f.toNumber) + h + a.postfix, h = f.fromNumber !== f.toNumber ? a.prefix + z(f.fromNumber) + " \u2014 " + a.prefix + z(f.toNumber) + h + a.postfix: a.prefix + z(f.fromNumber) + h + a.postfix), A.html(b), B.html(d), w.html(h), b = A.outerWidth(!1), d = f.fromX - b / 2 + k, 0 > d && (d = 0), d > t - b && (d = t - b), A[0].style.left = d + "px", h = B.outerWidth(!1), c = f.toX - h / 2 + k, 0 > c && (c = 0), c > t - h && (c = t - h), B[0].style.left = c + "px", g = w.outerWidth(!1), k = f.fromX + (f.toX - f.fromX) / 2 - g / 2 + k, 0 > k && (k = 0), k > t - g && (k = t - g), w[0].style.left = k + "px", d + b < c ? (w[0].style.display = "none", A[0].style.display = "block", B[0].style.display = "block") : (w[0].style.display = "block", A[0].style.display = "none", B[0].style.display = "none"), a.hideMinMax || a.hideFromTo || (D[0].style.display = k < Q || d < Q ? "none": "block", E[0].style.display = k + g > t - R || c + h > t - R ? "none": "block"), e.prop("value", parseFloat(f.fromNumber) + ";" + parseFloat(f.toNumber)));
                        a.from = f.fromNumber;
                        a.to = f.toNumber;
                        ja()
                    },
                    ja = function() {
                        "function" !== typeof a.onFinish || y || J || a.onFinish.call(this, f);
                        "function" !== typeof a.onChange || J || a.onChange.call(this, f);
                        "function" === typeof a.onLoad && !y && J && (a.onLoad.call(this, f), J = !1)
                    },
                    ia = function() {
                        n.addClass("irs-with-grid");
                        var b, d = "",
                        c = 0,
                        c = 0,
                        e = "",
                        f = t - 2 * a.gridMargin;
                        for (b = 0; 20 >= b; b += 1) c = Math.floor(f / 20 * b),
                        c >= f && (c = f - 1),
                        e += '<span class="irs-grid-pol small" style="left: ' + c + 'px;"></span>';
                        for (b = 0; 4 >= b; b += 1) c = Math.floor(f / 4 * b),
                        c >= f && (c = f - 1),
                        e += '<span class="irs-grid-pol" style="left: ' + c + 'px;"></span>',
                        u ? (d = a.min + (a.max - a.min) / 4 * b, d = d / a.step * a.step, d = parseInt(d * u, 10) / u) : (d = Math.round(a.min + (a.max - a.min) / 4 * b), d = Math.round(d / a.step) * a.step, d = z(d)),
                        I && (a.hideMinMax ? (d = Math.round(a.min + (a.max - a.min) / 4 * b), d = Math.round(d / a.step) * a.step, d = 0 === b || 4 === b ? a.values[d] : "") : d = ""),
                        0 === b ? e += '<span class="irs-grid-text" style="left: ' + c + 'px; text-align: left;">' + d + "</span>": 4 === b ? (c -= 100, e += '<span class="irs-grid-text" style="left: ' + c + 'px; text-align: right;">' + d + "</span>") : (c -= 50, e += '<span class="irs-grid-text" style="left: ' + c + 'px;">' + d + "</span>");
                        Y.html(e);
                        Y[0].style.left = a.gridMargin + "px"
                    };
                    M()
                }
            })
        },
        update: function(c) {
            return this.each(function() {
                this.updateData(c)
            })
        },
        remove: function() {
            return this.each(function() {
                this.removeSlider()
            })
        }
    };
    //www.jq22.com
    c.fn.ionRangeSlider = function(r) {
        if (H[r]) return H[r].apply(this, Array.prototype.slice.call(arguments, 1));
        if ("object" !== typeof r && r) c.error("Method " + r + " does not exist for jQuery.ionRangeSlider");
        else return H.init.apply(this, arguments)
    }
})(jQuery, document, window, navigator);

猜你喜欢

转载自blog.csdn.net/wangmeng0804/article/details/94740773