// Copyright (c): Net-Conception 2008 

// Menu parameters and arrays - alter these to change the main and sub menu items and links
var menuLeft = 10;			// As also defined in CSS
var menuTop;
var menuRight;
var menuItemHt = 35;		// As also defined in CSS
var menuContainerW = 135;//127;   // As also defined in CSS
var spacerW = 8;
var submenuLeft;
var submenuRight;
var submenuW = 205;   		// As also defined in CSS

//NB some menu properties are controlled by the CSS .menu class

// Array of top margins & positions of each menu item (and assoc. submenu)
var menuMarginTops = new Array (4, 4, 4, 4, 4, 4, 4);
var menuTops = new Array();

// Array of heights of each submenu (incl. border)  N.B. Submenus with only one item as set to zero height as they're not shown
var submenuHts = new Array(0, 100, 80, 60, 80, 0, 0);

// Arrays of submenus' captions (in order of main menu items)
var submenu0Captions = new Array("Home page");
var submenu1Captions = new Array("Overview", "Document creation", 
		"Archive & storage", "Audit trail and reports", 
		"Copy Fulfilment");
var submenu2Captions = new Array("Document delivery", "Managed transition",
									"Customer Service", "Training and Support");
var submenu3Captions = new Array("Why SaaS", "Cost Savings", "Environmental");
var submenu4Captions = new Array("Articles", "Announcements", "Newsletters", "Case studies");
var submenu5Captions = new Array("About us");
var submenu6Captions = new Array("Contact us");

// Arrays of submenu's item links
var submenu0Links = new Array("index.php");
var submenu1Links = new Array("Our_products/General_introduction.php", "Our_products/Netsend _creates_your_documents.php",  
									"Our_products/Netsend_stores_your_documents_online.php", "Our_products/Netsend_tells_you_whats_happened.php", 
									"Our_products/Copy_fulfilment.php");
var submenu2Links = new Array("Our_services/Documents_delivery.php", 
		"Our_services/Managed_transition_to_ebilling.php", "Our_services/Customer_service.php", 
		"Our_services/Training.php");
var submenu3Links = new Array("Benefits/No_IT_No_hassle.php", 
									"Benefits/Cost_savings.php", "Benefits/Environment.php");
var submenu4Links = new Array("Further_reading/Articles.php", "Further_reading/Announcements.php", 
									"Further_reading/News-letters.php", "Further_reading/Case_studies.php");
var submenu5Links = new Array("About_us/About_us.php");
var submenu6Links = new Array("Contact_us/Contact_us.php");

// Global variables used in this module
var activeMenuNum = -1;
var isIndex;
var menuItems = new Array ();
var menuFiller;
var submenuItems = new Array ();

// For Netscape users, capture the MouseMove event
if (!document.all)
	document.captureEvents (Event.MOUSEMOVE);

document.onmousemove = track;

// Return a variable containing a reference to the given object in the given window
function getWindowObject (reqWindow, objName) {
	var requestedObj;
	if (isIE || isOpera) {
		eval ("requestedObj = reqWindow.document.all." + objName);
	} else {
		requestedObj = reqWindow.document.getElementById(objName);
	}
	return requestedObj;
}
	
function getHref (menuNum, submenuNum) {
	var href;
	eval ("href = submenu" + menuNum + "Links[" + submenuNum + "]");
	if (!isIndex) {
		href = "/" + href;
	}
		
	return href;
}

// Initialise the menu using data and arrays above
function initializeMenu () {
	var i;
	var maxMenu, menuContainer, menuChild;

	menuContainer = getObject("menuContainer");
	menuTop = findPosY(menuContainer);
	menuRight = menuLeft + menuContainerW;
	
	maxMenu = menuContainer.childNodes.length;
	for (i = 0; i < maxMenu; i++) {
		menuChild = menuContainer.childNodes[i];
		if ((menuChild.className == "menu_item") || (menuChild.className == "top_menu_item")) {
			menuItems.push (menuContainer.childNodes[i]);		
		}
	}

	//Create submenus
	for (i = 0; i < maxMenu; i++) {
		submenuInit (i);
	}

} //    initializeMenu

//Initialise the captions, links and tops of the given submenu using the arrays defined above
function submenuInit (menuNum) {
	var i;
	var maxSubmenuItem, submenu;
	var innerHtmlStr = "";
	
	eval ("maxSubmenuItem = submenu" + menuNum + "Captions.length");
	// Build a statement such as the one below for the given submenu:
	// submenu.innerHTML = "<a href='link.htm'>Contacts</a><br /><a href='link.htm'>About us</a><br /><a href='link.htm'>Help</a>";
	
	menuTops.push (menuTop + (menuNum * menuItemHt));

	if (maxSubmenuItem == 1) {
		submenuItems.push (0);			// Don't create submenus for single item submenus
	} else {
		submenu = document.createElement ("div");
		submenuItems.push (submenu);
		document.body.appendChild (submenu);
		
		// Add anchor, link and caption for each submenu item. Add a break if not last item.
		for (i = 0; i < maxSubmenuItem; i++) {			
			innerHtmlStr += '<a class="submenu_item" href= "' + getHref (menuNum, i) + '">';
			eval ("innerHtmlStr += submenu" + menuNum + "Captions[i]");
			innerHtmlStr += "</a>";
			if (i != maxSubmenuItem) {
				innerHtmlStr += "<br />";
			}
		}
		
		submenu.innerHTML = innerHtmlStr;
		
		submenu.style.position = "absolute";
		eval ("submenu.style.top = \'" + (menuTops[menuNum]) + "px\'");
		eval ("submenu.style.height = \'" + submenuHts[menuNum] + "px\'");
		submenu.className = "menu";
		submenu.style.visibility = "hidden";
	}
}

