Created
July 15, 2013 21:34
-
-
Save victorb/6003702 to your computer and use it in GitHub Desktop.
Githubs mobile site
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function (a) { | |
| String.prototype.trim === a && (String.prototype.trim = function () { | |
| return this.replace(/^\s+|\s+$/g, "") | |
| }), Array.prototype.reduce === a && (Array.prototype.reduce = function (b) { | |
| if (this === void 0 || this === null) throw new TypeError; | |
| var c = Object(this), | |
| d = c.length >>> 0, | |
| e = 0, | |
| f; | |
| if (typeof b != "function") throw new TypeError; | |
| if (d == 0 && arguments.length == 1) throw new TypeError; | |
| if (arguments.length >= 2) f = arguments[1]; | |
| else | |
| do { | |
| if (e in c) { | |
| f = c[e++]; | |
| break | |
| } | |
| if (++e >= d) throw new TypeError | |
| } while (!0); | |
| while (e < d) e in c && (f = b.call(a, f, c[e], e, c)), e++; | |
| return f | |
| }) | |
| })(); | |
| var Zepto = function () { | |
| function E(a) { | |
| return a == null ? String(a) : y[z.call(a)] || "object" | |
| } | |
| function F(a) { | |
| return E(a) == "function" | |
| } | |
| function G(a) { | |
| return a != null && a == a.window | |
| } | |
| function H(a) { | |
| return a != null && a.nodeType == a.DOCUMENT_NODE | |
| } | |
| function I(a) { | |
| return E(a) == "object" | |
| } | |
| function J(a) { | |
| return I(a) && !G(a) && a.__proto__ == Object.prototype | |
| } | |
| function K(a) { | |
| return a instanceof Array | |
| } | |
| function L(a) { | |
| return typeof a.length == "number" | |
| } | |
| function M(a) { | |
| return g.call(a, function (a) { | |
| return a != null | |
| }) | |
| } | |
| function N(a) { | |
| return a.length > 0 ? c.fn.concat.apply([], a) : a | |
| } | |
| function O(a) { | |
| return a.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase() | |
| } | |
| function P(a) { | |
| return a in j ? j[a] : j[a] = new RegExp("(^|\\s)" + a + "(\\s|$)") | |
| } | |
| function Q(a, b) { | |
| return typeof b == "number" && !l[O(a)] ? b + "px" : b | |
| } | |
| function R(a) { | |
| var b, c; | |
| return i[a] || (b = h.createElement(a), h.body.appendChild(b), c = k(b, "").getPropertyValue("display"), b.parentNode.removeChild(b), c == "none" && (c = "block"), i[a] = c), i[a] | |
| } | |
| function S(a) { | |
| return "children" in a ? f.call(a.children) : c.map(a.childNodes, function (a) { | |
| if (a.nodeType == 1) return a | |
| }) | |
| } | |
| function T(c, d, e) { | |
| for (b in d) e && (J(d[b]) || K(d[b])) ? (J(d[b]) && !J(c[b]) && (c[b] = {}), K(d[b]) && !K(c[b]) && (c[b] = []), T(c[b], d[b], e)) : d[b] !== a && (c[b] = d[b]) | |
| } | |
| function U(b, d) { | |
| return d === a ? c(b) : c(b).filter(d) | |
| } | |
| function V(a, b, c, d) { | |
| return F(b) ? b.call(a, c, d) : b | |
| } | |
| function W(a, b, c) { | |
| c == null ? a.removeAttribute(b) : a.setAttribute(b, c) | |
| } | |
| function X(b, c) { | |
| var d = b.className, | |
| e = d && d.baseVal !== a; | |
| if (c === a) return e ? d.baseVal : d; | |
| e ? d.baseVal = c : b.className = c | |
| } | |
| function Y(a) { | |
| var b; | |
| try { | |
| return a ? a == "true" || (a == "false" ? !1 : a == "null" ? null : isNaN(b = Number(a)) ? /^[\[\{]/.test(a) ? c.parseJSON(a) : a : b) : a | |
| } catch (d) { | |
| return a | |
| } | |
| } | |
| function Z(a, b) { | |
| b(a); | |
| for (var c in a.childNodes) Z(a.childNodes[c], b) | |
| } | |
| var a, b, c, d, e = [], | |
| f = e.slice, | |
| g = e.filter, | |
| h = window.document, | |
| i = {}, j = {}, k = h.defaultView.getComputedStyle, | |
| l = { | |
| "column-count": 1, | |
| columns: 1, | |
| "font-weight": 1, | |
| "line-height": 1, | |
| opacity: 1, | |
| "z-index": 1, | |
| zoom: 1 | |
| }, m = /^\s*<(\w+|!)[^>]*>/, | |
| n = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, | |
| o = /^(?:body|html)$/i, | |
| p = ["val", "css", "html", "text", "data", "width", "height", "offset"], | |
| q = ["after", "prepend", "before", "append"], | |
| r = h.createElement("table"), | |
| s = h.createElement("tr"), | |
| t = { | |
| tr: h.createElement("tbody"), | |
| tbody: r, | |
| thead: r, | |
| tfoot: r, | |
| td: s, | |
| th: s, | |
| "*": h.createElement("div") | |
| }, u = /complete|loaded|interactive/, | |
| v = /^\.([\w-]+)$/, | |
| w = /^#([\w-]*)$/, | |
| x = /^[\w-]+$/, | |
| y = {}, z = y.toString, | |
| A = {}, B, C, D = h.createElement("div"); | |
| return A.matches = function (a, b) { | |
| if (!a || a.nodeType !== 1) return !1; | |
| var c = a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.matchesSelector; | |
| if (c) return c.call(a, b); | |
| var d, e = a.parentNode, | |
| f = !e; | |
| return f && (e = D).appendChild(a), d = ~A.qsa(e, b).indexOf(a), f && D.removeChild(a), d | |
| }, B = function (a) { | |
| return a.replace(/-+(.)?/g, function (a, b) { | |
| return b ? b.toUpperCase() : "" | |
| }) | |
| }, C = function (a) { | |
| return g.call(a, function (b, c) { | |
| return a.indexOf(b) == c | |
| }) | |
| }, A.fragment = function (b, d, e) { | |
| b.replace && (b = b.replace(n, "<$1></$2>")), d === a && (d = m.test(b) && RegExp.$1), d in t || (d = "*"); | |
| var g, h, i = t[d]; | |
| return i.innerHTML = "" + b, h = c.each(f.call(i.childNodes), function () { | |
| i.removeChild(this) | |
| }), J(e) && (g = c(h), c.each(e, function (a, b) { | |
| p.indexOf(a) > -1 ? g[a](b) : g.attr(a, b) | |
| })), h | |
| }, A.Z = function (a, b) { | |
| return a = a || [], a.__proto__ = c.fn, a.selector = b || "", a | |
| }, A.isZ = function (a) { | |
| return a instanceof A.Z | |
| }, A.init = function (b, d) { | |
| if (!b) return A.Z(); | |
| if (F(b)) return c(h).ready(b); | |
| if (A.isZ(b)) return b; | |
| var e; | |
| if (K(b)) e = M(b); | |
| else if (I(b)) e = [J(b) ? c.extend({}, b) : b], b = null; | |
| else if (m.test(b)) e = A.fragment(b.trim(), RegExp.$1, d), b = null; | |
| else { | |
| if (d !== a) return c(d).find(b); | |
| e = A.qsa(h, b) | |
| } | |
| return A.Z(e, b) | |
| }, c = function (a, b) { | |
| return A.init(a, b) | |
| }, c.extend = function (a) { | |
| var b, c = f.call(arguments, 1); | |
| return typeof a == "boolean" && (b = a, a = c.shift()), c.forEach(function (c) { | |
| T(a, c, b) | |
| }), a | |
| }, A.qsa = function (a, b) { | |
| var c; | |
| return H(a) && w.test(b) ? (c = a.getElementById(RegExp.$1)) ? [c] : [] : a.nodeType !== 1 && a.nodeType !== 9 ? [] : f.call(v.test(b) ? a.getElementsByClassName(RegExp.$1) : x.test(b) ? a.getElementsByTagName(b) : a.querySelectorAll(b)) | |
| }, c.contains = function (a, b) { | |
| return a !== b && a.contains(b) | |
| }, c.type = E, c.isFunction = F, c.isWindow = G, c.isArray = K, c.isPlainObject = J, c.isEmptyObject = function (a) { | |
| var b; | |
| for (b in a) return !1; | |
| return !0 | |
| }, c.inArray = function (a, b, c) { | |
| return e.indexOf.call(b, a, c) | |
| }, c.camelCase = B, c.trim = function (a) { | |
| return a.trim() | |
| }, c.uuid = 0, c.support = {}, c.expr = {}, c.map = function (a, b) { | |
| var c, d = [], | |
| e, f; | |
| if (L(a)) | |
| for (e = 0; e < a.length; e++) c = b(a[e], e), c != null && d.push(c); | |
| else | |
| for (f in a) c = b(a[f], f), c != null && d.push(c); | |
| return N(d) | |
| }, c.each = function (a, b) { | |
| var c, d; | |
| if (L(a)) { | |
| for (c = 0; c < a.length; c++) | |
| if (b.call(a[c], c, a[c]) === !1) return a | |
| } else | |
| for (d in a) | |
| if (b.call(a[d], d, a[d]) === !1) return a; return a | |
| }, c.grep = function (a, b) { | |
| return g.call(a, b) | |
| }, window.JSON && (c.parseJSON = JSON.parse), c.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (a, b) { | |
| y["[object " + b + "]"] = b.toLowerCase() | |
| }), c.fn = { | |
| forEach: e.forEach, | |
| reduce: e.reduce, | |
| push: e.push, | |
| sort: e.sort, | |
| indexOf: e.indexOf, | |
| concat: e.concat, | |
| map: function (a) { | |
| return c(c.map(this, function (b, c) { | |
| return a.call(b, c, b) | |
| })) | |
| }, | |
| slice: function () { | |
| return c(f.apply(this, arguments)) | |
| }, | |
| ready: function (a) { | |
| return u.test(h.readyState) ? a(c) : h.addEventListener("DOMContentLoaded", function () { | |
| a(c) | |
| }, !1), this | |
| }, | |
| get: function (b) { | |
| return b === a ? f.call(this) : this[b >= 0 ? b : b + this.length] | |
| }, | |
| toArray: function () { | |
| return this.get() | |
| }, | |
| size: function () { | |
| return this.length | |
| }, | |
| remove: function () { | |
| return this.each(function () { | |
| this.parentNode != null && this.parentNode.removeChild(this) | |
| }) | |
| }, | |
| each: function (a) { | |
| return e.every.call(this, function (b, c) { | |
| return a.call(b, c, b) !== !1 | |
| }), this | |
| }, | |
| filter: function (a) { | |
| return F(a) ? this.not(this.not(a)) : c(g.call(this, function (b) { | |
| return A.matches(b, a) | |
| })) | |
| }, | |
| add: function (a, b) { | |
| return c(C(this.concat(c(a, b)))) | |
| }, | |
| is: function (a) { | |
| return this.length > 0 && A.matches(this[0], a) | |
| }, | |
| not: function (b) { | |
| var d = []; | |
| if (F(b) && b.call !== a) this.each(function (a) { | |
| b.call(this, a) || d.push(this) | |
| }); | |
| else { | |
| var e = typeof b == "string" ? this.filter(b) : L(b) && F(b.item) ? f.call(b) : c(b); | |
| this.forEach(function (a) { | |
| e.indexOf(a) < 0 && d.push(a) | |
| }) | |
| } | |
| return c(d) | |
| }, | |
| has: function (a) { | |
| return this.filter(function () { | |
| return I(a) ? c.contains(this, a) : c(this).find(a).size() | |
| }) | |
| }, | |
| eq: function (a) { | |
| return a === -1 ? this.slice(a) : this.slice(a, +a + 1) | |
| }, | |
| first: function () { | |
| var a = this[0]; | |
| return a && !I(a) ? a : c(a) | |
| }, | |
| last: function () { | |
| var a = this[this.length - 1]; | |
| return a && !I(a) ? a : c(a) | |
| }, | |
| find: function (a) { | |
| var b, d = this; | |
| return typeof a == "object" ? b = c(a).filter(function () { | |
| var a = this; | |
| return e.some.call(d, function (b) { | |
| return c.contains(b, a) | |
| }) | |
| }) : this.length == 1 ? b = c(A.qsa(this[0], a)) : b = this.map(function () { | |
| return A.qsa(this, a) | |
| }), b | |
| }, | |
| closest: function (a, b) { | |
| var d = this[0], | |
| e = !1; | |
| typeof a == "object" && (e = c(a)); | |
| while (d && !(e ? e.indexOf(d) >= 0 : A.matches(d, a))) d = d !== b && !H(d) && d.parentNode; | |
| return c(d) | |
| }, | |
| parents: function (a) { | |
| var b = [], | |
| d = this; | |
| while (d.length > 0) d = c.map(d, function (a) { | |
| if ((a = a.parentNode) && !H(a) && b.indexOf(a) < 0) return b.push(a), a | |
| }); | |
| return U(b, a) | |
| }, | |
| parent: function (a) { | |
| return U(C(this.pluck("parentNode")), a) | |
| }, | |
| children: function (a) { | |
| return U(this.map(function () { | |
| return S(this) | |
| }), a) | |
| }, | |
| contents: function () { | |
| return this.map(function () { | |
| return f.call(this.childNodes) | |
| }) | |
| }, | |
| siblings: function (a) { | |
| return U(this.map(function (a, b) { | |
| return g.call(S(b.parentNode), function (a) { | |
| return a !== b | |
| }) | |
| }), a) | |
| }, | |
| empty: function () { | |
| return this.each(function () { | |
| this.innerHTML = "" | |
| }) | |
| }, | |
| pluck: function (a) { | |
| return c.map(this, function (b) { | |
| return b[a] | |
| }) | |
| }, | |
| show: function () { | |
| return this.each(function () { | |
| this.style.display == "none" && (this.style.display = null), k(this, "").getPropertyValue("display") == "none" && (this.style.display = R(this.nodeName)) | |
| }) | |
| }, | |
| replaceWith: function (a) { | |
| return this.before(a).remove() | |
| }, | |
| wrap: function (a) { | |
| var b = F(a); | |
| if (this[0] && !b) var d = c(a).get(0), | |
| e = d.parentNode || this.length > 1; | |
| return this.each(function (f) { | |
| c(this).wrapAll(b ? a.call(this, f) : e ? d.cloneNode(!0) : d) | |
| }) | |
| }, | |
| wrapAll: function (a) { | |
| if (this[0]) { | |
| c(this[0]).before(a = c(a)); | |
| var b; | |
| while ((b = a.children()).length) a = b.first(); | |
| c(a).append(this) | |
| } | |
| return this | |
| }, | |
| wrapInner: function (a) { | |
| var b = F(a); | |
| return this.each(function (d) { | |
| var e = c(this), | |
| f = e.contents(), | |
| g = b ? a.call(this, d) : a; | |
| f.length ? f.wrapAll(g) : e.append(g) | |
| }) | |
| }, | |
| unwrap: function () { | |
| return this.parent().each(function () { | |
| c(this).replaceWith(c(this).children()) | |
| }), this | |
| }, | |
| clone: function () { | |
| return this.map(function () { | |
| return this.cloneNode(!0) | |
| }) | |
| }, | |
| hide: function () { | |
| return this.css("display", "none") | |
| }, | |
| toggle: function (b) { | |
| return this.each(function () { | |
| var d = c(this); | |
| (b === a ? d.css("display") == "none" : b) ? d.show() : d.hide() | |
| }) | |
| }, | |
| prev: function (a) { | |
| return c(this.pluck("previousElementSibling")).filter(a || "*") | |
| }, | |
| next: function (a) { | |
| return c(this.pluck("nextElementSibling")).filter(a || "*") | |
| }, | |
| html: function (b) { | |
| return b === a ? this.length > 0 ? this[0].innerHTML : null : this.each(function (a) { | |
| var d = this.innerHTML; | |
| c(this).empty().append(V(this, b, a, d)) | |
| }) | |
| }, | |
| text: function (b) { | |
| return b === a ? this.length > 0 ? this[0].textContent : null : this.each(function () { | |
| this.textContent = b | |
| }) | |
| }, | |
| attr: function (c, d) { | |
| var e; | |
| return typeof c == "string" && d === a ? this.length == 0 || this[0].nodeType !== 1 ? a : c == "value" && this[0].nodeName == "INPUT" ? this.val() : !(e = this[0].getAttribute(c)) && c in this[0] ? this[0][c] : e : this.each(function (a) { | |
| if (this.nodeType !== 1) return; | |
| if (I(c)) | |
| for (b in c) W(this, b, c[b]); | |
| else W(this, c, V(this, d, a, this.getAttribute(c))) | |
| }) | |
| }, | |
| removeAttr: function (a) { | |
| return this.each(function () { | |
| this.nodeType === 1 && W(this, a) | |
| }) | |
| }, | |
| prop: function (b, c) { | |
| return c === a ? this[0] && this[0][b] : this.each(function (a) { | |
| this[b] = V(this, c, a, this[b]) | |
| }) | |
| }, | |
| data: function (b, c) { | |
| var d = this.attr("data-" + O(b), c); | |
| return d !== null ? Y(d) : a | |
| }, | |
| val: function (b) { | |
| return b === a ? this[0] && (this[0].multiple ? c(this[0]).find("option").filter(function (a) { | |
| return this.selected | |
| }).pluck("value") : this[0].value) : this.each(function (a) { | |
| this.value = V(this, b, a, this.value) | |
| }) | |
| }, | |
| offset: function (a) { | |
| if (a) return this.each(function (b) { | |
| var d = c(this), | |
| e = V(this, a, b, d.offset()), | |
| f = d.offsetParent().offset(), | |
| g = { | |
| top: e.top - f.top, | |
| left: e.left - f.left | |
| }; | |
| d.css("position") == "static" && (g.position = "relative"), d.css(g) | |
| }); | |
| if (this.length == 0) return null; | |
| var b = this[0].getBoundingClientRect(); | |
| return { | |
| left: b.left + window.pageXOffset, | |
| top: b.top + window.pageYOffset, | |
| width: Math.round(b.width), | |
| height: Math.round(b.height) | |
| } | |
| }, | |
| css: function (a, c) { | |
| if (arguments.length < 2 && typeof a == "string") return this[0] && (this[0].style[B(a)] || k(this[0], "").getPropertyValue(a)); | |
| var d = ""; | |
| if (E(a) == "string")!c && c !== 0 ? this.each(function () { | |
| this.style.removeProperty(O(a)) | |
| }) : d = O(a) + ":" + Q(a, c); | |
| else | |
| for (b in a)!a[b] && a[b] !== 0 ? this.each(function () { | |
| this.style.removeProperty(O(b)) | |
| }) : d += O(b) + ":" + Q(b, a[b]) + ";"; | |
| return this.each(function () { | |
| this.style.cssText += ";" + d | |
| }) | |
| }, | |
| index: function (a) { | |
| return a ? this.indexOf(c(a)[0]) : this.parent().children().indexOf(this[0]) | |
| }, | |
| hasClass: function (a) { | |
| return e.some.call(this, function (a) { | |
| return this.test(X(a)) | |
| }, P(a)) | |
| }, | |
| addClass: function (a) { | |
| return this.each(function (b) { | |
| d = []; | |
| var e = X(this), | |
| f = V(this, a, b, e); | |
| f.split(/\s+/g).forEach(function (a) { | |
| c(this).hasClass(a) || d.push(a) | |
| }, this), d.length && X(this, e + (e ? " " : "") + d.join(" ")) | |
| }) | |
| }, | |
| removeClass: function (b) { | |
| return this.each(function (c) { | |
| if (b === a) return X(this, ""); | |
| d = X(this), V(this, b, c, d).split(/\s+/g).forEach(function (a) { | |
| d = d.replace(P(a), " ") | |
| }), X(this, d.trim()) | |
| }) | |
| }, | |
| toggleClass: function (b, d) { | |
| return this.each(function (e) { | |
| var f = c(this), | |
| g = V(this, b, e, X(this)); | |
| g.split(/\s+/g).forEach(function (b) { | |
| (d === a ? !f.hasClass(b) : d) ? f.addClass(b) : f.removeClass(b) | |
| }) | |
| }) | |
| }, | |
| scrollTop: function () { | |
| if (!this.length) return; | |
| return "scrollTop" in this[0] ? this[0].scrollTop : this[0].scrollY | |
| }, | |
| position: function () { | |
| if (!this.length) return; | |
| var a = this[0], | |
| b = this.offsetParent(), | |
| d = this.offset(), | |
| e = o.test(b[0].nodeName) ? { | |
| top: 0, | |
| left: 0 | |
| } : b.offset(); | |
| return d.top -= parseFloat(c(a).css("margin-top")) || 0, d.left -= parseFloat(c(a).css("margin-left")) || 0, e.top += parseFloat(c(b[0]).css("border-top-width")) || 0, e.left += parseFloat(c(b[0]).css("border-left-width")) || 0, { | |
| top: d.top - e.top, | |
| left: d.left - e.left | |
| } | |
| }, | |
| offsetParent: function () { | |
| return this.map(function () { | |
| var a = this.offsetParent || h.body; | |
| while (a && !o.test(a.nodeName) && c(a).css("position") == "static") a = a.offsetParent; | |
| return a | |
| }) | |
| } | |
| }, c.fn.detach = c.fn.remove, ["width", "height"].forEach(function (b) { | |
| c.fn[b] = function (d) { | |
| var e, f = this[0], | |
| g = b.replace(/./, function (a) { | |
| return a[0].toUpperCase() | |
| }); | |
| return d === a ? G(f) ? f["inner" + g] : H(f) ? f.documentElement["offset" + g] : (e = this.offset()) && e[b] : this.each(function (a) { | |
| f = c(this), f.css(b, V(this, d, a, f[b]())) | |
| }) | |
| } | |
| }), q.forEach(function (a, b) { | |
| var d = b % 2; | |
| c.fn[a] = function () { | |
| var a, e = c.map(arguments, function (b) { | |
| return a = E(b), a == "object" || a == "array" || b == null ? b : A.fragment(b) | |
| }), | |
| f, g = this.length > 1; | |
| return e.length < 1 ? this : this.each(function (a, h) { | |
| f = d ? h : h.parentNode, h = b == 0 ? h.nextSibling : b == 1 ? h.firstChild : b == 2 ? h : null, e.forEach(function (a) { | |
| if (g) a = a.cloneNode(!0); | |
| else if (!f) return c(a).remove(); | |
| Z(f.insertBefore(a, h), function (a) { | |
| a.nodeName != null && a.nodeName.toUpperCase() === "SCRIPT" && (!a.type || a.type === "text/javascript") && !a.src && window.eval.call(window, a.innerHTML) | |
| }) | |
| }) | |
| }) | |
| }, c.fn[d ? a + "To" : "insert" + (b ? "Before" : "After")] = function (b) { | |
| return c(b)[a](this), this | |
| } | |
| }), A.Z.prototype = c.fn, A.uniq = C, A.deserializeValue = Y, c.zepto = A, c | |
| }(); | |
| window.Zepto = Zepto, "$" in window || (window.$ = Zepto), | |
| function (a) { | |
| function b(a) { | |
| var b = this.os = {}, c = this.browser = {}, d = a.match(/WebKit\/([\d.]+)/), | |
| e = a.match(/(Android)\s+([\d.]+)/), | |
| f = a.match(/(iPad).*OS\s([\d_]+)/), | |
| g = !f && a.match(/(iPhone\sOS)\s([\d_]+)/), | |
| h = a.match(/(webOS|hpwOS)[\s\/]([\d.]+)/), | |
| i = h && a.match(/TouchPad/), | |
| j = a.match(/Kindle\/([\d.]+)/), | |
| k = a.match(/Silk\/([\d._]+)/), | |
| l = a.match(/(BlackBerry).*Version\/([\d.]+)/), | |
| m = a.match(/(BB10).*Version\/([\d.]+)/), | |
| n = a.match(/(RIM\sTablet\sOS)\s([\d.]+)/), | |
| o = a.match(/PlayBook/), | |
| p = a.match(/Chrome\/([\d.]+)/) || a.match(/CriOS\/([\d.]+)/), | |
| q = a.match(/Firefox\/([\d.]+)/); | |
| if (c.webkit = !! d) c.version = d[1]; | |
| e && (b.android = !0, b.version = e[2]), g && (b.ios = b.iphone = !0, b.version = g[2].replace(/_/g, ".")), f && (b.ios = b.ipad = !0, b.version = f[2].replace(/_/g, ".")), h && (b.webos = !0, b.version = h[2]), i && (b.touchpad = !0), l && (b.blackberry = !0, b.version = l[2]), m && (b.bb10 = !0, b.version = m[2]), n && (b.rimtabletos = !0, b.version = n[2]), o && (c.playbook = !0), j && (b.kindle = !0, b.version = j[1]), k && (c.silk = !0, c.version = k[1]), !k && b.android && a.match(/Kindle Fire/) && (c.silk = !0), p && (c.chrome = !0, c.version = p[1]), q && (c.firefox = !0, c.version = q[1]), b.tablet = !! (f || o || e && !a.match(/Mobile/) || q && a.match(/Tablet/)), b.phone = !b.tablet && !! (e || g || h || l || m || p && a.match(/Android/) || p && a.match(/CriOS\/([\d.]+)/) || q && a.match(/Mobile/)) | |
| } | |
| b.call(a, navigator.userAgent), a.__detect = b | |
| }(Zepto), | |
| function (a) { | |
| function g(a) { | |
| return a._zid || (a._zid = d++) | |
| } | |
| function h(a, b, d, e) { | |
| b = i(b); | |
| if (b.ns) var f = j(b.ns); | |
| return (c[g(a)] || []).filter(function (a) { | |
| return a && (!b.e || a.e == b.e) && (!b.ns || f.test(a.ns)) && (!d || g(a.fn) === g(d)) && (!e || a.sel == e) | |
| }) | |
| } | |
| function i(a) { | |
| var b = ("" + a).split("."); | |
| return { | |
| e: b[0], | |
| ns: b.slice(1).sort().join(" ") | |
| } | |
| } | |
| function j(a) { | |
| return new RegExp("(?:^| )" + a.replace(" ", " .* ?") + "(?: |$)") | |
| } | |
| function k(b, c, d) { | |
| a.type(b) != "string" ? a.each(b, d) : b.split(/\s/).forEach(function (a) { | |
| d(a, c) | |
| }) | |
| } | |
| function l(a, b) { | |
| return a.del && (a.e == "focus" || a.e == "blur") || !! b | |
| } | |
| function m(a) { | |
| return f[a] || a | |
| } | |
| function n(b, d, e, h, j, n) { | |
| var o = g(b), | |
| p = c[o] || (c[o] = []); | |
| k(d, e, function (c, d) { | |
| var e = i(c); | |
| e.fn = d, e.sel = h, e.e in f && (d = function (b) { | |
| var c = b.relatedTarget; | |
| if (!c || c !== this && !a.contains(this, c)) return e.fn.apply(this, arguments) | |
| }), e.del = j && j(d, c); | |
| var g = e.del || d; | |
| e.proxy = function (a) { | |
| var c = g.apply(b, [a].concat(a.data)); | |
| return c === !1 && (a.preventDefault(), a.stopPropagation()), c | |
| }, e.i = p.length, p.push(e), b.addEventListener(m(e.e), e.proxy, l(e, n)) | |
| }) | |
| } | |
| function o(a, b, d, e, f) { | |
| var i = g(a); | |
| k(b || "", d, function (b, d) { | |
| h(a, b, d, e).forEach(function (b) { | |
| delete c[i][b.i], a.removeEventListener(m(b.e), b.proxy, l(b, f)) | |
| }) | |
| }) | |
| } | |
| function t(b) { | |
| var c, d = { | |
| originalEvent: b | |
| }; | |
| for (c in b)!r.test(c) && b[c] !== undefined && (d[c] = b[c]); | |
| return a.each(s, function (a, c) { | |
| d[a] = function () { | |
| return this[c] = p, b[a].apply(b, arguments) | |
| }, d[c] = q | |
| }), d | |
| } | |
| function u(a) { | |
| if (!("defaultPrevented" in a)) { | |
| a.defaultPrevented = !1; | |
| var b = a.preventDefault; | |
| a.preventDefault = function () { | |
| this.defaultPrevented = !0, b.call(this) | |
| } | |
| } | |
| } | |
| var b = a.zepto.qsa, | |
| c = {}, d = 1, | |
| e = {}, f = { | |
| mouseenter: "mouseover", | |
| mouseleave: "mouseout" | |
| }; | |
| e.click = e.mousedown = e.mouseup = e.mousemove = "MouseEvents", a.event = { | |
| add: n, | |
| remove: o | |
| }, a.proxy = function (b, c) { | |
| if (a.isFunction(b)) { | |
| var d = function () { | |
| return b.apply(c, arguments) | |
| }; | |
| return d._zid = g(b), d | |
| } | |
| if (typeof c == "string") return a.proxy(b[c], b); | |
| throw new TypeError("expected function") | |
| }, a.fn.bind = function (a, b) { | |
| return this.each(function () { | |
| n(this, a, b) | |
| }) | |
| }, a.fn.unbind = function (a, b) { | |
| return this.each(function () { | |
| o(this, a, b) | |
| }) | |
| }, a.fn.one = function (a, b) { | |
| return this.each(function (c, d) { | |
| n(this, a, b, null, function (a, b) { | |
| return function () { | |
| var c = a.apply(d, arguments); | |
| return o(d, b, a), c | |
| } | |
| }) | |
| }) | |
| }; | |
| var p = function () { | |
| return !0 | |
| }, q = function () { | |
| return !1 | |
| }, r = /^([A-Z]|layer[XY]$)/, | |
| s = { | |
| preventDefault: "isDefaultPrevented", | |
| stopImmediatePropagation: "isImmediatePropagationStopped", | |
| stopPropagation: "isPropagationStopped" | |
| }; | |
| a.fn.delegate = function (b, c, d) { | |
| return this.each(function (e, f) { | |
| n(f, c, d, b, function (c) { | |
| return function (d) { | |
| var e, g = a(d.target).closest(b, f).get(0); | |
| if (g) return e = a.extend(t(d), { | |
| currentTarget: g, | |
| liveFired: f | |
| }), c.apply(g, [e].concat([].slice.call(arguments, 1))) | |
| } | |
| }) | |
| }) | |
| }, a.fn.undelegate = function (a, b, c) { | |
| return this.each(function () { | |
| o(this, b, c, a) | |
| }) | |
| }, a.fn.live = function (b, c) { | |
| return a(document.body).delegate(this.selector, b, c), this | |
| }, a.fn.die = function (b, c) { | |
| return a(document.body).undelegate(this.selector, b, c), this | |
| }, a.fn.on = function (b, c, d) { | |
| return !c || a.isFunction(c) ? this.bind(b, c || d) : this.delegate(c, b, d) | |
| }, a.fn.off = function (b, c, d) { | |
| return !c || a.isFunction(c) ? this.unbind(b, c || d) : this.undelegate(c, b, d) | |
| }, a.fn.trigger = function (b, c) { | |
| if (typeof b == "string" || a.isPlainObject(b)) b = a.Event(b); | |
| return u(b), b.data = c, this.each(function () { | |
| "dispatchEvent" in this && this.dispatchEvent(b) | |
| }) | |
| }, a.fn.triggerHandler = function (b, c) { | |
| var d, e; | |
| return this.each(function (f, g) { | |
| d = t(typeof b == "string" ? a.Event(b) : b), d.data = c, d.target = g, a.each(h(g, b.type || b), function (a, b) { | |
| e = b.proxy(d); | |
| if (d.isImmediatePropagationStopped()) return !1 | |
| }) | |
| }), e | |
| }, "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function (b) { | |
| a.fn[b] = function (a) { | |
| return a ? this.bind(b, a) : this.trigger(b) | |
| } | |
| }), ["focus", "blur"].forEach(function (b) { | |
| a.fn[b] = function (a) { | |
| return a ? this.bind(b, a) : this.each(function () { | |
| try { | |
| this[b]() | |
| } catch (a) {} | |
| }), this | |
| } | |
| }), a.Event = function (a, b) { | |
| typeof a != "string" && (b = a, a = b.type); | |
| var c = document.createEvent(e[a] || "Events"), | |
| d = !0; | |
| if (b) | |
| for (var f in b) f == "bubbles" ? d = !! b[f] : c[f] = b[f]; | |
| return c.initEvent(a, d, !0, null, null, null, null, null, null, null, null, null, null, null, null), c.isDefaultPrevented = function () { | |
| return this.defaultPrevented | |
| }, c | |
| } | |
| }(Zepto), | |
| function ($) { | |
| function triggerAndReturn(a, b, c) { | |
| var d = $.Event(b); | |
| return $(a).trigger(d, c), !d.defaultPrevented | |
| } | |
| function triggerGlobal(a, b, c, d) { | |
| if (a.global) return triggerAndReturn(b || document, c, d) | |
| } | |
| function ajaxStart(a) { | |
| a.global && $.active++ === 0 && triggerGlobal(a, null, "ajaxStart") | |
| } | |
| function ajaxStop(a) { | |
| a.global && !--$.active && triggerGlobal(a, null, "ajaxStop") | |
| } | |
| function ajaxBeforeSend(a, b) { | |
| var c = b.context; | |
| if (b.beforeSend.call(c, a, b) === !1 || triggerGlobal(b, c, "ajaxBeforeSend", [a, b]) === !1) return !1; | |
| triggerGlobal(b, c, "ajaxSend", [a, b]) | |
| } | |
| function ajaxSuccess(a, b, c) { | |
| var d = c.context, | |
| e = "success"; | |
| c.success.call(d, a, e, b), triggerGlobal(c, d, "ajaxSuccess", [b, c, a]), ajaxComplete(e, b, c) | |
| } | |
| function ajaxError(a, b, c, d) { | |
| var e = d.context; | |
| d.error.call(e, c, b, a), triggerGlobal(d, e, "ajaxError", [c, d, a]), ajaxComplete(b, c, d) | |
| } | |
| function ajaxComplete(a, b, c) { | |
| var d = c.context; | |
| c.complete.call(d, b, a), triggerGlobal(c, d, "ajaxComplete", [b, c]), ajaxStop(c) | |
| } | |
| function empty() {} | |
| function mimeToDataType(a) { | |
| return a && (a = a.split(";", 2)[0]), a && (a == htmlType ? "html" : a == jsonType ? "json" : scriptTypeRE.test(a) ? "script" : xmlTypeRE.test(a) && "xml") || "text" | |
| } | |
| function appendQuery(a, b) { | |
| return (a + "&" + b).replace(/[&?]{1,2}/, "?") | |
| } | |
| function serializeData(a) { | |
| a.processData && a.data && $.type(a.data) != "string" && (a.data = $.param(a.data, a.traditional)), a.data && (!a.type || a.type.toUpperCase() == "GET") && (a.url = appendQuery(a.url, a.data)) | |
| } | |
| function parseArguments(a, b, c, d) { | |
| var e = !$.isFunction(b); | |
| return { | |
| url: a, | |
| data: e ? b : undefined, | |
| success: e ? $.isFunction(c) ? c : undefined : b, | |
| dataType: e ? d || c : c | |
| } | |
| } | |
| function serialize(a, b, c, d) { | |
| var e, f = $.isArray(b); | |
| $.each(b, function (b, g) { | |
| e = $.type(g), d && (b = c ? d : d + "[" + (f ? "" : b) + "]"), !d && f ? a.add(g.name, g.value) : e == "array" || !c && e == "object" ? serialize(a, g, c, b) : a.add(b, g) | |
| }) | |
| } | |
| var jsonpID = 0, | |
| document = window.document, | |
| key, name, rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, | |
| scriptTypeRE = /^(?:text|application)\/javascript/i, | |
| xmlTypeRE = /^(?:text|application)\/xml/i, | |
| jsonType = "application/json", | |
| htmlType = "text/html", | |
| blankRE = /^\s*$/; | |
| $.active = 0, $.ajaxJSONP = function (a) { | |
| if ("type" in a) { | |
| var b = "jsonp" + ++jsonpID, | |
| c = document.createElement("script"), | |
| d = function () { | |
| clearTimeout(g), $(c).remove(), delete window[b] | |
| }, e = function (c) { | |
| d(); | |
| if (!c || c == "timeout") window[b] = empty; | |
| ajaxError(null, c || "abort", f, a) | |
| }, f = { | |
| abort: e | |
| }, g; | |
| return ajaxBeforeSend(f, a) === !1 ? (e("abort"), !1) : (window[b] = function (b) { | |
| d(), ajaxSuccess(b, f, a) | |
| }, c.onerror = function () { | |
| e("error") | |
| }, c.src = a.url.replace(/=\?/, "=" + b), $("head").append(c), a.timeout > 0 && (g = setTimeout(function () { | |
| e("timeout") | |
| }, a.timeout)), f) | |
| } | |
| return $.ajax(a) | |
| }, $.ajaxSettings = { | |
| type: "GET", | |
| beforeSend: empty, | |
| success: empty, | |
| error: empty, | |
| complete: empty, | |
| context: null, | |
| global: !0, | |
| xhr: function () { | |
| return new window.XMLHttpRequest | |
| }, | |
| accepts: { | |
| script: "text/javascript, application/javascript", | |
| json: jsonType, | |
| xml: "application/xml, text/xml", | |
| html: htmlType, | |
| text: "text/plain" | |
| }, | |
| crossDomain: !1, | |
| timeout: 0, | |
| processData: !0, | |
| cache: !0 | |
| }, $.ajax = function (options) { | |
| var settings = $.extend({}, options || {}); | |
| for (key in $.ajaxSettings) settings[key] === undefined && (settings[key] = $.ajaxSettings[key]); | |
| ajaxStart(settings), settings.crossDomain || (settings.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(settings.url) && RegExp.$2 != window.location.host), settings.url || (settings.url = window.location.toString()), serializeData(settings), settings.cache === !1 && (settings.url = appendQuery(settings.url, "_=" + Date.now())); | |
| var dataType = settings.dataType, | |
| hasPlaceholder = /=\?/.test(settings.url); | |
| if (dataType == "jsonp" || hasPlaceholder) return hasPlaceholder || (settings.url = appendQuery(settings.url, "callback=?")), $.ajaxJSONP(settings); | |
| var mime = settings.accepts[dataType], | |
| baseHeaders = {}, protocol = /^([\w-]+:)\/\//.test(settings.url) ? RegExp.$1 : window.location.protocol, | |
| xhr = settings.xhr(), | |
| abortTimeout; | |
| settings.crossDomain || (baseHeaders["X-Requested-With"] = "XMLHttpRequest"), mime && (baseHeaders.Accept = mime, mime.indexOf(",") > -1 && (mime = mime.split(",", 2)[0]), xhr.overrideMimeType && xhr.overrideMimeType(mime)); | |
| if (settings.contentType || settings.contentType !== !1 && settings.data && settings.type.toUpperCase() != "GET") baseHeaders["Content-Type"] = settings.contentType || "application/x-www-form-urlencoded"; | |
| settings.headers = $.extend(baseHeaders, settings.headers || {}), xhr.onreadystatechange = function () { | |
| if (xhr.readyState == 4) { | |
| xhr.onreadystatechange = empty, clearTimeout(abortTimeout); | |
| var result, error = !1; | |
| if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304 || xhr.status == 0 && protocol == "file:") { | |
| dataType = dataType || mimeToDataType(xhr.getResponseHeader("content-type")), result = xhr.responseText; | |
| try { | |
| dataType == "script" ? (1, eval)(result) : dataType == "xml" ? result = xhr.responseXML : dataType == "json" && (result = blankRE.test(result) ? null : $.parseJSON(result)) | |
| } catch (e) { | |
| error = e | |
| } | |
| error ? ajaxError(error, "parsererror", xhr, settings) : ajaxSuccess(result, xhr, settings) | |
| } else ajaxError(null, xhr.status ? "error" : "abort", xhr, settings) | |
| } | |
| }; | |
| var async = "async" in settings ? settings.async : !0; | |
| xhr.open(settings.type, settings.url, async); | |
| for (name in settings.headers) xhr.setRequestHeader(name, settings.headers[name]); | |
| return ajaxBeforeSend(xhr, settings) === !1 ? (xhr.abort(), !1) : (settings.timeout > 0 && (abortTimeout = setTimeout(function () { | |
| xhr.onreadystatechange = empty, xhr.abort(), ajaxError(null, "timeout", xhr, settings) | |
| }, settings.timeout)), xhr.send(settings.data ? settings.data : null), xhr) | |
| }, $.get = function (a, b, c, d) { | |
| return $.ajax(parseArguments.apply(null, arguments)) | |
| }, $.post = function (a, b, c, d) { | |
| var e = parseArguments.apply(null, arguments); | |
| return e.type = "POST", $.ajax(e) | |
| }, $.getJSON = function (a, b, c) { | |
| var d = parseArguments.apply(null, arguments); | |
| return d.dataType = "json", $.ajax(d) | |
| }, $.fn.load = function (a, b, c) { | |
| if (!this.length) return this; | |
| var d = this, | |
| e = a.split(/\s/), | |
| f, g = parseArguments(a, b, c), | |
| h = g.success; | |
| return e.length > 1 && (g.url = e[0], f = e[1]), g.success = function (a) { | |
| d.html(f ? $("<div>").html(a.replace(rscript, "")).find(f) : a), h && h.apply(d, arguments) | |
| }, $.ajax(g), this | |
| }; | |
| var escape = encodeURIComponent; | |
| $.param = function (a, b) { | |
| var c = []; | |
| return c.add = function (a, b) { | |
| this.push(escape(a) + "=" + escape(b)) | |
| }, serialize(c, a, b), c.join("&").replace(/%20/g, "+") | |
| } | |
| }(Zepto), | |
| function (a) { | |
| a.fn.serializeArray = function () { | |
| var b = [], | |
| c; | |
| return a(Array.prototype.slice.call(this.get(0).elements)).each(function () { | |
| c = a(this); | |
| var d = c.attr("type"); | |
| this.nodeName.toLowerCase() != "fieldset" && !this.disabled && d != "submit" && d != "reset" && d != "button" && (d != "radio" && d != "checkbox" || this.checked) && b.push({ | |
| name: c.attr("name"), | |
| value: c.val() | |
| }) | |
| }), b | |
| }, a.fn.serialize = function () { | |
| var a = []; | |
| return this.serializeArray().forEach(function (b) { | |
| a.push(encodeURIComponent(b.name) + "=" + encodeURIComponent(b.value)) | |
| }), a.join("&") | |
| }, a.fn.submit = function (b) { | |
| if (b) this.bind("submit", b); | |
| else if (this.length) { | |
| var c = a.Event("submit"); | |
| this.eq(0).trigger(c), c.defaultPrevented || this.get(0).submit() | |
| } | |
| return this | |
| } | |
| }(Zepto), | |
| function (a, b) { | |
| function s(a) { | |
| return t(a.replace(/([a-z])([A-Z])/, "$1-$2")) | |
| } | |
| function t(a) { | |
| return a.toLowerCase() | |
| } | |
| function u(a) { | |
| return d ? d + a : t(a) | |
| } | |
| var c = "", | |
| d, e, f, g = { | |
| Webkit: "webkit", | |
| Moz: "", | |
| O: "o", | |
| ms: "MS" | |
| }, h = window.document, | |
| i = h.createElement("div"), | |
| j = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i, | |
| k, l, m, n, o, p, q, r = {}; | |
| a.each(g, function (a, e) { | |
| if (i.style[a + "TransitionProperty"] !== b) return c = "-" + t(a) + "-", d = e, !1 | |
| }), k = c + "transform", r[l = c + "transition-property"] = r[m = c + "transition-duration"] = r[n = c + "transition-timing-function"] = r[o = c + "animation-name"] = r[p = c + "animation-duration"] = r[q = c + "animation-timing-function"] = "", a.fx = { | |
| off: d === b && i.style.transitionProperty === b, | |
| speeds: { | |
| _default: 400, | |
| fast: 200, | |
| slow: 600 | |
| }, | |
| cssPrefix: c, | |
| transitionEnd: u("TransitionEnd"), | |
| animationEnd: u("AnimationEnd") | |
| }, a.fn.animate = function (b, c, d, e) { | |
| return a.isPlainObject(c) && (d = c.easing, e = c.complete, c = c.duration), c && (c = (typeof c == "number" ? c : a.fx.speeds[c] || a.fx.speeds._default) / 1e3), this.anim(b, c, d, e) | |
| }, a.fn.anim = function (c, d, e, f) { | |
| var g, h = {}, i, t = "", | |
| u = this, | |
| v, w = a.fx.transitionEnd; | |
| d === b && (d = .4), a.fx.off && (d = 0); | |
| if (typeof c == "string") h[o] = c, h[p] = d + "s", h[q] = e || "linear", w = a.fx.animationEnd; | |
| else { | |
| i = []; | |
| for (g in c) j.test(g) ? t += g + "(" + c[g] + ") " : (h[g] = c[g], i.push(s(g))); | |
| t && (h[k] = t, i.push(k)), d > 0 && typeof c == "object" && (h[l] = i.join(", "), h[m] = d + "s", h[n] = e || "linear") | |
| } | |
| return v = function (b) { | |
| if (typeof b != "undefined") { | |
| if (b.target !== b.currentTarget) return; | |
| a(b.target).unbind(w, v) | |
| } | |
| a(this).css(r), f && f.call(this) | |
| }, d > 0 && this.bind(w, v), this.size() && this.get(0).clientLeft, this.css(h), d <= 0 && setTimeout(function () { | |
| u.each(function () { | |
| v.call(this) | |
| }) | |
| }, 0), this | |
| }, i = null | |
| }(Zepto), | |
| function () { | |
| $(document).on("click", ".js-show-global-nav", function () { | |
| return $(document.body).toggleClass("nav-is-open"), !1 | |
| }), $(document).on("change", ".js-mobile-period-select", function () { | |
| window.location.href = this.value | |
| }), $(function () { | |
| var a; | |
| a = $(".js-serverstats"); | |
| if (a.length) { | |
| a.show(); | |
| if (window.scrollY === 0) return window.scrollTo(window.scrollX, a.height()) | |
| } | |
| }) | |
| }.call(this); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment