/*
 * 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(m){if(!this.length){a("ajaxSubmit: skipping submit process - no element selected");
return this
}if(typeof m=="function"){m={success:m}
}m=b.extend({url:this.attr("action")||window.location.toString(),type:this.attr("method")||"GET"},m||{});
var p={};
this.trigger("form-pre-serialize",[this,m,p]);
if(p.veto){a("ajaxSubmit: submit vetoed via form-pre-serialize trigger");
return this
}var h=this.formToArray(m.semantic);
if(m.data){m.extraData=m.data;
for(var e in m.data){h.push({name:e,value:m.data[e]})
}}if(m.beforeSubmit&&m.beforeSubmit(h,this,m)===false){a("ajaxSubmit: submit aborted via beforeSubmit callback");
return this
}this.trigger("form-submit-validate",[h,this,m,p]);
if(p.veto){a("ajaxSubmit: submit vetoed via form-submit-validate trigger");
return this
}var d=b.param(h);
if(m.type.toUpperCase()=="GET"){m.url+=(m.url.indexOf("?")>=0?"&":"?")+d;
m.data=null
}else{m.data=d
}var o=this,g=[];
if(m.resetForm){g.push(function(){o.resetForm()
})
}if(m.clearForm){g.push(function(){o.clearForm()
})
}if(!m.dataType&&m.target){var k=m.success||function(){};
g.push(function(j){b(m.target).html(j).each(k,arguments)
})
}else{if(m.success){g.push(m.success)
}}m.success=function(r,n){for(var q=0,j=g.length;
q<j;
q++){g[q](r,n,o)
}};
var c=b("input:file",this).fieldValue();
var l=false;
for(var f=0;
f<c.length;
f++){if(c[f]){l=true
}}if(m.iframe||l){if(b.browser.safari&&m.closeKeepAlive){b.get(m.closeKeepAlive,i)
}else{i()
}}else{b.ajax(m)
}this.trigger("form-submit-notify",[this,m]);
return this;
function i(){var t=o[0];
if(b(":input[@name=submit]",t).length){alert('Error: Form elements must not be named "submit".');
return
}var r=b.extend({},b.ajaxSettings,m);
var s="jqFormIO"+(new Date().getTime());
var y=b('<iframe id="'+s+'" name="'+s+'" />');
var A=y[0];
if(b.browser.msie||b.browser.opera){A.src='javascript:false;document.write("");'
}y.css({position:"absolute",top:"-1000px",left:"-1000px"});
var B={responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};
var z=r.global;
if(z&&!b.active++){b.event.trigger("ajaxStart")
}if(z){b.event.trigger("ajaxSend",[B,r])
}var q=0;
var v=0;
var j=t.clk;
if(j){var u=j.name;
if(u&&!j.disabled){m.extraData=m.extraData||{};
m.extraData[u]=j.value;
if(j.type=="image"){m.extraData[name+".x"]=t.clk_x;
m.extraData[name+".y"]=t.clk_y
}}}setTimeout(function(){var E=o.attr("target"),C=o.attr("action");
o.attr({target:s,encoding:"multipart/form-data",enctype:"multipart/form-data",method:"POST",action:r.url});
if(r.timeout){setTimeout(function(){v=true;
w()
},r.timeout)
}var D=[];
try{if(m.extraData){for(var F in m.extraData){D.push(b('<input type="hidden" name="'+F+'" value="'+m.extraData[F]+'" />').appendTo(t)[0])
}}y.appendTo("body");
A.attachEvent?A.attachEvent("onload",w):A.addEventListener("load",w,false);
t.submit()
}finally{o.attr("action",C);
E?o.attr("target",E):o.removeAttr("target");
b(D).remove()
}},10);
function w(){if(q++){return
}A.detachEvent?A.detachEvent("onload",w):A.removeEventListener("load",w,false);
var C=0;
var D=true;
try{if(v){throw"timeout"
}var E,G;
G=A.contentWindow?A.contentWindow.document:A.contentDocument?A.contentDocument:A.document;
if(G.body==null&&!C&&b.browser.opera){C=1;
q--;
setTimeout(w,100);
return
}B.responseText=G.body?G.body.innerHTML:null;
B.responseXML=G.XMLDocument?G.XMLDocument:G;
B.getResponseHeader=function(I){var H={"content-type":r.dataType};
return H[I]
};
if(r.dataType=="json"||r.dataType=="script"){var n=G.getElementsByTagName("textarea")[0];
B.responseText=n?n.value:B.responseText
}else{if(r.dataType=="xml"&&!B.responseXML&&B.responseText!=null){B.responseXML=x(B.responseText)
}}E=b.httpData(B,r.dataType)
}catch(F){D=false;
b.handleError(r,B,"error",F)
}if(D){r.success(E,"success");
if(z){b.event.trigger("ajaxSuccess",[B,r])
}}if(z){b.event.trigger("ajaxComplete",[B,r])
}if(z&&!--b.active){b.event.trigger("ajaxStop")
}if(r.complete){r.complete(B,D?"success":"error")
}setTimeout(function(){y.remove();
B.responseXML=null
},100)
}function x(n,C){if(window.ActiveXObject){C=new ActiveXObject("Microsoft.XMLDOM");
C.async="false";
C.loadXML(n)
}else{C=(new DOMParser()).parseFromString(n,"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(f){var d=this.form;
d.clk=this;
if(this.type=="image"){if(f.offsetX!=undefined){d.clk_x=f.offsetX;
d.clk_y=f.offsetY
}else{if(typeof b.fn.offset=="function"){var g=b(this).offset();
d.clk_x=f.pageX-g.left;
d.clk_y=f.pageY-g.top
}else{d.clk_x=f.pageX-this.offsetLeft;
d.clk_y=f.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(q){var p=[];
if(this.length==0){return p
}var d=this[0];
var h=q?d.getElementsByTagName("*"):d.elements;
if(!h){return p
}for(var k=0,m=h.length;
k<m;
k++){var e=h[k];
var f=e.name;
if(!f){continue
}if(q&&d.clk&&e.type=="image"){if(!e.disabled&&d.clk==e){p.push({name:f+".x",value:d.clk_x},{name:f+".y",value:d.clk_y})
}continue
}var r=b.fieldValue(e,true);
if(r&&r.constructor==Array){for(var g=0,c=r.length;
g<c;
g++){p.push({name:f,value:r[g]})
}}else{if(r!==null&&typeof r!="undefined"){p.push({name:f,value:r})
}}}if(!q&&d.clk){var l=d.getElementsByTagName("input");
for(var k=0,m=l.length;
k<m;
k++){var o=l[k];
var f=o.name;
if(f&&!o.disabled&&o.type=="image"&&d.clk==o){p.push({name:f+".x",value:d.clk_x},{name:f+".y",value:d.clk_y})
}}}return p
};
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,j){var e=c.name,p=c.type,q=c.tagName.toLowerCase();
if(typeof j=="undefined"){j=true
}if(j&&(!e||c.disabled||p=="reset"||p=="button"||(p=="checkbox"||p=="radio")&&!c.checked||(p=="submit"||p=="image")&&c.form&&c.form.clk!=c||q=="select"&&c.selectedIndex==-1)){return null
}if(q=="select"){var k=c.selectedIndex;
if(k<0){return null
}var m=[],d=c.options;
var g=(p=="select-one");
var l=(g?k+1:d.length);
for(var f=(g?k:0);
f<l;
f++){var h=d[f];
if(h.selected){var o=b.browser.msie&&!(h.attributes.value.specified)?h.text:h.value;
if(g){return o
}m.push(o)
}}return m
}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);