/*
 * 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(H){if(!this.length){A("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof H=="function"){H={success:H}}H=B.extend({url:this.attr("action")||window.location.toString(),type:this.attr("method")||"GET"},H||{});var M={};this.trigger("form-pre-serialize",[this,H,M]);if(M.veto){A("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}var I=this.formToArray(H.semantic);if(H.data){H.extraData=H.data;for(var F in H.data){I.push({name:F,value:H.data[F]})}}if(H.beforeSubmit&&H.beforeSubmit(I,this,H)===false){A("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[I,this,H,M]);if(M.veto){A("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var D=B.param(I);if(H.type.toUpperCase()=="GET"){H.url+=(H.url.indexOf("?")>=0?"&":"?")+D;H.data=null}else{H.data=D}var N=this,E=[];if(H.resetForm){E.push(function(){N.resetForm()})}if(H.clearForm){E.push(function(){N.clearForm()})}if(!H.dataType&&H.target){var K=H.success||function(){};E.push(function(O){B(H.target).html(O).each(K,arguments)})}else{if(H.success){E.push(H.success)}}H.success=function(R,Q){for(var P=0,O=E.length;P<O;P++){E[P](R,Q,N)}};var C=B("input:file",this).fieldValue();var L=false;for(var G=0;G<C.length;G++){if(C[G]){L=true}}if(H.iframe||L){if(B.browser.safari&&H.closeKeepAlive){B.get(H.closeKeepAlive,J)}else{J()}}else{B.ajax(H)}this.trigger("form-submit-notify",[this,H]);return this;function J(){var Q=N[0];if(B(":input[@name=submit]",Q).length){alert('Error: Form elements must not be named "submit".');return }var P=B.extend({},B.ajaxSettings,H);var R="jqFormIO"+(new Date().getTime());var W=B('<iframe id="'+R+'" name="'+R+'" />');var Y=W[0];if(B.browser.msie||B.browser.opera){Y.src='javascript:false;document.write("");'}W.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 X=P.global;if(X&&!B.active++){B.event.trigger("ajaxStart")}if(X){B.event.trigger("ajaxSend",[a,P])}var Z=0;var V=0;var O=Q.clk;if(O){var S=O.name;if(S&&!O.disabled){H.extraData=H.extraData||{};H.extraData[S]=O.value;if(O.type=="image"){H.extraData[name+".x"]=Q.clk_x;H.extraData[name+".y"]=Q.clk_y}}}setTimeout(function(){var d=N.attr("target"),b=N.attr("action");N.attr({target:R,encoding:"multipart/form-data",enctype:"multipart/form-data",method:"POST",action:P.url});if(P.timeout){setTimeout(function(){V=true;T()},P.timeout)}var c=[];try{if(H.extraData){for(var e in H.extraData){c.push(B('<input type="hidden" name="'+e+'" value="'+H.extraData[e]+'" />').appendTo(Q)[0])}}W.appendTo("body");Y.attachEvent?Y.attachEvent("onload",T):Y.addEventListener("load",T,false);Q.submit()}finally{N.attr("action",b);d?N.attr("target",d):N.removeAttr("target");B(c).remove()}},10);function T(){if(Z++){return }Y.detachEvent?Y.detachEvent("onload",T):Y.removeEventListener("load",T,false);var c=0;var d=true;try{if(V){throw"timeout"}var f,h;h=Y.contentWindow?Y.contentWindow.document:Y.contentDocument?Y.contentDocument:Y.document;if(h.body==null&&!c&&B.browser.opera){c=1;Z--;setTimeout(T,100);return }a.responseText=h.body?h.body.innerHTML:null;a.responseXML=h.XMLDocument?h.XMLDocument:h;a.getResponseHeader=function(e){var i={"content-type":P.dataType};return i[e]};if(P.dataType=="json"||P.dataType=="script"){var b=h.getElementsByTagName("textarea")[0];a.responseText=b?b.value:a.responseText}else{if(P.dataType=="xml"&&!a.responseXML&&a.responseText!=null){a.responseXML=U(a.responseText)}}f=B.httpData(a,P.dataType)}catch(g){d=false;B.handleError(P,a,"error",g)}if(d){P.success(f,"success");if(X){B.event.trigger("ajaxSuccess",[a,P])}}if(X){B.event.trigger("ajaxComplete",[a,P])}if(X&&!--B.active){B.event.trigger("ajaxStop")}if(P.complete){P.complete(a,d?"success":"error")}setTimeout(function(){W.remove();a.responseXML=null},100)}function U(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 I=N?D.getElementsByTagName("*"):D.elements;if(!I){return M}for(var J=0,K=I.length;J<K;J++){var E=I[J];var G=E.name;if(!G){continue}if(N&&D.clk&&E.type=="image"){if(!E.disabled&&D.clk==E){M.push({name:G+".x",value:D.clk_x},{name:G+".y",value:D.clk_y})}continue}var O=B.fieldValue(E,true);if(O&&O.constructor==Array){for(var H=0,C=O.length;H<C;H++){M.push({name:G,value:O[H]})}}else{if(O!==null&&typeof O!="undefined"){M.push({name:G,value:O})}}}if(!N&&D.clk){var F=D.getElementsByTagName("input");for(var J=0,K=F.length;J<K;J++){var L=F[J];var G=L.name;if(G&&!L.disabled&&L.type=="image"&&D.clk==L){M.push({name:G+".x",value:D.clk_x},{name:G+".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(G){for(var H=[],E=0,C=this.length;E<C;E++){var F=this[E];var D=B.fieldValue(F,G);if(D===null||typeof D=="undefined"||(D.constructor==Array&&!D.length)){continue}D.constructor==Array?B.merge(H,D):H.push(D)}return H};B.fieldValue=function(D,E){var F=D.name,N=D.type,O=D.tagName.toLowerCase();if(typeof E=="undefined"){E=true}if(E&&(!F||D.disabled||N=="reset"||N=="button"||(N=="checkbox"||N=="radio")&&!D.checked||(N=="submit"||N=="image")&&D.form&&D.form.clk!=D||O=="select"&&D.selectedIndex==-1)){return null}if(O=="select"){var J=D.selectedIndex;if(J<0){return null}var L=[],C=D.options;var H=(N=="select-one");var K=(H?J+1:C.length);for(var G=(H?J:0);G<K;G++){var I=C[G];if(I.selected){var M=B.browser.msie&&!(I.attributes.value.specified)?I.text:I.value;if(H){return M}L.push(M)}}return L}return D.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);