Welcome to mirror list, hosted at ThFree Co, Russian Federation.

jquery.jscrollpane.min.js « js « UserControls « calendar « addons « ASC.Web.Studio « studio « web - github.com/ONLYOFFICE/CommunityServer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 310af3b54bf4a5d01600bccd9b1d25c3e6ba6fa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * jScrollPane - v2.0.0beta11 - 2011-05-02
 * http://jscrollpane.kelvinluck.com/
 *
 * Copyright (c) 2010 Kelvin Luck
 * Dual licensed under the MIT and GPL licenses.
 */
(function (b, a, c) {
    b.fn.jScrollPane = function (e) {
        function d(D, O) {
            var az, Q = this, Y, ak, v, am, T, Z, y, q, aA, aF, av, i, I, h, j, aa, U, aq, X, t, A, ar, af, an, G, l, au, ay, x, aw, aI, f, L, aj = true, P = true, aH = false, k = false, ap = D.clone(false, false).empty(), ac = b.fn.mwheelIntent ? "mwheelIntent.jsp" : "mousewheel.jsp"; aI = D.css("paddingTop") + " " + D.css("paddingRight") + " " + D.css("paddingBottom") + " " + D.css("paddingLeft"); f = (parseInt(D.css("paddingLeft"), 10) || 0) + (parseInt(D.css("paddingRight"), 10) || 0); function at(aR) { var aM, aO, aN, aK, aJ, aQ, aP = false, aL = false; az = aR; if (Y === c) { aJ = D.scrollTop(); aQ = D.scrollLeft(); D.css({ overflow: "hidden", padding: 0 }); ak = D.innerWidth() + f; v = D.innerHeight(); D.width(ak); Y = b('<div class="jspPane" />').css("padding", aI).append(D.children()); am = b('<div class="jspContainer" />').css({ width: ak + "px", height: v + "px" }).append(Y).appendTo(D) } else { D.css("width", ""); aP = az.stickToBottom && K(); aL = az.stickToRight && B(); aK = D.innerWidth() + f != ak || D.outerHeight() != v; if (aK) { ak = D.innerWidth() + f; v = D.innerHeight(); am.css({ width: ak + "px", height: v + "px" }) } if (!aK && L == T && Y.outerHeight() == Z) { D.width(ak); return } L = T; Y.css("width", ""); D.width(ak); am.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end() } Y.css("overflow", "auto"); if (aR.contentWidth) { T = aR.contentWidth } else { T = Y[0].scrollWidth } Z = Y[0].scrollHeight; Y.css("overflow", ""); y = T / ak; q = Z / v; aA = q > 1; aF = y > 1; if (!(aF || aA)) { D.removeClass("jspScrollable"); Y.css({ top: 0, width: am.width() - f }); n(); E(); R(); w(); ai() } else { D.addClass("jspScrollable"); aM = az.maintainPosition && (I || aa); if (aM) { aO = aD(); aN = aB() } aG(); z(); F(); if (aM) { N(aL ? (T - ak) : aO, false); M(aP ? (Z - v) : aN, false) } J(); ag(); ao(); if (az.enableKeyboardNavigation) { S() } if (az.clickOnTrack) { p() } C(); if (az.hijackInternalLinks) { m() } } if (az.autoReinitialise && !aw) { aw = setInterval(function () { at(az) }, az.autoReinitialiseDelay) } else { if (!az.autoReinitialise && aw) { clearInterval(aw) } } aJ && D.scrollTop(0) && M(aJ, false); aQ && D.scrollLeft(0) && N(aQ, false); D.trigger("jsp-initialised", [aF || aA]) } function aG() { if (aA) { am.append(b('<div class="jspVerticalBar" />').append(b('<div class="jspCap jspCapTop" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragTop" />'), b('<div class="jspDragBottom" />'))), b('<div class="jspCap jspCapBottom" />'))); U = am.find(">.jspVerticalBar"); aq = U.find(">.jspTrack"); av = aq.find(">.jspDrag"); if (az.showArrows) { ar = b('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp", aE(0, -1)).bind("click.jsp", aC); af = b('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp", aE(0, 1)).bind("click.jsp", aC); if (az.arrowScrollOnHover) { ar.bind("mouseover.jsp", aE(0, -1, ar)); af.bind("mouseover.jsp", aE(0, 1, af)) } al(aq, az.verticalArrowPositions, ar, af) } t = v; am.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function () { t -= b(this).outerHeight() }); av.hover(function () { av.addClass("jspHover") }, function () { av.removeClass("jspHover") }).bind("mousedown.jsp", function (aJ) { b("html").bind("dragstart.jsp selectstart.jsp", aC); av.addClass("jspActive"); var s = aJ.pageY - av.position().top; b("html").bind("mousemove.jsp", function (aK) { V(aK.pageY - s, false) }).bind("mouseup.jsp mouseleave.jsp", ax); return false }); o() } } function o() { aq.height(t + "px"); I = 0; X = az.verticalGutter + aq.outerWidth(); Y.width(ak - X - f); try { if (U.position().left === 0) { Y.css("margin-left", X + "px") } } catch (s) { } } function z() {
                if (aF) {
                    am.append(b('<div class="jspHorizontalBar" />').append(b('<div class="jspCap jspCapLeft" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragLeft" />'), b('<div class="jspDragRight" />'))), b('<div class="jspCap jspCapRight" />'))); an = am.find(">.jspHorizontalBar"); G = an.find(">.jspTrack"); h = G.find(">.jspDrag"); if (az.showArrows) {
                        ay = b('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp", aE(-1, 0)).bind("click.jsp", aC); x = b('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp", aE(1, 0)).bind("click.jsp", aC);
                        if (az.arrowScrollOnHover) { ay.bind("mouseover.jsp", aE(-1, 0, ay)); x.bind("mouseover.jsp", aE(1, 0, x)) } al(G, az.horizontalArrowPositions, ay, x)
                    } h.hover(function () { h.addClass("jspHover") }, function () { h.removeClass("jspHover") }).bind("mousedown.jsp", function (aJ) { b("html").bind("dragstart.jsp selectstart.jsp", aC); h.addClass("jspActive"); var s = aJ.pageX - h.position().left; b("html").bind("mousemove.jsp", function (aK) { W(aK.pageX - s, false) }).bind("mouseup.jsp mouseleave.jsp", ax); return false }); l = am.innerWidth(); ah()
                }
            } function ah() { am.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function () { l -= b(this).outerWidth() }); G.width(l + "px"); aa = 0 } function F() { if (aF && aA) { var aJ = G.outerHeight(), s = aq.outerWidth(); t -= aJ; b(an).find(">.jspCap:visible,>.jspArrow").each(function () { l += b(this).outerWidth() }); l -= s; v -= s; ak -= aJ; G.parent().append(b('<div class="jspCorner" />').css("width", aJ + "px")); o(); ah() } if (aF) { Y.width((am.outerWidth() - f) + "px") } Z = Y.outerHeight(); q = Z / v; if (aF) { au = Math.ceil(1 / y * l); if (au > az.horizontalDragMaxWidth) { au = az.horizontalDragMaxWidth } else { if (au < az.horizontalDragMinWidth) { au = az.horizontalDragMinWidth } } h.width(au + "px"); j = l - au; ae(aa) } if (aA) { A = Math.ceil(1 / q * t); if (A > az.verticalDragMaxHeight) { A = az.verticalDragMaxHeight } else { if (A < az.verticalDragMinHeight) { A = az.verticalDragMinHeight } } av.height(A + "px"); i = t - A; ad(I) } } function al(aK, aM, aJ, s) { var aO = "before", aL = "after", aN; if (aM == "os") { aM = /Mac/.test(navigator.platform) ? "after" : "split" } if (aM == aO) { aL = aM } else { if (aM == aL) { aO = aM; aN = aJ; aJ = s; s = aN } } aK[aO](aJ)[aL](s) } function aE(aJ, s, aK) { return function () { H(aJ, s, this, aK); this.blur(); return false } } function H(aM, aL, aP, aO) { aP = b(aP).addClass("jspActive"); var aN, aK, aJ = true, s = function () { if (aM !== 0) { Q.scrollByX(aM * az.arrowButtonSpeed) } if (aL !== 0) { Q.scrollByY(aL * az.arrowButtonSpeed) } aK = setTimeout(s, aJ ? az.initialDelay : az.arrowRepeatFreq); aJ = false }; s(); aN = aO ? "mouseout.jsp" : "mouseup.jsp"; aO = aO || b("html"); aO.bind(aN, function () { aP.removeClass("jspActive"); aK && clearTimeout(aK); aK = null; aO.unbind(aN) }) } function p() { w(); if (aA) { aq.bind("mousedown.jsp", function (aO) { if (aO.originalTarget === c || aO.originalTarget == aO.currentTarget) { var aM = b(this), aP = aM.offset(), aN = aO.pageY - aP.top - I, aK, aJ = true, s = function () { var aS = aM.offset(), aT = aO.pageY - aS.top - A / 2, aQ = v * az.scrollPagePercent, aR = i * aQ / (Z - v); if (aN < 0) { if (I - aR > aT) { Q.scrollByY(-aQ) } else { V(aT) } } else { if (aN > 0) { if (I + aR < aT) { Q.scrollByY(aQ) } else { V(aT) } } else { aL(); return } } aK = setTimeout(s, aJ ? az.initialDelay : az.trackClickRepeatFreq); aJ = false }, aL = function () { aK && clearTimeout(aK); aK = null; b(document).unbind("mouseup.jsp", aL) }; s(); b(document).bind("mouseup.jsp", aL); return false } }) } if (aF) { G.bind("mousedown.jsp", function (aO) { if (aO.originalTarget === c || aO.originalTarget == aO.currentTarget) { var aM = b(this), aP = aM.offset(), aN = aO.pageX - aP.left - aa, aK, aJ = true, s = function () { var aS = aM.offset(), aT = aO.pageX - aS.left - au / 2, aQ = ak * az.scrollPagePercent, aR = j * aQ / (T - ak); if (aN < 0) { if (aa - aR > aT) { Q.scrollByX(-aQ) } else { W(aT) } } else { if (aN > 0) { if (aa + aR < aT) { Q.scrollByX(aQ) } else { W(aT) } } else { aL(); return } } aK = setTimeout(s, aJ ? az.initialDelay : az.trackClickRepeatFreq); aJ = false }, aL = function () { aK && clearTimeout(aK); aK = null; b(document).unbind("mouseup.jsp", aL) }; s(); b(document).bind("mouseup.jsp", aL); return false } }) } } function w() { if (G) { G.unbind("mousedown.jsp") } if (aq) { aq.unbind("mousedown.jsp") } } function ax() { b("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp"); if (av) { av.removeClass("jspActive") } if (h) { h.removeClass("jspActive") } } function V(s, aJ) { if (!aA) { return } if (s < 0) { s = 0 } else { if (s > i) { s = i } } if (aJ === c) { aJ = az.animateScroll } if (aJ) { Q.animate(av, "top", s, ad) } else { av.css("top", s); ad(s) } } function ad(aJ) { if (aJ === c) { aJ = av.position().top } am.scrollTop(0); I = aJ; var aM = I === 0, aK = I == i, aL = aJ / i, s = -aL * (Z - v); if (aj != aM || aH != aK) { aj = aM; aH = aK; D.trigger("jsp-arrow-change", [aj, aH, P, k]) } u(aM, aK); Y.css("top", s); D.trigger("jsp-scroll-y", [-s, aM, aK]).trigger("scroll") } function W(aJ, s) {
                if (!aF) { return } if (aJ < 0) { aJ = 0 } else { if (aJ > j) { aJ = j } } if (s === c) { s = az.animateScroll } if (s) {
                    Q.animate(h, "left", aJ, ae)
                } else { h.css("left", aJ); ae(aJ) }
            } function ae(aJ) { if (aJ === c) { aJ = h.position().left } am.scrollTop(0); aa = aJ; var aM = aa === 0, aL = aa == j, aK = aJ / j, s = -aK * (T - ak); if (P != aM || k != aL) { P = aM; k = aL; D.trigger("jsp-arrow-change", [aj, aH, P, k]) } r(aM, aL); Y.css("left", s); D.trigger("jsp-scroll-x", [-s, aM, aL]).trigger("scroll") } function u(aJ, s) { if (az.showArrows) { ar[aJ ? "addClass" : "removeClass"]("jspDisabled"); af[s ? "addClass" : "removeClass"]("jspDisabled") } } function r(aJ, s) { if (az.showArrows) { ay[aJ ? "addClass" : "removeClass"]("jspDisabled"); x[s ? "addClass" : "removeClass"]("jspDisabled") } } function M(s, aJ) { var aK = s / (Z - v); V(aK * i, aJ) } function N(aJ, s) { var aK = aJ / (T - ak); W(aK * j, s) } function ab(aW, aR, aK) { var aO, aL, aM, s = 0, aV = 0, aJ, aQ, aP, aT, aS, aU; try { aO = b(aW) } catch (aN) { return } aL = aO.outerHeight(); aM = aO.outerWidth(); am.scrollTop(0); am.scrollLeft(0); while (!aO.is(".jspPane")) { s += aO.position().top; aV += aO.position().left; aO = aO.offsetParent(); if (/^body|html$/i.test(aO[0].nodeName)) { return } } aJ = aB(); aP = aJ + v; if (s < aJ || aR) { aS = s - az.verticalGutter } else { if (s + aL > aP) { aS = s - v + aL + az.verticalGutter } } if (aS) { M(aS, aK) } aQ = aD(); aT = aQ + ak; if (aV < aQ || aR) { aU = aV - az.horizontalGutter } else { if (aV + aM > aT) { aU = aV - ak + aM + az.horizontalGutter } } if (aU) { N(aU, aK) } } function aD() { return -Y.position().left } function aB() { return -Y.position().top } function K() { var s = Z - v; return (s > 20) && (s - aB() < 10) } function B() { var s = T - ak; return (s > 20) && (s - aD() < 10) } function ag() { am.unbind(ac).bind(ac, function (aM, aN, aL, aJ) { var aK = aa, s = I; Q.scrollBy(aL * az.mouseWheelSpeed, -aJ * az.mouseWheelSpeed, false); return aK == aa && s == I }) } function n() { am.unbind(ac) } function aC() { return false } function J() { Y.find(":input,a").unbind("focus.jsp").bind("focus.jsp", function (s) { ab(s.target, false) }) } function E() { Y.find(":input,a").unbind("focus.jsp") } function S() { var s, aJ, aL = []; aF && aL.push(an[0]); aA && aL.push(U[0]); Y.focus(function () { D.focus() }); D.attr("tabindex", 0).unbind("keydown.jsp keypress.jsp").bind("keydown.jsp", function (aO) { if (aO.target !== this && !(aL.length && b(aO.target).closest(aL).length)) { return } var aN = aa, aM = I; switch (aO.keyCode) { case 40: case 38: case 34: case 32: case 33: case 39: case 37: s = aO.keyCode; aK(); break; case 35: M(Z - v); s = null; break; case 36: M(0); s = null; break } aJ = aO.keyCode == s && aN != aa || aM != I; return !aJ }).bind("keypress.jsp", function (aM) { if (aM.keyCode == s) { aK() } return !aJ }); if (az.hideFocus) { D.css("outline", "none"); if ("hideFocus" in am[0]) { D.attr("hideFocus", true) } } else { D.css("outline", ""); if ("hideFocus" in am[0]) { D.attr("hideFocus", false) } } function aK() { var aN = aa, aM = I; switch (s) { case 40: Q.scrollByY(az.keyboardSpeed, false); break; case 38: Q.scrollByY(-az.keyboardSpeed, false); break; case 34: case 32: Q.scrollByY(v * az.scrollPagePercent, false); break; case 33: Q.scrollByY(-v * az.scrollPagePercent, false); break; case 39: Q.scrollByX(az.keyboardSpeed, false); break; case 37: Q.scrollByX(-az.keyboardSpeed, false); break } aJ = aN != aa || aM != I; return aJ } } function R() { D.attr("tabindex", "-1").removeAttr("tabindex").unbind("keydown.jsp keypress.jsp") } function C() { if (location.hash && location.hash.length > 1) { var aK, aJ; try { aK = b(location.hash) } catch (s) { return } if (aK.length && Y.find(location.hash)) { if (am.scrollTop() === 0) { aJ = setInterval(function () { if (am.scrollTop() > 0) { ab(location.hash, true); b(document).scrollTop(am.position().top); clearInterval(aJ) } }, 50) } else { ab(location.hash, true); b(document).scrollTop(am.position().top) } } } } function ai() { b("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack") } function m() { ai(); b("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack", function () { var s = this.href.split("#"), aJ; if (s.length > 1) { aJ = s[1]; if (aJ.length > 0 && Y.find("#" + aJ).length > 0) { ab("#" + aJ, true); return false } } }) } function ao() {
                var aK, aJ, aM, aL, aN, s = false; am.unbind("touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick").bind("touchstart.jsp", function (aO) { var aP = aO.originalEvent.touches[0]; aK = aD(); aJ = aB(); aM = aP.pageX; aL = aP.pageY; aN = false; s = true }).bind("touchmove.jsp", function (aR) {
                    if (!s) { return } var aQ = aR.originalEvent.touches[0], aP = aa, aO = I; Q.scrollTo(aK + aM - aQ.pageX, aJ + aL - aQ.pageY); aN = aN || Math.abs(aM - aQ.pageX) > 5 || Math.abs(aL - aQ.pageY) > 5;
                    return aP == aa && aO == I
                }).bind("touchend.jsp", function (aO) { s = false }).bind("click.jsp-touchclick", function (aO) { if (aN) { aN = false; return false } })
            } function g() { var s = aB(), aJ = aD(); D.removeClass("jspScrollable").unbind(".jsp"); D.replaceWith(ap.append(Y.children())); ap.scrollTop(s); ap.scrollLeft(aJ) } b.extend(Q, { reinitialise: function (aJ) { aJ = b.extend({}, az, aJ); at(aJ) }, scrollToElement: function (aK, aJ, s) { ab(aK, aJ, s) }, scrollTo: function (aK, s, aJ) { N(aK, aJ); M(s, aJ) }, scrollToX: function (aJ, s) { N(aJ, s) }, scrollToY: function (s, aJ) { M(s, aJ) }, scrollToPercentX: function (aJ, s) { N(aJ * (T - ak), s) }, scrollToPercentY: function (aJ, s) { M(aJ * (Z - v), s) }, scrollBy: function (aJ, s, aK) { Q.scrollByX(aJ, aK); Q.scrollByY(s, aK) }, scrollByX: function (s, aK) { s = (s >= 0) ? Math.max(s, 1) : Math.min(s, -1); var aJ = aD() + s, aL = aJ / (T - ak); W(aL * j, aK) }, scrollByY: function (s, aK) { s = (s >= 0) ? Math.max(s, 1) : Math.min(s, -1); var aJ = aB() + s, aL = aJ / (Z - v); V(aL * i, aK) }, positionDragX: function (s, aJ) { W(s, aJ) }, positionDragY: function (aJ, s) { V(aJ, s) }, animate: function (aJ, aM, s, aL) { var aK = {}; aK[aM] = s; aJ.animate(aK, { duration: az.animateDuration, ease: az.animateEase, queue: false, step: aL }) }, getContentPositionX: function () { return aD() }, getContentPositionY: function () { return aB() }, getContentWidth: function () { return T }, getContentHeight: function () { return Z }, getPercentScrolledX: function () { return aD() / (T - ak) }, getPercentScrolledY: function () { return aB() / (Z - v) }, getIsScrollableH: function () { return aF }, getIsScrollableV: function () { return aA }, getContentPane: function () { return Y }, scrollToBottom: function (s) { V(i, s) }, hijackInternalLinks: function () { m() }, destroy: function () { g() } }); at(O)
        } e = b.extend({}, b.fn.jScrollPane.defaults, e); b.each(["mouseWheelSpeed", "arrowButtonSpeed", "trackClickSpeed", "keyboardSpeed"], function () { e[this] = e[this] || e.speed }); return this.each(function () { var f = b(this), g = f.data("jsp"); if (g) { g.reinitialise(e) } else { g = new d(f, e); f.data("jsp", g) } })
    }; b.fn.jScrollPane.defaults = { showArrows: false, maintainPosition: true, stickToBottom: false, stickToRight: false, clickOnTrack: true, autoReinitialise: false, autoReinitialiseDelay: 500, verticalDragMinHeight: 0, verticalDragMaxHeight: 99999, horizontalDragMinWidth: 0, horizontalDragMaxWidth: 99999, contentWidth: c, animateScroll: false, animateDuration: 300, animateEase: "linear", hijackInternalLinks: false, verticalGutter: 4, horizontalGutter: 4, mouseWheelSpeed: 0, arrowButtonSpeed: 0, arrowRepeatFreq: 50, arrowScrollOnHover: false, trackClickSpeed: 0, trackClickRepeatFreq: 70, verticalArrowPositions: "split", horizontalArrowPositions: "split", enableKeyboardNavigation: true, hideFocus: false, keyboardSpeed: 0, initialDelay: 300, speed: 30, scrollPagePercent: 0.8 }
})(jQuery, this);