var menus = new Array();
var to_id = -1;

function register_menu(id) {
	menus.push(id);
}

function hide_all(id) {
	console.log(id + ": Hiding all...");
	for (var i = 0; i < menus.length; i++) {
		var el = document.getElementById('menu_' + menus[i]);
		if (el != null) {
			el.style.display = "none";
		}
	}
}

function hide_all_to(id) {
		to_id = setTimeout(hide_all, 500);
}

/*
function show_menu(id, arr) {
	console.log(id + ": Running menus for: " + arr.join(", "));
	for (var i = 0; i < menus.length; i++) {
		var el = document.getElementById('menu_' + menus[i]);
		if (el != null) {
			if (in_array(menus[i], arr)) {
				console.log(id + ": " + menus[i] + ": displaying.");
				el.style.display = '';
			} else {
				console.log(id + ": " + menus[i] + ": hiding.");
				el.style.display = 'none';
			}
		}
	}
	console.log(id + ": Done.");
}
 */

var sm_stack = new Array();

function show_menu(id, arr) {
	for (var i = 0; i < arr.length; i++) {
		if (!in_array(arr[i], sm_stack)) {
			console.log("Shoving " + arr[i] + " onto stack...");
			sm_stack.push(arr[i]);
		}
	}
}



function do_show_menu(id, arr) {
	clearTimeout(to_id);
	show_menu(id, arr);
	console.log(id + ": Running menus for: " + sm_stack.join(", "));
	for (var i = 0; i < menus.length; i++) {
		var el = document.getElementById('menu_' + menus[i]);
		if (el != null) {
			if (in_array(menus[i], sm_stack)) {
				console.log(id + ": " + menus[i] + ": displaying.");
				el.style.display = '';
				var is_first = false;
				if (menus[i] == sm_stack[0]) {
					is_first = true;
				}
				margin_shift(menus[i], is_first);
			} else {
				el.style.display = "none";
			}
		}
	}
	sm_stack = new Array();
	console.log(id + ": Done.");
}


function in_array(needle, haystack) {
	for (var i = 0; i < haystack.length; i++) {
		if (needle == haystack[i]) {
			return true;
		}
	}
	return false;
}


function margin_shift(id, is_first) {
	var el = document.getElementById('menu_' + id);
	if (is_first && is_vertical) {
		el.style.marginTop = el.parentNode.offsetHeight + 7;
	} else {
		// el.style.marginLeft = el.parentNode.offsetWidth;
	}
	while (el != null) {
		if (el == document) {
			console.log("[[document]]");
		} else {
			console.log(el.tagName + (el.id.length > 0 ? "#" + el.id : "") + ": " + el.offsetWidth + ", " + el.offsetHeight);
		}
		el = el.parentNode;

	}
}

var is_vertical = 1;	
var console = window.console || {};
console.log = console.log || function(t) {};
