jQuery.fn.ajaxSubmit=function(o){if(typeof o=='function')o={success:o};o=o||{};o.url=o.url||this.attr('action')||window.location;o.type=o.type||this.attr('method')||'GET';var a=this.formToArray(o.semantic);if(o.beforeSubmit&&o.beforeSubmit(a,this,o)===false)return this;var p={};jQuery.event.trigger('form.submit.validate',[a,this,o,p]);if(p.veto)return this;var q=jQuery.param(a);if(o.type.toUpperCase()=='GET'){o.url+=(o.url.indexOf('?')>=0?'&':'?')+q;o.data=null}else o.data=q;var r=this,callbacks=[];if(o.resetForm)callbacks.push(function(){r.resetForm()});if(o.clearForm)callbacks.push(function(){r.clearForm()});if(!o.dataType&&o.target){var s=o.success||function(){};callbacks.push(function(a,b){jQuery(o.target).attr("innerHTML",a).evalScripts().each(s,[a,b])})}else if(o.success)callbacks.push(o.success);o.success=function(a,b){for(var i=0,max=callbacks.length;i<max;i++)callbacks[i](a,b)};var u=jQuery('input:file',this).fieldValue();var v=false;for(var j=0;j<u.length;j++)if(u[j])v=true;if(o.iframe||v)fileUpload();else jQuery.ajax(o);jQuery.event.trigger('form.submit.notify',[this,o]);return this;function fileUpload(){var d=r[0];var f=jQuery.extend({},jQuery.ajaxSettings,o);var h='jqFormIO'+jQuery.fn.ajaxSubmit.counter++;var i=jQuery('<iframe id="'+h+'" name="'+h+'" />');var j=i[0];var k=jQuery.browser.opera&&window.opera.version()<9;if(jQuery.browser.msie||k)j.src='javascript:false;document.write("");';i.css({position:'absolute',top:'-1000px',left:'-1000px'});d.method='POST';d.encoding?d.encoding='multipart/form-data':d.enctype='multipart/form-data';var l={responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=f.global;if(g&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if(g)jQuery.event.trigger("ajaxSend",[l,f]);var m=0;var n=0;setTimeout(function(){i.appendTo('body');j.attachEvent?j.attachEvent('onload',cb):j.addEventListener('load',cb,false);d.action=f.url;var t=d.target;d.target=h;if(f.timeout)setTimeout(function(){n=true;cb()},f.timeout);d.submit();d.target=t},10);function cb(){if(m++)return;j.detachEvent?j.detachEvent('onload',cb):j.removeEventListener('load',cb,false);var a=true;try{if(n)throw'timeout';var b,doc;doc=j.contentWindow?j.contentWindow.document:j.contentDocument?j.contentDocument:j.document;l.responseText=doc.body?doc.body.innerHTML:null;l.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(f.dataType=='json'||f.dataType=='script'){var c=doc.getElementsByTagName('textarea')[0];b=c?c.value:l.responseText;if(f.dataType=='json')eval("data = "+b);else jQuery.globalEval(b)}else if(f.dataType=='xml'){b=l.responseXML;if(!b&&l.responseText!=null)b=toXml(l.responseText)}else{b=l.responseText}}catch(e){a=false;jQuery.handleError(f,l,'error',e)}if(a){f.success(b,'success');if(g)jQuery.event.trigger("ajaxSuccess",[l,f])}if(g)jQuery.event.trigger("ajaxComplete",[l,f]);if(g&&!--jQuery.active)jQuery.event.trigger("ajaxStop");if(f.complete)f.complete(l,a?'success':'error');setTimeout(function(){i.remove();l.responseXML=null},100)};function toXml(a,b){if(window.ActiveXObject){b=new ActiveXObject('Microsoft.XMLDOM');b.async='false';b.loadXML(a)}else b=(new DOMParser()).parseFromString(a,'text/xml');return(b&&b.documentElement&&b.documentElement.tagName!='parsererror')?b:null}}};jQuery.fn.ajaxSubmit.counter=0;jQuery.fn.ajaxForm=function(d){return this.each(function(){jQuery("input:submit,input:image,button:submit",this).click(function(a){var b=this.form;b.clk=this;if(this.type=='image'){if(a.offsetX!=undefined){b.clk_x=a.offsetX;b.clk_y=a.offsetY}else if(typeof jQuery.fn.offset=='function'){var c=jQuery(this).offset();b.clk_x=a.pageX-c.left;b.clk_y=a.pageY-c.top}else{b.clk_x=a.pageX-this.offsetLeft;b.clk_y=a.pageY-this.offsetTop}}setTimeout(function(){b.clk=b.clk_x=b.clk_y=null},10)})}).submit(function(a){jQuery(this).ajaxSubmit(d);return false})};jQuery.fn.formToArray=function(b){var a=[];if(this.length==0)return a;var c=this[0];var d=b?c.getElementsByTagName('*'):c.elements;if(!d)return a;for(var i=0,max=d.length;i<max;i++){var e=d[i];var n=e.name;if(!n)continue;if(b&&c.clk&&e.type=="image"){if(!e.disabled&&c.clk==e)a.push({name:n+'.x',value:c.clk_x},{name:n+'.y',value:c.clk_y});continue}var v=jQuery.fieldValue(e,true);if(v===null)continue;if(v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++)a.push({name:n,value:v[j]})}else a.push({name:n,value:v})}if(!b&&c.clk){var f=c.getElementsByTagName("input");for(var i=0,max=f.length;i<max;i++){var g=f[i];var n=g.name;if(n&&!g.disabled&&g.type=="image"&&c.clk==g)a.push({name:n+'.x',value:c.clk_x},{name:n+'.y',value:c.clk_y})}}return a};jQuery.fn.formSerialize=function(a){return jQuery.param(this.formToArray(a))};jQuery.fn.fieldSerialize=function(b){var a=[];this.each(function(){var n=this.name;if(!n)return;var v=jQuery.fieldValue(this,b);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++)a.push({name:n,value:v[i]})}else if(v!==null&&typeof v!='undefined')a.push({name:this.name,value:v})});return jQuery.param(a)};jQuery.fn.fieldValue=function(a){var b=[],name;for(var i=0,max=this.length;i<max;i++){var c=this[i];var v=jQuery.fieldValue(c,a);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))continue;name=name||c.name;if(name!=c.name)continue;v.constructor==Array?jQuery.merge(b,v):b.push(v)}return b};jQuery.fieldValue=function(b,c){var n=b.name,t=b.type,tag=b.tagName.toLowerCase();if(typeof c=='undefined')c=true;if(c&&(!n||b.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!b.checked||(t=='submit'||t=='image')&&b.form&&b.form.clk!=b||tag=='select'&&b.selectedIndex==-1))return null;if(tag=='select'){var d=b.selectedIndex;if(d<0)return null;var a=[],ops=b.options;var e=(t=='select-one');var f=(e?d+1:ops.length);for(var i=(e?d:0);i<f;i++){var g=ops[i];if(g.selected){var v=jQuery.browser.msie&&!(g.attributes['value'].specified)?g.text:g.value;if(e)return v;a.push(v)}}return a}return b.value};jQuery.fn.clearForm=function(){return this.each(function(){jQuery('input,select,textarea',this).clearFields()})};jQuery.fn.clearFields=jQuery.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea')this.value='';else if(t=='checkbox'||t=='radio')this.checked=false;else if(tag=='select')this.selectedIndex=-1})};jQuery.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))this.reset()})};