	waynedalton.ajaxcallback = {
			success: {},
			failure: {},
			argument: {},
			scope: null
	};
	
	waynedalton.callback = function() {
		return waynedalton.object.clone( waynedalton.ajaxcallback );
	};
	
	waynedalton.ajaxbase = {
			parms:[],
			mode: "GET",
			controllerURI: null,
			handleSuccess:function(o){ this.onSuccess(o); },
			handleFailure:function(o){ this.onFailure(o); },
			onSuccess:function(o){ /* Public Success handler */ },
			onFailure:function(o){ /* Public Failure handler */ },
			startRequest:function(){}
	};
	
	waynedalton.ajax = function() {
		var returnObject = waynedalton.object.extend(waynedalton.ajaxbase, {callback:waynedalton.callback});
		
		returnObject.callback.success = function(o) { returnObject.handleSuccess(o); };
		returnObject.callback.failure = function(o) { returnObject.handleFailure(o); };

		returnObject.startRequest = function() {
			var parameters = "";
			for ( var parm in this.parms ) { parameters += ( ( parameters == "" ) ? "?" : "&" ) + parm + "=" + this.parms[parm]; }
			YAHOO.util.Connect.asyncRequest(this.mode, this.controllerURI + parameters, this.callback);
		};
		return returnObject;
	};
	
	
	waynedalton.createCallback = function(callbackFunction, callbackObject) {
	    return function () { callbackFunction.apply(callbackObject, arguments); };
	};
