veezard
Version:
TECHB fork from veeva. Veeva CLM Generator & Workflow for building iRep Presentations.
1,136 lines (1,080 loc) • 35.4 kB
JavaScript
/* Zepto v1.1.4 - zepto event ajax form ie - zeptojs.com/license */
var Zepto = function () {
function L(t) {
return null == t ? String(t) : j[S.call(t)] || "object"
}
function Z(t) {
return "function" == L(t)
}
function $(t) {
return null != t && t == t.window
}
function _(t) {
return null != t && t.nodeType == t.DOCUMENT_NODE
}
function D(t) {
return "object" == L(t)
}
function R(t) {
return D(t) && !$(t) && Object.getPrototypeOf(t) == Object.prototype
}
function M(t) {
return "number" == typeof t.length
}
function k(t) {
return s.call(t, function (t) {
return null != t
})
}
function z(t) {
return t.length > 0 ? n.fn.concat.apply([], t) : t
}
function F(t) {
return t.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 q(t) {
return t in f ? f[t] : f[t] = new RegExp("(^|\\s)" + t + "(\\s|$)")
}
function H(t, e) {
return "number" != typeof e || c[F(t)] ? e : e + "px"
}
function I(t) {
var e, n;
return u[t] || (e = a.createElement(t), a.body.appendChild(e), n = getComputedStyle(e, "").getPropertyValue("display"), e.parentNode.removeChild(e), "none" == n && (n = "block"), u[t] = n), u[t]
}
function V(t) {
return "children" in t ? o.call(t.children) : n.map(t.childNodes, function (t) {
return 1 == t.nodeType ? t : void 0
})
}
function B(n, i, r) {
for (e in i) r && (R(i[e]) || A(i[e])) ? (R(i[e]) && !R(n[e]) && (n[e] = {}), A(i[e]) && !A(n[e]) && (n[e] = []), B(n[e], i[e], r)) : i[e] !== t && (n[e] = i[e])
}
function U(t, e) {
return null == e ? n(t) : n(t).filter(e)
}
function J(t, e, n, i) {
return Z(e) ? e.call(t, n, i) : e
}
function X(t, e, n) {
null == n ? t.removeAttribute(e) : t.setAttribute(e, n)
}
function W(e, n) {
var i = e.className,
r = i && i.baseVal !== t;
return n === t ? r ? i.baseVal : i : void(r ? i.baseVal = n : e.className = n)
}
function Y(t) {
var e;
try {
return t ? "true" == t || ("false" == t ? !1 : "null" == t ? null : /^0/.test(t) || isNaN(e = Number(t)) ? /^[\[\{]/.test(t) ? n.parseJSON(t) : t : e) : t
} catch (i) {
return t
}
}
function G(t, e) {
e(t);
for (var n = 0, i = t.childNodes.length; i > n; n++) G(t.childNodes[n], e)
}
var t, e, n, i, C, N, r = [],
o = r.slice,
s = r.filter,
a = window.document,
u = {},
f = {},
c = {
"column-count": 1,
columns: 1,
"font-weight": 1,
"line-height": 1,
opacity: 1,
"z-index": 1,
zoom: 1
},
l = /^\s*<(\w+|!)[^>]*>/,
h = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
p = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
d = /^(?:body|html)$/i,
m = /([A-Z])/g,
g = ["val", "css", "html", "text", "data", "width", "height", "offset"],
v = ["after", "prepend", "before", "append"],
y = a.createElement("table"),
x = a.createElement("tr"),
b = {
tr: a.createElement("tbody"),
tbody: y,
thead: y,
tfoot: y,
td: x,
th: x,
"*": a.createElement("div")
},
w = /complete|loaded|interactive/,
E = /^[\w-]*$/,
j = {},
S = j.toString,
T = {},
O = a.createElement("div"),
P = {
tabindex: "tabIndex",
readonly: "readOnly",
"for": "htmlFor",
"class": "className",
maxlength: "maxLength",
cellspacing: "cellSpacing",
cellpadding: "cellPadding",
rowspan: "rowSpan",
colspan: "colSpan",
usemap: "useMap",
frameborder: "frameBorder",
contenteditable: "contentEditable"
},
A = Array.isArray || function (t) {
return t instanceof Array
};
return T.matches = function (t, e) {
if (!e || !t || 1 !== t.nodeType) return !1;
var n = t.webkitMatchesSelector || t.mozMatchesSelector || t.oMatchesSelector || t.matchesSelector;
if (n) return n.call(t, e);
var i, r = t.parentNode,
o = !r;
return o && (r = O).appendChild(t), i = ~T.qsa(r, e).indexOf(t), o && O.removeChild(t), i
}, C = function (t) {
return t.replace(/-+(.)?/g, function (t, e) {
return e ? e.toUpperCase() : ""
})
}, N = function (t) {
return s.call(t, function (e, n) {
return t.indexOf(e) == n
})
}, T.fragment = function (e, i, r) {
var s, u, f;
return h.test(e) && (s = n(a.createElement(RegExp.$1))), s || (e.replace && (e = e.replace(p, "<$1></$2>")), i === t && (i = l.test(e) && RegExp.$1), i in b || (i = "*"), f = b[i], f.innerHTML = "" + e, s = n.each(o.call(f.childNodes), function () {
f.removeChild(this)
})), R(r) && (u = n(s), n.each(r, function (t, e) {
g.indexOf(t) > -1 ? u[t](e) : u.attr(t, e)
})), s
}, T.Z = function (t, e) {
return t = t || [], t.__proto__ = n.fn, t.selector = e || "", t
}, T.isZ = function (t) {
return t instanceof T.Z
}, T.init = function (e, i) {
var r;
if (!e) return T.Z();
if ("string" == typeof e)
if (e = e.trim(), "<" == e[0] && l.test(e)) r = T.fragment(e, RegExp.$1, i), e = null;
else {
if (i !== t) return n(i).find(e);
r = T.qsa(a, e)
} else {
if (Z(e)) return n(a).ready(e);
if (T.isZ(e)) return e;
if (A(e)) r = k(e);
else if (D(e)) r = [e], e = null;
else if (l.test(e)) r = T.fragment(e.trim(), RegExp.$1, i), e = null;
else {
if (i !== t) return n(i).find(e);
r = T.qsa(a, e)
}
}
return T.Z(r, e)
}, n = function (t, e) {
return T.init(t, e)
}, n.extend = function (t) {
var e, n = o.call(arguments, 1);
return "boolean" == typeof t && (e = t, t = n.shift()), n.forEach(function (n) {
B(t, n, e)
}), t
}, T.qsa = function (t, e) {
var n, i = "#" == e[0],
r = !i && "." == e[0],
s = i || r ? e.slice(1) : e,
a = E.test(s);
return _(t) && a && i ? (n = t.getElementById(s)) ? [n] : [] : 1 !== t.nodeType && 9 !== t.nodeType ? [] : o.call(a && !i ? r ? t.getElementsByClassName(s) : t.getElementsByTagName(e) : t.querySelectorAll(e))
}, n.contains = a.documentElement.contains ? function (t, e) {
return t !== e && t.contains(e)
} : function (t, e) {
for (; e && (e = e.parentNode);)
if (e === t) return !0;
return !1
}, n.type = L, n.isFunction = Z, n.isWindow = $, n.isArray = A, n.isPlainObject = R, n.isEmptyObject = function (t) {
var e;
for (e in t) return !1;
return !0
}, n.inArray = function (t, e, n) {
return r.indexOf.call(e, t, n)
}, n.camelCase = C, n.trim = function (t) {
return null == t ? "" : String.prototype.trim.call(t)
}, n.uuid = 0, n.support = {}, n.expr = {}, n.map = function (t, e) {
var n, r, o, i = [];
if (M(t))
for (r = 0; r < t.length; r++) n = e(t[r], r), null != n && i.push(n);
else
for (o in t) n = e(t[o], o), null != n && i.push(n);
return z(i)
}, n.each = function (t, e) {
var n, i;
if (M(t)) {
for (n = 0; n < t.length; n++)
if (e.call(t[n], n, t[n]) === !1) return t
} else
for (i in t)
if (e.call(t[i], i, t[i]) === !1) return t; return t
}, n.grep = function (t, e) {
return s.call(t, e)
}, window.JSON && (n.parseJSON = JSON.parse), n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (t, e) {
j["[object " + e + "]"] = e.toLowerCase()
}), n.fn = {
forEach: r.forEach,
reduce: r.reduce,
push: r.push,
sort: r.sort,
indexOf: r.indexOf,
concat: r.concat,
map: function (t) {
return n(n.map(this, function (e, n) {
return t.call(e, n, e)
}))
},
slice: function () {
return n(o.apply(this, arguments))
},
ready: function (t) {
return w.test(a.readyState) && a.body ? t(n) : a.addEventListener("DOMContentLoaded", function () {
t(n)
}, !1), this
},
get: function (e) {
return e === t ? o.call(this) : this[e >= 0 ? e : e + this.length]
},
toArray: function () {
return this.get()
},
size: function () {
return this.length
},
remove: function () {
return this.each(function () {
null != this.parentNode && this.parentNode.removeChild(this)
})
},
each: function (t) {
return r.every.call(this, function (e, n) {
return t.call(e, n, e) !== !1
}), this
},
filter: function (t) {
return Z(t) ? this.not(this.not(t)) : n(s.call(this, function (e) {
return T.matches(e, t)
}))
},
add: function (t, e) {
return n(N(this.concat(n(t, e))))
},
is: function (t) {
return this.length > 0 && T.matches(this[0], t)
},
not: function (e) {
var i = [];
if (Z(e) && e.call !== t) this.each(function (t) {
e.call(this, t) || i.push(this)
});
else {
var r = "string" == typeof e ? this.filter(e) : M(e) && Z(e.item) ? o.call(e) : n(e);
this.forEach(function (t) {
r.indexOf(t) < 0 && i.push(t)
})
}
return n(i)
},
has: function (t) {
return this.filter(function () {
return D(t) ? n.contains(this, t) : n(this).find(t).size()
})
},
eq: function (t) {
return -1 === t ? this.slice(t) : this.slice(t, +t + 1)
},
first: function () {
var t = this[0];
return t && !D(t) ? t : n(t)
},
last: function () {
var t = this[this.length - 1];
return t && !D(t) ? t : n(t)
},
find: function (t) {
var e, i = this;
return e = t ? "object" == typeof t ? n(t).filter(function () {
var t = this;
return r.some.call(i, function (e) {
return n.contains(e, t)
})
}) : 1 == this.length ? n(T.qsa(this[0], t)) : this.map(function () {
return T.qsa(this, t)
}) : []
},
closest: function (t, e) {
var i = this[0],
r = !1;
for ("object" == typeof t && (r = n(t)); i && !(r ? r.indexOf(i) >= 0 : T.matches(i, t));) i = i !== e && !_(i) && i.parentNode;
return n(i)
},
parents: function (t) {
for (var e = [], i = this; i.length > 0;) i = n.map(i, function (t) {
return (t = t.parentNode) && !_(t) && e.indexOf(t) < 0 ? (e.push(t), t) : void 0
});
return U(e, t)
},
parent: function (t) {
return U(N(this.pluck("parentNode")), t)
},
children: function (t) {
return U(this.map(function () {
return V(this)
}), t)
},
contents: function () {
return this.map(function () {
return o.call(this.childNodes)
})
},
siblings: function (t) {
return U(this.map(function (t, e) {
return s.call(V(e.parentNode), function (t) {
return t !== e
})
}), t)
},
empty: function () {
return this.each(function () {
this.innerHTML = ""
})
},
pluck: function (t) {
return n.map(this, function (e) {
return e[t]
})
},
show: function () {
return this.each(function () {
"none" == this.style.display && (this.style.display = ""), "none" == getComputedStyle(this, "").getPropertyValue("display") && (this.style.display = I(this.nodeName))
})
},
replaceWith: function (t) {
return this.before(t).remove()
},
wrap: function (t) {
var e = Z(t);
if (this[0] && !e) var i = n(t).get(0),
r = i.parentNode || this.length > 1;
return this.each(function (o) {
n(this).wrapAll(e ? t.call(this, o) : r ? i.cloneNode(!0) : i)
})
},
wrapAll: function (t) {
if (this[0]) {
n(this[0]).before(t = n(t));
for (var e;
(e = t.children()).length;) t = e.first();
n(t).append(this)
}
return this
},
wrapInner: function (t) {
var e = Z(t);
return this.each(function (i) {
var r = n(this),
o = r.contents(),
s = e ? t.call(this, i) : t;
o.length ? o.wrapAll(s) : r.append(s)
})
},
unwrap: function () {
return this.parent().each(function () {
n(this).replaceWith(n(this).children())
}), this
},
clone: function () {
return this.map(function () {
return this.cloneNode(!0)
})
},
hide: function () {
return this.css("display", "none")
},
toggle: function (e) {
return this.each(function () {
var i = n(this);
(e === t ? "none" == i.css("display") : e) ? i.show() : i.hide()
})
},
prev: function (t) {
return n(this.pluck("previousElementSibling")).filter(t || "*")
},
next: function (t) {
return n(this.pluck("nextElementSibling")).filter(t || "*")
},
html: function (t) {
return 0 in arguments ? this.each(function (e) {
var i = this.innerHTML;
n(this).empty().append(J(this, t, e, i))
}) : 0 in this ? this[0].innerHTML : null
},
text: function (t) {
return 0 in arguments ? this.each(function (e) {
var n = J(this, t, e, this.textContent);
this.textContent = null == n ? "" : "" + n
}) : 0 in this ? this[0].textContent : null
},
attr: function (n, i) {
var r;
return "string" != typeof n || 1 in arguments ? this.each(function (t) {
if (1 === this.nodeType)
if (D(n))
for (e in n) X(this, e, n[e]);
else X(this, n, J(this, i, t, this.getAttribute(n)))
}) : this.length && 1 === this[0].nodeType ? !(r = this[0].getAttribute(n)) && n in this[0] ? this[0][n] : r : t
},
removeAttr: function (t) {
return this.each(function () {
1 === this.nodeType && X(this, t)
})
},
prop: function (t, e) {
return t = P[t] || t, 1 in arguments ? this.each(function (n) {
this[t] = J(this, e, n, this[t])
}) : this[0] && this[0][t]
},
data: function (e, n) {
var i = "data-" + e.replace(m, "-$1").toLowerCase(),
r = 1 in arguments ? this.attr(i, n) : this.attr(i);
return null !== r ? Y(r) : t
},
val: function (t) {
return 0 in arguments ? this.each(function (e) {
this.value = J(this, t, e, this.value)
}) : this[0] && (this[0].multiple ? n(this[0]).find("option").filter(function () {
return this.selected
}).pluck("value") : this[0].value)
},
offset: function (t) {
if (t) return this.each(function (e) {
var i = n(this),
r = J(this, t, e, i.offset()),
o = i.offsetParent().offset(),
s = {
top: r.top - o.top,
left: r.left - o.left
};
"static" == i.css("position") && (s.position = "relative"), i.css(s)
});
if (!this.length) return null;
var e = this[0].getBoundingClientRect();
return {
left: e.left + window.pageXOffset,
top: e.top + window.pageYOffset,
width: Math.round(e.width),
height: Math.round(e.height)
}
},
css: function (t, i) {
if (arguments.length < 2) {
var r = this[0],
o = getComputedStyle(r, "");
if (!r) return;
if ("string" == typeof t) return r.style[C(t)] || o.getPropertyValue(t);
if (A(t)) {
var s = {};
return n.each(A(t) ? t : [t], function (t, e) {
s[e] = r.style[C(e)] || o.getPropertyValue(e)
}), s
}
}
var a = "";
if ("string" == L(t)) i || 0 === i ? a = F(t) + ":" + H(t, i) : this.each(function () {
this.style.removeProperty(F(t))
});
else
for (e in t) t[e] || 0 === t[e] ? a += F(e) + ":" + H(e, t[e]) + ";" : this.each(function () {
this.style.removeProperty(F(e))
});
return this.each(function () {
this.style.cssText += ";" + a
})
},
index: function (t) {
return t ? this.indexOf(n(t)[0]) : this.parent().children().indexOf(this[0])
},
hasClass: function (t) {
return t ? r.some.call(this, function (t) {
return this.test(W(t))
}, q(t)) : !1
},
addClass: function (t) {
return t ? this.each(function (e) {
i = [];
var r = W(this),
o = J(this, t, e, r);
o.split(/\s+/g).forEach(function (t) {
n(this).hasClass(t) || i.push(t)
}, this), i.length && W(this, r + (r ? " " : "") + i.join(" "))
}) : this
},
removeClass: function (e) {
return this.each(function (n) {
return e === t ? W(this, "") : (i = W(this), J(this, e, n, i).split(/\s+/g).forEach(function (t) {
i = i.replace(q(t), " ")
}), void W(this, i.trim()))
})
},
toggleClass: function (e, i) {
return e ? this.each(function (r) {
var o = n(this),
s = J(this, e, r, W(this));
s.split(/\s+/g).forEach(function (e) {
(i === t ? !o.hasClass(e) : i) ? o.addClass(e) : o.removeClass(e)
})
}) : this
},
scrollTop: function (e) {
if (this.length) {
var n = "scrollTop" in this[0];
return e === t ? n ? this[0].scrollTop : this[0].pageYOffset : this.each(n ? function () {
this.scrollTop = e
} : function () {
this.scrollTo(this.scrollX, e)
})
}
},
scrollLeft: function (e) {
if (this.length) {
var n = "scrollLeft" in this[0];
return e === t ? n ? this[0].scrollLeft : this[0].pageXOffset : this.each(n ? function () {
this.scrollLeft = e
} : function () {
this.scrollTo(e, this.scrollY)
})
}
},
position: function () {
if (this.length) {
var t = this[0],
e = this.offsetParent(),
i = this.offset(),
r = d.test(e[0].nodeName) ? {
top: 0,
left: 0
} : e.offset();
return i.top -= parseFloat(n(t).css("margin-top")) || 0, i.left -= parseFloat(n(t).css("margin-left")) || 0, r.top += parseFloat(n(e[0]).css("border-top-width")) || 0, r.left += parseFloat(n(e[0]).css("border-left-width")) || 0, {
top: i.top - r.top,
left: i.left - r.left
}
}
},
offsetParent: function () {
return this.map(function () {
for (var t = this.offsetParent || a.body; t && !d.test(t.nodeName) && "static" == n(t).css("position");) t = t.offsetParent;
return t
})
}
}, n.fn.detach = n.fn.remove, ["width", "height"].forEach(function (e) {
var i = e.replace(/./, function (t) {
return t[0].toUpperCase()
});
n.fn[e] = function (r) {
var o, s = this[0];
return r === t ? $(s) ? s["inner" + i] : _(s) ? s.documentElement["scroll" + i] : (o = this.offset()) && o[e] : this.each(function (t) {
s = n(this), s.css(e, J(this, r, t, s[e]()))
})
}
}), v.forEach(function (t, e) {
var i = e % 2;
n.fn[t] = function () {
var t, o, r = n.map(arguments, function (e) {
return t = L(e), "object" == t || "array" == t || null == e ? e : T.fragment(e)
}),
s = this.length > 1;
return r.length < 1 ? this : this.each(function (t, u) {
o = i ? u : u.parentNode, u = 0 == e ? u.nextSibling : 1 == e ? u.firstChild : 2 == e ? u : null;
var f = n.contains(a.documentElement, o);
r.forEach(function (t) {
if (s) t = t.cloneNode(!0);
else if (!o) return n(t).remove();
o.insertBefore(t, u), f && G(t, function (t) {
null == t.nodeName || "SCRIPT" !== t.nodeName.toUpperCase() || t.type && "text/javascript" !== t.type || t.src || window.eval.call(window, t.innerHTML)
})
})
})
}, n.fn[i ? t + "To" : "insert" + (e ? "Before" : "After")] = function (e) {
return n(e)[t](this), this
}
}), T.Z.prototype = n.fn, T.uniq = N, T.deserializeValue = Y, n.zepto = T, n
}();
window.Zepto = Zepto, void 0 === window.$ && (window.$ = Zepto),
function (t) {
function l(t) {
return t._zid || (t._zid = e++)
}
function h(t, e, n, i) {
if (e = p(e), e.ns) var r = d(e.ns);
return (s[l(t)] || []).filter(function (t) {
return !(!t || e.e && t.e != e.e || e.ns && !r.test(t.ns) || n && l(t.fn) !== l(n) || i && t.sel != i)
})
}
function p(t) {
var e = ("" + t).split(".");
return {
e: e[0],
ns: e.slice(1).sort().join(" ")
}
}
function d(t) {
return new RegExp("(?:^| )" + t.replace(" ", " .* ?") + "(?: |$)")
}
function m(t, e) {
return t.del && !u && t.e in f || !!e
}
function g(t) {
return c[t] || u && f[t] || t
}
function v(e, i, r, o, a, u, f) {
var h = l(e),
d = s[h] || (s[h] = []);
i.split(/\s/).forEach(function (i) {
if ("ready" == i) return t(document).ready(r);
var s = p(i);
s.fn = r, s.sel = a, s.e in c && (r = function (e) {
var n = e.relatedTarget;
return !n || n !== this && !t.contains(this, n) ? s.fn.apply(this, arguments) : void 0
}), s.del = u;
var l = u || r;
s.proxy = function (t) {
if (t = j(t), !t.isImmediatePropagationStopped()) {
t.data = o;
var i = l.apply(e, t._args == n ? [t] : [t].concat(t._args));
return i === !1 && (t.preventDefault(), t.stopPropagation()), i
}
}, s.i = d.length, d.push(s), "addEventListener" in e && e.addEventListener(g(s.e), s.proxy, m(s, f))
})
}
function y(t, e, n, i, r) {
var o = l(t);
(e || "").split(/\s/).forEach(function (e) {
h(t, e, n, i).forEach(function (e) {
delete s[o][e.i], "removeEventListener" in t && t.removeEventListener(g(e.e), e.proxy, m(e, r))
})
})
}
function j(e, i) {
return (i || !e.isDefaultPrevented) && (i || (i = e), t.each(E, function (t, n) {
var r = i[t];
e[t] = function () {
return this[n] = x, r && r.apply(i, arguments)
}, e[n] = b
}), (i.defaultPrevented !== n ? i.defaultPrevented : "returnValue" in i ? i.returnValue === !1 : i.getPreventDefault && i.getPreventDefault()) && (e.isDefaultPrevented = x)), e
}
function S(t) {
var e, i = {
originalEvent: t
};
for (e in t) w.test(e) || t[e] === n || (i[e] = t[e]);
return j(i, t)
}
var n, e = 1,
i = Array.prototype.slice,
r = t.isFunction,
o = function (t) {
return "string" == typeof t
},
s = {},
a = {},
u = "onfocusin" in window,
f = {
focus: "focusin",
blur: "focusout"
},
c = {
mouseenter: "mouseover",
mouseleave: "mouseout"
};
a.click = a.mousedown = a.mouseup = a.mousemove = "MouseEvents", t.event = {
add: v,
remove: y
}, t.proxy = function (e, n) {
var s = 2 in arguments && i.call(arguments, 2);
if (r(e)) {
var a = function () {
return e.apply(n, s ? s.concat(i.call(arguments)) : arguments)
};
return a._zid = l(e), a
}
if (o(n)) return s ? (s.unshift(e[n], e), t.proxy.apply(null, s)) : t.proxy(e[n], e);
throw new TypeError("expected function")
}, t.fn.bind = function (t, e, n) {
return this.on(t, e, n)
}, t.fn.unbind = function (t, e) {
return this.off(t, e)
}, t.fn.one = function (t, e, n, i) {
return this.on(t, e, n, i, 1)
};
var x = function () {
return !0
},
b = function () {
return !1
},
w = /^([A-Z]|returnValue$|layer[XY]$)/,
E = {
preventDefault: "isDefaultPrevented",
stopImmediatePropagation: "isImmediatePropagationStopped",
stopPropagation: "isPropagationStopped"
};
t.fn.delegate = function (t, e, n) {
return this.on(e, t, n)
}, t.fn.undelegate = function (t, e, n) {
return this.off(e, t, n)
}, t.fn.live = function (e, n) {
return t(document.body).delegate(this.selector, e, n), this
}, t.fn.die = function (e, n) {
return t(document.body).undelegate(this.selector, e, n), this
}, t.fn.on = function (e, s, a, u, f) {
var c, l, h = this;
return e && !o(e) ? (t.each(e, function (t, e) {
h.on(t, s, a, e, f)
}), h) : (o(s) || r(u) || u === !1 || (u = a, a = s, s = n), (r(a) || a === !1) && (u = a, a = n), u === !1 && (u = b), h.each(function (n, r) {
f && (c = function (t) {
return y(r, t.type, u), u.apply(this, arguments)
}), s && (l = function (e) {
var n, o = t(e.target).closest(s, r).get(0);
return o && o !== r ? (n = t.extend(S(e), {
currentTarget: o,
liveFired: r
}), (c || u).apply(o, [n].concat(i.call(arguments, 1)))) : void 0
}), v(r, e, u, a, s, l || c)
}))
}, t.fn.off = function (e, i, s) {
var a = this;
return e && !o(e) ? (t.each(e, function (t, e) {
a.off(t, i, e)
}), a) : (o(i) || r(s) || s === !1 || (s = i, i = n), s === !1 && (s = b), a.each(function () {
y(this, e, s, i)
}))
}, t.fn.trigger = function (e, n) {
return e = o(e) || t.isPlainObject(e) ? t.Event(e) : j(e), e._args = n, this.each(function () {
"dispatchEvent" in this ? this.dispatchEvent(e) : t(this).triggerHandler(e, n)
})
}, t.fn.triggerHandler = function (e, n) {
var i, r;
return this.each(function (s, a) {
i = S(o(e) ? t.Event(e) : e), i._args = n, i.target = a, t.each(h(a, e.type || e), function (t, e) {
return r = e.proxy(i), i.isImmediatePropagationStopped() ? !1 : void 0
})
}), r
}, "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function (e) {
t.fn[e] = function (t) {
return t ? this.bind(e, t) : this.trigger(e)
}
}), ["focus", "blur"].forEach(function (e) {
t.fn[e] = function (t) {
return t ? this.bind(e, t) : this.each(function () {
try {
this[e]()
} catch (t) {}
}), this
}
}), t.Event = function (t, e) {
o(t) || (e = t, t = e.type);
var n = document.createEvent(a[t] || "Events"),
i = !0;
if (e)
for (var r in e) "bubbles" == r ? i = !!e[r] : n[r] = e[r];
return n.initEvent(t, i, !0), j(n)
}
}(Zepto),
function (t) {
function l(e, n, i) {
var r = t.Event(n);
return t(e).trigger(r, i), !r.isDefaultPrevented()
}
function h(t, e, i, r) {
return t.global ? l(e || n, i, r) : void 0
}
function p(e) {
e.global && 0 === t.active++ && h(e, null, "ajaxStart")
}
function d(e) {
e.global && !--t.active && h(e, null, "ajaxStop")
}
function m(t, e) {
var n = e.context;
return e.beforeSend.call(n, t, e) === !1 || h(e, n, "ajaxBeforeSend", [t, e]) === !1 ? !1 : void h(e, n, "ajaxSend", [t, e])
}
function g(t, e, n, i) {
var r = n.context,
o = "success";
n.success.call(r, t, o, e), i && i.resolveWith(r, [t, o, e]), h(n, r, "ajaxSuccess", [e, n, t]), y(o, e, n)
}
function v(t, e, n, i, r) {
var o = i.context;
i.error.call(o, n, e, t), r && r.rejectWith(o, [n, e, t]), h(i, o, "ajaxError", [n, i, t || e]), y(e, n, i)
}
function y(t, e, n) {
var i = n.context;
n.complete.call(i, e, t), h(n, i, "ajaxComplete", [e, n]), d(n)
}
function x() {}
function b(t) {
return t && (t = t.split(";", 2)[0]), t && (t == f ? "html" : t == u ? "json" : s.test(t) ? "script" : a.test(t) && "xml") || "text"
}
function w(t, e) {
return "" == e ? t : (t + "&" + e).replace(/[&?]{1,2}/, "?")
}
function E(e) {
e.processData && e.data && "string" != t.type(e.data) && (e.data = t.param(e.data, e.traditional)), !e.data || e.type && "GET" != e.type.toUpperCase() || (e.url = w(e.url, e.data), e.data = void 0)
}
function j(e, n, i, r) {
return t.isFunction(n) && (r = i, i = n, n = void 0), t.isFunction(i) || (r = i, i = void 0), {
url: e,
data: n,
success: i,
dataType: r
}
}
function T(e, n, i, r) {
var o, s = t.isArray(n),
a = t.isPlainObject(n);
t.each(n, function (n, u) {
o = t.type(u), r && (n = i ? r : r + "[" + (a || "object" == o || "array" == o ? n : "") + "]"), !r && s ? e.add(u.name, u.value) : "array" == o || !i && "object" == o ? T(e, u, i, n) : e.add(n, u)
})
}
var i, r, e = 0,
n = window.document,
o = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
s = /^(?:text|application)\/javascript/i,
a = /^(?:text|application)\/xml/i,
u = "application/json",
f = "text/html",
c = /^\s*$/;
t.active = 0, t.ajaxJSONP = function (i, r) {
if (!("type" in i)) return t.ajax(i);
var f, h, o = i.jsonpCallback,
s = (t.isFunction(o) ? o() : o) || "jsonp" + ++e,
a = n.createElement("script"),
u = window[s],
c = function (e) {
t(a).triggerHandler("error", e || "abort")
},
l = {
abort: c
};
return r && r.promise(l), t(a).on("load error", function (e, n) {
clearTimeout(h), t(a).off().remove(), "error" != e.type && f ? g(f[0], l, i, r) : v(null, n || "error", l, i, r), window[s] = u, f && t.isFunction(u) && u(f[0]), u = f = void 0
}), m(l, i) === !1 ? (c("abort"), l) : (window[s] = function () {
f = arguments
}, a.src = i.url.replace(/\?(.+)=\?/, "?$1=" + s), n.head.appendChild(a), i.timeout > 0 && (h = setTimeout(function () {
c("timeout")
}, i.timeout)), l)
}, t.ajaxSettings = {
type: "GET",
beforeSend: x,
success: x,
error: x,
complete: x,
context: null,
global: !0,
xhr: function () {
return new window.XMLHttpRequest
},
accepts: {
script: "text/javascript, application/javascript, application/x-javascript",
json: u,
xml: "application/xml, text/xml",
html: f,
text: "text/plain"
},
crossDomain: !1,
timeout: 0,
processData: !0,
cache: !0
}, t.ajax = function (e) {
var n = t.extend({}, e || {}),
o = t.Deferred && t.Deferred();
for (i in t.ajaxSettings) void 0 === n[i] && (n[i] = t.ajaxSettings[i]);
p(n), n.crossDomain || (n.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(n.url) && RegExp.$2 != window.location.host), n.url || (n.url = window.location.toString()), E(n);
var s = n.dataType,
a = /\?.+=\?/.test(n.url);
if (a && (s = "jsonp"), n.cache !== !1 && (e && e.cache === !0 || "script" != s && "jsonp" != s) || (n.url = w(n.url, "_=" + Date.now())), "jsonp" == s) return a || (n.url = w(n.url, n.jsonp ? n.jsonp + "=?" : n.jsonp === !1 ? "" : "callback=?")), t.ajaxJSONP(n, o);
var j, u = n.accepts[s],
f = {},
l = function (t, e) {
f[t.toLowerCase()] = [t, e]
},
h = /^([\w-]+:)\/\//.test(n.url) ? RegExp.$1 : window.location.protocol,
d = n.xhr(),
y = d.setRequestHeader;
if (o && o.promise(d), n.crossDomain || l("X-Requested-With", "XMLHttpRequest"), l("Accept", u || "*/*"), (u = n.mimeType || u) && (u.indexOf(",") > -1 && (u = u.split(",", 2)[0]), d.overrideMimeType && d.overrideMimeType(u)), (n.contentType || n.contentType !== !1 && n.data && "GET" != n.type.toUpperCase()) && l("Content-Type", n.contentType || "application/x-www-form-urlencoded"), n.headers)
for (r in n.headers) l(r, n.headers[r]);
if (d.setRequestHeader = l, d.onreadystatechange = function () {
if (4 == d.readyState) {
d.onreadystatechange = x, clearTimeout(j);
var e, i = !1;
if (d.status >= 200 && d.status < 300 || 304 == d.status || 0 == d.status && "file:" == h) {
s = s || b(n.mimeType || d.getResponseHeader("content-type")), e = d.responseText;
try {
"script" == s ? (1, eval)(e) : "xml" == s ? e = d.responseXML : "json" == s && (e = c.test(e) ? null : t.parseJSON(e))
} catch (r) {
i = r
}
i ? v(i, "parsererror", d, n, o) : g(e, d, n, o)
} else v(d.statusText || null, d.status ? "error" : "abort", d, n, o)
}
}, m(d, n) === !1) return d.abort(), v(null, "abort", d, n, o), d;
if (n.xhrFields)
for (r in n.xhrFields) d[r] = n.xhrFields[r];
var S = "async" in n ? n.async : !0;
d.open(n.type, n.url, S, n.username, n.password);
for (r in f) y.apply(d, f[r]);
return n.timeout > 0 && (j = setTimeout(function () {
d.onreadystatechange = x, d.abort(), v(null, "timeout", d, n, o)
}, n.timeout)), d.send(n.data ? n.data : null), d
}, t.get = function () {
return t.ajax(j.apply(null, arguments))
}, t.post = function () {
var e = j.apply(null, arguments);
return e.type = "POST", t.ajax(e)
}, t.getJSON = function () {
var e = j.apply(null, arguments);
return e.dataType = "json", t.ajax(e)
}, t.fn.load = function (e, n, i) {
if (!this.length) return this;
var a, r = this,
s = e.split(/\s/),
u = j(e, n, i),
f = u.success;
return s.length > 1 && (u.url = s[0], a = s[1]), u.success = function (e) {
r.html(a ? t("<div>").html(e.replace(o, "")).find(a) : e), f && f.apply(r, arguments)
}, t.ajax(u), this
};
var S = encodeURIComponent;
t.param = function (t, e) {
var n = [];
return n.add = function (t, e) {
this.push(S(t) + "=" + S(e))
}, T(n, t, e), n.join("&").replace(/%20/g, "+")
}
}(Zepto),
function (t) {
t.fn.serializeArray = function () {
var n, e = [];
return t([].slice.call(this.get(0).elements)).each(function () {
n = t(this);
var i = n.attr("type");
"fieldset" != this.nodeName.toLowerCase() && !this.disabled && "submit" != i && "reset" != i && "button" != i && ("radio" != i && "checkbox" != i || this.checked) && e.push({
name: n.attr("name"),
value: n.val()
})
}), e
}, t.fn.serialize = function () {
var t = [];
return this.serializeArray().forEach(function (e) {
t.push(encodeURIComponent(e.name) + "=" + encodeURIComponent(e.value))
}), t.join("&")
}, t.fn.submit = function (e) {
if (e) this.bind("submit", e);
else if (this.length) {
var n = t.Event("submit");
this.eq(0).trigger(n), n.isDefaultPrevented() || this.get(0).submit()
}
return this
}
}(Zepto),
function (t) {
"__proto__" in {} || t.extend(t.zepto, {
Z: function (e, n) {
return e = e || [], t.extend(e, t.fn), e.selector = n || "", e.__Z = !0, e
},
isZ: function (e) {
return "array" === t.type(e) && "__Z" in e
}
});
try {
getComputedStyle(void 0)
} catch (e) {
var n = getComputedStyle;
window.getComputedStyle = function (t) {
try {
return n(t)
} catch (e) {
return null
}
}
}
}(Zepto);
/*global Zepto, window*/
// Handling tap events can be tricky because 300ms after the cycle of
// touchstart, touchmove, touchend events the browser will send a click event
// to the same position on the screen.
//
// Unfortunately, if the DOM of your page has changed by the time this click
// event fires, it can end up hitting a random button instead of the element
// that used to be there.
//
// To fix this, we use a solution suggested by Google: every time there's a
// tap event that our code handles, we prevent any click events that fire in the
// same place shortly afterwards from having any effect.
//
// NOTE: it seems that even though we are cancelling the click event as soon as
// possible, a link that's under the delayed click will still be marked as
// :active for a few tens of milliseconds. I've tried cancelling mousedown
// events too, but that didn't seem to help.
//
// [1] https://developers.google.com/mobile/articles/fast_buttons#ghost
;(function ($, window) {
// The space-time coordinates in space-time of the most recent touchend
// event. Because touchend doesn't itself have any coordinates, we need to
// maintain x and y ourselves by listening on touchstart and touchmove.
var x, y, t;
window.addEventListener('touchstart', function (e) {
x = e.touches[0].clientX;
y = e.touches[0].clientY;
}, true);
window.addEventListener('touchmove', function (e) {
x = e.touches[0].clientX;
y = e.touches[0].clientY;
}, true);
window.addEventListener('touchend', function (e) {
t = new Date();
}, true);
// We only want to cancel the click if some javascript calls
// .preventDefault() on the tap event (or equivalently returns false from
// a tap event's handler).
//
// Due to limitations of the event model we also cancel the click if
// javascript calls .stopPropagation(), as the event will not bubble this
// far. That's probably fine as people rarely distinguish strongly between
// the two.
$(window).on('tap doubleTap', function (e) {
if (!e.defaultPrevented) {
t = 0;
}
});
// Intercept all clicks on the document, and if they are close in spacetime
// to a recently handled tap event, prevent them from happening.
window.addEventListener('click', function (e) {
// 1000ms is longer than 300ms. Google suggest 2500, but I'm not sure
// on what basis. That seems unnecessarily long.
var time_threshold = 1000,
// 30px is the distance you can move your finger on the iPad before
// the "tap" does not generate a click.
// (it's also the threshold used by zepto before a tap becomes a
// swipe)
space_threshold = 30;
if (new Date() - t <= time_threshold &&
Math.abs(e.clientX - x) <= space_threshold &&
Math.abs(e.clientY - y) <= space_threshold) {
e.stopPropagation();
e.preventDefault();
}
}, true);
}(Zepto, window));