/*  Window.Growl, version 2.0: http://icebeat.bitacoras.com
 *  Daniel Mota aka IceBeat <daniel.mota@gmail.com>
 *	Updated to 1.2b2 by Paul Streise <paulstreise@gmail.com>
--------------------------------------------------------------------------*/
var Gr0wl={};
Gr0wl.Base = new Class({
	options:{
		image:"/images/icons/blank.gif",
		title:"",
		text:"",
		duration:4
	},
	initialize:function(A){
		this.image=new Asset.image(A,{
			onload:this.create.bind(this)
		});
		return this.show.bind(this)
	},
	create:function(A){
		this.image.setStyles({position:"absolute",display:"none",'opacity':0,'z-index':9998}).inject(document.body);
		this.block = new Element("div",{'class':'grwl'}).addClass(A.classname).setOpacity(0).inject(document.body);
		new Element("img").inject(this.block);
		new Element("h3").inject(this.block);
		new Element("p").inject(this.block)
	},
	show:function(A){
		A = Object.merge(this.options,A);
		var B=[this.image.clone(),this.block.clone()];
		B.each(function(D,C){
			D.inject(document.body);
			D.setStyles(A.position);
			if(C){
				D.getFirst().setProperty("src",A.image).getNext().set('html',A.title).getNext().set('html',A.text)
			}
			D.addClass('active_grwl');
		});
		new Fx.Elements(B,{duration:400}).start({"0":{opacity:[0,0.7]},"1":{opacity:1}});
		if(this.options.hold){
			window.hideBezel = function(e){
				this.hide(this,[B]);
			}.bind(this)
			return;
		}
		
		
		this.hide.delay(A.duration*1000,this,[B]);
	},
	hide:function(C,A){
		var B=new Fx.Elements(C,{
			duration:400,
			onComplete:function(){
				this.elements[0].dispose();
				this.elements[1].empty().dispose()
			}
		}).start({"0":A,"1":A})
	}
});
	
Gr0wl.Smoke = new Class({
	Extends: Gr0wl.Base,
	create:function(){
		this.queue=[];
		this.parent({classname:"smoke"});
	},
	show:function(A){
		var B = this.queue.getLast();
		var C = window.getScroll().y+50+(B*83);
		A.position={top:C+"px",right:"10px",display:"block"};
		this.queue.push(B+1);
		this.parent(A)
	},
	hide:function(A){
		this.queue.shift();
		this.parent(A,{opacity:0})
	}
});

Gr0wl.Bezel = new Class({
	Extends: Gr0wl.Base,
	Implements:[Chain],
	create:function(){
		this.i=0;
		this.parent({classname:"bezel"});
	},
	show:function(A){
		var C = window.getScroll().y+(window.getCoordinates().height/2)-105;
		var B = window.getScroll().x+(window.getCoordinates().width/2)-103;
		A.position={top:C+"px",left:B+"px",display:"block"};
		this.i++;
		this.chain(
			Gr0wl.Base.prototype.show.pass(A, this)
		);
		if(this.i==1){
			this.callChain()
		}
	},
	hide:function(A){
		this.queue.delay(400,this);
		this.parent(A,{
			opacity:0,
			"margin-top":[0,50]
		})
	},
	queue:function(){
		this.i--;
		this.callChain()
	}
});

var Growl=function(A){
	if(Growl[A.type]){
		Growl[A.type].call(A)
	}
	else{
		Growl.Smoke(A)
	}
};

function growlSmoke(type,title,msg,delay,img){
	switch(type){
		case "alert":
			img = '/images/icons/alert-icon.png';
			break;
		case "success":
			img = '/images/icons/success-icon.png';
			break;
		case "info":
			img = '/images/icons/info-icon.png';
			break;
	}
	
	var options = {
		image: img||"/images/icons/blank.gif",
		title: title||'',
		text: msg||'',
		duration: delay||4
	}
	Growl.Smoke(options);
}

function growlBezel(type,title,msg,delay,img,hold){
	switch(type){
		case "alert":
			img = '/images/icons/alert-icon.png';
			break;
		case "success":
			img = '/images/icons/success-icon.png';
			break;
		case "info":
			img = '/images/icons/info-icon.png';
			break;
		case "loading":
			img = '/images/icons/ajax-loader.gif';
			break;
	}
	
	var options = {
		image: img||"/images/icons/blank.gif",
		title: title||'',
		text: msg||'',
		duration: delay||4,
		hold: hold||false
	}
	
	Growl.Bezel(options);
}
window.addEvent('domready',function() {
	Growl.Bezel = new Gr0wl.Bezel('/images/icons/bezel.png');
	Growl.Smoke = new Gr0wl.Smoke('/images/icons/smoke.png');
	//Gr0wl.Bezel.implement(new Chain);
});
