﻿// menu code
function showMenu(el) {
	if (el.clippingRectangle) {
		el.clippingRectangle[2] += 10;
		if (el.clippingRectangle[2] >= el.savedOH) {
			el.clippingRectangle[2] = el.savedOH;
			clearInterval(el.intervalID);
			// reset the clip: browser-specific
			if (document.all && !window.opera) {
				el.style.clip = 'rect(auto, auto, auto, auto)';
			} else {
				el.style.clip = 'auto';
			}
			return;
		}
		el.style.clip = 'rect(' + el.clippingRectangle.join('px ') + 'px)';
		el.style.display = 'block';
	}
  }

function hideMenu(el) {
	if (el.clippingRectangle) {
		el.clippingRectangle[2] -= 10;
		if (el.clippingRectangle[2] <= 0) {
			el.clippingRectangle[2] = 0;
			clearInterval(el.intervalID);
			// reset the clip: browser-specific
			if (document.all && !window.opera) {
				el.style.clip = 'rect(auto, auto, auto, auto)';
			} else {
				el.style.clip = 'auto';
			}
			el.style.display = 'none';
			return;
		}
		el.style.clip = 'rect(' + el.clippingRectangle.join('px ') + 'px)';
	}
}

function mover(e, targetElement) {
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if (!el) return;
	clearTimeout(el.outTimeout);
	if (!el.isIn) {
		for (var i=0; i<el.childNodes.length; i++) {
			var node = el.childNodes[i];
			if (node.nodeName.toLowerCase() == 'ul') {
				clearInterval(node.intervalID);
				node.style.display = 'block';
				node.clippingRectangle = [0, node.offsetWidth, 0, 0];
				node.savedOW = node.offsetWidth;
				node.savedOH = node.offsetHeight;
				node.style.display = 'none';
				node.intervalID = setInterval(function() {showMenu(node);}, 10);
				break;
			}
		}
	}
	el.isIn = true;
}

function mout(e, targetElement) {
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if (!el) return;
	el.outTimeout = setTimeout(function() { mout2(el); }, 300);
}

function mout2(el) {
	for (var i=0; i<el.childNodes.length; i++) {
		var node = el.childNodes[i];
		if (node.nodeName.toLowerCase() == 'ul') {
			clearInterval(node.intervalID);
			node.intervalID = setInterval(function() {hideMenu(node);}, 10);
			break;
		}
	}
	el.isIn = false;
}

function getMoverFor(node) {
	return function(e) { mover(e, node); };
}

function getMoutFor(node) {
	return function(e) { mout(e, node); };
}

function create_nodes() {
	var ULs = document.getElementsByTagName('ul');
	for (var t=0; t<ULs.length; t++) {
		if (ULs[t].className == 'TopMenu') {
			var LIs = ULs[t].getElementsByTagName('li');
			for (var i=0; i<LIs.length; i++) {
				var node = LIs[i];
				if (node.nodeName.toLowerCase() == 'li' && node.getElementsByTagName('ul').length > 0) {
					addEvent(node, 'mouseover', getMoverFor(node), false);
					addEvent(node, 'mouseout', getMoutFor(node), false);
					node.isIn = false;
				}
			}
		}
	}
}

addEvent(window, 'load', create_nodes, false);
addEvent(window, 'unload', EventCache.flush, false);