// Set the given button to the appropriate (highlighted) state
function menuBtnHighlight (btnNum) {
	var menuItemImg, submenu, menuContainer, menuContainerLeft;

	//De-highlight last menu N.B. This shouldn't be needed but some browsers miss events
	menuBtnDeHighlight (activeMenuNum);
	
	activeMenuNum = btnNum;		// Used by function: track

	// Display the submenu (these are named "mnu_home" etc.)
	submenu = submenuItems[btnNum];
	if (submenu != 0) {
		// There's a multi-item sub-menu, show it
		submenu.style.visibility = 'visible';
		menuContainer = getObject ("menuContainer");
		menuContainerLeft = findPosX (menuContainer);		// Recalculate this as it will change if the browser window is resized
//alert ("mleft: " + menuContainerLeft + " mW: " + menuContainerW + " sW: " + spacerW);
		submenuLeft = Number(menuContainerLeft) + menuContainerW + spacerW;
		submenu.style.left = submenuLeft + "px";

		// Now set variables back to normalized co-ordinates for use by the cursor tracking function
		submenuLeft = menuLeft + menuContainerW + spacerW;		
		submenuRight = submenuLeft + submenuW;
//alert (submenuLeft + 'px ' + submenuRight);
	} else {
		// There's only one submenu item, make the menu item a button and underline it
		menuItems[btnNum].style.textDecoration = "underline";
	}
	
	// Switch background colour & text colour
	menuItems[btnNum].style.backgroundColor = "#ffffff";
	menuItems[btnNum].style.color = "#009933";
}

// Set the given button to the appropriate (de-highlighted) state
function menuBtnDeHighlight (btnNum) {
	var menuItemImg;
	var submenu;

	if (btnNum != -1) {
		// Remove submenu
		submenu = submenuItems[btnNum];
		if (submenu != 0) {
			// There's an active multi-item submenu, hide it
			submenu.style.visibility = 'hidden';
		} else {
			// There's only one submenu item, remove the underline
			menuItems[btnNum].style.textDecoration = "none";
		}
		
		// Switch background colour & text colour
		menuItems[btnNum].style.backgroundColor = "transparent";
		menuItems[btnNum].style.color = "#0033CC";
		
		activeMenuNum = -1;
	}
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curTop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curTop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curTop += obj.y;
	return curTop;
}

function track (e) {
	var submenuTop;
	var menuBottom;
	var submenuBottom;
	
	// Determine mouse x and y
	var x = (document.all) ? window.event.clientX : e.pageX;
	var y = (document.all) ? window.event.clientY : e.pageY;
	
	if ((mbrowser == "IE") || (mbrowser == "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 menuContainer = getObject ("menuContainer");
	var menuContainerLeft = findPosX (menuContainer);
	x = x - menuContainerLeft + 8;
	
	//Display co-ordinates
	var mainTitle;
	if (mbrowser == "IE" || mbrowser == "Opera")
		mainTitle = document.all.main_title;
	else
		mainTitle = document.getElementById ("main_title");		
//	mainTitle.innerHTML = "X: " + x + ", Y: " + y + " Menu top: " + submenuTop + " Menu right: " + menuRight;
//	mainTitle.visibility = 'visible';
	
	if (activeMenuNum != -1) {		// Ensures there is an active menu	
		// Determine selected menu bounds
		submenuTop = menuTops[activeMenuNum] + 2;	// This has to be accurate to avoid missing the occasional mouseover 2 for ff
		if ((mbrowser == "IE") || (mbrowser == "Opera")) {
			submenuTop++;
		}

		var submenuHt = Math.max (submenuHts[activeMenuNum], menuItemHt); 
		menuBottom = submenuTop + menuItemHt;
		submenuBottom = submenuTop + submenuHt + 4;
		
		// If cursor goes outside bounds of menu item or inside rectangle under 
		// menu item & alongside its submenu, hide submenu & dehighlight menu item
		if (submenuHts[activeMenuNum] == 0) {
			// There's no submenu, just check for menu bounds
			if ((x < (menuLeft - 2)) || (x > (menuRight - 3)) || (y > (menuBottom - 1)) || (y < (submenuTop - 2))) {		
				menuBtnDeHighlight (activeMenuNum);
			}
		} else {
			if ((x < menuLeft) || (x > submenuRight) || (y < submenuTop) || (y > submenuBottom) 
					|| ((x > menuLeft) && (x < menuRight) && (y > menuBottom) && (y < submenuBottom))) {		
				menuBtnDeHighlight (activeMenuNum);
			}
		}
	}
}