/*
	### Header ###
	Filename : mod.menubar.js
	Version : 1.0
	Copyright: Klaus Dørge Jensen, info@doerge.dk

	### Dependencies ###
	lib.global.js

	### History ###
	27-09-2004 : initial version
*/

/* CONFIG */
menubarCFG = new Object();
menubarCFG.menuItemsCSS = "menubarItems";

menubars = new Array();
menubarLocks = new Array();

function menubar_addMenu(menuName, menuItemsArray, targetObject)
{
	if (isW3C)
	{
		o = document.createElement("DIV");
		o.id = menuName;
		for (i=0; i < menuItemsArray.length; i++)
		{
			ostr = menuItemsArray[i].split(",");
			o.innerHTML += '<a href="' + ostr[1] + '">' + ostr[0] + '<br>';
		}
		o.className = menubarCFG.menuItemsCSS;
		o.style.visibility = "hidden";
		o.style.zIndex = 1100;
		o.onmouseover = menubar_clear_timer;
		o.onmouseout = menubar_timer_start;
		targetObject.appendChild(o);

		thisID = menubars.length;

		thisBar = new Object();
		thisBar.id = thisID;
		thisBar.name = menuName;
		thisBar.setRelativeTo = false;
		thisBar.locked = false;

		menubars[thisID] = thisBar;
	}
	else
	{
		alert("menubar not supported on this browser");
	}
}

function menubar_getByName(menuName)
{
	returnValue = false;
	for (i=0; i < menubars.length; i++)
	{
		if (menubars[i].name == menuName)
			returnValue = menubars[i];
	}
	return returnValue;
}

function menubar_setFoldRelativeTo(menuObject, targetObject)
{
	menuObj = menubar_getByName(menuObject);
	menuObj.setRelativeTo = targetObject;
}

function menubar_attachMenu(containerObject, menuObject, lockMenu)
{
	if (isW3C)
	{
		containerObject = _getElementById(containerObject);
		menuObject = _getElementById(menuObject);
		containerObject.menubar = menuObject;
		if (!lockMenu)
		{
			containerObject.onmouseover = menubar_show;
			containerObject.onmouseout = menubar_timer_start //menubar_hide;
		}
		else
		{
			//Fixed to work in Firefox.
			containerObject.menubar.style.left  = containerObject.style.left ;
			containerObject.menubar.style.top = parseInt(containerObject.style.top)+40;
			containerObject.menubar.style.visibility = "visible";
			containerObject.menubar.locked = true;
		}
	}

	else
	{
		alert("menubar not suported on this browser");
	}
}

function menubar_timer_start()
{
	menuInterval = setInterval("menubar_hide_all()", 1000);
}

function menubar_clear_timer()
{
	clearInterval(menuInterval);
}

function menubar_hide_all()
{
	for (i=0; i < menubars.length; i++)
	{
		if (!_getElementById(menubars[i].name).locked)
		_getElementById(menubars[i].name).style.visibility = "hidden";
	}
}
menuInterval = false;

function menubar_show()
{
	menubar_hide_all()
	if (menuInterval)
		clearInterval(menuInterval);

	menuObj = menubar_getByName(this.menubar.id);
	if(menuObj.setRelativeTo != false)
	{
		o = _getElementById(menuObj.setRelativeTo);

		this.menubar.style.position = "absolute";
		if (this.menubar.style.pixelLeft)
		{
			this.menubar.style.pixelLeft = parseInt(o.offsetLeft);
			this.menubar.style.pixelTop = parseInt(o.offsetTop) + parseInt(o.offsetHeight);
		}
		else
		{
			this.menubar.style.left = parseInt(o.offsetLeft);
			this.menubar.style.top = parseInt(o.offsetTop) + parseInt(o.offsetHeight);
		}
	}

	this.menubar.style.visibility = "visible";
}

function menubar_hide()
{
	this.menubar.style.visibility = "hidden";
}