var popTimer = 0;

//additional stuff for Netscape browser
var isDOM = (document.getElementById ? true : false); 
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);
function getRef(id) {
	if (isDOM) return document.getElementById(id);
	if (isIE4) return document.all[id];
	if (isNS4) return document.layers[id];
}

   function InitMenu()
   {
     var bar = menuBar.children
     //alert(menuBar.children.length);
     //menuBar.style.pixelLeft = 120;
     for(var i=0;i < bar.length;i++) 
        {
          var menu=eval(bar[i].menu)
          bar[i].onmouseover = new Function("ShowMenu("+bar[i].id+")")
          bar[i].onmouseout = new Function("SetHide()")
          if(menu != null)
			{
				menu.style.visibility = "hidden"
				
				var Items = menu.children
				for(var j=0; j<Items.length; j++)
				{
					var menuItem = eval(Items[j].id)
		                
						if(menuItem.menu != null)
						{ 
							menuItem.innerHTML += "<Span Id="+menuItem.id+"_Arrow class='Arrow'>4</Span>"
							//var tmp = eval(menuItem.id+"_Arrow")
							// tmp.style.pixelLeft = menu.getBoundingClientRect().Right //- tmp.offsetWidth - 15
							FindSubMenu(menuItem.menu)}
		               
						if(menuItem.cmd != null) 
						{
						menuItem.onclick = new Function("Do("+menuItem.id+")") } 
		                   
					menuItem.onmouseover = new Function("highlight("+Items[j].id+")")
					menuItem.onmouseout = new Function("SetHide()")
				} 
			}
          //alert(bar[i].cmd + " id=" + bar[i].id + " length=" + bar.length + " i=" + i)
          if(bar[i].cmd != null)
			{
				bar[i].onclick = new Function("Do("+bar[i].id+")")
			}
   
        
        }  
   }
   function FindSubMenu(subMenu)
   {
         var menu=eval(subMenu)
         var Items = menu.children
          for(var j=0; j<Items.length; j++)
            {
              menu.style.visibility = "hidden"
              var menuItem = eval(Items[j].id)
              
              
              if(menuItem.menu!= null)
                 {
                    menuItem.innerHTML += "<Span Id="+menuItem.id+"_Arrow class='Arrow'>4</Span>"
                    // var tmp = eval(menuItem.id+"_Arrow")
                    //tmp.style.pixelLeft = 35 //menuItem.getBoundingClientRect().right - tmp.offsetWidth - 15
                    FindSubMenu(menuItem.menu)
                 }

                 if(menuItem.cmd != null) 
                   {
                   menuItem.onclick = new Function("Do("+menuItem.id+")") } 
                  
              menuItem.onmouseover = new Function("highlight("+Items[j].id+")")
              menuItem.onmouseout = new Function("SetHide()")
                 
            }  
   } 
   function ShowMenu(obj)
   {
	 clearTimeout(popTimer);
     HideMenu(menuBar)
     var menu = eval(obj.menu)
     var bar = eval(obj.id)
     bar.className="barOver"
     if (menu != null)
     {
		menu.style.visibility = "visible"
		menu.style.pixelTop =  obj.getBoundingClientRect().top + obj.offsetHeight + Bdy.scrollTop - 45
		menu.style.pixelLeft = obj.getBoundingClientRect().left + Bdy.scrollLeft
	 }
   }
   
   function highlight(obj)
   {
	 clearTimeout(popTimer);
     var PElement = eval(obj.parentElement.id)
     if(PElement.hasChildNodes() == true)
     {  var Elements = PElement.children
       for(var i=0;i<Elements.length;i++)
       {
          TE = eval(Elements[i].id)
          TE.className = "menuItem"
       }
      } 
     obj.className="ItemMouseOver"
     window.defaultStatus = obj.title
     ShowSubMenu(obj)
   }
   
   function Do(obj)
   {
    var cmd = eval(obj).cmd	
    window.navigate(cmd)
     
   }
   
   function HideMenu(obj)
   {
		if(obj.hasChildNodes()==true)
			{  
				var child = obj.children     
	            
				for(var j =0;j<child.length;j++)
				{
					if (child[j].className=="barOver")
					{var bar = eval(child[j].id)
					if (bar.id == "Bar8")
						bar.className="endBar";
					else
						bar.className="Bar";
					}
	                
					if(child[j].menu != null)
					{
						var childMenu = eval(child[j].menu)
						if(childMenu.hasChildNodes()==true) 
							HideMenu(childMenu)
	                    
						childMenu.style.visibility = "hidden" 
						}
				}
	        
			}
   }
  function ShowSubMenu(obj)
  {
     PMenu = eval(obj.parentElement.id)
      HideMenu(PMenu)
     if(obj.menu != null)
     {
		var menu = eval(obj.menu)
		menu.style.visibility = "visible"
		menu.style.pixelTop =  obj.getBoundingClientRect().top + Bdy.scrollTop - 45;
		menu.style.pixelLeft = obj.getBoundingClientRect().right + Bdy.scrollLeft - 10
		if(menu.getBoundingClientRect().right > window.screen.availWidth )
			menu.style.pixelLeft = obj.getBoundingClientRect().left - menu.offsetWidth;
		if (menu.getBoundingClientRect().bottom > Bdy.clientHeight)
			menu.style.pixelTop =  obj.getBoundingClientRect().top + Bdy.scrollTop - (45+ (menu.getBoundingClientRect().bottom - Bdy.clientHeight)) ;
     }

  } 
  function RePosMenu(obj)
  {
//	var diff
//	diff = Bdy.clientWidth - 800;
//	if (diff < 0 )
//		obj.style.pixelLeft = 120;
//	else
//		obj.style.pixelLeft = 120 + diff/8;
  }
  
  function SetHide()
  {
	popTimer = setTimeout('HideMenu(menuBar)', 500);
  }
