
var mainmenu;
var pulldowns = new Array();

window_onload = function()
{
	mainmenu = new MainMenu('mainmenu');
	w = xGetElementById('bodytable').style.width;
	for (i in pulldowns)
	{
		new PullDownMenu(mainmenu, pulldowns[i][0],pulldowns[i][1],pulldowns[i][2]);
	}
	if (home_page)
	{
		zsidemenu = xGetElementById('sidemenu');
		if (zsidemenu)
		{
			xTableIterate(zsidemenu, sideMenuInit);
		}
	}
}

function smMouseOver()
{
	this.className = 'sidemenuitemH';
}

function smMouseOut()
{
	this.className = 'sidemenuitem';
}

function smMouseClick()
{
	for (i in this.childNodes)
	{
		if (this.childNodes[i].tagName == 'A')
		{
			document.location = this.childNodes[i].href;
		}
	}
}
function sideMenuInit(item,data)
{
	if (item.className == 'sidemenuitem')
	{
		item.onmouseover = smMouseOver;
		item.onmouseout = smMouseOut;
		item.onclick = smMouseClick;
	}
}

function xGetElementById(e)
{
  if(typeof(e)!='string') return e;
  if(document.getElementById) e=document.getElementById(e);
  else if(document.all) e=document.all[e];
  else e=null;
  return e;
}

// documentation is available for this function:
function xTableIterate(sec, fnCallback,data)
{
  var r, c;
  sec = xGetElementById(sec);
  if (!sec || !fnCallback) { return; }
  for (r = 0; r < sec.rows.length; ++r)
  {
    for (c = 0; c < sec.rows[r].cells.length; ++c)
	{
      fnCallback(sec.rows[r].cells[c],data);
    }
  }
}

// Find the x,y location in pixels for a relatively positioned object
// returns an object with .x and .y properties.
function FindXY(obj){
	var x=0,y=0;
	while (obj!=null){
		x+=obj.offsetLeft;
		y+=obj.offsetTop;

//		x+=obj.offsetLeft-obj.scrollLeft;
//		y+=obj.offsetTop-obj.scrollTop;
		obj=obj.offsetParent;
	}
	return {x:x,y:y};
}

// Find the x,y location in pixels for a relatively positioned object
// returns an object with .x, .y, .w (width) and .h (height) properties.
function FindXYWH(obj){
	var objXY = FindXY(obj);
//	return objXY?{ x:objXY.x, y:objXY.y, w:obj.style.width, h:obj.style.height }:{ x:0, y:0, w:0, h:0 };
	return objXY?{ x:objXY.x, y:objXY.y, w:obj.offsetWidth, h:obj.offsetHeight }:{ x:0, y:0, w:0, h:0 };
}

function MainMenu(id)
{
	var items =  new Array();
	this.submenus = new Array();
	this.insideMenu = false;

	var tbl = xGetElementById(id);
	if (tbl)
	{
		xTableIterate(tbl,init);
	}
	this.items = items;
	this.addSubMenu = addSubMenu;

	function init(item,data)
	{
		if (item.className == 'menuitem')
		{
			item.onmouseover = evOver;
			item.onmouseout = evOut;
			items[item.id] = item;
		}
	}

	function evOver()
	{
		this.className = 'menuitemH';
		mainmenu.insideMenu = true;
		mainmenu.insideSubMenu = false;
		for (var i in mainmenu.submenus)
		{
			if (i != this.id)
				mainmenu.submenus[i].element.style.display='none';
		}

		if (mainmenu.submenus[this.id] != null)
		{
			var pos = FindXYWH(this);
			mainmenu.submenus[this.id].element.style.top = pos.y + pos.h;

			pos = FindXYWH(mainmenu.submenus[this.id].anchor);
			mainmenu.submenus[this.id].element.style.left = pos.x;
			mainmenu.submenus[this.id].element.style.width = pos.w-1;
			mainmenu.submenus[this.id].element.style.display='block';
		}

	}

	function evOut()
	{
		this.className = 'menuitem';
		mainmenu.insideMenu = false;
		setTimeout("hideMenu()", 500);
	}

	function addSubMenu(itemid,submenu)
	{
		this.submenus[itemid] = submenu;
		// setting submenu position
		var pos = FindXYWH(items[itemid]);
		submenu.element.style.position = 'absolute';
		submenu.element.style.left = pos.x;
		submenu.element.style.width = pos.w-1;
		submenu.element.style.top = pos.y + pos.h;
		xTableIterate(submenu.element,setwidth, pos.w-1);
	}
	function setwidth(obj,data)
	{
		obj.style.width = data;
	}
}

function hideMenu()
{
//	xGetElementById('label1').innerHTML = mainmenu.insideMenu.toString() + " " +mainmenu.insideSubMenu.toString();

	if (!( mainmenu.insideMenu || mainmenu.insideSubMenu))
	{
		for (var i in mainmenu.submenus)
		{
			mainmenu.submenus[i].element.style.display='none';
		}
	}
}

var hColor;

function PullDownMenu(mainmenu, id, anchorId, hiliteColor)
{
	this.element = xGetElementById(id);
	this.anchor = xGetElementById(anchorId);
	this.element.onmouseover = mOverMenu;
	this.element.onmouseout = mOutMenu;
	this.hiliteColor = hiliteColor;

	this.element.pulldown = this;
	var tbl = xGetElementById(id);
	xTableIterate(this.element,init,this);

	mainmenu.addSubMenu(anchorId,this);

	function init(obj,data)
	{
		obj.className = 'submenuitem';
		obj.onmouseover = evOver;
		obj.onmouseout = evOut;
		obj.onclick = evClick;
		obj.hiliteColor = data.hiliteColor;
	}

	function evClick()
	{
		for (i in this.childNodes)
		{
			if (this.childNodes[i].tagName == 'A')
			{
				document.location = this.childNodes[i].href;
			}
		}
	}
	function evOver()
	{
		this.className = 'submenuitemH';
//		this.style.borderLeftColor = this.hiliteColor;
//		this.style.borderRightColor = this.hiliteColor;
	}
	function evOut()
	{
		this.className = 'submenuitem';
//		this.style.borderLeftColor = '#808080';
//		this.style.borderRightColor = '#808080';
	}

	function mOverMenu()
	{
		mainmenu.insideSubMenu = true;
	}
	function mOutMenu()
	{
		mainmenu.insideSubMenu = false;
		setTimeout("hideMenu()", 500);
	}
}


