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