var numLayers = 0;

function IMI_ShowLayer(e, contentHTML, bHideOthers)
{	
	
//alert(document.body.childNodes.length);
	if (bHideOthers) IMI_HideLayers();
	if (contentHTML == "none") return;
	
	if (window.event)
	{
		var el = e.srcElement;
	}
	else
	{
		var el = e.target;
	}

	x = findPosX(el);
	y = findPosY(el) + el.offsetHeight;
		
	var elTable = el.parentNode;
	while (elTable.tagName != "TABLE") elTable = elTable.parentNode;
	var rightBound = findPosX(elTable) + elTable.offsetWidth;
	//alert(rightBound);

	//create layer
	var newLayer = document.createElement('DIV');
	numLayers++;
	//set position
	newLayer.id = 'layer' + numLayers;
	newLayer.onmouseover = "clearTO();";
  newLayer.onmouseout = "setTO();";
	newLayer.style.visibility = 'hidden';
	newLayer.style.position = 'absolute';
	

	//border -- pretty much for debug purposes
	newLayer.style.borderLeft = '1px solid #CC0001';
	newLayer.style.borderRight = '1px solid #CC0001';
	newLayer.style.borderBottom = '1px solid #CC0001';
	newLayer.style.backgroundColor = "FFAB12";
	newLayer.style.zIndex = numLayers;
	
	newLayer.innerHTML = contentHTML;
	document.body.appendChild(newLayer);

	//check if beyond border
	
	var w = parseInt(newLayer.offsetWidth);
	//alert(w);
	if ((x+w) > rightBound) x = rightBound - w;
	newLayer.style.left = x + 'px';
	newLayer.style.top = y + 'px';
	//newLayer.style.width = w + 'px';
	//newLayer.style.height = h + 'px';

	newLayer.style.visibility = 'visible';
}

function IMI_HideLayers()
{
	var limit = numLayers + 1;
	for (var i = 1; i < limit; i++)
	{
		var layerID = 'layer' + i;
		IMI_HideLayer(layerID);
	}
}

function IMI_HideLayer(layerID)
{
	var layer = document.getElementById(layerID);
	layer.style.visibility = 'hidden';
	layer.innerHTML = '';
	document.body.removeChild(layer);
	delete layer;
	numLayers--;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
