/*
 * jQuery Form Plugin
 * @requires jQuery v1.1 or later
 *
 * Examples at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.form.js 3028 2007-08-31 13:37:36Z joern.zaefferer $
 */
 
(function(b){function v(a){var c=this.form;c.clk=this;if(this.type=="image")if(a.offsetX!=undefined){c.clk_x=a.offsetX;c.clk_y=a.offsetY}else if(typeof b.fn.offset=="function"){var f=b(this).offset();c.clk_x=a.pageX-f.left;c.clk_y=a.pageY-f.top}else{c.clk_x=a.pageX-this.offsetLeft;c.clk_y=a.pageY-this.offsetTop}setTimeout(function(){c.clk=c.clk_x=c.clk_y=null},10)}function w(){var a=b.fn.ajaxForm.optionHash[this.formPluginId];b(this).ajaxSubmit(a);return false}b.fn.ajaxSubmit=function(a){function c(){function k(){if(!z++){m.detachEvent? m.detachEvent("onload",k):m.removeEventListener("load",k,false);var o=true;try{if(x)throw"timeout";var h,p;p=m.contentWindow?m.contentWindow.document:m.contentDocument?m.contentDocument:m.document;l.responseText=p.body?p.body.innerHTML:null;l.responseXML=p.XMLDocument?p.XMLDocument:p;if(j.dataType=="json"||j.dataType=="script"){var y=p.getElementsByTagName("textarea")[0];h=y?y.value:l.responseText;j.dataType=="json"?eval("data = "+h):b.globalEval(h)}else if(j.dataType=="xml"){h=l.responseXML;if(!h&& l.responseText!=null)h=r(l.responseText)}else h=l.responseText}catch(A){o=false;b.handleError(j,l,"error",A)}if(o){j.success(h,"success");s&&b.event.trigger("ajaxSuccess",[l,j])}s&&b.event.trigger("ajaxComplete",[l,j]);s&&!--b.active&&b.event.trigger("ajaxStop");if(j.complete)j.complete(l,o?"success":"error");setTimeout(function(){t.remove();l.responseXML=null},100)}}function r(o,h){if(window.ActiveXObject){h=new ActiveXObject("Microsoft.XMLDOM");h.async="false";h.loadXML(o)}else h=(new DOMParser).parseFromString(o, "text/xml");return h&&h.documentElement&&h.documentElement.tagName!="parsererror"?h:null}var q=g[0],j=b.extend({},b.ajaxSettings,a),u="jqFormIO"+b.fn.ajaxSubmit.counter++,t=b('<iframe id="'+u+'" name="'+u+'" />'),m=t[0],B=b.browser.opera&&window.opera.version()<9;if(b.browser.msie||B)m.src='javascript:false;document.write("");';t.css({position:"absolute",top:"-1000px",left:"-1000px"});var l={responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){}, setRequestHeader:function(){}},s=j.global;s&&!b.active++&&b.event.trigger("ajaxStart");s&&b.event.trigger("ajaxSend",[l,j]);var z=0,x=0;setTimeout(function(){t.appendTo("body");m.attachEvent?m.attachEvent("onload",k):m.addEventListener("load",k,false);var o=q.encoding?"encoding":"enctype",h=g.attr("target");g.attr({target:u,method:"POST",action:j.url});q[o]="multipart/form-data";j.timeout&&setTimeout(function(){x=true;k()},j.timeout);q.submit();g.attr("target",h)},10)}if(typeof a=="function")a={success:a}; a=b.extend({url:this.attr("action")||window.location,type:this.attr("method")||"GET"},a||{});var f={};b.event.trigger("form.pre.serialize",[this,a,f]);if(f.veto)return this;var d=this.formToArray(a.semantic);if(a.data)for(var e in a.data)d.push({name:e,value:a.data[e]});if(a.beforeSubmit&&a.beforeSubmit(d,this,a)===false)return this;b.event.trigger("form.submit.validate",[d,this,a,f]);if(f.veto)return this;f=b.param(d);if(a.type.toUpperCase()=="GET"){a.url+=(a.url.indexOf("?")>=0?"&":"?")+f;a.data= null}else a.data=f;var g=this,i=[];a.resetForm&&i.push(function(){g.resetForm()});a.clearForm&&i.push(function(){g.clearForm()});if(!a.dataType&&a.target){var n=a.success||function(){};i.push(function(k){this.evalScripts?b(a.target).attr("innerHTML",k).evalScripts().each(n,arguments):b(a.target).html(k).each(n,arguments)})}else a.success&&i.push(a.success);a.success=function(k,r){for(var q=0,j=i.length;q<j;q++)i[q](k,r,g)};f=b("input:file",this).fieldValue();d=false;for(e=0;e<f.length;e++)if(f[e])d= true;a.iframe||d?c():b.ajax(a);b.event.trigger("form.submit.notify",[this,a]);return this};b.fn.ajaxSubmit.counter=0;b.fn.ajaxForm=function(a){return this.ajaxFormUnbind().submit(w).each(function(){this.formPluginId=b.fn.ajaxForm.counter++;b.fn.ajaxForm.optionHash[this.formPluginId]=a;b(":submit,input:image",this).click(v)})};b.fn.ajaxForm.counter=1;b.fn.ajaxForm.optionHash={};b.fn.ajaxFormUnbind=function(){this.unbind("submit",w);return this.each(function(){b(":submit,input:image",this).unbind("click", v)})};b.fn.formToArray=function(a){var c=[];if(this.length==0)return c;var f=this[0],d=a?f.getElementsByTagName("*"):f.elements;if(!d)return c;for(var e=0,g=d.length;e<g;e++){var i=d[e],n=i.name;if(n)if(a&&f.clk&&i.type=="image")!i.disabled&&f.clk==i&&c.push({name:n+".x",value:f.clk_x},{name:n+".y",value:f.clk_y});else if((i=b.fieldValue(i,true))&&i.constructor==Array)for(var k=0,r=i.length;k<r;k++)c.push({name:n,value:i[k]});else i!==null&&typeof i!="undefined"&&c.push({name:n,value:i})}if(!a&&f.clk){a= f.getElementsByTagName("input");e=0;for(g=a.length;e<g;e++){d=a[e];(n=d.name)&&!d.disabled&&d.type=="image"&&f.clk==d&&c.push({name:n+".x",value:f.clk_x},{name:n+".y",value:f.clk_y})}}return c};b.fn.formSerialize=function(a){return b.param(this.formToArray(a))};b.fn.fieldSerialize=function(a){var c=[];this.each(function(){var f=this.name;if(f){var d=b.fieldValue(this,a);if(d&&d.constructor==Array)for(var e=0,g=d.length;e<g;e++)c.push({name:f,value:d[e]});else d!==null&&typeof d!="undefined"&&c.push({name:this.name, value:d})}});return b.param(c)};b.fn.fieldValue=function(a){for(var c=[],f=0,d=this.length;f<d;f++){var e=b.fieldValue(this[f],a);e===null||typeof e=="undefined"||e.constructor==Array&&!e.length||(e.constructor==Array?b.merge(c,e):c.push(e))}return c};b.fieldValue=function(a,c){var f=a.name,d=a.type,e=a.tagName.toLowerCase();if(typeof c=="undefined")c=true;if(c&&(!f||a.disabled||d=="reset"||d=="button"||(d=="checkbox"||d=="radio")&&!a.checked||(d=="submit"||d=="image")&&a.form&&a.form.clk!=a||e== "select"&&a.selectedIndex==-1))return null;if(e=="select"){e=a.selectedIndex;if(e<0)return null;c=[];a=a.options;f=(d=d=="select-one")?e+1:a.length;for(e=d?e:0;e<f;e++){var g=a[e];if(g.selected){g=b.browser.msie&&!g.attributes.value.specified?g.text:g.value;if(d)return g;c.push(g)}}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,c= this.tagName.toLowerCase();if(a=="text"||a=="password"||c=="textarea")this.value="";else if(a=="checkbox"||a=="radio")this.checked=false;else if(c=="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()})}})(jQuery);

