var Detail=new Class({options:{onShow:function(a){a.setStyle('visibility','visible')},onHide:function(a){a.setStyle('visibility','hidden')},maxTitleChars:30,showDelay:100,hideDelay:100,className:'tool',offsets:{'x':16,'y':16},fixed:false},initialize:function(a,b){this.setOptions(b);this.toolTip=new Element('div',{'class':this.options.className+'-tip','styles':{'position':'absolute','top':'0','left':'0','visibility':'hidden'}}).inject(document.body);this.wrapper=new Element('div').inject(this.toolTip);$$(a).each(this.build,this);if(this.options.initialize)this.options.initialize.call(this)},build:function(b){b.$tmp.myText=b.getElement("p").innerHTML;b.addEvent('mouseenter',function(a){b.addClass("hover");this.start(b);if(!this.options.fixed)this.locate(a);else this.position(b)}.bind(this));if(!this.options.fixed)b.addEvent('mousemove',this.locate.bindWithEvent(this));var c=this.end.bind(this);b.addEvent('mouseleave',c);b.addEvent('mouseleave',function(){b.removeClass("hover")});b.addEvent('trash',c);b.getElement("p").setStyle("display","none")},start:function(a){this.wrapper.empty();if(a.$tmp.myText){this.text=new Element('span').inject(new Element('div',{'class':this.options.className+'-text'}).inject(this.wrapper)).setHTML(a.$tmp.myText)}$clear(this.timer);this.timer=this.show.delay(this.options.showDelay,this)},end:function(a){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this)},position:function(a){var b=a.getPosition();this.toolTip.setStyles({'left':b.x+this.options.offsets.x,'top':b.y+this.options.offsets.y})},locate:function(a){var b={'x':window.getWidth(),'y':window.getHeight()};var c={'x':window.getScrollLeft(),'y':window.getScrollTop()};var d={'x':this.toolTip.offsetWidth,'y':this.toolTip.offsetHeight};var e={'x':'left','y':'top'};for(var z in e){var f=a.page[z]+this.options.offsets[z];if((f+d[z]-c[z])>b[z])f=a.page[z]-this.options.offsets[z]-d[z];this.toolTip.setStyle(e[z],f)}},show:function(){if(this.options.timeout)this.timer=this.hide.delay(this.options.timeout,this);this.fireEvent('onShow',[this.toolTip])},hide:function(){this.fireEvent('onHide',[this.toolTip])}});Detail.implement(new Events,new Options);
