/* Javascript used for pages containing menus 
* Author: Barrie Barnes
* Creation date: 1 August 2004
* Version: 1
* (c) Copyright Net-Conception 2004, 2005 - all rights reserved
*/

// Should change anchor CSS properties order to: Link, Visited, Hover, Active

var mActiveMenuNum = 0;
var mMenuLeft;
var mMenuRight;
var mMenuItemHt;
var mSubmenuLeft;
var mSubmenuRight;
var mBannerBottom;
var mMenuCounts;
var mMenuTops;
var mSubmenuHts;
var mMenuImageNames;
var mSubmenuCaptions;
var mSubmenuLinks;

function setUpMenuPars (menuDims, menuCounts, menuTops, submenuHts, menuImageNames, submenuCaptions, submenuLinks)
{
	mMenuLeft = menuDims[0];
	mMenuRight = menuDims[1];
	mMenuItemHt = menuDims[2];
	mSubmenuLeft = menuDims[3];
	mSubmenuRight = menuDims[4];
	mBannerBottom = menuDims[5];
	mMenuCounts = menuCounts;
	mMenuTops = menuTops;
	mSubmenuHts = submenuHts;
	mMenuImageNames = menuImageNames;
	mSubmenuCaptions = submenuCaptions;
	mSubmenuLinks = submenuLinks;
}

function menuInit ()
// Initialise the menu using data and arrays above
{
	var i;
	var maxMenu;
	var menuContainer;
	var browser = getBrowser ();

	menuContainer = getObject ("main_mnu_container");
//	if ((browser == "Firefox") || (browser == "Moz"))
//		menuContainer.style.top = '-71px';
	menuContainer.style.visibility = "visible";

	//Create submenus
	maxMenu = mMenuTops.length;
	for (i = 1; i <= maxMenu; i++)
		submenuInit (i, mMenuCounts, mSubmenuLinks, mSubmenuCaptions);
		
} // menu_init

function submenuInit (submenuNum, menuCounts, submenuLinks, submenuCaptions)
//Initialise the captions, links and tops of the given submenu using the arrays defined above
{
	var i;
	var link;
	var maxSubmenuItem;
	var submenu;
	var innerHtmlStr = "";
	
	maxSubmenuItem = mMenuCounts[submenuNum-1];
//	eval ("maxSubmenuItem = submenu" + submenuNum + "Links.length");
	//Build a statement such as the one below for the given submenu:
	/* submenu.innerHTML = "<a href='link.htm'>Beavers</a><br /><a href='link.htm'>Cubs</a><br /><a href='link.htm'>Scouts</a>";*/
	
	submenu = getObject ("sub_mnu_" + submenuNum);

	var dummyLink = '<a href= "dummy.htm">';
	var sidIndex = dummyLink.indexOf("?PHPSESSID");
	if (sidIndex != -1)
		sid = dummyLink.substring (sidIndex, sidIndex + 43);
	else
		sid = "";
	
	// Add anchor, link and caption for each submenu item. Add a break if not last item.
	for (i = 1; i <= maxSubmenuItem; i++)
	{			
		// Start of next anchor
		innerHtmlStr += "<a class= \'submenu\' hrf= \'";
		// Add the appropriate link
		innerHtmlStr += mSubmenuLinks[submenuNum-1][i-1];
		// Add SID (if any) and closing apostrophe & brace
		innerHtmlStr += (sid + "\'>");
		// Put an 'e' in 'hrf' - couldn't put it in before 'cos the php session control would have 
		// erroneously added an SID
		innerHtmlStr = innerHtmlStr.replace(/rf=/, "ref="); 
		// Add the appropriate caption
		innerHtmlStr += mSubmenuCaptions[submenuNum-1][i-1];
		// Add end anchor
		innerHtmlStr += "</a>";
		if (i != maxSubmenuItem)
			innerHtmlStr += "<br />";
	}

	submenu.innerHTML = innerHtmlStr;

	//Set top position and height of submenu
	var top = mMenuTops[submenuNum-1] - 38;
	eval ("submenu.style.top = \'" + top + "px\'");

	eval ("submenu.style.height = \'" + mSubmenuHts[submenuNum-1] + "px\'");
}  // submenuInit

