4 * version: 2.52 (07-DEC-2010)
5 * @requires jQuery v1.3.2 or later
7 * Examples and documentation at: http://malsup.com/jquery/form/
8 * Dual licensed under the MIT and GPL licenses:
9 * http://www.opensource.org/licenses/mit-license.php
10 * http://www.gnu.org/licenses/gpl.html
12 ;(function(b
){function q(){if(b
.fn
.ajaxSubmit
.debug
){var a
="[jquery.form] "+Array
.prototype.join
.call(arguments
,"");if(window
.console
&&window
.console
.log
)window
.console
.log(a
);else window
.opera
&&window
.opera
.postError
&&window
.opera
.postError(a
)}}b
.fn
.ajaxSubmit=function(a
){function f(){function t(){var o
=i
.attr("target"),m
=i
.attr("action");l
.setAttribute("target",u
);l
.getAttribute("method")!="POST"&&l
.setAttribute("method","POST");l
.getAttribute("action")!=e
.url
&&l
.setAttribute("action",e
.url
);e
.skipEncodingOverride
|| i
.attr({encoding
:"multipart/form-data",enctype
:"multipart/form-data"});e
.timeout
&&setTimeout(function(){F
=true;s()},e
.timeout
);var v
=[];try{if(e
.extraData
)for(var w
in e
.extraData
)v
.push(b('<input type="hidden" name="'+w
+'" value="'+e
.extraData
[w
]+'" />').appendTo(l
)[0]);r
.appendTo("body");r
.data("form-plugin-onload",s
);l
.submit()}finally{l
.setAttribute("action",m
);o
?l
.setAttribute("target",o
):i
.removeAttr("target");b(v
).remove()}}function s(){if(!G
){r
.removeData("form-plugin-onload");var o
=true; try{if(F
)throw"timeout";p
=x
.contentWindow
?x
.contentWindow
.document
:x
.contentDocument
?x
.contentDocument
:x
.document
;var m
=e
.dataType
=="xml"||p
.XMLDocument
||b
.isXMLDoc(p
);q("isXml="+m
);if(!m
&&window
.opera
&&(p
.body
==null||p
.body
.innerHTML
==""))if(--K
){q("requeing onLoad callback, DOM not available");setTimeout(s
,250);return}G
=true;j
.responseText
=p
.documentElement
?p
.documentElement
.innerHTML
:null;j
.responseXML
=p
.XMLDocument
?p
.XMLDocument
:p
;j
.getResponseHeader=function(L
){return{"content-type":e
.dataType
}[L
]}; var v
=/(json
|script
)/.test(e.dataType);if(v||e.textarea){var w=p.getElementsByTagName("textarea")[0];if(w)j.responseText=w.value;else if(v){var H=p.getElementsByTagName("pre")[0],I=p.getElementsByTagName("body")[0];if(H)j.responseText=H.textContent;else if(I)j.responseText=I.innerHTML}}else if(e.dataType=="xml"&&!j.responseXML&&j.responseText!=null)j.responseXML=C(j.responseText);J=b.httpData(j,e.dataType)}catch(D){q("error caught:",D);o=false;j.error=D;b.handleError(e,j,"error",D)}if(j.aborted){q("upload aborted"); o=false}if(o){e.success.call(e.context,J,"success",j);y&&b.event.trigger("ajaxSuccess",[j,e])}y&&b.event.trigger("ajaxComplete",[j,e]);y&&!--b.active&&b.event.trigger("ajaxStop");if(e.complete)e.complete.call(e.context,j,o?"success":"error");setTimeout(function(){r.removeData("form-plugin-onload");r.remove();j.responseXML=null},100)}}function C(o,m){if(window.ActiveXObject){m=new ActiveXObject("Microsoft.XMLDOM");m.async="false";m.loadXML(o)}else m=(new DOMParser).parseFromString(o,"text/xml");return m&& m.documentElement&&m.documentElement.tagName!="parsererror
"?m:null}var l=i[0];if(b(":input
[name
=submit
],:input
[id
=submit
]",l).length)alert('Error: Form elements must not have name or id of "submit
".');else{var e=b.extend(true,{},b.ajaxSettings,a);e.context=e.context||e;var u="jqFormIO
"+(new Date).getTime(),E="_
"+u;window[E]=function(){var o=r.data("form
-plugin
-onload
");if(o){o();window[E]=undefined;try{delete window[E]}catch(m){}}};var r=b('<iframe id="'+u+'" name="'+u+'" src="'+e.iframeSrc+'" onload="window
[\'_
\'+this.id
]()" />'), x=r[0];r.css({position:"absolute
",top:"-1000px
",left:"-1000px
"});var j={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n
/a
",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(){this.aborted=1;r.attr("src
",e.iframeSrc)}},y=e.global;y&&!b.active++&&b.event.trigger("ajaxStart
");y&&b.event.trigger("ajaxSend
",[j,e]);if(e.beforeSend&&e.beforeSend.call(e.context,j,e)===false)e.global&&b.active--;else if(!j.aborted){var G=false, F=0,z=l.clk;if(z){var A=z.name;if(A&&!z.disabled){e.extraData=e.extraData||{};e.extraData[A]=z.value;if(z.type=="image
"){e.extraData[A+".x
"]=l.clk_x;e.extraData[A+".y
"]=l.clk_y}}}e.forceSync?t():setTimeout(t,10);var J,p,K=50}}}if(!this.length){q("ajaxSubmit
: skipping submit process
- no element selected
");return this}if(typeof a=="function")a={success:a};var d=this.attr("action
");if(d=typeof d==="string
"?b.trim(d):"")d=(d.match(/^([^#]+)/)||[])[1];d=d||window.location.href||"";a=b.extend(true,{url:d, type:this.attr("method
")||"GET
",iframeSrc:/^https/i.test(window.location.href||"")?"javascript
:false":"about
:blank
"},a);d={};this.trigger("form
-pre
-serialize
",[this,a,d]);if(d.veto){q("ajaxSubmit
: submit vetoed via form
-pre
-serialize trigger
");return this}if(a.beforeSerialize&&a.beforeSerialize(this,a)===false){q("ajaxSubmit
: submit aborted via beforeSerialize callback
");return this}var c,h,g=this.formToArray(a.semantic);if(a.data){a.extraData=a.data;for(c in a.data)if(a.data[c]instanceof Array)for(var k in a.data[c])g.push({name:c, value:a.data[c][k]});else{h=a.data[c];h=b.isFunction(h)?h():h;g.push({name:c,value:h})}}if(a.beforeSubmit&&a.beforeSubmit(g,this,a)===false){q("ajaxSubmit
: submit aborted via beforeSubmit callback
");return this}this.trigger("form
-submit
-validate
",[g,this,a,d]);if(d.veto){q("ajaxSubmit
: submit vetoed via form
-submit
-validate trigger
");return this}c=b.param(g);if(a.type.toUpperCase()=="GET
"){a.url+=(a.url.indexOf("?")>=0?"&":"?")+c;a.data=null}else a.data=c;var i=this,n=[];a.resetForm&&n.push(function(){i.resetForm()}); a.clearForm&&n.push(function(){i.clearForm()});if(!a.dataType&&a.target){var B=a.success||function(){};n.push(function(t){var s=a.replaceTarget?"replaceWith
":"html
";b(a.target)[s](t).each(B,arguments)})}else a.success&&n.push(a.success);a.success=function(t,s,C){for(var l=a.context||a,e=0,u=n.length;e<u;e++)n[e].apply(l,[t,s,C||i,i])};c=b("input
:file
",this).length>0;k=i.attr("enctype
")=="multipart
/form-data"||i.attr("encoding")=="multipart/form
-data
";if(a.iframe!==false&&(c||a.iframe||k))a.closeKeepAlive? b.get(a.closeKeepAlive,f):f();else b.ajax(a);this.trigger("form
-submit
-notify
",[this,a]);return this};b.fn.ajaxForm=function(a){if(this.length===0){var f={s:this.selector,c:this.context};if(!b.isReady&&f.s){q("DOM not ready
, queuing ajaxForm
");b(function(){b(f.s,f.c).ajaxForm(a)});return this}q("terminating
; zero elements found by selector
"+(b.isReady?"":" (DOM not ready
)"));return this}return this.ajaxFormUnbind().bind("submit
.form
-plugin
",function(d){if(!d.isDefaultPrevented()){d.preventDefault(); b(this).ajaxSubmit(a)}}).bind("click
.form
-plugin
",function(d){var c=d.target,h=b(c);if(!h.is(":submit
,input
:image
")){c=h.closest(":submit
");if(c.length==0)return;c=c[0]}var g=this;g.clk=c;if(c.type=="image
")if(d.offsetX!=undefined){g.clk_x=d.offsetX;g.clk_y=d.offsetY}else if(typeof b.fn.offset=="function"){h=h.offset();g.clk_x=d.pageX-h.left;g.clk_y=d.pageY-h.top}else{g.clk_x=d.pageX-c.offsetLeft;g.clk_y=d.pageY-c.offsetTop}setTimeout(function(){g.clk=g.clk_x=g.clk_y=null},100)})};b.fn.ajaxFormUnbind= function(){return this.unbind("submit
.form
-plugin click
.form
-plugin
")};b.fn.formToArray=function(a){var f=[];if(this.length===0)return f;var d=this[0],c=a?d.getElementsByTagName("*"):d.elements;if(!c)return f;var h,g,k,i,n,B;h=0;for(n=c.length;h<n;h++){g=c[h];if(k=g.name)if(a&&d.clk&&g.type=="image
"){if(!g.disabled&&d.clk==g){f.push({name:k,value:b(g).val()});f.push({name:k+".x
",value:d.clk_x},{name:k+".y
",value:d.clk_y})}}else if((i=b.fieldValue(g,true))&&i.constructor==Array){g=0;for(B=i.length;g< B;g++)f.push({name:k,value:i[g]})}else i!==null&&typeof i!="undefined"&&f.push({name:k,value:i})}if(!a&&d.clk){a=b(d.clk);c=a[0];if((k=c.name)&&!c.disabled&&c.type=="image
"){f.push({name:k,value:a.val()});f.push({name:k+".x
",value:d.clk_x},{name:k+".y
",value:d.clk_y})}}return f};b.fn.formSerialize=function(a){return b.param(this.formToArray(a))};b.fn.fieldSerialize=function(a){var f=[];this.each(function(){var d=this.name;if(d){var c=b.fieldValue(this,a);if(c&&c.constructor==Array)for(var h=0,g=c.length;h< g;h++)f.push({name:d,value:c[h]});else c!==null&&typeof c!="undefined"&&f.push({name:this.name,value:c})}});return b.param(f)};b.fn.fieldValue=function(a){for(var f=[],d=0,c=this.length;d<c;d++){var h=b.fieldValue(this[d],a);h===null||typeof h=="undefined"||h.constructor==Array&&!h.length||(h.constructor==Array?b.merge(f,h):f.push(h))}return f};b.fieldValue=function(a,f){var d=a.name,c=a.type,h=a.tagName.toLowerCase();if(f===undefined)f=true;if(f&&(!d||a.disabled||c=="reset
"||c=="button
"||(c=="checkbox
"|| c=="radio
")&&!a.checked||(c=="submit
"||c=="image
")&&a.form&&a.form.clk!=a||h=="select
"&&a.selectedIndex==-1))return null;if(h=="select
"){var g=a.selectedIndex;if(g<0)return null;d=[];h=a.options;var k=(c=c=="select
-one
")?g+1:h.length;for(g=c?g:0;g<k;g++){var i=h[g];if(i.selected){var n=i.value;n||(n=i.attributes&&i.attributes.value&&!i.attributes.value.specified?i.text:i.value);if(c)return n;d.push(n)}}return d}return b(a).val()};b.fn.clearForm=function(){return this.each(function(){b("input
,select
,textarea
", this).clearFields()})};b.fn.clearFields=b.fn.clearInputs=function(){return this.each(function(){var a=this.type,f=this.tagName.toLowerCase();if(a=="text
"||a=="password
"||f=="textarea
")this.value="";else if(a=="checkbox
"||a=="radio
")this.checked=false;else if(f=="select
")this.selectedIndex=-1})};b.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||typeof this.reset=="object
"&&!this.reset.nodeType)this.reset()})};b.fn.enable=function(a){if(a===undefined)a=true;return this.each(function(){this.disabled= !a})};b.fn.selected=function(a){if(a===undefined)a=true;return this.each(function(){var f=this.type;if(f=="checkbox
"||f=="radio
")this.checked=a;else if(this.tagName.toLowerCase()=="option
"){f=b(this).parent("select
");a&&f[0]&&f[0].type=="select
-one
"&&f.find("option
").selected(false);this.selected=a}})}})(jQuery);