﻿jQuery.fn.ajaxSubmit=function(options){if(typeof options=='function')
options={success:options};options=jQuery.extend({url:this.attr('action')||'',method:this.attr('method')||'GET'},options||{});options.success=options.success||options.after;options.beforeSubmit=options.beforeSubmit||options.before;var a=this.formToArray(options.semantic);if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false)return;var q=jQuery.param(a);var get=(options.method&&options.method.toUpperCase()=='GET');if(get)
options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.type=options.method;options.data=get?null:q;if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};options.success=function(data,status){jQuery(options.target).html(data).evalScripts().each(oldSuccess,[data,status]);}}
jQuery.ajax(options);return this;};jQuery.fn.ajaxForm=function(options){return this.each(function(){jQuery("input:submit,input:image",this).click(function(ev){this.form.clk=this;if(ev.offsetX!=undefined){this.form.clk_x=ev.offsetX;this.form.clk_y=ev.offsetY;}else if(typeof jQuery.fn.offset=='function'){var offset=$(this).offset();this.form.clk_x=ev.pageX-offset.left;this.form.clk_y=ev.pageY-offset.top;}else{this.form.clk_x=ev.pageX-this.offsetLeft;this.form.clk_y=ev.pageY-this.offsetTop;}})}).submit(function(e){jQuery(this).ajaxSubmit(options);return false;});};jQuery.fn.formToArray=function(semantic){var a=[];var q=semantic?':input':'input,textarea,select,button';jQuery(q,this).each(function(){var n=this.name;var t=this.type;var tag=this.tagName.toLowerCase();if(!n||this.disabled||t=='reset'||(t=='checkbox'||t=='radio')&&!this.checked||(t=='submit'||t=='image'||t=='button')&&this.form&&this.form.clk!=this||tag=='select'&&this.selectedIndex==-1)
return;if(t=='image'&&this.form.clk_x!=undefined)
return a.push({name:n+'_x',value:this.form.clk_x},{name:n+'_y',value:this.form.clk_y});if(tag=='select'){var val=jQuery.fieldValue(this,false);if(t=='select-multiple'){for(var i=0;i<val.length;i++)
a.push({name:n,value:val[i]});}
else
a.push({name:n,value:val});}
else
a.push({name:n,value:this.value});});return a;};jQuery.fn.formSerialize=function(semantic){return jQuery.param(this.formToArray(semantic));};jQuery.fn.fieldSerialize=function(successful){var a=[];this.each(function(){if(!this.name)return;var val=jQuery.fieldValue(this,successful);if(val&&val.constructor==Array){for(var i=0;i<val.length;i++)
a.push({name:this.name,value:val[i]});}
else if(val!==null&&typeof val!='undefined')
a.push({name:this.name,value:val});});return jQuery.param(a);};jQuery.fn.fieldValue=function(successful){var cbVal=[],cbName=null;for(var i=0;i<this.length;i++){var el=this[i];if(el.type=='checkbox'){if(!cbName)cbName=el.name||'unnamed';if(cbName!=el.name)
return cbVal;var val=jQuery.fieldValue(el,successful);if(val!==null&&typeof val!='undefined')
cbVal.push(val);}
else{var val=jQuery.fieldValue(el,successful);if(val!==null&&typeof val!='undefined')
return val;}}
return cbVal;};jQuery.fieldValue=function(el,successful){var n=el.name;var t=el.type;var tag=el.tagName.toLowerCase();if(typeof successful=='undefined')successful=true;if(successful&&(!n||el.disabled||t=='reset'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image'||t=='button')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1))
return null;if(tag=='select'){var a=[];for(var i=0;i<el.options.length;i++){var op=el.options[i];if(op.selected){var v=jQuery.browser.msie&&!(op.attributes['value'].specified)?op.text:op.value;if(t=='select-one')
return v;a.push(v);}}
return a;}
return el.value;};