var mainmenu;
var pulldowns = new Array();
var mm = 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]);
	}
	
}


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);
    }
  }
}
*/
function xTableIterate(mar, fnCallback,data)
{
    for (var c = 0; c < mar.length; ++c)
	{
      fnCallback(document.getElementById(mar[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){
	//alert(obj.style.position);
	//alert(obj.style.x)
	var w=0
	var h=0
	try{
	if (obj.style.width)
		w=obj.style.width;
	if (obj.style.height)
		h=obj.style.height;
	var objXY = FindXY(obj);
	return objXY?{ x:objXY.x, y:objXY.y, w:w, h:h }:{ x:0, y:0, w:0, h:0 };
	}
	catch(e)
	{
		var objXY = FindXY(obj);
		return objXY?{ x:100, y:100, w:100, h:100 }:{ 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);
	for(var mo=0; mo<mm.length;mo++)
	{
		init(document.getElementById(mm[mo]));	
	}
	
	items=mm;
	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;
		var a_arr=new Array();
		
		/*if (document.getElementById(this.id).getAttribute("sub")==1)
		document.getElementById("submenu"+this.id).style.display='none';
		*/
		
		for (var i in mainmenu.submenus)
		{
			if (document.getElementById(this.id).getAttribute('sub')!='1')
			{
				if (i != this.id)
				mainmenu.submenus[i].element.style.display='none';
			}
			if (document.getElementById(this.id).getAttribute('sub')=='1')
			{
				/*if ((mainmenu.submenus[i].element.id=="submenuitem20") && (this.id=='item20'))
				{
				 alert(document.getElementById(mainmenu.submenus[i].element.id).getAttribute('level')+' '+mainmenu.submenus[i].element.id);
				 alert(this.id+' - '+document.getElementById(this.id).getAttribute('level'));
				}*/
				if ((i != this.id) && (document.getElementById(mainmenu.submenus[i].element.id).getAttribute('level')>document.getElementById('submenu'+document.getElementById(this.id).getAttribute('parent')).getAttribute('level')))
				{
					//alert(document.getElementById('submenu'+document.getElementById(this.id).getAttribute('parent')).getAttribute('level'));
					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;
			//alert(pos.y);
			pos = FindXYWH(mainmenu.submenus[this.id].anchor);
			mainmenu.submenus[this.id].element.style.left = pos.x+140;
			//mainmenu.submenus[this.id].element.style.width =120;
			mainmenu.submenus[this.id].element.style.display='block';
		}

	}

	function evOut()
	{
		this.className = 'menuitem';
		mainmenu.insideMenu = false;
			for (var i in mainmenu.submenus)
		{
			if (document.getElementById(this.id).getAttribute('sub')!='1')
			{
				if (i != this.id)
				mainmenu.submenus[i].element.style.display='none';
			}
			if (document.getElementById(this.id).getAttribute('sub')=='1')
			{
				/*if ((mainmenu.submenus[i].element.id=="submenuitem20") && (this.id=='item20'))
				{
				 alert(document.getElementById(mainmenu.submenus[i].element.id).getAttribute('level')+' '+mainmenu.submenus[i].element.id);
				 alert(this.id+' - '+document.getElementById(this.id).getAttribute('level'));
				}*/
				if ((i != this.id) && (document.getElementById(mainmenu.submenus[i].element.id).getAttribute('level')>document.getElementById('submenu'+document.getElementById(this.id).getAttribute('parent')).getAttribute('level')))
				{
					//alert(document.getElementById('submenu'+document.getElementById(this.id).getAttribute('parent')).getAttribute('level'));
					mainmenu.submenus[i].element.style.display='none';
				}
				
			}
		}

		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+140;
		//submenu.element.style.width = 120;
		submenu.element.style.top = pos.y;
		
		xTableIterate(submenu.element,setwidth,pos.w);
	}
	function setwidth(obj,data)
	{
		obj.style.width = data;
	}
}


function hideMenu()
{
//	xGetElementById('label1').innerHTML = mainmenu.insideMenu.toString() + " " +mainmenu.insideSubMenu.toString();
	//alert('hide');
	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);
	}
	
}

