var activeMenu = null;
var tempEl;

function highlightItemOn(el){
el.style.background = "highlight";
el.style.color = "highlighttext";
}

function highlightItemOff(el){
el.style.background = "";
el.style.color = "";
}

function raiseButton(el){
el.style.borderTop = "1 solid buttonhighlight";
el.style.borderLeft = "1 solid buttonhighlight";
el.style.borderBottom = "1 solid buttonshadow";
el.style.borderRight = "1 solid buttonshadow";
el.style.padding = "1";
el.style.paddingLeft = "7";
el.style.paddingRight = "7";
}

function pressedButton(el){
el.style.borderTop = "1 solid buttonshadow";
el.style.borderLeft = "1 solid buttonshadow";
el.style.borderBottom = "1 solid buttonhighlight";
el.style.borderRight = "1 solid buttonhighlight";
el.style.paddingTop = "2";
el.style.paddingBottom = "0";
el.style.paddingLeft = "8";
el.style.paddingRight = "6";
}

function normalButton(el){
el.style.border = "1 solid #c0c0c0";
el.style.padding = "1";
el.style.paddingLeft = "7";
el.style.paddingRight = "7";
}

function cleanUpMenuBar(){
for (i = 0; i < menu.rows.length; i++){
	for (j = 0; j < menu.rows(i).cells.length; j++){
		if (menu.rows(i).cells(j).className == "root"){
			normalButton(menu.rows(i).cells(j));
		}
	}
}
}

function getMenuItem(el){
tempEl = el;

while ((tempEl != null) && (tempEl.tagName != "TABLE") && (tempEl.id != "menubar") && (tempEl.id != "menu")){
if ((tempEl.tagName == "TR") || (tempEl.className == "root"))
	el = tempEl;
tempEl = tempEl.parentElement;
}
return el;
}

function menuClick(){
if (event.srcElement == null)
	return;

var el = getMenuItem(event.srcElement);
if ((el.className != "disabled") && (el.id != "menubar")){
	if (el.className == "root"){
		if (activeMenu){
			raiseButton(el);
		}
		else
			pressedButton(el);
		toggleMenu(el);
	}
	else if (el.href)
	{
		cleanUpMenuBar();
		if (activeMenu)
			toggleMenu(activeMenu.parentElement);
		if (el.target)
			window.open(el.href, el.target);
		else if (document.all.tags("BASE").item(0) != null)
			window.open(el.href, document.all.tags("BASE").item(0).target);
		else
			window.location = el.href;
	}
}
window.event.cancelBubble = true;
}

function restore(){
if (activeMenu){
	toggleMenu(activeMenu.parentElement);
	cleanUpMenuBar();
}
}

document.onclick = restore;

function menuOver(){
var fromEl = getMenuItem(event.fromElement);
var toEl = getMenuItem(event.toElement);

if ((toEl.className != "disabled") && (toEl.id != "menubar")){
	if (toEl.className == "root"){
		if (activeMenu){
			if (toEl.menu != activeMenu){
				cleanUpMenuBar();
				pressedButton(toEl);
				toggleMenu(toEl);
			}
		}
		else
		{
			raiseButton(toEl);
		}
	}
	else
	{
		if ((fromEl != toEl) && (toEl.tagName != "TABLE")){
			highlightItemOn(toEl);
			toEl.parentElement.parentElement.activeItem = toEl;
		}
	}
}
}

function menuOut(){
var fromEl = getMenuItem(event.fromElement);
var toEl = getMenuItem(event.toElement);

if (fromEl.className == "root"){
	if (activeMenu){
		if (fromEl.menu != activeMenu)
			normalButton(fromEl);
	}
	else
		normalButton(fromEl);
}
else
{
	if ((fromEl.className != "disable") && (fromEl.id != "menubar")){
		if ((fromEl != toEl) && (fromEl.tagName != "TABLE"))
			highlightItemOff(fromEl);
	}
}
}

function toggleMenu(el){
if (el.menu == null)
	el.menu = getChildren(el);

if (el.menu == activeMenu){
	cleanup(el.menu,true);
	activeMenu = null;
}
else
{
	if (activeMenu){
		cleanup(activeMenu,true);
		hideMenu(activeMenu);
	}
	
	activeMenu = el.menu;
	var tPos = topPos(el.menu) + menu.offsetHeight;
	if ((document.body.offsetHeight - tPos) >= el.menu.offsetHeight){
		el.menu.style.pixelTop = el.offsetHeight +0;
		dir = 2;
	}
	else
	{
		el.menu.style.pixelTop = el.offsetTop - el.menu.offsetHeight -1;
		dir = 8;
	}
	
	el.menu.style.pixelLeft = el.offsetLeft -2;
	show(el.menu, dir);
}
}

function topPos(el){
var temp = el;
var y = 0;

while (temp.id != "menu"){
temp = temp.offsetParent;
y += temp.offsetTop;
}
return y;
}

function show(el, dir){
el.style.visibility = "visible";
}

function cleanup(menu, hide){
if (menu.activeItem){
	highlightItemOff(menu.activeItem);
}

if (hide){
hideMenu(menu);
}
}

function hideMenu(el){
el.style.visibility = "hidden";
}

function getChildren(el){
var tList = el.children.tags("TABLE");
return tList[0];
}