//Here are the additional scripts for FireFox,Netscape Browser
function getSty(id) {
	return (isNS4 ? getRef(id) : getRef(id).style);
	} 
	// Array showing highlighted menu items.
	var litNow = new Array();
	
function popOver(menuNum, itemNum) {
	//alert("popOver");
	clearTimeout(popTimer);
	hideAllBut(menuNum);
	litNow = getTree(menuNum, itemNum);
	changeCol(litNow, true);
	targetNum = menu[menuNum][itemNum].target;
	if (targetNum > 0) {
	thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left);
	thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
	with (menu[targetNum][0].ref) {
	left = parseInt(thisX + menu[targetNum][0].x);
	top = parseInt(thisY + menu[targetNum][0].y);
	visibility = 'visible';
		}
	}
	}
function popOut(menuNum, itemNum) {
	if ((menuNum == 0) && !menu[menuNum][itemNum].target)
	hideAllBut(0)
	else
	popTimer = setTimeout('hideAllBut(0)', 500);
	}
function getTree(menuNum, itemNum) {

	// Array index is the menu number. The contents are null (if that menu is not a parent)
	// or the item number in that menu that is an ancestor (to light it up).
	itemArray = new Array(menu.length);

	while(1) {
	itemArray[menuNum] = itemNum;
	// If we've reached the top of the hierarchy, return.
	if (menuNum == 0) return itemArray;
	itemNum = menu[menuNum][0].parentItem;
	menuNum = menu[menuNum][0].parentMenu;
	}
	}

// Pass an array and a boolean to specify colour change, true = over colour.
function changeCol(changeArray, isOver) {
	for (menuCount = 0; menuCount < changeArray.length; menuCount++) {
	if (changeArray[menuCount]) {
	newCol = isOver ? menu[menuCount][0].overCol : menu[menuCount][0].backCol;
	// Change the colours of the div/layer background.
	with (menu[menuCount][changeArray[menuCount]].ref) {
	if (isNS4) bgColor = newCol;
	else backgroundColor = newCol;
			}
		}
	}
	}
function hideAllBut(menuNum) {
	var keepMenus = getTree(menuNum, 1);
	for (count = 0; count < menu.length; count++)
	if (!keepMenus[count])
	menu[count][0].ref.visibility = 'hidden';
	changeCol(litNow, false);
	}

