﻿


//---------------------------------------------------------------------------
// cross-browser helper
function GetElement(sID)
{
	return (document.getElementById ? document.getElementById(sID) : (document.all ? document.all[sID] : null));
}

//---------------------------------------------------------------------------
// get element's absolute position on the page
function GetPageX(obj)
{
	var n = 0;
	while(obj != null)
	{
		n += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return n;
}

//---------------------------------------------------------------------------
// get element's absolute position on the page
function GetPageY(obj)
{
	var n = 0;
	while(obj != null)
	{
		n += obj.offsetTop; 
		obj = obj.offsetParent;
	}
	if(IsNN)
		n -= 16; // adjust for Firefox (?)
	return n;
}

//---------------------------------------------------------------------------
// sID - name of menu
// oOwner - element menu is 'attached' to
// offset - position relative to owner's top left corner
function ShowMenu(sID, oOwner, nOffsetX, nOffsetY)
{
	CancelHideMenu();  // cancel any timeout in progress
	var menu = GetElement(sID);
	if(menu == null)
		return true;  // follow normal hyperlink
		
	var sParentMenu = GetParentMenu(sID);
	if(sParentMenu == null)
		HideAll();  // hide any other menus before showing this one
	else
		HideSubMenus(sParentMenu);  // if showing a submenu, hide others first

	var x = GetPageX(oOwner) + nOffsetX;
	var y = GetPageY(oOwner) + nOffsetY;
	menu.style.left = x + "px";
	menu.style.top = y + "px";
	menu.style.display = "block";
	
	return false;  // cancel normal hyperlink
}

//---------------------------------------------------------------------------
// get name of parent menu from name of submeu
function GetParentMenu(sSubID)
{
	var s = new String(sSubID);
	var i = s.lastIndexOf("_");
	if(i > 0)
		return s.substring(0,i);
	return null;
}

//---------------------------------------------------------------------------
function HideMenu(sID)
{
	var m = GetElement(sID);
	if(m != null)
	{
		HideSubMenus(sID);
		m.style.display = "none";
	}
}

//---------------------------------------------------------------------------
function HideSubMenus(sID)
{
	var sub;
	var n = 1;
	while( (sub = GetElement(sID + "_Sub" + n)) != null )
	{
		sub.style.display = "none";
		n++;
	}
}

//---------------------------------------------------------------------------

var MenuNames = new Array("TyreMenuAll", "AdviceMenu", "NewsDownloadMenu");

//---------------------------------------------------------------------------
function HideAll()
{
	for( i = 0 ; i < MenuNames.length ; i++)
		HideMenu(MenuNames[i]);
}

//---------------------------------------------------------------------------
// test if an element is contained in a menu
function IsMenuObject(obj)
{
	while(obj != null)
	{
		if(obj.className == "MenuOuter")
			return true;
		obj = obj.parentNode;
	}
	return false;
}

//---------------------------------------------------------------------------
// hide everything after short delay if mouse outside menu
function MenuMouseOut(ev)
{
	var oFrom = ev.srcElement ? ev.srcElement : ev.target;
	var oTo = ev.toElement ? ev.toElement : ev.relatedTarget;
	if(oTo == null || oFrom == null)
		return;
		
	if( !IsMenuObject(oTo) )
	{
		if( IsMenuObject(oFrom) )
		{
			window.clearTimeout(MenuTimeoutID); // cancel any pending timeout before setting another
			MenuTimeoutID = window.setTimeout("HideAll()", 400);
		}
		else
		{
			HideAll();
		}
	}
}

//---------------------------------------------------------------------------
// cancel hide (eg, if moving out of menu into submenu)
function CancelHideMenu()
{
	window.clearTimeout(MenuTimeoutID);
}

//---------------------------------------------------------------------------
// handle set by window.setTimeout()
var MenuTimeoutID;

//---------------------------------------------------------------------------

var IsIE;
var IsNN;  // or firefox

function GetBrowserInfo()
{
	var s = new String(navigator.appName);
	IsIE = s.indexOf("Microsoft") >= 0;
	IsNN = s.indexOf("Netscape") >= 0;
}

GetBrowserInfo();

//====================================================================

