// Sets the focus to the 'js_focus_element' field's value (another field's name)
function setFocus() 
{
	try 
	{ 
		//eval("document.main."+document.main.js_focus_element.value+".focus()"); 
	} 
	catch (err) 
	{ 
		return(true); 
	}
}


var currentMenuName = null;
var currentMenuObj = null;
var currentSubMenuObj = null;
var menuVerticalOffset = -10;
var menuCloseBufferSize = 20;
var boundingBox = null;

//initialize menu
function initMenu()
{
 	var sub = new Array(9);
 	sub[0] = document.getElementById("submenu_contactus");
 	sub[1] = document.getElementById("submenu_people");
 	sub[2] = document.getElementById("submenu_research");
 	sub[3] = document.getElementById("submenu_academics");
 	sub[4] = document.getElementById("submenu_prospective");
 	sub[5] = document.getElementById("submenu_current");
 	sub[6] = document.getElementById("submenu_iap");
 	sub[7] = document.getElementById("submenu_former");
 	sub[8] = document.getElementById("submenu_visitors");
// 	sub[9] = document.getElementById("submenu_degrees");
// 	sub[10] = document.getElementById("submenu_courses");

 	var base = 80;
 	var offset = 25;

 	for (var i=0; i<9; i++)
 	{
 		var posY = base + offset * i;
 		sub[i].style.top = posY + "px";
		sub[i].style.visibility = "hidden";
//  	}
// 	for (var i=4; i<6; i++)
// 	{
//  		var posX = 182;
// 		var offsetX = 90;
// // 		sub[i].style.top = posY + "px";
//  		sub[i].style.top = "75px";
// 		sub[i].style.left = posX + offsetX * (i - 4) + "px";
// 		sub[i].style.visibility = "hidden";
// 	}
// 	for (var i=6; i<11; i++)
// 	{
// 		var posY = base + offset * i - 10;
 		sub[i].style.top = posY + "px";
		//sub[i].style.visibility = "hidden";
	}
}

function isMenuOpen()
{
	if (currentMenuName != null && currentMenuObj != null && currentSubMenuObj != null)
		return true;
	
	return false;
}

function openMenu(name)
{
	// Check if a menu is open
	if (isMenuOpen())
	{
		if (currentMenuName != name) // If the menu is not the current one, close it
		{
			closeMenu();
		}
		else // The currently open menu is the one that is being opened, return
		{
			return;
		}
	}
	
	currentMenuName   = name;
	currentSubMenuObj = document.getElementById("submenu_"+name);
	currentMenuObj    = document.getElementById("menu_item_"+name);
	
	if (!positionOpenMenu())
	{
		currentMenuName   = null;
		currentMenuObj    = null;
		currentSubMenuObj = null;
		
		return;
	}
		
	currentSubMenuObj.style.visibility = "visible";
	
	// 0 = top
	// 1 = left
	// 2 = bottom
	// 3 = right
	boundingBox = new Array(4);
	
	subLeft    = findPosX(currentSubMenuObj);
	subRight   = subLeft + currentSubMenuObj.offsetWidth;
	subTop     = findPosY(currentSubMenuObj);
	subBottom  = subTop + currentSubMenuObj.offsetHeight;
	mainLeft   = findPosX(currentMenuObj);
	mainRight  = mainLeft + currentMenuObj.offsetWidth;
	mainTop    = findPosY(currentMenuObj);
	mainBottom = mainTop + currentMenuObj.offsetHeight;
	
	if (subTop > mainTop)
		boundingBox[0] = mainTop;
	else
		boundingBox[0] = subTop;
	
	if (subLeft > mainLeft)
		boundingBox[1] = mainLeft;
	else
		boundingBox[1] = subLeft;
	
	if (subBottom > mainBottom)
		boundingBox[2] = subBottom;
	else
		boundingBox[2] = mainBottom;
	
	if (subRight > mainRight)
		boundingBox[3] = subRight;
	else
		boundingBox[3] = mainRight;
	
	//alert("Bounding box: ("+boundingBox[1]+","+boundingBox[0]+"),("+boundingBox[3]+","+boundingBox[2]+")");
	
	//alert("Menu " + currentMenuName + " opened and should be visible? " + currentSubMenuObj.style.visibility);
}

