﻿
/////////////////////////////////////////////////////////
// 
//  Author:    Erik Terenius (erik@terenius.se)
//  Copyright: Erik Terenius (Cog-Wheel)
// 
/////////////////////////////////////////////////////////

var topMenu;
var menuNode;
var menuNodeCount;
var menuList;
var menuIndex;

function setMenuListPositions() {
	var pixelLeft = 0;
	var leftLimit = document.body.clientWidth - 200 + document.body.scrollLeft;
	for ( var i = 1; i <= menuNodeCount; i++ ) {
		if (menuList[i]) {
			pixelLeft = menuNode[i].offsetLeft - 1 + menuNode[i].offsetParent.offsetLeft + document.body.scrollLeft;
			pixelTop = menuNode[i].offsetTop + menuNode[i].offsetHeight + menuNode[i].offsetParent.offsetTop;
			menuList[i].style.pixelTop = pixelTop;
			if( pixelLeft >= leftLimit )
				menuList[i].style.left = leftLimit + "px";
			else
				menuList[i].style.left = pixelLeft + "px";
		}
	}
}

function hideAllMenuLists() {
	for ( j=1; j<=menuNodeCount; j++ ) {
		if (menuList[j]) {
			menuList[j].style.visibility = "hidden";
		}
	}
}

function initMenus() {

	topMenu   = document.getElementById("topNav");
	
	if (topMenu == null) return( false );
	
	topMenu.innerHTML += tree;
	menuNodeCount = 0;
	menuNode  = new Array;
	menuList  = new Array;

	for ( var i=0, j=0; j < topMenu.childNodes.length; j++ ) {
		
		if ( ( topMenu.childNodes[j].className == "MenuNode" ) || 
		     ( topMenu.childNodes[j].className == "MenuNodeHL" ) ) {
			i++;
			menuNode[i] = topMenu.childNodes[j];
			menuNode[i].menuIndex = i;
			menuList[i] = document.getElementById( menuNode[i].id + "_list" );
			
			if (menuList[i]) {
			
				menuList[i].menuIndex = i;
				
				menuNode[i].onmouseover = function( evt ) {
					hideAllMenuLists();
					evt = (evt) ? evt : ( (window.event) ? window.event : "" )
					if ( !evt ) return false;
					var curMenu = cbCurrentTarget( evt );
					if ( curMenu && curMenu.menuIndex ) var curMenuIndex = curMenu.menuIndex;
					if ( curMenuIndex ) menuList[ curMenuIndex ].style.visibility = "visible"
				}
				menuNode[i].onmouseout = function( evt ) {
					evt = (evt) ? evt : ((window.event) ? window.event : "")
					if ( !evt ) return false;
					var relatedTarget = cbRelatedTarget( evt ); // Mouse pointer destination
					if ( !relatedTarget.parentNode || ( !relatedTarget.menuIndex && !relatedTarget.parentNode.menuIndex ) ) 
						hideAllMenuLists();				
					return true;
				}
				menuList[i].onmouseout = function( evt ) {
					evt = (evt) ? evt : ((window.event) ? window.event : "")
					if ( !evt ) return false;
					var relatedTarget = cbRelatedTarget( evt ); // Mouse pointer destination				
					if ( !relatedTarget.parentNode || ( !relatedTarget.menuIndex && !relatedTarget.parentNode.menuIndex ) ) 
						hideAllMenuLists();				
					return true;
				}
			}
		}
	}
	menuNodeCount = i;
	setMenuListPositions();
}