var Messages = new Object();

Messages.Methods = {

	ShowMessage: function(message, redirect) {
		return new Message(message, redirect);
	},

	ShowLoadingMessage: function(message, redirect) {
		Messages.HideMessages();
		return new LoadingMessage(message);
	},
	
	HideMessages: function() {
		$$('.__messages').invoke('remove');
	}
}

Object.extend(Messages, Messages.Methods);



var Message = Class.create({
	element: null, 
	
	initialize: function(message, redirect) {
		this.element = this.element = new Element('div', {'class': 'message __messages'});
		$(window.document.body).insert(this.element);

		this.element.update(message);
		var left = Math.round((document.viewport.getWidth() - this.element.getWidth()) / 2);

		this.element.setStyle({left: left + 'px'});
		this.element.appear({duration: 0.2});
		
		if (redirect)
			setTimeout(function() {
				location.href = redirect;
			}, 2000);
		else
		{
			if (this.element)
			{
				setTimeout(function() {
					this.element.fade({duration: 0.2});
				}.bind(this), 3000);
			}
		}
	},

	remove: function() {
		this.element.remove();
	}
});


var LoadingMessage = Class.create({
	div: null,

	initialize: function(message) 
	{
		this.div = new Element('div', {'class': 'loadingMessage __messages'}).update(message);
		this.div.setStyle({display: 'none'});
		$(document.body).insert(this.div);
		var mleft = Math.round(this.div.getWidth() / 2);
		this.div.setStyle({marginLeft: -mleft + 'px'});
		this.div.show();
	},
	
	remove: function() {
		this.div.remove();
	}

});

