var ToolBar_Supported = false;
var BPMenu_Supported   = false;
var ICPMenu_Supported   = false;
var bpMenus = new Object;
var icpMenus = new Object;
var icpStubs = new Object;
var numBPMenus = 0;
var numICPMenus = 0;
var numICPStubs = 0;

ToolBar_Supported = true;

function loadTB()
{
	if(BPMenu_Supported)
	{
		BPMenuSetup();
		sizeMenu("bp", numBPMenus, bpMenus);
	}

	if(ICPMenu_Supported)
	{
		ICPMenuSetup();
		sizeMenu("icp", numICPMenus, icpMenus);
	}
}

function createMenu(prefix, id)
{
	var elCell = document.getElementById(prefix+"Menu"+id);
	if(!elCell)
		return;

	var newSpan = document.createElement("table");
	newSpan.style.display = "none";
	newSpan.id = prefix+"Panel"+id;
	newSpan.className = prefix+"menupanel";
	newSpan.cellPadding = 0;
	newSpan.cellSpacing = 0;

	var tr = newSpan.insertRow(0);
	var td = tr.insertCell(0);

	var newDiv = document.createElement("div");
	newDiv.id = prefix+"List"+id;
	newDiv.className = prefix+"menulist";
	td.appendChild(newDiv);

	elCell.appendChild(newSpan);
	elCell.onmouseover = new Function("showMenu('"+prefix+"','"+prefix+"Panel"+id+"');");
	elCell.onmouseout = new Function("event", "tempHideMenu(event,'"+prefix+"','"+prefix+"Panel"+id+"','"+prefix+"Menu"+id+"');");
}

function addMenuItem(prefix, id, dispName, url)
{
	var elList = document.getElementById(prefix+"List"+id);
	if(!elList)
		return;

	var newLink = document.createElement("a");
	newLink.href = url;
	newLink.innerHTML = dispName;

	elList.appendChild(newLink);
}

function createBPMenu(id)
{
	bpMenus[numBPMenus]=id;
	numBPMenus++;
	createMenu("bp", id);
}

function addMenuLine(prefix, id)
{
	var elCell = document.getElementById(prefix+"List"+id);
	if(!elCell)
		return;

	var newHR = document.createElement("div");
	newHR.className = "hr";

	elCell.appendChild(newHR);
}


function addBPMenuItem(id, MenuStr, MenuURLStr)
{
	addMenuItem("bp", id, MenuStr, MenuURLStr);
}

function addBPMenuLine(id)
{
	addMenuLine("bp", id);
}

function createICPMenu(id)
{
	icpMenus[numICPMenus]=id;
	numICPMenus++;
	createMenu("icp", id);
}

function createICPStub(id)
{
	icpStubs[numICPStubs]=id;
	numICPStubs++;
}

function addICPMenuItem(id, MenuStr, MenuURLStr)
{
	addMenuItem("icp", id, MenuStr, MenuURLStr);
}

function addICPMenuLine(id)
{
	addMenuLine("icp", id);
}

function showMenu(prefix, id)
{
	if(document.all && (prefix == "bp"))
	{
		for(i = 0; i < numICPMenus; i++)
			modifyICPMenu(icpMenus[i], "static");
		for(i = 0; i < numICPStubs; i++)
			modifyICPMenu(icpStubs[i], "static");
	}

	var elPanel = document.getElementById(id);
	if(elPanel)
		elPanel.style.display = "block";
}

function tempHideMenu(e, prefix, idPanel, idMenu)
{
	if(e && e.relatedTarget)
	{
		var el = e.relatedTarget;
		while(el && (el.id != idMenu))
		{
			el = el.parentNode;
		}
		if(!el)
		{
			hideMenu(prefix, idPanel);
		}
	} else
	{
		hideMenu(prefix, idPanel);
	}
}

function hideMenu(prefix, id)
{
	if(document.all && (prefix == "bp"))
	{
		for(i = 0; i < numICPMenus; i++)
			modifyICPMenu(icpMenus[i], "relative");
		for(i = 0; i < numICPStubs; i++)
			modifyICPMenu(icpStubs[i], "relative");
	}

	var elPanel = document.getElementById(id);
	if(elPanel)
		elPanel.style.display = "none";
}

function modifyICPMenu(id, pos)
{
	var elMenu = document.getElementById("icpMenu"+id);
	if(elMenu)
	{
		elMenu.style.position = pos;
		var elLink = elMenu.childNodes[0];
		if(elLink)
			elLink.style.position = pos;
	}
}

function sizeMenu(prefix, numMenus, menuNames)
{
	for(i = 0; i < numMenus; i++)
	{
		var elPanel = document.getElementById(prefix+"Panel"+menuNames[i]);
		if(!elPanel)
			break;
		elPanel.style.visibility = "hidden";
		elPanel.style.display = "";

		var elList = document.getElementById(prefix+"List"+menuNames[i]);
		if(!elList)
			break;
		if(typeof(elList.offsetWidth) == "undefined")
			break;
		var elMenu = document.getElementById(prefix+"Menu"+menuNames[i]);
		if(!elMenu)
			break;
		if(elMenu.offsetWidth > elList.offsetWidth)
			elList.style.width = elMenu.offsetWidth + "px";

		var offsetLeftTotal = 0;
		var elTemp = elPanel;
		do
		{
			offsetLeftTotal += elTemp.offsetLeft
			elTemp = elTemp.offsetParent;
		}
		while(elTemp && (elTemp != document.body));

		var diff = (offsetLeftTotal + elPanel.offsetWidth) - document.body.offsetWidth;
		if(diff > 0)
		{
			if(document.all)
			{
				var elLink = elMenu.childNodes[0];
				if(elLink)
					diff += parseInt(elLink.currentStyle.paddingLeft);
			}
			elPanel.style.left = (elPanel.style.left - diff) + "px";
		}

		elPanel.style.display = "none";
		elPanel.style.visibility = "";
	}
}

