//////////////////////////////////////////////
// Data Controller VERSION_0.8
//////////////////////////////////////////////
//
// Ali Russell 04.2007
//
//////////////////////////////////////////////

var DataController = Class.create();
DataController.prototype = {
	
ajaxRequest: null,
callbackobject: null,
//
// Constructor
initialize: function()
	{
		
		mSpaceApplication.Subscribe("DataController.Request", this);
		mSpaceApplication.Subscribe("DataController.Cancel", this);
		
	},
	
Notify: function(eventName, eventParams)
	{
			
		switch(eventName)
		{			
			case 'DataController.Request' : this.Request(eventParams); break;
			case 'DataController.Cancel' : this.Cancel(eventParams); break;
			default: break;
		}		
		
	},
	
Request: function(params)
	{
		
		if (this.ajaxRequest!=null)
		{
			//cancel previous ajax call.
			//perhaps this should be pooled in some way.
			try
			{
				this.callbackobject = null;
				this.ajaxRequest.transport.abort();
			}
			catch (e)
			{
			}
		}		
		
		var thisObj = this;
		
		var requestUrl = params.url;
		var callBackObject = params.sender;
		this.callbackobject = params.sender;
		var callBackID = params.id;
		var requestType = params.type || "GET";
		var postString = params.postvars || '';
		
		var returnParameter = null;
		if (params.returnParameter)
		{
			returnParameter = params.returnParameter
		}
		
		
		
		this.ajaxRequest = new Ajax.Request(requestUrl, {
		  requestType: 'get',
		  parameters: postString,
		  onSuccess: function(transport) 
		  {			
		  		thisObj.ajaxRequest = null;
				if (thisObj.callbackobject!=null)
				{
			  		thisObj.callbackobject.HandleResponse(callBackID, transport.responseText, returnParameter);
					thisObj.callbackobject = null;
				}
		  },
		  onFailure: function(transport) {
			  thisObj.ajaxRequest = null;
			  thisObj.callbackobject = null;
			  var transport2 = transport;			  
		  }
		});												
		
		
		
	},
	
Cancel: function(sender)
	{
		if (this.ajaxRequest!=null)
		{
			try
			{
				this.callbackobject = null;
				this.ajaxRequest.transport.abort();
			}
			catch (e)
			{
				alert(e);
			}
		}
	}
		
	
};

