var growlMessage;
var Gr0wl = {};

Gr0wl.Base = new Class({
	
	options: {
		image: baseUrl+'webroot/growl/growl.jpg',
		title: '',
		text: '',
		duration: 2
	},
	
	initialize: function(image) {
		this.image = new Asset.image(image, { onload: this.create.bind(this) });
		return this.show.bind(this);
	},
	
	create: function(styles) {
		this.list = [];

		this.image.setStyles(
			{
				'position':'absolute',
				'right':'10px',
				'display':'none'
			}
			).setOpacity(0).injectInside(document.body);
		this.msgBlock = new Element('div').setStyles(
			$extend(
			{
				'position': 'absolute',
				'z-index':'999',
				'color':'#fff',
				'font': '11px/12px "Lucida Grande", Arial, Helvetica, Verdana, sans-serif',
				'width':'298px',
				'height':'73px',
				'display':'none'
			},
			styles.div)
			).setOpacity(0).injectInside(document.body);
		new Element('img').setStyles({'float':'left','margin':'12px'}).injectInside(this.msgBlock);
		new Element('h3').setStyles({'margin':'0','padding':'10px 0px','font-size':'13px'}).injectInside(this.msgBlock);
		new Element('p').setStyles({'margin':'0px 10px','font-size':'11px'}).injectInside(this.msgBlock);

	},
	
	show: function(options) {
		options = $merge(this.options, options);
		var elements = [this.image.clone(), this.msgBlock.clone()];

			if(!this.list)
			{
				this.list = [];
				this.list.push(1);
				var last = this.list.getLast();
			}

			else
			{
				var last = this.list.getLast();
				this.list.push(last+1);
			}
			
		elements.each(function(e, i) {

			e.injectInside(document.body);
			delta = window.getScrollTop()+100+(last*83);
			options.position = {'top':delta+'px', 'right':'10px', 'display':'block'};
			e.setStyles(options.position);

			if(i) e.getFirst().setProperty('src', options.image).getNext().set('html', options.title).getNext().set('html', options.text);
		});
		new Fx.Elements(elements, {duration:400}).start({
			'0': { 'opacity': [0, 0.75] }, '1': { 'opacity': 1 }
		});
		this.hide.delay(options.duration*1000, this, [elements]);
	},
	
	hide: function(elements, effect) {
		this.list.shift();

		var effects = new Fx.Elements(elements, {duration:400, onComplete: function() {
			this.elements[0].parentNode.removeChild(this.elements[0]);
			this.elements[1].empty().parentNode.removeChild(this.elements[1].empty());
		}}).start({'0': effect, '1': effect });
	}
	
});
		
window.addEvent('domready', function() {
	growlMessage = new Gr0wl.Base(baseUrl+'webroot/growl/smoke.png');
});
