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)})}});