(function(jQuery){jQuery.fn.ajaxSubmit=function(options){if(typeof options=="function"){options={success:options}}options=jQuery.extend({url:this.attr("action")||window.location.toString(),type:this.attr("method")||"GET"},options||{});var veto={};jQuery.event.trigger("form.pre.serialize",[this,options,veto]);if(veto.veto){return this}var a=this.formToArray(options.semantic);if(options.data){for(var n in options.data){a.push({name:n,value:options.data[n]})}}if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){return this}jQuery.event.trigger("form.submit.validate",[a,this,options,veto]);if(veto.veto){return this}var q=jQuery.param(a);if(options.type.toUpperCase()=="GET"){options.url+=(options.url.indexOf("?")>=0?"&":"?")+q;options.data=null}else{options.data=q}var jQueryform=this,callbacks=[];if(options.resetForm){callbacks.push(function(){jQueryform.resetForm()})}if(options.clearForm){callbacks.push(function(){jQueryform.clearForm()})}if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){if(this.evalScripts){jQuery(options.target).attr("innerHTML",data).evalScripts().each(oldSuccess,arguments)}else{jQuery(options.target).html(data).each(oldSuccess,arguments)}})}else{if(options.success){callbacks.push(options.success)}}options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++){callbacks[i](data,status,jQueryform)}};var files=jQuery("input:file",this).fieldValue();var found=false;for(var j=0;j<files.length;j++){if(files[j]){found=true}}if(options.iframe||found){if(jQuery.browser.safari&&options.closeKeepAlive){jQuery.get(options.closeKeepAlive,fileUpload)}else{fileUpload()}}else{jQuery.ajax(options)}jQuery.event.trigger("form.submit.notify",[this,options]);return this;function fileUpload(){var form=jQueryform[0];var opts=jQuery.extend({},jQuery.ajaxSettings,options);var id="jqFormIO"+jQuery.fn.ajaxSubmit.counter++;var jQueryio=jQuery('<iframe id="'+id+'" name="'+id+'" />');var io=jQueryio[0];var op8=jQuery.browser.opera&&window.opera.version()<9;if(jQuery.browser.msie||op8){io.src='javascript:false;document.write("");'}jQueryio.css({position:"absolute",top:"-1000px",left:"-1000px"});var xhr={responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=opts.global;if(g&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}if(g){jQuery.event.trigger("ajaxSend",[xhr,opts])}var cbInvoked=0;var timedOut=0;setTimeout(function(){var encAttr=form.encoding?"encoding":"enctype";var t=jQueryform.attr("target");jQueryform.attr({target:id,method:"POST",action:opts.url});form[encAttr]="multipart/form-data";if(opts.timeout){setTimeout(function(){timedOut=true;cb()},opts.timeout)}jQueryio.appendTo("body");io.attachEvent?io.attachEvent("onload",cb):io.addEventListener("load",cb,false);form.submit();jQueryform.attr("target",t)},10);function cb(){if(cbInvoked++){return}io.detachEvent?io.detachEvent("onload",cb):io.removeEventListener("load",cb,false);var ok=true;try{if(timedOut){throw"timeout"}var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(opts.dataType=="json"||opts.dataType=="script"){var ta=doc.getElementsByTagName("textarea")[0];data=ta?ta.value:xhr.responseText;if(opts.dataType=="json"){eval("data = "+data)}else{jQuery.globalEval(data)}}else{if(opts.dataType=="xml"){data=xhr.responseXML;if(!data&&xhr.responseText!=null){data=toXml(xhr.responseText)}}else{data=xhr.responseText}}}catch(e){ok=false;jQuery.handleError(opts,xhr,"error",e)}if(ok){opts.success(data,"success");if(g){jQuery.event.trigger("ajaxSuccess",[xhr,opts])}}if(g){jQuery.event.trigger("ajaxComplete",[xhr,opts])}if(g&&!--jQuery.active){jQuery.event.trigger("ajaxStop")}if(opts.complete){opts.complete(xhr,ok?"success":"error")}setTimeout(function(){jQueryio.remove();xhr.responseXML=null},100)}function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(s)}else{doc=(new DOMParser()).parseFromString(s,"text/xml")}return(doc&&doc.documentElement&&doc.documentElement.tagName!="parsererror")?doc:null}}};jQuery.fn.ajaxSubmit.counter=0;jQuery.fn.ajaxForm=function(options){return this.ajaxFormUnbind().submit(submitHandler).each(function(){this.formPluginId=jQuery.fn.ajaxForm.counter++;jQuery.fn.ajaxForm.optionHash[this.formPluginId]=options;jQuery(":submit,input:image",this).click(clickHandler)})};jQuery.fn.ajaxForm.counter=1;jQuery.fn.ajaxForm.optionHash={};function clickHandler(e){var jQueryform=this.form;jQueryform.clk=this;if(this.type=="image"){if(e.offsetX!=undefined){jQueryform.clk_x=e.offsetX;jQueryform.clk_y=e.offsetY}else{if(typeof jQuery.fn.offset=="function"){var offset=jQuery(this).offset();jQueryform.clk_x=e.pageX-offset.left;jQueryform.clk_y=e.pageY-offset.top}else{jQueryform.clk_x=e.pageX-this.offsetLeft;jQueryform.clk_y=e.pageY-this.offsetTop}}}setTimeout(function(){jQueryform.clk=jQueryform.clk_x=jQueryform.clk_y=null},10)}function submitHandler(){var id=this.formPluginId;var options=jQuery.fn.ajaxForm.optionHash[id];jQuery(this).ajaxSubmit(options);return false}jQuery.fn.ajaxFormUnbind=function(){this.unbind("submit",submitHandler);return this.each(function(){jQuery(":submit,input:image",this).unbind("click",clickHandler)})};jQuery.fn.formToArray=function(semantic){var a=[];if(this.length==0){return a}var form=this[0];var els=semantic?form.getElementsByTagName("*"):form.elements;if(!els){return a}for(var i=0,max=els.length;i<max;i++){var el=els[i];var n=el.name;if(!n){continue}if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el){a.push({name:n+".x",value:form.clk_x},{name:n+".y",value:form.clk_y})}continue}var v=jQuery.fieldValue(el,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(!semantic&&form.clk){var inputs=form.getElementsByTagName("input");for(var i=0,max=inputs.length;i<max;i++){var input=inputs[i];var n=input.name;if(n&&!input.disabled&&input.type=="image"&&form.clk==input){a.push({name:n+".x",value:form.clk_x},{name:n+".y",value:form.clk_y})}}}return a};jQuery.fn.formSerialize=function(semantic){return jQuery.param(this.formToArray(semantic))};jQuery.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n){return}var v=jQuery.fieldValue(this,successful);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(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=jQuery.fieldValue(el,successful);if(v===null||typeof v=="undefined"||(v.constructor==Array&&!v.length)){continue}v.constructor==Array?jQuery.merge(val,v):val.push(v)}return val};jQuery.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=="undefined"){successful=true}if(successful&&(!n||el.disabled||t=="reset"||t=="button"||(t=="checkbox"||t=="radio")&&!el.checked||(t=="submit"||t=="image")&&el.form&&el.form.clk!=el||tag=="select"&&el.selectedIndex==-1)){return null}if(tag=="select"){var index=el.selectedIndex;if(index<0){return null}var a=[],ops=el.options;var one=(t=="select-one");var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=jQuery.browser.msie&&!(op.attributes.value.specified)?op.text:op.value;if(one){return v}a.push(v)}}return a}return el.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()}})};jQuery.fn.enable=function(b){if(b==undefined){b=true}return this.each(function(){this.disabled=!b})};jQuery.fn.select=function(select){if(select==undefined){select=true}return this.each(function(){var t=this.type;if(t=="checkbox"||t=="radio"){this.checked=select}else{if(this.tagName.toLowerCase()=="option"){var jQuerysel=jQuery(this).parent("select");if(select&&jQuerysel[0]&&jQuerysel[0].type=="select-one"){jQuerysel.find("option").select(false)}this.selected=select}}})}})(jQuery);