/* * jQuery Form Plugin; v20140218 * http://jquery.malsup.com/form/ * Copyright (c) 2014 M. Alsup; Dual licensed: MIT/GPL * https://github.com/malsup/form#copyright-and-license */ ; ! function(a) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], a) : a("undefined" != typeof jQuery ? jQuery : window.Zepto) }(function(a) { "use strict"; function b(b) { var c = b.data; b.isDefaultPrevented() || (b.preventDefault(), a(b.target).ajaxSubmit(c)) } function c(b) { var c = b.target, d = a(c); if (!d.is("[type=submit],[type=image]")) { var e = d.closest("[type=submit]"); if (0 === e.length) return; c = e[0] } var f = this; if (f.clk = c, "image" == c.type) if (void 0 !== b.offsetX) f.clk_x = b.offsetX, f.clk_y = b.offsetY; else if ("function" == typeof a.fn.offset) { var g = d.offset(); f.clk_x = b.pageX - g.left, f.clk_y = b.pageY - g.top } else f.clk_x = b.pageX - c.offsetLeft, f.clk_y = b.pageY - c.offsetTop; setTimeout(function() { f.clk = f.clk_x = f.clk_y = null }, 100) } function d() { if (a.fn.ajaxSubmit.debug) { var b = "[jquery.form] " + Array.prototype.join.call(arguments, ""); window.console && window.console.log ? window.console.log(b) : window.opera && window.opera.postError && window.opera.postError(b) } } var e = {}; e.fileapi = void 0 !== a("").get(0).files, e.formdata = void 0 !== window.FormData; var f = !! a.fn.prop; a.fn.attr2 = function() { if (!f) return this.attr.apply(this, arguments); var a = this.prop.apply(this, arguments); return a && a.jquery || "string" == typeof a ? a : this.attr.apply(this, arguments) }, a.fn.ajaxSubmit = function(b) { function c(c) { var d, e, f = a.param(c, b.traditional).split("&"), g = f.length, h = []; for (d = 0; g > d; d++) f[d] = f[d].replace(/\+/g, " "), e = f[d].split("="), h.push([decodeURIComponent(e[0]), decodeURIComponent(e[1])]); return h } function g(d) { for (var e = new FormData, f = 0; f < d.length; f++) e.append(d[f].name, d[f].value); if (b.extraData) { var g = c(b.extraData); for (f = 0; f < g.length; f++) g[f] && e.append(g[f][0], g[f][1]) } b.data = null; var h = a.extend(!0, {}, a.ajaxSettings, b, { contentType: !1, processData: !1, cache: !1, type: i || "POST" }); b.uploadProgress && (h.xhr = function() { var c = a.ajaxSettings.xhr(); return c.upload && c.upload.addEventListener("progress", function(a) { var c = 0, d = a.loaded || a.position, e = a.total; a.lengthComputable && (c = Math.ceil(d / e * 100)), b.uploadProgress(a, d, e, c) }, !1), c }), h.data = null; var j = h.beforeSend; return h.beforeSend = function(a, c) { c.data = b.formData ? b.formData : e, j && j.call(this, a, c) }, a.ajax(h) } function h(c) { function e(a) { var b = null; try { a.contentWindow && (b = a.contentWindow.document) } catch (c) { d("cannot get iframe.contentWindow document: " + c) } if (b) return b; try { b = a.contentDocument ? a.contentDocument : a.document } catch (c) { d("cannot get iframe.contentDocument: " + c), b = a.document } return b } function g() { function b() { try { var a = e(r).readyState; d("state = " + a), a && "uninitialized" == a.toLowerCase() && setTimeout(b, 50) } catch (c) { d("Server abort: ", c, " (", c.name, ")"), h(A), w && clearTimeout(w), w = void 0 } } var c = l.attr2("target"), f = l.attr2("action"), g = "multipart/form-data", j = l.attr("enctype") || l.attr("encoding") || g; x.setAttribute("target", o), (!i || /post/i.test(i)) && x.setAttribute("method", "POST"), f != m.url && x.setAttribute("action", m.url), m.skipEncodingOverride || i && !/post/i.test(i) || l.attr({ encoding: "multipart/form-data", enctype: "multipart/form-data" }), m.timeout && (w = setTimeout(function() { v = !0, h(z) }, m.timeout)); var k = []; try { if (m.extraData) for (var n in m.extraData) m.extraData.hasOwnProperty(n) && (a.isPlainObject(m.extraData[n]) && m.extraData[n].hasOwnProperty("name") && m.extraData[n].hasOwnProperty("value") ? k.push(a('').val(m.extraData[n].value).appendTo(x)[0]) : k.push(a('').val(m.extraData[n]).appendTo(x)[0])); m.iframeTarget || q.appendTo("body"), r.attachEvent ? r.attachEvent("onload", h) : r.addEventListener("load", h, !1), setTimeout(b, 15); try { x.submit() } catch (p) { var s = document.createElement("form").submit; s.apply(x) } } finally { x.setAttribute("action", f), x.setAttribute("enctype", j), c ? x.setAttribute("target", c) : l.removeAttr("target"), a(k).remove() } } function h(b) { if (!s.aborted && !F) { if (E = e(r), E || (d("cannot access response document"), b = A), b === z && s) return s.abort("timeout"), y.reject(s, "timeout"), void 0; if (b == A && s) return s.abort("server abort"), y.reject(s, "error", "server abort"), void 0; if (E && E.location.href != m.iframeSrc || v) { r.detachEvent ? r.detachEvent("onload", h) : r.removeEventListener("load", h, !1); var c, f = "success"; try { if (v) throw "timeout"; var g = "xml" == m.dataType || E.XMLDocument || a.isXMLDoc(E); if (d("isXml=" + g), !g && window.opera && (null === E.body || !E.body.innerHTML) && --G) return d("requeing onLoad callback, DOM not available"), setTimeout(h, 250), void 0; var i = E.body ? E.body : E.documentElement; s.responseText = i ? i.innerHTML : null, s.responseXML = E.XMLDocument ? E.XMLDocument : E, g && (m.dataType = "xml"), s.getResponseHeader = function(a) { var b = { "content-type": m.dataType }; return b[a.toLowerCase()] }, i && (s.status = Number(i.getAttribute("status")) || s.status, s.statusText = i.getAttribute("statusText") || s.statusText); var j = (m.dataType || "").toLowerCase(), k = /(json|script|text)/.test(j); if (k || m.textarea) { var l = E.getElementsByTagName("textarea")[0]; if (l) s.responseText = l.value, s.status = Number(l.getAttribute("status")) || s.status, s.statusText = l.getAttribute("statusText") || s.statusText; else if (k) { var o = E.getElementsByTagName("pre")[0], p = E.getElementsByTagName("body")[0]; o ? s.responseText = o.textContent ? o.textContent : o.innerText : p && (s.responseText = p.textContent ? p.textContent : p.innerText) } } else "xml" == j && !s.responseXML && s.responseText && (s.responseXML = H(s.responseText)); try { D = J(s, j, m) } catch (t) { f = "parsererror", s.error = c = t || f } } catch (t) { d("error caught: ", t), f = "error", s.error = c = t || f } s.aborted && (d("upload aborted"), f = null), s.status && (f = s.status >= 200 && s.status < 300 || 304 === s.status ? "success" : "error"), "success" === f ? (m.success && m.success.call(m.context, D, "success", s), y.resolve(s.responseText, "success", s), n && a.event.trigger("ajaxSuccess", [s, m])) : f && (void 0 === c && (c = s.statusText), m.error && m.error.call(m.context, s, f, c), y.reject(s, "error", c), n && a.event.trigger("ajaxError", [s, m, c])), n && a.event.trigger("ajaxComplete", [s, m]), n && !--a.active && a.event.trigger("ajaxStop"), m.complete && m.complete.call(m.context, s, f), F = !0, m.timeout && clearTimeout(w), setTimeout(function() { m.iframeTarget ? q.attr("src", m.iframeSrc) : q.remove(), s.responseXML = null }, 100) } } } var j, k, m, n, o, q, r, s, t, u, v, w, x = l[0], y = a.Deferred(); if (y.abort = function(a) { s.abort(a) }, c) for (k = 0; k < p.length; k++) j = a(p[k]), f ? j.prop("disabled", !1) : j.removeAttr("disabled"); if (m = a.extend(!0, {}, a.ajaxSettings, b), m.context = m.context || m, o = "jqFormIO" + (new Date).getTime(), m.iframeTarget ? (q = a(m.iframeTarget), u = q.attr2("name"), u ? o = u : q.attr2("name", o)) : (q = a('