function writeMenus() {
	//alert("function writeMenus");
	if (!isDOM && !isIE4 && !isNS4) return;

		for (currMenu = 0; currMenu < menu.length; currMenu++) with (menu[currMenu][0]) {
			// Variable for holding HTML for items and positions of next item.
			var str = '', itemX = 0, itemY = 0;

			// Remember, items start from 1 in the array (0 is menu object itself, above).
			// Also use properties of each item nested in the other with() for construction.
			for (currItem = 1; currItem < menu[currMenu].length; currItem++) with (menu[currMenu][currItem]) {
			var itemID = 'menu' + currMenu + 'item' + currItem;

			// The width and height of the menu item - dependent on orientation!
			var w = (isVert ? width : length);
			var h = (isVert ? length : width);

			// Create a div or layer text string with appropriate styles/properties.
			// Thanks to Paul Maden (www.paulmaden.com) for helping debug this in IE4, apparently
			// the width must be a miniumum of 3 for it to work in that browser.
			if (isDOM || isIE4) {
				str += '<div id="' + itemID + '" style="Z-INDEX: 105;position: absolute; left: ' + itemX + '; top: ' + itemY + '; width: ' + w + '; height: ' + h + '; visibility: inherit; ';
				if (backCol) str += 'background: ' + backCol + '; ';
				str += '" ';
			}
			if (isNS4) {
				str += '<layer id="' + itemID + '" left="' + itemX + '" top="' + itemY + '" width="' +  w + '" height="' + h + '" visibility="inherit" ';
				if (backCol) str += 'bgcolor="' + backCol + '" ';
			}
			if (borderClass) str += 'class="' + borderClass + '" ';

			// Add mouseover handlers and finish div/layer.
			str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';

			// Add contents of item (default: table with link inside).
			// In IE/NS6+, add padding if there's a border to emulate NS4's layer padding.	
			// If a target frame is specified, also add that to the <a> tag.

			str += '<table width="' + (w - 8) + '" border="0" cellspacing="0" cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '"><tr><td align="left" height="' + (h - 7) + '">' + '<a class="' + textClass + '" href="' + href + '"' + (frame ? ' target="' + frame + '">' : '>') + text + '</a></td>';
			if (target > 0) {

				// Set target's parents to this menu item.
				menu[target][0].parentMenu = currMenu;
				menu[target][0].parentItem = currItem;
			
				// Add a popout indicator.
				if (popInd) str += '<td class="' + textClass + '" align="right">' + popInd + '</td>';
			}
			str += '</tr></table>' + (isNS4 ? '</layer>' : '</div>');
			if (isVert) itemY += length + spacing;
			else itemX += length + spacing;
		}
		if (isDOM) {
			var newDiv = document.createElement('div');
			document.getElementsByTagName('body').item(0).appendChild(newDiv);
			newDiv.innerHTML = str;
			ref = newDiv.style;
			ref.position = 'absolute';
			ref.visibility = 'hidden';
		}

		// Insert a div tag to the end of the BODY with menu HTML in place for IE4.
		if (isIE4) {
			document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden">' + str + '</div>');
			ref = getSty('menu' + currMenu + 'div');
		}

		// In NS4, create a reference to a new layer and write the items to it.
		if (isNS4) {
			ref = new Layer(0);
			ref.document.write(str);
			ref.document.close();
		}

		for (currItem = 1; currItem < menu[currMenu].length; currItem++) {
			itemName = 'menu' + currMenu + 'item' + currItem;
			if (isDOM || isIE4) menu[currMenu][currItem].ref = getSty(itemName);
			if (isNS4) menu[currMenu][currItem].ref = ref.document[itemName];
		}
	}
	with(menu[0][0]) {
		ref.left = x;
		ref.top = y;
		ref.visibility = 'visible';
		}
	}

function clickHandle(evt)
	{
	if (isNS4) document.routeEvent(evt);
	hideAllBut(0);
	}
// This is just the moving command for the example.
function moveRoot()
{
 with(menu[0][0].ref) left = ((parseInt(left) < 100) ? 100 : 5);
}
