


// avoid error of passing event object from link in older browsers
if (!document.getElementById && !document.all && !document.layers)
	event = "";

function hideTip() {} // avoid errors until loaded	

var tooltip;
function doTooltip(evt,txt) {
	if (!tooltip) return;
	var cntnt = wrapTip(txt);
	goTooltip(evt,cntnt);
}

// wrap tip content for formatting
function wrapTip(txt) {
	var cntnt = "";
	if (document.layers) {
		cntnt = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + tipBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td><div style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + tipFontColor + ';">' + txt  + '</div></td></tr></table></td></tr></table>';
	} else cntnt = txt;
	return cntnt;
}

// settings for tooltip 

// Do you want tooltip to move when mouse moves over link?
var tipFollowMouse = true;	


var tipWidth = 240;	// width of tooltip in pixels

// how far from mouse to show tooltip
var tipOffX	= 8;	// horizontal offset
var tipOffY	= 12; // vertical offset

var tipFontFamily = "Verdana, arial, helvetica, sans-serif";
var tipFontSize	= "11px";	// string with pixels or points (px or pt)
// tooltip content line-height
var tipLineHeight	= 1.2;	// number	(recommend 1 to 1.3)
var tipFontColor = "#000000";
var tipBgColor = "#d6e4fc";	// tooltip background color
// background image for tooltip (leave empty string if no bg image)
var tipBgImg = "";	
// "breathing room" around tooltip content
var tipPadding = 4;	// integer (pixel value)

// leave a color in here even if you don't want a border
var tipBorderColor = "#000080"; 

// if you don't want a border, set tipBorderWidth to 0
var tipBorderWidth = 1; // integer (pixel value)

// if you don't want a border, set tipBorderStyle to "none"
// options for border style: "none", "solid", "ridge", "outset",
// "inset", "groove", "double", "dashed"
// (they won't look the same in all browsers though!)
var tipBorderStyle = "groove"; 




// place your images in this array
var imgAr = new Array(
	//"images/sm-duck.gif"
);

if (document.images) {
	var imgs = new Array();
	for (var i=0; i<imgAr.length; i++) {
  	imgs[i] = new Image(); 
		imgs[i].src = imgAr[i];
  }
}

// variables for tooltip content 
// name them whatever you want, add as many as you need
var tip1 = "An example link for the tooltip using plain text.";
var tip2 = '<img src="images/sm-duck.gif" width="90" height="44" alt="" border="0"><div class="tp1">Images and text can go together in a tooltip.</div>';
var tip3 = 'A link to Dynamic Web Coding would be appreciated!';
	


/*************************************************************************

*************************************************************************/



var win_width, win_height, vert_scroll, hor_scroll;
var tip_t1, tip_t2;	// for setTimeouts
var mouseX, mouseY;

window.onload = initTip;
window.onresize = to_do_onresize;	

var origWidth, origHeight;
if (document.layers) {
  origWidth = window.innerWidth;
  origHeight = window.innerHeight;
}
// onresize
function to_do_onresize() {
	if (document.layers) {
	 if (window.innerWidth != origWidth || window.innerHeight != origHeight)
	    window.location.reload();
	} else {
		win_width = getWinWidth();
		win_height = getWinHeight();
	}
}

function initTip() {
	tooltip = new dynObj('tipDiv');
	if (!tooltip) return;
	if (!document.layers && typeof tooltip.doc.innerHTML == "undefined"){
		tooltip = null;	// for opera
		return; 
	}
	if (tooltip.el.style) {	// ns4 would lose all this on rewrites
		tooltip.css.width = tipWidth+"px";
		tooltip.css.fontFamily = tipFontFamily;
		tooltip.css.fontSize = tipFontSize;
		tooltip.css.lineHeight = tipLineHeight;
		tooltip.css.color = tipFontColor;
		tooltip.css.backgroundColor = tipBgColor;
		tooltip.css.borderColor = tipBorderColor;
		tooltip.css.borderWidth = tipBorderWidth+"px";
		tooltip.css.padding = tipPadding+"px";
		tooltip.css.borderStyle = tipBorderStyle;
		if (tipBgImg) tooltip.css.backgroundImage = "url("+tipBgImg+")";
	}
	// used in calculating tip position
	win_width = getWinWidth();
	win_height = getWinHeight();
}

function goTooltip(evt,cntnt) {
	if (tip_t1) clearTimeout(tip_t1);	
	if (tip_t2) clearTimeout(tip_t2); 
	// set up mousemove 
	if (tipFollowMouse) {
		if (document.addEventListener) {
			document.addEventListener("mousemove",trackMouse,true);
		} else if (document.attachEvent) {
			document.attachEvent("onmousemove",trackMouse);
		} else {
			if (document.layers && document.captureEvents) 
				document.captureEvents(Event.MOUSEMOVE);
			document.onmousemove = trackMouse;
		}
	}
	tooltip.writeLyr(cntnt);	// write tooltip content to tipDiv
	// to get document area in view, check scroll amounts
	vert_scroll = getScrollY();
	hor_scroll = getScrollX();
	// get coordinates of mouseover event
	evt = (window.event)? window.event: evt;
	if (evt) {
		mouseX = getMouseX(evt);
		mouseY = getMouseY(evt);
	}
	// get tooltip width and height, for calculating position
	// and yes style.width was set, but browsers differ ...
	tooltip.width = getWidth(tooltip.el);	
	tooltip.height = getHeight(tooltip.el);
	// again here, delay needed by some browsers
	if (!document.layers)
		setTimeout("tooltip.height=getHeight('','tipDiv')",100);
	// position the tooltip, delay for getHeight
	setTimeout("positionTip()",120);	
	tip_t1=setTimeout(tooltip.obj+".show()",200);	// show tooltip
}

// check coordinates and position tooltip
function positionTip() {
	var x, y;
	tooltip.height = getHeight(tooltip.el); // important here if images not preloaded
	if ((mouseX + tipOffX + tooltip.width) > win_width + hor_scroll) 
		x = mouseX - (tooltip.width + tipOffX);
	else x = mouseX + tipOffX;
	
	if ((mouseY + tipOffY + tooltip.height) > win_height + vert_scroll) 
		y = (mouseY - (tooltip.height + tipOffY) > vert_scroll)?  mouseY - (tooltip.height + tipOffY): win_height + vert_scroll - (tooltip.height + tipOffY);
	else y = mouseY + tipOffY;
	tooltip.shiftTo(x,y);
}

function hideTip() {
	if (!tooltip) return;
	tip_t2=setTimeout(tooltip.obj+".hide()",200);
	// release mousemove
	if (tipFollowMouse) {
		if (document.removeEventListener) {
			document.removeEventListener("mousemove",trackMouse,true);
		} else if (document.detachEvent) {
			 document.detachEvent("onmousemove",trackMouse);
		} else {
			if (document.layers && document.releaseEvents)
				document.releaseEvents(Event.MOUSEMOVE);
			document.onmousemove = null;
		}
	}
}

// used with tipFollowMouse
function trackMouse(evt) {
	evt = (window.event)? window.event: evt;
	if (evt) {
		mouseX = getMouseX(evt);
		mouseY = getMouseY(evt);
	}
	positionTip();	
}

// functions to get page coordinates of mouse event
function getMouseX(evt) {
	return (evt.pageX)? evt.pageX: evt.clientX + getScrollX();
}

function getMouseY(evt) {
	return (evt.pageY)? evt.pageY: evt.clientY + getScrollY();
}

