var isSticky			= true;
var offsetx				= -5;
var offsety				= 8;
var opacity				= 100;
var above				= true; //display above mouse pointer
var fadeshow  			= 100;//600
var fadehide			= 100;//600
var fadedelay			= 30; // animation interval
var delay				= 50; // tool tip delay 400
var padding				= 10;
var tipwidth			= 0;

var toolTipaElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
toolTipsContent,			// Inner tooltip text or HTML
toolTipscrlX = 0, toolTipscrlY = 0,
toolTipmusX, toolTipmusY,
toolTipover,
toolTipx, toolTipy, toolTipw, toolTiph; // Position, width and height of currently displayed tooltip

var toolTipaExt = new Array(),	// Array of extension objects
toolTipdb, toolTipop, toolTipie, toolTipie56, toolTipbBoxOld,	// Browser flags
toolTipbody,
toolTipflagOpa, 			// Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
toolTipmaxPosX, toolTipmaxPosY,
toolTipiState = 0,			// Tooltip active |= 1, shown |= 2, move with mouse |= 4
toolTipopa, 				// Currently applied opacity
toolTipbJmpVert,			// Tip above mouse (or ABOVE tip below mouse)
toolTipt2t, toolTipt2tDad,		// Tag converted to tip, and its parent element in the document
toolTipelDeHref,			// The tag from which Opera has removed the href attribute
// Timer
toolTiptShow = new Number(0), toolTiptHide = new Number(0), toolTiptDurt = new Number(0),
toolTiptFade = new Number(0), toolTiptWaitMov = new Number(0),
toolTipbWait = false,
toolTipu = "undefined";

