/* jquery.nicescroll 3.6.0 InuYaksa*2014 MIT http://nicescroll.areaaperta.com */(function(f) { "function" === typeof define && define.amd ? define(["jquery"], f) : f(jQuery) })(function(f) { var y = !1, D = !1, N = 0, O = 2E3, x = 0, H = ["webkit", "ms", "moz", "o"], s = window.requestAnimationFrame || !1, t = window.cancelAnimationFrame || !1; if (!s) for (var P in H) { var E = H[P]; s || (s = window[E + "RequestAnimationFrame"]); t || (t = window[E + "CancelAnimationFrame"] || window[E + "CancelRequestAnimationFrame"]) } var v = window.MutationObserver || window.WebKitMutationObserver || !1, I = {zindex: "auto",cursoropacitymin: 0,cursoropacitymax: 1,cursorcolor: "#424242", cursorwidth: "5px",cursorborder: "1px solid #fff",cursorborderradius: "5px",scrollspeed: 60,mousescrollstep: 24,touchbehavior: !1,hwacceleration: !0,usetransition: !0,boxzoom: !1,dblclickzoom: !0,gesturezoom: !0,grabcursorenabled: !0,autohidemode: !0,background: "",iframeautoresize: !0,cursorminheight: 32,preservenativescrolling: !0,railoffset: !1,railhoffset: !1,bouncescroll: !0,spacebarenabled: !0,railpadding: {top: 0,right: 0,left: 0,bottom: 0},disableoutline: !0,horizrailenabled: !0,railalign: "right",railvalign: "bottom", enabletranslate3d: !0,enablemousewheel: !0,enablekeyboard: !0,smoothscroll: !0,sensitiverail: !0,enablemouselockapi: !0,cursorfixedheight: !1,directionlockdeadzone: 6,hidecursordelay: 400,nativeparentscrolling: !0,enablescrollonselection: !0,overflowx: !0,overflowy: !0,cursordragspeed: .3,rtlmode: "auto",cursordragontouch: !1,oneaxismousemode: "auto",scriptpath: function() { var f = document.getElementsByTagName("script"), f = f[f.length - 1].src.split("?")[0]; return 0 < f.split("/").length ? f.split("/").slice(0, -1).join("/") + "/" : "" }(),preventmultitouchscrolling: !0}, F = !1, Q = function() { if (F) return F; var f = document.createElement("DIV"), c = f.style, h = navigator.userAgent, m = navigator.platform, d = {haspointerlock: "pointerLockElement" in document || "webkitPointerLockElement" in document || "mozPointerLockElement" in document}; d.isopera = "opera" in window; d.isopera12 = d.isopera && "getUserMedia" in navigator; d.isoperamini = "[object OperaMini]" === Object.prototype.toString.call(window.operamini); d.isie = "all" in document && "attachEvent" in f && !d.isopera; d.isieold = d.isie && !("msInterpolationMode" in c); d.isie7 = d.isie && !d.isieold && (!("documentMode" in document) || 7 == document.documentMode); d.isie8 = d.isie && "documentMode" in document && 8 == document.documentMode; d.isie9 = d.isie && "performance" in window && 9 <= document.documentMode; d.isie10 = d.isie && "performance" in window && 10 == document.documentMode; d.isie11 = "msRequestFullscreen" in f && 11 <= document.documentMode; d.isie9mobile = /iemobile.9/i.test(h); d.isie9mobile && (d.isie9 = !1); d.isie7mobile = !d.isie9mobile && d.isie7 && /iemobile/i.test(h); d.ismozilla = "MozAppearance" in c; d.iswebkit = "WebkitAppearance" in c; d.ischrome = "chrome" in window; d.ischrome22 = d.ischrome && d.haspointerlock; d.ischrome26 = d.ischrome && "transition" in c; d.cantouch = "ontouchstart" in document.documentElement || "ontouchstart" in window; d.hasmstouch = window.MSPointerEvent || !1; d.hasw3ctouch = window.PointerEvent || !1; d.ismac = /^mac$/i.test(m); d.isios = d.cantouch && /iphone|ipad|ipod/i.test(m); d.isios4 = d.isios && !("seal" in Object); d.isios7 = d.isios && "webkitHidden" in document; d.isandroid = /android/i.test(h); d.haseventlistener = "addEventListener" in f; d.trstyle = !1; d.hastransform = !1; d.hastranslate3d = !1; d.transitionstyle = !1; d.hastransition = !1; d.transitionend = !1; m = ["transform", "msTransform", "webkitTransform", "MozTransform", "OTransform"]; for (h = 0; h < m.length; h++) if ("undefined" != typeof c[m[h]]) { d.trstyle = m[h]; break } d.hastransform = !!d.trstyle; d.hastransform && (c[d.trstyle] = "translate3d(1px,2px,3px)", d.hastranslate3d = /translate3d/.test(c[d.trstyle])); d.transitionstyle = !1; d.prefixstyle = ""; d.transitionend = !1; for (var m = "transition webkitTransition msTransition MozTransition OTransition OTransition KhtmlTransition".split(" "), n = " -webkit- -ms- -moz- -o- -o -khtml-".split(" "), p = "transitionend webkitTransitionEnd msTransitionEnd transitionend otransitionend oTransitionEnd KhtmlTransitionEnd".split(" "), h = 0; h < m.length; h++) if (m[h] in c) { d.transitionstyle = m[h]; d.prefixstyle = n[h]; d.transitionend = p[h]; break } d.ischrome26 && (d.prefixstyle = n[1]); d.hastransition = d.transitionstyle; a: { h = ["-webkit-grab", "-moz-grab", "grab"]; if (d.ischrome && !d.ischrome22 || d.isie) h = []; for (m = 0; m < h.length; m++) if (n = h[m], c.cursor = n, c.cursor == n) { c = n; break a } c = "url(//mail.google.com/mail/images/2/openhand.cur),n-resize" } d.cursorgrabvalue = c; d.hasmousecapture = "setCapture" in f; d.hasMutationObserver = !1 !== v; return F = d }, R = function(k, c) { function h() { var b = a.doc.css(e.trstyle); return b && "matrix" == b.substr(0, 6) ? b.replace(/^.*\((.*)\)$/g, "$1").replace(/px/g, "").split(/, +/) : !1 } function m() { var b = a.win; if ("zIndex" in b) return b.zIndex(); for (; 0 < b.length && 9 != b[0].nodeType; ) { var g = b.css("zIndex"); if (!isNaN(g) && 0 != g) return parseInt(g); b = b.parent() } return !1 } function d(b, g, q) { g = b.css(g); b = parseFloat(g); return isNaN(b) ? (b = w[g] || 0, q = 3 == b ? q ? a.win.outerHeight() - a.win.innerHeight() : a.win.outerWidth() - a.win.innerWidth() : 1, a.isie8 && b && (b += 1), q ? b : 0) : b } function n(b, g, q, c) { a._bind(b, g, function(a) { a = a ? a : window.event; var c = {original: a,target: a.target || a.srcElement,type: "wheel",deltaMode: "MozMousePixelScroll" == a.type ? 0 : 1,deltaX: 0,deltaZ: 0,preventDefault: function() { a.preventDefault ? a.preventDefault() : a.returnValue = !1; return !1 },stopImmediatePropagation: function() { a.stopImmediatePropagation ? a.stopImmediatePropagation() : a.cancelBubble = !0 }}; "mousewheel" == g ? (c.deltaY = -.025 * a.wheelDelta, a.wheelDeltaX && (c.deltaX = -.025 * a.wheelDeltaX)) : c.deltaY = a.detail; return q.call(b, c) }, c) } function p(b, g, c) { var d, e; 0 == b.deltaMode ? (d = -Math.floor(a.opt.mousescrollstep / 54 * b.deltaX), e = -Math.floor(a.opt.mousescrollstep / 54 * b.deltaY)) : 1 == b.deltaMode && (d = -Math.floor(b.deltaX * a.opt.mousescrollstep), e = -Math.floor(b.deltaY * a.opt.mousescrollstep)); g && a.opt.oneaxismousemode && 0 == d && e && (d = e, e = 0, c && (0 > d ? a.getScrollLeft() >= a.page.maxw : 0 >= a.getScrollLeft()) && (e = d, d = 0)); d && (a.scrollmom && a.scrollmom.stop(), a.lastdeltax += d, a.debounced("mousewheelx", function() { var b = a.lastdeltax; a.lastdeltax = 0; a.rail.drag || a.doScrollLeftBy(b) }, 15)); if (e) { if (a.opt.nativeparentscrolling && c && !a.ispage && !a.zoomactive) if (0 > e) { if (a.getScrollTop() >= a.page.maxh) return !0 } else if (0 >= a.getScrollTop()) return !0; a.scrollmom && a.scrollmom.stop(); a.lastdeltay += e; a.debounced("mousewheely", function() { var b = a.lastdeltay; a.lastdeltay = 0; a.rail.drag || a.doScrollBy(b) }, 15) } deltaYnum = b.deltaY; deltaXnum = b.deltaX; b.stopImmediatePropagation(); //return b.preventDefault() // ¸®ÅÏÇÏ´Â preventDefault °ªÀ» ¾Ë ¼ö ¾ø¾î ÁÖ¼®Ã³¸® 2020-01-10 by G.H return; } var a = this; this.version = "3.6.0"; this.name = "nicescroll"; this.me = c; this.opt = {doc: f("body"),win: !1}; f.extend(this.opt, I); this.opt.snapbackspeed = 80; if (k) for (var G in a.opt) "undefined" != typeof k[G] && (a.opt[G] = k[G]); this.iddoc = (this.doc = a.opt.doc) && this.doc[0] ? this.doc[0].id || "" : ""; this.ispage = /^BODY|HTML/.test(a.opt.win ? a.opt.win[0].nodeName : this.doc[0].nodeName); this.haswrapper = !1 !== a.opt.win; this.win = a.opt.win || (this.ispage ? f(window) : this.doc); this.docscroll = this.ispage && !this.haswrapper ? f(window) : this.win; this.body = f("body"); this.iframe = this.isfixed = this.viewport = !1; this.isiframe = "IFRAME" == this.doc[0].nodeName && "IFRAME" == this.win[0].nodeName; this.istextarea = "TEXTAREA" == this.win[0].nodeName; this.forcescreen = !1; this.canshowonmouseevent = "scroll" != a.opt.autohidemode; this.page = this.view = this.onzoomout = this.onzoomin = this.onscrollcancel = this.onscrollend = this.onscrollstart = this.onclick = this.ongesturezoom = this.onkeypress = this.onmousewheel = this.onmousemove = this.onmouseup = this.onmousedown = !1; this.scroll = {x: 0,y: 0}; this.scrollratio = {x: 0,y: 0}; this.cursorheight = 20; this.scrollvaluemax = 0; this.isrtlmode = "auto" == this.opt.rtlmode ? "rtl" == (this.win[0] == window ? this.body : this.win).css("direction") : !0 === this.opt.rtlmode; this.observerbody = this.observerremover = this.observer = this.scrollmom = this.scrollrunning = !1; do this.id = "ascrail" + O++; while (document.getElementById(this.id)); this.hasmousefocus = this.hasfocus = this.zoomactive = this.zoom = this.selectiondrag = this.cursorfreezed = this.cursor = this.rail = !1; this.visibility = !0; this.hidden = this.locked = this.railslocked = !1; this.cursoractive = !0; this.wheelprevented = !1; this.overflowx = a.opt.overflowx; this.overflowy = a.opt.overflowy; this.nativescrollingarea = !1; this.checkarea = 0; this.events = []; this.saved = {}; this.delaylist = {}; this.synclist = {}; this.lastdeltay = this.lastdeltax = 0; this.detected = Q(); var e = f.extend({}, this.detected); this.ishwscroll = (this.canhwscroll = e.hastransform && a.opt.hwacceleration) && a.haswrapper; this.hasreversehr = this.isrtlmode && !e.iswebkit; this.istouchcapable = !1; !e.cantouch || e.isios || e.isandroid || !e.iswebkit && !e.ismozilla || (this.istouchcapable = !0, e.cantouch = !1); a.opt.enablemouselockapi || (e.hasmousecapture = !1, e.haspointerlock = !1); this.debounced = function(b, g, c) { var d = a.delaylist[b]; a.delaylist[b] = g; d || setTimeout(function() { var g = a.delaylist[b]; a.delaylist[b] = !1; g.call(a) }, c) }; var r = !1; this.synched = function(b, g) { a.synclist[b] = g; (function() { r || (s(function() { r = !1; for (var b in a.synclist) { var g = a.synclist[b]; g && g.call(a); a.synclist[b] = !1 } }), r = !0) })(); return b }; this.unsynched = function(b) { a.synclist[b] && (a.synclist[b] = !1) }; this.css = function(b, g) { for (var c in g) a.saved.css.push([b, c, b.css(c)]), b.css(c, g[c]) }; this.scrollTop = function(b) { return "undefined" == typeof b ? a.getScrollTop() : a.setScrollTop(b) }; this.scrollLeft = function(b) { return "undefined" == typeof b ? a.getScrollLeft() : a.setScrollLeft(b) }; var A = function(a, g, c, d, e, f, h) { this.st = a; this.ed = g; this.spd = c; this.p1 = d || 0; this.p2 = e || 1; this.p3 = f || 0; this.p4 = h || 1; this.ts = (new Date).getTime(); this.df = this.ed - this.st }; A.prototype = {B2: function(a) { return 3 * a * a * (1 - a) },B3: function(a) { return 3 * a * (1 - a) * (1 - a) },B4: function(a) { return (1 - a) * (1 - a) * (1 - a) },getNow: function() { var a = 1 - ((new Date).getTime() - this.ts) / this.spd, g = this.B2(a) + this.B3(a) + this.B4(a); return 0 > a ? this.ed : this.st + Math.round(this.df * g) },update: function(a, g) { this.st = this.getNow(); this.ed = a; this.spd = g; this.ts = (new Date).getTime(); this.df = this.ed - this.st; return this }}; if (this.ishwscroll) { this.doc.translate = {x: 0,y: 0,tx: "0px",ty: "0px"}; e.hastranslate3d && e.isios && this.doc.css("-webkit-backface-visibility", "hidden"); this.getScrollTop = function(b) { if (!b) { if (b = h()) return 16 == b.length ? -b[13] : -b[5]; if (a.timerscroll && a.timerscroll.bz) return a.timerscroll.bz.getNow() } return a.doc.translate.y }; this.getScrollLeft = function(b) { if (!b) { if (b = h()) return 16 == b.length ? -b[12] : -b[4]; if (a.timerscroll && a.timerscroll.bh) return a.timerscroll.bh.getNow() } return a.doc.translate.x }; this.notifyScrollEvent = function(a) { var g = document.createEvent("UIEvents"); g.initUIEvent("scroll", !1, !0, window, 1); g.niceevent = !0; a.dispatchEvent(g) }; var K = this.isrtlmode ? 1 : -1; e.hastranslate3d && a.opt.enabletranslate3d ? (this.setScrollTop = function(b, g) { a.doc.translate.y = b; a.doc.translate.ty = -1 * b + "px"; a.doc.css(e.trstyle, "translate3d(" + a.doc.translate.tx + "," + a.doc.translate.ty + ",0px)"); g || a.notifyScrollEvent(a.win[0]) }, this.setScrollLeft = function(b, g) { a.doc.translate.x = b; a.doc.translate.tx = b * K + "px"; a.doc.css(e.trstyle, "translate3d(" + a.doc.translate.tx + "," + a.doc.translate.ty + ",0px)"); g || a.notifyScrollEvent(a.win[0]) }) : (this.setScrollTop = function(b, g) { a.doc.translate.y = b; a.doc.translate.ty = -1 * b + "px"; a.doc.css(e.trstyle, "translate(" + a.doc.translate.tx + "," + a.doc.translate.ty + ")"); g || a.notifyScrollEvent(a.win[0]) }, this.setScrollLeft = function(b, g) { a.doc.translate.x = b; a.doc.translate.tx = b * K + "px"; a.doc.css(e.trstyle, "translate(" + a.doc.translate.tx + "," + a.doc.translate.ty + ")"); g || a.notifyScrollEvent(a.win[0]) }) } else this.getScrollTop = function() { return a.docscroll.scrollTop() }, this.setScrollTop = function(b) { return a.docscroll.scrollTop(b) }, this.getScrollLeft = function() { return a.detected.ismozilla && a.isrtlmode ? Math.abs(a.docscroll.scrollLeft()) : a.docscroll.scrollLeft() }, this.setScrollLeft = function(b) { return a.docscroll.scrollLeft(a.detected.ismozilla && a.isrtlmode ? -b : b) }; this.getTarget = function(a) { return a ? a.target ? a.target : a.srcElement ? a.srcElement : !1 : !1 }; this.hasParent = function(a, g) { if (!a) return !1; for (var c = a.target || a.srcElement || a || !1; c && c.id != g; ) c = c.parentNode || !1; return !1 !== c }; var w = {thin: 1,medium: 3,thick: 5}; this.getDocumentScrollOffset = function() { return {top: window.pageYOffset || document.documentElement.scrollTop,left: window.pageXOffset || document.documentElement.scrollLeft} }; this.getOffset = function() { if (a.isfixed) { var b = a.win.offset(), g = a.getDocumentScrollOffset(); b.top -= g.top; b.left -= g.left; return b } b = a.win.offset(); if (!a.viewport) return b; g = a.viewport.offset(); return {top: b.top - g.top,left: b.left - g.left} }; this.updateScrollBar = function(b) { if (a.ishwscroll) a.rail.css({height: a.win.innerHeight() - (a.opt.railpadding.top + a.opt.railpadding.bottom)}), a.railh && a.railh.css({width: a.win.innerWidth() - (a.opt.railpadding.left + a.opt.railpadding.right)}); else { var g = a.getOffset(), c = g.top, e = g.left - (a.opt.railpadding.left + a.opt.railpadding.right), c = c + d(a.win, "border-top-width", !0), e = e + (a.rail.align ? a.win.outerWidth() - d(a.win, "border-right-width") - a.rail.width : d(a.win, "border-left-width")), f = a.opt.railoffset; f && (f.top && (c += f.top), a.rail.align && f.left && (e += f.left)); a.railslocked || a.rail.css({top: c,left: e,height: (b ? b.h : a.win.innerHeight()) - (a.opt.railpadding.top + a.opt.railpadding.bottom)}); a.zoom && a.zoom.css({top: c + 1,left: 1 == a.rail.align ? e - 20 : e + a.rail.width + 4}); if (a.railh && !a.railslocked) { c = g.top; e = g.left; if (f = a.opt.railhoffset) f.top && (c += f.top), f.left && (e += f.left); b = a.railh.align ? c + d(a.win, "border-top-width", !0) + a.win.innerHeight() - a.railh.height : c + d(a.win, "border-top-width", !0); e += d(a.win, "border-left-width"); a.railh.css({top: b - (a.opt.railpadding.top + a.opt.railpadding.bottom),left: e,width: a.railh.width}) } } }; this.doRailClick = function(b, g, c) { var e; a.railslocked || (a.cancelEvent(b), g ? (g = c ? a.doScrollLeft : a.doScrollTop, e = c ? (b.pageX - a.railh.offset().left - a.cursorwidth / 2) * a.scrollratio.x : (b.pageY - a.rail.offset().top - a.cursorheight / 2) * a.scrollratio.y, g(e)) : (g = c ? a.doScrollLeftBy : a.doScrollBy, e = c ? a.scroll.x : a.scroll.y, b = c ? b.pageX - a.railh.offset().left : b.pageY - a.rail.offset().top, c = c ? a.view.w : a.view.h, g(e >= b ? c : -c))) }; a.hasanimationframe = s; a.hascancelanimationframe = t; a.hasanimationframe ? a.hascancelanimationframe || (t = function() { a.cancelAnimationFrame = !0 }) : (s = function(a) { return setTimeout(a, 15 - Math.floor(+new Date / 1E3) % 16) }, t = clearInterval); this.init = function() { a.saved.css = []; if (e.isie7mobile || e.isoperamini) return !0; e.hasmstouch && a.css(a.ispage ? f("html") : a.win, {"-ms-touch-action": "none"}); a.zindex = "auto"; a.zindex = a.ispage || "auto" != a.opt.zindex ? a.opt.zindex : m() || "auto"; !a.ispage && "auto" != a.zindex && a.zindex > x && (x = a.zindex); a.isie && 0 == a.zindex && "auto" == a.opt.zindex && (a.zindex = "auto"); if (!a.ispage || !e.cantouch && !e.isieold && !e.isie9mobile) { var b = a.docscroll; a.ispage && (b = a.haswrapper ? a.win : a.doc); e.isie9mobile || a.css(b, {"overflow-y": "hidden"}); a.ispage && e.isie7 && ("BODY" == a.doc[0].nodeName ? a.css(f("html"), {"overflow-y": "hidden"}) : "HTML" == a.doc[0].nodeName && a.css(f("body"), {"overflow-y": "hidden"})); !e.isios || a.ispage || a.haswrapper || a.css(f("body"), {"-webkit-overflow-scrolling": "touch"}); var g = f(document.createElement("div")); g.css({position: "relative",top: 0,"float": "right", width: a.opt.cursorwidth,height: "0px","background-color": a.opt.cursorcolor,border: a.opt.cursorborder,"background-clip": "padding-box","-webkit-border-radius": a.opt.cursorborderradius,"-moz-border-radius": a.opt.cursorborderradius,"border-radius": a.opt.cursorborderradius}); g.hborder = parseFloat(g.outerHeight() - g.innerHeight()); g.addClass("nicescroll-cursors"); a.cursor = g; var c = f(document.createElement("div")); c.attr("id", a.id); c.addClass("nicescroll-rails nicescroll-rails-vr"); var d, h, k = ["left", "right", "top", "bottom"], J; for (J in k) h = k[J], (d = a.opt.railpadding[h]) ? c.css("padding-" + h, d + "px") : a.opt.railpadding[h] = 0; c.append(g); c.width = Math.max(parseFloat(a.opt.cursorwidth), g.outerWidth()); c.css({width: c.width + "px",zIndex: a.zindex,background: a.opt.background,cursor: "default"}); c.visibility = !0; c.scrollable = !0; c.align = "left" == a.opt.railalign ? 0 : 1; a.rail = c; g = a.rail.drag = !1; !a.opt.boxzoom || a.ispage || e.isieold || (g = document.createElement("div"), a.bind(g, "click", a.doZoom), a.bind(g, "mouseenter", function() { a.zoom.css("opacity", a.opt.cursoropacitymax) }), a.bind(g, "mouseleave", function() { a.zoom.css("opacity", a.opt.cursoropacitymin) }), a.zoom = f(g), a.zoom.css({cursor: "pointer","z-index": a.zindex,backgroundImage: "url(" + a.opt.scriptpath + "zoomico.png)",height: 18,width: 18,backgroundPosition: "0px 0px"}), a.opt.dblclickzoom && a.bind(a.win, "dblclick", a.doZoom), e.cantouch && a.opt.gesturezoom && (a.ongesturezoom = function(b) { 1.5 < b.scale && a.doZoomIn(b); .8 > b.scale && a.doZoomOut(b); return a.cancelEvent(b) }, a.bind(a.win, "gestureend", a.ongesturezoom))); a.railh = !1; var l; a.opt.horizrailenabled && (a.css(b, {"overflow-x": "hidden"}), g = f(document.createElement("div")), g.css({position: "absolute",top: 0,height: a.opt.cursorwidth,width: "0px","background-color": a.opt.cursorcolor,border: a.opt.cursorborder,"background-clip": "padding-box","-webkit-border-radius": a.opt.cursorborderradius,"-moz-border-radius": a.opt.cursorborderradius,"border-radius": a.opt.cursorborderradius}), e.isieold && g.css({overflow: "hidden"}), g.wborder = parseFloat(g.outerWidth() - g.innerWidth()), g.addClass("nicescroll-cursors"), a.cursorh = g, l = f(document.createElement("div")), l.attr("id", a.id + "-hr"), l.addClass("nicescroll-rails nicescroll-rails-hr"), l.height = Math.max(parseFloat(a.opt.cursorwidth), g.outerHeight()), l.css({height: l.height + "px",zIndex: a.zindex,background: a.opt.background}), l.append(g), l.visibility = !0, l.scrollable = !0, l.align = "top" == a.opt.railvalign ? 0 : 1, a.railh = l, a.railh.drag = !1); a.ispage ? (c.css({position: "fixed",top: "0px",height: "100%"}), c.align ? c.css({right: "0px"}) : c.css({left: "0px"}), a.body.append(c), a.railh && (l.css({position: "fixed",left: "0px",width: "100%"}), l.align ? l.css({bottom: "0px"}) : l.css({top: "0px"}), a.body.append(l))) : (a.ishwscroll ? ("static" == a.win.css("position") && a.css(a.win, {position: "relative"}), b = "HTML" == a.win[0].nodeName ? a.body : a.win, f(b).scrollTop(0).scrollLeft(0), a.zoom && (a.zoom.css({position: "absolute",top: 1,right: 0,"margin-right": c.width + 4}), b.append(a.zoom)), c.css({position: "absolute",top: 0}), c.align ? c.css({right: 0}) : c.css({left: 0}), b.append(c), l && (l.css({position: "absolute", left: 0,bottom: 0}), l.align ? l.css({bottom: 0}) : l.css({top: 0}), b.append(l))) : (a.isfixed = "fixed" == a.win.css("position"), b = a.isfixed ? "fixed" : "absolute", a.isfixed || (a.viewport = a.getViewport(a.win[0])), a.viewport && (a.body = a.viewport, 0 == /fixed|absolute/.test(a.viewport.css("position")) && a.css(a.viewport, {position: "relative"})), c.css({position: b}), a.zoom && a.zoom.css({position: b}), a.updateScrollBar(), a.body.append(c), a.zoom && a.body.append(a.zoom), a.railh && (l.css({position: b}), a.body.append(l))), e.isios && a.css(a.win, {"-webkit-tap-highlight-color": "rgba(0,0,0,0)","-webkit-touch-callout": "none"}), e.isie && a.opt.disableoutline && a.win.attr("hideFocus", "true"), e.iswebkit && a.opt.disableoutline && a.win.css({outline: "none"})); !1 === a.opt.autohidemode ? (a.autohidedom = !1, a.rail.css({opacity: a.opt.cursoropacitymax}), a.railh && a.railh.css({opacity: a.opt.cursoropacitymax})) : !0 === a.opt.autohidemode || "leave" === a.opt.autohidemode ? (a.autohidedom = f().add(a.rail), e.isie8 && (a.autohidedom = a.autohidedom.add(a.cursor)), a.railh && (a.autohidedom = a.autohidedom.add(a.railh)), a.railh && e.isie8 && (a.autohidedom = a.autohidedom.add(a.cursorh))) : "scroll" == a.opt.autohidemode ? (a.autohidedom = f().add(a.rail), a.railh && (a.autohidedom = a.autohidedom.add(a.railh))) : "cursor" == a.opt.autohidemode ? (a.autohidedom = f().add(a.cursor), a.railh && (a.autohidedom = a.autohidedom.add(a.cursorh))) : "hidden" == a.opt.autohidemode && (a.autohidedom = !1, a.hide(), a.railslocked = !1); if (e.isie9mobile) a.scrollmom = new L(a), a.onmangotouch = function() { var b = a.getScrollTop(), c = a.getScrollLeft(); if (b == a.scrollmom.lastscrolly && c == a.scrollmom.lastscrollx) return !0; var g = b - a.mangotouch.sy, e = c - a.mangotouch.sx; if (0 != Math.round(Math.sqrt(Math.pow(e, 2) + Math.pow(g, 2)))) { var d = 0 > g ? -1 : 1, f = 0 > e ? -1 : 1, q = +new Date; a.mangotouch.lazy && clearTimeout(a.mangotouch.lazy); 80 < q - a.mangotouch.tm || a.mangotouch.dry != d || a.mangotouch.drx != f ? (a.scrollmom.stop(), a.scrollmom.reset(c, b), a.mangotouch.sy = b, a.mangotouch.ly = b, a.mangotouch.sx = c, a.mangotouch.lx = c, a.mangotouch.dry = d, a.mangotouch.drx = f, a.mangotouch.tm = q) : (a.scrollmom.stop(), a.scrollmom.update(a.mangotouch.sx - e, a.mangotouch.sy - g), a.mangotouch.tm = q, g = Math.max(Math.abs(a.mangotouch.ly - b), Math.abs(a.mangotouch.lx - c)), a.mangotouch.ly = b, a.mangotouch.lx = c, 2 < g && (a.mangotouch.lazy = setTimeout(function() { a.mangotouch.lazy = !1; a.mangotouch.dry = 0; a.mangotouch.drx = 0; a.mangotouch.tm = 0; a.scrollmom.doMomentum(30) }, 100))) } }, c = a.getScrollTop(), l = a.getScrollLeft(), a.mangotouch = {sy: c,ly: c,dry: 0,sx: l,lx: l,drx: 0,lazy: !1,tm: 0}, a.bind(a.docscroll, "scroll", a.onmangotouch); else { if (e.cantouch || a.istouchcapable || a.opt.touchbehavior || e.hasmstouch) { a.scrollmom = new L(a); a.ontouchstart = function(b) { if (b.pointerType && 2 != b.pointerType && "touch" != b.pointerType) return !1; a.hasmoving = !1; if (!a.railslocked) { var c; if (e.hasmstouch) for (c = b.target ? b.target : !1; c; ) { var g = f(c).getNiceScroll(); if (0 < g.length && g[0].me == a.me) break; if (0 < g.length) return !1; if ("DIV" == c.nodeName && c.id == a.id) break; c = c.parentNode ? c.parentNode : !1 } a.cancelScroll(); if ((c = a.getTarget(b)) && /INPUT/i.test(c.nodeName) && /range/i.test(c.type)) return a.stopPropagation(b); !("clientX" in b) && "changedTouches" in b && (b.clientX = b.changedTouches[0].clientX, b.clientY = b.changedTouches[0].clientY); a.forcescreen && (g = b, b = {original: b.original ? b.original : b}, b.clientX = g.screenX, b.clientY = g.screenY); a.rail.drag = {x: b.clientX,y: b.clientY,sx: a.scroll.x,sy: a.scroll.y,st: a.getScrollTop(),sl: a.getScrollLeft(),pt: 2,dl: !1}; if (a.ispage || !a.opt.directionlockdeadzone) a.rail.drag.dl = "f"; else { var g = f(window).width(), d = f(window).height(), q = Math.max(document.body.scrollWidth, document.documentElement.scrollWidth), h = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight), d = Math.max(0, h - d), g = Math.max(0, q - g); a.rail.drag.ck = !a.rail.scrollable && a.railh.scrollable ? 0 < d ? "v" : !1 : a.rail.scrollable && !a.railh.scrollable ? 0 < g ? "h" : !1 : !1; a.rail.drag.ck || (a.rail.drag.dl = "f") } a.opt.touchbehavior && a.isiframe && e.isie && (g = a.win.position(), a.rail.drag.x += g.left, a.rail.drag.y += g.top); a.hasmoving = !1; a.lastmouseup = !1; a.scrollmom.reset(b.clientX, b.clientY); if (!e.cantouch && !this.istouchcapable && !b.pointerType) { if (!c || !/INPUT|SELECT|TEXTAREA/i.test(c.nodeName)) return !a.ispage && e.hasmousecapture && c.setCapture(), a.opt.touchbehavior ? (c.onclick && !c._onclick && (c._onclick = c.onclick, c.onclick = function(b) { if (a.hasmoving) return !1; c._onclick.call(this, b) }), a.cancelEvent(b)) : a.stopPropagation(b); /SUBMIT|CANCEL|BUTTON/i.test(f(c).attr("type")) && (pc = {tg: c,click: !1}, a.preventclick = pc) } } }; a.ontouchend = function(b) { if (!a.rail.drag) return !0; if (2 == a.rail.drag.pt) { if (b.pointerType && 2 != b.pointerType && "touch" != b.pointerType) return !1; a.scrollmom.doMomentum(); a.rail.drag = !1; if (a.hasmoving && (a.lastmouseup = !0, a.hideCursor(), e.hasmousecapture && document.releaseCapture(), !e.cantouch)) return a.cancelEvent(b) } else if (1 == a.rail.drag.pt) return a.onmouseup(b) }; var n = a.opt.touchbehavior && a.isiframe && !e.hasmousecapture; a.ontouchmove = function(b, c) { if (!a.rail.drag || b.targetTouches && a.opt.preventmultitouchscrolling && 1 < b.targetTouches.length || b.pointerType && 2 != b.pointerType && "touch" != b.pointerType) return !1; if (2 == a.rail.drag.pt) { if (e.cantouch && e.isios && "undefined" == typeof b.original) return !0; a.hasmoving = !0; a.preventclick && !a.preventclick.click && (a.preventclick.click = a.preventclick.tg.onclick || !1, a.preventclick.tg.onclick = a.onpreventclick); b = f.extend({original: b}, b); "changedTouches" in b && (b.clientX = b.changedTouches[0].clientX, b.clientY = b.changedTouches[0].clientY); if (a.forcescreen) { var g = b; b = {original: b.original ? b.original : b}; b.clientX = g.screenX; b.clientY = g.screenY } var d, g = d = 0; n && !c && (d = a.win.position(), g = -d.left, d = -d.top); var q = b.clientY + d; d = q - a.rail.drag.y; var h = b.clientX + g, u = h - a.rail.drag.x, k = a.rail.drag.st - d; a.ishwscroll && a.opt.bouncescroll ? 0 > k ? k = Math.round(k / 2) : k > a.page.maxh && (k = a.page.maxh + Math.round((k - a.page.maxh) / 2)) : (0 > k && (q = k = 0), k > a.page.maxh && (k = a.page.maxh, q = 0)); var l; a.railh && a.railh.scrollable && (l = a.isrtlmode ? u - a.rail.drag.sl : a.rail.drag.sl - u, a.ishwscroll && a.opt.bouncescroll ? 0 > l ? l = Math.round(l / 2) : l > a.page.maxw && (l = a.page.maxw + Math.round((l - a.page.maxw) / 2)) : (0 > l && (h = l = 0), l > a.page.maxw && (l = a.page.maxw, h = 0))); g = !1; if (a.rail.drag.dl) g = !0, "v" == a.rail.drag.dl ? l = a.rail.drag.sl : "h" == a.rail.drag.dl && (k = a.rail.drag.st); else { d = Math.abs(d); var u = Math.abs(u), z = a.opt.directionlockdeadzone; if ("v" == a.rail.drag.ck) { if (d > z && u <= .3 * d) return a.rail.drag = !1, !0; u > z && (a.rail.drag.dl = "f", f("body").scrollTop(f("body").scrollTop())) } else if ("h" == a.rail.drag.ck) { if (u > z && d <= .3 * u) return a.rail.drag = !1, !0; d > z && (a.rail.drag.dl = "f", f("body").scrollLeft(f("body").scrollLeft())) } } a.synched("touchmove", function() { a.rail.drag && 2 == a.rail.drag.pt && (a.prepareTransition && a.prepareTransition(0), a.rail.scrollable && a.setScrollTop(k), a.scrollmom.update(h, q), a.railh && a.railh.scrollable ? (a.setScrollLeft(l), a.showCursor(k, l)) : a.showCursor(k), e.isie10 && document.selection.clear()) }); e.ischrome && a.istouchcapable && (g = !1); if (g) return a.cancelEvent(b) } else if (1 == a.rail.drag.pt) return a.onmousemove(b) } } a.onmousedown = function(b, c) { if (!a.rail.drag || 1 == a.rail.drag.pt) { if (a.railslocked) return a.cancelEvent(b); a.cancelScroll(); a.rail.drag = {x: b.clientX,y: b.clientY,sx: a.scroll.x,sy: a.scroll.y, pt: 1,hr: !!c}; var g = a.getTarget(b); !a.ispage && e.hasmousecapture && g.setCapture(); a.isiframe && !e.hasmousecapture && (a.saved.csspointerevents = a.doc.css("pointer-events"), a.css(a.doc, {"pointer-events": "none"})); a.hasmoving = !1; return a.cancelEvent(b) } }; a.onmouseup = function(b) { if (a.rail.drag) { if (1 != a.rail.drag.pt) return !0; e.hasmousecapture && document.releaseCapture(); a.isiframe && !e.hasmousecapture && a.doc.css("pointer-events", a.saved.csspointerevents); a.rail.drag = !1; a.hasmoving && a.triggerScrollEnd(); return a.cancelEvent(b) } }; a.onmousemove = function(b) { if (a.rail.drag && 1 == a.rail.drag.pt) { if (e.ischrome && 0 == b.which) return a.onmouseup(b); a.cursorfreezed = !0; a.hasmoving = !0; if (a.rail.drag.hr) { a.scroll.x = a.rail.drag.sx + (b.clientX - a.rail.drag.x); 0 > a.scroll.x && (a.scroll.x = 0); var c = a.scrollvaluemaxw; a.scroll.x > c && (a.scroll.x = c) } else a.scroll.y = a.rail.drag.sy + (b.clientY - a.rail.drag.y), 0 > a.scroll.y && (a.scroll.y = 0), c = a.scrollvaluemax, a.scroll.y > c && (a.scroll.y = c); a.synched("mousemove", function() { a.rail.drag && 1 == a.rail.drag.pt && (a.showCursor(), a.rail.drag.hr ? a.hasreversehr ? a.doScrollLeft(a.scrollvaluemaxw - Math.round(a.scroll.x * a.scrollratio.x), a.opt.cursordragspeed) : a.doScrollLeft(Math.round(a.scroll.x * a.scrollratio.x), a.opt.cursordragspeed) : a.doScrollTop(Math.round(a.scroll.y * a.scrollratio.y), a.opt.cursordragspeed)) }); return a.cancelEvent(b) } }; if (e.cantouch || a.opt.touchbehavior) a.onpreventclick = function(b) { if (a.preventclick) return a.preventclick.tg.onclick = a.preventclick.click, a.preventclick = !1, a.cancelEvent(b) }, a.bind(a.win, "mousedown", a.ontouchstart), a.onclick = e.isios ? !1 : function(b) { return a.lastmouseup ? (a.lastmouseup = !1, a.cancelEvent(b)) : !0 }, a.opt.grabcursorenabled && e.cursorgrabvalue && (a.css(a.ispage ? a.doc : a.win, {cursor: e.cursorgrabvalue}), a.css(a.rail, {cursor: e.cursorgrabvalue})); else { var p = function(b) { if (a.selectiondrag) { if (b) { var c = a.win.outerHeight(); b = b.pageY - a.selectiondrag.top; 0 < b && b < c && (b = 0); b >= c && (b -= c); a.selectiondrag.df = b } 0 != a.selectiondrag.df && (a.doScrollBy(2 * -Math.floor(a.selectiondrag.df / 6)), a.debounced("doselectionscroll", function() { p() }, 50)) } }; a.hasTextSelected = "getSelection" in document ? function() { return 0 < document.getSelection().rangeCount } : "selection" in document ? function() { return "None" != document.selection.type } : function() { return !1 }; a.onselectionstart = function(b) { a.ispage || (a.selectiondrag = a.win.offset()) }; a.onselectionend = function(b) { a.selectiondrag = !1 }; a.onselectiondrag = function(b) { a.selectiondrag && a.hasTextSelected() && a.debounced("selectionscroll", function() { p(b) }, 250) } } e.hasw3ctouch ? (a.css(a.rail, {"touch-action": "none"}), a.css(a.cursor, {"touch-action": "none"}), a.bind(a.win, "pointerdown", a.ontouchstart), a.bind(document, "pointerup", a.ontouchend), a.bind(document, "pointermove", a.ontouchmove)) : e.hasmstouch ? (a.css(a.rail, {"-ms-touch-action": "none"}), a.css(a.cursor, {"-ms-touch-action": "none"}), a.bind(a.win, "MSPointerDown", a.ontouchstart), a.bind(document, "MSPointerUp", a.ontouchend), a.bind(document, "MSPointerMove", a.ontouchmove), a.bind(a.cursor, "MSGestureHold", function(a) { a.preventDefault() }), a.bind(a.cursor, "contextmenu", function(a) { a.preventDefault() })) : this.istouchcapable && (a.bind(a.win, "touchstart", a.ontouchstart), a.bind(document, "touchend", a.ontouchend), a.bind(document, "touchcancel", a.ontouchend), a.bind(document, "touchmove", a.ontouchmove)); if (a.opt.cursordragontouch || !e.cantouch && !a.opt.touchbehavior) a.rail.css({cursor: "default"}), a.railh && a.railh.css({cursor: "default"}), a.jqbind(a.rail, "mouseenter", function() { if (!a.ispage && !a.win.is(":visible")) return !1; a.canshowonmouseevent && a.showCursor(); a.rail.active = !0 }), a.jqbind(a.rail, "mouseleave", function() { a.rail.active = !1; a.rail.drag || a.hideCursor() }), a.opt.sensitiverail && (a.bind(a.rail, "click", function(b) { a.doRailClick(b, !1, !1) }), a.bind(a.rail, "dblclick", function(b) { a.doRailClick(b, !0, !1) }), a.bind(a.cursor, "click", function(b) { a.cancelEvent(b) }), a.bind(a.cursor, "dblclick", function(b) { a.cancelEvent(b) })), a.railh && (a.jqbind(a.railh, "mouseenter", function() { if (!a.ispage && !a.win.is(":visible")) return !1; a.canshowonmouseevent && a.showCursor(); a.rail.active = !0 }), a.jqbind(a.railh, "mouseleave", function() { a.rail.active = !1; a.rail.drag || a.hideCursor() }), a.opt.sensitiverail && (a.bind(a.railh, "click", function(b) { a.doRailClick(b, !1, !0) }), a.bind(a.railh, "dblclick", function(b) { a.doRailClick(b, !0, !0) }), a.bind(a.cursorh, "click", function(b) { a.cancelEvent(b) }), a.bind(a.cursorh, "dblclick", function(b) { a.cancelEvent(b) }))); e.cantouch || a.opt.touchbehavior ? (a.bind(e.hasmousecapture ? a.win : document, "mouseup", a.ontouchend), a.bind(document, "mousemove", a.ontouchmove), a.onclick && a.bind(document, "click", a.onclick), a.opt.cursordragontouch && (a.bind(a.cursor, "mousedown", a.onmousedown), a.bind(a.cursor, "mouseup", a.onmouseup), a.cursorh && a.bind(a.cursorh, "mousedown", function(b) { a.onmousedown(b, !0) }), a.cursorh && a.bind(a.cursorh, "mouseup", a.onmouseup))) : (a.bind(e.hasmousecapture ? a.win : document, "mouseup", a.onmouseup), a.bind(document, "mousemove", a.onmousemove), a.onclick && a.bind(document, "click", a.onclick), a.bind(a.cursor, "mousedown", a.onmousedown), a.bind(a.cursor, "mouseup", a.onmouseup), a.railh && (a.bind(a.cursorh, "mousedown", function(b) { a.onmousedown(b, !0) }), a.bind(a.cursorh, "mouseup", a.onmouseup)), !a.ispage && a.opt.enablescrollonselection && (a.bind(a.win[0], "mousedown", a.onselectionstart), a.bind(document, "mouseup", a.onselectionend), a.bind(a.cursor, "mouseup", a.onselectionend), a.cursorh && a.bind(a.cursorh, "mouseup", a.onselectionend), a.bind(document, "mousemove", a.onselectiondrag)), a.zoom && (a.jqbind(a.zoom, "mouseenter", function() { a.canshowonmouseevent && a.showCursor(); a.rail.active = !0 }), a.jqbind(a.zoom, "mouseleave", function() { a.rail.active = !1; a.rail.drag || a.hideCursor() }))); a.opt.enablemousewheel && (a.isiframe || a.bind(e.isie && a.ispage ? document : a.win, "mousewheel", a.onmousewheel), a.bind(a.rail, "mousewheel", a.onmousewheel), a.railh && a.bind(a.railh, "mousewheel", a.onmousewheelhr)); a.ispage || e.cantouch || /HTML|^BODY/.test(a.win[0].nodeName) || (a.win.attr("tabindex") || a.win.attr({tabindex: N++}), a.jqbind(a.win, "focus", function(b) { y = a.getTarget(b).id || !0; a.hasfocus = !0; a.canshowonmouseevent && a.noticeCursor() }), a.jqbind(a.win, "blur", function(b) { y = !1; a.hasfocus = !1 }), a.jqbind(a.win, "mouseenter", function(b) { D = a.getTarget(b).id || !0; a.hasmousefocus = !0; a.canshowonmouseevent && a.noticeCursor() }), a.jqbind(a.win, "mouseleave", function() { D = !1; a.hasmousefocus = !1; a.rail.drag || a.hideCursor() })) } a.onkeypress = function(b) { if (a.railslocked && 0 == a.page.maxh) return !0; b = b ? b : window.e; var c = a.getTarget(b); if (c && /INPUT|TEXTAREA|SELECT|OPTION/.test(c.nodeName) && (!c.getAttribute("type") && !c.type || !/submit|button|cancel/i.tp) || f(c).attr("contenteditable")) return !0; if (a.hasfocus || a.hasmousefocus && !y || a.ispage && !y && !D) { c = b.keyCode; if (a.railslocked && 27 != c) return a.cancelEvent(b); var g = b.ctrlKey || !1, d = b.shiftKey || !1, e = !1; switch (c) { case 38: case 63233: a.doScrollBy(72); e = !0; break; case 40: case 63235: a.doScrollBy(-72); e = !0; break; case 37: case 63232: a.railh && (g ? a.doScrollLeft(0) : a.doScrollLeftBy(72), e = !0); break; case 39: case 63234: a.railh && (g ? a.doScrollLeft(a.page.maxw) : a.doScrollLeftBy(-72), e = !0); break; case 33: case 63276: a.doScrollBy(a.view.h); e = !0; break; case 34: case 63277: a.doScrollBy(-a.view.h); e = !0; break; case 36: case 63273: a.railh && g ? a.doScrollPos(0, 0) : a.doScrollTo(0); e = !0; break; case 35: case 63275: a.railh && g ? a.doScrollPos(a.page.maxw, a.page.maxh) : a.doScrollTo(a.page.maxh); e = !0; break; case 32: a.opt.spacebarenabled && (d ? a.doScrollBy(a.view.h) : a.doScrollBy(-a.view.h), e = !0); break; case 27: a.zoomactive && (a.doZoom(), e = !0) } if (e) return a.cancelEvent(b) } }; a.opt.enablekeyboard && a.bind(document, e.isopera && !e.isopera12 ? "keypress" : "keydown", a.onkeypress); a.bind(document, "keydown", function(b) { b.ctrlKey && (a.wheelprevented = !0) }); a.bind(document, "keyup", function(b) { b.ctrlKey || (a.wheelprevented = !1) }); a.bind(window, "blur", function(b) { a.wheelprevented = !1 }); a.bind(window, "resize", a.lazyResize); a.bind(window, "orientationchange", a.lazyResize); a.bind(window, "load", a.lazyResize); if (e.ischrome && !a.ispage && !a.haswrapper) { var r = a.win.attr("style"), c = parseFloat(a.win.css("width")) + 1; a.win.css("width", c); a.synched("chromefix", function() { a.win.attr("style", r) }) } a.onAttributeChange = function(b) { a.lazyResize(a.isieold ? 250 : 30) }; !1 !== v && (a.observerbody = new v(function(b) { b.forEach(function(b) { if ("attributes" == b.type) return f("body").hasClass("modal-open") ? a.hide() : a.show() }); if (document.body.scrollHeight != a.page.maxh) return a.lazyResize(30) }), a.observerbody.observe(document.body, {childList: !0,subtree: !0,characterData: !1,attributes: !0,attributeFilter: ["class"]})); a.ispage || a.haswrapper || (!1 !== v ? (a.observer = new v(function(b) { b.forEach(a.onAttributeChange) }), a.observer.observe(a.win[0], {childList: !0,characterData: !1, attributes: !0,subtree: !1}), a.observerremover = new v(function(b) { b.forEach(function(b) { if (0 < b.removedNodes.length) for (var c in b.removedNodes) if (a && b.removedNodes[c] == a.win[0]) return a.remove() }) }), a.observerremover.observe(a.win[0].parentNode, {childList: !0,characterData: !1,attributes: !1,subtree: !1})) : (a.bind(a.win, e.isie && !e.isie9 ? "propertychange" : "DOMAttrModified", a.onAttributeChange), e.isie9 && a.win[0].attachEvent("onpropertychange", a.onAttributeChange), a.bind(a.win, "DOMNodeRemoved", function(b) { b.target == a.win[0] && a.remove() }))); !a.ispage && a.opt.boxzoom && a.bind(window, "resize", a.resizeZoom); a.istextarea && a.bind(a.win, "mouseup", a.lazyResize); a.lazyResize(30) } if ("IFRAME" == this.doc[0].nodeName) { var M = function() { a.iframexd = !1; var b; try { b = "contentDocument" in this ? this.contentDocument : this.contentWindow.document } catch (c) { a.iframexd = !0, b = !1 } if (a.iframexd) return "console" in window && console.log("NiceScroll error: policy restriced iframe"), !0; a.forcescreen = !0; a.isiframe && (a.iframe = {doc: f(b),html: a.doc.contents().find("html")[0], body: a.doc.contents().find("body")[0]}, a.getContentSize = function() { return {w: Math.max(a.iframe.html.scrollWidth, a.iframe.body.scrollWidth),h: Math.max(a.iframe.html.scrollHeight, a.iframe.body.scrollHeight)} }, a.docscroll = f(a.iframe.body)); if (!e.isios && a.opt.iframeautoresize && !a.isiframe) { a.win.scrollTop(0); a.doc.height(""); var g = Math.max(b.getElementsByTagName("html")[0].scrollHeight, b.body.scrollHeight); a.doc.height(g) } a.lazyResize(30); e.isie7 && a.css(f(a.iframe.html), {"overflow-y": "hidden"}); a.css(f(a.iframe.body), {"overflow-y": "hidden"}); e.isios && a.haswrapper && a.css(f(b.body), {"-webkit-transform": "translate3d(0,0,0)"}); "contentWindow" in this ? a.bind(this.contentWindow, "scroll", a.onscroll) : a.bind(b, "scroll", a.onscroll); a.opt.enablemousewheel && a.bind(b, "mousewheel", a.onmousewheel); a.opt.enablekeyboard && a.bind(b, e.isopera ? "keypress" : "keydown", a.onkeypress); if (e.cantouch || a.opt.touchbehavior) a.bind(b, "mousedown", a.ontouchstart), a.bind(b, "mousemove", function(b) { return a.ontouchmove(b, !0) }), a.opt.grabcursorenabled && e.cursorgrabvalue && a.css(f(b.body), {cursor: e.cursorgrabvalue}); a.bind(b, "mouseup", a.ontouchend); a.zoom && (a.opt.dblclickzoom && a.bind(b, "dblclick", a.doZoom), a.ongesturezoom && a.bind(b, "gestureend", a.ongesturezoom)) }; this.doc[0].readyState && "complete" == this.doc[0].readyState && setTimeout(function() { M.call(a.doc[0], !1) }, 500); a.bind(this.doc, "load", M) } }; this.showCursor = function(b, c) { a.cursortimeout && (clearTimeout(a.cursortimeout), a.cursortimeout = 0); if (a.rail) { a.autohidedom && (a.autohidedom.stop().css({opacity: a.opt.cursoropacitymax}), a.cursoractive = !0); a.rail.drag && 1 == a.rail.drag.pt || ("undefined" != typeof b && !1 !== b && (a.scroll.y = Math.round(1 * b / a.scrollratio.y)), "undefined" != typeof c && (a.scroll.x = Math.round(1 * c / a.scrollratio.x))); a.cursor.css({height: a.cursorheight,top: a.scroll.y}); if (a.cursorh) { var d = a.hasreversehr ? a.scrollvaluemaxw - a.scroll.x : a.scroll.x; !a.rail.align && a.rail.visibility ? a.cursorh.css({width: a.cursorwidth,left: d + a.rail.width}) : a.cursorh.css({width: a.cursorwidth,left: d}); a.cursoractive = !0 } a.zoom && a.zoom.stop().css({opacity: a.opt.cursoropacitymax}) } }; this.hideCursor = function(b) { a.cursortimeout || !a.rail || !a.autohidedom || a.hasmousefocus && "leave" == a.opt.autohidemode || (a.cursortimeout = setTimeout(function() { a.rail.active && a.showonmouseevent || (a.autohidedom.stop().animate({opacity: a.opt.cursoropacitymin}), a.zoom && a.zoom.stop().animate({opacity: a.opt.cursoropacitymin}), a.cursoractive = !1); a.cursortimeout = 0 }, b || a.opt.hidecursordelay)) }; this.noticeCursor = function(b, c, d) { a.showCursor(c, d); a.rail.active || a.hideCursor(b) }; this.getContentSize = a.ispage ? function() { return {w: Math.max(document.body.scrollWidth, document.documentElement.scrollWidth),h: Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)} } : a.haswrapper ? function() { return {w: a.doc.outerWidth() + parseInt(a.win.css("paddingLeft")) + parseInt(a.win.css("paddingRight")),h: a.doc.outerHeight() + parseInt(a.win.css("paddingTop")) + parseInt(a.win.css("paddingBottom"))} } : function() { return {w: a.docscroll[0].scrollWidth,h: a.docscroll[0].scrollHeight} }; this.onResize = function(b, c) { if (!a || !a.win) return !1; if (!a.haswrapper && !a.ispage) { if ("none" == a.win.css("display")) return a.visibility && a.hideRail().hideRailHr(), !1; a.hidden || a.visibility || a.showRail().showRailHr() } var d = a.page.maxh, e = a.page.maxw, f = a.view.h, h = a.view.w; a.view = {w: a.ispage ? a.win.width() : parseInt(a.win[0].clientWidth),h: a.ispage ? a.win.height() : parseInt(a.win[0].clientHeight)}; a.page = c ? c : a.getContentSize(); a.page.maxh = Math.max(0, a.page.h - a.view.h); a.page.maxw = Math.max(0, a.page.w - a.view.w); if (a.page.maxh == d && a.page.maxw == e && a.view.w == h && a.view.h == f) { if (a.ispage) return a; d = a.win.offset(); if (a.lastposition && (e = a.lastposition, e.top == d.top && e.left == d.left)) return a; a.lastposition = d } 0 == a.page.maxh ? (a.hideRail(), a.scrollvaluemax = 0, a.scroll.y = 0, a.scrollratio.y = 0, a.cursorheight = 0, a.setScrollTop(0), a.rail.scrollable = !1) : (a.page.maxh -= a.opt.railpadding.top + a.opt.railpadding.bottom, a.rail.scrollable = !0); 0 == a.page.maxw ? (a.hideRailHr(), a.scrollvaluemaxw = 0, a.scroll.x = 0, a.scrollratio.x = 0, a.cursorwidth = 0, a.setScrollLeft(0), a.railh.scrollable = !1) : (a.page.maxw -= a.opt.railpadding.left + a.opt.railpadding.right, a.railh.scrollable = !0); a.railslocked = a.locked || 0 == a.page.maxh && 0 == a.page.maxw; if (a.railslocked) return a.ispage || a.updateScrollBar(a.view), !1; a.hidden || a.visibility ? a.hidden || a.railh.visibility || a.showRailHr() : a.showRail().showRailHr(); a.istextarea && a.win.css("resize") && "none" != a.win.css("resize") && (a.view.h -= 20); a.cursorheight = Math.min(a.view.h, Math.round(a.view.h / a.page.h * a.view.h)); a.cursorheight = a.opt.cursorfixedheight ? a.opt.cursorfixedheight : Math.max(a.opt.cursorminheight, a.cursorheight); a.cursorwidth = Math.min(a.view.w, Math.round(a.view.w / a.page.w * a.view.w)); a.cursorwidth = a.opt.cursorfixedheight ? a.opt.cursorfixedheight : Math.max(a.opt.cursorminheight, a.cursorwidth); a.scrollvaluemax = a.view.h - a.cursorheight - a.cursor.hborder - (a.opt.railpadding.top + a.opt.railpadding.bottom); a.railh && (a.railh.width = 0 < a.page.maxh ? a.view.w - a.rail.width : a.view.w, a.scrollvaluemaxw = a.railh.width - a.cursorwidth - a.cursorh.wborder - (a.opt.railpadding.left + a.opt.railpadding.right)); a.ispage || a.updateScrollBar(a.view); a.scrollratio = {x: a.page.maxw / a.scrollvaluemaxw,y: a.page.maxh / a.scrollvaluemax}; a.getScrollTop() > a.page.maxh ? a.doScrollTop(a.page.maxh) : (a.scroll.y = Math.round(a.getScrollTop() * (1 / a.scrollratio.y)), a.scroll.x = Math.round(a.getScrollLeft() * (1 / a.scrollratio.x)), a.cursoractive && a.noticeCursor()); a.scroll.y && 0 == a.getScrollTop() && a.doScrollTo(Math.floor(a.scroll.y * a.scrollratio.y)); return a }; this.resize = a.onResize; this.lazyResize = function(b) { b = isNaN(b) ? 30 : b; a.debounced("resize", a.resize, b); return a }; this.jqbind = function(b, c, d) { a.events.push({e: b,n: c,f: d,q: !0}); f(b).bind(c, d) }; this.bind = function(b, c, d, f) { var h = "jquery" in b ? b[0] : b; "mousewheel" == c ? window.addEventListener || "onwheel" in document ? a._bind(h, "wheel", d, f || !1) : (b = "undefined" != typeof document.onmousewheel ? "mousewheel" : "DOMMouseScroll", n(h, b, d, f || !1), "DOMMouseScroll" == b && n(h, "MozMousePixelScroll", d, f || !1)) : h.addEventListener ? (e.cantouch && /mouseup|mousedown|mousemove/.test(c) && a._bind(h, "mousedown" == c ? "touchstart" : "mouseup" == c ? "touchend" : "touchmove", function(a) { if (a.touches) { if (2 > a.touches.length) { var b = a.touches.length ? a.touches[0] : a; b.original = a; d.call(this, b) } } else a.changedTouches && (b = a.changedTouches[0], b.original = a, d.call(this, b)) }, f || !1), a._bind(h, c, d, f || !1), e.cantouch && "mouseup" == c && a._bind(h, "touchcancel", d, f || !1)) : a._bind(h, c, function(b) { (b = b || window.event || !1) && b.srcElement && (b.target = b.srcElement); "pageY" in b || (b.pageX = b.clientX + document.documentElement.scrollLeft, b.pageY = b.clientY + document.documentElement.scrollTop); return !1 === d.call(h, b) || !1 === f ? a.cancelEvent(b) : !0 }) }; e.haseventlistener ? (this._bind = function(b, c, d, e) { a.events.push({e: b,n: c,f: d,b: e,q: !1}); b.addEventListener(c, d, e || !1) }, this.cancelEvent = function(a) { if (!a) return !1; a = a.original ? a.original : a; a.preventDefault(); a.stopPropagation(); a.preventManipulation && a.preventManipulation(); return !1 }, this.stopPropagation = function(a) { if (!a) return !1; a = a.original ? a.original : a; a.stopPropagation(); return !1 }, this._unbind = function(a, c, d, e) { a.removeEventListener(c, d, e) }) : (this._bind = function(b, c, d, e) { a.events.push({e: b, n: c,f: d,b: e,q: !1}); b.attachEvent ? b.attachEvent("on" + c, d) : b["on" + c] = d }, this.cancelEvent = function(a) { a = window.event || !1; if (!a) return !1; a.cancelBubble = !0; a.cancel = !0; return a.returnValue = !1 }, this.stopPropagation = function(a) { a = window.event || !1; if (!a) return !1; a.cancelBubble = !0; return !1 }, this._unbind = function(a, c, d, e) { a.detachEvent ? a.detachEvent("on" + c, d) : a["on" + c] = !1 }); this.unbindAll = function() { for (var b = 0; b < a.events.length; b++) { var c = a.events[b]; c.q ? c.e.unbind(c.n, c.f) : a._unbind(c.e, c.n, c.f, c.b) } }; this.showRail = function() { 0 == a.page.maxh || !a.ispage && "none" == a.win.css("display") || (a.visibility = !0, a.rail.visibility = !0, a.rail.css("display", "block")); return a }; this.showRailHr = function() { if (!a.railh) return a; 0 == a.page.maxw || !a.ispage && "none" == a.win.css("display") || (a.railh.visibility = !0, a.railh.css("display", "block")); return a }; this.hideRail = function() { a.visibility = !1; a.rail.visibility = !1; a.rail.css("display", "none"); return a }; this.hideRailHr = function() { if (!a.railh) return a; a.railh.visibility = !1; a.railh.css("display", "none"); return a }; this.show = function() { a.hidden = !1; a.railslocked = !1; return a.showRail().showRailHr() }; this.hide = function() { a.hidden = !0; a.railslocked = !0; return a.hideRail().hideRailHr() }; this.toggle = function() { return a.hidden ? a.show() : a.hide() }; this.remove = function() { a.stop(); a.cursortimeout && clearTimeout(a.cursortimeout); a.doZoomOut(); a.unbindAll(); e.isie9 && a.win[0].detachEvent("onpropertychange", a.onAttributeChange); !1 !== a.observer && a.observer.disconnect(); !1 !== a.observerremover && a.observerremover.disconnect(); !1 !== a.observerbody && a.observerbody.disconnect(); a.events = null; a.cursor && a.cursor.remove(); a.cursorh && a.cursorh.remove(); a.rail && a.rail.remove(); a.railh && a.railh.remove(); a.zoom && a.zoom.remove(); for (var b = 0; b < a.saved.css.length; b++) { var c = a.saved.css[b]; c[0].css(c[1], "undefined" == typeof c[2] ? "" : c[2]) } a.saved = !1; a.me.data("__nicescroll", ""); var d = f.nicescroll; d.each(function(b) { if (this && this.id === a.id) { delete d[b]; for (var c = ++b; c < d.length; c++, b++) d[b] = d[c]; d.length--; d.length && delete d[d.length] } }); for (var h in a) a[h] = null, delete a[h]; a = null }; this.scrollstart = function(b) { this.onscrollstart = b; return a }; this.scrollend = function(b) { this.onscrollend = b; return a }; this.scrollcancel = function(b) { this.onscrollcancel = b; return a }; this.zoomin = function(b) { this.onzoomin = b; return a }; this.zoomout = function(b) { this.onzoomout = b; return a }; this.isScrollable = function(a) { a = a.target ? a.target : a; if ("OPTION" == a.nodeName) return !0; for (; a && 1 == a.nodeType && !/^BODY|HTML/.test(a.nodeName); ) { var c = f(a), c = c.css("overflowY") || c.css("overflowX") || c.css("overflow") || ""; if (/scroll|auto/.test(c)) return a.clientHeight != a.scrollHeight; a = a.parentNode ? a.parentNode : !1 } return !1 }; this.getViewport = function(a) { for (a = a && a.parentNode ? a.parentNode : !1; a && 1 == a.nodeType && !/^BODY|HTML/.test(a.nodeName); ) { var c = f(a); if (/fixed|absolute/.test(c.css("position"))) return c; var d = c.css("overflowY") || c.css("overflowX") || c.css("overflow") || ""; if (/scroll|auto/.test(d) && a.clientHeight != a.scrollHeight || 0 < c.getNiceScroll().length) return c; a = a.parentNode ? a.parentNode : !1 } return !1 }; this.triggerScrollEnd = function() { if (a.onscrollend) { var b = a.getScrollLeft(), c = a.getScrollTop(); a.onscrollend.call(a, {type: "scrollend",current: {x: b,y: c},end: {x: b,y: c}}) } }; this.onmousewheel = function(b) { if (!a.wheelprevented) { if (a.railslocked) return a.debounced("checkunlock", a.resize, 250), !0; if (a.rail.drag) return a.cancelEvent(b); "auto" == a.opt.oneaxismousemode && 0 != b.deltaX && (a.opt.oneaxismousemode = !1); if (a.opt.oneaxismousemode && 0 == b.deltaX && !a.rail.scrollable) return a.railh && a.railh.scrollable ? a.onmousewheelhr(b) : !0; var c = +new Date, d = !1; a.opt.preservenativescrolling && a.checkarea + 600 < c && (a.nativescrollingarea = a.isScrollable(b), d = !0); a.checkarea = c; if (a.nativescrollingarea) return !0; if (b = p(b, !1, d)) a.checkarea = 0; return b } }; this.onmousewheelhr = function(b) { if (!a.wheelprevented) { if (a.railslocked || !a.railh.scrollable) return !0; if (a.rail.drag) return a.cancelEvent(b); var c = +new Date, d = !1; a.opt.preservenativescrolling && a.checkarea + 600 < c && (a.nativescrollingarea = a.isScrollable(b), d = !0); a.checkarea = c; return a.nativescrollingarea ? !0 : a.railslocked ? a.cancelEvent(b) : p(b, !0, d) } }; this.stop = function() { a.cancelScroll(); a.scrollmon && a.scrollmon.stop(); a.cursorfreezed = !1; a.scroll.y = Math.round(a.getScrollTop() * (1 / a.scrollratio.y)); a.noticeCursor(); return a }; this.getTransitionSpeed = function(b) { var c = Math.round(10 * a.opt.scrollspeed); b = Math.min(c, Math.round(b / 20 * a.opt.scrollspeed)); return 20 < b ? b : 0 }; a.opt.smoothscroll ? a.ishwscroll && e.hastransition && a.opt.usetransition && a.opt.smoothscroll ? (this.prepareTransition = function(b, c) { var d = c ? 20 < b ? b : 0 : a.getTransitionSpeed(b), f = d ? e.prefixstyle + "transform " + d + "ms ease-out" : ""; a.lasttransitionstyle && a.lasttransitionstyle == f || (a.lasttransitionstyle = f, a.doc.css(e.transitionstyle, f)); return d }, this.doScrollLeft = function(b, c) { var d = a.scrollrunning ? a.newscrolly : a.getScrollTop(); a.doScrollPos(b, d, c) }, this.doScrollTop = function(b, c) { var d = a.scrollrunning ? a.newscrollx : a.getScrollLeft(); a.doScrollPos(d, b, c) }, this.doScrollPos = function(b, c, d) { var f = a.getScrollTop(), h = a.getScrollLeft(); (0 > (a.newscrolly - f) * (c - f) || 0 > (a.newscrollx - h) * (b - h)) && a.cancelScroll(); 0 == a.opt.bouncescroll && (0 > c ? c = 0 : c > a.page.maxh && (c = a.page.maxh), 0 > b ? b = 0 : b > a.page.maxw && (b = a.page.maxw)); if (a.scrollrunning && b == a.newscrollx && c == a.newscrolly) return !1; a.newscrolly = c; a.newscrollx = b; a.newscrollspeed = d || !1; if (a.timer) return !1; a.timer = setTimeout(function() { var d = a.getScrollTop(), f = a.getScrollLeft(), h, k; h = b - f; k = c - d; h = Math.round(Math.sqrt(Math.pow(h, 2) + Math.pow(k, 2))); h = a.newscrollspeed && 1 < a.newscrollspeed ? a.newscrollspeed : a.getTransitionSpeed(h); a.newscrollspeed && 1 >= a.newscrollspeed && (h *= a.newscrollspeed); a.prepareTransition(h, !0); a.timerscroll && a.timerscroll.tm && clearInterval(a.timerscroll.tm); 0 < h && (!a.scrollrunning && a.onscrollstart && a.onscrollstart.call(a, {type: "scrollstart",current: {x: f,y: d},request: {x: b,y: c},end: {x: a.newscrollx,y: a.newscrolly},speed: h}), e.transitionend ? a.scrollendtrapped || (a.scrollendtrapped = !0, a.bind(a.doc, e.transitionend, a.onScrollTransitionEnd, !1)) : (a.scrollendtrapped && clearTimeout(a.scrollendtrapped), a.scrollendtrapped = setTimeout(a.onScrollTransitionEnd, h)), a.timerscroll = {bz: new A(d, a.newscrolly, h, 0, 0, .58, 1),bh: new A(f, a.newscrollx, h, 0, 0, .58, 1)}, a.cursorfreezed || (a.timerscroll.tm = setInterval(function() { a.showCursor(a.getScrollTop(), a.getScrollLeft()) }, 60))); a.synched("doScroll-set", function() { a.timer = 0; a.scrollendtrapped && (a.scrollrunning = !0); a.setScrollTop(a.newscrolly); a.setScrollLeft(a.newscrollx); if (!a.scrollendtrapped) a.onScrollTransitionEnd() }) }, 50) }, this.cancelScroll = function() { if (!a.scrollendtrapped) return !0; var b = a.getScrollTop(), c = a.getScrollLeft(); a.scrollrunning = !1; e.transitionend || clearTimeout(e.transitionend); a.scrollendtrapped = !1; a._unbind(a.doc[0], e.transitionend, a.onScrollTransitionEnd); a.prepareTransition(0); a.setScrollTop(b); a.railh && a.setScrollLeft(c); a.timerscroll && a.timerscroll.tm && clearInterval(a.timerscroll.tm); a.timerscroll = !1; a.cursorfreezed = !1; a.showCursor(b, c); return a }, this.onScrollTransitionEnd = function() { a.scrollendtrapped && a._unbind(a.doc[0], e.transitionend, a.onScrollTransitionEnd); a.scrollendtrapped = !1; a.prepareTransition(0); a.timerscroll && a.timerscroll.tm && clearInterval(a.timerscroll.tm); a.timerscroll = !1; var b = a.getScrollTop(), c = a.getScrollLeft(); a.setScrollTop(b); a.railh && a.setScrollLeft(c); a.noticeCursor(!1, b, c); a.cursorfreezed = !1; 0 > b ? b = 0 : b > a.page.maxh && (b = a.page.maxh); 0 > c ? c = 0 : c > a.page.maxw && (c = a.page.maxw); if (b != a.newscrolly || c != a.newscrollx) return a.doScrollPos(c, b, a.opt.snapbackspeed); a.onscrollend && a.scrollrunning && a.triggerScrollEnd(); a.scrollrunning = !1 }) : (this.doScrollLeft = function(b, c) { var d = a.scrollrunning ? a.newscrolly : a.getScrollTop(); a.doScrollPos(b, d, c) }, this.doScrollTop = function(b, c) { var d = a.scrollrunning ? a.newscrollx : a.getScrollLeft(); a.doScrollPos(d, b, c) }, this.doScrollPos = function(b, c, d) { function e() { if (a.cancelAnimationFrame) return !0; a.scrollrunning = !0; if (n = 1 - n) return a.timer = s(e) || 1; var b = 0, c, d, g = d = a.getScrollTop(); if (a.dst.ay) { g = a.bzscroll ? a.dst.py + a.bzscroll.getNow() * a.dst.ay : a.newscrolly; c = g - d; if (0 > c && g < a.newscrolly || 0 < c && g > a.newscrolly) g = a.newscrolly; a.setScrollTop(g); g == a.newscrolly && (b = 1) } else b = 1; d = c = a.getScrollLeft(); if (a.dst.ax) { d = a.bzscroll ? a.dst.px + a.bzscroll.getNow() * a.dst.ax : a.newscrollx; c = d - c; if (0 > c && d < a.newscrollx || 0 < c && d > a.newscrollx) d = a.newscrollx; a.setScrollLeft(d); d == a.newscrollx && (b += 1) } else b += 1; 2 == b ? (a.timer = 0, a.cursorfreezed = !1, a.bzscroll = !1, a.scrollrunning = !1, 0 > g ? g = 0 : g > a.page.maxh && (g = a.page.maxh), 0 > d ? d = 0 : d > a.page.maxw && (d = a.page.maxw), d != a.newscrollx || g != a.newscrolly ? a.doScrollPos(d, g) : a.onscrollend && a.triggerScrollEnd()) : a.timer = s(e) || 1 } c = "undefined" == typeof c || !1 === c ? a.getScrollTop(!0) : c; if (a.timer && a.newscrolly == c && a.newscrollx == b) return !0; a.timer && t(a.timer); a.timer = 0; var f = a.getScrollTop(), h = a.getScrollLeft(); (0 > (a.newscrolly - f) * (c - f) || 0 > (a.newscrollx - h) * (b - h)) && a.cancelScroll(); a.newscrolly = c; a.newscrollx = b; a.bouncescroll && a.rail.visibility || (0 > a.newscrolly ? a.newscrolly = 0 : a.newscrolly > a.page.maxh && (a.newscrolly = a.page.maxh)); a.bouncescroll && a.railh.visibility || (0 > a.newscrollx ? a.newscrollx = 0 : a.newscrollx > a.page.maxw && (a.newscrollx = a.page.maxw)); a.dst = {}; a.dst.x = b - h; a.dst.y = c - f; a.dst.px = h; a.dst.py = f; var k = Math.round(Math.sqrt(Math.pow(a.dst.x, 2) + Math.pow(a.dst.y, 2))); a.dst.ax = a.dst.x / k; a.dst.ay = a.dst.y / k; var l = 0, m = k; 0 == a.dst.x ? (l = f, m = c, a.dst.ay = 1, a.dst.py = 0) : 0 == a.dst.y && (l = h, m = b, a.dst.ax = 1, a.dst.px = 0); k = a.getTransitionSpeed(k); d && 1 >= d && (k *= d); a.bzscroll = 0 < k ? a.bzscroll ? a.bzscroll.update(m, k) : new A(l, m, k, 0, 1, 0, 1) : !1; if (!a.timer) { (f == a.page.maxh && c >= a.page.maxh || h == a.page.maxw && b >= a.page.maxw) && a.checkContentSize(); var n = 1; a.cancelAnimationFrame = !1; a.timer = 1; a.onscrollstart && !a.scrollrunning && a.onscrollstart.call(a, {type: "scrollstart",current: {x: h,y: f},request: {x: b,y: c},end: {x: a.newscrollx,y: a.newscrolly},speed: k}); e(); (f == a.page.maxh && c >= f || h == a.page.maxw && b >= h) && a.checkContentSize(); a.noticeCursor() } }, this.cancelScroll = function() { a.timer && t(a.timer); a.timer = 0; a.bzscroll = !1; a.scrollrunning = !1; return a }) : (this.doScrollLeft = function(b, c) { var d = a.getScrollTop(); a.doScrollPos(b, d, c) }, this.doScrollTop = function(b, c) { var d = a.getScrollLeft(); a.doScrollPos(d, b, c) }, this.doScrollPos = function(b, c, d) { var e = b > a.page.maxw ? a.page.maxw : b; 0 > e && (e = 0); var f = c > a.page.maxh ? a.page.maxh : c; 0 > f && (f = 0); a.synched("scroll", function() { a.setScrollTop(f); a.setScrollLeft(e) }) }, this.cancelScroll = function() { }); this.doScrollBy = function(b, c) { var d = 0, d = c ? Math.floor((a.scroll.y - b) * a.scrollratio.y) : (a.timer ? a.newscrolly : a.getScrollTop(!0)) - b; if (a.bouncescroll) { var e = Math.round(a.view.h / 2); d < -e ? d = -e : d > a.page.maxh + e && (d = a.page.maxh + e) } a.cursorfreezed = !1; e = a.getScrollTop(!0); if (0 > d && 0 >= e) return a.noticeCursor(); if (d > a.page.maxh && e >= a.page.maxh) return a.checkContentSize(), a.noticeCursor(); a.doScrollTop(d) }; this.doScrollLeftBy = function(b, c) { var d = 0, d = c ? Math.floor((a.scroll.x - b) * a.scrollratio.x) : (a.timer ? a.newscrollx : a.getScrollLeft(!0)) - b; if (a.bouncescroll) { var e = Math.round(a.view.w / 2); d < -e ? d = -e : d > a.page.maxw + e && (d = a.page.maxw + e) } a.cursorfreezed = !1; e = a.getScrollLeft(!0); if (0 > d && 0 >= e || d > a.page.maxw && e >= a.page.maxw) return a.noticeCursor(); a.doScrollLeft(d) }; this.doScrollTo = function(b, c) { c && Math.round(b * a.scrollratio.y); a.cursorfreezed = !1; a.doScrollTop(b) }; this.checkContentSize = function() { var b = a.getContentSize(); b.h == a.page.h && b.w == a.page.w || a.resize(!1, b) }; a.onscroll = function(b) { a.rail.drag || a.cursorfreezed || a.synched("scroll", function() { a.scroll.y = Math.round(a.getScrollTop() * (1 / a.scrollratio.y)); a.railh && (a.scroll.x = Math.round(a.getScrollLeft() * (1 / a.scrollratio.x))); a.noticeCursor() }) }; a.bind(a.docscroll, "scroll", a.onscroll); this.doZoomIn = function(b) { if (!a.zoomactive) { a.zoomactive = !0; a.zoomrestore = {style: {}}; var c = "position top left zIndex backgroundColor marginTop marginBottom marginLeft marginRight".split(" "), d = a.win[0].style, h; for (h in c) { var k = c[h]; a.zoomrestore.style[k] = "undefined" != typeof d[k] ? d[k] : "" } a.zoomrestore.style.width = a.win.css("width"); a.zoomrestore.style.height = a.win.css("height"); a.zoomrestore.padding = {w: a.win.outerWidth() - a.win.width(),h: a.win.outerHeight() - a.win.height()}; e.isios4 && (a.zoomrestore.scrollTop = f(window).scrollTop(), f(window).scrollTop(0)); a.win.css({position: e.isios4 ? "absolute" : "fixed",top: 0,left: 0,"z-index": x + 100,margin: "0px"}); c = a.win.css("backgroundColor"); ("" == c || /transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(c)) && a.win.css("backgroundColor", "#fff"); a.rail.css({"z-index": x + 101}); a.zoom.css({"z-index": x + 102}); a.zoom.css("backgroundPosition", "0px -18px"); a.resizeZoom(); a.onzoomin && a.onzoomin.call(a); return a.cancelEvent(b) } }; this.doZoomOut = function(b) { if (a.zoomactive) return a.zoomactive = !1, a.win.css("margin", ""), a.win.css(a.zoomrestore.style), e.isios4 && f(window).scrollTop(a.zoomrestore.scrollTop), a.rail.css({"z-index": a.zindex}), a.zoom.css({"z-index": a.zindex}), a.zoomrestore = !1, a.zoom.css("backgroundPosition", "0px 0px"), a.onResize(), a.onzoomout && a.onzoomout.call(a), a.cancelEvent(b) }; this.doZoom = function(b) { return a.zoomactive ? a.doZoomOut(b) : a.doZoomIn(b) }; this.resizeZoom = function() { if (a.zoomactive) { var b = a.getScrollTop(); a.win.css({width: f(window).width() - a.zoomrestore.padding.w + "px",height: f(window).height() - a.zoomrestore.padding.h + "px"}); a.onResize(); a.setScrollTop(Math.min(a.page.maxh, b)) } }; this.init(); f.nicescroll.push(this) }, L = function(f) { var c = this; this.nc = f; this.steptime = this.lasttime = this.speedy = this.speedx = this.lasty = this.lastx = 0; this.snapy = this.snapx = !1; this.demuly = this.demulx = 0; this.lastscrolly = this.lastscrollx = -1; this.timer = this.chky = this.chkx = 0; this.time = function() { return +new Date }; this.reset = function(f, k) { c.stop(); var d = c.time(); c.steptime = 0; c.lasttime = d; c.speedx = 0; c.speedy = 0; c.lastx = f; c.lasty = k; c.lastscrollx = -1; c.lastscrolly = -1 }; this.update = function(f, k) { var d = c.time(); c.steptime = d - c.lasttime; c.lasttime = d; var d = k - c.lasty, n = f - c.lastx, p = c.nc.getScrollTop(), a = c.nc.getScrollLeft(), p = p + d, a = a + n; c.snapx = 0 > a || a > c.nc.page.maxw; c.snapy = 0 > p || p > c.nc.page.maxh; c.speedx = n; c.speedy = d; c.lastx = f; c.lasty = k }; this.stop = function() { c.nc.unsynched("domomentum2d"); c.timer && clearTimeout(c.timer); c.timer = 0; c.lastscrollx = -1; c.lastscrolly = -1 }; this.doSnapy = function(f, k) { var d = !1; 0 > k ? (k = 0, d = !0) : k > c.nc.page.maxh && (k = c.nc.page.maxh, d = !0); 0 > f ? (f = 0, d = !0) : f > c.nc.page.maxw && (f = c.nc.page.maxw, d = !0); d ? c.nc.doScrollPos(f, k, c.nc.opt.snapbackspeed) : c.nc.triggerScrollEnd() }; this.doMomentum = function(f) { var k = c.time(), d = f ? k + f : c.lasttime; f = c.nc.getScrollLeft(); var n = c.nc.getScrollTop(), p = c.nc.page.maxh, a = c.nc.page.maxw; c.speedx = 0 < a ? Math.min(60, c.speedx) : 0; c.speedy = 0 < p ? Math.min(60, c.speedy) : 0; d = d && 60 >= k - d; if (0 > n || n > p || 0 > f || f > a) d = !1; f = c.speedx && d ? c.speedx : !1; if (c.speedy && d && c.speedy || f) { var s = Math.max(16, c.steptime); 50 < s && (f = s / 50, c.speedx *= f, c.speedy *= f, s = 50); c.demulxy = 0; c.lastscrollx = c.nc.getScrollLeft(); c.chkx = c.lastscrollx; c.lastscrolly = c.nc.getScrollTop(); c.chky = c.lastscrolly; var e = c.lastscrollx, r = c.lastscrolly, t = function() { var d = 600 < c.time() - k ? .04 : .02; c.speedx && (e = Math.floor(c.lastscrollx - c.speedx * (1 - c.demulxy)), c.lastscrollx = e, 0 > e || e > a) && (d = .1); c.speedy && (r = Math.floor(c.lastscrolly - c.speedy * (1 - c.demulxy)), c.lastscrolly = r, 0 > r || r > p) && (d = .1); c.demulxy = Math.min(1, c.demulxy + d); c.nc.synched("domomentum2d", function() { c.speedx && (c.nc.getScrollLeft() != c.chkx && c.stop(), c.chkx = e, c.nc.setScrollLeft(e)); c.speedy && (c.nc.getScrollTop() != c.chky && c.stop(), c.chky = r, c.nc.setScrollTop(r)); c.timer || (c.nc.hideCursor(), c.doSnapy(e, r)) }); 1 > c.demulxy ? c.timer = setTimeout(t, s) : (c.stop(), c.nc.hideCursor(), c.doSnapy(e, r)) }; t() } else c.doSnapy(c.nc.getScrollLeft(), c.nc.getScrollTop()) } }, w = f.fn.scrollTop; f.cssHooks.pageYOffset = {get: function(k, c, h) { return (c = f.data(k, "__nicescroll") || !1) && c.ishwscroll ? c.getScrollTop() : w.call(k) },set: function(k, c) { var h = f.data(k, "__nicescroll") || !1; h && h.ishwscroll ? h.setScrollTop(parseInt(c)) : w.call(k, c); return this }}; f.fn.scrollTop = function(k) { if ("undefined" == typeof k) { var c = this[0] ? f.data(this[0], "__nicescroll") || !1 : !1; return c && c.ishwscroll ? c.getScrollTop() : w.call(this) } return this.each(function() { var c = f.data(this, "__nicescroll") || !1; c && c.ishwscroll ? c.setScrollTop(parseInt(k)) : w.call(f(this), k) }) }; var B = f.fn.scrollLeft; f.cssHooks.pageXOffset = {get: function(k, c, h) { return (c = f.data(k, "__nicescroll") || !1) && c.ishwscroll ? c.getScrollLeft() : B.call(k) }, set: function(k, c) { var h = f.data(k, "__nicescroll") || !1; h && h.ishwscroll ? h.setScrollLeft(parseInt(c)) : B.call(k, c); return this }}; f.fn.scrollLeft = function(k) { if ("undefined" == typeof k) { var c = this[0] ? f.data(this[0], "__nicescroll") || !1 : !1; return c && c.ishwscroll ? c.getScrollLeft() : B.call(this) } return this.each(function() { var c = f.data(this, "__nicescroll") || !1; c && c.ishwscroll ? c.setScrollLeft(parseInt(k)) : B.call(f(this), k) }) }; var C = function(k) { var c = this; this.length = 0; this.name = "nicescrollarray"; this.each = function(d) { for (var f = 0, h = 0; f < c.length; f++) d.call(c[f], h++); return c }; this.push = function(d) { c[c.length] = d; c.length++ }; this.eq = function(d) { return c[d] }; if (k) for (var h = 0; h < k.length; h++) { var m = f.data(k[h], "__nicescroll") || !1; m && (this[this.length] = m, this.length++) } return this }; (function(f, c, h) { for (var m = 0; m < c.length; m++) h(f, c[m]) })(C.prototype, "show hide toggle onResize resize remove stop doScrollPos".split(" "), function(f, c) { f[c] = function() { var f = arguments; return this.each(function() { this[c].apply(this, f) }) } }); f.fn.getNiceScroll = function(k) { return "undefined" == typeof k ? new C(this) : this[k] && f.data(this[k], "__nicescroll") || !1 }; f.extend(f.expr[":"], {nicescroll: function(k) { return f.data(k, "__nicescroll") ? !0 : !1 }}); f.fn.niceScroll = function(k, c) { "undefined" != typeof c || "object" != typeof k || "jquery" in k || (c = k, k = !1); c = f.extend({}, c); var h = new C; "undefined" == typeof c && (c = {}); k && (c.doc = f(k), c.win = f(this)); var m = !("doc" in c); m || "win" in c || (c.win = f(this)); this.each(function() { var d = f(this).data("__nicescroll") || !1; d || (c.doc = m ? f(this) : c.doc, d = new R(c, f(this)), f(this).data("__nicescroll", d)); h.push(d) }); return 1 == h.length ? h[0] : h }; window.NiceScroll = {getjQuery: function() { return f }}; f.nicescroll || (f.nicescroll = new C, f.nicescroll.options = I) });