var Flash;
window.addEvent('domready', function(){
	Flash = new flashClass();
});

var LOADING = new Hash({
	
	'start': function(){
		this.inProcess = true;
		this.message = Flash.process('Загрузка&#133;');
	},
	'stop': function(){
		this.inProcess = false;
		Flash.destroy(this.message);
	}
	
});


var flashClass = new Class({
	
	Implements: [Chain, Events, Options],
	
	// созает несколько сообщений
	fire: function( messages ){
		
		var i = 0;
		messages.each(function(message){
			
			this.create.delay( i*50, this, message);
			
			i++
		}.bind(this));
		
	},
	
	
	error: function( message ){
		return this.create( message, 'error');
	},
	
	notice: function( message ){
		return this.create( message, 'notice');
	},
	
	process: function( message ){
		return this.create( message, 'process');
	},
	
	// созает сообщение
	create: function( message, type ){
		
		// создаем контейнер сообщений, если его нет
		if(!this.container)
			this.createContainer();
			
		if( $type(message) == 'string' ){
			
			message = {
				'text': message
			};
			
			if( !type )
				return;
		}
		
		if( type )
			message.type = type;
		
		var message_el = new Element('div', {
			'class': 'flash ' + message.type,
			'html': message.text
		}).inject(this.container);
		
		
		if( message.type != 'process' ){
			new Element('img', {
				'src': "/imgs/icons/delete.png",
				'align': 'right',
				'class': 'delete_flash',
				'events': {
					'click': this.destroy
				}
			}).inject(message_el);
			
			// утадаляем через промежуток времени
			this.destroy.delay(3000, message_el);
		
		
			message_el.showHighlight();
		}
		
		return message_el;
	},
	
	
	// удаляет сообщение
	destroy: function(button){
		button = $(button);
		
		if( !button || $type(button) != 'element')
			button = this;
		
		var message;
		if( $(button).hasClass('flash') )
			message = $(button);
		else
			message = $(button).getParent('.flash');
		
		if( !message )
			return;
			
		message.destroyHighlight();
	},
	
	
	empty: function( type ){
		
		if( !this.container )
			return;
		
		var flash_class = '.flash';
		
		if( type )
			flash_class = flash_class + '.'+type;
		
		this.container.getElements( flash_class ).each(function(message){
			
			this.destroy( message );
		}.bind(this));
		
	},
	
	// создаем контейнер сообщений
	createContainer: function(){
		
		this.container = new Element('div', {
			'id': 'broadcasts_fixed',
			'styles': {
				'position': 'fixed',
				'width': '24%',
				'z-index': '9999',
				'right': '14%',
				'top': '0'
			}
		}).inject( document.body );
	}
	
});

