vendor: 22,601 bytes, lines 1-650
1/*! skrollr 0.6.26 (2014-06-08) | Alexander Prinzhorn - https://github.com/Prinzhorn/skrollr | Free to use under terms of MIT license */ 2(function(e, t, r) { 3 "use strict"; 4 function n(r) { 5 if (o = t.documentElement, a = t.body, K(), it = this, r = r || {}, 6 ut = r.constants || {}, 7 r.easing) for (var n in r.easing) U[n] = r.easing[n]; 8 yt = r.edgeStrategy || "set", 9 ct = { 10 beforerender: r.beforerender, 11 render: r.render, 12 keyframe: r.keyframe 13 }, 14 ft = r.forceHeight !== !1, 15 ft && (Vt = r.scale || 1), 16 mt = r.mobilesDeceleration || x, 17 dt = r.smoothScrolling !== !1, 18 gt = r.smoothScrollingDuration || E, 19 vt = { 20 targetTop: it.getScrollTop() 21 }, 22 Gt = (r.mobilesCheck || 23 function() { 24 return /androids|iphoness|ipads|ipods|BlackBerry/i.test(navigator.userAgent || navigator.vendor || e.opera) 25 })(), 26 Gt ? (st = t.getElementById("skrollr-body"), st && at(), X(), Dt(o, [y, S], [T])) : Dt(o, [y, b], [T]), 27 it.refresh(), 28 St(e, "resize orientationchange", 29 function() { 30 var e = o.clientWidth, 31 t = o.clientHeight; (t !== $t || e !== Mt) && ($t = t, Mt = e, _t = !0) 32 }); 33 var i = Y(); 34 return function l() { 35 Z(), 36 bt = i(l) 37 } (), 38 it 39 } 40 var o, a, i = { 41 get: function() { 42 return it 43 }, 44 init: function(e) { 45 return it || new n(e) 46 }, 47 VERSION: "0.6.26" 48 }, 49 l = Object.prototype.hasOwnProperty, 50 s = e.Math, 51 c = e.getComputedStyle, 52 f = "touchstart", 53 u = "touchmove", 54 m = "touchcancel", 55 p = "touchend", 56 d = "skrollable", 57 g = d + "-before", 58 v = d + "-between", 59 h = d + "-after", 60 y = "skrollr", 61 T = "no-" + y, 62 b = y + "-desktop", 63 S = y + "-mobiles", 64 k = "linear", 65 w = 1e3, 66 x = .004, 67 E = 200, 68 A = "start", 69 F = "end", 70 C = "center", 71 D = "bottom", 72 H = "___skrollable_id", 73 I = /^(?:input|textarea|button|select)$/i, 74 P = /^\s+|\s+$/g, 75 N = /^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/, 76 O = /\s*(@?[\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi, 77 V = /^(@?[a-z\-]+)\[(\w+)\]$/, 78 z = /-([a-z0-9_])/g, 79 q = function(e, t) { 80 return t.toUpperCase() 81 }, 82 L = /[\-+]?[\d]*\.?[\d]+/g, 83 M = /\{\?\}/g, 84 $ = /rgba?\(\s*-?\d+\s*,\s*-?\d+\s*,\s*-?\d+/g, 85 _ = /[a-z\-]+-gradient/g, 86 B = "", 87 G = "", 88 K = function() { 89 var e = /^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/; 90 if (c) { 91 var t = c(a, null); 92 for (var n in t) if (B = n.match(e) || +n == n && t[n].match(e)) break; 93 if (!B) return B = G = "", 94 r; 95 B = B[0], 96 "-" === B.slice(0, 1) ? (G = B, B = { 97 "-webkit-": "webkit", 98 "-moz-": "Moz", 99 "-ms-": "ms", 100 "-o-": "O" 101 } [B]) : G = "-" + B.toLowerCase() + "-" 102 } 103 }, 104 Y = function() { 105 var t = e.requestAnimationFrame || e[B.toLowerCase() + "RequestAnimationFrame"], 106 r = Pt(); 107 return (Gt || !t) && (t = function(t) { 108 var n = Pt() - r, 109 o = s.max(0, 1e3 / 60 - n); 110 return e.setTimeout(function() { 111 r = Pt(), 112 t() 113 }, 114 o) 115 }), 116 t 117 }, 118 R = function() { 119 var t = e.cancelAnimationFrame || e[B.toLowerCase() + "CancelAnimationFrame"]; 120 return (Gt || !t) && (t = function(t) { 121 return e.clearTimeout(t) 122 }), 123 t 124 }, 125 U = { 126 begin: function() { 127 return 0 128 }, 129 end: function() { 130 return 1 131 }, 132 linear: function(e) { 133 return e 134 }, 135 quadratic: function(e) { 136 return e * e 137 }, 138 cubic: function(e) { 139 return e * e * e 140 }, 141 swing: function(e) { 142 return - s.cos(e * s.PI) / 2 + .5 143 }, 144 sqrt: function(e) { 145 return s.sqrt(e) 146 }, 147 outCubic: function(e) { 148 return s.pow(e - 1, 3) + 1 149 }, 150 bounce: function(e) { 151 var t; 152 if (.5083 >= e) t = 3; 153 else if (.8489 >= e) t = 9; 154 else if (.96208 >= e) t = 27; 155 else { 156 if (! (.99981 >= e)) return 1; 157 t = 91 158 } 159 return 1 - s.abs(3 * s.cos(1.028 * e * t) / t) 160 } 161 }; 162 n.prototype.refresh = function(e) { 163 var n, o, a = !1; 164 for (e === r ? (a = !0, lt = [], Bt = 0, e = t.getElementsByTagName("*")) : e.length === r && (e = [e]), n = 0, o = e.length; o > n; n++) { 165 var i = e[n], 166 l = i, 167 s = [], 168 c = dt, 169 f = yt, 170 u = !1; 171 if (a && H in i && delete i[H], i.attributes) { 172 for (var m = 0, 173 p = i.attributes.length; p > m; m++) { 174 var g = i.attributes[m]; 175 if ("data-anchor-target" !== g.name) if ("data-smooth-scrolling" !== g.name) if ("data-edge-strategy" !== g.name) if ("data-emit-events" !== g.name) { 176 var v = g.name.match(N); 177 if (null !== v) { 178 var h = { 179 props: g.value, 180 element: i, 181 eventType: g.name.replace(z, q) 182 }; 183 s.push(h); 184 var y = v[1]; 185 y && (h.constant = y.substr(1)); 186 var T = v[2]; 187 /p$/.test(T) ? (h.isPercentage = !0, h.offset = (0 | T.slice(0, -1)) / 100) : h.offset = 0 | T; 188 var b = v[3], 189 S = v[4] || b; 190 b && b !== A && b !== F ? (h.mode = "relative", h.anchors = [b, S]) : (h.mode = "absolute", b === F ? h.isEnd = !0 : h.isPercentage || (h.offset = h.offset * Vt)) 191 } 192 } else u = !0; 193 else f = g.value; 194 else c = "off" !== g.value; 195 else if (l = t.querySelector(g.value), null === l) throw 'Unable to find anchor target "' + g.value + '"' 196 } 197 if (s.length) { 198 var k, w, x; ! a && H in i ? (x = i[H], k = lt[x].styleAttr, w = lt[x].classAttr) : (x = i[H] = Bt++, k = i.style.cssText, w = Ct(i)), 199 lt[x] = { 200 element: i, 201 styleAttr: k, 202 classAttr: w, 203 anchorTarget: l, 204 keyFrames: s, 205 smoothScrolling: c, 206 edgeStrategy: f, 207 emitEvents: u, 208 lastFrameIndex: -1 209 }, 210 Dt(i, [d], []) 211 } 212 } 213 } 214 for (Et(), n = 0, o = e.length; o > n; n++) { 215 var E = lt[e[n][H]]; 216 E !== r && (J(E), et(E)) 217 } 218 return it 219 }, 220 n.prototype.relativeToAbsolute = function(e, t, r) { 221 var n = o.clientHeight, 222 a = e.getBoundingClientRect(), 223 i = a.top, 224 l = a.bottom - a.top; 225 return t === D ? i -= n: t === C && (i -= n / 2), 226 r === D ? i += l: r === C && (i += l / 2), 227 i += it.getScrollTop(), 228 0 | i + .5 229 }, 230 n.prototype.animateTo = function(e, t) { 231 t = t || {}; 232 var n = Pt(), 233 o = it.getScrollTop(); 234 return pt = { 235 startTop: o, 236 topDiff: e - o, 237 targetTop: e, 238 duration: t.duration || w, 239 startTime: n, 240 endTime: n + (t.duration || w), 241 easing: U[t.easing || k], 242 done: t.done 243 }, 244 pt.topDiff || (pt.done && pt.done.call(it, !1), pt = r), 245 it 246 }, 247 n.prototype.stopAnimateTo = function() { 248 pt && pt.done && pt.done.call(it, !0), 249 pt = r 250 }, 251 n.prototype.isAnimatingTo = function() { 252 return !! pt 253 }, 254 n.prototype.ismobiles = function() { 255 return Gt 256 }, 257 n.prototype.setScrollTop = function(t, r) { 258 return ht = r === !0, 259 Gt ? Kt = s.min(s.max(t, 0), Ot) : e.scrollTo(0, t), 260 it 261 }, 262 n.prototype.getScrollTop = function() { 263 return Gt ? Kt: e.pageYOffset || o.scrollTop || a.scrollTop || 0 264 }, 265 n.prototype.getMaxScrollTop = function() { 266 return Ot 267 }, 268 n.prototype.on = function(e, t) { 269 return ct[e] = t, 270 it 271 }, 272 n.prototype.off = function(e) { 273 return delete ct[e], 274 it 275 }, 276 n.prototype.destroy = function() { 277 var e = R(); 278 e(bt), 279 wt(), 280 Dt(o, [T], [y, b, S]); 281 for (var t = 0, 282 n = lt.length; n > t; t++) ot(lt[t].element); 283 o.style.overflow = a.style.overflow = "", 284 o.style.height = a.style.height = "", 285 st && i.setStyle(st, "transform", "none"), 286 it = r, 287 st = r, 288 ct = r, 289 ft = r, 290 Ot = 0, 291 Vt = 1, 292 ut = r, 293 mt = r, 294 zt = "down", 295 qt = -1, 296 Mt = 0, 297 $t = 0, 298 _t = !1, 299 pt = r, 300 dt = r, 301 gt = r, 302 vt = r, 303 ht = r, 304 Bt = 0, 305 yt = r, 306 Gt = !1, 307 Kt = 0, 308 Tt = r 309 }; 310 var X = function() { 311 var n, i, l, c, d, g, v, h, y, T, b, S; 312 St(o, [f, u, m, p].join(" "), 313 function(e) { 314 var o = e.changedTouches[0]; 315 for (c = e.target; 3 === c.nodeType;) c = c.parentNode; 316 switch (d = o.clientY, g = o.clientX, T = e.timeStamp, I.test(c.tagName) || e.preventDefault(), e.type) { 317 case f: 318 n && n.blur(), 319 it.stopAnimateTo(), 320 n = c, 321 i = v = d, 322 l = g, 323 y = T; 324 break; 325 case u: 326 I.test(c.tagName) && t.activeElement !== c && e.preventDefault(), 327 h = d - v, 328 S = T - b, 329 it.setScrollTop(Kt - h, !0), 330 v = d, 331 b = T; 332 break; 333 default: 334 case m: 335 case p: 336 var a = i - d, 337 k = l - g, 338 w = k * k + a * a; 339 if (49 > w) { 340 if (!I.test(n.tagName)) { 341 n.focus(); 342 var x = t.createEvent("MouseEvents"); 343 x.initMouseEvent("click", !0, !0, e.view, 1, o.screenX, o.screenY, o.clientX, o.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, null), 344 n.dispatchEvent(x) 345 } 346 return 347 } 348 n = r; 349 var E = h / S; 350 E = s.max(s.min(E, 3), -3); 351 var A = s.abs(E / mt), 352 F = E * A + .5 * mt * A * A, 353 C = it.getScrollTop() - F, 354 D = 0; 355 C > Ot ? (D = (Ot - C) / F, C = Ot) : 0 > C && (D = -C / F, C = 0), 356 A *= 1 - D, 357 it.animateTo(0 | C + .5, { 358 easing: "outCubic", 359 duration: A 360 }) 361 } 362 }), 363 e.scrollTo(0, 0), 364 o.style.overflowX = a.style.overflowX = "hidden" 365 }, 366 j = function() { 367 var e, t, r, n, a, i, l, c, f, u, m, p = o.clientHeight, 368 d = At(); 369 for (c = 0, f = lt.length; f > c; c++) for (e = lt[c], t = e.element, r = e.anchorTarget, n = e.keyFrames, a = 0, i = n.length; i > a; a++) l = n[a], 370 u = l.offset, 371 m = d[l.constant] || 0, 372 l.frame = u, 373 l.isPercentage && (u *= p, l.frame = u), 374 "relative" === l.mode && (ot(t), l.frame = it.relativeToAbsolute(r, l.anchors[0], l.anchors[1]) - u, ot(t, !0)), 375 l.frame += m, 376 ft && !l.isEnd && l.frame > Ot && (Ot = l.frame); 377 for (Ot = s.max(Ot, Ft()), c = 0, f = lt.length; f > c; c++) { 378 for (e = lt[c], n = e.keyFrames, a = 0, i = n.length; i > a; a++) l = n[a], 379 m = d[l.constant] || 0, 380 l.isEnd && (l.frame = Ot - l.offset + m); 381 e.keyFrames.sort(Nt) 382 } 383 }, 384 W = function(e, t) { 385 for (var r = 0, 386 n = lt.length; n > r; r++) { 387 var o, a, s = lt[r], 388 c = s.element, 389 f = s.smoothScrolling ? e: t, 390 u = s.keyFrames, 391 m = u.length, 392 p = u[0], 393 y = u[u.length - 1], 394 T = p.frame > f, 395 b = f > y.frame, 396 S = T ? p: y, 397 k = s.emitEvents, 398 w = s.lastFrameIndex; 399 if (T || b) { 400 if (T && -1 === s.edge || b && 1 === s.edge) continue; 401 switch (T ? (Dt(c, [g], [h, v]), k && w > -1 && (xt(c, p.eventType, zt), s.lastFrameIndex = -1)) : (Dt(c, [h], [g, v]), k && m > w && (xt(c, y.eventType, zt), s.lastFrameIndex = m)), s.edge = T ? -1 : 1, s.edgeStrategy) { 402 case "reset": 403 ot(c); 404 continue; 405 case "ease": 406 f = S.frame; 407 break; 408 default: 409 case "set": 410 var x = S.props; 411 for (o in x) l.call(x, o) && (a = nt(x[o].value), 0 === o.indexOf("@") ? c.setAttribute(o.substr(1), a) : i.setStyle(c, o, a)); 412 continue 413 } 414 } else 0 !== s.edge && (Dt(c, [d, v], [g, h]), s.edge = 0); 415 for (var E = 0; m - 1 > E; E++) if (f >= u[E].frame && u[E + 1].frame >= f) { 416 var A = u[E], 417 F = u[E + 1]; 418 for (o in A.props) if (l.call(A.props, o)) { 419 var C = (f - A.frame) / (F.frame - A.frame); 420 C = A.props[o].easing(C), 421 a = rt(A.props[o].value, F.props[o].value, C), 422 a = nt(a), 423 0 === o.indexOf("@") ? c.setAttribute(o.substr(1), a) : i.setStyle(c, o, a) 424 } 425 k && w !== E && ("down" === zt ? xt(c, A.eventType, zt) : xt(c, F.eventType, zt), s.lastFrameIndex = E); 426 break 427 } 428 } 429 }, 430 Z = function() { 431 _t && (_t = !1, Et()); 432 var e, t, n = it.getScrollTop(), 433 o = Pt(); 434 if (pt) o >= pt.endTime ? (n = pt.targetTop, e = pt.done, pt = r) : (t = pt.easing((o - pt.startTime) / pt.duration), n = 0 | pt.startTop + t * pt.topDiff), 435 it.setScrollTop(n, !0); 436 else if (!ht) { 437 var a = vt.targetTop - n; 438 a && (vt = { 439 startTop: qt, 440 topDiff: n - qt, 441 targetTop: n, 442 startTime: Lt, 443 endTime: Lt + gt 444 }), 445 vt.endTime >= o && (t = U.sqrt((o - vt.startTime) / gt), n = 0 | vt.startTop + t * vt.topDiff) 446 } 447 if (Gt && st && i.setStyle(st, "transform", "translate(0, " + -Kt + "px) " + Tt), ht || qt !== n) { 448 zt = n > qt ? "down": qt > n ? "up": zt, 449 ht = !1; 450 var l = { 451 curTop: n, 452 lastTop: qt, 453 maxTop: Ot, 454 direction: zt 455 }, 456 s = ct.beforerender && ct.beforerender.call(it, l); 457 s !== !1 && (W(n, it.getScrollTop()), qt = n, ct.render && ct.render.call(it, l)), 458 e && e.call(it, !1) 459 } 460 Lt = o 461 }, 462 J = function(e) { 463 for (var t = 0, 464 r = e.keyFrames.length; r > t; t++) { 465 for (var n, o, a, i, l = e.keyFrames[t], s = {}; null !== (i = O.exec(l.props));) a = i[1], 466 o = i[2], 467 n = a.match(V), 468 null !== n ? (a = n[1], n = n[2]) : n = k, 469 o = o.indexOf("!") ? Q(o) : [o.slice(1)], 470 s[a] = { 471 value: o, 472 easing: U[n] 473 }; 474 l.props = s 475 } 476 }, 477 Q = function(e) { 478 var t = []; 479 return $.lastIndex = 0, 480 e = e.replace($, 481 function(e) { 482 return e.replace(L, 483 function(e) { 484 return 100 * (e / 255) + "%" 485 }) 486 }), 487 G && (_.lastIndex = 0, e = e.replace(_, 488 function(e) { 489 return G + e 490 })), 491 e = e.replace(L, 492 function(e) { 493 return t.push( + e), 494 "{?}" 495 }), 496 t.unshift(e), 497 t 498 }, 499 et = function(e) { 500 var t, r, n = {}; 501 for (t = 0, r = e.keyFrames.length; r > t; t++) tt(e.keyFrames[t], n); 502 for (n = {}, 503 t = e.keyFrames.length - 1; t >= 0; t--) tt(e.keyFrames[t], n) 504 }, 505 tt = function(e, t) { 506 var r; 507 for (r in t) l.call(e.props, r) || (e.props[r] = t[r]); 508 for (r in e.props) t[r] = e.props[r] 509 }, 510 rt = function(e, t, r) { 511 var n, o = e.length; 512 if (o !== t.length) throw "Can't interpolate between \"" + e[0] + '" and "' + t[0] + '"'; 513 var a = [e[0]]; 514 for (n = 1; o > n; n++) a[n] = e[n] + (t[n] - e[n]) * r; 515 return a 516 }, 517 nt = function(e) { 518 var t = 1; 519 return M.lastIndex = 0, 520 e[0].replace(M, 521 function() { 522 return e[t++] 523 }) 524 }, 525 ot = function(e, t) { 526 e = [].concat(e); 527 for (var r, n, o = 0, 528 a = e.length; a > o; o++) n = e[o], 529 r = lt[n[H]], 530 r && (t ? (n.style.cssText = r.dirtyStyleAttr, Dt(n, r.dirtyClassAttr)) : (r.dirtyStyleAttr = n.style.cssText, r.dirtyClassAttr = Ct(n), n.style.cssText = r.styleAttr, Dt(n, r.classAttr))) 531 }, 532 at = function() { 533 Tt = "translateZ(0)", 534 i.setStyle(st, "transform", Tt); 535 var e = c(st), 536 t = e.getPropertyValue("transform"), 537 r = e.getPropertyValue(G + "transform"), 538 n = t && "none" !== t || r && "none" !== r; 539 n || (Tt = "") 540 }; 541 i.setStyle = function(e, t, r) { 542 var n = e.style; 543 if (t = t.replace(z, q).replace("-", ""), "zIndex" === t) n[t] = isNaN(r) ? r: "" + (0 | r); 544 else if ("float" === t) n.styleFloat = n.cssFloat = r; 545 else try { 546 B && (n[B + t.slice(0, 1).toUpperCase() + t.slice(1)] = r), 547 n[t] = r 548 } catch(o) {} 549 }; 550 var it, lt, st, ct, ft, ut, mt, pt, dt, gt, vt, ht, yt, Tt, bt, St = i.addEvent = function(t, r, n) { 551 var o = function(t) { 552 return t = t || e.event, 553 t.target || (t.target = t.srcElement), 554 t.preventDefault || (t.preventDefault = function() { 555 t.returnValue = !1, 556 t.defaultPrevented = !0 557 }), 558 n.call(this, t) 559 }; 560 r = r.split(" "); 561 for (var a, i = 0, 562 l = r.length; l > i; i++) a = r[i], 563 t.addEventListener ? t.addEventListener(a, n, !1) : t.attachEvent("on" + a, o), 564 Yt.push({ 565 element: t, 566 name: a, 567 listener: n 568 }) 569 }, 570 kt = i.removeEvent = function(e, t, r) { 571 t = t.split(" "); 572 for (var n = 0, 573 o = t.length; o > n; n++) e.removeEventListener ? e.removeEventListener(t[n], r, !1) : e.detachEvent("on" + t[n], r) 574 }, 575 wt = function() { 576 for (var e, t = 0, 577 r = Yt.length; r > t; t++) e = Yt[t], 578 kt(e.element, e.name, e.listener); 579 Yt = [] 580 }, 581 xt = function(e, t, r) { 582 ct.keyframe && ct.keyframe.call(it, e, t, r) 583 }, 584 Et = function() { 585 var e = it.getScrollTop(); 586 Ot = 0, 587 ft && !Gt && (a.style.height = ""), 588 j(), 589 ft && !Gt && (a.style.height = Ot + o.clientHeight + "px"), 590 Gt ? it.setScrollTop(s.min(it.getScrollTop(), Ot)) : it.setScrollTop(e, !0), 591 ht = !0 592 }, 593 At = function() { 594 var e, t, r = o.clientHeight, 595 n = {}; 596 for (e in ut) t = ut[e], 597 "function" == typeof t ? t = t.call(it) : /p$/.test(t) && (t = t.slice(0, -1) / 100 * r), 598 n[e] = t; 599 return n 600 }, 601 Ft = function() { 602 var e = st && st.offsetHeight || 0, 603 t = s.max(e, a.scrollHeight, a.offsetHeight, o.scrollHeight, o.offsetHeight, o.clientHeight); 604 return t - o.clientHeight 605 }, 606 Ct = function(t) { 607 var r = "className"; 608 return e.SVGElement && t instanceof e.SVGElement && (t = t[r], r = "baseVal"), 609 t[r] 610 }, 611 Dt = function(t, n, o) { 612 var a = "className"; 613 if (e.SVGElement && t instanceof e.SVGElement && (t = t[a], a = "baseVal"), o === r) return t[a] = n, 614 r; 615 for (var i = t[a], l = 0, s = o.length; s > l; l++) i = It(i).replace(It(o[l]), " "); 616 i = Ht(i); 617 for (var c = 0, 618 f = n.length; f > c; c++) - 1 === It(i).indexOf(It(n[c])) && (i += " " + n[c]); 619 t[a] = Ht(i) 620 }, 621 Ht = function(e) { 622 return e.replace(P, "") 623 }, 624 It = function(e) { 625 return " " + e + " " 626 }, 627 Pt = Date.now || 628 function() { 629 return + new Date 630 }, 631 Nt = function(e, t) { 632 return e.frame - t.frame 633 }, 634 Ot = 0, 635 Vt = 1, 636 zt = "down", 637 qt = -1, 638 Lt = Pt(), 639 Mt = 0, 640 $t = 0, 641 _t = !1, 642 Bt = 0, 643 Gt = !1, 644 Kt = 0, 645 Yt = []; 646 "function" == typeof define && define.amd ? define("skrollr", 647 function() { 648 return i 649 }) : "undefined" != typeof module && module.exports ? module.exports = i: e.skrollr = i 650})(window, document);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.