

function MessageController()
{

	
	
 	var msgDisplayCallbackGroup = new CallbackStandardization().getStandardGroup(function(mo, mr) { document.getElementById("middlecontent").innerHTML = mo;}); 

	this.messageOperator = null;

	this.setMessageOperator = function(mr)
	{
		this.messageOperator = mr;
	}

	this.displayComponent = function(params, componentClassName)
	{
	
		var instantiator = new RInstantiator(componentClassName);
		
		var callback = function(component)
		{
			var caller = new RPCaller(msgDisplayCallbackGroup, component);
			
			component.display(caller);
		}

		instantiator.instantiateWithParamsArray(params, callback);
	}

	this.displayMessageBoxPanel = function()
	{
		this.displayComponent(null, "MessageBoxPanel");
	}

	this.deleteMessage = function(messageObj)
	{
		var caller = new RPCaller(new CallbackStandardization().getStandardGroup(function(mo, mr) { document.getElementById("middlecontent").innerHTML = mo; }), this.messageOperator);
		this.messageOperator.deleteMessage(messageObj, caller);
	}

	this.displayMessage = function(messageObj)
	{
		this.displayComponent(messageObj, "MessageDisplayer");
	}

	this.displayMessageSendingForm = function(messageObj)
	{
		this.displayComponent(messageObj, "MessageSendingForm");
	}	

	this.submitMessageSendingForm = function(messageObj)
	{								
		var instantiator = new RInstantiator("MessageSendingForm");
		var handleSubmitCallback = function(msForm)
		{
			var caller = new RPCaller(msgDisplayCallbackGroup, msForm);
			msForm.handleSubmit(messageObj, caller);
		};

		instantiator.instantiate(handleSubmitCallback);
	}

	this.retrieveMessageFromId = function(id, callback)
	{
		var caller = new RPCaller(new RPCallbackGroup(function(mo, mr) { var messageObj = mr; callback(messageObj); }, function(){}, function(reason) { alert(reason); }), this.messageOperator);
		this.messageOperator.retrieveFromId(id, caller);
	}


	MessageController.singleton = this;
	


}

MessageController.getSingleton = function()
	{
		if (MessageController.singleton == null)
		{
			MessageController.singleton = new MessageController();
		}

		return MessageController.singleton;
		
	}

