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