var MooTooltips=new Class({Implements:[Options],options:{container:null,hovered:null,extra:null,ToolTipClass:"ToolTips",toolTipPosition:-1,showDelay:500,sticky:false,fromTop:0,fromLeft:0,duration:100,fadeDistance:20},initialize:function(a){this.setOptions(a||null);if(!this.options.hovered&&!this.options.extra){return}if(this.options.hovered){this.elements=$(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){$(c.id).set("rel",JSON.encode(c));this.elements.include($(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:$(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);$(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("mouseover",f);if(b.sticky||this.options.sticky){e.close.addEvent("click",this.hide.pass(e.container).bind(this))}d.addEvent("mouseleave",a.pass(e.container))},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?$(d.target):c;var a=g.getCoordinates();var f=h.getCoordinates();this.fromTop=0;if(d.position==-1){this.fromTop=a.top-this.options.fromTop-f.height}else{this.fromTop=a.top+this.options.fromTop+a.height}var b=this.fromTop+(d.position||this.options.toolTipPosition)*this.options.fadeDistance;h.setStyles({top:b,left:a.left+this.options.fromLeft,"z-index":"1"});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");a.morph({opacity:0,top:b.leave});b.visible=0},show:function(){this.currentElement.setStyles({display:"block",opacity:0,"z-index":1});this.currentElement.morph({opacity:1,top:this.fromTop});this.setVisible()},setVisible:function(){var a=this.currentElement.retrieve("properties");a.visible=1},createContainer:function(d){var a=new Element("div").set({"class":this.options.ToolTipClass,styles:{position:"absolute",top:0,left:0,opacity:0,"z-index":"1"},morph:{duration:this.options.duration,link:"cancel",transition:Fx.Transitions.Sine.easeOut}});var f=new Element("div",{"class":"dockBottomHeader"});if(d){var c=new Element("div",{"class":"sticky_close"}).injectInside(f)}var b=new Element("div",{"class":"message"});var e=new Element("div",{"class":"dockBottomFooter"});a.adopt(f,b,e);return{container:a,header:f,message:b,footer:e,close:c||null}}});