var hasNotRun = "true";
function toolTipInit()
{
	if (hasNotRun=="true"){
	    if(!toolTipBrowser() || !toolTipMkMainDiv())
		    return;
	    toolTipOpaSupport();
	    toolTipAddEvtFnc(document, "mousemove", toolTipMove);
	    toolTipAddEvtFnc(window, "scroll",
		    function()
		    {
			    toolTipscrlX = toolTipGetScrollX();
			    toolTipscrlY = toolTipGetScrollY();
			    if(toolTipiState)
				    toolTipHideInit();
		    } );
	    toolTipAddEvtFnc(window, "unload", toolTipHide);
	    toolTipHide();
	    hasNotRun="false"
	}
}
function toolTip(content, wid, bool)
{
	if (hasNotRun=="true"){
	    toolTipInit();
	}
	if(!toolTipdb)
		return;
	if(toolTipiState)
		toolTipHide();
	toolTipt2t = null;
	tipwidth = wid;
	isSticky = bool;
	toolTipiState = 0x1 | 0x4;
	toolTipAdaptConfig1();
	toolTipsContent = content;
	toolTipExtCallFncs(0, "CreateContentString");
	toolTipMkTipSubDivs();
	toolTipFormatTip();
	toolTipbJmpVert = false;
	toolTipmaxPosX = toolTipGetClientW() + toolTipGetScrollX() - toolTipw - 1;
	toolTipmaxPosY = toolTipGetClientH() + toolTipGetScrollY() - toolTiph - 1;
	toolTipMove();
	toolTipShowInit();
}
function toolTipExtension()
{
	toolTipaExt[toolTipaExt.length] = this;
	return this;
}
function toolTipSetTipPos(x, y)
{
	var css = toolTipaElt[0].style;

	toolTipx = x;
	toolTipy = y;
	css.left = x + "px";
	css.top = y + "px";
	if(toolTipie56)
	{
		var ifrm = toolTipaElt[toolTipaElt.length - 1];
		if(ifrm)
		{
			ifrm.style.left = css.left;
			ifrm.style.top = css.top;
		}
	}
}
function toolTipHide()
{
	if(toolTipdb && toolTipiState)
	{
		if(toolTipiState & 0x2)
		{
			toolTipaElt[0].style.visibility = "hidden";
			toolTipExtCallFncs(0, "Hide");
		}
		toolTiptShow.EndTimer();
		toolTiptHide.EndTimer();
		toolTiptDurt.EndTimer();
		toolTiptFade.EndTimer();
		if(!toolTipop && !toolTipie)
		{
			toolTiptWaitMov.EndTimer();
			toolTipbWait = false;
		}
		toolTipAddRemOutFnc(false);
		toolTipExtCallFncs(0, "Kill");
		toolTipiState = 0;
		toolTipover = null;
		toolTipResetMainDiv();
		if(toolTipaElt[toolTipaElt.length - 1])
			toolTipaElt[toolTipaElt.length - 1].style.display = "none";
	}
}
function toolTipGetElt(id)
{
	return(document.getElementById ? document.getElementById(id)
			: document.all ? document.all[id]
			: null);
}
function toolTipGetDivH(el)
{
	return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
}
function toolTipGetScrollX()
{
	var w = window.pageXOffset ||
           document.body.scrollLeft ||
           document.documentElement.scrollLeft;
           
    return w ? w : 0;
	//return(window.pageXOffset || (toolTipdb ? (toolTipdb.scrollLeft || 0) : 0));
}
function toolTipGetScrollY()
{
	var h = window.pageYOffset ||
           document.body.scrollTop ||
           document.documentElement.scrollTop;
           
    return h ? h : 0;
	//return(window.pageYOffset || (toolTipdb ? (toolTipdb.scrollTop || 0) : 0));
}
function toolTipGetClientW()
{
	return(document.body && (typeof(document.body.clientWidth) != toolTipu) ? document.body.clientWidth
			: (typeof(window.innerWidth) != toolTipu) ? window.innerWidth
			: toolTipdb ? (toolTipdb.clientWidth || 0)
			: 0);
}
function toolTipGetClientH()
{
	// use this order for all browsers
	return(document.body && (typeof(document.body.clientHeight) != toolTipu) ? document.body.clientHeight
			: (typeof(window.innerHeight) != toolTipu) ? window.innerHeight
			: toolTipdb ? (toolTipdb.clientHeight || 0)
			: 0);
}
function toolTipGetEvtX(e)
{
	return (e ? ((typeof(e.pageX) != toolTipu) ? e.pageX : (e.clientX + toolTipGetScrollX())) : 0);
}
function toolTipGetEvtY(e)
{
	return (e ? ((typeof(e.pageY) != toolTipu) ? e.pageY : (e.clientY + toolTipGetScrollY())) : 0);
}
function toolTipAddEvtFnc(el, sEvt, PFnc)
{
	if(el)
	{
		if(el.addEventListener)
			el.addEventListener(sEvt, PFnc, false);
		else
			el.attachEvent("on" + sEvt, PFnc);
	}
}
function toolTipRemEvtFnc(el, sEvt, PFnc)
{
	if(el)
	{
		if(el.removeEventListener)
			el.removeEventListener(sEvt, PFnc, false);
		else
			el.detachEvent("on" + sEvt, PFnc);
	}
}
function toolTipBrowser()
{
	var n, nv, n6, w3c;

	n = navigator.userAgent.toLowerCase(),
	nv = navigator.appVersion;
	toolTipop = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != toolTipu);
	toolTipie = n.indexOf("msie") != -1 && document.all && !toolTipop;
	if(toolTipie)
	{
		var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
		toolTipdb = !ieOld ? document.documentElement : (document.body || null);
		if(toolTipdb)
			toolTipie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
					&& typeof document.body.style.maxHeight == toolTipu;
	}
	else
	{
		toolTipdb = document.documentElement || document.body ||
				(document.getElementsByTagName ? document.getElementsByTagName("body")[0]
				: null);
		if(!toolTipop)
		{
			n6 = document.defaultView && typeof document.defaultView.getComputedStyle != toolTipu;
			w3c = !n6 && document.getElementById;
		}
	}
	toolTipbody = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
				: (document.body || null));
	if(toolTipie || n6 || toolTipop || w3c)
	{
		if(toolTipbody && toolTipdb)
		{
			if(document.attachEvent || document.addEventListener)
				return true;
		}
	}
	toolTipdb = null;
	return false;
}
function toolTipMkMainDiv()
{
	// Create the tooltip DIV
	if(toolTipbody.insertAdjacentHTML)
		toolTipbody.insertAdjacentHTML("afterBegin", toolTipMkMainDivHtm());
	else if(typeof toolTipbody.innerHTML != toolTipu && document.createElement && toolTipbody.appendChild)
		toolTipbody.appendChild(toolTipMkMainDivDom());
	// FireFox Alzheimer bug
	if(window.toolTipGetMainDivRefs && toolTipGetMainDivRefs())
		return true;
	toolTipdb = null;
	return false;
}
function toolTipMkMainDivHtm()
{
	return('<div id="ttDiv"></div>' +
			(toolTipie56 ? ('<iframe id="ttFrame" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
			: ''));
}
function toolTipMkMainDivDom()
{
	var el = document.createElement("div");
	if(el)
		el.id = "ttDiv";
	return el;
}
function toolTipGetMainDivRefs()
{
	toolTipaElt[0] = toolTipGetElt("ttDiv");
	if(toolTipie56 && toolTipaElt[0])
	{
		toolTipaElt[toolTipaElt.length - 1] = toolTipGetElt("ttFrame");
		if(!toolTipaElt[toolTipaElt.length - 1])
			toolTipaElt[0] = null;
	}
	if(toolTipaElt[0])
	{
		var css = toolTipaElt[0].style;

		css.visibility = "hidden";
		css.position = "absolute";
		css.overflow = "hidden";
		return true;
	}
	return false;
}
function toolTipResetMainDiv()
{
	var w = (window.screen && screen.width) ? screen.width : 10000;

	toolTipSetTipPos(-w, 0);
	toolTipaElt[0].innerHTML = "";
	toolTipaElt[0].style.width = (w - 1) + "px";
}
function toolTipOpaSupport()
{
	var css = toolTipbody.style;

	toolTipflagOpa = (typeof(css.filter) != toolTipu) ? 1
				: (typeof(css.KhtmlOpacity) != toolTipu) ? 2
				: (typeof(css.KHTMLOpacity) != toolTipu) ? 3
				: (typeof(css.MozOpacity) != toolTipu) ? 4
				: (typeof(css.opacity) != toolTipu) ? 5
				: 0;
}

function toolTipHideSrcTags()
{
	if(!window.toolTipHideSrcTags || window.toolTipHideSrcTags.done)
		return;
	window.toolTipHideSrcTags.done = true;	
}
function toolTipHideSrcTag(sT2t)
{
	var id, el;
	id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
	el = toolTipGetElt(id);
	if(el)
	{		
			el.style.display = "none";
	}
	return true;
}
function toolTipAdaptConfig1()
{
	toolTipExtCallFncs(0, "LoadConfig");
	// Inherit unspecified title formattings from body
	
	if(opacity == 100 && typeof toolTipaElt[0].style.MozOpacity != toolTipu && !Array.every)
		opacity = 99;
	// Smartly shorten the delay for fade-in tooltips
	if(fadeshow && toolTipflagOpa && delay > 100)
		delay = Math.max(delay - fadeshow, 100);
}
function toolTipMkTipSubDivs()
{
	var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
	sTbTrTd = ' cellspacing=0 cellpadding=0 border=0 style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';

	toolTipaElt[0].innerHTML =
		(''
		+ '<div id="ttDiv4" style="position:relative;z-index:0;">'
		+ '<table' + sTbTrTd + 'id="ttDiv5" style="' + sCss + '">'
		+ toolTipsContent
		+ '</td></tr></tbody></table></div>'
		);
	toolTipGetSubDivRefs();
	toolTipExtCallFncs(0, "SubDivsCreated");
}
function toolTipGetSubDivRefs()
{
	var aId = new Array("ttDiv0", "ttDiv1", "ttDiv2", "ttDiv3", "ttDiv4", "ttDiv5", "ttDiv6", "ttDiv7");

	for(var i = aId.length; i; --i)
		toolTipaElt[i] = toolTipGetElt(aId[i - 1]);
}
function toolTipFormatTip()
{
	var css, w, iOffY, iOffSh;

	//--------- Title DIV ----------
	
		toolTipw = 0;
		iOffY = 0;
	

	//-------- Body DIV ------------
	css = toolTipaElt[5].style;
	css.top = iOffY + "px";
	css.padding = padding + "px";
	// TD inside body DIV
	css = toolTipaElt[6].style;
	css.background = "";
	if(tipwidth > 0)
		w = tipwidth + ((padding) << 1);
	if(w > toolTipw)
		toolTipw = w;

	
		iOffSh = 0;

	//-------- Container DIV -------
	toolTipSetTipOpa(fadeshow ? 0 : opacity);
	toolTipFixSize(iOffY, iOffSh);
}
// Fixate the size so it can't dynamically change while the tooltip is moving.
function toolTipFixSize(iOffY, iOffSh)
{
	var wIn, wOut, i;

	toolTipaElt[0].style.width = toolTipw + "px";
	toolTipaElt[0].style.pixelWidth = toolTipw;
	wOut = toolTipw;
	// Body
	wIn = wOut;
	if(!toolTipbBoxOld)
		wIn -= ((padding) << 1);
	toolTipaElt[5].style.width = wIn + "px";
	// Title
	if(toolTipaElt[1])
	{
		wIn = wOut - (padding << 1);
		if(!toolTipbBoxOld)
			wOut = wIn;
		toolTipaElt[1].style.width = wOut + "px";
		toolTipaElt[2].style.width = wIn + "px";
	}
	toolTiph = toolTipGetDivH(toolTipaElt[0]) + iOffY;
	// Right shadow
	if(toolTipaElt[8])
		toolTipaElt[8].style.height = (toolTiph - iOffSh) + "px";
	i = toolTipaElt.length - 1;
	if(toolTipaElt[i])
	{
		toolTipaElt[i].style.width = toolTipw + "px";
		toolTipaElt[i].style.height = toolTiph + "px";
	}
}
function toolTipDeAlt(el)
{
	var aKid;

	if(el.alt)
		el.alt = "";
	if(el.title)
		el.title = "";
	aKid = el.childNodes || el.children || null;
	if(aKid)
	{
		for(var i = aKid.length; i;)
			toolTipDeAlt(aKid[--i]);
	}
}
// This hack removes the annoying native tooltips over links in Opera
function toolTipOpDeHref(el)
{
	if(!toolTipop)
		return;
	if(toolTipelDeHref)
		toolTipOpReHref();
	while(el)
	{
		if(el.hasAttribute("href"))
		{
			el.t_href = el.getAttribute("href");
			el.t_stats = window.status;
			el.removeAttribute("href");
			el.style.cursor = "hand";
			toolTipAddEvtFnc(el, "mousedown", toolTipOpReHref);
			window.status = el.t_href;
			toolTipelDeHref = el;
			break;
		}
		el = el.parentElement;
	}
}
function toolTipShowInit()
{
	toolTiptShow.Timer("toolTipShow()", delay, true);
}
function toolTipOverInit(e)
{
	toolTipover = e.target || e.srcElement;
	toolTipDeAlt(toolTipover);
	toolTipOpDeHref(toolTipover);
	toolTipAddRemOutFnc(true);
}
function toolTipShow()
{
	var css = toolTipaElt[0].style;

	// Override the z-index of the topmost wz_dragdrop.js D&D item
	css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
	toolTipiState &= ~0x4;
	toolTipExtCallFncs(0, "Show")
	css.visibility = "visible";
	toolTipiState |= 0x2;
	if(fadeshow)
		toolTipFade(0, 0, opacity, Math.round(fadeshow / fadedelay));
	toolTipShowIfrm();
}
function toolTipShowIfrm()
{
	if(toolTipie56)
	{
		var ifrm = toolTipaElt[toolTipaElt.length - 1];
		if(ifrm)
		{
			var css = ifrm.style;
			css.zIndex = toolTipaElt[0].style.zIndex - 1;
			css.display = "block";
		}
	}
}
function toolTipMove(e)
{
	e = window.event || e;
	if(e)
	{
		toolTipmusX = toolTipGetEvtX(e);
		toolTipmusY = toolTipGetEvtY(e);
	}
	if(toolTipiState)
	{
		if(!toolTipover && e)
			toolTipOverInit(e);
		if(toolTipiState & 0x4)
		{
			// Protect some browsers against jam of mousemove events
			if(!toolTipop && !toolTipie)
			{
				if(toolTipbWait)
					return;
				toolTipbWait = true;
				toolTiptWaitMov.Timer("toolTipbWait = false;", 1, true);
			}
			if(!toolTipExtCallFncs(e, "MoveBefore"))
				toolTipSetTipPos(toolTipPosX(), toolTipPosY());
			toolTipExtCallFncs([toolTipmusX, toolTipmusY], "MoveAfter")
		}
	}
}
function toolTipPosX()
{
	var x;
    toolTipscrlX = toolTipGetScrollX();
	x = toolTipmusX;
	x += offsetx;
	// Prevent tip from extending past right/left clientarea boundary
	if(x > toolTipmaxPosX)
		x = toolTipmaxPosX;
	return((x < toolTipscrlX) ? toolTipscrlX : x);
}
function toolTipPosY()
{
	var y;
	toolTipscrlY = toolTipGetScrollY();
if(above && (!toolTipbJmpVert || toolTipCalcPosYAbove() >= toolTipscrlY + 16))
		y = toolTipDoPosYAbove();
	else if(!above && toolTipbJmpVert && toolTipCalcPosYBelow() > toolTipmaxPosY - 16)
		y = toolTipDoPosYAbove();
	else
		y = toolTipDoPosYBelow();
	if(y > toolTipmaxPosY)
		y = toolTipDoPosYAbove();
	if(y < toolTipscrlY)
		y = toolTipDoPosYBelow();
	return y;
}
function toolTipDoPosYBelow()
{
	toolTipbJmpVert = above;
	return toolTipCalcPosYBelow();
}
function toolTipDoPosYAbove()
{
	toolTipbJmpVert = !above;
	return toolTipCalcPosYAbove();
}
function toolTipCalcPosYBelow()
{
	return(toolTipmusY + offsety);
}
function toolTipCalcPosYAbove()
{
	var dy = offsety;
	if(offsety > 0 && dy <= 0)
		dy = 1;
	return(toolTipmusY - toolTiph - dy);
}
function toolTipOnOut()
{
	toolTipAddRemOutFnc(false);
	
		toolTipHideInit();
}
function toolTipHideInit()
{
	toolTipExtCallFncs(0, "HideInit");
	toolTipiState &= ~0x4;
	if(toolTipflagOpa && fadehide)
	{
		toolTiptFade.EndTimer();
		if(toolTipopa)
		{
			var n = Math.round(fadehide / (fadedelay * (opacity / toolTipopa)));
			toolTipFade(toolTipopa, toolTipopa, 0, n);
			return;
		}
	}
	toolTiptHide.Timer("toolTipHide();", 1, false);
}
function toolTipOpReHref()
{
	if(toolTipelDeHref)
	{
		toolTipelDeHref.setAttribute("href", toolTipelDeHref.t_href);
		toolTipRemEvtFnc(toolTipelDeHref, "mousedown", toolTipOpReHref);
		window.status = toolTipelDeHref.t_stats;
		toolTipelDeHref = null;
	}
}
function toolTipFade(a, now, z, n)
{
	if(n)
	{
		now += Math.round((z - now) / n);
		if((z > a) ? (now >= z) : (now <= z))
			now = z;
		else
			toolTiptFade.Timer("toolTipFade("
							+ a + "," + now + "," + z + "," + (n - 1)
							+ ")",
							fadedelay,
							true);
	}
	now ? toolTipSetTipOpa(now) : toolTipHide();
}
// To circumvent the opacity nesting flaws of IE, we set the opacity
// for each sub-DIV separately, rather than for the container DIV.
function toolTipSetTipOpa(opa)
{
	toolTipSetOpa(toolTipaElt[5].style, opa);
	if(toolTipaElt[1])
		toolTipSetOpa(toolTipaElt[1].style, opa);
}
function toolTipInt(x)
{
	var y;

	return(isNaN(y = parseInt(x)) ? 0 : y);
}
function toolTipAddRemOutFnc(bAdd)
{
	var PSet = bAdd ? toolTipAddEvtFnc : toolTipRemEvtFnc;

	if(bAdd != toolTipAddRemOutFnc.bOn)
	{	
		if (!isSticky)
			PSet(toolTipover, "mouseout", toolTipOnOut);
		toolTipAddRemOutFnc.bOn = bAdd;
		if(!bAdd)
			toolTipOpReHref();
	}
}
toolTipAddRemOutFnc.bOn = false;
Number.prototype.Timer = function(s, iT, bUrge)
{
	if(!this.value || bUrge)
		this.value = window.setTimeout(s, iT);
}
Number.prototype.EndTimer = function()
{
	if(this.value)
	{
		window.clearTimeout(this.value);
		this.value = 0;
	}
}
function toolTipSetOpa(css, opa)
{
	toolTipopa = opa;
	if(toolTipflagOpa == 1)
	{
		// Hack for bugs of IE:
		// A DIV cannot be made visible in a single step if an opacity < 100
		// has been applied while the DIV was hidden.
		// Moreover, in IE6, applying an opacity < 100 has no effect if the
		// concerned element has no layout (position, size, zoom, ...).
		if(opa < 100)
		{
			var bVis = css.visibility != "hidden";
			css.zoom = "100%";
			if(!bVis)
				css.visibility = "visible";
			css.filter = "alpha(opacity=" + opa + ")";
			if(!bVis)
				css.visibility = "hidden";
		}
		else
			css.filter = "";
	}
	else
	{
		opa /= 100.0;
		switch(toolTipflagOpa)
		{
		case 2:
			css.KhtmlOpacity = opa; break;
		case 3:
			css.KHTMLOpacity = opa; break;
		case 4:
			css.MozOpacity = opa; break;
		case 5:
			css.opacity = opa; break;
		}
	}
}
function toolTipMovDomNode(el, dadFrom, dadTo)
{
	if(dadFrom)
		dadFrom.removeChild(el);
	if(dadTo)
		dadTo.appendChild(el);
}


function toolTipExtCallFncs(arg, sFnc)
{
	var b = false;
	for(var i = toolTipaExt.length; i;)
	{--i;
		var fnc = toolTipaExt[i]["On" + sFnc];
		// Call the method the extension has defined for this event
		if(fnc && fnc(arg))
			b = true;
	}
	return b;
}
var balloon = new toolTipExtension();

balloon.OnLoadConfig = function()
{
	balloon.padding = Math.max(padding - 5, 0);
	padding = 0;
	return true;
};
balloon.OnCreateContentString = function()
{
	
	var aImg;

	// Cache balloon images in advance:
	
		aImg = Balloon_CacheImgs("/images/");
		if (isSticky){
			toolTipsContent = "<div class=\"align-r\">&#160;<a href=\"javascript: toolTipOnOut()\"><img src=\"/images/buttons/sbs_remove.gif\" alt=\"Close\" border=\"0\" /></a></div>" + toolTipsContent;
		}
	
	toolTipsContent = '<div onclick="toolTipOnOut()"><table border="0" cellpadding="0" cellspacing="0" style="width:auto;padding:0px;margin:0px;left:0px;top:0px;"><tr>'
				// Left-top corner
				+ '<td style="position:relative;width:5px;padding:0px;margin:0px;overflow:hidden;line-height:0px;" valign="bottom">'
				+ '<img src="' + aImg[1].src + '" width="5" height="5" style="padding:0px;margin:0px;border:0px;" />'
				+ '</td>'
				// Top border
				+ '<td valign="bottom" style="position:relative;padding:0px;margin:0px;overflow:hidden;">'
				+ '<img id="tt_imgu" style="position:relative;top:1px;z-index:1;display:none;padding:0px;margin:0px;border:0px;" src="' + aImg[9].src + '" width="15" height="19" />'
				+ '<div style="position:relative;z-index:0;padding:0px;margin:0px;overflow:hidden;width:auto;height:5px;background-image:url(' + aImg[2].src + ');">'
				+ '</div>'
				+ '</td>'
				// Right-top corner
				+ '<td style="position:relative;width:5px;padding:0px;margin:0px;overflow:hidden;line-height:0px;" valign="bottom">'
				+ '<img src="' + aImg[3].src + '" width="5" height="5" style="padding:0px;margin:0px;border:0px;" />'
				+ '</td>'
				+ '</tr><tr>'
				// Left border
				+ '<td style="position:relative;padding:0px;margin:0px;width:5px;overflow:hidden;background-image:url(' + aImg[8].src + ');">'
				// Redundant image for bugous old Geckos that won't auto-expand TD height to 100%
				+ '<img width="5" height="100%" src="' + aImg[8].src
				+ '" style="padding:0px;margin:0px;border:0px;" /></td>'
				// Content
				+ '<td style="position:relative;line-height:normal;'
				+ ';background-image:url(' + aImg[0].src + ')'
				+ ';color:' + "#333333"
				+ ';font-family:' + "Verdana"
				+ ';font-size:' + "8pt"
				+ ';font-weight:' + "normal"
				+ ';text-align:' + "left"
				+ ';padding:' + "5px"
				+ ';width:' + tipwidth
				+ ';">' + toolTipsContent + '</td>'
				// Right border
				+ '<td style="position:relative;padding:0px;margin:0px;width:5px;overflow:hidden;background-image:url(' + aImg[4].src + ');">'
				// Image redundancy for bugous old Geckos that won't auto-expand TD height to 100%
				+ '<img width="5" height="100%" src="' + aImg[4].src
				+ '" style="padding:0px;margin:0px;border:0px;" /></td>'
				+ '</tr><tr>'
				// Left-bottom corner
				+ '<td valign="top" style="position:relative;width:5px;padding:0px;margin:0px;overflow:hidden;line-height:0px;">'
				+ '<img src="' + aImg[7].src + '" width="5" height="5" style="padding:0px;margin:0px;border:0px;" />'
				+ '</td>'
				// Bottom border
				+ '<td valign="top" style="position:relative;padding:0px;margin:0px;overflow:hidden;">'
				+ '<div style="position:relative;left:0px;top:0px;padding:0px;margin:0px;overflow:hidden;width:auto;height:5px;background-image:url(' + aImg[6].src + ');"></div>'
				+ '<img id="tt_imgb" style="position:relative;top:-1px;left:2px;z-index:1;display:none;padding:0px;margin:0px;border:0px;" src="' + aImg[10].src + '" width="15" height="19" />'
				+ '</td>'
				// Right-bottom corner
				+ '<td valign="top" style="position:relative;width:5px;padding:0px;margin:0px;overflow:hidden;line-height:0px;">'
				+ '<img src="' + aImg[5].src + '" width="5" height="5" style="padding:0px;margin:0px;border:0px;" />'
				+ '</td>'
				+ '</tr></table></div>';
	return true;
};
balloon.OnSubDivsCreated = function()
{	
	balloon.iStem = above * 1;
	balloon.stem = [toolTipGetElt("tt_imgu"), toolTipGetElt("tt_imgb")];
	balloon.stem[balloon.iStem].style.display = "inline";
	return true;	
};
// Display the stem appropriately
balloon.OnMoveAfter = function()
{	
	var iStem = (above != toolTipbJmpVert) * 1;

	// Tooltip position vertically flipped?
	if(iStem != balloon.iStem)
	{
		// Display opposite stem
		balloon.stem[balloon.iStem].style.display = "none";
		balloon.stem[iStem].style.display = "inline";
		balloon.iStem = iStem;
	}
	
	balloon.stem[iStem].style.left = Balloon_CalcStemX() + "px";
	return true;	
};
function Balloon_CalcStemX()
{
	var x = toolTipmusX - toolTipx;
	return Math.max(Math.min(x, toolTipw - 15 - (5 << 1) - 2), 2);
}
function Balloon_CacheImgs(sPath)
{
	var asImg = ["tt_bkg", "tt_tl", "tt_t", "tt_tr", "tt_r", "tt_br", "tt_b", "tt_bl", "tt_l", "tt_ptu", "tt_ptd"],
	n = asImg.length,
	aImg = new Array(n),
	img;

	while(n)
	{--n;
		img = aImg[n] = new Image();
		img.src = sPath + asImg[n] + ".gif";
	}
	return aImg;
}
function Balloon_PreCacheDefImgs()
{	
	balloon.aDefImg = Balloon_CacheImgs("/images/");
}
Balloon_PreCacheDefImgs();




