phaser
Version:
A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers.
1,356 lines (1,319 loc) • 136 kB
JavaScript
/*! jQuery v1.8.3 jquery.com | jquery.org/license */
(function(e, t) {
function _(e) {
var t = M[e] = {};
return v.each(e.split(y), function(e, n) {
t[n] = !0
}), t
}
function H(e, n, r) {
if (r === t && e.nodeType === 1) {
var i = "data-" + n.replace(P, "-$1").toLowerCase();
r = e.getAttribute(i);
if (typeof r == "string") {
try {
r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null : +r + "" === r ? +r : D.test(r) ? v.parseJSON(r) : r
} catch (s) {}
v.data(e, n, r)
} else r = t
}
return r
}
function B(e) {
var t;
for (t in e) {
if (t === "data" && v.isEmptyObject(e[t])) continue;
if (t !== "toJSON") return !1
}
return !0
}
function et() {
return !1
}
function tt() {
return !0
}
function ut(e) {
return !e || !e.parentNode || e.parentNode.nodeType === 11
}
function at(e, t) {
do e = e[t];
while (e && e.nodeType !== 1);
return e
}
function ft(e, t, n) {
t = t || 0;
if (v.isFunction(t)) return v.grep(e, function(e, r) {
var i = !! t.call(e, r, e);
return i === n
});
if (t.nodeType) return v.grep(e, function(e, r) {
return e === t === n
});
if (typeof t == "string") {
var r = v.grep(e, function(e) {
return e.nodeType === 1
});
if (it.test(t)) return v.filter(t, r, !n);
t = v.filter(t, r)
}
return v.grep(e, function(e, r) {
return v.inArray(e, t) >= 0 === n
})
}
function lt(e) {
var t = ct.split("|"),
n = e.createDocumentFragment();
if (n.createElement) while (t.length) n.createElement(t.pop());
return n
}
function Lt(e, t) {
return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t))
}
function At(e, t) {
if (t.nodeType !== 1 || !v.hasData(e)) return;
var n, r, i, s = v._data(e),
o = v._data(t, s),
u = s.events;
if (u) {
delete o.handle, o.events = {};
for (n in u) for (r = 0, i = u[n].length; r < i; r++) v.event.add(t, n, u[n][r])
}
o.data && (o.data = v.extend({}, o.data))
}
function Ot(e, t) {
var n;
if (t.nodeType !== 1) return;
t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), n = t.nodeName.toLowerCase(), n === "object" ? (t.parentNode && (t.outerHTML = e.outerHTML), v.support.html5Clone && e.innerHTML && !v.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : n === "input" && Et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : n === "option" ? t.selected = e.defaultSelected : n === "input" || n === "textarea" ? t.defaultValue = e.defaultValue : n === "script" && t.text !== e.text && (t.text = e.text), t.removeAttribute(v.expando)
}
function Mt(e) {
return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : []
}
function _t(e) {
Et.test(e.type) && (e.defaultChecked = e.checked)
}
function Qt(e, t) {
if (t in e) return t;
var n = t.charAt(0).toUpperCase() + t.slice(1),
r = t,
i = Jt.length;
while (i--) {
t = Jt[i] + n;
if (t in e) return t
}
return r
}
function Gt(e, t) {
return e = t || e, v.css(e, "display") === "none" || !v.contains(e.ownerDocument, e)
}
function Yt(e, t) {
var n, r, i = [],
s = 0,
o = e.length;
for (; s < o; s++) {
n = e[s];
if (!n.style) continue;
i[s] = v._data(n, "olddisplay"), t ? (!i[s] && n.style.display === "none" && (n.style.display = ""), n.style.display === "" && Gt(n) && (i[s] = v._data(n, "olddisplay", nn(n.nodeName)))) : (r = Dt(n, "display"), !i[s] && r !== "none" && v._data(n, "olddisplay", r))
}
for (s = 0; s < o; s++) {
n = e[s];
if (!n.style) continue;
if (!t || n.style.display === "none" || n.style.display === "") n.style.display = t ? i[s] || "" : "none"
}
return e
}
function Zt(e, t, n) {
var r = Rt.exec(t);
return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
}
function en(e, t, n, r) {
var i = n === (r ? "border" : "content") ? 4 : t === "width" ? 1 : 0,
s = 0;
for (; i < 4; i += 2) n === "margin" && (s += v.css(e, n + $t[i], !0)), r ? (n === "content" && (s -= parseFloat(Dt(e, "padding" + $t[i])) || 0), n !== "margin" && (s -= parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)) : (s += parseFloat(Dt(e, "padding" + $t[i])) || 0, n !== "padding" && (s += parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0));
return s
}
function tn(e, t, n) {
var r = t === "width" ? e.offsetWidth : e.offsetHeight,
i = !0,
s = v.support.boxSizing && v.css(e, "boxSizing") === "border-box";
if (r <= 0 || r == null) {
r = Dt(e, t);
if (r < 0 || r == null) r = e.style[t];
if (Ut.test(r)) return r;
i = s && (v.support.boxSizingReliable || r === e.style[t]), r = parseFloat(r) || 0
}
return r + en(e, t, n || (s ? "border" : "content"), i) + "px"
}
function nn(e) {
if (Wt[e]) return Wt[e];
var t = v("<" + e + ">").appendTo(i.body),
n = t.css("display");
t.remove();
if (n === "none" || n === "") {
Pt = i.body.appendChild(Pt || v.extend(i.createElement("iframe"), {
frameBorder: 0,
width: 0,
height: 0
}));
if (!Ht || !Pt.createElement) Ht = (Pt.contentWindow || Pt.contentDocument).document, Ht.write("<!doctype html><html><body>"), Ht.close();
t = Ht.body.appendChild(Ht.createElement(e)), n = Dt(t, "display"), i.body.removeChild(Pt)
}
return Wt[e] = n, n
}
function fn(e, t, n, r) {
var i;
if (v.isArray(t)) v.each(t, function(t, i) {
n || sn.test(e) ? r(e, i) : fn(e + "[" + (typeof i == "object" ? t : "") + "]", i, n, r)
});
else if (!n && v.type(t) === "object") for (i in t) fn(e + "[" + i + "]", t[i], n, r);
else r(e, t)
}
function Cn(e) {
return function(t, n) {
typeof t != "string" && (n = t, t = "*");
var r, i, s, o = t.toLowerCase().split(y),
u = 0,
a = o.length;
if (v.isFunction(n)) for (; u < a; u++) r = o[u], s = /^\+/.test(r), s && (r = r.substr(1) || "*"), i = e[r] = e[r] || [], i[s ? "unshift" : "push"](n)
}
}
function kn(e, n, r, i, s, o) {
s = s || n.dataTypes[0], o = o || {}, o[s] = !0;
var u, a = e[s],
f = 0,
l = a ? a.length : 0,
c = e === Sn;
for (; f < l && (c || !u); f++) u = a[f](n, r, i), typeof u == "string" && (!c || o[u] ? u = t : (n.dataTypes.unshift(u), u = kn(e, n, r, i, u, o)));
return (c || !u) && !o["*"] && (u = kn(e, n, r, i, "*", o)), u
}
function Ln(e, n) {
var r, i, s = v.ajaxSettings.flatOptions || {};
for (r in n) n[r] !== t && ((s[r] ? e : i || (i = {}))[r] = n[r]);
i && v.extend(!0, e, i)
}
function An(e, n, r) {
var i, s, o, u, a = e.contents,
f = e.dataTypes,
l = e.responseFields;
for (s in l) s in r && (n[l[s]] = r[s]);
while (f[0] === "*") f.shift(), i === t && (i = e.mimeType || n.getResponseHeader("content-type"));
if (i) for (s in a) if (a[s] && a[s].test(i)) {
f.unshift(s);
break
}
if (f[0] in r) o = f[0];
else {
for (s in r) {
if (!f[0] || e.converters[s + " " + f[0]]) {
o = s;
break
}
u || (u = s)
}
o = o || u
}
if (o) return o !== f[0] && f.unshift(o), r[o]
}
function On(e, t) {
var n, r, i, s, o = e.dataTypes.slice(),
u = o[0],
a = {},
f = 0;
e.dataFilter && (t = e.dataFilter(t, e.dataType));
if (o[1]) for (n in e.converters) a[n.toLowerCase()] = e.converters[n];
for (; i = o[++f];) if (i !== "*") {
if (u !== "*" && u !== i) {
n = a[u + " " + i] || a["* " + i];
if (!n) for (r in a) {
s = r.split(" ");
if (s[1] === i) {
n = a[u + " " + s[0]] || a["* " + s[0]];
if (n) {
n === !0 ? n = a[r] : a[r] !== !0 && (i = s[0], o.splice(f--, 0, i));
break
}
}
}
if (n !== !0) if (n && e["throws"]) t = n(t);
else try {
t = n(t)
} catch (l) {
return {
state: "parsererror",
error: n ? l : "No conversion from " + u + " to " + i
}
}
}
u = i
}
return {
state: "success",
data: t
}
}
function Fn() {
try {
return new e.XMLHttpRequest
} catch (t) {}
}
function In() {
try {
return new e.ActiveXObject("Microsoft.XMLHTTP")
} catch (t) {}
}
function $n() {
return setTimeout(function() {
qn = t
}, 0), qn = v.now()
}
function Jn(e, t) {
v.each(t, function(t, n) {
var r = (Vn[t] || []).concat(Vn["*"]),
i = 0,
s = r.length;
for (; i < s; i++) if (r[i].call(e, t, n)) return
})
}
function Kn(e, t, n) {
var r, i = 0,
s = 0,
o = Xn.length,
u = v.Deferred().always(function() {
delete a.elem
}),
a = function() {
var t = qn || $n(),
n = Math.max(0, f.startTime + f.duration - t),
r = n / f.duration || 0,
i = 1 - r,
s = 0,
o = f.tweens.length;
for (; s < o; s++) f.tweens[s].run(i);
return u.notifyWith(e, [f, i, n]), i < 1 && o ? n : (u.resolveWith(e, [f]), !1)
},
f = u.promise({
elem: e,
props: v.extend({}, t),
opts: v.extend(!0, {
specialEasing: {}
}, n),
originalProperties: t,
originalOptions: n,
startTime: qn || $n(),
duration: n.duration,
tweens: [],
createTween: function(t, n, r) {
var i = v.Tween(e, f.opts, t, n, f.opts.specialEasing[t] || f.opts.easing);
return f.tweens.push(i), i
},
stop: function(t) {
var n = 0,
r = t ? f.tweens.length : 0;
for (; n < r; n++) f.tweens[n].run(1);
return t ? u.resolveWith(e, [f, t]) : u.rejectWith(e, [f, t]), this
}
}),
l = f.props;
Qn(l, f.opts.specialEasing);
for (; i < o; i++) {
r = Xn[i].call(f, e, l, f.opts);
if (r) return r
}
return Jn(f, l), v.isFunction(f.opts.start) && f.opts.start.call(e, f), v.fx.timer(v.extend(a, {
anim: f,
queue: f.opts.queue,
elem: e
})), f.progress(f.opts.progress).done(f.opts.done, f.opts.complete).fail(f.opts.fail).always(f.opts.always)
}
function Qn(e, t) {
var n, r, i, s, o;
for (n in e) {
r = v.camelCase(n), i = t[r], s = e[n], v.isArray(s) && (i = s[1], s = e[n] = s[0]), n !== r && (e[r] = s, delete e[n]), o = v.cssHooks[r];
if (o && "expand" in o) {
s = o.expand(s), delete e[r];
for (n in s) n in e || (e[n] = s[n], t[n] = i)
} else t[r] = i
}
}
function Gn(e, t, n) {
var r, i, s, o, u, a, f, l, c, h = this,
p = e.style,
d = {},
m = [],
g = e.nodeType && Gt(e);
n.queue || (l = v._queueHooks(e, "fx"), l.unqueued == null && (l.unqueued = 0, c = l.empty.fire, l.empty.fire = function() {
l.unqueued || c()
}), l.unqueued++, h.always(function() {
h.always(function() {
l.unqueued--, v.queue(e, "fx").length || l.empty.fire()
})
})), e.nodeType === 1 && ("height" in t || "width" in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], v.css(e, "display") === "inline" && v.css(e, "float") === "none" && (!v.support.inlineBlockNeedsLayout || nn(e.nodeName) === "inline" ? p.display = "inline-block" : p.zoom = 1)), n.overflow && (p.overflow = "hidden", v.support.shrinkWrapBlocks || h.done(function() {
p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
}));
for (r in t) {
s = t[r];
if (Un.exec(s)) {
delete t[r], a = a || s === "toggle";
if (s === (g ? "hide" : "show")) continue;
m.push(r)
}
}
o = m.length;
if (o) {
u = v._data(e, "fxshow") || v._data(e, "fxshow", {}), "hidden" in u && (g = u.hidden), a && (u.hidden = !g), g ? v(e).show() : h.done(function() {
v(e).hide()
}), h.done(function() {
var t;
v.removeData(e, "fxshow", !0);
for (t in d) v.style(e, t, d[t])
});
for (r = 0; r < o; r++) i = m[r], f = h.createTween(i, g ? u[i] : 0), d[i] = u[i] || v.style(e, i), i in u || (u[i] = f.start, g && (f.end = f.start, f.start = i === "width" || i === "height" ? 1 : 0))
}
}
function Yn(e, t, n, r, i) {
return new Yn.prototype.init(e, t, n, r, i)
}
function Zn(e, t) {
var n, r = {
height: e
},
i = 0;
t = t ? 1 : 0;
for (; i < 4; i += 2 - t) n = $t[i], r["margin" + n] = r["padding" + n] = e;
return t && (r.opacity = r.width = e), r
}
function tr(e) {
return v.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1
}
var n, r, i = e.document,
s = e.location,
o = e.navigator,
u = e.jQuery,
a = e.$,
f = Array.prototype.push,
l = Array.prototype.slice,
c = Array.prototype.indexOf,
h = Object.prototype.toString,
p = Object.prototype.hasOwnProperty,
d = String.prototype.trim,
v = function(e, t) {
return new v.fn.init(e, t, n)
},
m = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
g = /\S/,
y = /\s+/,
b = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
w = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
E = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
S = /^[\],:{}\s]*$/,
x = /(?:^|:|,)(?:\s*\[)+/g,
T = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
N = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
C = /^-ms-/,
k = /-([\da-z])/gi,
L = function(e, t) {
return (t + "").toUpperCase()
},
A = function() {
i.addEventListener ? (i.removeEventListener("DOMContentLoaded", A, !1), v.ready()) : i.readyState === "complete" && (i.detachEvent("onreadystatechange", A), v.ready())
},
O = {};
v.fn = v.prototype = {
constructor: v,
init: function(e, n, r) {
var s, o, u, a;
if (!e) return this;
if (e.nodeType) return this.context = this[0] = e, this.length = 1, this;
if (typeof e == "string") {
e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? s = [null, e, null] : s = w.exec(e);
if (s && (s[1] || !n)) {
if (s[1]) return n = n instanceof v ? n[0] : n, a = n && n.nodeType ? n.ownerDocument || n : i, e = v.parseHTML(s[1], a, !0), E.test(s[1]) && v.isPlainObject(n) && this.attr.call(e, n, !0), v.merge(this, e);
o = i.getElementById(s[2]);
if (o && o.parentNode) {
if (o.id !== s[2]) return r.find(e);
this.length = 1, this[0] = o
}
return this.context = i, this.selector = e, this
}
return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e)
}
return v.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), v.makeArray(e, this))
},
selector: "",
jquery: "1.8.3",
length: 0,
size: function() {
return this.length
},
toArray: function() {
return l.call(this)
},
get: function(e) {
return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
},
pushStack: function(e, t, n) {
var r = v.merge(this.constructor(), e);
return r.prevObject = this, r.context = this.context, t === "find" ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")"), r
},
each: function(e, t) {
return v.each(this, e, t)
},
ready: function(e) {
return v.ready.promise().done(e), this
},
eq: function(e) {
return e = +e, e === -1 ? this.slice(e) : this.slice(e, e + 1)
},
first: function() {
return this.eq(0)
},
last: function() {
return this.eq(-1)
},
slice: function() {
return this.pushStack(l.apply(this, arguments), "slice", l.call(arguments).join(","))
},
map: function(e) {
return this.pushStack(v.map(this, function(t, n) {
return e.call(t, n, t)
}))
},
end: function() {
return this.prevObject || this.constructor(null)
},
push: f,
sort: [].sort,
splice: [].splice
}, v.fn.init.prototype = v.fn, v.extend = v.fn.extend = function() {
var e, n, r, i, s, o, u = arguments[0] || {},
a = 1,
f = arguments.length,
l = !1;
typeof u == "boolean" && (l = u, u = arguments[1] || {}, a = 2), typeof u != "object" && !v.isFunction(u) && (u = {}), f === a && (u = this, --a);
for (; a < f; a++) if ((e = arguments[a]) != null) for (n in e) {
r = u[n], i = e[n];
if (u === i) continue;
l && i && (v.isPlainObject(i) || (s = v.isArray(i))) ? (s ? (s = !1, o = r && v.isArray(r) ? r : []) : o = r && v.isPlainObject(r) ? r : {}, u[n] = v.extend(l, o, i)) : i !== t && (u[n] = i)
}
return u
}, v.extend({
noConflict: function(t) {
return e.$ === v && (e.$ = a), t && e.jQuery === v && (e.jQuery = u), v
},
isReady: !1,
readyWait: 1,
holdReady: function(e) {
e ? v.readyWait++ : v.ready(!0)
},
ready: function(e) {
if (e === !0 ? --v.readyWait : v.isReady) return;
if (!i.body) return setTimeout(v.ready, 1);
v.isReady = !0;
if (e !== !0 && --v.readyWait > 0) return;
r.resolveWith(i, [v]), v.fn.trigger && v(i).trigger("ready").off("ready")
},
isFunction: function(e) {
return v.type(e) === "function"
},
isArray: Array.isArray ||
function(e) {
return v.type(e) === "array"
},
isWindow: function(e) {
return e != null && e == e.window
},
isNumeric: function(e) {
return !isNaN(parseFloat(e)) && isFinite(e)
},
type: function(e) {
return e == null ? String(e) : O[h.call(e)] || "object"
},
isPlainObject: function(e) {
if (!e || v.type(e) !== "object" || e.nodeType || v.isWindow(e)) return !1;
try {
if (e.constructor && !p.call(e, "constructor") && !p.call(e.constructor.prototype, "isPrototypeOf")) return !1
} catch (n) {
return !1
}
var r;
for (r in e);
return r === t || p.call(e, r)
},
isEmptyObject: function(e) {
var t;
for (t in e) return !1;
return !0
},
error: function(e) {
throw new Error(e)
},
parseHTML: function(e, t, n) {
var r;
return !e || typeof e != "string" ? null : (typeof t == "boolean" && (n = t, t = 0), t = t || i, (r = E.exec(e)) ? [t.createElement(r[1])] : (r = v.buildFragment([e], t, n ? null : []), v.merge([], (r.cacheable ? v.clone(r.fragment) : r.fragment).childNodes)))
},
parseJSON: function(t) {
if (!t || typeof t != "string") return null;
t = v.trim(t);
if (e.JSON && e.JSON.parse) return e.JSON.parse(t);
if (S.test(t.replace(T, "@").replace(N, "]").replace(x, ""))) return (new Function("return " + t))();
v.error("Invalid JSON: " + t)
},
parseXML: function(n) {
var r, i;
if (!n || typeof n != "string") return null;
try {
e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n))
} catch (s) {
r = t
}
return (!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && v.error("Invalid XML: " + n), r
},
noop: function() {},
globalEval: function(t) {
t && g.test(t) && (e.execScript ||
function(t) {
e.eval.call(e, t)
})(t)
},
camelCase: function(e) {
return e.replace(C, "ms-").replace(k, L)
},
nodeName: function(e, t) {
return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
},
each: function(e, n, r) {
var i, s = 0,
o = e.length,
u = o === t || v.isFunction(e);
if (r) {
if (u) {
for (i in e) if (n.apply(e[i], r) === !1) break
} else for (; s < o;) if (n.apply(e[s++], r) === !1) break
} else if (u) {
for (i in e) if (n.call(e[i], i, e[i]) === !1) break
} else for (; s < o;) if (n.call(e[s], s, e[s++]) === !1) break;
return e
},
trim: d && !d.call("\ufeff\u00a0") ?
function(e) {
return e == null ? "" : d.call(e)
} : function(e) {
return e == null ? "" : (e + "").replace(b, "")
},
makeArray: function(e, t) {
var n, r = t || [];
return e != null && (n = v.type(e), e.length == null || n === "string" || n === "function" || n === "regexp" || v.isWindow(e) ? f.call(r, e) : v.merge(r, e)), r
},
inArray: function(e, t, n) {
var r;
if (t) {
if (c) return c.call(t, e, n);
r = t.length, n = n ? n < 0 ? Math.max(0, r + n) : n : 0;
for (; n < r; n++) if (n in t && t[n] === e) return n
}
return -1
},
merge: function(e, n) {
var r = n.length,
i = e.length,
s = 0;
if (typeof r == "number") for (; s < r; s++) e[i++] = n[s];
else while (n[s] !== t) e[i++] = n[s++];
return e.length = i, e
},
grep: function(e, t, n) {
var r, i = [],
s = 0,
o = e.length;
n = !! n;
for (; s < o; s++) r = !! t(e[s], s), n !== r && i.push(e[s]);
return i
},
map: function(e, n, r) {
var i, s, o = [],
u = 0,
a = e.length,
f = e instanceof v || a !== t && typeof a == "number" && (a > 0 && e[0] && e[a - 1] || a === 0 || v.isArray(e));
if (f) for (; u < a; u++) i = n(e[u], u, r), i != null && (o[o.length] = i);
else for (s in e) i = n(e[s], s, r), i != null && (o[o.length] = i);
return o.concat.apply([], o)
},
guid: 1,
proxy: function(e, n) {
var r, i, s;
return typeof n == "string" && (r = e[n], n = e, e = r), v.isFunction(e) ? (i = l.call(arguments, 2), s = function() {
return e.apply(n, i.concat(l.call(arguments)))
}, s.guid = e.guid = e.guid || v.guid++, s) : t
},
access: function(e, n, r, i, s, o, u) {
var a, f = r == null,
l = 0,
c = e.length;
if (r && typeof r == "object") {
for (l in r) v.access(e, n, l, r[l], 1, o, i);
s = 1
} else if (i !== t) {
a = u === t && v.isFunction(i), f && (a ? (a = n, n = function(e, t, n) {
return a.call(v(e), n)
}) : (n.call(e, i), n = null));
if (n) for (; l < c; l++) n(e[l], r, a ? i.call(e[l], l, n(e[l], r)) : i, u);
s = 1
}
return s ? e : f ? n.call(e) : c ? n(e[0], r) : o
},
now: function() {
return (new Date).getTime()
}
}), v.ready.promise = function(t) {
if (!r) {
r = v.Deferred();
if (i.readyState === "complete") setTimeout(v.ready, 1);
else if (i.addEventListener) i.addEventListener("DOMContentLoaded", A, !1), e.addEventListener("load", v.ready, !1);
else {
i.attachEvent("onreadystatechange", A), e.attachEvent("onload", v.ready);
var n = !1;
try {
n = e.frameElement == null && i.documentElement
} catch (s) {}
n && n.doScroll &&
function o() {
if (!v.isReady) {
try {
n.doScroll("left")
} catch (e) {
return setTimeout(o, 50)
}
v.ready()
}
}()
}
}
return r.promise(t)
}, v.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(e, t) {
O["[object " + t + "]"] = t.toLowerCase()
}), n = v(i);
var M = {};
v.Callbacks = function(e) {
e = typeof e == "string" ? M[e] || _(e) : v.extend({}, e);
var n, r, i, s, o, u, a = [],
f = !e.once && [],
l = function(t) {
n = e.memory && t, r = !0, u = s || 0, s = 0, o = a.length, i = !0;
for (; a && u < o; u++) if (a[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
n = !1;
break
}
i = !1, a && (f ? f.length && l(f.shift()) : n ? a = [] : c.disable())
},
c = {
add: function() {
if (a) {
var t = a.length;
(function r(t) {
v.each(t, function(t, n) {
var i = v.type(n);
i === "function" ? (!e.unique || !c.has(n)) && a.push(n) : n && n.length && i !== "string" && r(n)
})
})(arguments), i ? o = a.length : n && (s = t, l(n))
}
return this
},
remove: function() {
return a && v.each(arguments, function(e, t) {
var n;
while ((n = v.inArray(t, a, n)) > -1) a.splice(n, 1), i && (n <= o && o--, n <= u && u--)
}), this
},
has: function(e) {
return v.inArray(e, a) > -1
},
empty: function() {
return a = [], this
},
disable: function() {
return a = f = n = t, this
},
disabled: function() {
return !a
},
lock: function() {
return f = t, n || c.disable(), this
},
locked: function() {
return !f
},
fireWith: function(e, t) {
return t = t || [], t = [e, t.slice ? t.slice() : t], a && (!r || f) && (i ? f.push(t) : l(t)), this
},
fire: function() {
return c.fireWith(this, arguments), this
},
fired: function() {
return !!r
}
};
return c
}, v.extend({
Deferred: function(e) {
var t = [
["resolve", "done", v.Callbacks("once memory"), "resolved"],
["reject", "fail", v.Callbacks("once memory"), "rejected"],
["notify", "progress", v.Callbacks("memory")]
],
n = "pending",
r = {
state: function() {
return n
},
always: function() {
return i.done(arguments).fail(arguments), this
},
then: function() {
var e = arguments;
return v.Deferred(function(n) {
v.each(t, function(t, r) {
var s = r[0],
o = e[t];
i[r[1]](v.isFunction(o) ?
function() {
var e = o.apply(this, arguments);
e && v.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n : this, [e])
} : n[s])
}), e = null
}).promise()
},
promise: function(e) {
return e != null ? v.extend(e, r) : r
}
},
i = {};
return r.pipe = r.then, v.each(t, function(e, s) {
var o = s[2],
u = s[3];
r[s[1]] = o.add, u && o.add(function() {
n = u
}, t[e ^ 1][2].disable, t[2][2].lock), i[s[0]] = o.fire, i[s[0] + "With"] = o.fireWith
}), r.promise(i), e && e.call(i, i), i
},
when: function(e) {
var t = 0,
n = l.call(arguments),
r = n.length,
i = r !== 1 || e && v.isFunction(e.promise) ? r : 0,
s = i === 1 ? e : v.Deferred(),
o = function(e, t, n) {
return function(r) {
t[e] = this, n[e] = arguments.length > 1 ? l.call(arguments) : r, n === u ? s.notifyWith(t, n) : --i || s.resolveWith(t, n)
}
},
u, a, f;
if (r > 1) {
u = new Array(r), a = new Array(r), f = new Array(r);
for (; t < r; t++) n[t] && v.isFunction(n[t].promise) ? n[t].promise().done(o(t, f, n)).fail(s.reject).progress(o(t, a, u)) : --i
}
return i || s.resolveWith(f, n), s.promise()
}
}), v.support = function() {
var t, n, r, s, o, u, a, f, l, c, h, p = i.createElement("div");
p.setAttribute("className", "t"), p.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", n = p.getElementsByTagName("*"), r = p.getElementsByTagName("a")[0];
if (!n || !r || !n.length) return {};
s = i.createElement("select"), o = s.appendChild(i.createElement("option")), u = p.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t = {
leadingWhitespace: p.firstChild.nodeType === 3,
tbody: !p.getElementsByTagName("tbody").length,
htmlSerialize: !! p.getElementsByTagName("link").length,
style: /top/.test(r.getAttribute("style")),
hrefNormalized: r.getAttribute("href") === "/a",
opacity: /^0.5/.test(r.style.opacity),
cssFloat: !! r.style.cssFloat,
checkOn: u.value === "on",
optSelected: o.selected,
getSetAttribute: p.className !== "t",
enctype: !! i.createElement("form").enctype,
html5Clone: i.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
boxModel: i.compatMode === "CSS1Compat",
submitBubbles: !0,
changeBubbles: !0,
focusinBubbles: !1,
deleteExpando: !0,
noCloneEvent: !0,
inlineBlockNeedsLayout: !1,
shrinkWrapBlocks: !1,
reliableMarginRight: !0,
boxSizingReliable: !0,
pixelPosition: !1
}, u.checked = !0, t.noCloneChecked = u.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !o.disabled;
try {
delete p.test
} catch (d) {
t.deleteExpando = !1
}!p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", h = function() {
t.noCloneEvent = !1
}), p.cloneNode(!0).fireEvent("onclick"), p.detachEvent("onclick", h)), u = i.createElement("input"), u.value = "t", u.setAttribute("type", "radio"), t.radioValue = u.value === "t", u.setAttribute("checked", "checked"), u.setAttribute("name", "t"), p.appendChild(u), a = i.createDocumentFragment(), a.appendChild(p.lastChild), t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked, t.appendChecked = u.checked, a.removeChild(u), a.appendChild(p);
if (p.attachEvent) for (l in {
submit: !0,
change: !0,
focusin: !0
}) f = "on" + l, c = f in p, c || (p.setAttribute(f, "return;"), c = typeof p[f] == "function"), t[l + "Bubbles"] = c;
return v(function() {
var n, r, s, o, u = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
a = i.getElementsByTagName("body")[0];
if (!a) return;
n = i.createElement("div"), n.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", a.insertBefore(n, a.firstChild), r = i.createElement("div"), n.appendChild(r), r.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", s = r.getElementsByTagName("td"), s[0].style.cssText = "padding:0;margin:0;border:0;display:none", c = s[0].offsetHeight === 0, s[0].style.display = "", s[1].style.display = "none", t.reliableHiddenOffsets = c && s[0].offsetHeight === 0, r.innerHTML = "", r.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", t.boxSizing = r.offsetWidth === 4, t.doesNotIncludeMarginInBodyOffset = a.offsetTop !== 1, e.getComputedStyle && (t.pixelPosition = (e.getComputedStyle(r, null) || {}).top !== "1%", t.boxSizingReliable = (e.getComputedStyle(r, null) || {
width: "4px"
}).width === "4px", o = i.createElement("div"), o.style.cssText = r.style.cssText = u, o.style.marginRight = o.style.width = "0", r.style.width = "1px", r.appendChild(o), t.reliableMarginRight = !parseFloat((e.getComputedStyle(o, null) || {}).marginRight)), typeof r.style.zoom != "undefined" && (r.innerHTML = "", r.style.cssText = u + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = r.offsetWidth === 3, r.style.display = "block", r.style.overflow = "visible", r.innerHTML = "<div></div>", r.firstChild.style.width = "5px", t.shrinkWrapBlocks = r.offsetWidth !== 3, n.style.zoom = 1), a.removeChild(n), n = r = s = o = null
}), a.removeChild(p), n = r = s = o = u = a = p = null, t
}();
var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
P = /([A-Z])/g;
v.extend({
cache: {},
deletedIds: [],
uuid: 0,
expando: "jQuery" + (v.fn.jquery + Math.random()).replace(/\D/g, ""),
noData: {
embed: !0,
object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
applet: !0
},
hasData: function(e) {
return e = e.nodeType ? v.cache[e[v.expando]] : e[v.expando], !! e && !B(e)
},
data: function(e, n, r, i) {
if (!v.acceptData(e)) return;
var s, o, u = v.expando,
a = typeof n == "string",
f = e.nodeType,
l = f ? v.cache : e,
c = f ? e[u] : e[u] && u;
if ((!c || !l[c] || !i && !l[c].data) && a && r === t) return;
c || (f ? e[u] = c = v.deletedIds.pop() || v.guid++ : c = u), l[c] || (l[c] = {}, f || (l[c].toJSON = v.noop));
if (typeof n == "object" || typeof n == "function") i ? l[c] = v.extend(l[c], n) : l[c].data = v.extend(l[c].data, n);
return s = l[c], i || (s.data || (s.data = {}), s = s.data), r !== t && (s[v.camelCase(n)] = r), a ? (o = s[n], o == null && (o = s[v.camelCase(n)])) : o = s, o
},
removeData: function(e, t, n) {
if (!v.acceptData(e)) return;
var r, i, s, o = e.nodeType,
u = o ? v.cache : e,
a = o ? e[v.expando] : v.expando;
if (!u[a]) return;
if (t) {
r = n ? u[a] : u[a].data;
if (r) {
v.isArray(t) || (t in r ? t = [t] : (t = v.camelCase(t), t in r ? t = [t] : t = t.split(" ")));
for (i = 0, s = t.length; i < s; i++) delete r[t[i]];
if (!(n ? B : v.isEmptyObject)(r)) return
}
}
if (!n) {
delete u[a].data;
if (!B(u[a])) return
}
o ? v.cleanData([e], !0) : v.support.deleteExpando || u != u.window ? delete u[a] : u[a] = null
},
_data: function(e, t, n) {
return v.data(e, t, n, !0)
},
acceptData: function(e) {
var t = e.nodeName && v.noData[e.nodeName.toLowerCase()];
return !t || t !== !0 && e.getAttribute("classid") === t
}
}), v.fn.extend({
data: function(e, n) {
var r, i, s, o, u, a = this[0],
f = 0,
l = null;
if (e === t) {
if (this.length) {
l = v.data(a);
if (a.nodeType === 1 && !v._data(a, "parsedAttrs")) {
s = a.attributes;
for (u = s.length; f < u; f++) o = s[f].name, o.indexOf("data-") || (o = v.camelCase(o.substring(5)), H(a, o, l[o]));
v._data(a, "parsedAttrs", !0)
}
}
return l
}
return typeof e == "object" ? this.each(function() {
v.data(this, e)
}) : (r = e.split(".", 2), r[1] = r[1] ? "." + r[1] : "", i = r[1] + "!", v.access(this, function(n) {
if (n === t) return l = this.triggerHandler("getData" + i, [r[0]]), l === t && a && (l = v.data(a, e), l = H(a, e, l)), l === t && r[1] ? this.data(r[0]) : l;
r[1] = n, this.each(function() {
var t = v(this);
t.triggerHandler("setData" + i, r), v.data(this, e, n), t.triggerHandler("changeData" + i, r)
})
}, null, n, arguments.length > 1, null, !1))
},
removeData: function(e) {
return this.each(function() {
v.removeData(this, e)
})
}
}), v.extend({
queue: function(e, t, n) {
var r;
if (e) return t = (t || "fx") + "queue", r = v._data(e, t), n && (!r || v.isArray(n) ? r = v._data(e, t, v.makeArray(n)) : r.push(n)), r || []
},
dequeue: function(e, t) {
t = t || "fx";
var n = v.queue(e, t),
r = n.length,
i = n.shift(),
s = v._queueHooks(e, t),
o = function() {
v.dequeue(e, t)
};
i === "inprogress" && (i = n.shift(), r--), i && (t === "fx" && n.unshift("inprogress"), delete s.stop, i.call(e, o, s)), !r && s && s.empty.fire()
},
_queueHooks: function(e, t) {
var n = t + "queueHooks";
return v._data(e, n) || v._data(e, n, {
empty: v.Callbacks("once memory").add(function() {
v.removeData(e, t + "queue", !0), v.removeData(e, n, !0)
})
})
}
}), v.fn.extend({
queue: function(e, n) {
var r = 2;
return typeof e != "string" && (n = e, e = "fx", r--), arguments.length < r ? v.queue(this[0], e) : n === t ? this : this.each(function() {
var t = v.queue(this, e, n);
v._queueHooks(this, e), e === "fx" && t[0] !== "inprogress" && v.dequeue(this, e)
})
},
dequeue: function(e) {
return this.each(function() {
v.dequeue(this, e)
})
},
delay: function(e, t) {
return e = v.fx ? v.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
var r = setTimeout(t, e);
n.stop = function() {
clearTimeout(r)
}
})
},
clearQueue: function(e) {
return this.queue(e || "fx", [])
},
promise: function(e, n) {
var r, i = 1,
s = v.Deferred(),
o = this,
u = this.length,
a = function() {
--i || s.resolveWith(o, [o])
};
typeof e != "string" && (n = e, e = t), e = e || "fx";
while (u--) r = v._data(o[u], e + "queueHooks"), r && r.empty && (i++, r.empty.add(a));
return a(), s.promise(n)
}
});
var j, F, I, q = /[\t\r\n]/g,
R = /\r/g,
U = /^(?:button|input)$/i,
z = /^(?:button|input|object|select|textarea)$/i,
W = /^a(?:rea|)$/i,
X = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
V = v.support.getSetAttribute;
v.fn.extend({
attr: function(e, t) {
return v.access(this, v.attr, e, t, arguments.length > 1)
},
removeAttr: function(e) {
return this.each(function() {
v.removeAttr(this, e)
})
},
prop: function(e, t) {
return v.access(this, v.prop, e, t, arguments.length > 1)
},
removeProp: function(e) {
return e = v.propFix[e] || e, this.each(function() {
try {
this[e] = t, delete this[e]
} catch (n) {}
})
},
addClass: function(e) {
var t, n, r, i, s, o, u;
if (v.isFunction(e)) return this.each(function(t) {
v(this).addClass(e.call(this, t, this.className))
});
if (e && typeof e == "string") {
t = e.split(y);
for (n = 0, r = this.length; n < r; n++) {
i = this[n];
if (i.nodeType === 1) if (!i.className && t.length === 1) i.className = e;
else {
s = " " + i.className + " ";
for (o = 0, u = t.length; o < u; o++) s.indexOf(" " + t[o] + " ") < 0 && (s += t[o] + " ");
i.className = v.trim(s)
}
}
}
return this
},
removeClass: function(e) {
var n, r, i, s, o, u, a;
if (v.isFunction(e)) return this.each(function(t) {
v(this).removeClass(e.call(this, t, this.className))
});
if (e && typeof e == "string" || e === t) {
n = (e || "").split(y);
for (u = 0, a = this.length; u < a; u++) {
i = this[u];
if (i.nodeType === 1 && i.className) {
r = (" " + i.className + " ").replace(q, " ");
for (s = 0, o = n.length; s < o; s++) while (r.indexOf(" " + n[s] + " ") >= 0) r = r.replace(" " + n[s] + " ", " ");
i.className = e ? v.trim(r) : ""
}
}
}
return this
},
toggleClass: function(e, t) {
var n = typeof e,
r = typeof t == "boolean";
return v.isFunction(e) ? this.each(function(n) {
v(this).toggleClass(e.call(this, n, this.className, t), t)
}) : this.each(function() {
if (n === "string") {
var i, s = 0,
o = v(this),
u = t,
a = e.split(y);
while (i = a[s++]) u = r ? u : !o.hasClass(i), o[u ? "addClass" : "removeClass"](i)
} else if (n === "undefined" || n === "boolean") this.className && v._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : v._data(this, "__className__") || ""
})
},
hasClass: function(e) {
var t = " " + e + " ",
n = 0,
r = this.length;
for (; n < r; n++) if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(q, " ").indexOf(t) >= 0) return !0;
return !1
},
val: function(e) {
var n, r, i, s = this[0];
if (!arguments.length) {
if (s) return n = v.valHooks[s.type] || v.valHooks[s.nodeName.toLowerCase()], n && "get" in n && (r = n.get(s, "value")) !== t ? r : (r = s.value, typeof r == "string" ? r.replace(R, "") : r == null ? "" : r);
return
}
return i = v.isFunction(e), this.each(function(r) {
var s, o = v(this);
if (this.nodeType !== 1) return;
i ? s = e.call(this, r, o.val()) : s = e, s == null ? s = "" : typeof s == "number" ? s += "" : v.isArray(s) && (s = v.map(s, function(e) {
return e == null ? "" : e + ""
})), n = v.valHooks[this.type] || v.valHooks[this.nodeName.toLowerCase()];
if (!n || !("set" in n) || n.set(this, s, "value") === t) this.value = s
})
}
}), v.extend({
valHooks: {
option: {
get: function(e) {
var t = e.attributes.value;
return !t || t.specified ? e.value : e.text
}
},
select: {
get: function(e) {
var t, n, r = e.options,
i = e.selectedIndex,
s = e.type === "select-one" || i < 0,
o = s ? null : [],
u = s ? i + 1 : r.length,
a = i < 0 ? u : s ? i : 0;
for (; a < u; a++) {
n = r[a];
if ((n.selected || a === i) && (v.support.optDisabled ? !n.disabled : n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !v.nodeName(n.parentNode, "optgroup"))) {
t = v(n).val();
if (s) return t;
o.push(t)
}
}
return o
},
set: function(e, t) {
var n = v.makeArray(t);
return v(e).find("option").each(function() {
this.selected = v.inArray(v(this).val(), n) >= 0
}), n.length || (e.selectedIndex = -1), n
}
}
},
attrFn: {},
attr: function(e, n, r, i) {
var s, o, u, a = e.nodeType;
if (!e || a === 3 || a === 8 || a === 2) return;
if (i && v.isFunction(v.fn[n])) return v(e)[n](r);
if (typeof e.getAttribute == "undefined") return v.prop(e, n, r);
u = a !== 1 || !v.isXMLDoc(e), u && (n = n.toLowerCase(), o = v.attrHooks[n] || (X.test(n) ? F : j));
if (r !== t) {
if (r === null) {
v.removeAttr(e, n);
return
}
return o && "set" in o && u && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, r + ""), r)
}
return o && "get" in o && u && (s = o.get(e, n)) !== null ? s : (s = e.getAttribute(n), s === null ? t : s)
},
removeAttr: function(e, t) {
var n, r, i, s, o = 0;
if (t && e.nodeType === 1) {
r = t.split(y);
for (; o < r.length; o++) i = r[o], i && (n = v.propFix[i] || i, s = X.test(i), s || v.attr(e, i, ""), e.removeAttribute(V ? i : n), s && n in e && (e[n] = !1))
}
},
attrHooks: {
type: {
set: function(e, t) {
if (U.test(e.nodeName) && e.parentNode) v.error("type property can't be changed");
else if (!v.support.radioValue && t === "radio" && v.nodeName(e, "input")) {
var n = e.value;
return e.setAttribute("type", t), n && (e.value = n), t
}
}
},
value: {
get: function(e, t) {
return j && v.nodeName(e, "button") ? j.get(e, t) : t in e ? e.value : null
},
set: function(e, t, n) {
if (j && v.nodeName(e, "button")) return j.set(e, t, n);
e.value = t
}
}
},
propFix: {
tabindex: "tabIndex",
readonly: "readOnly",
"for": "htmlFor",
"class": "className",
maxlength: "maxLength",
cellspacing: "cellSpacing",
cellpadding: "cellPadding",
rowspan: "rowSpan",
colspan: "colSpan",
usemap: "useMap",
frameborder: "frameBorder",
contenteditable: "contentEditable"
},
prop: function(e, n, r) {
var i, s, o, u = e.nodeType;
if (!e || u === 3 || u === 8 || u === 2) return;
return o = u !== 1 || !v.isXMLDoc(e), o && (n = v.propFix[n] || n, s = v.propHooks[n]), r !== t ? s && "set" in s && (i = s.set(e, r, n)) !== t ? i : e[n] = r : s && "get" in s && (i = s.get(e, n)) !== null ? i : e[n]
},
propHooks: {
tabIndex: {
get: function(e) {
var n = e.getAttributeNode("tabindex");
return n && n.specified ? parseInt(n.value, 10) : z.test(e.nodeName) || W.test(e.nodeName) && e.href ? 0 : t
}
}
}
}), F = {
get: function(e, n) {
var r, i = v.prop(e, n);
return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t
},
set: function(e, t, n) {
var r;
return t === !1 ? v.removeAttr(e, n) : (r = v.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())), n
}
}, V || (I = {
name: !0,
id: !0,
coords: !0
}, j = v.valHooks.button = {
get: function(e, n) {
var r;
return r = e.getAttributeNode(n), r && (I[n] ? r.value !== "" : r.specified) ? r.value : t
},
set: function(e, t, n) {
var r = e.getAttributeNode(n);
return r || (r = i.createAttribute(n), e.setAttributeNode(r)), r.value = t + ""
}
}, v.each(["width", "height"], function(e, t) {
v.attrHooks[t] = v.extend(v.attrHooks[t], {
set: function(e, n) {
if (n === "") return e.setAttribute(t, "auto"), n
}
})
}), v.attrHooks.contenteditable = {
get: j.get,
set: function(e, t, n) {
t === "" && (t = "false"), j.set(e, t, n)
}
}), v.support.hrefNormalized || v.each(["href", "src", "width", "height"], function(e, n) {
v.attrHooks[n] = v.extend(v.attrHooks[n], {
get: function(e) {
var r = e.getAttribute(n, 2);
return r === null ? t : r
}
})
}), v.support.style || (v.attrHooks.style = {
get: function(e) {
return e.style.cssText.toLowerCase() || t
},
set: function(e, t) {
return e.style.cssText = t + ""
}
}), v.support.optSelected || (v.propHooks.selected = v.extend(v.propHooks.selected, {
get: function(e) {
var t = e.parentNode;
return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
}
})), v.support.enctype || (v.propFix.enctype = "encoding"), v.support.checkOn || v.each(["radio", "checkbox"], function() {
v.valHooks[this] = {
get: function(e) {
return e.getAttribute("value") === null ? "on" : e.value
}
}
}), v.each(["radio", "checkbox"], function() {
v.valHooks[this] = v.extend(v.valHooks[this], {
set: function(e, t) {
if (v.isArray(t)) return e.checked = v.inArray(v(e).val(), t) >= 0
}
})
});
var $ = /^(?:textarea|input|select)$/i,
J = /^([^\.]*|)(?:\.(.+)|)$/,
K = /(?:^|\s)hover(\.\S+|)\b/,
Q = /^key/,
G = /^(?:mouse|contextmenu)|click/,
Y = /^(?:focusinfocus|focusoutblur)$/,
Z = function(e) {
return v.event.special.hover ? e : e.replace(K, "mouseenter$1 mouseleave$1")
};
v.event = {
add: function(e, n, r, i, s) {
var o, u, a, f, l, c, h, p, d, m, g;
if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = v._data(e))) return;
r.handler && (d = r, r = d.handler, s = d.selector), r.guid || (r.guid = v.guid++), a = o.events, a || (o.events = a = {}), u = o.handle, u || (o.handle = u = function(e) {
return typeof v == "undefined" || !! e && v.event.triggered === e.type ? t : v.event.dispatch.apply(u.elem, arguments)
}, u.elem = e), n = v.trim(Z(n)).split(" ");
for (f = 0; f < n.length; f++) {
l = J.exec(n[f]) || [], c = l[1], h = (l[2] || "").split(".").sort(), g = v.event.special[c] || {}, c = (s ? g.delegateType : g.bindType) || c, g = v.event.special[c] || {}, p = v.extend({
type: c,
origType: l[1],
data: i,
handler: r,
guid: r.guid,
selector: s,
needsContext: s && v.expr.match.needsContext.test(s),
namespace: h.join(".")
}, d), m = a[c];
if (!m) {
m = a[c] = [], m.delegateCount = 0;
if (!g.setup || g.setup.call(e, i, h, u) === !1) e.addEventListener ? e.addEventListener(c, u, !1) : e.attachEvent && e.attachEvent("on" + c, u)
}
g.add && (g.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)), s ? m.splice(m.delegateCount++, 0, p) : m.push(p), v.event.global[c] = !0
}
e = null
},
global: {},
remove: function(e, t, n, r, i) {
var s, o, u, a, f, l, c, h, p, d, m, g = v.hasData(e) && v._data(e);
if (!g || !(h = g.events)) return;