var menuTimeout = 400

var menuSections = new Array()
var menuCountHide = new Array()

var menuSectionCnt = 0
var menuBoxCnt = 0

function menuShow(section, elements) {
	for (var i = 0; i < menuSections.length; i++) {
		if (menuSections[i] != section) {
			menuHide(menuSections[i], menuCountNodes(menuSections[i]));
		}
	}
	for (var i = 1; i <= elements; i++) {
		document.getElementById(section + '-' + i).style.visibility = "visible";
	}
	document.getElementById(section).style.visibility="visible";
	document.getElementById(section + "-top").style.backgroundColor="#8f0001";
}

function menuHide(section, elements) {
	for (var i = 1; i <= elements; i++) {
		document.getElementById(section + "-" + i).style.visibility = "hidden";
		document.getElementById(section).style.zIndex = -1;
	}
	document.getElementById(section).style.visibility="hidden";
	document.getElementById(section + "-top").style.backgroundColor="";
}

function menuTryHide(section, elements, countHide) {
	if (countHide != menuCountHide[section]) return;
	menuHide(section, elements);
}

function menuCountNodes(element) {
	ret = 0;
	nodes = document.getElementById(element).childNodes.length;
	for (var i = 0; i < nodes; i++) {
		if (document.getElementById(element).childNodes[i].nodeType == 1) ret++;
	}
	return ret;
}

function menuInitSection(section) {
	var elements = menuCountNodes(section);
	for (var i = 0; i <= elements; i++) {
		var s = (i == 0 ? (section + '-top') : (section + '-' + i))
		if (i == 0) {
			document.getElementById(s).onmouseover = function() {
				menuShow(section, elements);
				menuCountHide[section]++;
				for (var ii = 0; ii < menuSections.length; ii++) {
					document.getElementById(section).style.zIndex = 1;
					if (menuSections[ii] != section) document.getElementById(menuSections[ii]).style.zIndex = -1;
				}
			}
		} else {
      document.getElementById(s).onmouseover = function() {
        menuShow(section, elements)
        menuCountHide[section]++
      }
    }
    document.getElementById(s).onmouseout = function() {
      setTimeout("menuTryHide('" + section + "', " + elements + ", " + menuCountHide[section] + ")", menuTimeout)
    }
  }
}

function menuMakeId(nodes) {
	for (var i = 0; i < nodes.length; i++) {
		switch (nodes[i].className) {
			case 'top':
				menuSectionCnt++
				menuBoxCnt = 0
				nodes[i].id = 'menu-' + menuSectionCnt + '-top'
			break
			case 'section':
				nodes[i].id = 'menu-' + menuSectionCnt
				menuSections[menuSections.length] = nodes[i].id
			break
			case 'box':
				menuBoxCnt++
				nodes[i].id = 'menu-' + menuSectionCnt + '-' + menuBoxCnt
			break
		}
		if (nodes[i].childNodes) menuMakeId(nodes[i].childNodes);
	}
}

function menuInit() {
	menuMakeId(document.getElementById('menu').childNodes);
	for (var i = 0; i < menuSections.length; i++) menuCountHide[menuSections[i]] = 0;
	for (var i = 0; i < menuSections.length; i++) menuInitSection(menuSections[i]);
}
