var MooTooltips=new Class({Implements:[Options],options:{container:null,hovered:null,extra:null,ToolTipClass:"ToolTips",toolTipPosition:1,showDelay:0,sticky:false,fromTop:0,fromLeft:0,duration:0,fadeDistance:0},initialize:function(a){this.setOptions(a||null);if(!this.options.hovered&&!this.options.extra){return}if(this.options.hovered){this.elements=document.id(this.options.container||document.body).getElements(this.options.hovered)}if(!$defined(this.elements)){this.elements=new Array()}var b=new Hash(this.options.extra);b.each(function(c){document.id(c.id).set("rel",JSON.encode(c));this.elements.include(document.id(c.id))},this);this.currentElement=null;this.attach()},attach:function(){this.elements.each(function(d,c){var b=new Hash(JSON.decode(d.getProperty("rel")));b.include("visible",0);var e=this.createContainer(b.sticky||this.options.sticky);if(b.content){e.message.set({html:document.id(b.content).get("html")})}else{if(b.text){e.message.set({html:b.text})}else{if(b.ajax){e.message.set({html:b.ajax_message||"Loading... please wait."});new Element("div",{"class":"loading"}).injectInside(e.message)}}}if(!b.position){b.position=this.options.toolTipPosition}if(b.position==-1){e.header.set({"class":"dockTopHeader"});e.footer.set({"class":"dockTopFooter"})}e.container.store("properties",b);d.store("tip",e.container);if($defined(this.options.placeToInsert)){document.id(this.options.placeToInsert).adopt(e.container)}else{document.id(document.body).adopt(e.container)}d.removeProperties("title","rel");var f=this.enter.bindWithEvent(this,d);var a=this.leave.bindWithEvent(this,d);d.addEvent("click",function(g){g.stop()});d.addEvent("click",f);if(b.sticky||this.options.sticky){e.close.addEvent("click",this.hide.pass(e.container).bind(this))}},this)},enter:function(e,c){var h=c.retrieve("tip");var d=h.retrieve("properties");if(d.visible==1){return}if(d.ajax&&!d.loaded){new Request.HTML({url:d.ajax,update:h.getElement(".message"),onFailure:function(){d.set("loaded",0)}}).get();d.set("loaded",1)}var g=d.target?document.id(d.target):c;var a=g.getCoordinates();var f=h.getCoordinates();this.fromTop=0;if(d.position==-1){this.fromTop=a.top-50}else{this.fromTop=a.top+this.options.fromTop+a.height}var b=this.options.fromTop;if(!$defined(this.options.fromRight)){h.setStyles({top:b,left:"50%","margin-left":-160,"z-index":"110000"})}else{h.setStyles({top:b,right:this.options.fromRight,"z-index":"110000"})}d.set("leave",b);this.currentElement=h;this.timer=$clear(this.timer);this.timer=this.show.delay(this.options.showDelay,this)},leave:function(a){var b=a.retrieve("properties");if((b.sticky||this.options.sticky)&&b.visible){return}this.hide(a)},hide:function(a){this.timer=$clear(this.timer);var b=a.retrieve("properties");b.visible=0;a.setStyle("display","none")},show:function(){this.currentElement.setStyles({display:"block",opacity:1,"z-index":100000});this.setVisible()},setVisible:function(){var a=this.currentElement.retrieve("properties");a.visible=1},createContainer:function(e){var a=new Element("div").set({"class":this.options.ToolTipClass,styles:{position:"absolute",top:0,opacity:0,"z-index":"100000"},morph:{duration:this.options.duration,link:"cancel",transition:Fx.Transitions.Sine.easeOut}});var g=new Element("div",{"class":"dockBottomHeader"});var d=new Element("div",{"class":"sticky_close"});var c=new Element("div",{"class":"right_bubble"});var b=new Element("div",{"class":"message"});var f=new Element("div",{"class":"dockBottomFooter"});a.adopt(d,c,g,b,f);return{container:a,header:g,message:b,footer:f,close:d||null}}});