var ToolTip = Class.create(); /* Usage var myToolTip = new ToolTip({followMouse:false}); toolTip.show("This is the text", e); e is a mouseevent */ ToolTip.prototype = { initialize: function (options) { this.options = Object.extend({ offsetx: 12, offsety: 8, toolTipId: "tooltip", toolTipContentClass: "tooltipcontent", followMouse: true }, options || {}); this.ie5 = (document.getElementById && document.all); this.ns6 = (document.getElementById && !document.all); this.isapple = (navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1 ? 1 : 0); }, _createTooltip: function(id) { if(document.createElement) { var el = document.createElement('div'); el.id = id; with(el.style) { display = 'none'; position = 'absolute'; } el.innerHTML = ' '; document.body.appendChild(el); } }, _getMousePosition: function(e) { var iebody=(document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : document.body; e.pagex = (this.isapple == 1 ? 0:(this.ie5)?iebody.scrollLeft:window.pageXOffset); e.pagey = (this.isapple == 1 ? 0:(this.ie5)?iebody.scrollTop:window.pageYOffset); e.mousex = (this.ie5)?event.x:(this.ns6)?clientX = e.clientX:false; e.mousey = (this.ie5)?event.y:(this.ns6)?clientY = e.clientY:false; return e; }, _updateToolTipPosition: function(e) { e = this._getMousePosition(e); var tooltip = document.getElementById(this.options.toolTipId); tooltip.style.position = "absolute"; tooltip.style.left = (e.mousex+e.pagex+this.options.offsetx) + 'px'; tooltip.style.top = (e.mousey+e.pagey+this.options.offsety) + 'px'; }, show: function(value, e) { if(!document.getElementById(this.options.toolTipId)) _createTooltip(this.options.toolTipId); var tooltip = document.getElementById(this.options.toolTipId); var contentElement = getElementsByClassName(tooltip, this.options.toolTipContentClass)[0]; if (value != null) { if (!contentElement) { contentElement = document.createElement("span"); contentElement.setAttribute("className", this.options.toolTipContentClass); tooltip.appendChild(contentElement); } else { removeAllChildren(contentElement); } if (typeof(value) == "string") { contentElement.appendChild(document.createTextNode(value)); } else { contentElement.appendChild(value); } } tooltip.style.display = 'block'; if (this.options.followMouse) document.onmousemove = this._updateToolTipPosition.bind(this); else if (e != null) this._updateToolTipPosition(e); }, hide: function() { document.getElementById(this.options.toolTipId).style.display = 'none'; } }