/*************************************************************************	dw_tooltip_rac.js (version date April 2004)		This js file combines the three files dw_event.js, dw_viewport.js, 	and dw_tooltip.js in the original distribution package.  As required, the	notices from the original package are retained in the code as is!**************************************************************************//*************************************************************************    dw_event.js (version date Feb 2004)            This code is from Dynamic Web Coding at http://www.dyn-web.com/    See Terms of Use at http://www.dyn-web.com/bus/terms.html    regarding conditions under which you may use this code.    This notice must be retained in the code as is!*************************************************************************/var dw_event = {    add: function(obj, etype, fp, cap) {    cap = cap || false;    if (obj.addEventListener) obj.addEventListener(etype, fp, cap);    else if (obj.attachEvent) obj.attachEvent("on" + etype, fp);  },   remove: function(obj, etype, fp, cap) {    cap = cap || false;    if (obj.removeEventListener) obj.removeEventListener(etype, fp, cap);    else if (obj.detachEvent) obj.detachEvent("on" + etype, fp);  },   DOMit: function(e) {     e = e? e: window.event;    e.tgt = e.srcElement? e.srcElement: e.target;        if (!e.preventDefault) e.preventDefault = function () { return false; }    if (!e.stopPropagation) e.stopPropagation = function () { if (window.event) window.event.cancelBubble = true; }            return e;  }  }/*************************************************************************  dw_viewport.js  version date Nov 2003    This code is from Dynamic Web Coding at http://www.dyn-web.com/  Copyright 2003 by Sharon Paine   See Terms of Use at http://www.dyn-web.com/bus/terms.html  regarding conditions under which you may use this code.  This notice must be retained in the code as is!*************************************************************************/    viewport = {  getWinWidth: function () {    this.width = 0;    if (window.innerWidth) this.width = window.innerWidth - 18;    else if (document.documentElement && document.documentElement.clientWidth)   		this.width = document.documentElement.clientWidth;    else if (document.body && document.body.clientWidth)   		this.width = document.body.clientWidth;  },    getWinHeight: function () {    this.height = 0;    if (window.innerHeight) this.height = window.innerHeight - 18;  	else if (document.documentElement && document.documentElement.clientHeight)   		this.height = document.documentElement.clientHeight;  	else if (document.body && document.body.clientHeight)   		this.height = document.body.clientHeight;  },    getScrollX: function () {    this.scrollX = 0;  	if (typeof window.pageXOffset == "number") this.scrollX = window.pageXOffset;  	else if (document.documentElement && document.documentElement.scrollLeft)  		this.scrollX = document.documentElement.scrollLeft;  	else if (document.body && document.body.scrollLeft)   		this.scrollX = document.body.scrollLeft;   	else if (window.scrollX) this.scrollX = window.scrollX;  },    getScrollY: function () {    this.scrollY = 0;        if (typeof window.pageYOffset == "number") this.scrollY = window.pageYOffset;    else if (document.documentElement && document.documentElement.scrollTop)  		this.scrollY = document.documentElement.scrollTop;  	else if (document.body && document.body.scrollTop)   		this.scrollY = document.body.scrollTop;   	else if (window.scrollY) this.scrollY = window.scrollY;  },    getAll: function () {    this.getWinWidth(); this.getWinHeight();    this.getScrollX();  this.getScrollY();  }  }/*************************************************************************    dw_tooltip.js  version date: Nov 2003  requires: dw_event.js and dw_viewport.js    This code is from Dynamic Web Coding at http://www.dyn-web.com/  Copyright 2003 by Sharon Paine   See Terms of Use at http://www.dyn-web.com/bus/terms.html  regarding conditions under which you may use this code.  This notice must be retained in the code as is!*************************************************************************/var Tooltip = {  followMouse: true,  offX: 8,  offY: 15,    ready: false,  t1: null,  t2: null,  tipID: "tipDiv",  tip: null,    init: function() {    if ( document.createElement && document.body && typeof document.body.appendChild != "undefined" ) {      var el = document.createElement("DIV");      el.className = "tooltip";      el.id = this.tipID;      document.body.appendChild(el);      this.ready = true;    }  },    show: function(e, msg) {    if (this.t1) clearTimeout(this.t1);	  	if (this.t2) clearTimeout(this.t2);     this.tip = document.getElementById( this.tipID );  	// set up mousemove   	if (this.followMouse)       dw_event.add( document, "mousemove", this.trackMouse, true );    this.writeTip("");  // for mac ie    this.writeTip(msg);    viewport.getAll();    this.positionTip(e);  	this.t1 = setTimeout("document.getElementById('" + Tooltip.tipID + "').style.visibility = 'visible'",200);	    },        writeTip: function(msg) {      if ( this.tip && typeof this.tip.innerHTML != "undefined" ) this.tip.innerHTML = msg;    },        positionTip: function(e) {      var x = e.pageX? e.pageX: e.clientX + viewport.scrollX;      var y = e.pageY? e.pageY: e.clientY + viewport.scrollY;      if ( x + this.tip.offsetWidth + this.offX > viewport.width + viewport.scrollX )        x = x - this.tip.offsetWidth - this.offX;      else x = x + this.offX;          if ( y + this.tip.offsetHeight + this.offY > viewport.height + viewport.scrollY )        y = ( y - this.tip.offsetHeight - this.offY > viewport.scrollY )? y - this.tip.offsetHeight - this.offY : viewport.height + viewport.scrollY - this.tip.offsetHeight;      else y = y + this.offY;        this.tip.style.left = x + "px"; this.tip.style.top = y + "px";    },        hide: function() {      if (this.t1) clearTimeout(this.t1);	    	if (this.t2) clearTimeout(this.t2);       this.t2 = setTimeout("document.getElementById('" + this.tipID + "').style.visibility = 'hidden'",200);    	// release mousemove    	if (this.followMouse)     		dw_event.remove( document, "mousemove", this.trackMouse, true );      this.tip = null;    },        trackMouse: function(e) {    	e = dw_event.DOMit(e);     	Tooltip.positionTip(e);	    }}Tooltip.init();/*************************************************************************  This code is from Dynamic Web Coding at http://www.dyn-web.com/  Copyright 2003 by Sharon Paine   See Terms of Use at http://www.dyn-web.com/bus/terms.html  regarding conditions under which you may use this code.  This notice must be retained in the code as is!*************************************************************************/function initHoverTip() {  if ( document.getElementById && document.getElementById(Tooltip.tipID) ) {     Tooltip.followMouse = false;  // must be turned off for this version    var tip = document.getElementById(Tooltip.tipID)    tip.onmouseout = function(e) { Tooltip.tipOutCheck(e) }    tip.onmouseover = function() { Tooltip.clearTimer() }  }}Tooltip.tipOutCheck = function(e) {  e = dw_event.DOMit(e);  // is element moused into contained by tooltip? or tooltip itself?  var tooltip = document.getElementById(Tooltip.tipID);  var toEl = e.relatedTarget? e.relatedTarget: e.toElement;    if ( tooltip != toEl && !contained(toEl, tooltip) )       Tooltip.hide();}// returns true of oNode is contained by oCont (container)function contained(oNode, oCont) {  if (!oNode) return; // in case alt-tab away while hovering (prevent error)  while ( oNode.parentNode ) {    oNode = oNode.parentNode;    if ( oNode == oCont ) return true;  }  return false;}Tooltip.timerId = 0;Tooltip.clearTimer = function() {  if (Tooltip.timerId) clearTimeout(Tooltip.timerId);}initHoverTip();