(function () { var a, b, c, d, e, f = function (a, b) { return function () { return a.apply(b, arguments) } }, g = [].indexof || function (a) { for (var b = 0, c = this.length; c > b; b++) { if (b in this && this[b] === a) { return b } } return -1 }; b = function () { function a() { } return a.prototype.extend = function (a, b) { var c, d; for (c in b) { d = b[c], null == a[c] && (a[c] = d) } return a }, a.prototype.ismobile = function (a) { return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(a) }, a.prototype.createevent = function (a, b, c, d) { var e; return null == b && (b = !1), null == c && (c = !1), null == d && (d = null), null != document.createevent ? (e = document.createevent("customevent"), e.initcustomevent(a, b, c, d)) :null != document.createeventobject ? (e = document.createeventobject(), e.eventtype = a) :e.eventname = a, e }, a.prototype.emitevent = function (a, b) { return null != a.dispatchevent ? a.dispatchevent(b) :b in (null != a) ? a[b]() :"on" + b in (null != a) ? a["on" + b]() :void 0 }, a.prototype.addevent = function (a, b, c) { return null != a.addeventlistener ? a.addeventlistener(b, c, !1) :null != a.attachevent ? a.attachevent("on" + b, c) :a[b] = c }, a.prototype.removeevent = function (a, b, c) { return null != a.removeeventlistener ? a.removeeventlistener(b, c, !1) :null != a.detachevent ? a.detachevent("on" + b, c) :delete a[b] }, a.prototype.innerheight = function () { return "innerheight" in window ? window.innerheight :document.documentelement.clientheight }, a }(), c = this.weakmap || this.mozweakmap || (c = function () { function a() { this.keys = [], this.values = [] } return a.prototype.get = function (a) { var b, c, d, e, f; for (f = this.keys, b = d = 0, e = f.length; e > d; b = ++d) { if (c = f[b], c === a) { return this.values[b] } } }, a.prototype.set = function (a, b) { var c, d, e, f, g; for (g = this.keys, c = e = 0, f = g.length; f > e; c = ++e) { if (d = g[c], d === a) { return void (this.values[c] = b) } } return this.keys.push(a), this.values.push(b) }, a }()), a = this.mutationobserver || this.webkitmutationobserver || this.mozmutationobserver || (a = function () { function a() { "undefined" != typeof console && null !== console, "undefined" != typeof console && null !== console } return a.notsupported = !0, a.prototype.observe = function () { }, a }()), d = this.getcomputedstyle || function (a, b) { return this.getpropertyvalue = function (b) { var c; return "float" === b && (b = "stylefloat"), e.test(b) && b.replace(e, function (a, b) { return b.touppercase() }), (null != (c = a.currentstyle) ? c[b] :void 0) || null }, this }, e = /(\-([a-z]){1})/g, this.kyanimate = function () { function e(a) { null == a && (a = {}), this.scrollcallback = f(this.scrollcallback, this), this.scrollhandler = f(this.scrollhandler, this), this.resetanimation = f(this.resetanimation, this), this.start = f(this.start, this), this.scrolled = !0, this.config = this.util().extend(a, this.defaults), null != a.scrollcontainer && (this.config.scrollcontainer = document.queryselector(a.scrollcontainer)), this.animationnamecache = new c, this.kyevent = this.util().createevent(this.config.boxclass) } return e.prototype.defaults = { boxclass:"ky", animateclass:"animated", offset:0, mobile:!0, live:!0, callback:null, scrollcontainer:null }, e.prototype.init = function () { var a; return this.element = window.document.documentelement, "interactive" === (a = document.readystate) || "complete" === a ? this.start() :this.util().addevent(document, "domcontentloaded", this.start), this.finished = [] }, e.prototype.start = function () { var b, c, d, e; if (this.stopped = !1, this.boxes = function () { var a, c, d, e; for (d = this.element.queryselectorall("." + this.config.boxclass), e = [], a = 0, c = d.length; c > a; a++) { b = d[a], e.push(b) } return e }.call(this), this.all = function () { var a, c, d, e; for (d = this.boxes, e = [], a = 0, c = d.length; c > a; a++) { b = d[a], e.push(b) } return e }.call(this), this.boxes.length) { if (this.disabled()) { this.resetstyle() } else { for (e = this.boxes, c = 0, d = e.length; d > c; c++) { b = e[c], this.applystyle(b, !0) } } } return this.disabled() || (this.util().addevent(this.config.scrollcontainer || window, "scroll", this.scrollhandler), this.util().addevent(window, "resize", this.scrollhandler), this.interval = setinterval(this.scrollcallback, 50)), this.config.live ? new a(function (a) { return function (b) { var c, d, e, f, g; for (g = [], c = 0, d = b.length; d > c; c++) { f = b[c], g.push(function () { var a, b, c, d; for (c = f.addednodes || [], d = [], a = 0, b = c.length; b > a; a++) { e = c[a], d.push(this.dosync(e)) } return d }.call(a)) } return g } }(this)).observe(document.body, { childlist:!0, subtree:!0 }) :void 0 }, e.prototype.stop = function () { return this.stopped = !0, this.util().removeevent(this.config.scrollcontainer || window, "scroll", this.scrollhandler), this.util().removeevent(window, "resize", this.scrollhandler), null != this.interval ? clearinterval(this.interval) :void 0 }, e.prototype.sync = function (b) { return a.notsupported ? this.dosync(this.element) :void 0 }, e.prototype.dosync = function (a) { var b, c, d, e, f; if (null == a && (a = this.element), 1 === a.nodetype) { for (a = a.parentnode || a, e = a.queryselectorall("." + this.config.boxclass), f = [], c = 0, d = e.length; d > c; c++) { b = e[c], g.call(this.all, b) < 0 ? (this.boxes.push(b), this.all.push(b), this.stopped || this.disabled() ? this.resetstyle() :this.applystyle(b, !0), f.push(this.scrolled = !0)) :f.push(void 0) } return f } }, e.prototype.show = function (a) { return this.applystyle(a), a.classname = a.classname + " " + this.config.animateclass, null != this.config.callback && this.config.callback(a), this.util().emitevent(a, this.kyevent), this.util().addevent(a, "animationend", this.resetanimation), this.util().addevent(a, "oanimationend", this.resetanimation), this.util().addevent(a, "webkitanimationend", this.resetanimation), this.util().addevent(a, "msanimationend", this.resetanimation), a }, e.prototype.applystyle = function (a, b) { var c, d, e; return d = a.getattribute("data-ky-duration"), c = a.getattribute("data-ky-delay"), e = a.getattribute("data-ky-iteration"), this.animate(function (f) { return function () { return f.customstyle(a, b, d, c, e) } }(this)) }, e.prototype.animate = function () { return "requestanimationframe" in window ? function (a) { return window.requestanimationframe(a) } :function (a) { return a() } }(), e.prototype.resetstyle = function () { var a, b, c, d, e; for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++) { a = d[b], e.push(a.style.visibility = "visible") } return e }, e.prototype.resetanimation = function (a) { var b; return a.type.tolowercase().indexof("animationend") >= 0 ? (b = a.target || a.srcelement, b.classname = b.classname.replace(this.config.animateclass, "").trim()) :void 0 }, e.prototype.customstyle = function (a, b, c, d, e) { return b && this.cacheanimationname(a), a.style.visibility = b ? "hidden" :"visible", c && this.vendorset(a.style, { animationduration:c }), d && this.vendorset(a.style, { animationdelay:d }), e && this.vendorset(a.style, { animationiterationcount:e }), this.vendorset(a.style, { animationname:b ? "none" :this.cachedanimationname(a) }), a }, e.prototype.vendors = ["moz", "webkit"], e.prototype.vendorset = function (a, b) { var c, d, e, f; d = []; for (c in b) { e = b[c], a["" + c] = e, d.push(function () { var b, d, g, h; for (g = this.vendors, h = [], b = 0, d = g.length; d > b; b++) { f = g[b], h.push(a["" + f + c.charat(0).touppercase() + c.substr(1)] = e) } return h }.call(this)) } return d }, e.prototype.vendorcss = function (a, b) { var c, e, f, g, h, i; for (h = d(a), g = h.getpropertycssvalue(b), f = this.vendors, c = 0, e = f.length; e > c; c++) { i = f[c], g = g || h.getpropertycssvalue("-" + i + "-" + b) } return g }, e.prototype.animationname = function (a) { var b; try { b = this.vendorcss(a, "animation-name").csstext } catch (c) { b = d(a).getpropertyvalue("animation-name") } return "none" === b ? "" :b }, e.prototype.cacheanimationname = function (a) { return this.animationnamecache.set(a, this.animationname(a)) }, e.prototype.cachedanimationname = function (a) { return this.animationnamecache.get(a) }, e.prototype.scrollhandler = function () { return this.scrolled = !0 }, e.prototype.scrollcallback = function () { var a; return !this.scrolled || (this.scrolled = !1, this.boxes = function () { var b, c, d, e; for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++) { a = d[b], a && (this.isvisible(a) ? this.show(a) :e.push(a)) } return e }.call(this), this.boxes.length || this.config.live) ? void 0 :this.stop() }, e.prototype.offsettop = function (a) { for (var b; void 0 === a.offsettop;) { a = a.parentnode } for (b = a.offsettop; a = a.offsetparent;) { b += a.offsettop } return b }, e.prototype.isvisible = function (a) { var b, c, d, e, f; return c = a.getattribute("data-ky-offset") || this.config.offset, f = this.config.scrollcontainer && this.config.scrollcontainer.scrolltop || window.pageyoffset, e = f + math.min(this.element.clientheight, this.util().innerheight()) - c, d = this.offsettop(a), b = d + a.clientheight, e >= d && b >= f }, e.prototype.util = function () { return null != this._util ? this._util :this._util = new b }, e.prototype.disabled = function () { return !this.config.mobile && this.util().ismobile(navigator.useragent) }, e }() }).call(this);;