//*********************************************************************
//
//	Simple Dynamic Vertical Menus
//
//	Author: William H. Cloward
//	Copyright 2003 by WIlliam H. Cloward  All Rights Reserved
//
//*********************************************************************

//	master list of menu sets
var menuMasterList = new Array();
var baseName = "menu";

//	whether cursor is over one (any) of the menu selections
var cursorOverhead = 0;

//	timeout (milliseconds) before collapsing
var menuRelax = 400;
var menuTimer = 0;


//	determine whether a menu system has already been initialized
function VerticalMenu_Initialized() {
	if (menuMasterList.length >= 1)
		return(1);
	else
		return(0);
}


//	set up menu tracking; arguments:
//		menuSetName, sub_menu_id_1, sub_menu_id_2, ...
function VerticalMenu_Add() {
	var args = 0;
	var menu_set = "";

	//	process each argument
	for (args = 0; args < arguments.length; args++) {
		//	create this menu set
		if (args == 0) {
			//	save its name
			menuMasterList[menuMasterList.length] = arguments[0];

			//	create its sub-menu array and initialize its state variable
			menu_set = baseName + arguments[0];
			eval(menu_set + "= new Array()");
			eval(menu_set + "[0] = 'collapsed'");
		}
		else {
			//	save each submenu name
			eval(menu_set + "[" + args + "] = '" + arguments[args] + "';");
		}
	}

	return true;
}


//	mouse has just crossed over onto one of our dynamic menu selections
function VerticalMenu_Over(target, menuName) {
	var selection = 0;
	var menu_set = "";
	var menu_item = "";
	var menu_count = 0;

	//	track cursor's location with regard to this selection
	menu_set = baseName + menuName;
	eval(menu_set + "[0] = 'expanded';");
	cursorOverhead = 1;

	//	expand the specified menu set (make its submenu selections visible)
	menu_count = eval(menu_set + ".length");
	for (selection = 1; selection <= menu_count; selection++) {
		if (eval(menu_set + "[" + selection + "]") != undefined) {
			eval("menu_item = " + menu_set + "[" + selection + "]");
			eval(menu_item + ".style.display = 'inline';");
		}
	}

	//	activate the current selection's glow
	target.filters.item("DXImageTransform.Microsoft.Glow").enabled = true;

	return true;
}


//	mouse has just left one of our dynamic menu selections
function VerticalMenu_Out(target, menuName) {
	//	track cursor's location with regard to this selection
	eval(baseName + menuName + "[0] = 'collapsed';");
	cursorOverhead = 0;

	//	deactivate the current selection's glow
	target.filters.item("DXImageTransform.Microsoft.Glow").enabled = false;

	//	allow a little time, to see whether user is just moving over another dynamic menu selection
	if (menuTimer != 0) {
		clearTimeout(menuTimer);
	}
	menuTtimer = setTimeout("VerticalMenu_Relax()", menuRelax);

	return true;
}


//	collapse timer has fired
function VerticalMenu_Relax() {
	var main_menu = 0;
	var selection = 0;
	var menu_set = "";
	var menu_item = "";
	var menu_count = 0;
	var sub_menu_count = 0;

	//	is the cursor still over a menu selection?
	if (cursorOverhead != 0) {
		return;
	}
	
	//	consider each defined dynamic menu set
	menu_count = menuMasterList.length;
	for (main_menu = 0; main_menu < menu_count; main_menu++) {
		//	is the cursor not over any of this menu set's elements?
		menu_set = baseName + menuMasterList[main_menu];
		if (eval(menu_set + "[0] == 'collapsed'")) {
			//	collapse the specified menu set (make its submenu selections disappear)
			sub_menu_count = eval(menu_set + ".length");
			for (selection = 1; selection <= sub_menu_count; selection++) {
				if (eval(menu_set + "[" + selection + "]") != undefined) {			
					eval("menu_item = " + menu_set + "[" + selection + "]");
					eval("document.all." + menu_item + ".style.display = 'none'");
				}
			}
		}
	}

	return true;
}

