/* ---------- Configurable Section ---------- */

// Tool Tip Disappear Delay (in ms)
var disappeardelay = 200;
// Vertical Offset of Tool Tip from Anchor Link
var verticaloffset = -425;
// Boolean Value, Arrow Enabled
var enablearrowhead = 1;
// Path to Arrow Images
var arrowheadimg = ["arrowdown.gif", "arrowup.gif"];
// Height of Arrow Image
var arrowheadheight = 11;

/* ---------- End Configurable Section ---------- */

var ie = document.all;
var ns6 = document.getElementById&&!document.all;
verticaloffset = (enablearrowhead)? verticaloffset+arrowheadheight : verticaloffset;

function getposOffset(what, offsettype) {
	var totaloffset = (offsettype == "left")? what.offsetLeft : what.offsetTop;
	var parentEl = what.offsetParent;
	while (parentEl!=null) {
		totaloffset = (offsettype == "left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		parentEl = parentEl.offsetParent;
	}
	return totaloffset;
}

function showhide(obj, e) {
	dropmenuobj.style.left = dropmenuobj.style.top = "-50px"; /* -500px */
	if (e.type == "mouseover") {
		obj.visibility = "visible";
	}
}

function iecompattest() {
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function clearbrowseredge(obj, whichedge) {
	if (whichedge == "rightedge") {
		edgeoffsetx = 0;
		var windowedge = ie && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15;
		dropmenuobj.contentmeasure = dropmenuobj.offsetWidth;
		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure) {
			edgeoffsetx = dropmenuobj.contentmeasure-obj.offsetWidth;
		}
		return edgeoffsetx;
	} else {
		edgeoffsety = 0;
		var topedge = ie && !window.opera? iecompattest().scrollTop : window.pageYOffset;
		var windowedge = ie && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18;
		dropmenuobj.contentmeasure = dropmenuobj.offsetHeight;
		if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure) {
			edgeoffsety = dropmenuobj.contentmeasure+obj.offsetHeight+(verticaloffset*2);
		}
		return edgeoffsety;
	}
}

function displayballoontip(obj, e) {
	// Main Ballooon Tool Tip Function
	if (window.event) {
		event.cancelBubble = true;
	}
	else if (e.stopPropagation) {
		e.stopPropagation()
	}
	if (typeof dropmenuobj != "undefined") {
		// Hide Previous Tool Tip
		dropmenuobj.style.visibility = "hidden";
	}
	clearhidemenu();
	//obj.onmouseout = delayhidemenu;
	dropmenuobj = document.getElementById(obj.getAttribute("rel"));
	showhide(dropmenuobj.style, e);
	dropmenuobj.x = getposOffset(obj, "left");
	dropmenuobj.y = getposOffset(obj, "top")+verticaloffset;
	dropmenuobj.style.left = dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px";
	dropmenuobj.style.top = dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px";
	if (enablearrowhead) {
		displaytiparrow();
	}
}

function displaytiparrow() {
	// Function to Display Optional Arrow Image
	tiparrow = document.getElementById("arrowhead");
	tiparrow.src = (edgeoffsety!=0)? arrowheadimg[0] : arrowheadimg[1];
	var ieshadowwidth = (dropmenuobj.filters && dropmenuobj.filters[0])? dropmenuobj.filters[0].Strength-1 : 0;
	// Modify "left" Value
	tiparrow.style.left = (edgeoffsetx != 0)? parseInt(dropmenuobj.style.left)+dropmenuobj.offsetWidth-tiparrow.offsetWidth-10+"px" : parseInt(dropmenuobj.style.left)+5+"px";
	// Modify "top" Value
	tiparrow.style.top = (edgeoffsety != 0)? parseInt(dropmenuobj.style.top)+dropmenuobj.offsetHeight-tiparrow.offsetHeight-ieshadowwidth+arrowheadheight+"px" : parseInt(dropmenuobj.style.top)-arrowheadheight+"px";
	tiparrow.style.visibility = "visible";
}

function delayhidemenu() {
	delayhide = setTimeout("dropmenuobj.style.visibility='hidden'; dropmenuobj.style.left=0; if (enablearrowhead) tiparrow.style.visibility='hidden'",disappeardelay);
}

function clearhidemenu() {
	if (typeof delayhide != "undefined") {
		clearTimeout(delayhide);
	}
}

function reltoelement(linkobj) {
	// Tests if a Link has "rel" Defined
	var relvalue = linkobj.getAttribute("rel");
	return (relvalue != null && relvalue != "" && document.getElementById(relvalue) != null && document.getElementById(relvalue).className == "balloonstyle")? true : false;
}

function initalizetooltip() {
	var all_links = document.getElementsByTagName("a");
	if (enablearrowhead) {
		tiparrow = document.createElement("img");
		tiparrow.setAttribute("src", arrowheadimg[0]);
		tiparrow.setAttribute("id", "arrowhead");
		document.body.appendChild(tiparrow);
	}
	for (var i=0; i<all_links.length; i++) {
		if (reltoelement(all_links[i])) {
			// If Link has "rel" Defined
			all_links[i].onmouseover = function(e) {
				var evtobj = window.event? window.event : e;
				displayballoontip(this, evtobj);
			}
			all_links[i].onmouseout = delayhidemenu;
		}
	}
}

if (window.addEventListener) {
	window.addEventListener("load", initalizetooltip, false);
}
else if (window.attachEvent) {
	window.attachEvent("onload", initalizetooltip);
}
else if (document.getElementById) {
	window.onload = initalizetooltip;
}