$.fn.fastSerialize = function() {
	var a = {};
	$('input,textarea,select,button', this).each(function() {
		var n = this.name;
		var t = this.type;
		if ( !n || this.disabled || t == 'reset' || (t == 'checkbox' || t == 'radio') && !this.checked || (t == 'submit' || t == 'image' || t == 'button') && this.form.clicked != this || this.tagName.toLowerCase() == 'select' && this.selectedIndex == -1) return;
		if (t == 'image' && this.form.clicked_x) {
			eval("a."+n+"_x="+this.form.clicked_x);
			eval("a."+n+"_y="+this.form.clicked_y);
			return;
		}
		if (t == 'select-multiple') { 
			eval("a."+n+"=[]");
			$('option:selected', this).each( function() {
				eval("a."+n+".push('"+this.value.replace(/\'/, "\\'")+"')");
			});
			return;
		}
		eval("a."+n+"='"+this.value.replace(/\'/, "\\'")+"'");
	});
	return a;
};
