var menuselected = '';
var menuexpanded = new Array();

function menu_hide(el) {
	el.style.display = 'none';
}

function menu_show(el) {
	el.style.display = 'block';
}

function menu_hover(id) {
	if(menu_expanded(id))
		return;
	var el = document.getElementById(id);
	if(menuselected != '') {
		if(!menu_expanded(menuselected)) {
			menu_hide(document.getElementById(menuselected));
		}
	}
	menuselected = id;
	menu_show(el);
}

function menu_expanded(id) {
	for(x in menuexpanded) {
		if(menuexpanded[x] == id)
			return true;
	}
	return false;
}

function menu_collapse(id) {
	var old_menu = menuexpanded;
	menuexpanded = new Array();
	var j = 0;
	for(x in old_menu) {
		if(old_menu[x] != id) {
			menuexpanded[j] = old_menu[x];
			j++;
		}
	}
	menu_hide(document.getElementById(id));
}

function menu_expand(id) {
	menuexpanded[menuexpanded.length] = id;
	menu_show(document.getElementById(id));
}

function collapse_toggle(id) {
	var el = document.getElementById(id);

	if(menu_expanded(id)) {
		menu_collapse(id);
	} else {
		menu_expand(id);
	}
}

function collapse_all() {
	var els = getElementsByClass("menugroup");
	var elsLen = els.length;
	for(i = 0; i < elsLen; i++) {
		menu_hide(els[i]);
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if (node == null)
		node = document;
	if (tag == null)
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
