var Controller_Information = Class.create(
{
	ADD: 'add',
	SET: 'set',

	contentContainerId: 'informationContent',
	blockContainerSuffix: 'block',
	messageContainerClass: 'message',


	initialize: function ()
	{
		this.manageVisibility();
	},

	reset: function ()
	{
		this.setNotice();
		this.setWarning();
		this.setError();
	},

	addNotice: function (noticeArray)
	{
		this.displayMessage('notice', noticeArray, this.ADD);
	},

	setNotice: function (noticeArray)
	{
		this.displayMessage('notice', noticeArray, this.SET);
	},

	addWarning: function (warningArray)
	{
		this.displayMessage('warning', warningArray, this.ADD);
	},

	setWarning: function (warningArray)
	{
		this.displayMessage('warning', warningArray, this.SET);
	},

	addError: function (errorArray)
	{
		this.displayMessage('error', errorArray, this.ADD);
	},

	setError: function (errorArray)
	{
		this.displayMessage('error', errorArray, this.SET);
	},

	displayMessage: function (name, messageArray, mode)
	{
		var blockContainer = this.getElement_block(name);
		var messageContainer = this.getElement_message(blockContainer);

		if(Object.isString(messageArray)) {
			messageArray = [messageArray];
		}
		else if(!Object.isArray(messageArray)) {
			messageArray = [];
		}

		if(mode !== this.ADD) {
			messageContainer.childElements().invoke('remove');
		}

		$A(messageArray).each( function (item) { messageContainer.appendChild(new Element('div', {className:name}).insert(item)); } );
		this.manageVisibility();

		new Ihm_Document().rezise();
	},

	manageVisibility: function ()
	{
		var isEmpty = true;
		var blockContainers = this.getElement_block('abstract', true);

		$A(blockContainers).each
		(
			function(blockContainer)
			{
				var element = this.getElement_message(blockContainer);
				(!element.empty()) ? (blockContainer.show()) : (blockContainer.hide());
				isEmpty = (isEmpty && element.empty());
			}, this
		);

		if(isEmpty) {
			$(this.contentContainerId).hide();
		}
		else {
			$(this.contentContainerId).show();
		}
	},

	getElement_block: function (name, returnArray)
	{
		if(Object.isUndefined(returnArray)) {
			returnArray = false;
		}

		var blockContainer = $$('#'+this.contentContainerId+' div.'+name+'_'+this.blockContainerSuffix);
		return (returnArray) ? (blockContainer) : (blockContainer.first());
	},

	getElement_message: function (blockContainer, returnArray)
	{
		if(Object.isUndefined(returnArray)) {
			returnArray = false;
		}

		var messageContainer = blockContainer.select('div.'+this.messageContainerClass);
		return (returnArray) ? (messageContainer) : (messageContainer.first());
	}
}
);
