").append(st.parseHTML(e)).find(i) : e)
}).complete(r && function(e, t) {
s.each(r, a || [e.responseText, t, e])
}), this
}, st.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
st.fn[t] = function(e) {
return this.on(t, e)
}
}), st.each(["get", "post"], function(e, n) {
st[n] = function(e, r, i, o) {
return st.isFunction(r) && (o = o || i, i = r, r = t), st.ajax({
url: e,
type: n,
dataType: o,
data: r,
success: i
})
}
}), st.extend({
active: 0,
lastModified: {},
etag: {},
ajaxSettings: {
url: Dn,
type: "GET",
isLocal: Fn.test(jn[1]),
global: !0,
processData: !0,
async: !0,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
accepts: {
"*": In,
text: "text/plain",
html: "text/html",
xml: "application/xml, text/xml",
json: "application/json, text/javascript"
},
contents: {
xml: /xml/,
html: /html/,
json: /json/
},
responseFields: {
xml: "responseXML",
text: "responseText"
},
converters: {
"* text": e.String,
"text html": !0,
"text json": st.parseJSON,
"text xml": st.parseXML
},
flatOptions: {
url: !0,
context: !0
}
},
ajaxSetup: function(e, t) {
return t ? H(H(e, st.ajaxSettings), t) : H(st.ajaxSettings, e)
},
ajaxPrefilter: D(Wn),
ajaxTransport: D($n),
ajax: function(e, n) {
function r(e, n, r, s) {
var l, f, v, b, T, N = n;
2 !== x && (x = 2, u && clearTimeout(u), i = t, a = s || "", w.readyState = e > 0 ? 4 : 0, r && (b = M(p, w, r)), e >= 200 && 300 > e || 304 === e ? (p.ifModified && (T = w.getResponseHeader("Last-Modified"), T && (st.lastModified[o] = T), T = w.getResponseHeader("etag"), T && (st.etag[o] = T)), 304 === e ? (l = !0, N = "notmodified") : (l = q(p, b), N = l.state, f = l.data, v = l.error, l = !v)) : (v = N, (e || !N) && (N = "error", 0 > e && (e = 0))), w.status = e, w.statusText = (n || N) + "", l ? g.resolveWith(d, [f, N, w]) : g.rejectWith(d, [w, N, v]), w.statusCode(y), y = t, c && h.trigger(l ? "ajaxSuccess" : "ajaxError", [w, p, l ? f : v]), m.fireWith(d, [w, N]), c && (h.trigger("ajaxComplete", [w, p]), --st.active || st.event.trigger("ajaxStop")))
}
"object" == typeof e && (n = e, e = t), n = n || {};
var i, o, a, s, u, l, c, f, p = st.ajaxSetup({}, n),
d = p.context || p,
h = p.context && (d.nodeType || d.jquery) ? st(d) : st.event,
g = st.Deferred(),
m = st.Callbacks("once memory"),
y = p.statusCode || {},
v = {},
b = {},
x = 0,
T = "canceled",
w = {
readyState: 0,
getResponseHeader: function(e) {
var t;
if (2 === x) {
if (!s)
for (s = {}; t = _n.exec(a);) s[t[1].toLowerCase()] = t[2];
t = s[e.toLowerCase()]
}
return null == t ? null : t
},
getAllResponseHeaders: function() {
return 2 === x ? a : null
},
setRequestHeader: function(e, t) {
var n = e.toLowerCase();
return x || (e = b[n] = b[n] || e, v[e] = t), this
},
overrideMimeType: function(e) {
return x || (p.mimeType = e), this
},
statusCode: function(e) {
var t;
if (e)
if (2 > x)
for (t in e) y[t] = [y[t], e[t]];
else w.always(e[w.status]);
return this
},
abort: function(e) {
var t = e || T;
return i && i.abort(t), r(0, t), this
}
};
if (g.promise(w).complete = m.add, w.success = w.done, w.error = w.fail, p.url = ((e || p.url || Dn) + "").replace(Mn, "").replace(Bn, jn[1] + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = st.trim(p.dataType || "*").toLowerCase().match(lt) || [""], null == p.crossDomain && (l = Pn.exec(p.url.toLowerCase()), p.crossDomain = !(!l || l[1] === jn[1] && l[2] === jn[2] && (l[3] || ("http:" === l[1] ? 80 : 443)) == (jn[3] || ("http:" === jn[1] ? 80 : 443)))), p.data && p.processData && "string" != typeof p.data && (p.data = st.param(p.data, p.traditional)), L(Wn, p, n, w), 2 === x) return w;
c = p.global, c && 0 === st.active++ && st.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !On.test(p.type), o = p.url, p.hasContent || (p.data && (o = p.url += (Hn.test(o) ? "&" : "?") + p.data, delete p.data), p.cache === !1 && (p.url = qn.test(o) ? o.replace(qn, "$1_=" + Ln++) : o + (Hn.test(o) ? "&" : "?") + "_=" + Ln++)), p.ifModified && (st.lastModified[o] && w.setRequestHeader("If-Modified-Since", st.lastModified[o]), st.etag[o] && w.setRequestHeader("If-None-Match", st.etag[o])), (p.data && p.hasContent && p.contentType !== !1 || n.contentType) && w.setRequestHeader("Content-Type", p.contentType), w.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + In + "; q=0.01" : "") : p.accepts["*"]);
for (f in p.headers) w.setRequestHeader(f, p.headers[f]);
if (p.beforeSend && (p.beforeSend.call(d, w, p) === !1 || 2 === x)) return w.abort();
T = "abort";
for (f in {
success: 1,
error: 1,
complete: 1
}) w[f](p[f]);
if (i = L($n, p, n, w)) {
w.readyState = 1, c && h.trigger("ajaxSend", [w, p]), p.async && p.timeout > 0 && (u = setTimeout(function() {
w.abort("timeout")
}, p.timeout));
try {
x = 1, i.send(v, r)
} catch (N) {
if (!(2 > x)) throw N;
r(-1, N)
}
} else r(-1, "No Transport");
return w
},
getScript: function(e, n) {
return st.get(e, t, n, "script")
},
getJSON: function(e, t, n) {
return st.get(e, t, n, "json")
}
}), st.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents: {
script: /(?:java|ecma)script/
},
converters: {
"text script": function(e) {
return st.globalEval(e), e
}
}
}), st.ajaxPrefilter("script", function(e) {
e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
}), st.ajaxTransport("script", function(e) {
if (e.crossDomain) {
var n, r = V.head || st("head")[0] || V.documentElement;
return {
send: function(t, i) {
n = V.createElement("script"), n.async = !0, e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function(e, t) {
(t || !n.readyState || /loaded|complete/.test(n.readyState)) && (n.onload = n.onreadystatechange = null, n.parentNode && n.parentNode.removeChild(n), n = null, t || i(200, "success"))
}, r.insertBefore(n, r.firstChild)
},
abort: function() {
n && n.onload(t, !0)
}
}
}
});
var Xn = [],
Un = /(=)\?(?=&|$)|\?\?/;
st.ajaxSetup({
jsonp: "callback",
jsonpCallback: function() {
var e = Xn.pop() || st.expando + "_" + Ln++;
return this[e] = !0, e
}
}), st.ajaxPrefilter("json jsonp", function(n, r, i) {
var o, a, s, u = n.jsonp !== !1 && (Un.test(n.url) ? "url" : "string" == typeof n.data && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Un.test(n.data) && "data");
return u || "jsonp" === n.dataTypes[0] ? (o = n.jsonpCallback = st.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, u ? n[u] = n[u].replace(Un, "$1" + o) : n.jsonp !== !1 && (n.url += (Hn.test(n.url) ? "&" : "?") + n.jsonp + "=" + o), n.converters["script json"] = function() {
return s || st.error(o + " was not called"), s[0]
}, n.dataTypes[0] = "json", a = e[o], e[o] = function() {
s = arguments
}, i.always(function() {
e[o] = a, n[o] && (n.jsonpCallback = r.jsonpCallback, Xn.push(o)), s && st.isFunction(a) && a(s[0]), s = a = t
}), "script") : t
});
var Vn, Yn, Jn = 0,
Gn = e.ActiveXObject && function() {
var e;
for (e in Vn) Vn[e](t, !0)
};
st.ajaxSettings.xhr = e.ActiveXObject ? function() {
return !this.isLocal && _() || F()
} : _, Yn = st.ajaxSettings.xhr(), st.support.cors = !!Yn && "withCredentials" in Yn, Yn = st.support.ajax = !!Yn, Yn && st.ajaxTransport(function(n) {
if (!n.crossDomain || st.support.cors) {
var r;
return {
send: function(i, o) {
var a, s, u = n.xhr();
if (n.username ? u.open(n.type, n.url, n.async, n.username, n.password) : u.open(n.type, n.url, n.async), n.xhrFields)
for (s in n.xhrFields) u[s] = n.xhrFields[s];
n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType), n.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
try {
for (s in i) u.setRequestHeader(s, i[s])
} catch (l) {}
u.send(n.hasContent && n.data || null), r = function(e, i) {
var s, l, c, f, p;
try {
if (r && (i || 4 === u.readyState))
if (r = t, a && (u.onreadystatechange = st.noop, Gn && delete Vn[a]), i) 4 !== u.readyState && u.abort();
else {
f = {}, s = u.status, p = u.responseXML, c = u.getAllResponseHeaders(), p && p.documentElement && (f.xml = p), "string" == typeof u.responseText && (f.text = u.responseText);
try {
l = u.statusText
} catch (d) {
l = ""
}
s || !n.isLocal || n.crossDomain ? 1223 === s && (s = 204) : s = f.text ? 200 : 404
}
} catch (h) {
i || o(-1, h)
}
f && o(s, l, f, c)
}, n.async ? 4 === u.readyState ? setTimeout(r) : (a = ++Jn, Gn && (Vn || (Vn = {}, st(e).unload(Gn)), Vn[a] = r), u.onreadystatechange = r) : r()
},
abort: function() {
r && r(t, !0)
}
}
}
});
var Qn, Kn, Zn = /^(?:toggle|show|hide)$/,
er = RegExp("^(?:([+-])=|)(" + ut + ")([a-z%]*)$", "i"),
tr = /queueHooks$/,
nr = [W],
rr = {
"*": [function(e, t) {
var n, r, i = this.createTween(e, t),
o = er.exec(t),
a = i.cur(),
s = +a || 0,
u = 1,
l = 20;
if (o) {
if (n = +o[2], r = o[3] || (st.cssNumber[e] ? "" : "px"), "px" !== r && s) {
s = st.css(i.elem, e, !0) || n || 1;
do u = u || ".5", s /= u, st.style(i.elem, e, s + r); while (u !== (u = i.cur() / a) && 1 !== u && --l)
}
i.unit = r, i.start = s, i.end = o[1] ? s + (o[1] + 1) * n : n
}
return i
}]
};
st.Animation = st.extend(P, {
tweener: function(e, t) {
st.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
for (var n, r = 0, i = e.length; i > r; r++) n = e[r], rr[n] = rr[n] || [], rr[n].unshift(t)
},
prefilter: function(e, t) {
t ? nr.unshift(e) : nr.push(e)
}
}), st.Tween = $, $.prototype = {
constructor: $,
init: function(e, t, n, r, i, o) {
this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (st.cssNumber[n] ? "" : "px")
},
cur: function() {
var e = $.propHooks[this.prop];
return e && e.get ? e.get(this) : $.propHooks._default.get(this)
},
run: function(e) {
var t, n = $.propHooks[this.prop];
return this.pos = t = this.options.duration ? st.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : $.propHooks._default.set(this), this
}
}, $.prototype.init.prototype = $.prototype, $.propHooks = {
_default: {
get: function(e) {
var t;
return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = st.css(e.elem, e.prop, "auto"), t && "auto" !== t ? t : 0) : e.elem[e.prop]
},
set: function(e) {
st.fx.step[e.prop] ? st.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[st.cssProps[e.prop]] || st.cssHooks[e.prop]) ? st.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
}
}
}, $.propHooks.scrollTop = $.propHooks.scrollLeft = {
set: function(e) {
e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
}
}, st.each(["toggle", "show", "hide"], function(e, t) {
var n = st.fn[t];
st.fn[t] = function(e, r, i) {
return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(I(t, !0), e, r, i)
}
}), st.fn.extend({
fadeTo: function(e, t, n, r) {
return this.filter(w).css("opacity", 0).show().end().animate({
opacity: t
}, e, n, r)
},
animate: function(e, t, n, r) {
var i = st.isEmptyObject(e),
o = st.speed(t, n, r),
a = function() {
var t = P(this, st.extend({}, e), o);
a.finish = function() {
t.stop(!0)
}, (i || st._data(this, "finish")) && t.stop(!0)
};
return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a)
},
stop: function(e, n, r) {
var i = function(e) {
var t = e.stop;
delete e.stop, t(r)
};
return "string" != typeof e && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function() {
var t = !0,
n = null != e && e + "queueHooks",
o = st.timers,
a = st._data(this);
if (n) a[n] && a[n].stop && i(a[n]);
else
for (n in a) a[n] && a[n].stop && tr.test(n) && i(a[n]);
for (n = o.length; n--;) o[n].elem !== this || null != e && o[n].queue !== e || (o[n].anim.stop(r), t = !1, o.splice(n, 1));
(t || !r) && st.dequeue(this, e)
})
},
finish: function(e) {
return e !== !1 && (e = e || "fx"), this.each(function() {
var t, n = st._data(this),
r = n[e + "queue"],
i = n[e + "queueHooks"],
o = st.timers,
a = r ? r.length : 0;
for (n.finish = !0, st.queue(this, e, []), i && i.cur && i.cur.finish && i.cur.finish.call(this), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
for (t = 0; a > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
delete n.finish
})
}
}), st.each({
slideDown: I("show"),
slideUp: I("hide"),
slideToggle: I("toggle"),
fadeIn: {
opacity: "show"
},
fadeOut: {
opacity: "hide"
},
fadeToggle: {
opacity: "toggle"
}
}, function(e, t) {
st.fn[e] = function(e, n, r) {
return this.animate(t, e, n, r)
}
}), st.speed = function(e, t, n) {
var r = e && "object" == typeof e ? st.extend({}, e) : {
complete: n || !n && t || st.isFunction(e) && e,
duration: e,
easing: n && t || t && !st.isFunction(t) && t
};
return r.duration = st.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in st.fx.speeds ? st.fx.speeds[r.duration] : st.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() {
st.isFunction(r.old) && r.old.call(this), r.queue && st.dequeue(this, r.queue)
}, r
}, st.easing = {
linear: function(e) {
return e
},
swing: function(e) {
return .5 - Math.cos(e * Math.PI) / 2
}
}, st.timers = [], st.fx = $.prototype.init, st.fx.tick = function() {
var e, n = st.timers,
r = 0;
for (Qn = st.now(); n.length > r; r++) e = n[r], e() || n[r] !== e || n.splice(r--, 1);
n.length || st.fx.stop(), Qn = t
}, st.fx.timer = function(e) {
e() && st.timers.push(e) && st.fx.start()
}, st.fx.interval = 13, st.fx.start = function() {
Kn || (Kn = setInterval(st.fx.tick, st.fx.interval))
}, st.fx.stop = function() {
clearInterval(Kn), Kn = null
}, st.fx.speeds = {
slow: 600,
fast: 200,
_default: 400
}, st.fx.step = {}, st.expr && st.expr.filters && (st.expr.filters.animated = function(e) {
return st.grep(st.timers, function(t) {
return e === t.elem
}).length
}), st.fn.offset = function(e) {
if (arguments.length) return e === t ? this : this.each(function(t) {
st.offset.setOffset(this, e, t)
});
var n, r, i = {
top: 0,
left: 0
},
o = this[0],
a = o && o.ownerDocument;
if (a) return n = a.documentElement, st.contains(n, o) ? (o.getBoundingClientRect !== t && (i = o.getBoundingClientRect()), r = z(a), {
top: i.top + (r.pageYOffset || n.scrollTop) - (n.clientTop || 0),
left: i.left + (r.pageXOffset || n.scrollLeft) - (n.clientLeft || 0)
}) : i
}, st.offset = {
setOffset: function(e, t, n) {
var r = st.css(e, "position");
"static" === r && (e.style.position = "relative");
var i, o, a = st(e),
s = a.offset(),
u = st.css(e, "top"),
l = st.css(e, "left"),
c = ("absolute" === r || "fixed" === r) && st.inArray("auto", [u, l]) > -1,
f = {},
p = {};
c ? (p = a.position(), i = p.top, o = p.left) : (i = parseFloat(u) || 0, o = parseFloat(l) || 0), st.isFunction(t) && (t = t.call(e, n, s)), null != t.top && (f.top = t.top - s.top + i), null != t.left && (f.left = t.left - s.left + o), "using" in t ? t.using.call(e, f) : a.css(f)
}
}, st.fn.extend({
position: function() {
if (this[0]) {
var e, t, n = {
top: 0,
left: 0
},
r = this[0];
return "fixed" === st.css(r, "position") ? t = r.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), st.nodeName(e[0], "html") || (n = e.offset()), n.top += st.css(e[0], "borderTopWidth", !0), n.left += st.css(e[0], "borderLeftWidth", !0)), {
top: t.top - n.top - st.css(r, "marginTop", !0),
left: t.left - n.left - st.css(r, "marginLeft", !0)
}
}
},
offsetParent: function() {
return this.map(function() {
for (var e = this.offsetParent || V.documentElement; e && !st.nodeName(e, "html") && "static" === st.css(e, "position");) e = e.offsetParent;
return e || V.documentElement
})
}
}), st.each({
scrollLeft: "pageXOffset",
scrollTop: "pageYOffset"
}, function(e, n) {
var r = /Y/.test(n);
st.fn[e] = function(i) {
return st.access(this, function(e, i, o) {
var a = z(e);
return o === t ? a ? n in a ? a[n] : a.document.documentElement[i] : e[i] : (a ? a.scrollTo(r ? st(a).scrollLeft() : o, r ? o : st(a).scrollTop()) : e[i] = o, t)
}, e, i, arguments.length, null)
}
}), st.each({
Height: "height",
Width: "width"
}, function(e, n) {
st.each({
padding: "inner" + e,
content: n,
"": "outer" + e
}, function(r, i) {
st.fn[i] = function(i, o) {
var a = arguments.length && (r || "boolean" != typeof i),
s = r || (i === !0 || o === !0 ? "margin" : "border");
return st.access(this, function(n, r, i) {
var o;
return st.isWindow(n) ? n.document.documentElement["client" + e] : 9 === n.nodeType ? (o = n.documentElement, Math.max(n.body["scroll" + e], o["scroll" + e], n.body["offset" + e], o["offset" + e], o["client" + e])) : i === t ? st.css(n, r, s) : st.style(n, r, i, s)
}, n, a ? i : t, a, null)
}
})
}), e.jQuery = e.$ = st, "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [], function() {
return st
})
})(window);
/*!
* jQuery Form Plugin
* version: 3.51.0-2014.06.20
* Requires jQuery v1.5 or later
* Copyright (c) 2014 M. Alsup
* Examples and documentation at: http://malsup.com/jquery/form/
* Project repository: https://github.com/malsup/form
* Dual licensed under the MIT and GPL licenses.
* https://github.com/malsup/form#copyright-and-license
*/
! function(e) {
"use strict";
"function" == typeof define && define.amd ? define(["jquery"], e) : e("undefined" != typeof jQuery ? jQuery : window.Zepto)
}(function(e) {
"use strict";
function t(t) {
var r = t.data;
t.isDefaultPrevented() || (t.preventDefault(), e(t.target).ajaxSubmit(r))
}
function r(t) {
var r = t.target,
a = e(r);
if (!a.is("[type=submit],[type=image]")) {
var n = a.closest("[type=submit]");
if (0 === n.length) return;
r = n[0]
}
var i = this;
if (i.clk = r, "image" == r.type)
if (void 0 !== t.offsetX) i.clk_x = t.offsetX, i.clk_y = t.offsetY;
else if ("function" == typeof e.fn.offset) {
var o = a.offset();
i.clk_x = t.pageX - o.left, i.clk_y = t.pageY - o.top
} else i.clk_x = t.pageX - r.offsetLeft, i.clk_y = t.pageY - r.offsetTop;
setTimeout(function() {
i.clk = i.clk_x = i.clk_y = null
}, 100)
}
function a() {
if (e.fn.ajaxSubmit.debug) {
var t = "[jquery.form] " + Array.prototype.join.call(arguments, "");
window.console && window.console.log ? window.console.log(t) : window.opera && window.opera.postError && window.opera.postError(t)
}
}
var n = {};
n.fileapi = void 0 !== e("").get(0).files, n.formdata = void 0 !== window.FormData;
var i = !!e.fn.prop;
e.fn.attr2 = function() {
if (!i) return this.attr.apply(this, arguments);
var e = this.prop.apply(this, arguments);
return e && e.jquery || "string" == typeof e ? e : this.attr.apply(this, arguments)
}, e.fn.ajaxSubmit = function(t) {
function r(r) {
var a, n, i = e.param(r, t.traditional).split("&"),
o = i.length,
s = [];
for (a = 0; o > a; a++) i[a] = i[a].replace(/\+/g, " "), n = i[a].split("="), s.push([decodeURIComponent(n[0]), decodeURIComponent(n[1])]);
return s
}
function o(a) {
for (var n = new FormData, i = 0; i ').val(m.extraData[d].value).appendTo(w)[0] : e('').val(m.extraData[d]).appendTo(w)[0]);
m.iframeTarget || v.appendTo("body"), g.attachEvent ? g.attachEvent("onload", s) : g.addEventListener("load", s, !1), setTimeout(t, 15);
try {
w.submit()
} catch (h) {
var x = document.createElement("form").submit;
x.apply(w)
}
} finally {
w.setAttribute("action", i), w.setAttribute("enctype", c), r ? w.setAttribute("target", r) : f.removeAttr("target"), e(l).remove()
}
}
function s(t) {
if (!x.aborted && !F) {
if (M = n(g), M || (a("cannot access response document"), t = k), t === D && x) return x.abort("timeout"), void S.reject(x, "timeout");
if (t == k && x) return x.abort("server abort"), void S.reject(x, "error", "server abort");
if (M && M.location.href != m.iframeSrc || T) {
g.detachEvent ? g.detachEvent("onload", s) : g.removeEventListener("load", s, !1);
var r, i = "success";
try {
if (T) throw "timeout";
var o = "xml" == m.dataType || M.XMLDocument || e.isXMLDoc(M);
if (a("isXml=" + o), !o && window.opera && (null === M.body || !M.body.innerHTML) && --O) return a("requeing onLoad callback, DOM not available"), void setTimeout(s, 250);
var u = M.body ? M.body : M.documentElement;
x.responseText = u ? u.innerHTML : null, x.responseXML = M.XMLDocument ? M.XMLDocument : M, o && (m.dataType = "xml"), x.getResponseHeader = function(e) {
var t = {
"content-type": m.dataType
};
return t[e.toLowerCase()]
}, u && (x.status = Number(u.getAttribute("status")) || x.status, x.statusText = u.getAttribute("statusText") || x.statusText);
var c = (m.dataType || "").toLowerCase(),
l = /(json|script|text)/.test(c);
if (l || m.textarea) {
var f = M.getElementsByTagName("textarea")[0];
if (f) x.responseText = f.value, x.status = Number(f.getAttribute("status")) || x.status, x.statusText = f.getAttribute("statusText") || x.statusText;
else if (l) {
var p = M.getElementsByTagName("pre")[0],
h = M.getElementsByTagName("body")[0];
p ? x.responseText = p.textContent ? p.textContent : p.innerText : h && (x.responseText = h.textContent ? h.textContent : h.innerText)
}
} else "xml" == c && !x.responseXML && x.responseText && (x.responseXML = X(x.responseText));
try {
E = _(x, c, m)
} catch (y) {
i = "parsererror", x.error = r = y || i
}
} catch (y) {
a("error caught: ", y), i = "error", x.error = r = y || i
}
x.aborted && (a("upload aborted"), i = null), x.status && (i = x.status >= 200 && x.status '), v.css({
position: "absolute",
top: "-1000px",
left: "-1000px"
})), g = v[0], x = {
aborted: 0,
responseText: null,
responseXML: null,
status: 0,
statusText: "n/a",
getAllResponseHeaders: function() {},
getResponseHeader: function() {},
setRequestHeader: function() {},
abort: function(t) {
var r = "timeout" === t ? "timeout" : "aborted";
a("aborting upload... " + r), this.aborted = 1;
try {
g.contentWindow.document.execCommand && g.contentWindow.document.execCommand("Stop")
} catch (n) {}
v.attr("src", m.iframeSrc), x.error = r, m.error && m.error.call(m.context, x, r, t), d && e.event.trigger("ajaxError", [x, m, r]), m.complete && m.complete.call(m.context, x, r)
}
}, d = m.global, d && 0 === e.active++ && e.event.trigger("ajaxStart"), d && e.event.trigger("ajaxSend", [x, m]), m.beforeSend && m.beforeSend.call(m.context, x, m) === !1) return m.global && e.active--, S.reject(), S;
if (x.aborted) return S.reject(), S;
y = w.clk, y && (b = y.name, b && !y.disabled && (m.extraData = m.extraData || {}, m.extraData[b] = y.value, "image" == y.type && (m.extraData[b + ".x"] = w.clk_x, m.extraData[b + ".y"] = w.clk_y)));
var D = 1,
k = 2,
A = e("meta[name=csrf-token]").attr("content"),
L = e("meta[name=csrf-param]").attr("content");
L && A && (m.extraData = m.extraData || {}, m.extraData[L] = A), m.forceSync ? o() : setTimeout(o, 10);
var E, M, F, O = 50,
X = e.parseXML || function(e, t) {
return window.ActiveXObject ? (t = new ActiveXObject("Microsoft.XMLDOM"), t.async = "false", t.loadXML(e)) : t = (new DOMParser).parseFromString(e, "text/xml"), t && t.documentElement && "parsererror" != t.documentElement.nodeName ? t : null
},
C = e.parseJSON || function(e) {
return window.eval("(" + e + ")")
},
_ = function(t, r, a) {
var n = t.getResponseHeader("content-type") || "",
i = "xml" === r || !r && n.indexOf("xml") >= 0,
o = i ? t.responseXML : t.responseText;
return i && "parsererror" === o.documentElement.nodeName && e.error && e.error("parsererror"), a && a.dataFilter && (o = a.dataFilter(o, r)), "string" == typeof o && ("json" === r || !r && n.indexOf("json") >= 0 ? o = C(o) : ("script" === r || !r && n.indexOf("javascript") >= 0) && e.globalEval(o)), o
};
return S
}
if (!this.length) return a("ajaxSubmit: skipping submit process - no element selected"), this;
var u, c, l, f = this;
"function" == typeof t ? t = {
success: t
} : void 0 === t && (t = {}), u = t.type || this.attr2("method"), c = t.url || this.attr2("action"), l = "string" == typeof c ? e.trim(c) : "", l = l || window.location.href || "", l && (l = (l.match(/^([^#]+)/) || [])[1]), t = e.extend(!0, {
url: l,
success: e.ajaxSettings.success,
type: u || e.ajaxSettings.type,
iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank"
}, t);
var m = {};
if (this.trigger("form-pre-serialize", [this, t, m]), m.veto) return a("ajaxSubmit: submit vetoed via form-pre-serialize trigger"), this;
if (t.beforeSerialize && t.beforeSerialize(this, t) === !1) return a("ajaxSubmit: submit aborted via beforeSerialize callback"), this;
var d = t.traditional;
void 0 === d && (d = e.ajaxSettings.traditional);
var p, h = [],
v = this.formToArray(t.semantic, h);
if (t.data && (t.extraData = t.data, p = e.param(t.data, d)), t.beforeSubmit && t.beforeSubmit(v, this, t) === !1) return a("ajaxSubmit: submit aborted via beforeSubmit callback"), this;
if (this.trigger("form-submit-validate", [v, this, t, m]), m.veto) return a("ajaxSubmit: submit vetoed via form-submit-validate trigger"), this;
var g = e.param(v, d);
p && (g = g ? g + "&" + p : p), "GET" == t.type.toUpperCase() ? (t.url += (t.url.indexOf("?") >= 0 ? "&" : "?") + g, t.data = null) : t.data = g;
var x = [];
if (t.resetForm && x.push(function() {
f.resetForm()
}), t.clearForm && x.push(function() {
f.clearForm(t.includeHidden)
}), !t.dataType && t.target) {
var y = t.success || function() {};
x.push(function(r) {
var a = t.replaceTarget ? "replaceWith" : "html";
e(t.target)[a](r).each(y, arguments)
})
} else t.success && x.push(t.success);
if (t.success = function(e, r, a) {
for (var n = t.context || this, i = 0, o = x.length; o > i; i++) x[i].apply(n, [e, r, a || f, f])
}, t.error) {
var b = t.error;
t.error = function(e, r, a) {
var n = t.context || this;
b.apply(n, [e, r, a, f])
}
}
if (t.complete) {
var T = t.complete;
t.complete = function(e, r) {
var a = t.context || this;
T.apply(a, [e, r, f])
}
}
var j = e("input[type=file]:enabled", this).filter(function() {
return "" !== e(this).val()
}),
w = j.length > 0,
S = "multipart/form-data",
D = f.attr("enctype") == S || f.attr("encoding") == S,
k = n.fileapi && n.formdata;
a("fileAPI :" + k);
var A, L = (w || D) && !k;
t.iframe !== !1 && (t.iframe || L) ? t.closeKeepAlive ? e.get(t.closeKeepAlive, function() {
A = s(v)
}) : A = s(v) : A = (w || D) && k ? o(v) : e.ajax(t), f.removeData("jqxhr").data("jqxhr", A);
for (var E = 0; E c; c++)
if (d = u[c], f = d.name, f && !d.disabled)
if (t && o.clk && "image" == d.type) o.clk == d && (a.push({
name: f,
value: e(d).val(),
type: d.type
}), a.push({
name: f + ".x",
value: o.clk_x
}, {
name: f + ".y",
value: o.clk_y
}));
else if (m = e.fieldValue(d, !0), m && m.constructor == Array)
for (r && r.push(d), l = 0, h = m.length; h > l; l++) a.push({
name: f,
value: m[l]
});
else if (n.fileapi && "file" == d.type) {
r && r.push(d);
var v = d.files;
if (v.length)
for (l = 0; l i; i++) r.push({
name: a,
value: n[i]
});
else null !== n && "undefined" != typeof n && r.push({
name: this.name,
value: n
})
}
}), e.param(r)
}, e.fn.fieldValue = function(t) {
for (var r = [], a = 0, n = this.length; n > a; a++) {
var i = this[a],
o = e.fieldValue(i, t);
null === o || "undefined" == typeof o || o.constructor == Array && !o.length || (o.constructor == Array ? e.merge(r, o) : r.push(o))
}
return r
}, e.fieldValue = function(t, r) {
var a = t.name,
n = t.type,
i = t.tagName.toLowerCase();
if (void 0 === r && (r = !0), r && (!a || t.disabled || "reset" == n || "button" == n || ("checkbox" == n || "radio" == n) && !t.checked || ("submit" == n || "image" == n) && t.form && t.form.clk != t || "select" == i && -1 == t.selectedIndex)) return null;
if ("select" == i) {
var o = t.selectedIndex;
if (0 > o) return null;
for (var s = [], u = t.options, c = "select-one" == n, l = c ? o + 1 : u.length, f = c ? o : 0; l > f; f++) {
var m = u[f];
if (m.selected) {
var d = m.value;
if (d || (d = m.attributes && m.attributes.value && !m.attributes.value.specified ? m.text : m.value), c) return d;
s.push(d)
}
}
return s
}
return e(t).val()
}, e.fn.clearForm = function(t) {
return this.each(function() {
e("input,select,textarea", this).clearFields(t)
})
}, e.fn.clearFields = e.fn.clearInputs = function(t) {
var r = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;
return this.each(function() {
var a = this.type,
n = this.tagName.toLowerCase();
r.test(a) || "textarea" == n ? this.value = "" : "checkbox" == a || "radio" == a ? this.checked = !1 : "select" == n ? this.selectedIndex = -1 : "file" == a ? /MSIE/.test(navigator.userAgent) ? e(this).replaceWith(e(this).clone(!0)) : e(this).val("") : t && (t === !0 && /hidden/.test(a) || "string" == typeof t && e(this).is(t)) && (this.value = "")
})
}, e.fn.resetForm = function() {
return this.each(function() {
("function" == typeof this.reset || "object" == typeof this.reset && !this.reset.nodeType) && this.reset()
})
}, e.fn.enable = function(e) {
return void 0 === e && (e = !0), this.each(function() {
this.disabled = !e
})
}, e.fn.selected = function(t) {
return void 0 === t && (t = !0), this.each(function() {
var r = this.type;
if ("checkbox" == r || "radio" == r) this.checked = t;
else if ("option" == this.tagName.toLowerCase()) {
var a = e(this).parent("select");
t && a[0] && "select-one" == a[0].type && a.find("option").selected(!1), this.selected = t
}
})
}, e.fn.ajaxSubmit.debug = !1
});
/*! jQuery Validation Plugin - v1.12.0 - 4/1/2014
* http://jqueryvalidation.org/
* Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */
! function(a) {
a.extend(a.fn, {
validate: function(b) {
if (!this.length) return void(b && b.debug && window.console && console.warn("Nothing selected, can't validate, returning nothing."));
var c = a.data(this[0], "validator");
return c ? c : (this.attr("novalidate", "novalidate"), c = new a.validator(b, this[0]), a.data(this[0], "validator", c), c.settings.onsubmit && (this.validateDelegate(":submit", "click", function(b) {
c.settings.submitHandler && (c.submitButton = b.target), a(b.target).hasClass("cancel") && (c.cancelSubmit = !0), void 0 !== a(b.target).attr("formnovalidate") && (c.cancelSubmit = !0)
}), this.submit(function(b) {
function d() {
var d;
return c.settings.submitHandler ? (c.submitButton && (d = a("").attr("name", c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)), c.settings.submitHandler.call(c, c.currentForm, b), c.submitButton && d.remove(), !1) : !0
}
return c.settings.debug && b.preventDefault(), c.cancelSubmit ? (c.cancelSubmit = !1, d()) : c.form() ? c.pendingRequest ? (c.formSubmitted = !0, !1) : d() : (c.focusInvalid(), !1)
})), c)
},
valid: function() {
var b, c;
return a(this[0]).is("form") ? b = this.validate().form() : (b = !0, c = a(this[0].form).validate(), this.each(function() {
b = c.element(this) && b
})), b
},
removeAttrs: function(b) {
var c = {},
d = this;
return a.each(b.split(/\s/), function(a, b) {
c[b] = d.attr(b), d.removeAttr(b)
}), c
},
rules: function(b, c) {
var d, e, f, g, h, i, j = this[0];
if (b) switch (d = a.data(j.form, "validator").settings, e = d.rules, f = a.validator.staticRules(j), b) {
case "add":
a.extend(f, a.validator.normalizeRule(c)), delete f.messages, e[j.name] = f, c.messages && (d.messages[j.name] = a.extend(d.messages[j.name], c.messages));
break;
case "remove":
return c ? (i = {}, a.each(c.split(/\s/), function(b, c) {
i[c] = f[c], delete f[c], "required" === c && a(j).removeAttr("aria-required")
}), i) : (delete e[j.name], f)
}
return g = a.validator.normalizeRules(a.extend({}, a.validator.classRules(j), a.validator.attributeRules(j), a.validator.dataRules(j), a.validator.staticRules(j)), j), g.required && (h = g.required, delete g.required, g = a.extend({
required: h
}, g), a(j).attr("aria-required", "true")), g.remote && (h = g.remote, delete g.remote, g = a.extend(g, {
remote: h
})), g
}
}), a.extend(a.expr[":"], {
blank: function(b) {
return !a.trim("" + a(b).val())
},
filled: function(b) {
return !!a.trim("" + a(b).val())
},
unchecked: function(b) {
return !a(b).prop("checked")
}
}), a.validator = function(b, c) {
this.settings = a.extend(!0, {}, a.validator.defaults, b), this.currentForm = c, this.init()
}, a.validator.format = function(b, c) {
return 1 === arguments.length ? function() {
var c = a.makeArray(arguments);
return c.unshift(b), a.validator.format.apply(this, c)
} : (arguments.length > 2 && c.constructor !== Array && (c = a.makeArray(arguments).slice(1)), c.constructor !== Array && (c = [c]), a.each(c, function(a, c) {
b = b.replace(new RegExp("\\{" + a + "\\}", "g"), function() {
return c
})
}), b)
}, a.extend(a.validator, {
defaults: {
messages: {},
groups: {},
rules: {},
errorClass: "error",
validClass: "valid",
errorElement: "label",
focusInvalid: !0,
errorContainer: a([]),
errorLabelContainer: a([]),
onsubmit: !0,
ignore: ":hidden",
ignoreTitle: !1,
onfocusin: function(a) {
this.lastActive = a, this.settings.focusCleanup && !this.blockFocusCleanup && (this.settings.unhighlight && this.settings.unhighlight.call(this, a, this.settings.errorClass, this.settings.validClass), this.addWrapper(this.errorsFor(a)).hide())
},
onfocusout: function(a) {
this.checkable(a) || !(a.name in this.submitted) && this.optional(a) || this.element(a)
},
onkeyup: function(a, b) {
(9 !== b.which || "" !== this.elementValue(a)) && (a.name in this.submitted || a === this.lastElement) && this.element(a)
},
onclick: function(a) {
a.name in this.submitted ? this.element(a) : a.parentNode.name in this.submitted && this.element(a.parentNode)
},
highlight: function(b, c, d) {
"radio" === b.type ? this.findByName(b.name).addClass(c).removeClass(d) : a(b).addClass(c).removeClass(d)
},
unhighlight: function(b, c, d) {
"radio" === b.type ? this.findByName(b.name).removeClass(c).addClass(d) : a(b).removeClass(c).addClass(d)
}
},
setDefaults: function(b) {
a.extend(a.validator.defaults, b)
},
messages: {
required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date (ISO).",
number: "Please enter a valid number.",
digits: "Please enter only digits.",
creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
maxlength: a.validator.format("Please enter no more than {0} characters."),
minlength: a.validator.format("Please enter at least {0} characters."),
rangelength: a.validator.format("Please enter a value between {0} and {1} characters long."),
range: a.validator.format("Please enter a value between {0} and {1}."),
max: a.validator.format("Please enter a value less than or equal to {0}."),
min: a.validator.format("Please enter a value greater than or equal to {0}.")
},
autoCreateRanges: !1,
prototype: {
init: function() {
function b(b) {
var c = a.data(this[0].form, "validator"),
d = "on" + b.type.replace(/^validate/, ""),
e = c.settings;
e[d] && !this.is(e.ignore) && e[d].call(c, this[0], b)
}
this.labelContainer = a(this.settings.errorLabelContainer), this.errorContext = this.labelContainer.length && this.labelContainer || a(this.currentForm), this.containers = a(this.settings.errorContainer).add(this.settings.errorLabelContainer), this.submitted = {}, this.valueCache = {}, this.pendingRequest = 0, this.pending = {}, this.invalid = {}, this.reset();
var c, d = this.groups = {};
a.each(this.settings.groups, function(b, c) {
"string" == typeof c && (c = c.split(/\s/)), a.each(c, function(a, c) {
d[c] = b
})
}), c = this.settings.rules, a.each(c, function(b, d) {
c[b] = a.validator.normalizeRule(d)
}), a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ", "focusin focusout keyup", b).validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", b), this.settings.invalidHandler && a(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler), a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required", "true")
},
form: function() {
return this.checkForm(), a.extend(this.submitted, this.errorMap), this.invalid = a.extend({}, this.errorMap), this.valid() || a(this.currentForm).triggerHandler("invalid-form", [this]), this.showErrors(), this.valid()
},
checkForm: function() {
this.prepareForm();
for (var a = 0, b = this.currentElements = this.elements(); b[a]; a++) this.check(b[a]);
return this.valid()
},
element: function(b) {
var c = this.clean(b),
d = this.validationTargetFor(c),
e = !0;
return this.lastElement = d, void 0 === d ? delete this.invalid[c.name] : (this.prepareElement(d), this.currentElements = a(d), e = this.check(d) !== !1, e ? delete this.invalid[d.name] : this.invalid[d.name] = !0), a(b).attr("aria-invalid", !e), this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), e
},
showErrors: function(b) {
if (b) {
a.extend(this.errorMap, b), this.errorList = [];
for (var c in b) this.errorList.push({
message: b[c],
element: this.findByName(c)[0]
});
this.successList = a.grep(this.successList, function(a) {
return !(a.name in b)
})
}
this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors()
},
resetForm: function() {
a.fn.resetForm && a(this.currentForm).resetForm(), this.submitted = {}, this.lastElement = null, this.prepareForm(), this.hideErrors(), this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")
},
numberOfInvalids: function() {
return this.objectLength(this.invalid)
},
objectLength: function(a) {
var b, c = 0;
for (b in a) c++;
return c
},
hideErrors: function() {
this.addWrapper(this.toHide).hide()
},
valid: function() {
return 0 === this.size()
},
size: function() {
return this.errorList.length
},
focusInvalid: function() {
if (this.settings.focusInvalid) try {
a(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus().trigger("focusin")
} catch (b) {}
},
findLastActive: function() {
var b = this.lastActive;
return b && 1 === a.grep(this.errorList, function(a) {
return a.element.name === b.name
}).length && b
},
elements: function() {
var b = this,
c = {};
return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function() {
return !this.name && b.settings.debug && window.console && console.error("%o has no name assigned", this), this.name in c || !b.objectLength(a(this).rules()) ? !1 : (c[this.name] = !0, !0)
})
},
clean: function(b) {
return a(b)[0]
},
errors: function() {
var b = this.settings.errorClass.split(" ").join(".");
return a(this.settings.errorElement + "." + b, this.errorContext)
},
reset: function() {
this.successList = [], this.errorList = [], this.errorMap = {}, this.toShow = a([]), this.toHide = a([]), this.currentElements = a([])
},
prepareForm: function() {
this.reset(), this.toHide = this.errors().add(this.containers)
},
prepareElement: function(a) {
this.reset(), this.toHide = this.errorsFor(a)
},
elementValue: function(b) {
var c, d = a(b),
e = d.attr("type");
return "radio" === e || "checkbox" === e ? a("input[name='" + d.attr("name") + "']:checked").val() : (c = d.val(), "string" == typeof c ? c.replace(/\r/g, "") : c)
},
check: function(b) {
b = this.validationTargetFor(this.clean(b));
var c, d, e, f = a(b).rules(),
g = a.map(f, function(a, b) {
return b
}).length,
h = !1,
i = this.elementValue(b);
for (d in f) {
e = {
method: d,
parameters: f[d]
};
try {
if (c = a.validator.methods[d].call(this, i, b, e.parameters), "dependency-mismatch" === c && 1 === g) {
h = !0;
continue
}
if (h = !1, "pending" === c) return void(this.toHide = this.toHide.not(this.errorsFor(b)));
if (!c) return this.formatAndAdd(b, e), !1
} catch (j) {
throw this.settings.debug && window.console && console.log("Exception occurred when checking element " + b.id + ", check the '" + e.method + "' method.", j), j
}
}
if (!h) return this.objectLength(f) && this.successList.push(b), !0
},
customDataMessage: function(b, c) {
return a(b).data("msg" + c[0].toUpperCase() + c.substring(1).toLowerCase()) || a(b).data("msg")
},
customMessage: function(a, b) {
var c = this.settings.messages[a];
return c && (c.constructor === String ? c : c[b])
},
findDefined: function() {
for (var a = 0; a Warning: No message defined for " + b.name + "")
},
formatAndAdd: function(b, c) {
var d = this.defaultMessage(b, c.method),
e = /\$?\{(\d+)\}/g;
"function" == typeof d ? d = d.call(this, c.parameters, b) : e.test(d) && (d = a.validator.format(d.replace(e, "{$1}"), c.parameters)), this.errorList.push({
message: d,
element: b,
method: c.method
}), this.errorMap[b.name] = d, this.submitted[b.name] = d
},
addWrapper: function(a) {
return this.settings.wrapper && (a = a.add(a.parent(this.settings.wrapper))), a
},
defaultShowErrors: function() {
var a, b, c;
for (a = 0; this.errorList[a]; a++) c = this.errorList[a], this.settings.highlight && this.settings.highlight.call(this, c.element, this.settings.errorClass, this.settings.validClass), this.showLabel(c.element, c.message);
if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success)
for (a = 0; this.successList[a]; a++) this.showLabel(this.successList[a]);
if (this.settings.unhighlight)
for (a = 0, b = this.validElements(); b[a]; a++) this.settings.unhighlight.call(this, b[a], this.settings.errorClass, this.settings.validClass);
this.toHide = this.toHide.not(this.toShow), this.hideErrors(), this.addWrapper(this.toShow).show()
},
validElements: function() {
return this.currentElements.not(this.invalidElements())
},
invalidElements: function() {
return a(this.errorList).map(function() {
return this.element
})
},
showLabel: function(b, c) {
var d = this.errorsFor(b);
d.length ? (d.removeClass(this.settings.validClass).addClass(this.settings.errorClass), d.html(c)) : (d = a("").attr("for", this.idOrName(b)).addClass(this.settings.errorClass).html(c || ""), this.settings.wrapper && (d = d.hide().show().wrap("").parent()), this.labelContainer.append(d).length || (this.settings.errorPlacement ? this.settings.errorPlacement(d, a(b)) : d.insertAfter(b))), !c && this.settings.success && (d.text(""), "string" == typeof this.settings.success ? d.addClass(this.settings.success) : this.settings.success(d, b)), this.toShow = this.toShow.add(d)
},
errorsFor: function(b) {
var c = this.idOrName(b);
return this.errors().filter(function() {
return a(this).attr("for") === c
})
},
idOrName: function(a) {
return this.groups[a.name] || (this.checkable(a) ? a.name : a.id || a.name)
},
validationTargetFor: function(a) {
return this.checkable(a) && (a = this.findByName(a.name).not(this.settings.ignore)[0]), a
},
checkable: function(a) {
return /radio|checkbox/i.test(a.type)
},
findByName: function(b) {
return a(this.currentForm).find("[name='" + b + "']")
},
getLength: function(b, c) {
switch (c.nodeName.toLowerCase()) {
case "select":
return a("option:selected", c).length;
case "input":
if (this.checkable(c)) return this.findByName(c.name).filter(":checked").length
}
return b.length
},
depend: function(a, b) {
return this.dependTypes[typeof a] ? this.dependTypes[typeof a](a, b) : !0
},
dependTypes: {
"boolean": function(a) {
return a
},
string: function(b, c) {
return !!a(b, c.form).length
},
"function": function(a, b) {
return a(b)
}
},
optional: function(b) {
var c = this.elementValue(b);
return !a.validator.methods.required.call(this, c, b) && "dependency-mismatch"
},
startRequest: function(a) {
this.pending[a.name] || (this.pendingRequest++, this.pending[a.name] = !0)
},
stopRequest: function(b, c) {
this.pendingRequest--, this.pendingRequest 0
}
return this.checkable(c) ? this.getLength(b, c) > 0 : a.trim(b).length > 0
},
email: function(a, b) {
return this.optional(b) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)
},
url: function(a, b) {
return this.optional(b) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?) ?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)
},
date: function(a, b) {
return this.optional(b) || !/Invalid|NaN/.test(new Date(a).toString())
},
dateISO: function(a, b) {
return this.optional(b) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(a)
},
number: function(a, b) {
return this.optional(b) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)
},
digits: function(a, b) {
return this.optional(b) || /^\d+$/.test(a)
},
creditcard: function(a, b) {
if (this.optional(b)) return "dependency-mismatch";
if (/[^0-9 \-]+/.test(a)) return !1;
var c, d, e = 0,
f = 0,
g = !1;
if (a = a.replace(/\D/g, ""), a.length 19) return !1;
for (c = a.length - 1; c >= 0; c--) d = a.charAt(c), f = parseInt(d, 10), g && (f *= 2) > 9 && (f -= 9), e += f, g = !g;
return e % 10 === 0
},
minlength: function(b, c, d) {
var e = a.isArray(b) ? b.length : this.getLength(a.trim(b), c);
return this.optional(c) || e >= d
},
maxlength: function(b, c, d) {
var e = a.isArray(b) ? b.length : this.getLength(a.trim(b), c);
return this.optional(c) || d >= e
},
rangelength: function(b, c, d) {
var e = a.isArray(b) ? b.length : this.getLength(a.trim(b), c);
return this.optional(c) || e >= d[0] && e = c
},
max: function(a, b, c) {
return this.optional(b) || c >= a
},
range: function(a, b, c) {
return this.optional(b) || a >= c[0] && a = options[0];
console.log($fields.eq(0));
// Store the cloned validator for future validation
$fieldsFirst.data("valid_skip", validator);
// If element isn't being validated, run each skip_or_fill_minimum field's validation rules
if (!$(element).data("being_validated")) {
$fields.data("being_validated", true);
$fields.each(function() {
validator.element(this);
});
$fields.data("being_validated", false);
}
return isValid;
}, $.validator.format("Please either skip these fields or fill at least {0} of them."));
$.validator.addMethod("zipcodeUS", function(value, element) {
return this.optional(element) || /^\d{5}-\d{4}$|^\d{5}$/.test(value);
}, "The specified US ZIP Code is invalid");
}(jQuery));
// MC
(function($) {
// TODO: Do we actually allow custom error styles or is this legacy code?
var err_style = '';
try {
err_style = mc_custom_error_style;
} catch (e) {
err_style = '#mc_embed_signup input.mce_inline_error { border-color:#6B0505; } #mc_embed_signup div.mce_inline_error { margin: 0 0 1em 0; padding: 5px 10px; background-color:#6B0505; font-weight: bold; z-index: 1; color:#fff; }';
}
var head = document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet) {
style.styleSheet.cssText = err_style;
} else {
style.appendChild(document.createTextNode(err_style));
}
head.appendChild(style);
// Expose extra mc form methods in global var
window.mc = {
/**
* Open the evil popup
*/
openPopup: function() {
$('#mc_embed_signup a.mc_embed_close').show();
setTimeout(function() {
$('#mc_embed_signup').fadeIn();
}, mc.delayPopup);
},
/**
* Close the evil popup
*/
closePopup: function() {
$('#mc_embed_signup').hide();
var now = new Date();
var expires_date = new Date(now.getTime() + 31536000000);
document.cookie = 'MCEvilPopupClosed=yes;expires=' + expires_date.toGMTString() + ';path=/';
},
/**
* Figure out if we should show the evil popup (if they've closed it before, don't show it.)
*/
evalPopup: function() {
$('#mc_embed_signup').hide();
cks = document.cookie.split(';');
for (i = 0; i 1) {
var mergeName = inputs.first().attr("name");
var fieldNames = $.map(inputs, function(f) {
return f.name;
});
groups[mergeName.substring(0, mergeName.indexOf("["))] = fieldNames.join(" ");
}
});
return groups;
},
/**
* Chick if a field is part of a multipart field
* (e.g., A date merge field is composed of individual inputs for month, day and year)
* Used in jQuery validation onkeyup method to ensure that we don't evaluate a field
* if a user hasn't reached the last input in a multipart field yet.
*/
isMultiPartField: function(element) {
return ($('input:not(:hidden)', $(element).closest(".mc-field-group")).length > 1);
},
/**
* Checks if the element is the last input in its fieldgroup.
* If the field is not the last in a set of inputs we don't want to validate it on certain events (onfocusout, onblur)
* because the user might not be finished yet.
*/
isTooEarly: function(element) {
var fields = $('input:not(:hidden)', $(element).closest(".mc-field-group"));
return ($(fields).eq(-1).attr('id') != $(element).attr('id'));
},
/**
* Handle the error/success message after successful form submission.
* Success messages are appended to #mce-success-response
* Error messages are displayed with the invalid input when possible, or appended to #mce-error-response
*/
mce_success_cb: function(resp) {
$('#mce-success-response').hide();
$('#mce-error-response').hide();
// On successful form submission, display a success message and reset the form
if (resp.result == "success") {
$('#title-newsletter').hide();
$('.mc-field-group').hide();
$('.indicates-required').hide();
$('#mc-embedded-subscribe').hide();
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(resp.msg);
$('#mc-embedded-subscribe-form').each(function() {
this.reset();
});
// If the form has errors, display them, inline if possible, or appended to #mce-error-response
} else {
// Example errors - Note: You only get one back at a time even if you submit several that are bad.
// Error structure - number indicates the index of the merge field that was invalid, then details
// Object {result: "error", msg: "6 - Please enter the date"}
// Object {result: "error", msg: "4 - Please enter a value"}
// Object {result: "error", msg: "9 - Please enter a complete address"}
// Try to parse the error into a field index and a message.
// On failure, just put the dump thing into in the msg variable.
var index = -1;
var msg;
try {
var parts = resp.msg.split(' - ', 2);
if (parts[1] == undefined) {
msg = resp.msg;
} else {
i = parseInt(parts[0]);
if (i.toString() == parts[0]) {
index = parts[0];
msg = parts[1];
} else {
index = -1;
msg = resp.msg;
}
}
} catch (e) {
index = -1;
msg = resp.msg;
}
try {
// If index is -1 if means we don't have data on specifically which field was invalid.
// Just lump the error message into the generic response div.
if (index == -1) {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
} else {
var fieldName = $("input[name*='" + fnames[index] + "']").attr('name'); // Make sure this exists (they haven't deleted the fnames array lookup)
var data = {};
data[fieldName] = msg;
mc.mce_validator.showErrors(data);
}
} catch (e) {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
}
}
}
}
window.mc.mce_validator = $("#mc-embedded-subscribe-form").validate({
// Set error HTML:
errorClass: "mce_inline_error",
errorElement: "div",
// Validate fields on keyup, focusout and blur.
onkeyup: false,
onfocusout: function(element) {
if (!mc.isTooEarly(element)) {
$(element).valid();
}
},
onblur: function(element) {
if (!mc.isTooEarly(element)) {
$(element).valid();
}
},
// Grouping fields makes jQuery Validation display one error for all the fields in the group
// It doesn't have anything to do with how the fields are validated (together or separately),
// it's strictly for visual display of errors
groups: mc.getGroups(),
// Place a field's inline error HTML just before the div.mc-field-group closing tag
errorPlacement: function(error, element) {
element.closest('.mc-field-group').append(error);
},
// Submit the form via ajax (see: jQuery Form plugin)
submitHandler: function(form) {
$(form).ajaxSubmit(mc.ajaxOptions);
}
});
window.mc.ajaxOptions = {
url: mc.getAjaxSubmitUrl(),
type: 'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: mc.mce_success_cb
};
// Custom validation methods for fields with certain css classes
$.validator.addClassRules("birthday", {
digits: true,
mc_birthday: ".datefield"
});
$.validator.addClassRules("datepart", {
digits: true,
mc_date: ".datefield"
});
$.validator.addClassRules("phonepart", {
digits: true,
mc_phone: ".phonefield"
});
// Evil Popup
$('#mc_embed_signup a.mc_embed_close').click(function() {
mc.closePopup();
});
$(document).keydown(function(e) {
keycode = (e == null) ? event.keyCode : e.which;
if (keycode == 27 && typeof mc.showPopup != 'undefined') mc.closePopup();
});
}(jQuery));
Source → AVOC 3D, the super cheap fast 3D printer on IndieGogo tomorrow