Spaces:
Running
Running
| /* | |
| * Copyright (c) 2024 SRBThemes | |
| * Author: SRBThemes | |
| * This file is made for CURRENT TEMPLATE | |
| */ | |
| /* | |
| List of plugins | |
| 1. Waypoints | |
| 2. Isotope | |
| */ | |
| /*------------------------------------------------------------------*/ | |
| /* WAYPOINTS | |
| /*------------------------------------------------------------------*/ | |
| /*! | |
| Waypoints - 4.0.1 | |
| Copyright © 2011-2016 Caleb Troughton | |
| Licensed under the MIT license. | |
| https://github.com/imakewebthings/waypoints/blob/master/licenses.txt | |
| */ | |
| ! function() { | |
| "use strict"; | |
| function t(o) { | |
| if (!o) throw new Error("No options passed to Waypoint constructor"); | |
| if (!o.element) throw new Error("No element option passed to Waypoint constructor"); | |
| if (!o.handler) throw new Error("No handler option passed to Waypoint constructor"); | |
| this.key = "waypoint-" + e, this.options = t.Adapter.extend({}, t.defaults, o), this.element = this.options.element, this.adapter = new t.Adapter(this.element), this.callback = o.handler, this.axis = this.options.horizontal ? "horizontal" : "vertical", this.enabled = this.options.enabled, this.triggerPoint = null, this.group = t.Group.findOrCreate({ | |
| name: this.options.group, | |
| axis: this.axis | |
| }), this.context = t.Context.findOrCreateByElement(this.options.context), t.offsetAliases[this.options.offset] && (this.options.offset = t.offsetAliases[this.options.offset]), this.group.add(this), this.context.add(this), i[this.key] = this, e += 1 | |
| } | |
| var e = 0, | |
| i = {}; | |
| t.prototype.queueTrigger = function(t) { | |
| this.group.queueTrigger(this, t) | |
| }, t.prototype.trigger = function(t) { | |
| this.enabled && this.callback && this.callback.apply(this, t) | |
| }, t.prototype.destroy = function() { | |
| this.context.remove(this), this.group.remove(this), delete i[this.key] | |
| }, t.prototype.disable = function() { | |
| return this.enabled = !1, this | |
| }, t.prototype.enable = function() { | |
| return this.context.refresh(), this.enabled = !0, this | |
| }, t.prototype.next = function() { | |
| return this.group.next(this) | |
| }, t.prototype.previous = function() { | |
| return this.group.previous(this) | |
| }, t.invokeAll = function(t) { | |
| var e = []; | |
| for (var o in i) e.push(i[o]); | |
| for (var n = 0, r = e.length; r > n; n++) e[n][t]() | |
| }, t.destroyAll = function() { | |
| t.invokeAll("destroy") | |
| }, t.disableAll = function() { | |
| t.invokeAll("disable") | |
| }, t.enableAll = function() { | |
| t.Context.refreshAll(); | |
| for (var e in i) i[e].enabled = !0; | |
| return this | |
| }, t.refreshAll = function() { | |
| t.Context.refreshAll() | |
| }, t.viewportHeight = function() { | |
| return window.innerHeight || document.documentElement.clientHeight | |
| }, t.viewportWidth = function() { | |
| return document.documentElement.clientWidth | |
| }, t.adapters = [], t.defaults = { | |
| context: window, | |
| continuous: !0, | |
| enabled: !0, | |
| group: "default", | |
| horizontal: !1, | |
| offset: 0 | |
| }, t.offsetAliases = { | |
| "bottom-in-view": function() { | |
| return this.context.innerHeight() - this.adapter.outerHeight() | |
| }, | |
| "right-in-view": function() { | |
| return this.context.innerWidth() - this.adapter.outerWidth() | |
| } | |
| }, window.Waypoint = t | |
| }(), | |
| function() { | |
| "use strict"; | |
| function t(t) { | |
| window.setTimeout(t, 1e3 / 60) | |
| } | |
| function e(t) { | |
| this.element = t, this.Adapter = n.Adapter, this.adapter = new this.Adapter(t), this.key = "waypoint-context-" + i, this.didScroll = !1, this.didResize = !1, this.oldScroll = { | |
| x: this.adapter.scrollLeft(), | |
| y: this.adapter.scrollTop() | |
| }, this.waypoints = { | |
| vertical: {}, | |
| horizontal: {} | |
| }, t.waypointContextKey = this.key, o[t.waypointContextKey] = this, i += 1, n.windowContext || (n.windowContext = !0, n.windowContext = new e(window)), this.createThrottledScrollHandler(), this.createThrottledResizeHandler() | |
| } | |
| var i = 0, | |
| o = {}, | |
| n = window.Waypoint, | |
| r = window.onload; | |
| e.prototype.add = function(t) { | |
| var e = t.options.horizontal ? "horizontal" : "vertical"; | |
| this.waypoints[e][t.key] = t, this.refresh() | |
| }, e.prototype.checkEmpty = function() { | |
| var t = this.Adapter.isEmptyObject(this.waypoints.horizontal), | |
| e = this.Adapter.isEmptyObject(this.waypoints.vertical), | |
| i = this.element == this.element.window; | |
| t && e && !i && (this.adapter.off(".waypoints"), delete o[this.key]) | |
| }, e.prototype.createThrottledResizeHandler = function() { | |
| function t() { | |
| e.handleResize(), e.didResize = !1 | |
| } | |
| var e = this; | |
| this.adapter.on("resize.waypoints", function() { | |
| e.didResize || (e.didResize = !0, n.requestAnimationFrame(t)) | |
| }) | |
| }, e.prototype.createThrottledScrollHandler = function() { | |
| function t() { | |
| e.handleScroll(), e.didScroll = !1 | |
| } | |
| var e = this; | |
| this.adapter.on("scroll.waypoints", function() { | |
| (!e.didScroll || n.isTouch) && (e.didScroll = !0, n.requestAnimationFrame(t)) | |
| }) | |
| }, e.prototype.handleResize = function() { | |
| n.Context.refreshAll() | |
| }, e.prototype.handleScroll = function() { | |
| var t = {}, | |
| e = { | |
| horizontal: { | |
| newScroll: this.adapter.scrollLeft(), | |
| oldScroll: this.oldScroll.x, | |
| forward: "right", | |
| backward: "left" | |
| }, | |
| vertical: { | |
| newScroll: this.adapter.scrollTop(), | |
| oldScroll: this.oldScroll.y, | |
| forward: "down", | |
| backward: "up" | |
| } | |
| }; | |
| for (var i in e) { | |
| var o = e[i], | |
| n = o.newScroll > o.oldScroll, | |
| r = n ? o.forward : o.backward; | |
| for (var s in this.waypoints[i]) { | |
| var a = this.waypoints[i][s]; | |
| if (null !== a.triggerPoint) { | |
| var l = o.oldScroll < a.triggerPoint, | |
| h = o.newScroll >= a.triggerPoint, | |
| p = l && h, | |
| u = !l && !h; | |
| (p || u) && (a.queueTrigger(r), t[a.group.id] = a.group) | |
| } | |
| } | |
| } | |
| for (var c in t) t[c].flushTriggers(); | |
| this.oldScroll = { | |
| x: e.horizontal.newScroll, | |
| y: e.vertical.newScroll | |
| } | |
| }, e.prototype.innerHeight = function() { | |
| return this.element == this.element.window ? n.viewportHeight() : this.adapter.innerHeight() | |
| }, e.prototype.remove = function(t) { | |
| delete this.waypoints[t.axis][t.key], this.checkEmpty() | |
| }, e.prototype.innerWidth = function() { | |
| return this.element == this.element.window ? n.viewportWidth() : this.adapter.innerWidth() | |
| }, e.prototype.destroy = function() { | |
| var t = []; | |
| for (var e in this.waypoints) | |
| for (var i in this.waypoints[e]) t.push(this.waypoints[e][i]); | |
| for (var o = 0, n = t.length; n > o; o++) t[o].destroy() | |
| }, e.prototype.refresh = function() { | |
| var t, e = this.element == this.element.window, | |
| i = e ? void 0 : this.adapter.offset(), | |
| o = {}; | |
| this.handleScroll(), t = { | |
| horizontal: { | |
| contextOffset: e ? 0 : i.left, | |
| contextScroll: e ? 0 : this.oldScroll.x, | |
| contextDimension: this.innerWidth(), | |
| oldScroll: this.oldScroll.x, | |
| forward: "right", | |
| backward: "left", | |
| offsetProp: "left" | |
| }, | |
| vertical: { | |
| contextOffset: e ? 0 : i.top, | |
| contextScroll: e ? 0 : this.oldScroll.y, | |
| contextDimension: this.innerHeight(), | |
| oldScroll: this.oldScroll.y, | |
| forward: "down", | |
| backward: "up", | |
| offsetProp: "top" | |
| } | |
| }; | |
| for (var r in t) { | |
| var s = t[r]; | |
| for (var a in this.waypoints[r]) { | |
| var l, h, p, u, c, d = this.waypoints[r][a], | |
| f = d.options.offset, | |
| w = d.triggerPoint, | |
| y = 0, | |
| g = null == w; | |
| d.element !== d.element.window && (y = d.adapter.offset()[s.offsetProp]), "function" == typeof f ? f = f.apply(d) : "string" == typeof f && (f = parseFloat(f), d.options.offset.indexOf("%") > -1 && (f = Math.ceil(s.contextDimension * f / 100))), l = s.contextScroll - s.contextOffset, d.triggerPoint = Math.floor(y + l - f), h = w < s.oldScroll, p = d.triggerPoint >= s.oldScroll, u = h && p, c = !h && !p, !g && u ? (d.queueTrigger(s.backward), o[d.group.id] = d.group) : !g && c ? (d.queueTrigger(s.forward), o[d.group.id] = d.group) : g && s.oldScroll >= d.triggerPoint && (d.queueTrigger(s.forward), o[d.group.id] = d.group) | |
| } | |
| } | |
| return n.requestAnimationFrame(function() { | |
| for (var t in o) o[t].flushTriggers() | |
| }), this | |
| }, e.findOrCreateByElement = function(t) { | |
| return e.findByElement(t) || new e(t) | |
| }, e.refreshAll = function() { | |
| for (var t in o) o[t].refresh() | |
| }, e.findByElement = function(t) { | |
| return o[t.waypointContextKey] | |
| }, window.onload = function() { | |
| r && r(), e.refreshAll() | |
| }, n.requestAnimationFrame = function(e) { | |
| var i = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || t; | |
| i.call(window, e) | |
| }, n.Context = e | |
| }(), | |
| function() { | |
| "use strict"; | |
| function t(t, e) { | |
| return t.triggerPoint - e.triggerPoint | |
| } | |
| function e(t, e) { | |
| return e.triggerPoint - t.triggerPoint | |
| } | |
| function i(t) { | |
| this.name = t.name, this.axis = t.axis, this.id = this.name + "-" + this.axis, this.waypoints = [], this.clearTriggerQueues(), o[this.axis][this.name] = this | |
| } | |
| var o = { | |
| vertical: {}, | |
| horizontal: {} | |
| }, | |
| n = window.Waypoint; | |
| i.prototype.add = function(t) { | |
| this.waypoints.push(t) | |
| }, i.prototype.clearTriggerQueues = function() { | |
| this.triggerQueues = { | |
| up: [], | |
| down: [], | |
| left: [], | |
| right: [] | |
| } | |
| }, i.prototype.flushTriggers = function() { | |
| for (var i in this.triggerQueues) { | |
| var o = this.triggerQueues[i], | |
| n = "up" === i || "left" === i; | |
| o.sort(n ? e : t); | |
| for (var r = 0, s = o.length; s > r; r += 1) { | |
| var a = o[r]; | |
| (a.options.continuous || r === o.length - 1) && a.trigger([i]) | |
| } | |
| } | |
| this.clearTriggerQueues() | |
| }, i.prototype.next = function(e) { | |
| this.waypoints.sort(t); | |
| var i = n.Adapter.inArray(e, this.waypoints), | |
| o = i === this.waypoints.length - 1; | |
| return o ? null : this.waypoints[i + 1] | |
| }, i.prototype.previous = function(e) { | |
| this.waypoints.sort(t); | |
| var i = n.Adapter.inArray(e, this.waypoints); | |
| return i ? this.waypoints[i - 1] : null | |
| }, i.prototype.queueTrigger = function(t, e) { | |
| this.triggerQueues[e].push(t) | |
| }, i.prototype.remove = function(t) { | |
| var e = n.Adapter.inArray(t, this.waypoints); | |
| e > -1 && this.waypoints.splice(e, 1) | |
| }, i.prototype.first = function() { | |
| return this.waypoints[0] | |
| }, i.prototype.last = function() { | |
| return this.waypoints[this.waypoints.length - 1] | |
| }, i.findOrCreate = function(t) { | |
| return o[t.axis][t.name] || new i(t) | |
| }, n.Group = i | |
| }(), | |
| function() { | |
| "use strict"; | |
| function t(t) { | |
| this.$element = e(t) | |
| } | |
| var e = window.jQuery, | |
| i = window.Waypoint; | |
| e.each(["innerHeight", "innerWidth", "off", "offset", "on", "outerHeight", "outerWidth", "scrollLeft", "scrollTop"], function(e, i) { | |
| t.prototype[i] = function() { | |
| var t = Array.prototype.slice.call(arguments); | |
| return this.$element[i].apply(this.$element, t) | |
| } | |
| }), e.each(["extend", "inArray", "isEmptyObject"], function(i, o) { | |
| t[o] = e[o] | |
| }), i.adapters.push({ | |
| name: "jquery", | |
| Adapter: t | |
| }), i.Adapter = t | |
| }(), | |
| function() { | |
| "use strict"; | |
| function t(t) { | |
| return function() { | |
| var i = [], | |
| o = arguments[0]; | |
| return t.isFunction(arguments[0]) && (o = t.extend({}, arguments[1]), o.handler = arguments[0]), this.each(function() { | |
| var n = t.extend({}, o, { | |
| element: this | |
| }); | |
| "string" == typeof n.context && (n.context = t(this).closest(n.context)[0]), i.push(new e(n)) | |
| }), i | |
| } | |
| } | |
| var e = window.Waypoint; | |
| window.jQuery && (window.jQuery.fn.waypoint = t(window.jQuery)), window.Zepto && (window.Zepto.fn.waypoint = t(window.Zepto)) | |
| }(); | |
| /*! | |
| * Isotope PACKAGED v3.0.6 | |
| * | |
| * Licensed GPLv3 for open source use | |
| * or Isotope Commercial License for commercial use | |
| * | |
| * https://isotope.metafizzy.co | |
| * Copyright 2010-2018 Metafizzy | |
| */ | |
| ! function(t, e) { | |
| "function" == typeof define && define.amd ? define("jquery-bridget/jquery-bridget", ["jquery"], function(i) { | |
| return e(t, i) | |
| }) : "object" == typeof module && module.exports ? module.exports = e(t, require("jquery")) : t.jQueryBridget = e(t, t.jQuery) | |
| }(window, function(t, e) { | |
| "use strict"; | |
| function i(i, s, a) { | |
| function u(t, e, o) { | |
| var n, s = "$()." + i + '("' + e + '")'; | |
| return t.each(function(t, u) { | |
| var h = a.data(u, i); | |
| if (!h) return void r(i + " not initialized. Cannot call methods, i.e. " + s); | |
| var d = h[e]; | |
| if (!d || "_" == e.charAt(0)) return void r(s + " is not a valid method"); | |
| var l = d.apply(h, o); | |
| n = void 0 === n ? l : n | |
| }), void 0 !== n ? n : t | |
| } | |
| function h(t, e) { | |
| t.each(function(t, o) { | |
| var n = a.data(o, i); | |
| n ? (n.option(e), n._init()) : (n = new s(o, e), a.data(o, i, n)) | |
| }) | |
| } | |
| a = a || e || t.jQuery, a && (s.prototype.option || (s.prototype.option = function(t) { | |
| a.isPlainObject(t) && (this.options = a.extend(!0, this.options, t)) | |
| }), a.fn[i] = function(t) { | |
| if ("string" == typeof t) { | |
| var e = n.call(arguments, 1); | |
| return u(this, t, e) | |
| } | |
| return h(this, t), this | |
| }, o(a)) | |
| } | |
| function o(t) { | |
| !t || t && t.bridget || (t.bridget = i) | |
| } | |
| var n = Array.prototype.slice, | |
| s = t.console, | |
| r = "undefined" == typeof s ? function() {} : function(t) { | |
| s.error(t) | |
| }; | |
| return o(e || t.jQuery), i | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", e) : "object" == typeof module && module.exports ? module.exports = e() : t.EvEmitter = e() | |
| }("undefined" != typeof window ? window : this, function() { | |
| function t() {} | |
| var e = t.prototype; | |
| return e.on = function(t, e) { | |
| if (t && e) { | |
| var i = this._events = this._events || {}, | |
| o = i[t] = i[t] || []; | |
| return o.indexOf(e) == -1 && o.push(e), this | |
| } | |
| }, e.once = function(t, e) { | |
| if (t && e) { | |
| this.on(t, e); | |
| var i = this._onceEvents = this._onceEvents || {}, | |
| o = i[t] = i[t] || {}; | |
| return o[e] = !0, this | |
| } | |
| }, e.off = function(t, e) { | |
| var i = this._events && this._events[t]; | |
| if (i && i.length) { | |
| var o = i.indexOf(e); | |
| return o != -1 && i.splice(o, 1), this | |
| } | |
| }, e.emitEvent = function(t, e) { | |
| var i = this._events && this._events[t]; | |
| if (i && i.length) { | |
| i = i.slice(0), e = e || []; | |
| for (var o = this._onceEvents && this._onceEvents[t], n = 0; n < i.length; n++) { | |
| var s = i[n], | |
| r = o && o[s]; | |
| r && (this.off(t, s), delete o[s]), s.apply(this, e) | |
| } | |
| return this | |
| } | |
| }, e.allOff = function() { | |
| delete this._events, delete this._onceEvents | |
| }, t | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("get-size/get-size", e) : "object" == typeof module && module.exports ? module.exports = e() : t.getSize = e() | |
| }(window, function() { | |
| "use strict"; | |
| function t(t) { | |
| var e = parseFloat(t), | |
| i = t.indexOf("%") == -1 && !isNaN(e); | |
| return i && e | |
| } | |
| function e() {} | |
| function i() { | |
| for (var t = { | |
| width: 0, | |
| height: 0, | |
| innerWidth: 0, | |
| innerHeight: 0, | |
| outerWidth: 0, | |
| outerHeight: 0 | |
| }, e = 0; e < h; e++) { | |
| var i = u[e]; | |
| t[i] = 0 | |
| } | |
| return t | |
| } | |
| function o(t) { | |
| var e = getComputedStyle(t); | |
| return e || a("Style returned " + e + ". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"), e | |
| } | |
| function n() { | |
| if (!d) { | |
| d = !0; | |
| var e = document.createElement("div"); | |
| e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth = "1px 2px 3px 4px", e.style.boxSizing = "border-box"; | |
| var i = document.body || document.documentElement; | |
| i.appendChild(e); | |
| var n = o(e); | |
| r = 200 == Math.round(t(n.width)), s.isBoxSizeOuter = r, i.removeChild(e) | |
| } | |
| } | |
| function s(e) { | |
| if (n(), "string" == typeof e && (e = document.querySelector(e)), e && "object" == typeof e && e.nodeType) { | |
| var s = o(e); | |
| if ("none" == s.display) return i(); | |
| var a = {}; | |
| a.width = e.offsetWidth, a.height = e.offsetHeight; | |
| for (var d = a.isBorderBox = "border-box" == s.boxSizing, l = 0; l < h; l++) { | |
| var f = u[l], | |
| c = s[f], | |
| m = parseFloat(c); | |
| a[f] = isNaN(m) ? 0 : m | |
| } | |
| var p = a.paddingLeft + a.paddingRight, | |
| y = a.paddingTop + a.paddingBottom, | |
| g = a.marginLeft + a.marginRight, | |
| v = a.marginTop + a.marginBottom, | |
| _ = a.borderLeftWidth + a.borderRightWidth, | |
| z = a.borderTopWidth + a.borderBottomWidth, | |
| I = d && r, | |
| x = t(s.width); | |
| x !== !1 && (a.width = x + (I ? 0 : p + _)); | |
| var S = t(s.height); | |
| return S !== !1 && (a.height = S + (I ? 0 : y + z)), a.innerWidth = a.width - (p + _), a.innerHeight = a.height - (y + z), a.outerWidth = a.width + g, a.outerHeight = a.height + v, a | |
| } | |
| } | |
| var r, a = "undefined" == typeof console ? e : function(t) { | |
| console.error(t) | |
| }, | |
| u = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"], | |
| h = u.length, | |
| d = !1; | |
| return s | |
| }), | |
| function(t, e) { | |
| "use strict"; | |
| "function" == typeof define && define.amd ? define("desandro-matches-selector/matches-selector", e) : "object" == typeof module && module.exports ? module.exports = e() : t.matchesSelector = e() | |
| }(window, function() { | |
| "use strict"; | |
| var t = function() { | |
| var t = window.Element.prototype; | |
| if (t.matches) return "matches"; | |
| if (t.matchesSelector) return "matchesSelector"; | |
| for (var e = ["webkit", "moz", "ms", "o"], i = 0; i < e.length; i++) { | |
| var o = e[i], | |
| n = o + "MatchesSelector"; | |
| if (t[n]) return n | |
| } | |
| }(); | |
| return function(e, i) { | |
| return e[t](i) | |
| } | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["desandro-matches-selector/matches-selector"], function(i) { | |
| return e(t, i) | |
| }) : "object" == typeof module && module.exports ? module.exports = e(t, require("desandro-matches-selector")) : t.fizzyUIUtils = e(t, t.matchesSelector) | |
| }(window, function(t, e) { | |
| var i = {}; | |
| i.extend = function(t, e) { | |
| for (var i in e) t[i] = e[i]; | |
| return t | |
| }, i.modulo = function(t, e) { | |
| return (t % e + e) % e | |
| }; | |
| var o = Array.prototype.slice; | |
| i.makeArray = function(t) { | |
| if (Array.isArray(t)) return t; | |
| if (null === t || void 0 === t) return []; | |
| var e = "object" == typeof t && "number" == typeof t.length; | |
| return e ? o.call(t) : [t] | |
| }, i.removeFrom = function(t, e) { | |
| var i = t.indexOf(e); | |
| i != -1 && t.splice(i, 1) | |
| }, i.getParent = function(t, i) { | |
| for (; t.parentNode && t != document.body;) | |
| if (t = t.parentNode, e(t, i)) return t | |
| }, i.getQueryElement = function(t) { | |
| return "string" == typeof t ? document.querySelector(t) : t | |
| }, i.handleEvent = function(t) { | |
| var e = "on" + t.type; | |
| this[e] && this[e](t) | |
| }, i.filterFindElements = function(t, o) { | |
| t = i.makeArray(t); | |
| var n = []; | |
| return t.forEach(function(t) { | |
| if (t instanceof HTMLElement) { | |
| if (!o) return void n.push(t); | |
| e(t, o) && n.push(t); | |
| for (var i = t.querySelectorAll(o), s = 0; s < i.length; s++) n.push(i[s]) | |
| } | |
| }), n | |
| }, i.debounceMethod = function(t, e, i) { | |
| i = i || 100; | |
| var o = t.prototype[e], | |
| n = e + "Timeout"; | |
| t.prototype[e] = function() { | |
| var t = this[n]; | |
| clearTimeout(t); | |
| var e = arguments, | |
| s = this; | |
| this[n] = setTimeout(function() { | |
| o.apply(s, e), delete s[n] | |
| }, i) | |
| } | |
| }, i.docReady = function(t) { | |
| var e = document.readyState; | |
| "complete" == e || "interactive" == e ? setTimeout(t) : document.addEventListener("DOMContentLoaded", t) | |
| }, i.toDashed = function(t) { | |
| return t.replace(/(.)([A-Z])/g, function(t, e, i) { | |
| return e + "-" + i | |
| }).toLowerCase() | |
| }; | |
| var n = t.console; | |
| return i.htmlInit = function(e, o) { | |
| i.docReady(function() { | |
| var s = i.toDashed(o), | |
| r = "data-" + s, | |
| a = document.querySelectorAll("[" + r + "]"), | |
| u = document.querySelectorAll(".js-" + s), | |
| h = i.makeArray(a).concat(i.makeArray(u)), | |
| d = r + "-options", | |
| l = t.jQuery; | |
| h.forEach(function(t) { | |
| var i, s = t.getAttribute(r) || t.getAttribute(d); | |
| try { | |
| i = s && JSON.parse(s) | |
| } catch (a) { | |
| return void(n && n.error("Error parsing " + r + " on " + t.className + ": " + a)) | |
| } | |
| var u = new e(t, i); | |
| l && l.data(t, o, u) | |
| }) | |
| }) | |
| }, i | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("outlayer/item", ["ev-emitter/ev-emitter", "get-size/get-size"], e) : "object" == typeof module && module.exports ? module.exports = e(require("ev-emitter"), require("get-size")) : (t.Outlayer = {}, t.Outlayer.Item = e(t.EvEmitter, t.getSize)) | |
| }(window, function(t, e) { | |
| "use strict"; | |
| function i(t) { | |
| for (var e in t) return !1; | |
| return e = null, !0 | |
| } | |
| function o(t, e) { | |
| t && (this.element = t, this.layout = e, this.position = { | |
| x: 0, | |
| y: 0 | |
| }, this._create()) | |
| } | |
| function n(t) { | |
| return t.replace(/([A-Z])/g, function(t) { | |
| return "-" + t.toLowerCase() | |
| }) | |
| } | |
| var s = document.documentElement.style, | |
| r = "string" == typeof s.transition ? "transition" : "WebkitTransition", | |
| a = "string" == typeof s.transform ? "transform" : "WebkitTransform", | |
| u = { | |
| WebkitTransition: "webkitTransitionEnd", | |
| transition: "transitionend" | |
| }[r], | |
| h = { | |
| transform: a, | |
| transition: r, | |
| transitionDuration: r + "Duration", | |
| transitionProperty: r + "Property", | |
| transitionDelay: r + "Delay" | |
| }, | |
| d = o.prototype = Object.create(t.prototype); | |
| d.constructor = o, d._create = function() { | |
| this._transn = { | |
| ingProperties: {}, | |
| clean: {}, | |
| onEnd: {} | |
| }, this.css({ | |
| position: "absolute" | |
| }) | |
| }, d.handleEvent = function(t) { | |
| var e = "on" + t.type; | |
| this[e] && this[e](t) | |
| }, d.getSize = function() { | |
| this.size = e(this.element) | |
| }, d.css = function(t) { | |
| var e = this.element.style; | |
| for (var i in t) { | |
| var o = h[i] || i; | |
| e[o] = t[i] | |
| } | |
| }, d.getPosition = function() { | |
| var t = getComputedStyle(this.element), | |
| e = this.layout._getOption("originLeft"), | |
| i = this.layout._getOption("originTop"), | |
| o = t[e ? "left" : "right"], | |
| n = t[i ? "top" : "bottom"], | |
| s = parseFloat(o), | |
| r = parseFloat(n), | |
| a = this.layout.size; | |
| o.indexOf("%") != -1 && (s = s / 100 * a.width), n.indexOf("%") != -1 && (r = r / 100 * a.height), s = isNaN(s) ? 0 : s, r = isNaN(r) ? 0 : r, s -= e ? a.paddingLeft : a.paddingRight, r -= i ? a.paddingTop : a.paddingBottom, this.position.x = s, this.position.y = r | |
| }, d.layoutPosition = function() { | |
| var t = this.layout.size, | |
| e = {}, | |
| i = this.layout._getOption("originLeft"), | |
| o = this.layout._getOption("originTop"), | |
| n = i ? "paddingLeft" : "paddingRight", | |
| s = i ? "left" : "right", | |
| r = i ? "right" : "left", | |
| a = this.position.x + t[n]; | |
| e[s] = this.getXValue(a), e[r] = ""; | |
| var u = o ? "paddingTop" : "paddingBottom", | |
| h = o ? "top" : "bottom", | |
| d = o ? "bottom" : "top", | |
| l = this.position.y + t[u]; | |
| e[h] = this.getYValue(l), e[d] = "", this.css(e), this.emitEvent("layout", [this]) | |
| }, d.getXValue = function(t) { | |
| var e = this.layout._getOption("horizontal"); | |
| return this.layout.options.percentPosition && !e ? t / this.layout.size.width * 100 + "%" : t + "px" | |
| }, d.getYValue = function(t) { | |
| var e = this.layout._getOption("horizontal"); | |
| return this.layout.options.percentPosition && e ? t / this.layout.size.height * 100 + "%" : t + "px" | |
| }, d._transitionTo = function(t, e) { | |
| this.getPosition(); | |
| var i = this.position.x, | |
| o = this.position.y, | |
| n = t == this.position.x && e == this.position.y; | |
| if (this.setPosition(t, e), n && !this.isTransitioning) return void this.layoutPosition(); | |
| var s = t - i, | |
| r = e - o, | |
| a = {}; | |
| a.transform = this.getTranslate(s, r), this.transition({ | |
| to: a, | |
| onTransitionEnd: { | |
| transform: this.layoutPosition | |
| }, | |
| isCleaning: !0 | |
| }) | |
| }, d.getTranslate = function(t, e) { | |
| var i = this.layout._getOption("originLeft"), | |
| o = this.layout._getOption("originTop"); | |
| return t = i ? t : -t, e = o ? e : -e, "translate3d(" + t + "px, " + e + "px, 0)" | |
| }, d.goTo = function(t, e) { | |
| this.setPosition(t, e), this.layoutPosition() | |
| }, d.moveTo = d._transitionTo, d.setPosition = function(t, e) { | |
| this.position.x = parseFloat(t), this.position.y = parseFloat(e) | |
| }, d._nonTransition = function(t) { | |
| this.css(t.to), t.isCleaning && this._removeStyles(t.to); | |
| for (var e in t.onTransitionEnd) t.onTransitionEnd[e].call(this) | |
| }, d.transition = function(t) { | |
| if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(t); | |
| var e = this._transn; | |
| for (var i in t.onTransitionEnd) e.onEnd[i] = t.onTransitionEnd[i]; | |
| for (i in t.to) e.ingProperties[i] = !0, t.isCleaning && (e.clean[i] = !0); | |
| if (t.from) { | |
| this.css(t.from); | |
| var o = this.element.offsetHeight; | |
| o = null | |
| } | |
| this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0 | |
| }; | |
| var l = "opacity," + n(a); | |
| d.enableTransition = function() { | |
| if (!this.isTransitioning) { | |
| var t = this.layout.options.transitionDuration; | |
| t = "number" == typeof t ? t + "ms" : t, this.css({ | |
| transitionProperty: l, | |
| transitionDuration: t, | |
| transitionDelay: this.staggerDelay || 0 | |
| }), this.element.addEventListener(u, this, !1) | |
| } | |
| }, d.onwebkitTransitionEnd = function(t) { | |
| this.ontransitionend(t) | |
| }, d.onotransitionend = function(t) { | |
| this.ontransitionend(t) | |
| }; | |
| var f = { | |
| "-webkit-transform": "transform" | |
| }; | |
| d.ontransitionend = function(t) { | |
| if (t.target === this.element) { | |
| var e = this._transn, | |
| o = f[t.propertyName] || t.propertyName; | |
| if (delete e.ingProperties[o], i(e.ingProperties) && this.disableTransition(), o in e.clean && (this.element.style[t.propertyName] = "", delete e.clean[o]), o in e.onEnd) { | |
| var n = e.onEnd[o]; | |
| n.call(this), delete e.onEnd[o] | |
| } | |
| this.emitEvent("transitionEnd", [this]) | |
| } | |
| }, d.disableTransition = function() { | |
| this.removeTransitionStyles(), this.element.removeEventListener(u, this, !1), this.isTransitioning = !1 | |
| }, d._removeStyles = function(t) { | |
| var e = {}; | |
| for (var i in t) e[i] = ""; | |
| this.css(e) | |
| }; | |
| var c = { | |
| transitionProperty: "", | |
| transitionDuration: "", | |
| transitionDelay: "" | |
| }; | |
| return d.removeTransitionStyles = function() { | |
| this.css(c) | |
| }, d.stagger = function(t) { | |
| t = isNaN(t) ? 0 : t, this.staggerDelay = t + "ms" | |
| }, d.removeElem = function() { | |
| this.element.parentNode.removeChild(this.element), this.css({ | |
| display: "" | |
| }), this.emitEvent("remove", [this]) | |
| }, d.remove = function() { | |
| return r && parseFloat(this.layout.options.transitionDuration) ? (this.once("transitionEnd", function() { | |
| this.removeElem() | |
| }), void this.hide()) : void this.removeElem() | |
| }, d.reveal = function() { | |
| delete this.isHidden, this.css({ | |
| display: "" | |
| }); | |
| var t = this.layout.options, | |
| e = {}, | |
| i = this.getHideRevealTransitionEndProperty("visibleStyle"); | |
| e[i] = this.onRevealTransitionEnd, this.transition({ | |
| from: t.hiddenStyle, | |
| to: t.visibleStyle, | |
| isCleaning: !0, | |
| onTransitionEnd: e | |
| }) | |
| }, d.onRevealTransitionEnd = function() { | |
| this.isHidden || this.emitEvent("reveal") | |
| }, d.getHideRevealTransitionEndProperty = function(t) { | |
| var e = this.layout.options[t]; | |
| if (e.opacity) return "opacity"; | |
| for (var i in e) return i | |
| }, d.hide = function() { | |
| this.isHidden = !0, this.css({ | |
| display: "" | |
| }); | |
| var t = this.layout.options, | |
| e = {}, | |
| i = this.getHideRevealTransitionEndProperty("hiddenStyle"); | |
| e[i] = this.onHideTransitionEnd, this.transition({ | |
| from: t.visibleStyle, | |
| to: t.hiddenStyle, | |
| isCleaning: !0, | |
| onTransitionEnd: e | |
| }) | |
| }, d.onHideTransitionEnd = function() { | |
| this.isHidden && (this.css({ | |
| display: "none" | |
| }), this.emitEvent("hide")) | |
| }, d.destroy = function() { | |
| this.css({ | |
| position: "", | |
| left: "", | |
| right: "", | |
| top: "", | |
| bottom: "", | |
| transition: "", | |
| transform: "" | |
| }) | |
| }, o | |
| }), | |
| function(t, e) { | |
| "use strict"; | |
| "function" == typeof define && define.amd ? define("outlayer/outlayer", ["ev-emitter/ev-emitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function(i, o, n, s) { | |
| return e(t, i, o, n, s) | |
| }) : "object" == typeof module && module.exports ? module.exports = e(t, require("ev-emitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : t.Outlayer = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, t.Outlayer.Item) | |
| }(window, function(t, e, i, o, n) { | |
| "use strict"; | |
| function s(t, e) { | |
| var i = o.getQueryElement(t); | |
| if (!i) return void(u && u.error("Bad element for " + this.constructor.namespace + ": " + (i || t))); | |
| this.element = i, h && (this.$element = h(this.element)), this.options = o.extend({}, this.constructor.defaults), this.option(e); | |
| var n = ++l; | |
| this.element.outlayerGUID = n, f[n] = this, this._create(); | |
| var s = this._getOption("initLayout"); | |
| s && this.layout() | |
| } | |
| function r(t) { | |
| function e() { | |
| t.apply(this, arguments) | |
| } | |
| return e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e | |
| } | |
| function a(t) { | |
| if ("number" == typeof t) return t; | |
| var e = t.match(/(^\d*\.?\d*)(\w*)/), | |
| i = e && e[1], | |
| o = e && e[2]; | |
| if (!i.length) return 0; | |
| i = parseFloat(i); | |
| var n = m[o] || 1; | |
| return i * n | |
| } | |
| var u = t.console, | |
| h = t.jQuery, | |
| d = function() {}, | |
| l = 0, | |
| f = {}; | |
| s.namespace = "outlayer", s.Item = n, s.defaults = { | |
| containerStyle: { | |
| position: "relative" | |
| }, | |
| initLayout: !0, | |
| originLeft: !0, | |
| originTop: !0, | |
| resize: !0, | |
| resizeContainer: !0, | |
| transitionDuration: "0.4s", | |
| hiddenStyle: { | |
| opacity: 0, | |
| transform: "scale(0.001)" | |
| }, | |
| visibleStyle: { | |
| opacity: 1, | |
| transform: "scale(1)" | |
| } | |
| }; | |
| var c = s.prototype; | |
| o.extend(c, e.prototype), c.option = function(t) { | |
| o.extend(this.options, t) | |
| }, c._getOption = function(t) { | |
| var e = this.constructor.compatOptions[t]; | |
| return e && void 0 !== this.options[e] ? this.options[e] : this.options[t] | |
| }, s.compatOptions = { | |
| initLayout: "isInitLayout", | |
| horizontal: "isHorizontal", | |
| layoutInstant: "isLayoutInstant", | |
| originLeft: "isOriginLeft", | |
| originTop: "isOriginTop", | |
| resize: "isResizeBound", | |
| resizeContainer: "isResizingContainer" | |
| }, c._create = function() { | |
| this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), o.extend(this.element.style, this.options.containerStyle); | |
| var t = this._getOption("resize"); | |
| t && this.bindResize() | |
| }, c.reloadItems = function() { | |
| this.items = this._itemize(this.element.children) | |
| }, c._itemize = function(t) { | |
| for (var e = this._filterFindItemElements(t), i = this.constructor.Item, o = [], n = 0; n < e.length; n++) { | |
| var s = e[n], | |
| r = new i(s, this); | |
| o.push(r) | |
| } | |
| return o | |
| }, c._filterFindItemElements = function(t) { | |
| return o.filterFindElements(t, this.options.itemSelector) | |
| }, c.getItemElements = function() { | |
| return this.items.map(function(t) { | |
| return t.element | |
| }) | |
| }, c.layout = function() { | |
| this._resetLayout(), this._manageStamps(); | |
| var t = this._getOption("layoutInstant"), | |
| e = void 0 !== t ? t : !this._isLayoutInited; | |
| this.layoutItems(this.items, e), this._isLayoutInited = !0 | |
| }, c._init = c.layout, c._resetLayout = function() { | |
| this.getSize() | |
| }, c.getSize = function() { | |
| this.size = i(this.element) | |
| }, c._getMeasurement = function(t, e) { | |
| var o, n = this.options[t]; | |
| n ? ("string" == typeof n ? o = this.element.querySelector(n) : n instanceof HTMLElement && (o = n), this[t] = o ? i(o)[e] : n) : this[t] = 0 | |
| }, c.layoutItems = function(t, e) { | |
| t = this._getItemsForLayout(t), this._layoutItems(t, e), this._postLayout() | |
| }, c._getItemsForLayout = function(t) { | |
| return t.filter(function(t) { | |
| return !t.isIgnored | |
| }) | |
| }, c._layoutItems = function(t, e) { | |
| if (this._emitCompleteOnItems("layout", t), t && t.length) { | |
| var i = []; | |
| t.forEach(function(t) { | |
| var o = this._getItemLayoutPosition(t); | |
| o.item = t, o.isInstant = e || t.isLayoutInstant, i.push(o) | |
| }, this), this._processLayoutQueue(i) | |
| } | |
| }, c._getItemLayoutPosition = function() { | |
| return { | |
| x: 0, | |
| y: 0 | |
| } | |
| }, c._processLayoutQueue = function(t) { | |
| this.updateStagger(), t.forEach(function(t, e) { | |
| this._positionItem(t.item, t.x, t.y, t.isInstant, e) | |
| }, this) | |
| }, c.updateStagger = function() { | |
| var t = this.options.stagger; | |
| return null === t || void 0 === t ? void(this.stagger = 0) : (this.stagger = a(t), this.stagger) | |
| }, c._positionItem = function(t, e, i, o, n) { | |
| o ? t.goTo(e, i) : (t.stagger(n * this.stagger), t.moveTo(e, i)) | |
| }, c._postLayout = function() { | |
| this.resizeContainer() | |
| }, c.resizeContainer = function() { | |
| var t = this._getOption("resizeContainer"); | |
| if (t) { | |
| var e = this._getContainerSize(); | |
| e && (this._setContainerMeasure(e.width, !0), this._setContainerMeasure(e.height, !1)) | |
| } | |
| }, c._getContainerSize = d, c._setContainerMeasure = function(t, e) { | |
| if (void 0 !== t) { | |
| var i = this.size; | |
| i.isBorderBox && (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth + i.borderRightWidth : i.paddingBottom + i.paddingTop + i.borderTopWidth + i.borderBottomWidth), t = Math.max(t, 0), this.element.style[e ? "width" : "height"] = t + "px" | |
| } | |
| }, c._emitCompleteOnItems = function(t, e) { | |
| function i() { | |
| n.dispatchEvent(t + "Complete", null, [e]) | |
| } | |
| function o() { | |
| r++, r == s && i() | |
| } | |
| var n = this, | |
| s = e.length; | |
| if (!e || !s) return void i(); | |
| var r = 0; | |
| e.forEach(function(e) { | |
| e.once(t, o) | |
| }) | |
| }, c.dispatchEvent = function(t, e, i) { | |
| var o = e ? [e].concat(i) : i; | |
| if (this.emitEvent(t, o), h) | |
| if (this.$element = this.$element || h(this.element), e) { | |
| var n = h.Event(e); | |
| n.type = t, this.$element.trigger(n, i) | |
| } else this.$element.trigger(t, i) | |
| }, c.ignore = function(t) { | |
| var e = this.getItem(t); | |
| e && (e.isIgnored = !0) | |
| }, c.unignore = function(t) { | |
| var e = this.getItem(t); | |
| e && delete e.isIgnored | |
| }, c.stamp = function(t) { | |
| t = this._find(t), t && (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this)) | |
| }, c.unstamp = function(t) { | |
| t = this._find(t), t && t.forEach(function(t) { | |
| o.removeFrom(this.stamps, t), this.unignore(t) | |
| }, this) | |
| }, c._find = function(t) { | |
| if (t) return "string" == typeof t && (t = this.element.querySelectorAll(t)), t = o.makeArray(t) | |
| }, c._manageStamps = function() { | |
| this.stamps && this.stamps.length && (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this)) | |
| }, c._getBoundingRect = function() { | |
| var t = this.element.getBoundingClientRect(), | |
| e = this.size; | |
| this._boundingRect = { | |
| left: t.left + e.paddingLeft + e.borderLeftWidth, | |
| top: t.top + e.paddingTop + e.borderTopWidth, | |
| right: t.right - (e.paddingRight + e.borderRightWidth), | |
| bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth) | |
| } | |
| }, c._manageStamp = d, c._getElementOffset = function(t) { | |
| var e = t.getBoundingClientRect(), | |
| o = this._boundingRect, | |
| n = i(t), | |
| s = { | |
| left: e.left - o.left - n.marginLeft, | |
| top: e.top - o.top - n.marginTop, | |
| right: o.right - e.right - n.marginRight, | |
| bottom: o.bottom - e.bottom - n.marginBottom | |
| }; | |
| return s | |
| }, c.handleEvent = o.handleEvent, c.bindResize = function() { | |
| t.addEventListener("resize", this), this.isResizeBound = !0 | |
| }, c.unbindResize = function() { | |
| t.removeEventListener("resize", this), this.isResizeBound = !1 | |
| }, c.onresize = function() { | |
| this.resize() | |
| }, o.debounceMethod(s, "onresize", 100), c.resize = function() { | |
| this.isResizeBound && this.needsResizeLayout() && this.layout() | |
| }, c.needsResizeLayout = function() { | |
| var t = i(this.element), | |
| e = this.size && t; | |
| return e && t.innerWidth !== this.size.innerWidth | |
| }, c.addItems = function(t) { | |
| var e = this._itemize(t); | |
| return e.length && (this.items = this.items.concat(e)), e | |
| }, c.appended = function(t) { | |
| var e = this.addItems(t); | |
| e.length && (this.layoutItems(e, !0), this.reveal(e)) | |
| }, c.prepended = function(t) { | |
| var e = this._itemize(t); | |
| if (e.length) { | |
| var i = this.items.slice(0); | |
| this.items = e.concat(i), this._resetLayout(), this._manageStamps(), this.layoutItems(e, !0), this.reveal(e), this.layoutItems(i) | |
| } | |
| }, c.reveal = function(t) { | |
| if (this._emitCompleteOnItems("reveal", t), t && t.length) { | |
| var e = this.updateStagger(); | |
| t.forEach(function(t, i) { | |
| t.stagger(i * e), t.reveal() | |
| }) | |
| } | |
| }, c.hide = function(t) { | |
| if (this._emitCompleteOnItems("hide", t), t && t.length) { | |
| var e = this.updateStagger(); | |
| t.forEach(function(t, i) { | |
| t.stagger(i * e), t.hide() | |
| }) | |
| } | |
| }, c.revealItemElements = function(t) { | |
| var e = this.getItems(t); | |
| this.reveal(e) | |
| }, c.hideItemElements = function(t) { | |
| var e = this.getItems(t); | |
| this.hide(e) | |
| }, c.getItem = function(t) { | |
| for (var e = 0; e < this.items.length; e++) { | |
| var i = this.items[e]; | |
| if (i.element == t) return i | |
| } | |
| }, c.getItems = function(t) { | |
| t = o.makeArray(t); | |
| var e = []; | |
| return t.forEach(function(t) { | |
| var i = this.getItem(t); | |
| i && e.push(i) | |
| }, this), e | |
| }, c.remove = function(t) { | |
| var e = this.getItems(t); | |
| this._emitCompleteOnItems("remove", e), e && e.length && e.forEach(function(t) { | |
| t.remove(), o.removeFrom(this.items, t) | |
| }, this) | |
| }, c.destroy = function() { | |
| var t = this.element.style; | |
| t.height = "", t.position = "", t.width = "", this.items.forEach(function(t) { | |
| t.destroy() | |
| }), this.unbindResize(); | |
| var e = this.element.outlayerGUID; | |
| delete f[e], delete this.element.outlayerGUID, h && h.removeData(this.element, this.constructor.namespace) | |
| }, s.data = function(t) { | |
| t = o.getQueryElement(t); | |
| var e = t && t.outlayerGUID; | |
| return e && f[e] | |
| }, s.create = function(t, e) { | |
| var i = r(s); | |
| return i.defaults = o.extend({}, s.defaults), o.extend(i.defaults, e), i.compatOptions = o.extend({}, s.compatOptions), i.namespace = t, i.data = s.data, i.Item = r(n), o.htmlInit(i, t), h && h.bridget && h.bridget(t, i), i | |
| }; | |
| var m = { | |
| ms: 1, | |
| s: 1e3 | |
| }; | |
| return s.Item = n, s | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("isotope-layout/js/item", ["outlayer/outlayer"], e) : "object" == typeof module && module.exports ? module.exports = e(require("outlayer")) : (t.Isotope = t.Isotope || {}, t.Isotope.Item = e(t.Outlayer)) | |
| }(window, function(t) { | |
| "use strict"; | |
| function e() { | |
| t.Item.apply(this, arguments) | |
| } | |
| var i = e.prototype = Object.create(t.Item.prototype), | |
| o = i._create; | |
| i._create = function() { | |
| this.id = this.layout.itemGUID++, o.call(this), this.sortData = {} | |
| }, i.updateSortData = function() { | |
| if (!this.isIgnored) { | |
| this.sortData.id = this.id, this.sortData["original-order"] = this.id, this.sortData.random = Math.random(); | |
| var t = this.layout.options.getSortData, | |
| e = this.layout._sorters; | |
| for (var i in t) { | |
| var o = e[i]; | |
| this.sortData[i] = o(this.element, this) | |
| } | |
| } | |
| }; | |
| var n = i.destroy; | |
| return i.destroy = function() { | |
| n.apply(this, arguments), this.css({ | |
| display: "" | |
| }) | |
| }, e | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("isotope-layout/js/layout-mode", ["get-size/get-size", "outlayer/outlayer"], e) : "object" == typeof module && module.exports ? module.exports = e(require("get-size"), require("outlayer")) : (t.Isotope = t.Isotope || {}, t.Isotope.LayoutMode = e(t.getSize, t.Outlayer)) | |
| }(window, function(t, e) { | |
| "use strict"; | |
| function i(t) { | |
| this.isotope = t, t && (this.options = t.options[this.namespace], this.element = t.element, this.items = t.filteredItems, this.size = t.size) | |
| } | |
| var o = i.prototype, | |
| n = ["_resetLayout", "_getItemLayoutPosition", "_manageStamp", "_getContainerSize", "_getElementOffset", "needsResizeLayout", "_getOption"]; | |
| return n.forEach(function(t) { | |
| o[t] = function() { | |
| return e.prototype[t].apply(this.isotope, arguments) | |
| } | |
| }), o.needsVerticalResizeLayout = function() { | |
| var e = t(this.isotope.element), | |
| i = this.isotope.size && e; | |
| return i && e.innerHeight != this.isotope.size.innerHeight | |
| }, o._getMeasurement = function() { | |
| this.isotope._getMeasurement.apply(this, arguments) | |
| }, o.getColumnWidth = function() { | |
| this.getSegmentSize("column", "Width") | |
| }, o.getRowHeight = function() { | |
| this.getSegmentSize("row", "Height") | |
| }, o.getSegmentSize = function(t, e) { | |
| var i = t + e, | |
| o = "outer" + e; | |
| if (this._getMeasurement(i, o), !this[i]) { | |
| var n = this.getFirstItemSize(); | |
| this[i] = n && n[o] || this.isotope.size["inner" + e] | |
| } | |
| }, o.getFirstItemSize = function() { | |
| var e = this.isotope.filteredItems[0]; | |
| return e && e.element && t(e.element) | |
| }, o.layout = function() { | |
| this.isotope.layout.apply(this.isotope, arguments) | |
| }, o.getSize = function() { | |
| this.isotope.getSize(), this.size = this.isotope.size | |
| }, i.modes = {}, i.create = function(t, e) { | |
| function n() { | |
| i.apply(this, arguments) | |
| } | |
| return n.prototype = Object.create(o), n.prototype.constructor = n, e && (n.options = e), n.prototype.namespace = t, i.modes[t] = n, n | |
| }, i | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("masonry-layout/masonry", ["outlayer/outlayer", "get-size/get-size"], e) : "object" == typeof module && module.exports ? module.exports = e(require("outlayer"), require("get-size")) : t.Masonry = e(t.Outlayer, t.getSize) | |
| }(window, function(t, e) { | |
| var i = t.create("masonry"); | |
| i.compatOptions.fitWidth = "isFitWidth"; | |
| var o = i.prototype; | |
| return o._resetLayout = function() { | |
| this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns(), this.colYs = []; | |
| for (var t = 0; t < this.cols; t++) this.colYs.push(0); | |
| this.maxY = 0, this.horizontalColIndex = 0 | |
| }, o.measureColumns = function() { | |
| if (this.getContainerWidth(), !this.columnWidth) { | |
| var t = this.items[0], | |
| i = t && t.element; | |
| this.columnWidth = i && e(i).outerWidth || this.containerWidth | |
| } | |
| var o = this.columnWidth += this.gutter, | |
| n = this.containerWidth + this.gutter, | |
| s = n / o, | |
| r = o - n % o, | |
| a = r && r < 1 ? "round" : "floor"; | |
| s = Math[a](s), this.cols = Math.max(s, 1) | |
| }, o.getContainerWidth = function() { | |
| var t = this._getOption("fitWidth"), | |
| i = t ? this.element.parentNode : this.element, | |
| o = e(i); | |
| this.containerWidth = o && o.innerWidth | |
| }, o._getItemLayoutPosition = function(t) { | |
| t.getSize(); | |
| var e = t.size.outerWidth % this.columnWidth, | |
| i = e && e < 1 ? "round" : "ceil", | |
| o = Math[i](t.size.outerWidth / this.columnWidth); | |
| o = Math.min(o, this.cols); | |
| for (var n = this.options.horizontalOrder ? "_getHorizontalColPosition" : "_getTopColPosition", s = this[n](o, t), r = { | |
| x: this.columnWidth * s.col, | |
| y: s.y | |
| }, a = s.y + t.size.outerHeight, u = o + s.col, h = s.col; h < u; h++) this.colYs[h] = a; | |
| return r | |
| }, o._getTopColPosition = function(t) { | |
| var e = this._getTopColGroup(t), | |
| i = Math.min.apply(Math, e); | |
| return { | |
| col: e.indexOf(i), | |
| y: i | |
| } | |
| }, o._getTopColGroup = function(t) { | |
| if (t < 2) return this.colYs; | |
| for (var e = [], i = this.cols + 1 - t, o = 0; o < i; o++) e[o] = this._getColGroupY(o, t); | |
| return e | |
| }, o._getColGroupY = function(t, e) { | |
| if (e < 2) return this.colYs[t]; | |
| var i = this.colYs.slice(t, t + e); | |
| return Math.max.apply(Math, i) | |
| }, o._getHorizontalColPosition = function(t, e) { | |
| var i = this.horizontalColIndex % this.cols, | |
| o = t > 1 && i + t > this.cols; | |
| i = o ? 0 : i; | |
| var n = e.size.outerWidth && e.size.outerHeight; | |
| return this.horizontalColIndex = n ? i + t : this.horizontalColIndex, { | |
| col: i, | |
| y: this._getColGroupY(i, t) | |
| } | |
| }, o._manageStamp = function(t) { | |
| var i = e(t), | |
| o = this._getElementOffset(t), | |
| n = this._getOption("originLeft"), | |
| s = n ? o.left : o.right, | |
| r = s + i.outerWidth, | |
| a = Math.floor(s / this.columnWidth); | |
| a = Math.max(0, a); | |
| var u = Math.floor(r / this.columnWidth); | |
| u -= r % this.columnWidth ? 0 : 1, u = Math.min(this.cols - 1, u); | |
| for (var h = this._getOption("originTop"), d = (h ? o.top : o.bottom) + i.outerHeight, l = a; l <= u; l++) this.colYs[l] = Math.max(d, this.colYs[l]) | |
| }, o._getContainerSize = function() { | |
| this.maxY = Math.max.apply(Math, this.colYs); | |
| var t = { | |
| height: this.maxY | |
| }; | |
| return this._getOption("fitWidth") && (t.width = this._getContainerFitWidth()), t | |
| }, o._getContainerFitWidth = function() { | |
| for (var t = 0, e = this.cols; --e && 0 === this.colYs[e];) t++; | |
| return (this.cols - t) * this.columnWidth - this.gutter | |
| }, o.needsResizeLayout = function() { | |
| var t = this.containerWidth; | |
| return this.getContainerWidth(), t != this.containerWidth | |
| }, i | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("isotope-layout/js/layout-modes/masonry", ["../layout-mode", "masonry-layout/masonry"], e) : "object" == typeof module && module.exports ? module.exports = e(require("../layout-mode"), require("masonry-layout")) : e(t.Isotope.LayoutMode, t.Masonry) | |
| }(window, function(t, e) { | |
| "use strict"; | |
| var i = t.create("masonry"), | |
| o = i.prototype, | |
| n = { | |
| _getElementOffset: !0, | |
| layout: !0, | |
| _getMeasurement: !0 | |
| }; | |
| for (var s in e.prototype) n[s] || (o[s] = e.prototype[s]); | |
| var r = o.measureColumns; | |
| o.measureColumns = function() { | |
| this.items = this.isotope.filteredItems, r.call(this) | |
| }; | |
| var a = o._getOption; | |
| return o._getOption = function(t) { | |
| return "fitWidth" == t ? void 0 !== this.options.isFitWidth ? this.options.isFitWidth : this.options.fitWidth : a.apply(this.isotope, arguments) | |
| }, i | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("isotope-layout/js/layout-modes/fit-rows", ["../layout-mode"], e) : "object" == typeof exports ? module.exports = e(require("../layout-mode")) : e(t.Isotope.LayoutMode) | |
| }(window, function(t) { | |
| "use strict"; | |
| var e = t.create("fitRows"), | |
| i = e.prototype; | |
| return i._resetLayout = function() { | |
| this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement("gutter", "outerWidth") | |
| }, i._getItemLayoutPosition = function(t) { | |
| t.getSize(); | |
| var e = t.size.outerWidth + this.gutter, | |
| i = this.isotope.size.innerWidth + this.gutter; | |
| 0 !== this.x && e + this.x > i && (this.x = 0, this.y = this.maxY); | |
| var o = { | |
| x: this.x, | |
| y: this.y | |
| }; | |
| return this.maxY = Math.max(this.maxY, this.y + t.size.outerHeight), this.x += e, o | |
| }, i._getContainerSize = function() { | |
| return { | |
| height: this.maxY | |
| } | |
| }, e | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define("isotope-layout/js/layout-modes/vertical", ["../layout-mode"], e) : "object" == typeof module && module.exports ? module.exports = e(require("../layout-mode")) : e(t.Isotope.LayoutMode) | |
| }(window, function(t) { | |
| "use strict"; | |
| var e = t.create("vertical", { | |
| horizontalAlignment: 0 | |
| }), | |
| i = e.prototype; | |
| return i._resetLayout = function() { | |
| this.y = 0 | |
| }, i._getItemLayoutPosition = function(t) { | |
| t.getSize(); | |
| var e = (this.isotope.size.innerWidth - t.size.outerWidth) * this.options.horizontalAlignment, | |
| i = this.y; | |
| return this.y += t.size.outerHeight, { | |
| x: e, | |
| y: i | |
| } | |
| }, i._getContainerSize = function() { | |
| return { | |
| height: this.y | |
| } | |
| }, e | |
| }), | |
| function(t, e) { | |
| "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "desandro-matches-selector/matches-selector", "fizzy-ui-utils/utils", "isotope-layout/js/item", "isotope-layout/js/layout-mode", "isotope-layout/js/layout-modes/masonry", "isotope-layout/js/layout-modes/fit-rows", "isotope-layout/js/layout-modes/vertical"], function(i, o, n, s, r, a) { | |
| return e(t, i, o, n, s, r, a) | |
| }) : "object" == typeof module && module.exports ? module.exports = e(t, require("outlayer"), require("get-size"), require("desandro-matches-selector"), require("fizzy-ui-utils"), require("isotope-layout/js/item"), require("isotope-layout/js/layout-mode"), require("isotope-layout/js/layout-modes/masonry"), require("isotope-layout/js/layout-modes/fit-rows"), require("isotope-layout/js/layout-modes/vertical")) : t.Isotope = e(t, t.Outlayer, t.getSize, t.matchesSelector, t.fizzyUIUtils, t.Isotope.Item, t.Isotope.LayoutMode) | |
| }(window, function(t, e, i, o, n, s, r) { | |
| function a(t, e) { | |
| return function(i, o) { | |
| for (var n = 0; n < t.length; n++) { | |
| var s = t[n], | |
| r = i.sortData[s], | |
| a = o.sortData[s]; | |
| if (r > a || r < a) { | |
| var u = void 0 !== e[s] ? e[s] : e, | |
| h = u ? 1 : -1; | |
| return (r > a ? 1 : -1) * h | |
| } | |
| } | |
| return 0 | |
| } | |
| } | |
| var u = t.jQuery, | |
| h = String.prototype.trim ? function(t) { | |
| return t.trim() | |
| } : function(t) { | |
| return t.replace(/^\s+|\s+$/g, "") | |
| }, | |
| d = e.create("isotope", { | |
| layoutMode: "masonry", | |
| isJQueryFiltering: !0, | |
| sortAscending: !0 | |
| }); | |
| d.Item = s, d.LayoutMode = r; | |
| var l = d.prototype; | |
| l._create = function() { | |
| this.itemGUID = 0, this._sorters = {}, this._getSorters(), e.prototype._create.call(this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = ["original-order"]; | |
| for (var t in r.modes) this._initLayoutMode(t) | |
| }, l.reloadItems = function() { | |
| this.itemGUID = 0, e.prototype.reloadItems.call(this) | |
| }, l._itemize = function() { | |
| for (var t = e.prototype._itemize.apply(this, arguments), i = 0; i < t.length; i++) { | |
| var o = t[i]; | |
| o.id = this.itemGUID++ | |
| } | |
| return this._updateItemsSortData(t), t | |
| }, l._initLayoutMode = function(t) { | |
| var e = r.modes[t], | |
| i = this.options[t] || {}; | |
| this.options[t] = e.options ? n.extend(e.options, i) : i, this.modes[t] = new e(this) | |
| }, l.layout = function() { | |
| return !this._isLayoutInited && this._getOption("initLayout") ? void this.arrange() : void this._layout() | |
| }, l._layout = function() { | |
| var t = this._getIsInstant(); | |
| this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, t), this._isLayoutInited = !0 | |
| }, l.arrange = function(t) { | |
| this.option(t), this._getIsInstant(); | |
| var e = this._filter(this.items); | |
| this.filteredItems = e.matches, this._bindArrangeComplete(), this._isInstant ? this._noTransition(this._hideReveal, [e]) : this._hideReveal(e), this._sort(), this._layout() | |
| }, l._init = l.arrange, l._hideReveal = function(t) { | |
| this.reveal(t.needReveal), this.hide(t.needHide) | |
| }, l._getIsInstant = function() { | |
| var t = this._getOption("layoutInstant"), | |
| e = void 0 !== t ? t : !this._isLayoutInited; | |
| return this._isInstant = e, e | |
| }, l._bindArrangeComplete = function() { | |
| function t() { | |
| e && i && o && n.dispatchEvent("arrangeComplete", null, [n.filteredItems]) | |
| } | |
| var e, i, o, n = this; | |
| this.once("layoutComplete", function() { | |
| e = !0, t() | |
| }), this.once("hideComplete", function() { | |
| i = !0, t() | |
| }), this.once("revealComplete", function() { | |
| o = !0, t() | |
| }) | |
| }, l._filter = function(t) { | |
| var e = this.options.filter; | |
| e = e || "*"; | |
| for (var i = [], o = [], n = [], s = this._getFilterTest(e), r = 0; r < t.length; r++) { | |
| var a = t[r]; | |
| if (!a.isIgnored) { | |
| var u = s(a); | |
| u && i.push(a), u && a.isHidden ? o.push(a) : u || a.isHidden || n.push(a) | |
| } | |
| } | |
| return { | |
| matches: i, | |
| needReveal: o, | |
| needHide: n | |
| } | |
| }, l._getFilterTest = function(t) { | |
| return u && this.options.isJQueryFiltering ? function(e) { | |
| return u(e.element).is(t); | |
| } : "function" == typeof t ? function(e) { | |
| return t(e.element) | |
| } : function(e) { | |
| return o(e.element, t) | |
| } | |
| }, l.updateSortData = function(t) { | |
| var e; | |
| t ? (t = n.makeArray(t), e = this.getItems(t)) : e = this.items, this._getSorters(), this._updateItemsSortData(e) | |
| }, l._getSorters = function() { | |
| var t = this.options.getSortData; | |
| for (var e in t) { | |
| var i = t[e]; | |
| this._sorters[e] = f(i) | |
| } | |
| }, l._updateItemsSortData = function(t) { | |
| for (var e = t && t.length, i = 0; e && i < e; i++) { | |
| var o = t[i]; | |
| o.updateSortData() | |
| } | |
| }; | |
| var f = function() { | |
| function t(t) { | |
| if ("string" != typeof t) return t; | |
| var i = h(t).split(" "), | |
| o = i[0], | |
| n = o.match(/^\[(.+)\]$/), | |
| s = n && n[1], | |
| r = e(s, o), | |
| a = d.sortDataParsers[i[1]]; | |
| return t = a ? function(t) { | |
| return t && a(r(t)) | |
| } : function(t) { | |
| return t && r(t) | |
| } | |
| } | |
| function e(t, e) { | |
| return t ? function(e) { | |
| return e.getAttribute(t) | |
| } : function(t) { | |
| var i = t.querySelector(e); | |
| return i && i.textContent | |
| } | |
| } | |
| return t | |
| }(); | |
| d.sortDataParsers = { | |
| parseInt: function(t) { | |
| return parseInt(t, 10) | |
| }, | |
| parseFloat: function(t) { | |
| return parseFloat(t) | |
| } | |
| }, l._sort = function() { | |
| if (this.options.sortBy) { | |
| var t = n.makeArray(this.options.sortBy); | |
| this._getIsSameSortBy(t) || (this.sortHistory = t.concat(this.sortHistory)); | |
| var e = a(this.sortHistory, this.options.sortAscending); | |
| this.filteredItems.sort(e) | |
| } | |
| }, l._getIsSameSortBy = function(t) { | |
| for (var e = 0; e < t.length; e++) | |
| if (t[e] != this.sortHistory[e]) return !1; | |
| return !0 | |
| }, l._mode = function() { | |
| var t = this.options.layoutMode, | |
| e = this.modes[t]; | |
| if (!e) throw new Error("No layout mode: " + t); | |
| return e.options = this.options[t], e | |
| }, l._resetLayout = function() { | |
| e.prototype._resetLayout.call(this), this._mode()._resetLayout() | |
| }, l._getItemLayoutPosition = function(t) { | |
| return this._mode()._getItemLayoutPosition(t) | |
| }, l._manageStamp = function(t) { | |
| this._mode()._manageStamp(t) | |
| }, l._getContainerSize = function() { | |
| return this._mode()._getContainerSize() | |
| }, l.needsResizeLayout = function() { | |
| return this._mode().needsResizeLayout() | |
| }, l.appended = function(t) { | |
| var e = this.addItems(t); | |
| if (e.length) { | |
| var i = this._filterRevealAdded(e); | |
| this.filteredItems = this.filteredItems.concat(i) | |
| } | |
| }, l.prepended = function(t) { | |
| var e = this._itemize(t); | |
| if (e.length) { | |
| this._resetLayout(), this._manageStamps(); | |
| var i = this._filterRevealAdded(e); | |
| this.layoutItems(this.filteredItems), this.filteredItems = i.concat(this.filteredItems), this.items = e.concat(this.items) | |
| } | |
| }, l._filterRevealAdded = function(t) { | |
| var e = this._filter(t); | |
| return this.hide(e.needHide), this.reveal(e.matches), this.layoutItems(e.matches, !0), e.matches | |
| }, l.insert = function(t) { | |
| var e = this.addItems(t); | |
| if (e.length) { | |
| var i, o, n = e.length; | |
| for (i = 0; i < n; i++) o = e[i], this.element.appendChild(o.element); | |
| var s = this._filter(e).matches; | |
| for (i = 0; i < n; i++) e[i].isLayoutInstant = !0; | |
| for (this.arrange(), i = 0; i < n; i++) delete e[i].isLayoutInstant; | |
| this.reveal(s) | |
| } | |
| }; | |
| var c = l.remove; | |
| return l.remove = function(t) { | |
| t = n.makeArray(t); | |
| var e = this.getItems(t); | |
| c.call(this, t); | |
| for (var i = e && e.length, o = 0; i && o < i; o++) { | |
| var s = e[o]; | |
| n.removeFrom(this.filteredItems, s) | |
| } | |
| }, l.shuffle = function() { | |
| for (var t = 0; t < this.items.length; t++) { | |
| var e = this.items[t]; | |
| e.sortData.random = Math.random() | |
| } | |
| this.options.sortBy = "random", this._sort(), this._layout() | |
| }, l._noTransition = function(t, e) { | |
| var i = this.options.transitionDuration; | |
| this.options.transitionDuration = 0; | |
| var o = t.apply(this, e); | |
| return this.options.transitionDuration = i, o | |
| }, l.getFilteredItemElements = function() { | |
| return this.filteredItems.map(function(t) { | |
| return t.element | |
| }) | |
| }, d | |
| }); | |
| // onePageNav | |
| ! function(t, i, n, s) { | |
| var e = function(s, e) { | |
| this.elem = s, this.$elem = t(s), this.options = e, this.metadata = this.$elem.data("plugin-options"), this.$win = t(i), this.sections = {}, this.didScroll = !1, this.$doc = t(n), this.docHeight = this.$doc.height() | |
| }; | |
| e.prototype = { | |
| defaults: { | |
| navItems: "a", | |
| currentClass: "current", | |
| changeHash: !1, | |
| easing: "swing", | |
| filter: "", | |
| scrollSpeed: 750, | |
| scrollThreshold: .5, | |
| begin: !1, | |
| end: !1, | |
| scrollChange: !1 | |
| }, | |
| init: function() { | |
| return this.config = t.extend({}, this.defaults, this.options, this.metadata), this.$nav = this.$elem.find(this.config.navItems), "" !== this.config.filter && (this.$nav = this.$nav.filter(this.config.filter)), this.$nav.on("click.onePageNav", t.proxy(this.handleClick, this)), this.getPositions(), this.bindInterval(), this.$win.on("resize.onePageNav", t.proxy(this.getPositions, this)), this | |
| }, | |
| adjustNav: function(t, i) { | |
| t.$elem.find("." + t.config.currentClass).removeClass(t.config.currentClass), i.addClass(t.config.currentClass) | |
| }, | |
| bindInterval: function() { | |
| var t, i = this; | |
| i.$win.on("scroll.onePageNav", function() { | |
| i.didScroll = !0 | |
| }), i.t = setInterval(function() { | |
| t = i.$doc.height(), i.didScroll && (i.didScroll = !1, i.scrollChange()), t !== i.docHeight && (i.docHeight = t, i.getPositions()) | |
| }, 250) | |
| }, | |
| getHash: function(t) { | |
| return t.attr("href").split("#")[1] | |
| }, | |
| getPositions: function() { | |
| var i, n, s, e = this; | |
| e.$nav.each(function() { | |
| "" != (i = e.getHash(t(this))) && (s = t("#" + i)).length && (n = s.offset().top, e.sections[i] = Math.round(n)) | |
| }) | |
| }, | |
| getSection: function(t) { | |
| var i = null, | |
| n = Math.round(this.$win.height() * this.config.scrollThreshold); | |
| for (var s in this.sections) this.sections[s] - n < t && (i = s); | |
| return i | |
| }, | |
| handleClick: function(n) { | |
| var s = this, | |
| e = t(n.currentTarget), | |
| o = e.parent(), | |
| a = "#" + s.getHash(e); | |
| o.hasClass(s.config.currentClass) || (s.config.begin && s.config.begin(), s.adjustNav(s, o), s.unbindInterval(), s.scrollTo(a, function() { | |
| s.config.changeHash && (i.location.hash = a), s.bindInterval(), s.config.end && s.config.end() | |
| })), n.preventDefault() | |
| }, | |
| scrollChange: function() { | |
| var t, i = this.$win.scrollTop(), | |
| n = this.getSection(i); | |
| null !== n && !(t = this.$elem.find('a[href$="#' + n + '"]').parent()).hasClass(this.config.currentClass) && (this.adjustNav(this, t), this.config.scrollChange && this.config.scrollChange(t)) | |
| }, | |
| scrollTo: function(i, n) { | |
| var s = t(i).offset().top; | |
| t("html, body").animate({ | |
| scrollTop: s - 150 | |
| }, this.config.scrollSpeed, this.config.easing, n) | |
| }, | |
| unbindInterval: function() { | |
| clearInterval(this.t), this.$win.unbind("scroll.onePageNav") | |
| } | |
| }, e.defaults = e.prototype.defaults, t.fn.onePageNav = function(t) { | |
| return this.each(function() { | |
| new e(this, t).init() | |
| }) | |
| } | |
| }(jQuery, window, document); | |
| /*! tooltipster v4.2.6 */ | |
| ! function(a, b) { | |
| "function" == typeof define && define.amd ? define(["jquery"], function(a) { | |
| return b(a) | |
| }) : "object" == typeof exports ? module.exports = b(require("jquery")) : b(jQuery) | |
| }(this, function(a) { | |
| function b(a) { | |
| this.$container, this.constraints = null, this.__$tooltip, this.__init(a) | |
| } | |
| function c(b, c) { | |
| var d = !0; | |
| return a.each(b, function(a, e) { | |
| return void 0 === c[a] || b[a] !== c[a] ? (d = !1, !1) : void 0 | |
| }), d | |
| } | |
| function d(b) { | |
| var c = b.attr("id"), | |
| d = c ? h.window.document.getElementById(c) : null; | |
| return d ? d === b[0] : a.contains(h.window.document.body, b[0]) | |
| } | |
| function e() { | |
| if (!g) return !1; | |
| var a = g.document.body || g.document.documentElement, | |
| b = a.style, | |
| c = "transition", | |
| d = ["Moz", "Webkit", "Khtml", "O", "ms"]; | |
| if ("string" == typeof b[c]) return !0; | |
| c = c.charAt(0).toUpperCase() + c.substr(1); | |
| for (var e = 0; e < d.length; e++) | |
| if ("string" == typeof b[d[e] + c]) return !0; | |
| return !1 | |
| } | |
| var f = { | |
| animation: "fade", | |
| animationDuration: 350, | |
| content: null, | |
| contentAsHTML: !1, | |
| contentCloning: !1, | |
| debug: !0, | |
| delay: 300, | |
| delayTouch: [300, 500], | |
| functionInit: null, | |
| functionBefore: null, | |
| functionReady: null, | |
| functionAfter: null, | |
| functionFormat: null, | |
| IEmin: 6, | |
| interactive: !1, | |
| multiple: !1, | |
| parent: null, | |
| plugins: ["sideTip"], | |
| repositionOnScroll: !1, | |
| restoration: "none", | |
| selfDestruction: !0, | |
| theme: [], | |
| timer: 0, | |
| trackerInterval: 500, | |
| trackOrigin: !1, | |
| trackTooltip: !1, | |
| trigger: "hover", | |
| triggerClose: { | |
| click: !1, | |
| mouseleave: !1, | |
| originClick: !1, | |
| scroll: !1, | |
| tap: !1, | |
| touchleave: !1 | |
| }, | |
| triggerOpen: { | |
| click: !1, | |
| mouseenter: !1, | |
| tap: !1, | |
| touchstart: !1 | |
| }, | |
| updateAnimation: "rotate", | |
| zIndex: 9999999 | |
| }, | |
| g = "undefined" != typeof window ? window : null, | |
| h = { | |
| hasTouchCapability: !(!g || !("ontouchstart" in g || g.DocumentTouch && g.document instanceof g.DocumentTouch || g.navigator.maxTouchPoints)), | |
| hasTransitions: e(), | |
| IE: !1, | |
| semVer: "4.2.6", | |
| window: g | |
| }, | |
| i = function() { | |
| this.__$emitterPrivate = a({}), this.__$emitterPublic = a({}), this.__instancesLatestArr = [], this.__plugins = {}, this._env = h | |
| }; | |
| i.prototype = { | |
| __bridge: function(b, c, d) { | |
| if (!c[d]) { | |
| var e = function() {}; | |
| e.prototype = b; | |
| var g = new e; | |
| g.__init && g.__init(c), a.each(b, function(a, b) { | |
| 0 != a.indexOf("__") && (c[a] ? f.debug : (c[a] = function() { | |
| return g[a].apply(g, Array.prototype.slice.apply(arguments)) | |
| }, c[a].bridged = g)) | |
| }), c[d] = g | |
| } | |
| return this | |
| }, | |
| __setWindow: function(a) { | |
| return h.window = a, this | |
| }, | |
| _getRuler: function(a) { | |
| return new b(a) | |
| }, | |
| _off: function() { | |
| return this.__$emitterPrivate.off.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| _on: function() { | |
| return this.__$emitterPrivate.on.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| _one: function() { | |
| return this.__$emitterPrivate.one.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| _plugin: function(b) { | |
| var c = this; | |
| if ("string" == typeof b) { | |
| var d = b, | |
| e = null; | |
| return d.indexOf(".") > 0 ? e = c.__plugins[d] : a.each(c.__plugins, function(a, b) { | |
| return b.name.substring(b.name.length - d.length - 1) == "." + d ? (e = b, !1) : void 0 | |
| }), e | |
| } | |
| if (b.name.indexOf(".") < 0) throw new Error("Plugins must be namespaced"); | |
| return c.__plugins[b.name] = b, b.core && c.__bridge(b.core, c, b.name), this | |
| }, | |
| _trigger: function() { | |
| var a = Array.prototype.slice.apply(arguments); | |
| return "string" == typeof a[0] && (a[0] = { | |
| type: a[0] | |
| }), this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate, a), this.__$emitterPublic.trigger.apply(this.__$emitterPublic, a), this | |
| }, | |
| instances: function(b) { | |
| var c = [], | |
| d = b || ".tooltipstered"; | |
| return a(d).each(function() { | |
| var b = a(this), | |
| d = b.data("tooltipster-ns"); | |
| d && a.each(d, function(a, d) { | |
| c.push(b.data(d)) | |
| }) | |
| }), c | |
| }, | |
| instancesLatest: function() { | |
| return this.__instancesLatestArr | |
| }, | |
| off: function() { | |
| return this.__$emitterPublic.off.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| on: function() { | |
| return this.__$emitterPublic.on.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| one: function() { | |
| return this.__$emitterPublic.one.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| origins: function(b) { | |
| var c = b ? b + " " : ""; | |
| return a(c + ".tooltipstered").toArray() | |
| }, | |
| setDefaults: function(b) { | |
| return a.extend(f, b), this | |
| }, | |
| triggerHandler: function() { | |
| return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| } | |
| }, a.tooltipster = new i, a.Tooltipster = function(b, c) { | |
| this.__callbacks = { | |
| close: [], | |
| open: [] | |
| }, this.__closingTime, this.__Content, this.__contentBcr, this.__destroyed = !1, this.__$emitterPrivate = a({}), this.__$emitterPublic = a({}), this.__enabled = !0, this.__garbageCollector, this.__Geometry, this.__lastPosition, this.__namespace = "tooltipster-" + Math.round(1e6 * Math.random()), this.__options, this.__$originParents, this.__pointerIsOverOrigin = !1, this.__previousThemes = [], this.__state = "closed", this.__timeouts = { | |
| close: [], | |
| open: null | |
| }, this.__touchEvents = [], this.__tracker = null, this._$origin, this._$tooltip, this.__init(b, c) | |
| }, a.Tooltipster.prototype = { | |
| __init: function(b, c) { | |
| var d = this; | |
| if (d._$origin = a(b), d.__options = a.extend(!0, {}, f, c), d.__optionsFormat(), !h.IE || h.IE >= d.__options.IEmin) { | |
| var e = null; | |
| if (void 0 === d._$origin.data("tooltipster-initialTitle") && (e = d._$origin.attr("title"), void 0 === e && (e = null), d._$origin.data("tooltipster-initialTitle", e)), null !== d.__options.content) d.__contentSet(d.__options.content); | |
| else { | |
| var g, i = d._$origin.attr("data-tooltip-content"); | |
| i && (g = a(i)), g && g[0] ? d.__contentSet(g.first()) : d.__contentSet(e) | |
| } | |
| d._$origin.removeAttr("title").addClass("tooltipstered"), d.__prepareOrigin(), d.__prepareGC(), a.each(d.__options.plugins, function(a, b) { | |
| d._plug(b) | |
| }), h.hasTouchCapability && a(h.window.document.body).on("touchmove." + d.__namespace + "-triggerOpen", function(a) { | |
| d._touchRecordEvent(a) | |
| }), d._on("created", function() { | |
| d.__prepareTooltip() | |
| })._on("repositioned", function(a) { | |
| d.__lastPosition = a.position | |
| }) | |
| } else d.__options.disabled = !0 | |
| }, | |
| __contentInsert: function() { | |
| var a = this, | |
| b = a._$tooltip.find(".tooltipster-content"), | |
| c = a.__Content, | |
| d = function(a) { | |
| c = a | |
| }; | |
| return a._trigger({ | |
| type: "format", | |
| content: a.__Content, | |
| format: d | |
| }), a.__options.functionFormat && (c = a.__options.functionFormat.call(a, a, { | |
| origin: a._$origin[0] | |
| }, a.__Content)), "string" != typeof c || a.__options.contentAsHTML ? b.empty().append(c) : b.text(c), a | |
| }, | |
| __contentSet: function(b) { | |
| return b instanceof a && this.__options.contentCloning && (b = b.clone(!0)), this.__Content = b, this._trigger({ | |
| type: "updated", | |
| content: b | |
| }), this | |
| }, | |
| __destroyError: function() { | |
| throw new Error("This tooltip has been destroyed and cannot execute your method call.") | |
| }, | |
| __geometry: function() { | |
| var b = this, | |
| c = b._$origin, | |
| d = b._$origin.is("area"); | |
| if (d) { | |
| var e = b._$origin.parent().attr("name"); | |
| c = a('img[usemap="#' + e + '"]') | |
| } | |
| var f = c[0].getBoundingClientRect(), | |
| g = a(h.window.document), | |
| i = a(h.window), | |
| j = c, | |
| k = { | |
| available: { | |
| document: null, | |
| window: null | |
| }, | |
| document: { | |
| size: { | |
| height: g.height(), | |
| width: g.width() | |
| } | |
| }, | |
| window: { | |
| scroll: { | |
| left: h.window.scrollX || h.window.document.documentElement.scrollLeft, | |
| top: h.window.scrollY || h.window.document.documentElement.scrollTop | |
| }, | |
| size: { | |
| height: i.height(), | |
| width: i.width() | |
| } | |
| }, | |
| origin: { | |
| fixedLineage: !1, | |
| offset: {}, | |
| size: { | |
| height: f.bottom - f.top, | |
| width: f.right - f.left | |
| }, | |
| usemapImage: d ? c[0] : null, | |
| windowOffset: { | |
| bottom: f.bottom, | |
| left: f.left, | |
| right: f.right, | |
| top: f.top | |
| } | |
| } | |
| }; | |
| if (d) { | |
| var l = b._$origin.attr("shape"), | |
| m = b._$origin.attr("coords"); | |
| if (m && (m = m.split(","), a.map(m, function(a, b) { | |
| m[b] = parseInt(a) | |
| })), "default" != l) switch (l) { | |
| case "circle": | |
| var n = m[0], | |
| o = m[1], | |
| p = m[2], | |
| q = o - p, | |
| r = n - p; | |
| k.origin.size.height = 2 * p, k.origin.size.width = k.origin.size.height, k.origin.windowOffset.left += r, k.origin.windowOffset.top += q; | |
| break; | |
| case "rect": | |
| var s = m[0], | |
| t = m[1], | |
| u = m[2], | |
| v = m[3]; | |
| k.origin.size.height = v - t, k.origin.size.width = u - s, k.origin.windowOffset.left += s, k.origin.windowOffset.top += t; | |
| break; | |
| case "poly": | |
| for (var w = 0, x = 0, y = 0, z = 0, A = "even", B = 0; B < m.length; B++) { | |
| var C = m[B]; | |
| "even" == A ? (C > y && (y = C, 0 === B && (w = y)), w > C && (w = C), A = "odd") : (C > z && (z = C, 1 == B && (x = z)), x > C && (x = C), A = "even") | |
| } | |
| k.origin.size.height = z - x, k.origin.size.width = y - w, k.origin.windowOffset.left += w, k.origin.windowOffset.top += x | |
| } | |
| } | |
| var D = function(a) { | |
| k.origin.size.height = a.height, k.origin.windowOffset.left = a.left, k.origin.windowOffset.top = a.top, k.origin.size.width = a.width | |
| }; | |
| for (b._trigger({ | |
| type: "geometry", | |
| edit: D, | |
| geometry: { | |
| height: k.origin.size.height, | |
| left: k.origin.windowOffset.left, | |
| top: k.origin.windowOffset.top, | |
| width: k.origin.size.width | |
| } | |
| }), k.origin.windowOffset.right = k.origin.windowOffset.left + k.origin.size.width, k.origin.windowOffset.bottom = k.origin.windowOffset.top + k.origin.size.height, k.origin.offset.left = k.origin.windowOffset.left + k.window.scroll.left, k.origin.offset.top = k.origin.windowOffset.top + k.window.scroll.top, k.origin.offset.bottom = k.origin.offset.top + k.origin.size.height, k.origin.offset.right = k.origin.offset.left + k.origin.size.width, k.available.document = { | |
| bottom: { | |
| height: k.document.size.height - k.origin.offset.bottom, | |
| width: k.document.size.width | |
| }, | |
| left: { | |
| height: k.document.size.height, | |
| width: k.origin.offset.left | |
| }, | |
| right: { | |
| height: k.document.size.height, | |
| width: k.document.size.width - k.origin.offset.right | |
| }, | |
| top: { | |
| height: k.origin.offset.top, | |
| width: k.document.size.width | |
| } | |
| }, k.available.window = { | |
| bottom: { | |
| height: Math.max(k.window.size.height - Math.max(k.origin.windowOffset.bottom, 0), 0), | |
| width: k.window.size.width | |
| }, | |
| left: { | |
| height: k.window.size.height, | |
| width: Math.max(k.origin.windowOffset.left, 0) | |
| }, | |
| right: { | |
| height: k.window.size.height, | |
| width: Math.max(k.window.size.width - Math.max(k.origin.windowOffset.right, 0), 0) | |
| }, | |
| top: { | |
| height: Math.max(k.origin.windowOffset.top, 0), | |
| width: k.window.size.width | |
| } | |
| }; | |
| "html" != j[0].tagName.toLowerCase();) { | |
| if ("fixed" == j.css("position")) { | |
| k.origin.fixedLineage = !0; | |
| break | |
| } | |
| j = j.parent() | |
| } | |
| return k | |
| }, | |
| __optionsFormat: function() { | |
| return "number" == typeof this.__options.animationDuration && (this.__options.animationDuration = [this.__options.animationDuration, this.__options.animationDuration]), "number" == typeof this.__options.delay && (this.__options.delay = [this.__options.delay, this.__options.delay]), "number" == typeof this.__options.delayTouch && (this.__options.delayTouch = [this.__options.delayTouch, this.__options.delayTouch]), "string" == typeof this.__options.theme && (this.__options.theme = [this.__options.theme]), null === this.__options.parent ? this.__options.parent = a(h.window.document.body) : "string" == typeof this.__options.parent && (this.__options.parent = a(this.__options.parent)), "hover" == this.__options.trigger ? (this.__options.triggerOpen = { | |
| mouseenter: !0, | |
| touchstart: !0 | |
| }, this.__options.triggerClose = { | |
| mouseleave: !0, | |
| originClick: !0, | |
| touchleave: !0 | |
| }) : "click" == this.__options.trigger && (this.__options.triggerOpen = { | |
| click: !0, | |
| tap: !0 | |
| }, this.__options.triggerClose = { | |
| click: !0, | |
| tap: !0 | |
| }), this._trigger("options"), this | |
| }, | |
| __prepareGC: function() { | |
| var b = this; | |
| return b.__options.selfDestruction ? b.__garbageCollector = setInterval(function() { | |
| var c = (new Date).getTime(); | |
| b.__touchEvents = a.grep(b.__touchEvents, function(a, b) { | |
| return c - a.time > 6e4 | |
| }), d(b._$origin) || b.close(function() { | |
| b.destroy() | |
| }) | |
| }, 2e4) : clearInterval(b.__garbageCollector), b | |
| }, | |
| __prepareOrigin: function() { | |
| var a = this; | |
| if (a._$origin.off("." + a.__namespace + "-triggerOpen"), h.hasTouchCapability && a._$origin.on("touchstart." + a.__namespace + "-triggerOpen touchend." + a.__namespace + "-triggerOpen touchcancel." + a.__namespace + "-triggerOpen", function(b) { | |
| a._touchRecordEvent(b) | |
| }), a.__options.triggerOpen.click || a.__options.triggerOpen.tap && h.hasTouchCapability) { | |
| var b = ""; | |
| a.__options.triggerOpen.click && (b += "click." + a.__namespace + "-triggerOpen "), a.__options.triggerOpen.tap && h.hasTouchCapability && (b += "touchend." + a.__namespace + "-triggerOpen"), a._$origin.on(b, function(b) { | |
| a._touchIsMeaningfulEvent(b) && a._open(b) | |
| }) | |
| } | |
| if (a.__options.triggerOpen.mouseenter || a.__options.triggerOpen.touchstart && h.hasTouchCapability) { | |
| var b = ""; | |
| a.__options.triggerOpen.mouseenter && (b += "mouseenter." + a.__namespace + "-triggerOpen "), a.__options.triggerOpen.touchstart && h.hasTouchCapability && (b += "touchstart." + a.__namespace + "-triggerOpen"), a._$origin.on(b, function(b) { | |
| !a._touchIsTouchEvent(b) && a._touchIsEmulatedEvent(b) || (a.__pointerIsOverOrigin = !0, a._openShortly(b)) | |
| }) | |
| } | |
| if (a.__options.triggerClose.mouseleave || a.__options.triggerClose.touchleave && h.hasTouchCapability) { | |
| var b = ""; | |
| a.__options.triggerClose.mouseleave && (b += "mouseleave." + a.__namespace + "-triggerOpen "), a.__options.triggerClose.touchleave && h.hasTouchCapability && (b += "touchend." + a.__namespace + "-triggerOpen touchcancel." + a.__namespace + "-triggerOpen"), a._$origin.on(b, function(b) { | |
| a._touchIsMeaningfulEvent(b) && (a.__pointerIsOverOrigin = !1) | |
| }) | |
| } | |
| return a | |
| }, | |
| __prepareTooltip: function() { | |
| var b = this, | |
| c = b.__options.interactive ? "auto" : ""; | |
| return b._$tooltip.attr("id", b.__namespace).css({ | |
| "pointer-events": c, | |
| zIndex: b.__options.zIndex | |
| }), a.each(b.__previousThemes, function(a, c) { | |
| b._$tooltip.removeClass(c) | |
| }), a.each(b.__options.theme, function(a, c) { | |
| b._$tooltip.addClass(c) | |
| }), b.__previousThemes = a.merge([], b.__options.theme), b | |
| }, | |
| __scrollHandler: function(b) { | |
| var c = this; | |
| if (c.__options.triggerClose.scroll) c._close(b); | |
| else if (d(c._$origin) && d(c._$tooltip)) { | |
| var e = null; | |
| if (b.target === h.window.document) c.__Geometry.origin.fixedLineage || c.__options.repositionOnScroll && c.reposition(b); | |
| else { | |
| e = c.__geometry(); | |
| var f = !1; | |
| if ("fixed" != c._$origin.css("position") && c.__$originParents.each(function(b, c) { | |
| var d = a(c), | |
| g = d.css("overflow-x"), | |
| h = d.css("overflow-y"); | |
| if ("visible" != g || "visible" != h) { | |
| var i = c.getBoundingClientRect(); | |
| if ("visible" != g && (e.origin.windowOffset.left < i.left || e.origin.windowOffset.right > i.right)) return f = !0, !1; | |
| if ("visible" != h && (e.origin.windowOffset.top < i.top || e.origin.windowOffset.bottom > i.bottom)) return f = !0, !1 | |
| } | |
| return "fixed" == d.css("position") ? !1 : void 0 | |
| }), f) c._$tooltip.css("visibility", "hidden"); | |
| else if (c._$tooltip.css("visibility", "visible"), c.__options.repositionOnScroll) c.reposition(b); | |
| else { | |
| var g = e.origin.offset.left - c.__Geometry.origin.offset.left, | |
| i = e.origin.offset.top - c.__Geometry.origin.offset.top; | |
| c._$tooltip.css({ | |
| left: c.__lastPosition.coord.left + g, | |
| top: c.__lastPosition.coord.top + i | |
| }) | |
| } | |
| } | |
| c._trigger({ | |
| type: "scroll", | |
| event: b, | |
| geo: e | |
| }) | |
| } | |
| return c | |
| }, | |
| __stateSet: function(a) { | |
| return this.__state = a, this._trigger({ | |
| type: "state", | |
| state: a | |
| }), this | |
| }, | |
| __timeoutsClear: function() { | |
| return clearTimeout(this.__timeouts.open), this.__timeouts.open = null, a.each(this.__timeouts.close, function(a, b) { | |
| clearTimeout(b) | |
| }), this.__timeouts.close = [], this | |
| }, | |
| __trackerStart: function() { | |
| var a = this, | |
| b = a._$tooltip.find(".tooltipster-content"); | |
| return a.__options.trackTooltip && (a.__contentBcr = b[0].getBoundingClientRect()), a.__tracker = setInterval(function() { | |
| if (d(a._$origin) && d(a._$tooltip)) { | |
| if (a.__options.trackOrigin) { | |
| var e = a.__geometry(), | |
| f = !1; | |
| c(e.origin.size, a.__Geometry.origin.size) && (a.__Geometry.origin.fixedLineage ? c(e.origin.windowOffset, a.__Geometry.origin.windowOffset) && (f = !0) : c(e.origin.offset, a.__Geometry.origin.offset) && (f = !0)), f || (a.__options.triggerClose.mouseleave ? a._close() : a.reposition()) | |
| } | |
| if (a.__options.trackTooltip) { | |
| var g = b[0].getBoundingClientRect(); | |
| g.height === a.__contentBcr.height && g.width === a.__contentBcr.width || (a.reposition(), a.__contentBcr = g) | |
| } | |
| } else a._close() | |
| }, a.__options.trackerInterval), a | |
| }, | |
| _close: function(b, c, d) { | |
| var e = this, | |
| f = !0; | |
| if (e._trigger({ | |
| type: "close", | |
| event: b, | |
| stop: function() { | |
| f = !1 | |
| } | |
| }), f || d) { | |
| c && e.__callbacks.close.push(c), e.__callbacks.open = [], e.__timeoutsClear(); | |
| var g = function() { | |
| a.each(e.__callbacks.close, function(a, c) { | |
| c.call(e, e, { | |
| event: b, | |
| origin: e._$origin[0] | |
| }) | |
| }), e.__callbacks.close = [] | |
| }; | |
| if ("closed" != e.__state) { | |
| var i = !0, | |
| j = new Date, | |
| k = j.getTime(), | |
| l = k + e.__options.animationDuration[1]; | |
| if ("disappearing" == e.__state && l > e.__closingTime && e.__options.animationDuration[1] > 0 && (i = !1), i) { | |
| e.__closingTime = l, "disappearing" != e.__state && e.__stateSet("disappearing"); | |
| var m = function() { | |
| clearInterval(e.__tracker), e._trigger({ | |
| type: "closing", | |
| event: b | |
| }), e._$tooltip.off("." + e.__namespace + "-triggerClose").removeClass("tooltipster-dying"), a(h.window).off("." + e.__namespace + "-triggerClose"), e.__$originParents.each(function(b, c) { | |
| a(c).off("scroll." + e.__namespace + "-triggerClose") | |
| }), e.__$originParents = null, a(h.window.document.body).off("." + e.__namespace + "-triggerClose"), e._$origin.off("." + e.__namespace + "-triggerClose"), e._off("dismissable"), e.__stateSet("closed"), e._trigger({ | |
| type: "after", | |
| event: b | |
| }), e.__options.functionAfter && e.__options.functionAfter.call(e, e, { | |
| event: b, | |
| origin: e._$origin[0] | |
| }), g() | |
| }; | |
| h.hasTransitions ? (e._$tooltip.css({ | |
| "-moz-animation-duration": e.__options.animationDuration[1] + "ms", | |
| "-ms-animation-duration": e.__options.animationDuration[1] + "ms", | |
| "-o-animation-duration": e.__options.animationDuration[1] + "ms", | |
| "-webkit-animation-duration": e.__options.animationDuration[1] + "ms", | |
| "animation-duration": e.__options.animationDuration[1] + "ms", | |
| "transition-duration": e.__options.animationDuration[1] + "ms" | |
| }), e._$tooltip.clearQueue().removeClass("tooltipster-show").addClass("tooltipster-dying"), e.__options.animationDuration[1] > 0 && e._$tooltip.delay(e.__options.animationDuration[1]), e._$tooltip.queue(m)) : e._$tooltip.stop().fadeOut(e.__options.animationDuration[1], m) | |
| } | |
| } else g() | |
| } | |
| return e | |
| }, | |
| _off: function() { | |
| return this.__$emitterPrivate.off.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| _on: function() { | |
| return this.__$emitterPrivate.on.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| _one: function() { | |
| return this.__$emitterPrivate.one.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| _open: function(b, c) { | |
| var e = this; | |
| if (!e.__destroying && d(e._$origin) && e.__enabled) { | |
| var f = !0; | |
| if ("closed" == e.__state && (e._trigger({ | |
| type: "before", | |
| event: b, | |
| stop: function() { | |
| f = !1 | |
| } | |
| }), f && e.__options.functionBefore && (f = e.__options.functionBefore.call(e, e, { | |
| event: b, | |
| origin: e._$origin[0] | |
| }))), f !== !1 && null !== e.__Content) { | |
| c && e.__callbacks.open.push(c), e.__callbacks.close = [], e.__timeoutsClear(); | |
| var g, i = function() { | |
| "stable" != e.__state && e.__stateSet("stable"), a.each(e.__callbacks.open, function(a, b) { | |
| b.call(e, e, { | |
| origin: e._$origin[0], | |
| tooltip: e._$tooltip[0] | |
| }) | |
| }), e.__callbacks.open = [] | |
| }; | |
| if ("closed" !== e.__state) g = 0, "disappearing" === e.__state ? (e.__stateSet("appearing"), h.hasTransitions ? (e._$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-show"), e.__options.animationDuration[0] > 0 && e._$tooltip.delay(e.__options.animationDuration[0]), e._$tooltip.queue(i)) : e._$tooltip.stop().fadeIn(i)) : "stable" == e.__state && i(); | |
| else { | |
| if (e.__stateSet("appearing"), g = e.__options.animationDuration[0], e.__contentInsert(), e.reposition(b, !0), h.hasTransitions ? (e._$tooltip.addClass("tooltipster-" + e.__options.animation).addClass("tooltipster-initial").css({ | |
| "-moz-animation-duration": e.__options.animationDuration[0] + "ms", | |
| "-ms-animation-duration": e.__options.animationDuration[0] + "ms", | |
| "-o-animation-duration": e.__options.animationDuration[0] + "ms", | |
| "-webkit-animation-duration": e.__options.animationDuration[0] + "ms", | |
| "animation-duration": e.__options.animationDuration[0] + "ms", | |
| "transition-duration": e.__options.animationDuration[0] + "ms" | |
| }), setTimeout(function() { | |
| "closed" != e.__state && (e._$tooltip.addClass("tooltipster-show").removeClass("tooltipster-initial"), e.__options.animationDuration[0] > 0 && e._$tooltip.delay(e.__options.animationDuration[0]), e._$tooltip.queue(i)) | |
| }, 0)) : e._$tooltip.css("display", "none").fadeIn(e.__options.animationDuration[0], i), e.__trackerStart(), a(h.window).on("resize." + e.__namespace + "-triggerClose", function(b) { | |
| var c = a(document.activeElement); | |
| (c.is("input") || c.is("textarea")) && a.contains(e._$tooltip[0], c[0]) || e.reposition(b) | |
| }).on("scroll." + e.__namespace + "-triggerClose", function(a) { | |
| e.__scrollHandler(a) | |
| }), e.__$originParents = e._$origin.parents(), e.__$originParents.each(function(b, c) { | |
| a(c).on("scroll." + e.__namespace + "-triggerClose", function(a) { | |
| e.__scrollHandler(a) | |
| }) | |
| }), e.__options.triggerClose.mouseleave || e.__options.triggerClose.touchleave && h.hasTouchCapability) { | |
| e._on("dismissable", function(a) { | |
| a.dismissable ? a.delay ? (m = setTimeout(function() { | |
| e._close(a.event) | |
| }, a.delay), e.__timeouts.close.push(m)) : e._close(a) : clearTimeout(m) | |
| }); | |
| var j = e._$origin, | |
| k = "", | |
| l = "", | |
| m = null; | |
| e.__options.interactive && (j = j.add(e._$tooltip)), e.__options.triggerClose.mouseleave && (k += "mouseenter." + e.__namespace + "-triggerClose ", l += "mouseleave." + e.__namespace + "-triggerClose "), e.__options.triggerClose.touchleave && h.hasTouchCapability && (k += "touchstart." + e.__namespace + "-triggerClose", l += "touchend." + e.__namespace + "-triggerClose touchcancel." + e.__namespace + "-triggerClose"), j.on(l, function(a) { | |
| if (e._touchIsTouchEvent(a) || !e._touchIsEmulatedEvent(a)) { | |
| var b = "mouseleave" == a.type ? e.__options.delay : e.__options.delayTouch; | |
| e._trigger({ | |
| delay: b[1], | |
| dismissable: !0, | |
| event: a, | |
| type: "dismissable" | |
| }) | |
| } | |
| }).on(k, function(a) { | |
| !e._touchIsTouchEvent(a) && e._touchIsEmulatedEvent(a) || e._trigger({ | |
| dismissable: !1, | |
| event: a, | |
| type: "dismissable" | |
| }) | |
| }) | |
| } | |
| e.__options.triggerClose.originClick && e._$origin.on("click." + e.__namespace + "-triggerClose", function(a) { | |
| e._touchIsTouchEvent(a) || e._touchIsEmulatedEvent(a) || e._close(a) | |
| }), (e.__options.triggerClose.click || e.__options.triggerClose.tap && h.hasTouchCapability) && setTimeout(function() { | |
| if ("closed" != e.__state) { | |
| var b = "", | |
| c = a(h.window.document.body); | |
| e.__options.triggerClose.click && (b += "click." + e.__namespace + "-triggerClose "), e.__options.triggerClose.tap && h.hasTouchCapability && (b += "touchend." + e.__namespace + "-triggerClose"), c.on(b, function(b) { | |
| e._touchIsMeaningfulEvent(b) && (e._touchRecordEvent(b), e.__options.interactive && a.contains(e._$tooltip[0], b.target) || e._close(b)) | |
| }), e.__options.triggerClose.tap && h.hasTouchCapability && c.on("touchstart." + e.__namespace + "-triggerClose", function(a) { | |
| e._touchRecordEvent(a) | |
| }) | |
| } | |
| }, 0), e._trigger("ready"), e.__options.functionReady && e.__options.functionReady.call(e, e, { | |
| origin: e._$origin[0], | |
| tooltip: e._$tooltip[0] | |
| }) | |
| } | |
| if (e.__options.timer > 0) { | |
| var m = setTimeout(function() { | |
| e._close() | |
| }, e.__options.timer + g); | |
| e.__timeouts.close.push(m) | |
| } | |
| } | |
| } | |
| return e | |
| }, | |
| _openShortly: function(a) { | |
| var b = this, | |
| c = !0; | |
| if ("stable" != b.__state && "appearing" != b.__state && !b.__timeouts.open && (b._trigger({ | |
| type: "start", | |
| event: a, | |
| stop: function() { | |
| c = !1 | |
| } | |
| }), c)) { | |
| var d = 0 == a.type.indexOf("touch") ? b.__options.delayTouch : b.__options.delay; | |
| d[0] ? b.__timeouts.open = setTimeout(function() { | |
| b.__timeouts.open = null, b.__pointerIsOverOrigin && b._touchIsMeaningfulEvent(a) ? (b._trigger("startend"), b._open(a)) : b._trigger("startcancel") | |
| }, d[0]) : (b._trigger("startend"), b._open(a)) | |
| } | |
| return b | |
| }, | |
| _optionsExtract: function(b, c) { | |
| var d = this, | |
| e = a.extend(!0, {}, c), | |
| f = d.__options[b]; | |
| return f || (f = {}, a.each(c, function(a, b) { | |
| var c = d.__options[a]; | |
| void 0 !== c && (f[a] = c) | |
| })), a.each(e, function(b, c) { | |
| void 0 !== f[b] && ("object" != typeof c || c instanceof Array || null == c || "object" != typeof f[b] || f[b] instanceof Array || null == f[b] ? e[b] = f[b] : a.extend(e[b], f[b])) | |
| }), e | |
| }, | |
| _plug: function(b) { | |
| var c = a.tooltipster._plugin(b); | |
| if (!c) throw new Error('The "' + b + '" plugin is not defined'); | |
| return c.instance && a.tooltipster.__bridge(c.instance, this, c.name), this | |
| }, | |
| _touchIsEmulatedEvent: function(a) { | |
| for (var b = !1, c = (new Date).getTime(), d = this.__touchEvents.length - 1; d >= 0; d--) { | |
| var e = this.__touchEvents[d]; | |
| if (!(c - e.time < 500)) break; | |
| e.target === a.target && (b = !0) | |
| } | |
| return b | |
| }, | |
| _touchIsMeaningfulEvent: function(a) { | |
| return this._touchIsTouchEvent(a) && !this._touchSwiped(a.target) || !this._touchIsTouchEvent(a) && !this._touchIsEmulatedEvent(a) | |
| }, | |
| _touchIsTouchEvent: function(a) { | |
| return 0 == a.type.indexOf("touch") | |
| }, | |
| _touchRecordEvent: function(a) { | |
| return this._touchIsTouchEvent(a) && (a.time = (new Date).getTime(), this.__touchEvents.push(a)), this | |
| }, | |
| _touchSwiped: function(a) { | |
| for (var b = !1, c = this.__touchEvents.length - 1; c >= 0; c--) { | |
| var d = this.__touchEvents[c]; | |
| if ("touchmove" == d.type) { | |
| b = !0; | |
| break | |
| } | |
| if ("touchstart" == d.type && a === d.target) break | |
| } | |
| return b | |
| }, | |
| _trigger: function() { | |
| var b = Array.prototype.slice.apply(arguments); | |
| return "string" == typeof b[0] && (b[0] = { | |
| type: b[0] | |
| }), b[0].instance = this, b[0].origin = this._$origin ? this._$origin[0] : null, b[0].tooltip = this._$tooltip ? this._$tooltip[0] : null, this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate, b), a.tooltipster._trigger.apply(a.tooltipster, b), this.__$emitterPublic.trigger.apply(this.__$emitterPublic, b), this | |
| }, | |
| _unplug: function(b) { | |
| var c = this; | |
| if (c[b]) { | |
| var d = a.tooltipster._plugin(b); | |
| d.instance && a.each(d.instance, function(a, d) { | |
| c[a] && c[a].bridged === c[b] && delete c[a] | |
| }), c[b].__destroy && c[b].__destroy(), delete c[b] | |
| } | |
| return c | |
| }, | |
| close: function(a) { | |
| return this.__destroyed ? this.__destroyError() : this._close(null, a), this | |
| }, | |
| content: function(a) { | |
| var b = this; | |
| if (void 0 === a) return b.__Content; | |
| if (b.__destroyed) b.__destroyError(); | |
| else if (b.__contentSet(a), null !== b.__Content) { | |
| if ("closed" !== b.__state && (b.__contentInsert(), b.reposition(), b.__options.updateAnimation)) | |
| if (h.hasTransitions) { | |
| var c = b.__options.updateAnimation; | |
| b._$tooltip.addClass("tooltipster-update-" + c), setTimeout(function() { | |
| "closed" != b.__state && b._$tooltip.removeClass("tooltipster-update-" + c) | |
| }, 1e3) | |
| } else b._$tooltip.fadeTo(200, .5, function() { | |
| "closed" != b.__state && b._$tooltip.fadeTo(200, 1) | |
| }) | |
| } else b._close(); | |
| return b | |
| }, | |
| destroy: function() { | |
| var b = this; | |
| if (b.__destroyed) b.__destroyError(); | |
| else { | |
| "closed" != b.__state ? b.option("animationDuration", 0)._close(null, null, !0) : b.__timeoutsClear(), b._trigger("destroy"), b.__destroyed = !0, b._$origin.removeData(b.__namespace).off("." + b.__namespace + "-triggerOpen"), a(h.window.document.body).off("." + b.__namespace + "-triggerOpen"); | |
| var c = b._$origin.data("tooltipster-ns"); | |
| if (c) | |
| if (1 === c.length) { | |
| var d = null; | |
| "previous" == b.__options.restoration ? d = b._$origin.data("tooltipster-initialTitle") : "current" == b.__options.restoration && (d = "string" == typeof b.__Content ? b.__Content : a("<div></div>").append(b.__Content).html()), d && b._$origin.attr("title", d), b._$origin.removeClass("tooltipstered"), b._$origin.removeData("tooltipster-ns").removeData("tooltipster-initialTitle") | |
| } else c = a.grep(c, function(a, c) { | |
| return a !== b.__namespace | |
| }), b._$origin.data("tooltipster-ns", c); | |
| b._trigger("destroyed"), b._off(), b.off(), b.__Content = null, b.__$emitterPrivate = null, b.__$emitterPublic = null, b.__options.parent = null, b._$origin = null, b._$tooltip = null, a.tooltipster.__instancesLatestArr = a.grep(a.tooltipster.__instancesLatestArr, function(a, c) { | |
| return b !== a | |
| }), clearInterval(b.__garbageCollector) | |
| } | |
| return b | |
| }, | |
| disable: function() { | |
| return this.__destroyed ? (this.__destroyError(), this) : (this._close(), this.__enabled = !1, this) | |
| }, | |
| elementOrigin: function() { | |
| return this.__destroyed ? void this.__destroyError() : this._$origin[0] | |
| }, | |
| elementTooltip: function() { | |
| return this._$tooltip ? this._$tooltip[0] : null | |
| }, | |
| enable: function() { | |
| return this.__enabled = !0, this | |
| }, | |
| hide: function(a) { | |
| return this.close(a) | |
| }, | |
| instance: function() { | |
| return this | |
| }, | |
| off: function() { | |
| return this.__destroyed || this.__$emitterPublic.off.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| on: function() { | |
| return this.__destroyed ? this.__destroyError() : this.__$emitterPublic.on.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| one: function() { | |
| return this.__destroyed ? this.__destroyError() : this.__$emitterPublic.one.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| }, | |
| open: function(a) { | |
| return this.__destroyed ? this.__destroyError() : this._open(null, a), this | |
| }, | |
| option: function(b, c) { | |
| return void 0 === c ? this.__options[b] : (this.__destroyed ? this.__destroyError() : (this.__options[b] = c, this.__optionsFormat(), a.inArray(b, ["trigger", "triggerClose", "triggerOpen"]) >= 0 && this.__prepareOrigin(), "selfDestruction" === b && this.__prepareGC()), this) | |
| }, | |
| reposition: function(a, b) { | |
| var c = this; | |
| return c.__destroyed ? c.__destroyError() : "closed" != c.__state && d(c._$origin) && (b || d(c._$tooltip)) && (b || c._$tooltip.detach(), c.__Geometry = c.__geometry(), c._trigger({ | |
| type: "reposition", | |
| event: a, | |
| helper: { | |
| geo: c.__Geometry | |
| } | |
| })), c | |
| }, | |
| show: function(a) { | |
| return this.open(a) | |
| }, | |
| status: function() { | |
| return { | |
| destroyed: this.__destroyed, | |
| enabled: this.__enabled, | |
| open: "closed" !== this.__state, | |
| state: this.__state | |
| } | |
| }, | |
| triggerHandler: function() { | |
| return this.__destroyed ? this.__destroyError() : this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments)), this | |
| } | |
| }, a.fn.tooltipster = function() { | |
| var b = Array.prototype.slice.apply(arguments), | |
| c = "You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE."; | |
| if (0 === this.length) return this; | |
| if ("string" == typeof b[0]) { | |
| var d = "#*$~&"; | |
| return this.each(function() { | |
| var e = a(this).data("tooltipster-ns"), | |
| f = e ? a(this).data(e[0]) : null; | |
| if (!f) throw new Error("You called Tooltipster's \"" + b[0] + '" method on an uninitialized element'); | |
| if ("function" != typeof f[b[0]]) throw new Error('Unknown method "' + b[0] + '"'); | |
| this.length > 1 && "content" == b[0] && (b[1] instanceof a || "object" == typeof b[1] && null != b[1] && b[1].tagName) && !f.__options.contentCloning && f.__options.debug && console.log(c); | |
| var g = f[b[0]](b[1], b[2]); | |
| return g !== f || "instance" === b[0] ? (d = g, !1) : void 0 | |
| }), "#*$~&" !== d ? d : this | |
| } | |
| a.tooltipster.__instancesLatestArr = []; | |
| var e = b[0] && void 0 !== b[0].multiple, | |
| g = e && b[0].multiple || !e && f.multiple, | |
| h = b[0] && void 0 !== b[0].content, | |
| i = h && b[0].content || !h && f.content, | |
| j = b[0] && void 0 !== b[0].contentCloning, | |
| k = j && b[0].contentCloning || !j && f.contentCloning, | |
| l = b[0] && void 0 !== b[0].debug, | |
| m = l && b[0].debug || !l && f.debug; | |
| return this.length > 1 && (i instanceof a || "object" == typeof i && null != i && i.tagName) && !k && m && console.log(c), this.each(function() { | |
| var c = !1, | |
| d = a(this), | |
| e = d.data("tooltipster-ns"), | |
| f = null; | |
| e ? g ? c = !0 : m : c = !0, c && (f = new a.Tooltipster(this, b[0]), e || (e = []), e.push(f.__namespace), d.data("tooltipster-ns", e), d.data(f.__namespace, f), f.__options.functionInit && f.__options.functionInit.call(f, f, { | |
| origin: this | |
| }), f._trigger("init")), a.tooltipster.__instancesLatestArr.push(f) | |
| }), this | |
| }, b.prototype = { | |
| __init: function(b) { | |
| this.__$tooltip = b, this.__$tooltip.css({ | |
| left: 0, | |
| overflow: "hidden", | |
| position: "absolute", | |
| top: 0 | |
| }).find(".tooltipster-content").css("overflow", "auto"), this.$container = a('<div class="tooltipster-ruler"></div>').append(this.__$tooltip).appendTo(h.window.document.body) | |
| }, | |
| __forceRedraw: function() { | |
| var a = this.__$tooltip.parent(); | |
| this.__$tooltip.detach(), this.__$tooltip.appendTo(a) | |
| }, | |
| constrain: function(a, b) { | |
| return this.constraints = { | |
| width: a, | |
| height: b | |
| }, this.__$tooltip.css({ | |
| display: "block", | |
| height: "", | |
| overflow: "auto", | |
| width: a | |
| }), this | |
| }, | |
| destroy: function() { | |
| this.__$tooltip.detach().find(".tooltipster-content").css({ | |
| display: "", | |
| overflow: "" | |
| }), this.$container.remove() | |
| }, | |
| free: function() { | |
| return this.constraints = null, this.__$tooltip.css({ | |
| display: "", | |
| height: "", | |
| overflow: "visible", | |
| width: "" | |
| }), this | |
| }, | |
| measure: function() { | |
| this.__forceRedraw(); | |
| var a = this.__$tooltip[0].getBoundingClientRect(), | |
| b = { | |
| size: { | |
| height: a.height || a.bottom - a.top, | |
| width: a.width || a.right - a.left | |
| } | |
| }; | |
| if (this.constraints) { | |
| var c = this.__$tooltip.find(".tooltipster-content"), | |
| d = this.__$tooltip.outerHeight(), | |
| e = c[0].getBoundingClientRect(), | |
| f = { | |
| height: d <= this.constraints.height, | |
| width: a.width <= this.constraints.width && e.width >= c[0].scrollWidth - 1 | |
| }; | |
| b.fits = f.height && f.width | |
| } | |
| return h.IE && h.IE <= 11 && b.size.width !== h.window.document.documentElement.clientWidth && (b.size.width = Math.ceil(b.size.width) + 1), b | |
| } | |
| }; | |
| var j = navigator.userAgent.toLowerCase(); - 1 != j.indexOf("msie") ? h.IE = parseInt(j.split("msie")[1]) : -1 !== j.toLowerCase().indexOf("trident") && -1 !== j.indexOf(" rv:11") ? h.IE = 11 : -1 != j.toLowerCase().indexOf("edge/") && (h.IE = parseInt(j.toLowerCase().split("edge/")[1])); | |
| var k = "tooltipster.sideTip"; | |
| return a.tooltipster._plugin({ | |
| name: k, | |
| instance: { | |
| __defaults: function() { | |
| return { | |
| arrow: !0, | |
| distance: 6, | |
| functionPosition: null, | |
| maxWidth: null, | |
| minIntersection: 16, | |
| minWidth: 0, | |
| position: null, | |
| side: "top", | |
| viewportAware: !0 | |
| } | |
| }, | |
| __init: function(a) { | |
| var b = this; | |
| b.__instance = a, b.__namespace = "tooltipster-sideTip-" + Math.round(1e6 * Math.random()), b.__previousState = "closed", b.__options, b.__optionsFormat(), b.__instance._on("state." + b.__namespace, function(a) { | |
| "closed" == a.state ? b.__close() : "appearing" == a.state && "closed" == b.__previousState && b.__create(), b.__previousState = a.state | |
| }), b.__instance._on("options." + b.__namespace, function() { | |
| b.__optionsFormat() | |
| }), b.__instance._on("reposition." + b.__namespace, function(a) { | |
| b.__reposition(a.event, a.helper) | |
| }) | |
| }, | |
| __close: function() { | |
| this.__instance.content() instanceof a && this.__instance.content().detach(), this.__instance._$tooltip.remove(), this.__instance._$tooltip = null | |
| }, | |
| __create: function() { | |
| var b = a('<div class="tooltipster-base tooltipster-sidetip"><div class="tooltipster-box"><div class="tooltipster-content"></div></div><div class="tooltipster-arrow"><div class="tooltipster-arrow-uncropped"><div class="tooltipster-arrow-border"></div><div class="tooltipster-arrow-background"></div></div></div></div>'); | |
| this.__options.arrow || b.find(".tooltipster-box").css("margin", 0).end().find(".tooltipster-arrow").hide(), this.__options.minWidth && b.css("min-width", this.__options.minWidth + "px"), this.__options.maxWidth && b.css("max-width", this.__options.maxWidth + "px"), | |
| this.__instance._$tooltip = b, this.__instance._trigger("created") | |
| }, | |
| __destroy: function() { | |
| this.__instance._off("." + self.__namespace) | |
| }, | |
| __optionsFormat: function() { | |
| var b = this; | |
| if (b.__options = b.__instance._optionsExtract(k, b.__defaults()), b.__options.position && (b.__options.side = b.__options.position), "object" != typeof b.__options.distance && (b.__options.distance = [b.__options.distance]), b.__options.distance.length < 4 && (void 0 === b.__options.distance[1] && (b.__options.distance[1] = b.__options.distance[0]), void 0 === b.__options.distance[2] && (b.__options.distance[2] = b.__options.distance[0]), void 0 === b.__options.distance[3] && (b.__options.distance[3] = b.__options.distance[1]), b.__options.distance = { | |
| top: b.__options.distance[0], | |
| right: b.__options.distance[1], | |
| bottom: b.__options.distance[2], | |
| left: b.__options.distance[3] | |
| }), "string" == typeof b.__options.side) { | |
| var c = { | |
| top: "bottom", | |
| right: "left", | |
| bottom: "top", | |
| left: "right" | |
| }; | |
| b.__options.side = [b.__options.side, c[b.__options.side]], "left" == b.__options.side[0] || "right" == b.__options.side[0] ? b.__options.side.push("top", "bottom") : b.__options.side.push("right", "left") | |
| } | |
| 6 === a.tooltipster._env.IE && b.__options.arrow !== !0 && (b.__options.arrow = !1) | |
| }, | |
| __reposition: function(b, c) { | |
| var d, e = this, | |
| f = e.__targetFind(c), | |
| g = []; | |
| e.__instance._$tooltip.detach(); | |
| var h = e.__instance._$tooltip.clone(), | |
| i = a.tooltipster._getRuler(h), | |
| j = !1, | |
| k = e.__instance.option("animation"); | |
| switch (k && h.removeClass("tooltipster-" + k), a.each(["window", "document"], function(d, k) { | |
| var l = null; | |
| if (e.__instance._trigger({ | |
| container: k, | |
| helper: c, | |
| satisfied: j, | |
| takeTest: function(a) { | |
| l = a | |
| }, | |
| results: g, | |
| type: "positionTest" | |
| }), 1 == l || 0 != l && 0 == j && ("window" != k || e.__options.viewportAware)) | |
| for (var d = 0; d < e.__options.side.length; d++) { | |
| var m = { | |
| horizontal: 0, | |
| vertical: 0 | |
| }, | |
| n = e.__options.side[d]; | |
| "top" == n || "bottom" == n ? m.vertical = e.__options.distance[n] : m.horizontal = e.__options.distance[n], e.__sideChange(h, n), a.each(["natural", "constrained"], function(a, d) { | |
| if (l = null, e.__instance._trigger({ | |
| container: k, | |
| event: b, | |
| helper: c, | |
| mode: d, | |
| results: g, | |
| satisfied: j, | |
| side: n, | |
| takeTest: function(a) { | |
| l = a | |
| }, | |
| type: "positionTest" | |
| }), 1 == l || 0 != l && 0 == j) { | |
| var h = { | |
| container: k, | |
| distance: m, | |
| fits: null, | |
| mode: d, | |
| outerSize: null, | |
| side: n, | |
| size: null, | |
| target: f[n], | |
| whole: null | |
| }, | |
| o = "natural" == d ? i.free() : i.constrain(c.geo.available[k][n].width - m.horizontal, c.geo.available[k][n].height - m.vertical), | |
| p = o.measure(); | |
| if (h.size = p.size, h.outerSize = { | |
| height: p.size.height + m.vertical, | |
| width: p.size.width + m.horizontal | |
| }, "natural" == d ? c.geo.available[k][n].width >= h.outerSize.width && c.geo.available[k][n].height >= h.outerSize.height ? h.fits = !0 : h.fits = !1 : h.fits = p.fits, "window" == k && (h.fits ? "top" == n || "bottom" == n ? h.whole = c.geo.origin.windowOffset.right >= e.__options.minIntersection && c.geo.window.size.width - c.geo.origin.windowOffset.left >= e.__options.minIntersection : h.whole = c.geo.origin.windowOffset.bottom >= e.__options.minIntersection && c.geo.window.size.height - c.geo.origin.windowOffset.top >= e.__options.minIntersection : h.whole = !1), g.push(h), h.whole) j = !0; | |
| else if ("natural" == h.mode && (h.fits || h.size.width <= c.geo.available[k][n].width)) return !1 | |
| } | |
| }) | |
| } | |
| }), e.__instance._trigger({ | |
| edit: function(a) { | |
| g = a | |
| }, | |
| event: b, | |
| helper: c, | |
| results: g, | |
| type: "positionTested" | |
| }), g.sort(function(a, b) { | |
| if (a.whole && !b.whole) return -1; | |
| if (!a.whole && b.whole) return 1; | |
| if (a.whole && b.whole) { | |
| var c = e.__options.side.indexOf(a.side), | |
| d = e.__options.side.indexOf(b.side); | |
| return d > c ? -1 : c > d ? 1 : "natural" == a.mode ? -1 : 1 | |
| } | |
| if (a.fits && !b.fits) return -1; | |
| if (!a.fits && b.fits) return 1; | |
| if (a.fits && b.fits) { | |
| var c = e.__options.side.indexOf(a.side), | |
| d = e.__options.side.indexOf(b.side); | |
| return d > c ? -1 : c > d ? 1 : "natural" == a.mode ? -1 : 1 | |
| } | |
| return "document" == a.container && "bottom" == a.side && "natural" == a.mode ? -1 : 1 | |
| }), d = g[0], d.coord = {}, d.side) { | |
| case "left": | |
| case "right": | |
| d.coord.top = Math.floor(d.target - d.size.height / 2); | |
| break; | |
| case "bottom": | |
| case "top": | |
| d.coord.left = Math.floor(d.target - d.size.width / 2) | |
| } | |
| switch (d.side) { | |
| case "left": | |
| d.coord.left = c.geo.origin.windowOffset.left - d.outerSize.width; | |
| break; | |
| case "right": | |
| d.coord.left = c.geo.origin.windowOffset.right + d.distance.horizontal; | |
| break; | |
| case "top": | |
| d.coord.top = c.geo.origin.windowOffset.top - d.outerSize.height; | |
| break; | |
| case "bottom": | |
| d.coord.top = c.geo.origin.windowOffset.bottom + d.distance.vertical | |
| } | |
| "window" == d.container ? "top" == d.side || "bottom" == d.side ? d.coord.left < 0 ? c.geo.origin.windowOffset.right - this.__options.minIntersection >= 0 ? d.coord.left = 0 : d.coord.left = c.geo.origin.windowOffset.right - this.__options.minIntersection - 1 : d.coord.left > c.geo.window.size.width - d.size.width && (c.geo.origin.windowOffset.left + this.__options.minIntersection <= c.geo.window.size.width ? d.coord.left = c.geo.window.size.width - d.size.width : d.coord.left = c.geo.origin.windowOffset.left + this.__options.minIntersection + 1 - d.size.width) : d.coord.top < 0 ? c.geo.origin.windowOffset.bottom - this.__options.minIntersection >= 0 ? d.coord.top = 0 : d.coord.top = c.geo.origin.windowOffset.bottom - this.__options.minIntersection - 1 : d.coord.top > c.geo.window.size.height - d.size.height && (c.geo.origin.windowOffset.top + this.__options.minIntersection <= c.geo.window.size.height ? d.coord.top = c.geo.window.size.height - d.size.height : d.coord.top = c.geo.origin.windowOffset.top + this.__options.minIntersection + 1 - d.size.height) : (d.coord.left > c.geo.window.size.width - d.size.width && (d.coord.left = c.geo.window.size.width - d.size.width), d.coord.left < 0 && (d.coord.left = 0)), e.__sideChange(h, d.side), c.tooltipClone = h[0], c.tooltipParent = e.__instance.option("parent").parent[0], c.mode = d.mode, c.whole = d.whole, c.origin = e.__instance._$origin[0], c.tooltip = e.__instance._$tooltip[0], delete d.container, delete d.fits, delete d.mode, delete d.outerSize, delete d.whole, d.distance = d.distance.horizontal || d.distance.vertical; | |
| var l = a.extend(!0, {}, d); | |
| if (e.__instance._trigger({ | |
| edit: function(a) { | |
| d = a | |
| }, | |
| event: b, | |
| helper: c, | |
| position: l, | |
| type: "position" | |
| }), e.__options.functionPosition) { | |
| var m = e.__options.functionPosition.call(e, e.__instance, c, l); | |
| m && (d = m) | |
| } | |
| i.destroy(); | |
| var n, o; | |
| "top" == d.side || "bottom" == d.side ? (n = { | |
| prop: "left", | |
| val: d.target - d.coord.left | |
| }, o = d.size.width - this.__options.minIntersection) : (n = { | |
| prop: "top", | |
| val: d.target - d.coord.top | |
| }, o = d.size.height - this.__options.minIntersection), n.val < this.__options.minIntersection ? n.val = this.__options.minIntersection : n.val > o && (n.val = o); | |
| var p; | |
| p = c.geo.origin.fixedLineage ? c.geo.origin.windowOffset : { | |
| left: c.geo.origin.windowOffset.left + c.geo.window.scroll.left, | |
| top: c.geo.origin.windowOffset.top + c.geo.window.scroll.top | |
| }, d.coord = { | |
| left: p.left + (d.coord.left - c.geo.origin.windowOffset.left), | |
| top: p.top + (d.coord.top - c.geo.origin.windowOffset.top) | |
| }, e.__sideChange(e.__instance._$tooltip, d.side), c.geo.origin.fixedLineage ? e.__instance._$tooltip.css("position", "fixed") : e.__instance._$tooltip.css("position", ""), e.__instance._$tooltip.css({ | |
| left: d.coord.left, | |
| top: d.coord.top, | |
| height: d.size.height, | |
| width: d.size.width | |
| }).find(".tooltipster-arrow").css({ | |
| left: "", | |
| top: "" | |
| }).css(n.prop, n.val), e.__instance._$tooltip.appendTo(e.__instance.option("parent")), e.__instance._trigger({ | |
| type: "repositioned", | |
| event: b, | |
| position: d | |
| }) | |
| }, | |
| __sideChange: function(a, b) { | |
| a.removeClass("tooltipster-bottom").removeClass("tooltipster-left").removeClass("tooltipster-right").removeClass("tooltipster-top").addClass("tooltipster-" + b) | |
| }, | |
| __targetFind: function(a) { | |
| var b = {}, | |
| c = this.__instance._$origin[0].getClientRects(); | |
| if (c.length > 1) { | |
| var d = this.__instance._$origin.css("opacity"); | |
| 1 == d && (this.__instance._$origin.css("opacity", .99), c = this.__instance._$origin[0].getClientRects(), this.__instance._$origin.css("opacity", 1)) | |
| } | |
| if (c.length < 2) b.top = Math.floor(a.geo.origin.windowOffset.left + a.geo.origin.size.width / 2), b.bottom = b.top, b.left = Math.floor(a.geo.origin.windowOffset.top + a.geo.origin.size.height / 2), b.right = b.left; | |
| else { | |
| var e = c[0]; | |
| b.top = Math.floor(e.left + (e.right - e.left) / 2), e = c.length > 2 ? c[Math.ceil(c.length / 2) - 1] : c[0], b.right = Math.floor(e.top + (e.bottom - e.top) / 2), e = c[c.length - 1], b.bottom = Math.floor(e.left + (e.right - e.left) / 2), e = c.length > 2 ? c[Math.ceil((c.length + 1) / 2) - 1] : c[c.length - 1], b.left = Math.floor(e.top + (e.bottom - e.top) / 2) | |
| } | |
| return b | |
| } | |
| } | |
| }), a | |
| }); | |
| /** | |
| * jQuery.marquee - scrolling text like old marquee element | |
| * @author Aamir Afridi - aamirafridi(at)gmail(dot)com / http://aamirafridi.com/jquery/jquery-marquee-plugin | |
| */ | |
| (function(f) { | |
| f.fn.marquee = function(x) { | |
| return this.each(function() { | |
| var a = f.extend({}, f.fn.marquee.defaults, x), | |
| b = f(this), | |
| c, t, e = 3, | |
| y = "animation-play-state", | |
| p = !1, | |
| E = function(a, b, c) { | |
| for (var e = ["webkit", "moz", "MS", "o", ""], d = 0; d < e.length; d++) e[d] || (b = b.toLowerCase()), a.addEventListener(e[d] + b, c, !1) | |
| }, | |
| F = function(a) { | |
| var b = [], | |
| c; | |
| for (c in a) a.hasOwnProperty(c) && b.push(c + ":" + a[c]); | |
| b.push(); | |
| return "{" + b.join(",") + "}" | |
| }, | |
| l = { | |
| pause: function() { | |
| p && a.allowCss3Support ? c.css(y, "paused") : f.fn.pause && c.pause(); | |
| b.data("runningStatus", | |
| "paused"); | |
| b.trigger("paused") | |
| }, | |
| resume: function() { | |
| p && a.allowCss3Support ? c.css(y, "running") : f.fn.resume && c.resume(); | |
| b.data("runningStatus", "resumed"); | |
| b.trigger("resumed") | |
| }, | |
| toggle: function() { | |
| l["resumed" == b.data("runningStatus") ? "pause" : "resume"]() | |
| }, | |
| destroy: function() { | |
| clearTimeout(b.timer); | |
| b.find("*").addBack().unbind(); | |
| b.html(b.find(".js-marquee:first").html()) | |
| } | |
| }; | |
| if ("string" === typeof x) f.isFunction(l[x]) && (c || (c = b.find(".js-marquee-wrapper")), !0 === b.data("css3AnimationIsSupported") && (p = !0), l[x]()); | |
| else { | |
| var u; | |
| f.each(a, function(c, d) { | |
| u = b.attr("data-" + c); | |
| if ("undefined" !== typeof u) { | |
| switch (u) { | |
| case "true": | |
| u = !0; | |
| break; | |
| case "false": | |
| u = !1 | |
| } | |
| a[c] = u | |
| } | |
| }); | |
| a.speed && (a.duration = parseInt(b.width(), 10) / a.speed * 1E3); | |
| var v = "up" == a.direction || "down" == a.direction; | |
| a.gap = a.duplicated ? parseInt(a.gap) : 0; | |
| b.wrapInner('<div class="js-marquee"></div>'); | |
| var h = b.find(".js-marquee").css({ | |
| "margin-right": a.gap, | |
| "float": "left" | |
| }); | |
| a.duplicated && h.clone(!0).appendTo(b); | |
| b.wrapInner('<div style="width:100000px" class="js-marquee-wrapper"></div>'); | |
| c = b.find(".js-marquee-wrapper"); | |
| if (v) { | |
| var k = b.height(); | |
| c.removeAttr("style"); | |
| b.height(k); | |
| b.find(".js-marquee").css({ | |
| "float": "none", | |
| "margin-bottom": a.gap, | |
| "margin-right": 0 | |
| }); | |
| a.duplicated && b.find(".js-marquee:last").css({ | |
| "margin-bottom": 0 | |
| }); | |
| var q = b.find(".js-marquee:first").height() + a.gap; | |
| a.startVisible && !a.duplicated ? (a._completeDuration = (parseInt(q, 10) + parseInt(k, 10)) / parseInt(k, 10) * a.duration, a.duration *= parseInt(q, 10) / parseInt(k, 10)) : a.duration *= (parseInt(q, 10) + parseInt(k, 10)) / parseInt(k, 10) | |
| } else { | |
| var m = | |
| b.find(".js-marquee:first").width() + a.gap; | |
| var n = b.width(); | |
| a.startVisible && !a.duplicated ? (a._completeDuration = (parseInt(m, 10) + parseInt(n, 10)) / parseInt(n, 10) * a.duration, a.duration *= parseInt(m, 10) / parseInt(n, 10)) : a.duration *= (parseInt(m, 10) + parseInt(n, 10)) / parseInt(n, 10) | |
| } | |
| a.duplicated && (a.duration /= 2); | |
| if (a.allowCss3Support) { | |
| h = document.body || document.createElement("div"); | |
| var g = "marqueeAnimation-" + Math.floor(1E7 * Math.random()), | |
| A = ["Webkit", "Moz", "O", "ms", "Khtml"], | |
| B = "animation", | |
| d = "", | |
| r = ""; | |
| h.style.animation && | |
| (r = "@keyframes " + g + " ", p = !0); | |
| if (!1 === p) | |
| for (var z = 0; z < A.length; z++) | |
| if (void 0 !== h.style[A[z] + "AnimationName"]) { | |
| h = "-" + A[z].toLowerCase() + "-"; | |
| B = h + B; | |
| y = h + y; | |
| r = "@" + h + "keyframes " + g + " "; | |
| p = !0; | |
| break | |
| } | |
| p && (d = g + " " + a.duration / 1E3 + "s " + a.delayBeforeStart / 1E3 + "s infinite " + a.css3easing, b.data("css3AnimationIsSupported", !0)) | |
| } | |
| var C = function() { | |
| c.css("transform", "translateY(" + ("up" == a.direction ? k + "px" : "-" + q + "px") + ")") | |
| }, | |
| D = function() { | |
| c.css("transform", "translateX(" + ("left" == a.direction ? n + "px" : "-" + m + "px") + ")") | |
| }; | |
| a.duplicated ? | |
| (v ? a.startVisible ? c.css("transform", "translateY(0)") : c.css("transform", "translateY(" + ("up" == a.direction ? k + "px" : "-" + (2 * q - a.gap) + "px") + ")") : a.startVisible ? c.css("transform", "translateX(0)") : c.css("transform", "translateX(" + ("left" == a.direction ? n + "px" : "-" + (2 * m - a.gap) + "px") + ")"), a.startVisible || (e = 1)) : a.startVisible ? e = 2 : v ? C() : D(); | |
| var w = function() { | |
| a.duplicated && (1 === e ? (a._originalDuration = a.duration, a.duration = v ? "up" == a.direction ? a.duration + k / (q / a.duration) : 2 * a.duration : "left" == a.direction ? a.duration + n / | |
| (m / a.duration) : 2 * a.duration, d && (d = g + " " + a.duration / 1E3 + "s " + a.delayBeforeStart / 1E3 + "s " + a.css3easing), e++) : 2 === e && (a.duration = a._originalDuration, d && (g += "0", r = f.trim(r) + "0 ", d = g + " " + a.duration / 1E3 + "s 0s infinite " + a.css3easing), e++)); | |
| v ? a.duplicated ? (2 < e && c.css("transform", "translateY(" + ("up" == a.direction ? 0 : "-" + q + "px") + ")"), t = { | |
| transform: "translateY(" + ("up" == a.direction ? "-" + q + "px" : 0) + ")" | |
| }) : a.startVisible ? 2 === e ? (d && (d = g + " " + a.duration / 1E3 + "s " + a.delayBeforeStart / 1E3 + "s " + a.css3easing), t = { | |
| transform: "translateY(" + | |
| ("up" == a.direction ? "-" + q + "px" : k + "px") + ")" | |
| }, e++) : 3 === e && (a.duration = a._completeDuration, d && (g += "0", r = f.trim(r) + "0 ", d = g + " " + a.duration / 1E3 + "s 0s infinite " + a.css3easing), C()) : (C(), t = { | |
| transform: "translateY(" + ("up" == a.direction ? "-" + c.height() + "px" : k + "px") + ")" | |
| }) : a.duplicated ? (2 < e && c.css("transform", "translateX(" + ("left" == a.direction ? 0 : "-" + m + "px") + ")"), t = { | |
| transform: "translateX(" + ("left" == a.direction ? "-" + m + "px" : 0) + ")" | |
| }) : a.startVisible ? 2 === e ? (d && (d = g + " " + a.duration / 1E3 + "s " + a.delayBeforeStart / 1E3 + "s " + a.css3easing), | |
| t = { | |
| transform: "translateX(" + ("left" == a.direction ? "-" + m + "px" : n + "px") + ")" | |
| }, e++) : 3 === e && (a.duration = a._completeDuration, d && (g += "0", r = f.trim(r) + "0 ", d = g + " " + a.duration / 1E3 + "s 0s infinite " + a.css3easing), D()) : (D(), t = { | |
| transform: "translateX(" + ("left" == a.direction ? "-" + m + "px" : n + "px") + ")" | |
| }); | |
| b.trigger("beforeStarting"); | |
| if (p) { | |
| c.css(B, d); | |
| var h = r + " { 100% " + F(t) + "}", | |
| l = c.find("style"); | |
| 0 !== l.length ? l.filter(":last").html(h) : f("head").append("<style>" + h + "</style>"); | |
| E(c[0], "AnimationIteration", function() { | |
| b.trigger("finished") | |
| }); | |
| E(c[0], "AnimationEnd", function() { | |
| w(); | |
| b.trigger("finished") | |
| }) | |
| } else c.animate(t, a.duration, a.easing, function() { | |
| b.trigger("finished"); | |
| a.pauseOnCycle ? b.timer = setTimeout(w, a.delayBeforeStart) : w() | |
| }); | |
| b.data("runningStatus", "resumed") | |
| }; | |
| b.bind("pause", l.pause); | |
| b.bind("resume", l.resume); | |
| a.pauseOnHover && (b.bind("mouseenter", l.pause), b.bind("mouseleave", l.resume)); | |
| p && a.allowCss3Support ? w() : b.timer = setTimeout(w, a.delayBeforeStart) | |
| } | |
| }) | |
| }; | |
| f.fn.marquee.defaults = { | |
| allowCss3Support: !0, | |
| css3easing: "linear", | |
| easing: "linear", | |
| delayBeforeStart: 1E3, | |
| direction: "left", | |
| duplicated: !1, | |
| duration: 5E3, | |
| gap: 20, | |
| pauseOnCycle: !1, | |
| pauseOnHover: !1, | |
| startVisible: !1 | |
| } | |
| })(jQuery); |