function menuBtnHighlight (btnNum)
{
	if (mActiveMenuNum != 0)
		menuBtnDeHighlight (mActiveMenuNum);
	
	var btnName = "menuBtn" + btnNum;
	var activeMenuImage = mMenuImageNames[btnNum - 1];
	mActiveMenuNum = btnNum;

	var newPic = upPath + "assets/Menu/btn_" + activeMenuImage + "_hi.jpg";
	var submenu = getObject ("sub_mnu_" + btnNum);
	submenu.style.visibility = 'visible';
	var menuFill = getObject ("menuFiller");
	menuFill.style.visibility = 'visible';
	var top = mMenuTops[mActiveMenuNum - 1] - 38;
	eval ("menuFill.style.top = \'" + top + "px\'");
	var menuItemImg = getObject (btnName);
	menuItemImg.src = newPic;
}

function menuBtnDeHighlight (btnNum)
{
	var submenu = getObject ("sub_mnu_" + mActiveMenuNum);
	var menuFill = getObject ("menuFiller");
	submenu.style.visibility = 'hidden';
	menuFill.style.visibility = 'hidden';

	var btnName = "menuBtn" + btnNum;
	var activeMenuImage = mMenuImageNames[btnNum - 1];
	var newPic = upPath + "assets/Menu/btn_" + activeMenuImage + "_ord.jpg";
	var menuItemImg = getObject (btnName);
	menuItemImg.src = newPic;
}

function trackMouse (e)
{
	var browser = getBrowser ();

	var x = (document.all) ? window.event.clientX : e.pageX;
	var y = (document.all) ? window.event.clientY : e.pageY;
	if ((browser == "IE") || (browser == "Opera"))
	{
		if (document.documentElement && document.documentElement.scrollTop)
		{
			// It's IE6 in compliance mode
			x = x + document.documentElement.scrollLeft;
			y = y +  document.documentElement.scrollTop;
		}
		else
		{
			// It's IE 5 or less
			x = x + document.body.scrollLeft;
			y = y + document.body.scrollTop;
		}
	}

	// Adjust x for centred body
	var container = getObject ("container");
	var containerLeft = findPosX (container);
	x = x - containerLeft;
	
	//Display co-ordinates
	//var mainTitle;
	//if ((browser == "IE") || (browser == "Opera"))
	//	mainTitle = document.all.main_title;
	//else
	//	mainTitle = document.getElementById ("main_title");
	//mainTitle.innerHTML = "X: " + x + ", Y: " + y + ", menutop: " + menuTop + ", " + browser;
	//mainTitle.visibility = 'visible';

	//Alternative co-ordinates display
	//window.status = "X: " + x + ", Y: " + y + " origx: " + origx + "origy: " + origy + " Offset: " + document.body.scrollLeft;

	if (mActiveMenuNum > 0)		// Ensures there is an active menu
	{
		// Determine selected menu bounds
		var menuTop = mMenuTops[mActiveMenuNum - 1];
		if ((browser == "Moz") || (browser == "Firefox"))
			menuTop += 116;
		else if (browser == "Opera")
			menuTop -= 10;
		 var menuBottom = menuTop + mMenuItemHt;		// !var removed
		 var submenuBottom = menuTop + mSubmenuHts[mActiveMenuNum - 1] + 4;		// !var removed

		if ((x < mMenuLeft) ||(x > mSubmenuRight) || (y < menuTop) || (y > submenuBottom) 
			 || ((x > mMenuLeft) && (x < mMenuRight) && (y > menuBottom) 
				  && (y < submenuBottom)))
		{
			menuBtnDeHighlight (mActiveMenuNum);
			mActiveMenuNum = 0;
		}
	}
}
