jQuery.fn.extend({
	//Page, Additional vars, Div to send data to, Page to parse, Function to run before ajax, Function to run after ajax
	ajaxLink: function( p, a, cd, cp, ba, aa ) {
		var f = "";
		var e = jQuery(":input"); //Get vars and all form elements
		for( var i = 0; i < e.length; i++ ) {
			if( e[i].name != "page" ) {
				n = e[i].name; v = ajax.safe( e[i].value ); //Add slashes and clean strings of ampersands
				if( e[i].type == "checkbox" || e[i].type == "radio" ) { if( e[i].checked == true ) { f += '&' + n + '=' + v; } } else { f += '&' + n + '=' + v; } //Put all form elements into a string
			}
		}
		if( a != "" ) { f += '&' + a; }
		ba = ba.substr( ( ba.length - 1 ), 1 ) == ")" ? ba : ba + "('" + cd + "')";
		var r = eval( ba );
		if( r ) {
			jQuery("body").fadeTo( r, 1.0, function() {
				jQuery.ajax({ dataType: "html", type: "POST", url: cp, data: "page=" + p + f , success:
					function( d ) {
						if( cd ) { jQuery( cd ).html( d ); } eval( aa + "('" + cd + "')" );
					}
				});
			});
		}
	}
});

var ajax = {
	//String, escapes quote, single quote, backslashes and replaces ampersands with [{{a}}]
	safe: function( s ) { return ( s + '' ).replace( /([\\"'])/g, "\\$1" ).replace( /\0/g, "\\0" ).replace( /&/g, "[({a})]" ); },
	link: function( p, a, cd, cp, ba, aa ) { jQuery().ajaxLink( p, a, cd, cp, ba, aa ); }
}