var RialtoFlashMessage = (function(){
	
	var self; // for reference anywhere in the class
		
	// TODO MARK: flash message is flashing twice!
	// HTML
	flashMessageHTML = function(){ return "<div id='rialto-flash-message'><span class='rialto-flash-message-container'></span></div>" };
	
	return new Class({
		
		Implements: [Options],
		
		// default options
		options: {
			flashMessageError: 'Something went wrong!'
		},
		
		$flashMessage: Elements.from(flashMessageHTML())[0],
		
		initialize: function(options) {
			//console.log('initializing RialtoFlashMessage');
			self = this; // avoid conflicts with 'this'
			self.setOptions(options); // override default options
				
			self.$flashMessage.inject(document.body).fade('hide'); // put the flash message HTML in the DOM
		},


		// ======================================================== PUBLIC METHODS ======================================
		/**
		 * Flashes a message to the screen.
		 * 
		 * @param string message The message to be flashed.
		 * @return void
		 */
		show: function(message) {
			self.$flashMessage.getElements('.rialto-flash-message-container').set('html', message);
			(function(){self.$flashMessage.fade('in').pauseFx(2000).fade('out')}).delay(500); // add image to parent and show
		},
		
		/**
		 * Flashes a generic error message to the screen. (delegates to self.show());
		 * 
		 * @return void
		 */
		showError: function(message) { this.show(message || this.options.flashMessageError); } // flash a generic error message
		
		
		// ======================================================== PROTECTED METHODS ======================================
	
	});
	
})();

