var Roar=new Class({Implements:[Options,Events,Chain],options:{duration:3000,position:"upperLeft",container:null,bodyFx:null,itemFx:null,margin:{x:10,y:10},offset:10,className:"roar",onShow:$empty,onHide:$empty,onRender:$empty},initialize:function(a){this.setOptions(a);this.items=[];this.container=$(this.options.container)||document},alert:function(e,c,b){var d=Array.link(arguments,{title:String.type,message:String.type,options:Object.type});var a=[new Element("h3",{html:$pick(d.title,"")})];if(d.message){a.push(new Element("p",{html:d.message}))}return this.inject(a,d.options)},inject:function(a,i){if(!this.body){this.render()}i=i||{};var c=[-this.options.offset,0];var g=this.items.getLast();if(g){c[0]=g.retrieve("roar:offset");c[1]=c[0]+g.offsetHeight+this.options.offset}var f={opacity:1};f[this.align.y]=c;var h=new Element("div",{"class":this.options.className,opacity:0}).adopt(new Element("div",{"class":"roar-bg",opacity:0.7}),a);h.setStyle(this.align.x,0).store("roar:offset",c[1]).set("morph",$merge({unit:"px",link:"cancel",onStart:Chain.prototype.clearChain,transition:Fx.Transitions.Back.easeOut},this.options.itemFx));var d=this.remove.create({bind:this,arguments:[h],delay:10});this.items.push(h.addEvent("click",d));if(this.options.duration){var e=false;var b=(function(){b=null;if(!e){d()}}).delay(this.options.duration);h.addEvents({mouseover:function(){e=true},mouseout:function(){e=false;if(!b){d()}}})}h.inject(this.body).morph(f);return this.fireEvent("onShow",[h,this.items.length])},remove:function(b){var a=this.items.indexOf(b);if(a==-1){return this}this.items.splice(a,1);b.removeEvents();var c={opacity:0};c[this.align.y]=b.getStyle(this.align.y).toInt()-b.offsetHeight-this.options.offset;b.morph(c).get("morph").chain(b.destroy.bind(b));return this.fireEvent("onHide",[b,this.items.length]).callChain(b)},empty:function(){while(this.items.length){this.remove(this.items[0])}return this},render:function(){this.position=this.options.position;if($type(this.position)=="string"){var a={x:"center",y:"center"};this.align={x:"left",y:"top"};if((/left|west/i).test(this.position)){a.x="left"}else{if((/right|east/i).test(this.position)){this.align.x=a.x="right"}}if((/upper|top|north/i).test(this.position)){a.y="top"}else{if((/bottom|lower|south/i).test(this.position)){this.align.y=a.y="bottom"}}this.position=a}this.body=new Element("div",{"class":"roar-body"}).inject(document.body);if(Browser.Engine.trident4){this.body.addClass("roar-body-ugly")}this.moveTo=this.body.setStyles.bind(this.body);this.reposition();if(this.options.bodyFx){var c=new Fx.Morph(this.body,$merge({unit:"px",chain:"cancel",transition:Fx.Transitions.Circ.easeOut},this.options.bodyFx));this.moveTo=c.start.bind(c)}var b=this.reposition.bind(this);window.addEvents({scroll:b,resize:b});this.fireEvent("onRender",this.body)},reposition:function(){var c=document.getCoordinates(),b=document.getScroll(),d=this.options.margin;c.left+=b.x;c.right+=b.x;c.top+=b.y;c.bottom+=b.y;var a=($type(this.container)=="element")?this.container.getCoordinates():c;this.moveTo({left:(this.position.x=="right")?(Math.min(a.right,c.right)-d.x):(Math.max(a.left,c.left)+d.x),top:(this.position.y=="bottom")?(Math.min(a.bottom,c.bottom)-d.y):(Math.max(a.top,c.top)+d.y)})}});