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