/*! Waypoints - 4.0.0 Copyright 漏 2011-2015 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.invokeAll("enable"); }), (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), 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); t && e && (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], 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 = 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)); })();