function closeMenu()
{
	if (!isMenuOpen())
		return;
	
	currentSubMenuObj.style.visibility = "hidden";
	
	currentMenuName   = null;
	currentMenuObj    = null;
	currentSubMenuObj = null;
	boundingBox       = null;
}

function positionOpenMenu()
{
	if (!isMenuOpen())
		return false;
	
	y = findPosY(currentMenuObj) + menuVerticalOffset;
	
	currentSubMenuObj.style.top = y+"px";
	
	//alert("positioned " + currentMenuName + " to y = " + y + "px");
	
	return true;
}

function mouseMoveHandler(event)
{
	if (!isMenuOpen())
		return;
	
	//closeMenu();
	//return;
	
	// First, calculate the current mouse position on the page (need to account for page offest)	
	mouseX = 0;
	mouseY = 0;
	
	if (!event || event == null)
		event = window.event;
	
	if (event.pageX || event.pageY)
	{
		mouseX = event.pageX;
		mouseY = event.pageY;
	}
	else if (event.clientX || event.clientY)
	{
		scrOfX = 0;
		scrOfY = 0;
		
		if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
			scrOfY = window.pageYOffset;
			scrOfX = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			//DOM compliant
			scrOfY = document.body.scrollTop;
			scrOfX = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			//IE6 standards compliant mode
			scrOfY = document.documentElement.scrollTop;
			scrOfX = document.documentElement.scrollLeft;
		}
		
		mouseX = event.clientX + scrOfX;
		mouseY = event.clientY + scrOfY;
	}
	else
	{
		return;
	}
	
	if (
		(mouseY < boundingBox[0] || mouseY > boundingBox[2]) ||
		(mouseX < boundingBox[1] || mouseX > boundingBox[3]))
	{
		closeMenu();
	}
	
//	checkMenu(mouseX,mouseY);
}

function checkMenu(x,y)
{
	if (currentOpenMenu == "contactus" && (y > 200 || y < 85 || x > 420))
		closeMenu();
	if (currentOpenMenu == "people" && (y < 110 || y > 300 || x > 420))
		closeMenu();
	if (currentOpenMenu == "research" && (y < 135 || y > 240 || x > 420))
		closeMenu();
	if (currentOpenMenu == "academics" && (y < 160 || y > 370 || x > 420))
		closeMenu();
	if (currentOpenMenu == "prospective" && (y < 185 || y > 320 || x > 420))
			closeMenu();
	if (currentOpenMenu == "current" && (y < 210 || y > 400 || x > 420))
			closeMenu();
	if (currentOpenMenu == "iap" && (y < 235 || y > 370 || x > 420))
			closeMenu();
	if (currentOpenMenu == "former" && (y < 260 || y > 380 || x > 420))
			closeMenu();
	if (currentOpenMenu == "visitors" && (y < 285 || y > 500 || x > 420))
			closeMenu();
	if (currentOpenMenu == "degrees" && (y < 310 || y > 550 || x > 420))
	    closeMenu();
	if (currentOpenMenu == "courses" && (y < 335 || y > 600 || x > 420))
	    closeMenu();
}

function findPosX(obj)
{
	if(obj == null)
		return 0;
	
	curleft = obj.offsetLeft;

	while (obj.offsetParent != null)
	{
		obj = obj.offsetParent;
		curleft += obj.offsetLeft
	}

	return curleft;
}

function findPosY(obj)
{
	if(obj == null)
		return 0;
	
	curtop = obj.offsetTop;
	
	while (obj.offsetParent != null && !(obj.offsetParent.nodeType == 1 && obj.offsetParent.tagName == "BODY"))
	{
		obj = obj.offsetParent;
		curtop += obj.offsetTop;
	}
	
	return curtop;
}
