var Tooltip=Class.create();Tooltip.prototype={initialize:function(element,tool_tip_div,url){var options=Object.extend({default_css:false,margin:"0px",padding:"5px",backgroundColor:"#d6d6fc",delta_x:5,delta_y:5,zindex:10000},arguments[1]||{});this.element=$(element);this.tool_tip_div_inner=$(tool_tip_div);if(this.tool_tip_div_inner.up().id==this.tool_tip_div_inner.id+'out'){this.tool_tip_div=this.tool_tip_div_inner.up();}else{this.tool_tip_div=$(tool_tip_div);}
this.url=url;this.options=options;this.tool_tip_div.hide();if(this.tool_tip_div.up().tagName!="BODY"&&!this.willMove){this.willMove=true;Event.observe(window,'load',this.la_de_da_IE.bindAsEventListener(this));}
this.eventMouseOver=this.showTooltip.bindAsEventListener(this);this.eventMouseOut=this.hideTooltipDelayed.bindAsEventListener(this);this.eventMouseMove=this.updateTooltip.bindAsEventListener(this);this.registerEvents();},la_de_da_IE:function(){$(this.tool_tip_div.parentNode).removeChild(this.tool_tip_div);$(document.body).appendChild(this.tool_tip_div);},destroy:function(){Event.stopObserving(this.element,"mouseover",this.eventMouseOver);Event.stopObserving(this.element,"mouseout",this.eventMouseOut);Event.stopObserving(this.element,"mousemove",this.eventMouseMove);},registerEvents:function(){Event.observe(this.element,"mouseover",this.eventMouseOver);Event.observe(this.element,"mouseout",this.eventMouseOut);Event.observe(this.element,"mousemove",this.eventMouseMove);},showTooltip:function(event){Event.stop(event);if(this.timeout_id!=null)window.clearTimeout(this.timeout_id);this.timeout_id=null;if(!Object.isElement(this.url)){new Ajax.Updater(this.tool_tip_div_inner,this.url,{evalScripts:true,method:'get',onComplete:this.showTooltipAfterAJAX(event)});}else{this.tool_tip_div_inner.update(this.url.innerHTML);this.showTooltipAfterAJAX(event);}},updateTooltip:function(event){var mouse_x=Event.pointerX(event);var mouse_y=Event.pointerY(event);var dimensions=Element.getDimensions(this.tool_tip_div);var element_width=dimensions.width;var element_height=dimensions.height;if((element_width+mouse_x)>=(this.getWindowWidth()-this.options.delta_x)){mouse_x=mouse_x-element_width;mouse_x=mouse_x-this.options.delta_x;}else{mouse_x=mouse_x+this.options.delta_x;}
if((element_height+mouse_y)>=(this.getWindowHeight()-this.options.delta_y)){mouse_y=mouse_y-element_height;mouse_y=mouse_y-this.options.delta_y;}else{mouse_y=mouse_y+this.options.delta_y;}
this.setStyles(mouse_x,mouse_y);},showTooltipAfterAJAX:function(event){this.updateTooltip(event);if(this.tool_tip_div.currenteffect&&this.tool_tip_div.currenteffect.state!='finished')this.tool_tip_div.currenteffect.cancel();if(this.tool_tip_div.timeout_id&&this.tool_tip_div.timeout_id!=null)window.clearTimeout(this.tool_tip_div.timeout_id);this.tool_tip_div.currenteffect=new Effect.Appear(this.tool_tip_div,{duration:1.5,to:0.9});},setStyles:function(x,y){Element.setStyle(this.tool_tip_div,{position:'absolute',top:y+"px",left:x+"px"});this.tool_tip_div.style.zIndex=this.options.zindex;},hideTooltipDelayed:function(event){this.tool_tip_div.timeout_id=window.setTimeout(this.hideTooltip.bind(this),500);},hideTooltip:function(event){this.tool_tip_div.timeout_id=null;if(this.tool_tip_div.currenteffect&&this.tool_tip_div.currenteffect.state!='finished')this.tool_tip_div.currenteffect.cancel();this.tool_tip_div.currenteffect=new Effect.Fade(this.tool_tip_div,{duration:2.0});},getWindowHeight:function(){var innerHeight;if(navigator.appVersion.indexOf('MSIE')>0){innerHeight=document.body.clientHeight;}else{innerHeight=window.innerHeight;}
return innerHeight;},getWindowWidth:function(){var innerWidth;if(navigator.appVersion.indexOf('MSIE')>0){innerWidth=document.body.clientWidth;}else{innerWidth=window.innerWidth;}
return innerWidth;}}