var TipsX3=new Class({Implements:[Options,Events],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,loadingText:"Loading...",errTitle:"Oops..",errText:"There was a problem retrieving the tooltip.",elOver:"tOver"},initialize:function(b,a){this.setOptions(a);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);$$(b).each(this.build,this);if(this.options.initialize){this.options.initialize.call(this)}},build:function(b){b.myTitle=(b.href&&b.get("tag")=="a")?b.href.replace("http://",""):(b.rel||false);if(b.title){if(b.title.test("^DOM:","i")){b.title=$(b.title.split(":")[1].trim()).innerHTML}if(b.title.test("^AJAX:","i")){b.title=this.options.loadingText+"::"+b.title}var c=b.title.split("::");if(c.length>1){b.myTitle=c[0].trim();b.myText=c[1].trim()}else{b.myText=b.title}b.removeAttribute("title")}else{b.myText=false}if(b.myTitle&&b.myTitle.length>this.options.maxTitleChars){b.myTitle=b.myTitle.substr(0,this.options.maxTitleChars-1)+"&hellip;"}b.addEvent("mouseenter",function(d){this.start(b);if(!this.options.fixed){this.locate(d)}else{this.position(b)}b.addClass(this.options.elOver)}.bind(this));if(!this.options.fixed){b.addEvent("mousemove",this.locate.bindWithEvent(this))}var a=function(){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this);b.removeClass(this.options.elOver)}.bind(this);b.addEvent("mouseleave",a);b.addEvent("trash",a)},removeOver:function(a){a.removeClass(this.options.elOver)},start:function(a){this.wrapper.empty();if(a.myText&&a.myText.test("^AJAX:","i")){this.ajax=new Request({url:a.myText.replace(/AJAX:/i,""),onComplete:function(b,c){a.title=b;this.build(a);this.start(a)}.bind(this),onFailure:function(){a.title=this.options.errTitle+"::"+this.options.errText;this.build(a);this.start(a)}.bind(this),method:"get"}).send();a.myText='<div class="'+this.options.className+'-loading">&nbsp;</div>'}if(a.myTitle){this.title=new Element("span").inject(new Element("div",{"class":this.options.className+"-title"}).inject(this.wrapper)).set("html",a.myTitle)}if(a.myText){this.text=new Element("span").inject(new Element("div",{"class":this.options.className+"-text"}).inject(this.wrapper)).set("html",a.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(b){var d={x:window.getWidth(),y:window.getHeight()};var a={x:window.getScrollLeft(),y:window.getScrollTop()};var c={x:this.toolTip.offsetWidth,y:this.toolTip.offsetHeight};var g={x:"left",y:"top"};for(var e in g){var f=b.page[e]+this.options.offsets[e];if((f+c[e]-a[e])>d[e]){f=b.page[e]-this.options.offsets[e]-c[e]}this.toolTip.setStyle(g[e],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])}});