/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */
!(function (a) {
'function' == typeof define && define.amd ? define(['jquery'], a) : 'object' == typeof exports ? (module.exports = a) : a(jQuery)
})(function (a) {
function b(b) {
var g = b || window.event,
h = i.call(arguments, 1),
j = 0,
l = 0,
m = 0,
n = 0,
o = 0,
p = 0
if (
((b = a.event.fix(g)),
(b.type = 'mousewheel'),
'detail' in g && (m = -1 * g.detail),
'wheelDelta' in g && (m = g.wheelDelta),
'wheelDeltaY' in g && (m = g.wheelDeltaY),
'wheelDeltaX' in g && (l = -1 * g.wheelDeltaX),
'axis' in g && g.axis === g.HORIZONTAL_AXIS && ((l = -1 * m), (m = 0)),
(j = 0 === m ? l : m),
'deltaY' in g && ((m = -1 * g.deltaY), (j = m)),
'deltaX' in g && ((l = g.deltaX), 0 === m && (j = -1 * l)),
0 !== m || 0 !== l)
) {
if (1 === g.deltaMode) {
var q = a.data(this, 'mousewheel-line-height')
;(j *= q), (m *= q), (l *= q)
} else if (2 === g.deltaMode) {
var r = a.data(this, 'mousewheel-page-height')
;(j *= r), (m *= r), (l *= r)
}
if (
((n = Math.max(Math.abs(m), Math.abs(l))),
(!f || f > n) && ((f = n), d(g, n) && (f /= 40)),
d(g, n) && ((j /= 40), (l /= 40), (m /= 40)),
(j = Math[j >= 1 ? 'floor' : 'ceil'](j / f)),
(l = Math[l >= 1 ? 'floor' : 'ceil'](l / f)),
(m = Math[m >= 1 ? 'floor' : 'ceil'](m / f)),
k.settings.normalizeOffset && this.getBoundingClientRect)
) {
var s = this.getBoundingClientRect()
;(o = b.clientX - s.left), (p = b.clientY - s.top)
}
return (b.deltaX = l), (b.deltaY = m), (b.deltaFactor = f), (b.offsetX = o), (b.offsetY = p), (b.deltaMode = 0), h.unshift(b, j, l, m), e && clearTimeout(e), (e = setTimeout(c, 200)), (a.event.dispatch || a.event.handle).apply(this, h)
}
}
function c() {
f = null
}
function d(a, b) {
return k.settings.adjustOldDeltas && 'mousewheel' === a.type && b % 120 === 0
}
var e,
f,
g = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
h = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
i = Array.prototype.slice
if (a.event.fixHooks) for (var j = g.length; j; ) a.event.fixHooks[g[--j]] = a.event.mouseHooks
var k = (a.event.special.mousewheel = {
version: '3.1.12',
setup: function () {
if (this.addEventListener) for (var c = h.length; c; ) this.addEventListener(h[--c], b, !1)
else this.onmousewheel = b
a.data(this, 'mousewheel-line-height', k.getLineHeight(this)), a.data(this, 'mousewheel-page-height', k.getPageHeight(this))
},
teardown: function () {
if (this.removeEventListener) for (var c = h.length; c; ) this.removeEventListener(h[--c], b, !1)
else this.onmousewheel = null
a.removeData(this, 'mousewheel-line-height'), a.removeData(this, 'mousewheel-page-height')
},
getLineHeight: function (b) {
var c = a(b),
d = c['offsetParent' in a.fn ? 'offsetParent' : 'parent']()
return d.length || (d = a('body')), parseInt(d.css('fontSize'), 10) || parseInt(c.css('fontSize'), 10) || 16
},
getPageHeight: function (b) {
return a(b).height()
},
settings: { adjustOldDeltas: !0, normalizeOffset: !0 }
})
a.fn.extend({
mousewheel: function (a) {
return a ? this.bind('mousewheel', a) : this.trigger('mousewheel')
},
unmousewheel: function (a) {
return this.unbind('mousewheel', a)
}
})
})
!(function (a) {
'function' == typeof define && define.amd ? define(['jquery'], a) : 'object' == typeof exports ? (module.exports = a) : a(jQuery)
})(function (a) {
function b(b) {
var g = b || window.event,
h = i.call(arguments, 1),
j = 0,
l = 0,
m = 0,
n = 0,
o = 0,
p = 0
if (
((b = a.event.fix(g)),
(b.type = 'mousewheel'),
'detail' in g && (m = -1 * g.detail),
'wheelDelta' in g && (m = g.wheelDelta),
'wheelDeltaY' in g && (m = g.wheelDeltaY),
'wheelDeltaX' in g && (l = -1 * g.wheelDeltaX),
'axis' in g && g.axis === g.HORIZONTAL_AXIS && ((l = -1 * m), (m = 0)),
(j = 0 === m ? l : m),
'deltaY' in g && ((m = -1 * g.deltaY), (j = m)),
'deltaX' in g && ((l = g.deltaX), 0 === m && (j = -1 * l)),
0 !== m || 0 !== l)
) {
if (1 === g.deltaMode) {
var q = a.data(this, 'mousewheel-line-height')
;(j *= q), (m *= q), (l *= q)
} else if (2 === g.deltaMode) {
var r = a.data(this, 'mousewheel-page-height')
;(j *= r), (m *= r), (l *= r)
}
if (
((n = Math.max(Math.abs(m), Math.abs(l))),
(!f || f > n) && ((f = n), d(g, n) && (f /= 40)),
d(g, n) && ((j /= 40), (l /= 40), (m /= 40)),
(j = Math[j >= 1 ? 'floor' : 'ceil'](j / f)),
(l = Math[l >= 1 ? 'floor' : 'ceil'](l / f)),
(m = Math[m >= 1 ? 'floor' : 'ceil'](m / f)),
k.settings.normalizeOffset && this.getBoundingClientRect)
) {
var s = this.getBoundingClientRect()
;(o = b.clientX - s.left), (p = b.clientY - s.top)
}
return (b.deltaX = l), (b.deltaY = m), (b.deltaFactor = f), (b.offsetX = o), (b.offsetY = p), (b.deltaMode = 0), h.unshift(b, j, l, m), e && clearTimeout(e), (e = setTimeout(c, 200)), (a.event.dispatch || a.event.handle).apply(this, h)
}
}
function c() {
f = null
}
function d(a, b) {
return k.settings.adjustOldDeltas && 'mousewheel' === a.type && b % 120 === 0
}
var e,
f,
g = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
h = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
i = Array.prototype.slice
if (a.event.fixHooks) for (var j = g.length; j; ) a.event.fixHooks[g[--j]] = a.event.mouseHooks
var k = (a.event.special.mousewheel = {
version: '3.1.12',
setup: function () {
if (this.addEventListener) for (var c = h.length; c; ) this.addEventListener(h[--c], b, !1)
else this.onmousewheel = b
a.data(this, 'mousewheel-line-height', k.getLineHeight(this)), a.data(this, 'mousewheel-page-height', k.getPageHeight(this))
},
teardown: function () {
if (this.removeEventListener) for (var c = h.length; c; ) this.removeEventListener(h[--c], b, !1)
else this.onmousewheel = null
a.removeData(this, 'mousewheel-line-height'), a.removeData(this, 'mousewheel-page-height')
},
getLineHeight: function (b) {
var c = a(b),
d = c['offsetParent' in a.fn ? 'offsetParent' : 'parent']()
return d.length || (d = a('body')), parseInt(d.css('fontSize'), 10) || parseInt(c.css('fontSize'), 10) || 16
},
getPageHeight: function (b) {
return a(b).height()
},
settings: { adjustOldDeltas: !0, normalizeOffset: !0 }
})
a.fn.extend({
mousewheel: function (a) {
return a ? this.bind('mousewheel', a) : this.trigger('mousewheel')
},
unmousewheel: function (a) {
return this.unbind('mousewheel', a)
}
})
})
/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */
!(function (e) {
'function' == typeof define && define.amd ? define(['jquery'], e) : 'undefined' != typeof module && module.exports ? (module.exports = e) : e(jQuery, window, document)
})(function (e) {
!(function (t) {
var o = 'function' == typeof define && define.amd,
a = 'undefined' != typeof module && module.exports,
n = 'https:' == document.location.protocol ? 'https:' : 'http:',
i = 'cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js'
o || (a ? require('jquery-mousewheel')(e) : e.event.special.mousewheel || e('head').append(decodeURI('%3Cscript src=' + n + '//' + i + '%3E%3C/script%3E'))), t()
})(function () {
var t,
o = 'mCustomScrollbar',
a = 'mCS',
n = '.mCustomScrollbar',
i = {
setTop: 0,
setLeft: 0,
axis: 'y',
scrollbarPosition: 'inside',
scrollInertia: 950,
autoDraggerLength: !0,
alwaysShowScrollbar: 0,
snapOffset: 0,
mouseWheel: {
enable: !0,
scrollAmount: 'auto',
axis: 'y',
deltaFactor: 'auto',
disableOver: ['select', 'option', 'keygen', 'datalist', 'textarea']
},
scrollButtons: { scrollType: 'stepless', scrollAmount: 'auto' },
keyboard: { enable: !0, scrollType: 'stepless', scrollAmount: 'auto' },
contentTouchScroll: 25,
documentTouchScroll: !0,
advanced: {
autoScrollOnFocus: "input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",
updateOnContentResize: !0,
updateOnImageLoad: 'auto',
autoUpdateTimeout: 60
},
theme: 'light',
callbacks: { onTotalScrollOffset: 0, onTotalScrollBackOffset: 0, alwaysTriggerOffsets: !0 }
},
r = 0,
l = {},
s = window.attachEvent && !window.addEventListener ? 1 : 0,
c = !1,
d = [
'mCSB_dragger_onDrag',
'mCSB_scrollTools_onDrag',
'mCS_img_loaded',
'mCS_disabled',
'mCS_destroyed',
'mCS_no_scrollbar',
'mCS-autoHide',
'mCS-dir-rtl',
'mCS_no_scrollbar_y',
'mCS_no_scrollbar_x',
'mCS_y_hidden',
'mCS_x_hidden',
'mCSB_draggerContainer',
'mCSB_buttonUp',
'mCSB_buttonDown',
'mCSB_buttonLeft',
'mCSB_buttonRight'
],
u = {
init: function (t) {
var t = e.extend(!0, {}, i, t),
o = f.call(this)
if (t.live) {
var s = t.liveSelector || this.selector || n,
c = e(s)
if ('off' === t.live) return void m(s)
l[s] = setTimeout(function () {
c.mCustomScrollbar(t), 'once' === t.live && c.length && m(s)
}, 500)
} else m(s)
return (
(t.setWidth = t.set_width ? t.set_width : t.setWidth),
(t.setHeight = t.set_height ? t.set_height : t.setHeight),
(t.axis = t.horizontalScroll ? 'x' : p(t.axis)),
(t.scrollInertia = t.scrollInertia > 0 && t.scrollInertia < 17 ? 17 : t.scrollInertia),
'object' != typeof t.mouseWheel &&
1 == t.mouseWheel &&
(t.mouseWheel = {
enable: !0,
scrollAmount: 'auto',
axis: 'y',
preventDefault: !1,
deltaFactor: 'auto',
normalizeDelta: !1,
invert: !1
}),
(t.mouseWheel.scrollAmount = t.mouseWheelPixels ? t.mouseWheelPixels : t.mouseWheel.scrollAmount),
(t.mouseWheel.normalizeDelta = t.advanced.normalizeMouseWheelDelta ? t.advanced.normalizeMouseWheelDelta : t.mouseWheel.normalizeDelta),
(t.scrollButtons.scrollType = g(t.scrollButtons.scrollType)),
h(t),
e(o).each(function () {
var o = e(this)
if (!o.data(a)) {
o.data(a, {
idx: ++r,
opt: t,
scrollRatio: { y: null, x: null },
overflowed: null,
contentReset: { y: null, x: null },
bindEvents: !1,
tweenRunning: !1,
sequential: {},
langDir: o.css('direction'),
cbOffsets: null,
trigger: null,
poll: { size: { o: 0, n: 0 }, img: { o: 0, n: 0 }, change: { o: 0, n: 0 } }
})
var n = o.data(a),
i = n.opt,
l = o.data('mcs-axis'),
s = o.data('mcs-scrollbar-position'),
c = o.data('mcs-theme')
l && (i.axis = l),
s && (i.scrollbarPosition = s),
c && ((i.theme = c), h(i)),
v.call(this),
n && i.callbacks.onCreate && 'function' == typeof i.callbacks.onCreate && i.callbacks.onCreate.call(this),
e('#mCSB_' + n.idx + '_container img:not(.' + d[2] + ')').addClass(d[2]),
u.update.call(null, o)
}
})
)
},
update: function (t, o) {
var n = t || f.call(this)
return e(n).each(function () {
var t = e(this)
if (t.data(a)) {
var n = t.data(a),
i = n.opt,
r = e('#mCSB_' + n.idx + '_container'),
l = e('#mCSB_' + n.idx),
s = [e('#mCSB_' + n.idx + '_dragger_vertical'), e('#mCSB_' + n.idx + '_dragger_horizontal')]
if (!r.length) return
n.tweenRunning && Q(t),
o && n && i.callbacks.onBeforeUpdate && 'function' == typeof i.callbacks.onBeforeUpdate && i.callbacks.onBeforeUpdate.call(this),
t.hasClass(d[3]) && t.removeClass(d[3]),
t.hasClass(d[4]) && t.removeClass(d[4]),
l.css('max-height', 'none'),
l.height() !== t.height() && l.css('max-height', t.height()),
_.call(this),
'y' === i.axis || i.advanced.autoExpandHorizontalScroll || r.css('width', x(r)),
(n.overflowed = y.call(this)),
M.call(this),
i.autoDraggerLength && S.call(this),
b.call(this),
T.call(this)
var c = [Math.abs(r[0].offsetTop), Math.abs(r[0].offsetLeft)]
'x' !== i.axis &&
(n.overflowed[0]
? s[0].height() > s[0].parent().height()
? B.call(this)
: (G(t, c[0].toString(), { dir: 'y', dur: 0, overwrite: 'none' }), (n.contentReset.y = null))
: (B.call(this), 'y' === i.axis ? k.call(this) : 'yx' === i.axis && n.overflowed[1] && G(t, c[1].toString(), { dir: 'x', dur: 0, overwrite: 'none' }))),
'y' !== i.axis &&
(n.overflowed[1]
? s[1].width() > s[1].parent().width()
? B.call(this)
: (G(t, c[1].toString(), { dir: 'x', dur: 0, overwrite: 'none' }), (n.contentReset.x = null))
: (B.call(this), 'x' === i.axis ? k.call(this) : 'yx' === i.axis && n.overflowed[0] && G(t, c[0].toString(), { dir: 'y', dur: 0, overwrite: 'none' }))),
o &&
n &&
(2 === o && i.callbacks.onImageLoad && 'function' == typeof i.callbacks.onImageLoad
? i.callbacks.onImageLoad.call(this)
: 3 === o && i.callbacks.onSelectorChange && 'function' == typeof i.callbacks.onSelectorChange
? i.callbacks.onSelectorChange.call(this)
: i.callbacks.onUpdate && 'function' == typeof i.callbacks.onUpdate && i.callbacks.onUpdate.call(this)),
N.call(this)
}
})
},
scrollTo: function (t, o) {
if ('undefined' != typeof t && null != t) {
var n = f.call(this)
return e(n).each(function () {
var n = e(this)
if (n.data(a)) {
var i = n.data(a),
r = i.opt,
l = {
trigger: 'external',
scrollInertia: r.scrollInertia,
scrollEasing: 'mcsEaseInOut',
moveDragger: !1,
timeout: 60,
callbacks: !0,
onStart: !0,
onUpdate: !0,
onComplete: !0
},
s = e.extend(!0, {}, l, o),
c = Y.call(this, t),
d = s.scrollInertia > 0 && s.scrollInertia < 17 ? 17 : s.scrollInertia
;(c[0] = X.call(this, c[0], 'y')),
(c[1] = X.call(this, c[1], 'x')),
s.moveDragger && ((c[0] *= i.scrollRatio.y), (c[1] *= i.scrollRatio.x)),
(s.dur = ne() ? 0 : d),
setTimeout(function () {
null !== c[0] && 'undefined' != typeof c[0] && 'x' !== r.axis && i.overflowed[0] && ((s.dir = 'y'), (s.overwrite = 'all'), G(n, c[0].toString(), s)),
null !== c[1] && 'undefined' != typeof c[1] && 'y' !== r.axis && i.overflowed[1] && ((s.dir = 'x'), (s.overwrite = 'none'), G(n, c[1].toString(), s))
}, s.timeout)
}
})
}
},
stop: function () {
var t = f.call(this)
return e(t).each(function () {
var t = e(this)
t.data(a) && Q(t)
})
},
disable: function (t) {
var o = f.call(this)
return e(o).each(function () {
var o = e(this)
if (o.data(a)) {
o.data(a)
N.call(this, 'remove'), k.call(this), t && B.call(this), M.call(this, !0), o.addClass(d[3])
}
})
},
destroy: function () {
var t = f.call(this)
return e(t).each(function () {
var n = e(this)
if (n.data(a)) {
var i = n.data(a),
r = i.opt,
l = e('#mCSB_' + i.idx),
s = e('#mCSB_' + i.idx + '_container'),
c = e('.mCSB_' + i.idx + '_scrollbar')
r.live && m(r.liveSelector || e(t).selector),
N.call(this, 'remove'),
k.call(this),
B.call(this),
n.removeData(a),
$(this, 'mcs'),
c.remove(),
s.find('img.' + d[2]).removeClass(d[2]),
l.replaceWith(s.contents()),
n.removeClass(o + ' _' + a + '_' + i.idx + ' ' + d[6] + ' ' + d[7] + ' ' + d[5] + ' ' + d[3]).addClass(d[4])
}
})
}
},
f = function () {
return 'object' != typeof e(this) || e(this).length < 1 ? n : this
},
h = function (t) {
var o = ['rounded', 'rounded-dark', 'rounded-dots', 'rounded-dots-dark'],
a = ['rounded-dots', 'rounded-dots-dark', '3d', '3d-dark', '3d-thick', '3d-thick-dark', 'inset', 'inset-dark', 'inset-2', 'inset-2-dark', 'inset-3', 'inset-3-dark'],
n = ['minimal', 'minimal-dark'],
i = ['minimal', 'minimal-dark'],
r = ['minimal', 'minimal-dark']
;(t.autoDraggerLength = e.inArray(t.theme, o) > -1 ? !1 : t.autoDraggerLength),
(t.autoExpandScrollbar = e.inArray(t.theme, a) > -1 ? !1 : t.autoExpandScrollbar),
(t.scrollButtons.enable = e.inArray(t.theme, n) > -1 ? !1 : t.scrollButtons.enable),
(t.autoHideScrollbar = e.inArray(t.theme, i) > -1 ? !0 : t.autoHideScrollbar),
(t.scrollbarPosition = e.inArray(t.theme, r) > -1 ? 'outside' : t.scrollbarPosition)
},
m = function (e) {
l[e] && (clearTimeout(l[e]), $(l, e))
},
p = function (e) {
return 'yx' === e || 'xy' === e || 'auto' === e ? 'yx' : 'x' === e || 'horizontal' === e ? 'x' : 'y'
},
g = function (e) {
return 'stepped' === e || 'pixels' === e || 'step' === e || 'click' === e ? 'stepped' : 'stepless'
},
v = function () {
var t = e(this),
n = t.data(a),
i = n.opt,
r = i.autoExpandScrollbar ? ' ' + d[1] + '_expand' : '',
l = [
"
",
""
],
s = 'yx' === i.axis ? 'mCSB_vertical_horizontal' : 'x' === i.axis ? 'mCSB_horizontal' : 'mCSB_vertical',
c = 'yx' === i.axis ? l[0] + l[1] : 'x' === i.axis ? l[1] : l[0],
u = 'yx' === i.axis ? "" : '',
f = i.autoHideScrollbar ? ' ' + d[6] : '',
h = 'x' !== i.axis && 'rtl' === n.langDir ? ' ' + d[7] : ''
i.setWidth && t.css('width', i.setWidth),
i.setHeight && t.css('height', i.setHeight),
(i.setLeft = 'y' !== i.axis && 'rtl' === n.langDir ? '989999px' : i.setLeft),
t
.addClass(o + ' _' + a + '_' + n.idx + f + h)
.wrapInner("")
var m = e('#mCSB_' + n.idx),
p = e('#mCSB_' + n.idx + '_container')
'y' === i.axis || i.advanced.autoExpandHorizontalScroll || p.css('width', x(p)),
'outside' === i.scrollbarPosition ? ('static' === t.css('position') && t.css('position', 'relative'), t.css('overflow', 'visible'), m.addClass('mCSB_outside').after(c)) : (m.addClass('mCSB_inside').append(c), p.wrap(u)),
w.call(this)
var g = [e('#mCSB_' + n.idx + '_dragger_vertical'), e('#mCSB_' + n.idx + '_dragger_horizontal')]
g[0].css('min-height', g[0].height()), g[1].css('min-width', g[1].width())
},
x = function (t) {
var o = [
t[0].scrollWidth,
Math.max.apply(
Math,
t
.children()
.map(function () {
return e(this).outerWidth(!0)
})
.get()
)
],
a = t.parent().width()
return o[0] > a ? o[0] : o[1] > a ? o[1] : '100%'
},
_ = function () {
var t = e(this),
o = t.data(a),
n = o.opt,
i = e('#mCSB_' + o.idx + '_container')
if (n.advanced.autoExpandHorizontalScroll && 'y' !== n.axis) {
i.css({ width: 'auto', 'min-width': 0, 'overflow-x': 'scroll' })
var r = Math.ceil(i[0].scrollWidth)
3 === n.advanced.autoExpandHorizontalScroll || (2 !== n.advanced.autoExpandHorizontalScroll && r > i.parent().width())
? i.css({ width: r, 'min-width': '100%', 'overflow-x': 'inherit' })
: i
.css({ 'overflow-x': 'inherit', position: 'absolute' })
.wrap("")
.css({
width: Math.ceil(i[0].getBoundingClientRect().right + 0.4) - Math.floor(i[0].getBoundingClientRect().left),
'min-width': '100%',
position: 'relative'
})
.unwrap()
}
},
w = function () {
var t = e(this),
o = t.data(a),
n = o.opt,
i = e('.mCSB_' + o.idx + '_scrollbar:first'),
r = oe(n.scrollButtons.tabindex) ? "tabindex='" + n.scrollButtons.tabindex + "'" : '',
l = ["', "', "', "'],
s = ['x' === n.axis ? l[2] : l[0], 'x' === n.axis ? l[3] : l[1], l[2], l[3]]
n.scrollButtons.enable && i.prepend(s[0]).append(s[1]).next('.mCSB_scrollTools').prepend(s[2]).append(s[3])
},
S = function () {
var t = e(this),
o = t.data(a),
n = e('#mCSB_' + o.idx),
i = e('#mCSB_' + o.idx + '_container'),
r = [e('#mCSB_' + o.idx + '_dragger_vertical'), e('#mCSB_' + o.idx + '_dragger_horizontal')],
l = [n.height() / i.outerHeight(!1), n.width() / i.outerWidth(!1)],
c = [parseInt(r[0].css('min-height')), Math.round(l[0] * r[0].parent().height()), parseInt(r[1].css('min-width')), Math.round(l[1] * r[1].parent().width())],
d = s && c[1] < c[0] ? c[0] : c[1],
u = s && c[3] < c[2] ? c[2] : c[3]
r[0]
.css({ height: d, 'max-height': r[0].parent().height() - 10 })
.find('.mCSB_dragger_bar')
.css({ 'line-height': c[0] + 'px' }),
r[1].css({ width: u, 'max-width': r[1].parent().width() - 10 })
},
b = function () {
var t = e(this),
o = t.data(a),
n = e('#mCSB_' + o.idx),
i = e('#mCSB_' + o.idx + '_container'),
r = [e('#mCSB_' + o.idx + '_dragger_vertical'), e('#mCSB_' + o.idx + '_dragger_horizontal')],
l = [i.outerHeight(!1) - n.height(), i.outerWidth(!1) - n.width()],
s = [l[0] / (r[0].parent().height() - r[0].height()), l[1] / (r[1].parent().width() - r[1].width())]
o.scrollRatio = { y: s[0], x: s[1] }
},
C = function (e, t, o) {
var a = o ? d[0] + '_expanded' : '',
n = e.closest('.mCSB_scrollTools')
'active' === t ? (e.toggleClass(d[0] + ' ' + a), n.toggleClass(d[1]), (e[0]._draggable = e[0]._draggable ? 0 : 1)) : e[0]._draggable || ('hide' === t ? (e.removeClass(d[0]), n.removeClass(d[1])) : (e.addClass(d[0]), n.addClass(d[1])))
},
y = function () {
var t = e(this),
o = t.data(a),
n = e('#mCSB_' + o.idx),
i = e('#mCSB_' + o.idx + '_container'),
r = null == o.overflowed ? i.height() : i.outerHeight(!1),
l = null == o.overflowed ? i.width() : i.outerWidth(!1),
s = i[0].scrollHeight,
c = i[0].scrollWidth
return s > r && (r = s), c > l && (l = c), [r > n.height(), l > n.width()]
},
B = function () {
var t = e(this),
o = t.data(a),
n = o.opt,
i = e('#mCSB_' + o.idx),
r = e('#mCSB_' + o.idx + '_container'),
l = [e('#mCSB_' + o.idx + '_dragger_vertical'), e('#mCSB_' + o.idx + '_dragger_horizontal')]
if ((Q(t), (('x' !== n.axis && !o.overflowed[0]) || ('y' === n.axis && o.overflowed[0])) && (l[0].add(r).css('top', 0), G(t, '_resetY')), ('y' !== n.axis && !o.overflowed[1]) || ('x' === n.axis && o.overflowed[1]))) {
var s = (dx = 0)
'rtl' === o.langDir && ((s = i.width() - r.outerWidth(!1)), (dx = Math.abs(s / o.scrollRatio.x))), r.css('left', s), l[1].css('left', dx), G(t, '_resetX')
}
},
T = function () {
function t() {
r = setTimeout(function () {
e.event.special.mousewheel ? (clearTimeout(r), W.call(o[0])) : t()
}, 100)
}
var o = e(this),
n = o.data(a),
i = n.opt
if (!n.bindEvents) {
if ((I.call(this), i.contentTouchScroll && D.call(this), E.call(this), i.mouseWheel.enable)) {
var r
t()
}
P.call(this), U.call(this), i.advanced.autoScrollOnFocus && H.call(this), i.scrollButtons.enable && F.call(this), i.keyboard.enable && q.call(this), (n.bindEvents = !0)
}
},
k = function () {
var t = e(this),
o = t.data(a),
n = o.opt,
i = a + '_' + o.idx,
r = '.mCSB_' + o.idx + '_scrollbar',
l = e('#mCSB_' + o.idx + ',#mCSB_' + o.idx + '_container,#mCSB_' + o.idx + '_container_wrapper,' + r + ' .' + d[12] + ',#mCSB_' + o.idx + '_dragger_vertical,#mCSB_' + o.idx + '_dragger_horizontal,' + r + '>a'),
s = e('#mCSB_' + o.idx + '_container')
n.advanced.releaseDraggableSelectors && l.add(e(n.advanced.releaseDraggableSelectors)),
n.advanced.extraDraggableSelectors && l.add(e(n.advanced.extraDraggableSelectors)),
o.bindEvents &&
(e(document)
.add(e(!A() || top.document))
.unbind('.' + i),
l.each(function () {
e(this).unbind('.' + i)
}),
clearTimeout(t[0]._focusTimeout),
$(t[0], '_focusTimeout'),
clearTimeout(o.sequential.step),
$(o.sequential, 'step'),
clearTimeout(s[0].onCompleteTimeout),
$(s[0], 'onCompleteTimeout'),
(o.bindEvents = !1))
},
M = function (t) {
var o = e(this),
n = o.data(a),
i = n.opt,
r = e('#mCSB_' + n.idx + '_container_wrapper'),
l = r.length ? r : e('#mCSB_' + n.idx + '_container'),
s = [e('#mCSB_' + n.idx + '_scrollbar_vertical'), e('#mCSB_' + n.idx + '_scrollbar_horizontal')],
c = [s[0].find('.mCSB_dragger'), s[1].find('.mCSB_dragger')]
'x' !== i.axis &&
(n.overflowed[0] && !t
? (s[0].add(c[0]).add(s[0].children('a')).css('display', 'block'), l.removeClass(d[8] + ' ' + d[10]))
: (i.alwaysShowScrollbar ? (2 !== i.alwaysShowScrollbar && c[0].css('display', 'none'), l.removeClass(d[10])) : (s[0].css('display', 'none'), l.addClass(d[10])), l.addClass(d[8]))),
'y' !== i.axis &&
(n.overflowed[1] && !t
? (s[1].add(c[1]).add(s[1].children('a')).css('display', 'block'), l.removeClass(d[9] + ' ' + d[11]))
: (i.alwaysShowScrollbar ? (2 !== i.alwaysShowScrollbar && c[1].css('display', 'none'), l.removeClass(d[11])) : (s[1].css('display', 'none'), l.addClass(d[11])), l.addClass(d[9]))),
n.overflowed[0] || n.overflowed[1] ? o.removeClass(d[5]) : o.addClass(d[5])
},
O = function (t) {
var o = t.type,
a = t.target.ownerDocument !== document && null !== frameElement ? [e(frameElement).offset().top, e(frameElement).offset().left] : null,
n = A() && t.target.ownerDocument !== top.document && null !== frameElement ? [e(t.view.frameElement).offset().top, e(t.view.frameElement).offset().left] : [0, 0]
switch (o) {
case 'pointerdown':
case 'MSPointerDown':
case 'pointermove':
case 'MSPointerMove':
case 'pointerup':
case 'MSPointerUp':
return a ? [t.originalEvent.pageY - a[0] + n[0], t.originalEvent.pageX - a[1] + n[1], !1] : [t.originalEvent.pageY, t.originalEvent.pageX, !1]
case 'touchstart':
case 'touchmove':
case 'touchend':
var i = t.originalEvent.touches[0] || t.originalEvent.changedTouches[0],
r = t.originalEvent.touches.length || t.originalEvent.changedTouches.length
return t.target.ownerDocument !== document ? [i.screenY, i.screenX, r > 1] : [i.pageY, i.pageX, r > 1]
default:
return a ? [t.pageY - a[0] + n[0], t.pageX - a[1] + n[1], !1] : [t.pageY, t.pageX, !1]
}
},
I = function () {
function t(e, t, a, n) {
if (((h[0].idleTimer = d.scrollInertia < 233 ? 250 : 0), o.attr('id') === f[1]))
var i = 'x',
s = (o[0].offsetLeft - t + n) * l.scrollRatio.x
else
var i = 'y',
s = (o[0].offsetTop - e + a) * l.scrollRatio.y
G(r, s.toString(), { dir: i, drag: !0 })
}
var o,
n,
i,
r = e(this),
l = r.data(a),
d = l.opt,
u = a + '_' + l.idx,
f = ['mCSB_' + l.idx + '_dragger_vertical', 'mCSB_' + l.idx + '_dragger_horizontal'],
h = e('#mCSB_' + l.idx + '_container'),
m = e('#' + f[0] + ',#' + f[1]),
p = d.advanced.releaseDraggableSelectors ? m.add(e(d.advanced.releaseDraggableSelectors)) : m,
g = d.advanced.extraDraggableSelectors ? e(!A() || top.document).add(e(d.advanced.extraDraggableSelectors)) : e(!A() || top.document)
m
.bind('contextmenu.' + u, function (e) {
e.preventDefault()
})
.bind('mousedown.' + u + ' touchstart.' + u + ' pointerdown.' + u + ' MSPointerDown.' + u, function (t) {
if ((t.stopImmediatePropagation(), t.preventDefault(), ee(t))) {
;(c = !0),
s &&
(document.onselectstart = function () {
return !1
}),
L.call(h, !1),
Q(r),
(o = e(this))
var a = o.offset(),
l = O(t)[0] - a.top,
u = O(t)[1] - a.left,
f = o.height() + a.top,
m = o.width() + a.left
f > l && l > 0 && m > u && u > 0 && ((n = l), (i = u)), C(o, 'active', d.autoExpandScrollbar)
}
})
.bind('touchmove.' + u, function (e) {
e.stopImmediatePropagation(), e.preventDefault()
var a = o.offset(),
r = O(e)[0] - a.top,
l = O(e)[1] - a.left
t(n, i, r, l)
}),
e(document)
.add(g)
.bind('mousemove.' + u + ' pointermove.' + u + ' MSPointerMove.' + u, function (e) {
if (o) {
var a = o.offset(),
r = O(e)[0] - a.top,
l = O(e)[1] - a.left
if (n === r && i === l) return
t(n, i, r, l)
}
})
.add(p)
.bind('mouseup.' + u + ' touchend.' + u + ' pointerup.' + u + ' MSPointerUp.' + u, function () {
o && (C(o, 'active', d.autoExpandScrollbar), (o = null)), (c = !1), s && (document.onselectstart = null), L.call(h, !0)
})
},
D = function () {
function o(e) {
if (!te(e) || c || O(e)[2]) return void (t = 0)
;(t = 1), (b = 0), (C = 0), (d = 1), y.removeClass('mCS_touch_action')
var o = I.offset()
;(u = O(e)[0] - o.top), (f = O(e)[1] - o.left), (z = [O(e)[0], O(e)[1]])
}
function n(e) {
if (te(e) && !c && !O(e)[2] && (T.documentTouchScroll || e.preventDefault(), e.stopImmediatePropagation(), (!C || b) && d)) {
g = K()
var t = M.offset(),
o = O(e)[0] - t.top,
a = O(e)[1] - t.left,
n = 'mcsLinearOut'
if ((E.push(o), W.push(a), (z[2] = Math.abs(O(e)[0] - z[0])), (z[3] = Math.abs(O(e)[1] - z[1])), B.overflowed[0]))
var i = D[0].parent().height() - D[0].height(),
r = u - o > 0 && o - u > -(i * B.scrollRatio.y) && (2 * z[3] < z[2] || 'yx' === T.axis)
if (B.overflowed[1])
var l = D[1].parent().width() - D[1].width(),
h = f - a > 0 && a - f > -(l * B.scrollRatio.x) && (2 * z[2] < z[3] || 'yx' === T.axis)
r || h ? (U || e.preventDefault(), (b = 1)) : ((C = 1), y.addClass('mCS_touch_action')),
U && e.preventDefault(),
(w = 'yx' === T.axis ? [u - o, f - a] : 'x' === T.axis ? [null, f - a] : [u - o, null]),
(I[0].idleTimer = 250),
B.overflowed[0] && s(w[0], R, n, 'y', 'all', !0),
B.overflowed[1] && s(w[1], R, n, 'x', L, !0)
}
}
function i(e) {
if (!te(e) || c || O(e)[2]) return void (t = 0)
;(t = 1), e.stopImmediatePropagation(), Q(y), (p = K())
var o = M.offset()
;(h = O(e)[0] - o.top), (m = O(e)[1] - o.left), (E = []), (W = [])
}
function r(e) {
if (te(e) && !c && !O(e)[2]) {
;(d = 0), e.stopImmediatePropagation(), (b = 0), (C = 0), (v = K())
var t = M.offset(),
o = O(e)[0] - t.top,
a = O(e)[1] - t.left
if (!(v - g > 30)) {
_ = 1e3 / (v - p)
var n = 'mcsEaseOut',
i = 2.5 > _,
r = i ? [E[E.length - 2], W[W.length - 2]] : [0, 0]
x = i ? [o - r[0], a - r[1]] : [o - h, a - m]
var u = [Math.abs(x[0]), Math.abs(x[1])]
_ = i ? [Math.abs(x[0] / 4), Math.abs(x[1] / 4)] : [_, _]
var f = [Math.abs(I[0].offsetTop) - x[0] * l(u[0] / _[0], _[0]), Math.abs(I[0].offsetLeft) - x[1] * l(u[1] / _[1], _[1])]
;(w = 'yx' === T.axis ? [f[0], f[1]] : 'x' === T.axis ? [null, f[1]] : [f[0], null]), (S = [4 * u[0] + T.scrollInertia, 4 * u[1] + T.scrollInertia])
var y = parseInt(T.contentTouchScroll) || 0
;(w[0] = u[0] > y ? w[0] : 0), (w[1] = u[1] > y ? w[1] : 0), B.overflowed[0] && s(w[0], S[0], n, 'y', L, !1), B.overflowed[1] && s(w[1], S[1], n, 'x', L, !1)
}
}
}
function l(e, t) {
var o = [1.5 * t, 2 * t, t / 1.5, t / 2]
return e > 90 ? (t > 4 ? o[0] : o[3]) : e > 60 ? (t > 3 ? o[3] : o[2]) : e > 30 ? (t > 8 ? o[1] : t > 6 ? o[0] : t > 4 ? t : o[2]) : t > 8 ? t : o[3]
}
function s(e, t, o, a, n, i) {
e && G(y, e.toString(), { dur: t, scrollEasing: o, dir: a, overwrite: n, drag: i })
}
var d,
u,
f,
h,
m,
p,
g,
v,
x,
_,
w,
S,
b,
C,
y = e(this),
B = y.data(a),
T = B.opt,
k = a + '_' + B.idx,
M = e('#mCSB_' + B.idx),
I = e('#mCSB_' + B.idx + '_container'),
D = [e('#mCSB_' + B.idx + '_dragger_vertical'), e('#mCSB_' + B.idx + '_dragger_horizontal')],
E = [],
W = [],
R = 0,
L = 'yx' === T.axis ? 'none' : 'all',
z = [],
P = I.find('iframe'),
H = ['touchstart.' + k + ' pointerdown.' + k + ' MSPointerDown.' + k, 'touchmove.' + k + ' pointermove.' + k + ' MSPointerMove.' + k, 'touchend.' + k + ' pointerup.' + k + ' MSPointerUp.' + k],
U = void 0 !== document.body.style.touchAction && '' !== document.body.style.touchAction
I.bind(H[0], function (e) {
o(e)
}).bind(H[1], function (e) {
n(e)
}),
M.bind(H[0], function (e) {
i(e)
}).bind(H[2], function (e) {
r(e)
}),
P.length &&
P.each(function () {
e(this).bind('load', function () {
A(this) &&
e(this.contentDocument || this.contentWindow.document)
.bind(H[0], function (e) {
o(e), i(e)
})
.bind(H[1], function (e) {
n(e)
})
.bind(H[2], function (e) {
r(e)
})
})
})
},
E = function () {
function o() {
return window.getSelection ? window.getSelection().toString() : document.selection && 'Control' != document.selection.type ? document.selection.createRange().text : 0
}
function n(e, t, o) {
;(d.type = o && i ? 'stepped' : 'stepless'), (d.scrollAmount = 10), j(r, e, t, 'mcsLinearOut', o ? 60 : null)
}
var i,
r = e(this),
l = r.data(a),
s = l.opt,
d = l.sequential,
u = a + '_' + l.idx,
f = e('#mCSB_' + l.idx + '_container'),
h = f.parent()
f.bind('mousedown.' + u, function () {
t || i || ((i = 1), (c = !0))
})
.add(document)
.bind('mousemove.' + u, function (e) {
if (!t && i && o()) {
var a = f.offset(),
r = O(e)[0] - a.top + f[0].offsetTop,
c = O(e)[1] - a.left + f[0].offsetLeft
r > 0 && r < h.height() && c > 0 && c < h.width()
? d.step && n('off', null, 'stepped')
: ('x' !== s.axis && l.overflowed[0] && (0 > r ? n('on', 38) : r > h.height() && n('on', 40)), 'y' !== s.axis && l.overflowed[1] && (0 > c ? n('on', 37) : c > h.width() && n('on', 39)))
}
})
.bind('mouseup.' + u + ' dragend.' + u, function () {
t || (i && ((i = 0), n('off', null)), (c = !1))
})
},
W = function () {
function t(t, a) {
if ((Q(o), !z(o, t.target))) {
var r = 'auto' !== i.mouseWheel.deltaFactor ? parseInt(i.mouseWheel.deltaFactor) : s && t.deltaFactor < 100 ? 100 : t.deltaFactor || 100,
d = i.scrollInertia
if ('x' === i.axis || 'x' === i.mouseWheel.axis)
var u = 'x',
f = [Math.round(r * n.scrollRatio.x), parseInt(i.mouseWheel.scrollAmount)],
h = 'auto' !== i.mouseWheel.scrollAmount ? f[1] : f[0] >= l.width() ? 0.9 * l.width() : f[0],
m = Math.abs(e('#mCSB_' + n.idx + '_container')[0].offsetLeft),
p = c[1][0].offsetLeft,
g = c[1].parent().width() - c[1].width(),
v = 'y' === i.mouseWheel.axis ? t.deltaY || a : t.deltaX
else
var u = 'y',
f = [Math.round(r * n.scrollRatio.y), parseInt(i.mouseWheel.scrollAmount)],
h = 'auto' !== i.mouseWheel.scrollAmount ? f[1] : f[0] >= l.height() ? 0.9 * l.height() : f[0],
m = Math.abs(e('#mCSB_' + n.idx + '_container')[0].offsetTop),
p = c[0][0].offsetTop,
g = c[0].parent().height() - c[0].height(),
v = t.deltaY || a
;('y' === u && !n.overflowed[0]) ||
('x' === u && !n.overflowed[1]) ||
((i.mouseWheel.invert || t.webkitDirectionInvertedFromDevice) && (v = -v),
i.mouseWheel.normalizeDelta && (v = 0 > v ? -1 : 1),
((v > 0 && 0 !== p) || (0 > v && p !== g) || i.mouseWheel.preventDefault) && (t.stopImmediatePropagation(), t.preventDefault()),
t.deltaFactor < 5 && !i.mouseWheel.normalizeDelta && ((h = t.deltaFactor), (d = 17)),
G(o, (m - v * h).toString(), { dir: u, dur: d }))
}
}
if (e(this).data(a)) {
var o = e(this),
n = o.data(a),
i = n.opt,
r = a + '_' + n.idx,
l = e('#mCSB_' + n.idx),
c = [e('#mCSB_' + n.idx + '_dragger_vertical'), e('#mCSB_' + n.idx + '_dragger_horizontal')],
d = e('#mCSB_' + n.idx + '_container').find('iframe')
d.length &&
d.each(function () {
e(this).bind('load', function () {
A(this) &&
e(this.contentDocument || this.contentWindow.document).bind('mousewheel.' + r, function (e, o) {
t(e, o)
})
})
}),
l.bind('mousewheel.' + r, function (e, o) {
t(e, o)
})
}
},
R = new Object(),
A = function (t) {
var o = !1,
a = !1,
n = null
if ((void 0 === t ? (a = '#empty') : void 0 !== e(t).attr('id') && (a = e(t).attr('id')), a !== !1 && void 0 !== R[a])) return R[a]
if (t) {
try {
var i = t.contentDocument || t.contentWindow.document
n = i.body.innerHTML
} catch (r) {}
o = null !== n
} else {
try {
var i = top.document
n = i.body.innerHTML
} catch (r) {}
o = null !== n
}
return a !== !1 && (R[a] = o), o
},
L = function (e) {
var t = this.find('iframe')
if (t.length) {
var o = e ? 'auto' : 'none'
t.css('pointer-events', o)
}
},
z = function (t, o) {
var n = o.nodeName.toLowerCase(),
i = t.data(a).opt.mouseWheel.disableOver,
r = ['select', 'textarea']
return e.inArray(n, i) > -1 && !(e.inArray(n, r) > -1 && !e(o).is(':focus'))
},
P = function () {
var t,
o = e(this),
n = o.data(a),
i = a + '_' + n.idx,
r = e('#mCSB_' + n.idx + '_container'),
l = r.parent(),
s = e('.mCSB_' + n.idx + '_scrollbar .' + d[12])
s.bind('mousedown.' + i + ' touchstart.' + i + ' pointerdown.' + i + ' MSPointerDown.' + i, function (o) {
;(c = !0), e(o.target).hasClass('mCSB_dragger') || (t = 1)
})
.bind('touchend.' + i + ' pointerup.' + i + ' MSPointerUp.' + i, function () {
c = !1
})
.bind('click.' + i, function (a) {
if (t && ((t = 0), e(a.target).hasClass(d[12]) || e(a.target).hasClass('mCSB_draggerRail'))) {
Q(o)
var i = e(this),
s = i.find('.mCSB_dragger')
if (i.parent('.mCSB_scrollTools_horizontal').length > 0) {
if (!n.overflowed[1]) return
var c = 'x',
u = a.pageX > s.offset().left ? -1 : 1,
f = Math.abs(r[0].offsetLeft) - u * (0.9 * l.width())
} else {
if (!n.overflowed[0]) return
var c = 'y',
u = a.pageY > s.offset().top ? -1 : 1,
f = Math.abs(r[0].offsetTop) - u * (0.9 * l.height())
}
G(o, f.toString(), { dir: c, scrollEasing: 'mcsEaseInOut' })
}
})
},
H = function () {
var t = e(this),
o = t.data(a),
n = o.opt,
i = a + '_' + o.idx,
r = e('#mCSB_' + o.idx + '_container'),
l = r.parent()
r.bind('focusin.' + i, function () {
var o = e(document.activeElement),
a = r.find('.mCustomScrollBox').length,
i = 0
o.is(n.advanced.autoScrollOnFocus) &&
(Q(t),
clearTimeout(t[0]._focusTimeout),
(t[0]._focusTimer = a ? (i + 17) * a : 0),
(t[0]._focusTimeout = setTimeout(function () {
var e = [ae(o)[0], ae(o)[1]],
a = [r[0].offsetTop, r[0].offsetLeft],
s = [a[0] + e[0] >= 0 && a[0] + e[0] < l.height() - o.outerHeight(!1), a[1] + e[1] >= 0 && a[0] + e[1] < l.width() - o.outerWidth(!1)],
c = 'yx' !== n.axis || s[0] || s[1] ? 'all' : 'none'
'x' === n.axis || s[0] || G(t, e[0].toString(), { dir: 'y', scrollEasing: 'mcsEaseInOut', overwrite: c, dur: i }),
'y' === n.axis ||
s[1] ||
G(t, e[1].toString(), {
dir: 'x',
scrollEasing: 'mcsEaseInOut',
overwrite: c,
dur: i
})
}, t[0]._focusTimer)))
})
},
U = function () {
var t = e(this),
o = t.data(a),
n = a + '_' + o.idx,
i = e('#mCSB_' + o.idx + '_container').parent()
i.bind('scroll.' + n, function () {
;(0 === i.scrollTop() && 0 === i.scrollLeft()) || e('.mCSB_' + o.idx + '_scrollbar').css('visibility', 'hidden')
})
},
F = function () {
var t = e(this),
o = t.data(a),
n = o.opt,
i = o.sequential,
r = a + '_' + o.idx,
l = '.mCSB_' + o.idx + '_scrollbar',
s = e(l + '>a')
s.bind('contextmenu.' + r, function (e) {
e.preventDefault()
}).bind('mousedown.' + r + ' touchstart.' + r + ' pointerdown.' + r + ' MSPointerDown.' + r + ' mouseup.' + r + ' touchend.' + r + ' pointerup.' + r + ' MSPointerUp.' + r + ' mouseout.' + r + ' pointerout.' + r + ' MSPointerOut.' + r + ' click.' + r, function (a) {
function r(e, o) {
;(i.scrollAmount = n.scrollButtons.scrollAmount), j(t, e, o)
}
if ((a.preventDefault(), ee(a))) {
var l = e(this).attr('class')
switch (((i.type = n.scrollButtons.scrollType), a.type)) {
case 'mousedown':
case 'touchstart':
case 'pointerdown':
case 'MSPointerDown':
if ('stepped' === i.type) return
;(c = !0), (o.tweenRunning = !1), r('on', l)
break
case 'mouseup':
case 'touchend':
case 'pointerup':
case 'MSPointerUp':
case 'mouseout':
case 'pointerout':
case 'MSPointerOut':
if ('stepped' === i.type) return
;(c = !1), i.dir && r('off', l)
break
case 'click':
if ('stepped' !== i.type || o.tweenRunning) return
r('on', l)
}
}
})
},
q = function () {
function t(t) {
function a(e, t) {
;(r.type = i.keyboard.scrollType), (r.scrollAmount = i.keyboard.scrollAmount), ('stepped' === r.type && n.tweenRunning) || j(o, e, t)
}
switch (t.type) {
case 'blur':
n.tweenRunning && r.dir && a('off', null)
break
case 'keydown':
case 'keyup':
var l = t.keyCode ? t.keyCode : t.which,
s = 'on'
if (('x' !== i.axis && (38 === l || 40 === l)) || ('y' !== i.axis && (37 === l || 39 === l))) {
if (((38 === l || 40 === l) && !n.overflowed[0]) || ((37 === l || 39 === l) && !n.overflowed[1])) return
'keyup' === t.type && (s = 'off'), e(document.activeElement).is(u) || (t.preventDefault(), t.stopImmediatePropagation(), a(s, l))
} else if (33 === l || 34 === l) {
if (((n.overflowed[0] || n.overflowed[1]) && (t.preventDefault(), t.stopImmediatePropagation()), 'keyup' === t.type)) {
Q(o)
var f = 34 === l ? -1 : 1
if ('x' === i.axis || ('yx' === i.axis && n.overflowed[1] && !n.overflowed[0]))
var h = 'x',
m = Math.abs(c[0].offsetLeft) - f * (0.9 * d.width())
else
var h = 'y',
m = Math.abs(c[0].offsetTop) - f * (0.9 * d.height())
G(o, m.toString(), { dir: h, scrollEasing: 'mcsEaseInOut' })
}
} else if ((35 === l || 36 === l) && !e(document.activeElement).is(u) && ((n.overflowed[0] || n.overflowed[1]) && (t.preventDefault(), t.stopImmediatePropagation()), 'keyup' === t.type)) {
if ('x' === i.axis || ('yx' === i.axis && n.overflowed[1] && !n.overflowed[0]))
var h = 'x',
m = 35 === l ? Math.abs(d.width() - c.outerWidth(!1)) : 0
else
var h = 'y',
m = 35 === l ? Math.abs(d.height() - c.outerHeight(!1)) : 0
G(o, m.toString(), { dir: h, scrollEasing: 'mcsEaseInOut' })
}
}
}
var o = e(this),
n = o.data(a),
i = n.opt,
r = n.sequential,
l = a + '_' + n.idx,
s = e('#mCSB_' + n.idx),
c = e('#mCSB_' + n.idx + '_container'),
d = c.parent(),
u = "input,textarea,select,datalist,keygen,[contenteditable='true']",
f = c.find('iframe'),
h = ['blur.' + l + ' keydown.' + l + ' keyup.' + l]
f.length &&
f.each(function () {
e(this).bind('load', function () {
A(this) &&
e(this.contentDocument || this.contentWindow.document).bind(h[0], function (e) {
t(e)
})
})
}),
s.attr('tabindex', '0').bind(h[0], function (e) {
t(e)
})
},
j = function (t, o, n, i, r) {
function l(e) {
u.snapAmount && (f.scrollAmount = u.snapAmount instanceof Array ? ('x' === f.dir[0] ? u.snapAmount[1] : u.snapAmount[0]) : u.snapAmount)
var o = 'stepped' !== f.type,
a = r ? r : e ? (o ? p / 1.5 : g) : 1e3 / 60,
n = e ? (o ? 7.5 : 40) : 2.5,
s = [Math.abs(h[0].offsetTop), Math.abs(h[0].offsetLeft)],
d = [c.scrollRatio.y > 10 ? 10 : c.scrollRatio.y, c.scrollRatio.x > 10 ? 10 : c.scrollRatio.x],
m = 'x' === f.dir[0] ? s[1] + f.dir[1] * (d[1] * n) : s[0] + f.dir[1] * (d[0] * n),
v = 'x' === f.dir[0] ? s[1] + f.dir[1] * parseInt(f.scrollAmount) : s[0] + f.dir[1] * parseInt(f.scrollAmount),
x = 'auto' !== f.scrollAmount ? v : m,
_ = i ? i : e ? (o ? 'mcsLinearOut' : 'mcsEaseInOut') : 'mcsLinear',
w = !!e
return (
e && 17 > a && (x = 'x' === f.dir[0] ? s[1] : s[0]),
G(t, x.toString(), { dir: f.dir[0], scrollEasing: _, dur: a, onComplete: w }),
e
? void (f.dir = !1)
: (clearTimeout(f.step),
void (f.step = setTimeout(function () {
l()
}, a)))
)
}
function s() {
clearTimeout(f.step), $(f, 'step'), Q(t)
}
var c = t.data(a),
u = c.opt,
f = c.sequential,
h = e('#mCSB_' + c.idx + '_container'),
m = 'stepped' === f.type,
p = u.scrollInertia < 26 ? 26 : u.scrollInertia,
g = u.scrollInertia < 1 ? 17 : u.scrollInertia
switch (o) {
case 'on':
if (((f.dir = [n === d[16] || n === d[15] || 39 === n || 37 === n ? 'x' : 'y', n === d[13] || n === d[15] || 38 === n || 37 === n ? -1 : 1]), Q(t), oe(n) && 'stepped' === f.type)) return
l(m)
break
case 'off':
s(), (m || (c.tweenRunning && f.dir)) && l(!0)
}
},
Y = function (t) {
var o = e(this).data(a).opt,
n = []
return (
'function' == typeof t && (t = t()),
t instanceof Array ? (n = t.length > 1 ? [t[0], t[1]] : 'x' === o.axis ? [null, t[0]] : [t[0], null]) : ((n[0] = t.y ? t.y : t.x || 'x' === o.axis ? null : t), (n[1] = t.x ? t.x : t.y || 'y' === o.axis ? null : t)),
'function' == typeof n[0] && (n[0] = n[0]()),
'function' == typeof n[1] && (n[1] = n[1]()),
n
)
},
X = function (t, o) {
if (null != t && 'undefined' != typeof t) {
var n = e(this),
i = n.data(a),
r = i.opt,
l = e('#mCSB_' + i.idx + '_container'),
s = l.parent(),
c = typeof t
o || (o = 'x' === r.axis ? 'x' : 'y')
var d = 'x' === o ? l.outerWidth(!1) - s.width() : l.outerHeight(!1) - s.height(),
f = 'x' === o ? l[0].offsetLeft : l[0].offsetTop,
h = 'x' === o ? 'left' : 'top'
switch (c) {
case 'function':
return t()
case 'object':
var m = t.jquery ? t : e(t)
if (!m.length) return
return 'x' === o ? ae(m)[1] : ae(m)[0]
case 'string':
case 'number':
if (oe(t)) return Math.abs(t)
if (-1 !== t.indexOf('%')) return Math.abs((d * parseInt(t)) / 100)
if (-1 !== t.indexOf('-=')) return Math.abs(f - parseInt(t.split('-=')[1]))
if (-1 !== t.indexOf('+=')) {
var p = f + parseInt(t.split('+=')[1])
return p >= 0 ? 0 : Math.abs(p)
}
if (-1 !== t.indexOf('px') && oe(t.split('px')[0])) return Math.abs(t.split('px')[0])
if ('top' === t || 'left' === t) return 0
if ('bottom' === t) return Math.abs(s.height() - l.outerHeight(!1))
if ('right' === t) return Math.abs(s.width() - l.outerWidth(!1))
if ('first' === t || 'last' === t) {
var m = l.find(':' + t)
return 'x' === o ? ae(m)[1] : ae(m)[0]
}
return e(t).length ? ('x' === o ? ae(e(t))[1] : ae(e(t))[0]) : (l.css(h, t), void u.update.call(null, n[0]))
}
}
},
N = function (t) {
function o() {
return (
clearTimeout(f[0].autoUpdate),
0 === l.parents('html').length
? void (l = null)
: void (f[0].autoUpdate = setTimeout(function () {
return c.advanced.updateOnSelectorChange && ((s.poll.change.n = i()), s.poll.change.n !== s.poll.change.o)
? ((s.poll.change.o = s.poll.change.n), void r(3))
: c.advanced.updateOnContentResize && ((s.poll.size.n = l[0].scrollHeight + l[0].scrollWidth + f[0].offsetHeight + l[0].offsetHeight + l[0].offsetWidth), s.poll.size.n !== s.poll.size.o)
? ((s.poll.size.o = s.poll.size.n), void r(1))
: !c.advanced.updateOnImageLoad || ('auto' === c.advanced.updateOnImageLoad && 'y' === c.axis) || ((s.poll.img.n = f.find('img').length), s.poll.img.n === s.poll.img.o)
? void ((c.advanced.updateOnSelectorChange || c.advanced.updateOnContentResize || c.advanced.updateOnImageLoad) && o())
: ((s.poll.img.o = s.poll.img.n),
void f.find('img').each(function () {
n(this)
}))
}, c.advanced.autoUpdateTimeout))
)
}
function n(t) {
function o(e, t) {
return function () {
return t.apply(e, arguments)
}
}
function a() {
;(this.onload = null), e(t).addClass(d[2]), r(2)
}
if (e(t).hasClass(d[2])) return void r()
var n = new Image()
;(n.onload = o(n, a)), (n.src = t.src)
}
function i() {
c.advanced.updateOnSelectorChange === !0 && (c.advanced.updateOnSelectorChange = '*')
var e = 0,
t = f.find(c.advanced.updateOnSelectorChange)
return (
c.advanced.updateOnSelectorChange &&
t.length > 0 &&
t.each(function () {
e += this.offsetHeight + this.offsetWidth
}),
e
)
}
function r(e) {
clearTimeout(f[0].autoUpdate), u.update.call(null, l[0], e)
}
var l = e(this),
s = l.data(a),
c = s.opt,
f = e('#mCSB_' + s.idx + '_container')
return t ? (clearTimeout(f[0].autoUpdate), void $(f[0], 'autoUpdate')) : void o()
},
V = function (e, t, o) {
return Math.round(e / t) * t - o
},
Q = function (t) {
var o = t.data(a),
n = e('#mCSB_' + o.idx + '_container,#mCSB_' + o.idx + '_container_wrapper,#mCSB_' + o.idx + '_dragger_vertical,#mCSB_' + o.idx + '_dragger_horizontal')
n.each(function () {
Z.call(this)
})
},
G = function (t, o, n) {
function i(e) {
return s && c.callbacks[e] && 'function' == typeof c.callbacks[e]
}
function r() {
return [c.callbacks.alwaysTriggerOffsets || w >= S[0] + y, c.callbacks.alwaysTriggerOffsets || -B >= w]
}
function l() {
var e = [h[0].offsetTop, h[0].offsetLeft],
o = [x[0].offsetTop, x[0].offsetLeft],
a = [h.outerHeight(!1), h.outerWidth(!1)],
i = [f.height(), f.width()]
t[0].mcs = {
content: h,
top: e[0],
left: e[1],
draggerTop: o[0],
draggerLeft: o[1],
topPct: Math.round((100 * Math.abs(e[0])) / (Math.abs(a[0]) - i[0])),
leftPct: Math.round((100 * Math.abs(e[1])) / (Math.abs(a[1]) - i[1])),
direction: n.dir
}
}
var s = t.data(a),
c = s.opt,
d = {
trigger: 'internal',
dir: 'y',
scrollEasing: 'mcsEaseOut',
drag: !1,
dur: c.scrollInertia,
overwrite: 'all',
callbacks: !0,
onStart: !0,
onUpdate: !0,
onComplete: !0
},
n = e.extend(d, n),
u = [n.dur, n.drag ? 0 : n.dur],
f = e('#mCSB_' + s.idx),
h = e('#mCSB_' + s.idx + '_container'),
m = h.parent(),
p = c.callbacks.onTotalScrollOffset ? Y.call(t, c.callbacks.onTotalScrollOffset) : [0, 0],
g = c.callbacks.onTotalScrollBackOffset ? Y.call(t, c.callbacks.onTotalScrollBackOffset) : [0, 0]
if (
((s.trigger = n.trigger),
(0 === m.scrollTop() && 0 === m.scrollLeft()) || (e('.mCSB_' + s.idx + '_scrollbar').css('visibility', 'visible'), m.scrollTop(0).scrollLeft(0)),
'_resetY' !== o || s.contentReset.y || (i('onOverflowYNone') && c.callbacks.onOverflowYNone.call(t[0]), (s.contentReset.y = 1)),
'_resetX' !== o || s.contentReset.x || (i('onOverflowXNone') && c.callbacks.onOverflowXNone.call(t[0]), (s.contentReset.x = 1)),
'_resetY' !== o && '_resetX' !== o)
) {
if (
((!s.contentReset.y && t[0].mcs) || !s.overflowed[0] || (i('onOverflowY') && c.callbacks.onOverflowY.call(t[0]), (s.contentReset.x = null)),
(!s.contentReset.x && t[0].mcs) || !s.overflowed[1] || (i('onOverflowX') && c.callbacks.onOverflowX.call(t[0]), (s.contentReset.x = null)),
c.snapAmount)
) {
var v = c.snapAmount instanceof Array ? ('x' === n.dir ? c.snapAmount[1] : c.snapAmount[0]) : c.snapAmount
o = V(o, v, c.snapOffset)
}
switch (n.dir) {
case 'x':
var x = e('#mCSB_' + s.idx + '_dragger_horizontal'),
_ = 'left',
w = h[0].offsetLeft,
S = [f.width() - h.outerWidth(!1), x.parent().width() - x.width()],
b = [o, 0 === o ? 0 : o / s.scrollRatio.x],
y = p[1],
B = g[1],
T = y > 0 ? y / s.scrollRatio.x : 0,
k = B > 0 ? B / s.scrollRatio.x : 0
break
case 'y':
var x = e('#mCSB_' + s.idx + '_dragger_vertical'),
_ = 'top',
w = h[0].offsetTop,
S = [f.height() - h.outerHeight(!1), x.parent().height() - x.height()],
b = [o, 0 === o ? 0 : o / s.scrollRatio.y],
y = p[0],
B = g[0],
T = y > 0 ? y / s.scrollRatio.y : 0,
k = B > 0 ? B / s.scrollRatio.y : 0
}
b[1] < 0 || (0 === b[0] && 0 === b[1]) ? (b = [0, 0]) : b[1] >= S[1] ? (b = [S[0], S[1]]) : (b[0] = -b[0]),
t[0].mcs || (l(), i('onInit') && c.callbacks.onInit.call(t[0])),
clearTimeout(h[0].onCompleteTimeout),
J(x[0], _, Math.round(b[1]), u[1], n.scrollEasing),
(!s.tweenRunning && ((0 === w && b[0] >= 0) || (w === S[0] && b[0] <= S[0]))) ||
J(h[0], _, Math.round(b[0]), u[0], n.scrollEasing, n.overwrite, {
onStart: function () {
n.callbacks && n.onStart && !s.tweenRunning && (i('onScrollStart') && (l(), c.callbacks.onScrollStart.call(t[0])), (s.tweenRunning = !0), C(x), (s.cbOffsets = r()))
},
onUpdate: function () {
n.callbacks && n.onUpdate && i('whileScrolling') && (l(), c.callbacks.whileScrolling.call(t[0]))
},
onComplete: function () {
if (n.callbacks && n.onComplete) {
'yx' === c.axis && clearTimeout(h[0].onCompleteTimeout)
var e = h[0].idleTimer || 0
h[0].onCompleteTimeout = setTimeout(function () {
i('onScroll') && (l(), c.callbacks.onScroll.call(t[0])),
i('onTotalScroll') && b[1] >= S[1] - T && s.cbOffsets[0] && (l(), c.callbacks.onTotalScroll.call(t[0])),
i('onTotalScrollBack') && b[1] <= k && s.cbOffsets[1] && (l(), c.callbacks.onTotalScrollBack.call(t[0])),
(s.tweenRunning = !1),
(h[0].idleTimer = 0),
C(x, 'hide')
}, e)
}
}
})
}
},
J = function (e, t, o, a, n, i, r) {
function l() {
S.stop || (x || m.call(), (x = K() - v), s(), x >= S.time && ((S.time = x > S.time ? x + f - (x - S.time) : x + f - 1), S.time < x + 1 && (S.time = x + 1)), S.time < a ? (S.id = h(l)) : g.call())
}
function s() {
a > 0 ? ((S.currVal = u(S.time, _, b, a, n)), (w[t] = Math.round(S.currVal) + 'px')) : (w[t] = o + 'px'), p.call()
}
function c() {
;(f = 1e3 / 60),
(S.time = x + f),
(h = window.requestAnimationFrame
? window.requestAnimationFrame
: function (e) {
return s(), setTimeout(e, 0.01)
}),
(S.id = h(l))
}
function d() {
null != S.id && (window.requestAnimationFrame ? window.cancelAnimationFrame(S.id) : clearTimeout(S.id), (S.id = null))
}
function u(e, t, o, a, n) {
switch (n) {
case 'linear':
case 'mcsLinear':
return (o * e) / a + t
case 'mcsLinearOut':
return (e /= a), e--, o * Math.sqrt(1 - e * e) + t
case 'easeInOutSmooth':
return (e /= a / 2), 1 > e ? (o / 2) * e * e + t : (e--, (-o / 2) * (e * (e - 2) - 1) + t)
case 'easeInOutStrong':
return (e /= a / 2), 1 > e ? (o / 2) * Math.pow(2, 10 * (e - 1)) + t : (e--, (o / 2) * (-Math.pow(2, -10 * e) + 2) + t)
case 'easeInOut':
case 'mcsEaseInOut':
return (e /= a / 2), 1 > e ? (o / 2) * e * e * e + t : ((e -= 2), (o / 2) * (e * e * e + 2) + t)
case 'easeOutSmooth':
return (e /= a), e--, -o * (e * e * e * e - 1) + t
case 'easeOutStrong':
return o * (-Math.pow(2, (-10 * e) / a) + 1) + t
case 'easeOut':
case 'mcsEaseOut':
default:
var i = (e /= a) * e,
r = i * e
return t + o * (0.499999999999997 * r * i + -2.5 * i * i + 5.5 * r + -6.5 * i + 4 * e)
}
}
e._mTween || (e._mTween = { top: {}, left: {} })
var f,
h,
r = r || {},
m = r.onStart || function () {},
p = r.onUpdate || function () {},
g = r.onComplete || function () {},
v = K(),
x = 0,
_ = e.offsetTop,
w = e.style,
S = e._mTween[t]
'left' === t && (_ = e.offsetLeft)
var b = o - _
;(S.stop = 0), 'none' !== i && d(), c()
},
K = function () {
return window.performance && window.performance.now ? window.performance.now() : window.performance && window.performance.webkitNow ? window.performance.webkitNow() : Date.now ? Date.now() : new Date().getTime()
},
Z = function () {
var e = this
e._mTween || (e._mTween = { top: {}, left: {} })
for (var t = ['top', 'left'], o = 0; o < t.length; o++) {
var a = t[o]
e._mTween[a].id && (window.requestAnimationFrame ? window.cancelAnimationFrame(e._mTween[a].id) : clearTimeout(e._mTween[a].id), (e._mTween[a].id = null), (e._mTween[a].stop = 1))
}
},
$ = function (e, t) {
try {
delete e[t]
} catch (o) {
e[t] = null
}
},
ee = function (e) {
return !(e.which && 1 !== e.which)
},
te = function (e) {
var t = e.originalEvent.pointerType
return !(t && 'touch' !== t && 2 !== t)
},
oe = function (e) {
return !isNaN(parseFloat(e)) && isFinite(e)
},
ae = function (e) {
var t = e.parents('.mCSB_container')
return [e.offset().top - t.offset().top, e.offset().left - t.offset().left]
},
ne = function () {
function e() {
var e = ['webkit', 'moz', 'ms', 'o']
if ('hidden' in document) return 'hidden'
for (var t = 0; t < e.length; t++) if (e[t] + 'Hidden' in document) return e[t] + 'Hidden'
return null
}
var t = e()
return t ? document[t] : !1
}
;(e.fn[o] = function (t) {
return u[t] ? u[t].apply(this, Array.prototype.slice.call(arguments, 1)) : 'object' != typeof t && t ? void e.error('Method ' + t + ' does not exist') : u.init.apply(this, arguments)
}),
(e[o] = function (t) {
return u[t] ? u[t].apply(this, Array.prototype.slice.call(arguments, 1)) : 'object' != typeof t && t ? void e.error('Method ' + t + ' does not exist') : u.init.apply(this, arguments)
}),
(e[o].defaults = i),
(window[o] = !0),
e(window).bind('load', function () {
e(n)[o](),
e.extend(e.expr[':'], {
mcsInView:
e.expr[':'].mcsInView ||
function (t) {
var o,
a,
n = e(t),
i = n.parents('.mCSB_container')
if (i.length) return (o = i.parent()), (a = [i[0].offsetTop, i[0].offsetLeft]), a[0] + ae(n)[0] >= 0 && a[0] + ae(n)[0] < o.height() - n.outerHeight(!1) && a[1] + ae(n)[1] >= 0 && a[1] + ae(n)[1] < o.width() - n.outerWidth(!1)
},
mcsInSight:
e.expr[':'].mcsInSight ||
function (t, o, a) {
var n,
i,
r,
l,
s = e(t),
c = s.parents('.mCSB_container'),
d =
'exact' === a[3]
? [
[1, 0],
[1, 0]
]
: [
[0.9, 0.1],
[0.6, 0.4]
]
if (c.length)
return (
(n = [s.outerHeight(!1), s.outerWidth(!1)]),
(r = [c[0].offsetTop + ae(s)[0], c[0].offsetLeft + ae(s)[1]]),
(i = [c.parent()[0].offsetHeight, c.parent()[0].offsetWidth]),
(l = [n[0] < i[0] ? d[0] : d[1], n[1] < i[1] ? d[0] : d[1]]),
r[0] - i[0] * l[0][0] < 0 && r[0] + n[0] - i[0] * l[0][1] >= 0 && r[1] - i[1] * l[1][0] < 0 && r[1] + n[1] - i[1] * l[1][1] >= 0
)
},
mcsOverflow:
e.expr[':'].mcsOverflow ||
function (t) {
var o = e(t).data(a)
if (o) return o.overflowed[0] || o.overflowed[1]
}
})
})
})
})