/*! * imagesLoaded PACKAGED v3.0.4 * JavaScript is all like "You images are done yet or what?" */ (function () { "use strict"; function e() { } function t(e, t) { for (var n = e.length; n--;)if (e[n].listener === t)return n; return -1 } var n = e.prototype; n.getListeners = function (e) { var t, n, i = this._getEvents(); if ("object" == typeof e) { t = {}; for (n in i)i.hasOwnProperty(n) && e.test(n) && (t[n] = i[n]) } else t = i[e] || (i[e] = []); return t }, n.flattenListeners = function (e) { var t, n = []; for (t = 0; e.length > t; t += 1)n.push(e[t].listener); return n }, n.getListenersAsObject = function (e) { var t, n = this.getListeners(e); return n instanceof Array && (t = {}, t[e] = n), t || n }, n.addListener = function (e, n) { var i, r = this.getListenersAsObject(e), o = "object" == typeof n; for (i in r)r.hasOwnProperty(i) && -1 === t(r[i], n) && r[i].push(o ? n : {listener: n, once: !1}); return this }, n.on = n.addListener, n.addOnceListener = function (e, t) { return this.addListener(e, {listener: t, once: !0}) }, n.once = n.addOnceListener, n.defineEvent = function (e) { return this.getListeners(e), this }, n.defineEvents = function (e) { for (var t = 0; e.length > t; t += 1)this.defineEvent(e[t]); return this }, n.removeListener = function (e, n) { var i, r, o = this.getListenersAsObject(e); for (r in o)o.hasOwnProperty(r) && (i = t(o[r], n), -1 !== i && o[r].splice(i, 1)); return this }, n.off = n.removeListener, n.addListeners = function (e, t) { return this.manipulateListeners(!1, e, t) }, n.removeListeners = function (e, t) { return this.manipulateListeners(!0, e, t) }, n.manipulateListeners = function (e, t, n) { var i, r, o = e ? this.removeListener : this.addListener, s = e ? this.removeListeners : this.addListeners; if ("object" != typeof t || t instanceof RegExp)for (i = n.length; i--;)o.call(this, t, n[i]); else for (i in t)t.hasOwnProperty(i) && (r = t[i]) && ("function" == typeof r ? o.call(this, i, r) : s.call(this, i, r)); return this }, n.removeEvent = function (e) { var t, n = typeof e, i = this._getEvents(); if ("string" === n)delete i[e]; else if ("object" === n)for (t in i)i.hasOwnProperty(t) && e.test(t) && delete i[t]; else delete this._events; return this }, n.emitEvent = function (e, t) { var n, i, r, o, s = this.getListenersAsObject(e); for (r in s)if (s.hasOwnProperty(r))for (i = s[r].length; i--;)n = s[r][i], o = n.listener.apply(this, t || []), (o === this._getOnceReturnValue() || n.once === !0) && this.removeListener(e, s[r][i].listener); return this }, n.trigger = n.emitEvent, n.emit = function (e) { var t = Array.prototype.slice.call(arguments, 1); return this.emitEvent(e, t) }, n.setOnceReturnValue = function (e) { return this._onceReturnValue = e, this }, n._getOnceReturnValue = function () { return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : !0 }, n._getEvents = function () { return this._events || (this._events = {}) }, "function" == typeof define && define.amd ? define(function () { return e }) : "undefined" != typeof module && module.exports ? module.exports = e : this.EventEmitter = e }).call(this), function (e) { "use strict"; var t = document.documentElement, n = function () { }; t.addEventListener ? n = function (e, t, n) { e.addEventListener(t, n, !1) } : t.attachEvent && (n = function (t, n, i) { t[n + i] = i.handleEvent ? function () { var t = e.event; t.target = t.target || t.srcElement, i.handleEvent.call(i, t) } : function () { var n = e.event; n.target = n.target || n.srcElement, i.call(t, n) }, t.attachEvent("on" + n, t[n + i]) }); var i = function () { }; t.removeEventListener ? i = function (e, t, n) { e.removeEventListener(t, n, !1) } : t.detachEvent && (i = function (e, t, n) { e.detachEvent("on" + t, e[t + n]); try { delete e[t + n] } catch (i) { e[t + n] = void 0 } }); var r = {bind: n, unbind: i}; "function" == typeof define && define.amd ? define(r) : e.eventie = r }(this), function (e) { "use strict"; function t(e, t) { for (var n in t)e[n] = t[n]; return e } function n(e) { return "[object Array]" === c.call(e) } function i(e) { var t = []; if (n(e))t = e; else if ("number" == typeof e.length)for (var i = 0, r = e.length; r > i; i++)t.push(e[i]); else t.push(e); return t } function r(e, n) { function r(e, n, s) { if (!(this instanceof r))return new r(e, n); "string" == typeof e && (e = document.querySelectorAll(e)), this.elements = i(e), this.options = t({}, this.options), "function" == typeof n ? s = n : t(this.options, n), s && this.on("always", s), this.getImages(), o && (this.jqDeferred = new o.Deferred); var a = this; setTimeout(function () { a.check() }) } function c(e) { this.img = e } r.prototype = new e, r.prototype.options = {}, r.prototype.getImages = function () { this.images = []; for (var e = 0, t = this.elements.length; t > e; e++) { var n = this.elements[e]; "IMG" === n.nodeName && this.addImage(n); for (var i = n.querySelectorAll("img"), r = 0, o = i.length; o > r; r++) { var s = i[r]; this.addImage(s) } } }, r.prototype.addImage = function (e) { var t = new c(e); this.images.push(t) }, r.prototype.check = function () { function e(e, r) { return t.options.debug && a && s.log("confirm", e, r), t.progress(e), n++, n === i && t.complete(), !0 } var t = this, n = 0, i = this.images.length; if (this.hasAnyBroken = !1, !i)return this.complete(), void 0; for (var r = 0; i > r; r++) { var o = this.images[r]; o.on("confirm", e), o.check() } }, r.prototype.progress = function (e) { this.hasAnyBroken = this.hasAnyBroken || !e.isLoaded; var t = this; setTimeout(function () { t.emit("progress", t, e), t.jqDeferred && t.jqDeferred.notify(t, e) }) }, r.prototype.complete = function () { var e = this.hasAnyBroken ? "fail" : "done"; this.isComplete = !0; var t = this; setTimeout(function () { if (t.emit(e, t), t.emit("always", t), t.jqDeferred) { var n = t.hasAnyBroken ? "reject" : "resolve"; t.jqDeferred[n](t) } }) }, o && (o.fn.imagesLoaded = function (e, t) { var n = new r(this, e, t); return n.jqDeferred.promise(o(this)) }); var f = {}; return c.prototype = new e, c.prototype.check = function () { var e = f[this.img.src]; if (e)return this.useCached(e), void 0; if (f[this.img.src] = this, this.img.complete && void 0 !== this.img.naturalWidth)return this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), void 0; var t = this.proxyImage = new Image; n.bind(t, "load", this), n.bind(t, "error", this), t.src = this.img.src }, c.prototype.useCached = function (e) { if (e.isConfirmed)this.confirm(e.isLoaded, "cached was confirmed"); else { var t = this; e.on("confirm", function (e) { return t.confirm(e.isLoaded, "cache emitted confirmed"), !0 }) } }, c.prototype.confirm = function (e, t) { this.isConfirmed = !0, this.isLoaded = e, this.emit("confirm", this, t) }, c.prototype.handleEvent = function (e) { var t = "on" + e.type; this[t] && this[t](e) }, c.prototype.onload = function () { this.confirm(!0, "onload"), this.unbindProxyEvents() }, c.prototype.onerror = function () { this.confirm(!1, "onerror"), this.unbindProxyEvents() }, c.prototype.unbindProxyEvents = function () { n.unbind(this.proxyImage, "load", this), n.unbind(this.proxyImage, "error", this) }, r } var o = e.jQuery, s = e.console, a = s !== void 0, c = Object.prototype.toString; "function" == typeof define && define.amd ? define(["eventEmitter/EventEmitter", "eventie/eventie"], r) : e.imagesLoaded = r(e.EventEmitter, e.eventie) }(window);