//Collapsible Menu Script.
//Created by Kyle Edwards.

// Modified to work with Firefox and to contain some extra "features"

function collapse_menu(menu_number){
	if (on_off[menu_number]==0) {
		var html_output = menu_code[menu_number].join(join_html);
		var menu = document.getElementById(menu_name[menu_number]);
		if(menu != null) {
			menu.innerHTML=html_output;
		}
		on_off[menu_number]=1;
	} else {
		var menu = document.getElementById(menu_name[menu_number]);
		if(menu != null) {
			menu.innerHTML="";
		}
		on_off[menu_number]=0;
	}
	
	var parent_menutree = parent_menu_tree(menu_number);
	// alert("parent_menutree length " + parent_menutree.length);

	// turn off the other menus that aren't in the parent tree
	for (loop=0; loop < number_of_menus; loop++){
		if(loop != menu_number){
			var turnoff=1;
			for (parent_menu=0; parent_menu < parent_menutree.length; parent_menu++){
				if(parent_menutree[parent_menu] == loop) {
					turnoff=0;
				}
			}
			
			if(turnoff == 1) {
				// alert("turning off " + loop);
				on_off[loop]=0;
				var menu = document.getElementById(menu_name[loop]);
				if(menu != null) {
					menu.innerHTML="";
				}
			}
		}
	}
}

function parent_menu_tree(menu_number){
	var parent_menutree=new Array();
	var parent_menutree_index=0;;
	var parent_menu = menu_parent[menu_number];
	var limit=5;
	var limit_counter=0;
	
	while(parent_menu != -1) {
		// the following will make sure that the javascript doesn't get caught in an endless loop
		if(limit == limit_counter) {
			// if here, then give up and return the results
			return parent_menutree;
		}
		
		if(parent_menutree_index == 0) {
			parent_menutree[parent_menutree_index++] = menu_parent[menu_number];
			parent_menu = menu_parent[menu_number];
		}
		else {
			parent_menutree[parent_menutree_index++] = menu_parent[parent_menu];
			parent_menu = menu_parent[parent_menu];
		}
	// 	alert("debug " + parent_menu);
		limit_counter++;
	}
	
	return parent_menutree;
}

