/*Ajax Form*/ (function(c) { if (typeof define === 'function' && define.amd) { define(['jquery'], c) } else if (typeof module === 'object' && module.exports) { module.exports = function(a, b) { if (typeof b === 'undefined') { if (typeof window !== 'undefined') { b = require('jquery') } else { b = require('jquery')(a) } } c(b); return b } } else { c(jQuery) } }(function($) { 'use strict'; var V = /\r?\n/g; var W = {}; W.fileapi = $('').get(0).files !== undefined; W.formdata = (typeof window.FormData !== 'undefined'); var X = !!$.fn.prop; $.fn.attr2 = function() { if (!X) { return this.attr.apply(this, arguments) } var a = this.prop.apply(this, arguments); if ((a && a.jquery) || typeof a === 'string') { return a } return this.attr.apply(this, arguments) }; $.fn.ajaxSubmit = function(A, B, C, D) { if (!this.length) { log('ajaxSubmit: skipping submit process - no element selected'); return this } var E, action, url, $form = this; if (typeof A === 'function') { A = { success: A } } else if (typeof A === 'string' || (A === false && arguments.length > 0)) { A = { 'url': A, 'data': B, 'dataType': C }; if (typeof D === 'function') { A.success = D } } else if (typeof A === 'undefined') { A = {} } E = A.method || A.type || this.attr2('method'); action = A.url || this.attr2('action'); url = (typeof action === 'string') ? $.trim(action) : ''; url = url || window.location.href || ''; if (url) { url = (url.match(/^([^#]+)/) || [])[1] } A = $.extend(true, { url: url, success: $.ajaxSettings.success, type: E || $.ajaxSettings.type, iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' }, A); var F = {}; this.trigger('form-pre-serialize', [this, A, F]); if (F.veto) { log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); return this } if (A.beforeSerialize && A.beforeSerialize(this, A) === false) { log('ajaxSubmit: submit aborted via beforeSerialize callback'); return this } var G = A.traditional; if (typeof G === 'undefined') { G = $.ajaxSettings.traditional } var H = []; var I, a = this.formToArray(A.semantic, H, A.filtering); if (A.data) { var J = $.isFunction(A.data) ? A.data(a) : A.data; A.extraData = J; I = $.param(J, G) } if (A.beforeSubmit && A.beforeSubmit(a, this, A) === false) { log('ajaxSubmit: submit aborted via beforeSubmit callback'); return this } this.trigger('form-submit-validate', [a, this, A, F]); if (F.veto) { log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); return this } var q = $.param(a, G); if (I) { q = (q ? (q + '&' + I) : I) } if (A.type.toUpperCase() === 'GET') { A.url += (A.url.indexOf('?') >= 0 ? '&' : '?') + q; A.data = null } else { A.data = q } var K = []; if (A.resetForm) { K.push(function() { $form.resetForm() }) } if (A.clearForm) { K.push(function() { $form.clearForm(A.includeHidden) }) } if (!A.dataType && A.target) { var L = A.success || function() {}; K.push(function(a, b, c) { var d = arguments, fn = A.replaceTarget ? 'replaceWith' : 'html'; $(A.target)[fn](a).each(function() { L.apply(this, d) }) }) } else if (A.success) { if ($.isArray(A.success)) { $.merge(K, A.success) } else { K.push(A.success) } } A.success = function(a, b, c) { var d = A.context || this; for (var i = 0, max = K.length; i < max; i++) { K[i].apply(d, [a, b, c || $form, $form]) } }; if (A.error) { var M = A.error; A.error = function(a, b, c) { var d = A.context || this; M.apply(d, [a, b, c, $form]) } } if (A.complete) { var N = A.complete; A.complete = function(a, b) { var c = A.context || this; N.apply(c, [a, b, $form]) } } var O = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== '' }); var P = O.length > 0; var Q = 'multipart/form-data'; var R = ($form.attr('enctype') === Q || $form.attr('encoding') === Q); var S = W.fileapi && W.formdata; log('fileAPI :' + S); var T = (P || R) && !S; var U; if (A.iframe !== false && (A.iframe || T)) { if (A.closeKeepAlive) { $.get(A.closeKeepAlive, function() { U = fileUploadIframe(a) }) } else { U = fileUploadIframe(a) } } else if ((P || R) && S) { U = fileUploadXhr(a) } else { U = $.ajax(A) } $form.removeData('jqxhr').data('jqxhr', U); for (var k = 0; k < H.length; k++) { H[k] = null } this.trigger('form-submit-notify', [this, A]); return this; function deepSerialize(a) { var b = $.param(a, A.traditional).split('&'); var c = b.length; var d = []; var i, part; for (i = 0; i < c; i++) { b[i] = b[i].replace(/\+/g, ' '); part = b[i].split('='); d.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]) } return d } function fileUploadXhr(a) { var f = new FormData(); for (var i = 0; i < a.length; i++) { f.append(a[i].name, a[i].value) } if (A.extraData) { var g = deepSerialize(A.extraData); for (i = 0; i < g.length; i++) { if (g[i]) { f.append(g[i][0], g[i][1]) } } } A.data = null; var s = $.extend(true, {}, $.ajaxSettings, A, { contentType: false, processData: false, cache: false, type: E || 'POST' }); if (A.uploadProgress) { s.xhr = function() { var e = $.ajaxSettings.xhr(); if (e.upload) { e.upload.addEventListener('progress', function(a) { var b = 0; var c = a.loaded || a.position; var d = a.total; if (a.lengthComputable) { b = Math.ceil(c / d * 100) } A.uploadProgress(a, c, d, b) }, false) } return e } } s.data = null; var h = s.beforeSend; s.beforeSend = function(a, o) { if (A.formData) { o.data = A.formData } else { o.data = f } if (h) { h.call(this, a, o) } }; return $.ajax(s) } function fileUploadIframe(a) { var l = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; var m = $.Deferred(); m.abort = function(a) { xhr.abort(a) }; if (a) { for (i = 0; i < H.length; i++) { el = $(H[i]); if (X) { el.prop('disabled', false) } else { el.removeAttr('disabled') } } } s = $.extend(true, {}, $.ajaxSettings, A); s.context = s.context || s; id = 'jqFormIO' + new Date().getTime(); var o = l.ownerDocument; var p = $form.closest('body'); if (s.iframeTarget) { $io = $(s.iframeTarget, o); n = $io.attr2('name'); if (!n) { $io.attr2('name', id) } else { id = n } } else { $io = $('