(function(b){function t(){b.fn.ajaxSubmit.debug&&window.console&&window.console.log&&window.console.log("[jquery.form] "+Array.prototype.join.call(arguments,""))}b.fn.ajaxSubmit=function(a){function d(){function n(){if(!z++){p.detachEvent?p.detachEvent("onload",n):p.removeEventListener("load",n,false);var r=true;try{if(A)throw"timeout";var m,o;o=p.contentWindow?p.contentWindow.document:p.contentDocument?p.contentDocument:p.document;if((o.body==null||o.body.innerHTML=="")&&!B){B=1;z--;setTimeout(n, 100);return}j.responseText=o.body?o.body.innerHTML:null;j.responseXML=o.XMLDocument?o.XMLDocument:o;j.getResponseHeader=function(D){return{"content-type":i.dataType}[D]};if(i.dataType=="json"||i.dataType=="script"){var u=o.getElementsByTagName("textarea")[0];j.responseText=u?u.value:j.responseText}else if(i.dataType=="xml"&&!j.responseXML&&j.responseText!=null)j.responseXML=x(j.responseText);m=b.httpData(j,i.dataType)}catch(E){r=false;b.handleError(i,j,"error",E)}if(r){i.success(m,"success");v&&b.event.trigger("ajaxSuccess", [j,i])}v&&b.event.trigger("ajaxComplete",[j,i]);v&&!--b.active&&b.event.trigger("ajaxStop");if(i.complete)i.complete(j,r?"success":"error");setTimeout(function(){w.remove();j.responseXML=null},100)}}function x(r,m){if(window.ActiveXObject){m=new ActiveXObject("Microsoft.XMLDOM");m.async="false";m.loadXML(r)}else m=(new DOMParser).parseFromString(r,"text/xml");return m&&m.documentElement&&m.documentElement.tagName!="parsererror"?m:null}var k=h[0];if(b(":input[name=submit]",k).length)alert('Error: Form elements must not be named "submit".'); else{var i=b.extend({},b.ajaxSettings,a),s=b.extend(true,{},b.extend(true,{},b.ajaxSettings),i),y="jqFormIO"+(new Date).getTime(),w=b('<iframe id="'+y+'" name="'+y+'" src="about:blank" />'),p=w[0];w.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;w.attr("src","about:blank")}},v=i.global; v&&!b.active++&&b.event.trigger("ajaxStart");v&&b.event.trigger("ajaxSend",[j,i]);if(s.beforeSend&&s.beforeSend(j,s)===false)s.global&&b.active--;else if(!j.aborted){var z=0,A=0;if(s=k.clk){var C=s.name;if(C&&!s.disabled){a.extraData=a.extraData||{};a.extraData[C]=s.value;if(s.type=="image"){a.extraData[name+".x"]=k.clk_x;a.extraData[name+".y"]=k.clk_y}}}setTimeout(function(){var r=h.attr("target"),m=h.attr("action");k.setAttribute("target",y);k.getAttribute("method")!="POST"&&k.setAttribute("method", "POST");k.getAttribute("action")!=i.url&&k.setAttribute("action",i.url);a.skipEncodingOverride||h.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"});i.timeout&&setTimeout(function(){A=true;n()},i.timeout);var o=[];try{if(a.extraData)for(var u in a.extraData)o.push(b('<input type="hidden" name="'+u+'" value="'+a.extraData[u]+'" />').appendTo(k)[0]);w.appendTo("body");p.attachEvent?p.attachEvent("onload",n):p.addEventListener("load",n,false);k.submit()}finally{k.setAttribute("action", m);r?k.setAttribute("target",r):h.removeAttr("target");b(o).remove()}},10);var B=0}}}if(!this.length){t("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof a=="function")a={success:a};var c=b.trim(this.attr("action"));if(c)c=(c.match(/^([^#]+)/)||[])[1];c=c||window.location.href||"";a=b.extend({url:c,type:this.attr("method")||"GET"},a||{});c={};this.trigger("form-pre-serialize",[this,a,c]);if(c.veto){t("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(a.beforeSerialize&& a.beforeSerialize(this,a)===false){t("ajaxSubmit: submit aborted via beforeSerialize callback");return this}var e=this.formToArray(a.semantic);if(a.data){a.extraData=a.data;for(var f in a.data)if(a.data[f]instanceof Array)for(var l in a.data[f])e.push({name:f,value:a.data[f][l]});else e.push({name:f,value:a.data[f]})}if(a.beforeSubmit&&a.beforeSubmit(e,this,a)===false){t("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[e,this,a,c]);if(c.veto){t("ajaxSubmit: submit vetoed via form-submit-validate trigger"); return this}f=b.param(e);if(a.type.toUpperCase()=="GET"){a.url+=(a.url.indexOf("?")>=0?"&":"?")+f;a.data=null}else a.data=f;var h=this,g=[];a.resetForm&&g.push(function(){h.resetForm()});a.clearForm&&g.push(function(){h.clearForm()});if(!a.dataType&&a.target){var q=a.success||function(){};g.push(function(n){b(a.target).html(n).each(q,arguments)})}else a.success&&g.push(a.success);a.success=function(n,x){for(var k=0,i=g.length;k<i;k++)g[k].apply(a,[n,x,h])};f=b("input:file",this).fieldValue();l=false; for(c=0;c<f.length;c++)if(f[c])l=true;if(a.iframe||l||0)a.closeKeepAlive?b.get(a.closeKeepAlive,d):d();else b.ajax(a);this.trigger("form-submit-notify",[this,a]);return this};b.fn.ajaxForm=function(a){return this.ajaxFormUnbind().bind("submit.form-plugin",function(){b(this).ajaxSubmit(a);return false}).each(function(){b(":submit,input:image",this).bind("click.form-plugin",function(d){var c=this.form;c.clk=this;if(this.type=="image")if(d.offsetX!=undefined){c.clk_x=d.offsetX;c.clk_y=d.offsetY}else if(typeof b.fn.offset== "function"){var e=b(this).offset();c.clk_x=d.pageX-e.left;c.clk_y=d.pageY-e.top}else{c.clk_x=d.pageX-this.offsetLeft;c.clk_y=d.pageY-this.offsetTop}setTimeout(function(){c.clk=c.clk_x=c.clk_y=null},10)})})};b.fn.ajaxFormUnbind=function(){this.unbind("submit.form-plugin");return this.each(function(){b(":submit,input:image",this).unbind("click.form-plugin")})};b.fn.formToArray=function(a){var d=[];if(this.length==0)return d;var c=this[0],e=a?c.getElementsByTagName("*"):c.elements;if(!e)return d;for(var f= 0,l=e.length;f<l;f++){var h=e[f],g=h.name;if(g)if(a&&c.clk&&h.type=="image"){if(!h.disabled&&c.clk==h){d.push({name:g,value:b(h).val()});d.push({name:g+".x",value:c.clk_x},{name:g+".y",value:c.clk_y})}}else if((h=b.fieldValue(h,true))&&h.constructor==Array)for(var q=0,n=h.length;q<n;q++)d.push({name:g,value:h[q]});else h!==null&&typeof h!="undefined"&&d.push({name:g,value:h})}if(!a&&c.clk){a=b(c.clk);e=a[0];if((g=e.name)&&!e.disabled&&e.type=="image"){d.push({name:g,value:a.val()});d.push({name:g+ ".x",value:c.clk_x},{name:g+".y",value:c.clk_y})}}return d};b.fn.formSerialize=function(a){return b.param(this.formToArray(a))};b.fn.fieldSerialize=function(a){var d=[];this.each(function(){var c=this.name;if(c){var e=b.fieldValue(this,a);if(e&&e.constructor==Array)for(var f=0,l=e.length;f<l;f++)d.push({name:c,value:e[f]});else e!==null&&typeof e!="undefined"&&d.push({name:this.name,value:e})}});return b.param(d)};b.fn.fieldValue=function(a){for(var d=[],c=0,e=this.length;c<e;c++){var f=b.fieldValue(this[c], a);f===null||typeof f=="undefined"||f.constructor==Array&&!f.length||(f.constructor==Array?b.merge(d,f):d.push(f))}return d};b.fieldValue=function(a,d){var c=a.name,e=a.type,f=a.tagName.toLowerCase();if(typeof d=="undefined")d=true;if(d&&(!c||a.disabled||e=="reset"||e=="button"||(e=="checkbox"||e=="radio")&&!a.checked||(e=="submit"||e=="image")&&a.form&&a.form.clk!=a||f=="select"&&a.selectedIndex==-1))return null;if(f=="select"){var l=a.selectedIndex;if(l<0)return null;c=[];f=a.options;var h=(e=e== "select-one")?l+1:f.length;for(l=e?l:0;l<h;l++){var g=f[l];if(g.selected){var q=g.value;q||(q=g.attributes&&g.attributes.value&&!g.attributes.value.specified?g.text:g.value);if(e)return q;c.push(q)}}return c}return a.value};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,d=this.tagName.toLowerCase();if(a=="text"||a=="password"||d=="textarea")this.value=""; else if(a=="checkbox"||a=="radio")this.checked=false;else if(d=="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 d=this.type;if(d=="checkbox"||d=="radio")this.checked=a;else if(this.tagName.toLowerCase()== "option"){d=b(this).parent("select");a&&d[0]&&d[0].type=="select-one"&&d.find("option").selected(false);this.selected=a}})}})(jQuery);
