/*! skrollr 0.6.30 (2015-08-12) | alexander prinzhorn - https://github.com/prinzhorn/skrollr | free to use under terms of mit license */ !function(a, b, c) { "use strict"; function d(c) { if (e = b.documentelement, f = b.body, t(), ha = this, c = c || {}, ma = c.constants || {}, c.easing) for (var d in c.easing) w[d] = c.easing[d]; ta = c.edgestrategy || "set", ka = { beforerender: c.beforerender, render: c.render, keyframe: c.keyframe }, la = c.forceheight !== !1, la && (ka = c.scale || 1), na = c.mobiledeceleration || y, pa = c.smoothscrolling !== !1, qa = c.smoothscrollingduration || a, ra = { targettop: ha.getscrolltop() }, sa = (c.mobilecheck || function() { return false } )(), sa ? (ja = b.getelementbyid(c.skrollrbody || z), ja && ga(), x(), ea(e, [s, v], [t])) : ea(e, [s, u], [t]), ha.refresh(), wa(a, "resize orientationchange", function() { var a = e.clientwidth , b = e.clientheight; (b !== pa || a !== oa) && (pa = b, oa = a, qa = !0) }); var g = u(); return function h() { $(), va = g(h) }(), ha } var e, f, g = { get: function() { return ha }, init: function(a) { return ha || new d(a) }, version: "0.6.30" }, h = object.prototype.hasownproperty, i = a.math, j = a.getcomputedstyle, k = "touchstart", l = "touchmove", m = "touchcancel", n = "touchend", o = "skrollable", p = o + "-before", q = o + "-between", r = o + "-after", s = "skrollr", t = "no-" + s, u = s + "-desktop", v = s + "-mobile", w = "linear", x = 1e3, y = .004, z = "skrollr-body", a = 200, b = "start", c = "end", d = "center", e = "bottom", f = "___skrollable_id", g = /^(?:input|textarea|button|select)$/i, h = /^\s+|\s+$/g, i = /^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/, j = /\s*(@?[\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi, k = /^(@?[a-z\-]+)\[(\w+)\]$/, l = /-([a-z0-9_])/g, m = function(a, b) { return b.touppercase() }, n = /[\-+]?[\d]*\.?[\d]+/g, o = /\{\?\}/g, p = /rgba?\(\s*-?\d+\s*,\s*-?\d+\s*,\s*-?\d+/g, q = /[a-z\-]+-gradient/g, r = "", s = "", t = function() { var a = /^(?:o|moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/; if (j) { var b = j(f, null); for (var c in b) if (r = c.match(a) || +c == c && b[c].match(a)) break; if (!r) return void (r = s = ""); r = r[0], "-" === r.slice(0, 1) ? (s = r, r = { "-webkit-": "webkit", "-moz-": "moz", "-ms-": "ms", "-o-": "o" }[r]) : s = "-" + r.tolowercase() + "-" } }, u = function() { var b = a.requestanimationframe || a[r.tolowercase() + "requestanimationframe"] , c = ha(); return (sa || !b) && (b = function(b) { var d = ha() - c , e = i.max(0, 1e3 / 60 - d); return a.settimeout(function() { c = ha(), b() }, e) } ), b }, v = function() { var b = a.cancelanimationframe || a[r.tolowercase() + "cancelanimationframe"]; return (sa || !b) && (b = function(b) { return a.cleartimeout(b) } ), b }, w = { begin: function() { return 0 }, end: function() { return 1 }, linear: function(a) { return a }, quadratic: function(a) { return a * a }, cubic: function(a) { return a * a * a }, swing: function(a) { return -i.cos(a * i.pi) / 2 + .5 }, sqrt: function(a) { return i.sqrt(a) }, outcubic: function(a) { return i.pow(a - 1, 3) + 1 }, bounce: function(a) { var b; if (.5083 >= a) b = 3; else if (.8489 >= a) b = 9; else if (.96208 >= a) b = 27; else { if (!(.99981 >= a)) return 1; b = 91 } return 1 - i.abs(3 * i.cos(a * b * 1.028) / b) } }; d.prototype.refresh = function(a) { var d, e, f = !1; for (a === c ? (f = !0, ia = [], ra = 0, a = b.getelementsbytagname("*")) : a.length === c && (a = [a]), d = 0, e = a.length; e > d; d++) { var g = a[d] , h = g , i = [] , j = pa , k = ta , l = !1; if (f && f in g && delete g[f], g.attributes) { for (var m = 0, n = g.attributes.length; n > m; m++) { var p = g.attributes[m]; if ("data-anchor-target" !== p.name) if ("data-smooth-scrolling" !== p.name) if ("data-edge-strategy" !== p.name) if ("data-emit-events" !== p.name) { var q = p.name.match(i); if (null !== q) { var r = { props: p.value, element: g, eventtype: p.name.replace(l, m) }; i.push(r); var s = q[1]; s && (r.constant = s.substr(1)); var t = q[2]; /p$/.test(t) ? (r.ispercentage = !0, r.offset = (0 | t.slice(0, -1)) / 100) : r.offset = 0 | t; var u = q[3] , v = q[4] || u; u && u !== b && u !== c ? (r.mode = "relative", r.anchors = [u, v]) : (r.mode = "absolute", u === c ? r.isend = !0 : r.ispercentage || (r.offset = r.offset * ka)) } } else l = !0; else k = p.value; else j = "off" !== p.value; else if (h = b.queryselector(p.value), null === h) throw 'unable to find anchor target "' + p.value + '"' } if (i.length) { var w, x, y; !f && f in g ? (y = g[f], w = ia[y].styleattr, x = ia[y].classattr) : (y = g[f] = ra++, w = g.style.csstext, x = da(g)), ia[y] = { element: g, styleattr: w, classattr: x, anchortarget: h, keyframes: i, smoothscrolling: j, edgestrategy: k, emitevents: l, lastframeindex: -1 }, ea(g, [o], []) } } } for (aa(), d = 0, e = a.length; e > d; d++) { var z = ia[a[d][f]]; z !== c && (_(z), ba(z)) } return ha } , d.prototype.relativetoabsolute = function(a, b, c) { var d = e.clientheight , f = a.getboundingclientrect() , g = f.top , h = f.bottom - f.top; return b === e ? g -= d : b === d && (g -= d / 2), c === e ? g += h : c === d && (g += h / 2), g += ha.getscrolltop(), g + .5 | 0 } , d.prototype.animateto = function(a, b) { b = b || {}; var d = ha() , e = ha.getscrolltop() , f = b.duration === c ? x : b.duration; return oa = { starttop: e, topdiff: a - e, targettop: a, duration: f, starttime: d, endtime: d + f, easing: w[b.easing || w], done: b.done }, oa.topdiff || (oa.done && oa.done.call(ha, !1), oa = c), ha } , d.prototype.stopanimateto = function() { oa && oa.done && oa.done.call(ha, !0), oa = c } , d.prototype.isanimatingto = function() { return !!oa } , d.prototype.ismobile = function() { return sa } , d.prototype.setscrolltop = function(b, c) { return sa = c === !0, sa ? ta = i.min(i.max(b, 0), ja) : a.scrollto(0, b), ha } , d.prototype.getscrolltop = function() { return sa ? ta : a.pageyoffset || e.scrolltop || f.scrolltop || 0 } , d.prototype.getmaxscrolltop = function() { return ja } , d.prototype.on = function(a, b) { return ka[a] = b, ha } , d.prototype.off = function(a) { return delete ka[a], ha } , d.prototype.destroy = function() { var a = v(); a(va), ya(), ea(e, [t], [s, u, v]); for (var b = 0, d = ia.length; d > b; b++) fa(ia[b].element); e.style.overflow = f.style.overflow = "", e.style.height = f.style.height = "", ja && g.setstyle(ja, "transform", "none"), ha = c, ja = c, ka = c, la = c, ja = 0, ka = 1, ma = c, na = c, la = "down", ma = -1, oa = 0, pa = 0, qa = !1, oa = c, pa = c, qa = c, ra = c, sa = c, ra = 0, ta = c, sa = !1, ta = 0, ua = c } ; var x = function() { var d, g, h, j, o, p, q, r, s, t, u, v; wa(e, [k, l, m, n].join(" "), function(a) { var e = a.changedtouches[0]; for (j = a.target; 3 === j.nodetype; ) j = j.parentnode; switch (o = e.clienty, p = e.clientx, t = a.timestamp, g.test(j.tagname) || a.preventdefault(), a.type) { case k: d && d.blur(), ha.stopanimateto(), d = j, g = q = o, h = p, s = t; break; case l: g.test(j.tagname) && b.activeelement !== j && a.preventdefault(), r = o - q, v = t - u, ha.setscrolltop(ta - r, !0), q = o, u = t; break; default: case m: case n: var f = g - o , w = h - p , x = w * w + f * f; if (49 > x) { if (!g.test(d.tagname)) { d.focus(); var y = b.createevent("mouseevents"); y.initmouseevent("click", !0, !0, a.view, 1, e.screenx, e.screeny, e.clientx, e.clienty, a.ctrlkey, a.altkey, a.shiftkey, a.metakey, 0, null), d.dispatchevent(y) } return } d = c; var z = r / v; z = i.max(i.min(z, 3), -3); var a = i.abs(z / na) , b = z * a + .5 * na * a * a , c = ha.getscrolltop() - b , d = 0; c > ja ? (d = (ja - c) / b, c = ja) : 0 > c && (d = -c / b, c = 0), a *= 1 - d, ha.animateto(c + .5 | 0, { easing: "outcubic", duration: a }) } }), a.scrollto(0, 0), e.style.overflow = f.style.overflow = "hidden" } , y = function() { var a, b, c, d, f, g, h, j, k, l, m, n = e.clientheight, o = ba(); for (j = 0, k = ia.length; k > j; j++) for (a = ia[j], b = a.element, c = a.anchortarget, d = a.keyframes, f = 0, g = d.length; g > f; f++) h = d[f], l = h.offset, m = o[h.constant] || 0, h.frame = l, h.ispercentage && (l *= n, h.frame = l), "relative" === h.mode && (fa(b), h.frame = ha.relativetoabsolute(c, h.anchors[0], h.anchors[1]) - l, fa(b, !0)), h.frame += m, la && !h.isend && h.frame > ja && (ja = h.frame); for (ja = i.max(ja, ca()), j = 0, k = ia.length; k > j; j++) { for (a = ia[j], d = a.keyframes, f = 0, g = d.length; g > f; f++) h = d[f], m = o[h.constant] || 0, h.isend && (h.frame = ja - h.offset + m); a.keyframes.sort(ia) } } , z = function(a, b) { for (var c = 0, d = ia.length; d > c; c++) { var e, f, i = ia[c], j = i.element, k = i.smoothscrolling ? a : b, l = i.keyframes, m = l.length, n = l[0], s = l[l.length - 1], t = k < n.frame, u = k > s.frame, v = t ? n : s, w = i.emitevents, x = i.lastframeindex; if (t || u) { if (t && -1 === i.edge || u && 1 === i.edge) continue; switch (t ? (ea(j, [p], [r, q]), w && x > -1 && (za(j, n.eventtype, la), i.lastframeindex = -1)) : (ea(j, [r], [p, q]), w && m > x && (za(j, s.eventtype, la), i.lastframeindex = m)), i.edge = t ? -1 : 1, i.edgestrategy) { case "reset": fa(j); continue; case "ease": k = v.frame; break; default: case "set": var y = v.props; for (e in y) h.call(y, e) && (f = ea(y[e].value), 0 === e.indexof("@") ? j.setattribute(e.substr(1), f) : g.setstyle(j, e, f)); continue } } else 0 !== i.edge && (ea(j, [o, q], [p, r]), i.edge = 0); for (var z = 0; m - 1 > z; z++) if (k >= l[z].frame && k <= l[z + 1].frame) { var a = l[z] , b = l[z + 1]; for (e in a.props) if (h.call(a.props, e)) { var c = (k - a.frame) / (b.frame - a.frame); c = a.props[e].easing(c), f = da(a.props[e].value, b.props[e].value, c), f = ea(f), 0 === e.indexof("@") ? j.setattribute(e.substr(1), f) : g.setstyle(j, e, f) } w && x !== z && ("down" === la ? za(j, a.eventtype, la) : za(j, b.eventtype, la), i.lastframeindex = z); break } } } , $ = function() { qa && (qa = !1, aa()); var a, b, d = ha.getscrolltop(), e = ha(); if (oa) e >= oa.endtime ? (d = oa.targettop, a = oa.done, oa = c) : (b = oa.easing((e - oa.starttime) / oa.duration), d = oa.starttop + b * oa.topdiff | 0), ha.setscrolltop(d, !0); else if (!sa) { var f = ra.targettop - d; f && (ra = { starttop: ma, topdiff: d - ma, targettop: d, starttime: na, endtime: na + qa }), e <= ra.endtime && (b = w.sqrt((e - ra.starttime) / qa), d = ra.starttop + b * ra.topdiff | 0) } if (sa || ma !== d) { la = d > ma ? "down" : ma > d ? "up" : la, sa = !1; var h = { curtop: d, lasttop: ma, maxtop: ja, direction: la } , i = ka.beforerender && ka.beforerender.call(ha, h); i !== !1 && (z(d, ha.getscrolltop()), sa && ja && g.setstyle(ja, "transform", "translate(0, " + -ta + "px) " + ua), ma = d, ka.render && ka.render.call(ha, h)), a && a.call(ha, !1) } na = e } , _ = function(a) { for (var b = 0, c = a.keyframes.length; c > b; b++) { for (var d, e, f, g, h = a.keyframes[b], i = {}; null !== (g = j.exec(h.props)); ) f = g[1], e = g[2], d = f.match(k), null !== d ? (f = d[1], d = d[2]) : d = w, e = e.indexof("!") ? aa(e) : [e.slice(1)], i[f] = { value: e, easing: w[d] }; h.props = i } } , aa = function(a) { var b = []; return p.lastindex = 0, a = a.replace(p, function(a) { return a.replace(n, function(a) { return a / 255 * 100 + "%" }) }), s && (q.lastindex = 0, a = a.replace(q, function(a) { return s + a })), a = a.replace(n, function(a) { return b.push(+a), "{?}" }), b.unshift(a), b } , ba = function(a) { var b, c, d = {}; for (b = 0, c = a.keyframes.length; c > b; b++) ca(a.keyframes[b], d); for (d = {}, b = a.keyframes.length - 1; b >= 0; b--) ca(a.keyframes[b], d) } , ca = function(a, b) { var c; for (c in b) h.call(a.props, c) || (a.props[c] = b[c]); for (c in a.props) b[c] = a.props[c] } , da = function(a, b, c) { var d, e = a.length; if (e !== b.length) throw "can't interpolate between \"" + a[0] + '" and "' + b[0] + '"'; var f = [a[0]]; for (d = 1; e > d; d++) f[d] = a[d] + (b[d] - a[d]) * c; return f } , ea = function(a) { var b = 1; return o.lastindex = 0, a[0].replace(o, function() { return a[b++] }) } , fa = function(a, b) { a = [].concat(a); for (var c, d, e = 0, f = a.length; f > e; e++) d = a[e], c = ia[d[f]], c && (b ? (d.style.csstext = c.dirtystyleattr, ea(d, c.dirtyclassattr)) : (c.dirtystyleattr = d.style.csstext, c.dirtyclassattr = da(d), d.style.csstext = c.styleattr, ea(d, c.classattr))) } , ga = function() { ua = "translatez(0)", g.setstyle(ja, "transform", ua); var a = j(ja) , b = a.getpropertyvalue("transform") , c = a.getpropertyvalue(s + "transform") , d = b && "none" !== b || c && "none" !== c; d || (ua = "") }; g.setstyle = function(a, b, c) { var d = a.style; if (b = b.replace(l, m).replace("-", ""), "zindex" === b) isnan(c) ? d[b] = c : d[b] = "" + (0 | c); else if ("float" === b) d.stylefloat = d.cssfloat = c; else try { r && (d[r + b.slice(0, 1).touppercase() + b.slice(1)] = c), d[b] = c } catch (e) {} } ; var ha, ia, ja, ka, la, ma, na, oa, pa, qa, ra, sa, ta, ua, va, wa = g.addevent = function(b, c, d) { var e = function(b) { return b = b || a.event, b.target || (b.target = b.srcelement), b.preventdefault || (b.preventdefault = function() { b.returnvalue = !1, b.defaultprevented = !0 } ), d.call(this, b) }; c = c.split(" "); for (var f, g = 0, h = c.length; h > g; g++) f = c[g], b.addeventlistener ? b.addeventlistener(f, d, !1) : b.attachevent("on" + f, e), ua.push({ element: b, name: f, listener: d }) } , xa = g.removeevent = function(a, b, c) { b = b.split(" "); for (var d = 0, e = b.length; e > d; d++) a.removeeventlistener ? a.removeeventlistener(b[d], c, !1) : a.detachevent("on" + b[d], c) } , ya = function() { for (var a, b = 0, c = ua.length; c > b; b++) a = ua[b], xa(a.element, a.name, a.listener); ua = [] }, za = function(a, b, c) { ka.keyframe && ka.keyframe.call(ha, a, b, c) }, aa = function() { var a = ha.getscrolltop(); ja = 0, la && !sa && (f.style.height = ""), y(), la && !sa && (f.style.height = ja + e.clientheight + "px"), sa ? ha.setscrolltop(i.min(ha.getscrolltop(), ja)) : ha.setscrolltop(a, !0), sa = !0 }, ba = function() { var a, b, c = e.clientheight, d = {}; for (a in ma) b = ma[a], "function" == typeof b ? b = b.call(ha) : /p$/.test(b) && (b = b.slice(0, -1) / 100 * c), d[a] = b; return d }, ca = function() { var a, b = 0; return ja && (b = i.max(ja.offsetheight, ja.scrollheight)), a = i.max(b, f.scrollheight, f.offsetheight, e.scrollheight, e.offsetheight, e.clientheight), a - e.clientheight }, da = function(b) { var c = "classname"; return a.svgelement && b instanceof a.svgelement && (b = b[c], c = "baseval"), b[c] }, ea = function(b, d, e) { var f = "classname"; if (a.svgelement && b instanceof a.svgelement && (b = b[f], f = "baseval"), e === c) return void (b[f] = d); for (var g = b[f], h = 0, i = e.length; i > h; h++) g = ga(g).replace(ga(e[h]), " "); g = fa(g); for (var j = 0, k = d.length; k > j; j++) -1 === ga(g).indexof(ga(d[j])) && (g += " " + d[j]); b[f] = fa(g) }, fa = function(a) { return a.replace(h, "") }, ga = function(a) { return " " + a + " " }, ha = date.now || function() { return +new date } , ia = function(a, b) { return a.frame - b.frame }, ja = 0, ka = 1, la = "down", ma = -1, na = ha(), oa = 0, pa = 0, qa = !1, ra = 0, sa = !1, ta = 0, ua = []; "function" == typeof define && define.amd ? define([], function() { return g }) : "undefined" != typeof module && module.exports ? module.exports = g : a.skrollr = g }(window, document);