
var activeTab, newTab, popup, menuShowTimer;
var menuShowMethod;
var activeDiv;

/* ------- normal mode ------- */

var menuUL;

//var win = open();

function debug(msg){
//	win.document.writeln(msg + "<br/>");
}

function mainMenuMouseOver(ev){
	if (!ev) var ev = window.event;
	var src = ev.srcElement ? ev.srcElement : ev.target;

	if (src.tagName == "A") {
		var li = src.parentNode;
		var ul = li.parentNode;
		if (li == ul.activeTab) { return; }
		if (ul.activeTab) mainMenuCollapseTree(ul.activeTab);

		if (li.childNodes.length == 2) {
		
			debug("Opening: " + li.innerText);
			var a = li.childNodes[0];
			var div = li.childNodes[1];
			//a.className = "sel";
			div.className = "sel";
			ul.activeTab = li;
		}
		mainMenuShowHideSelects();
	}
}
function lazyClose(sender)
{
	var closeFunc = function () {
		mainMenuCollapseTree(sender.parentNode);
	}
	sender.Timer = setTimeout(closeFunc, 500);
}
function onMouseIn(sender)
{
	if(sender.Timer)
	{
		debug("Reseting timer: " + sender.innerText);
		clearTimeout(sender.Timer);
		sender.Timer = null;
	}
}

function mainMenuCollapseTree (li){
	debug("Collapsing: " + li.innerText);
	if (li.childNodes.length == 2) {
		var div = li.childNodes[1];
		onMouseIn(div);
		var ul = div.childNodes[0];
		if (ul.activeTab) {
			mainMenuCollapseTree (ul.activeTab);
		}
		div.className = "";
	}
	//li.childNodes[0].className = "";
	li.parentNode.activeTab = 0;
}

function mainMenuShowHideSelects(){
	var selects = document.getElementsByTagName("SELECT");
	for (var i = 0; i < selects.length; i++){
		var sel = selects[i];
		var l = leftPosition(sel);
		var t = topPosition(sel);
		var vis = !mainMenuIsOverriden(l, t, sel.offsetWidth, sel.offsetHeight, window.menuUL);
		var knowold = ((sel.oldvis == "") || (sel.oldvis));
		if (vis)
		{
			if (knowold)
			{
				sel.style.visibility = sel.oldvis;
				sel.oldvis = void 0;
			}
		}
		else
		{
			if (!knowold)
			{
				sel.oldvis = sel.style.visibility;
				sel.style.visibility = "hidden";
			}
		}
	}
}

function mainMenuIsOverriden(x, y, w, h, menu){
	var menuL = leftPosition(menu);
	var menuT = topPosition(menu);
	var menuW = menu.offsetWidth;
	var menuH = menu.offsetHeight;
	if (((x + w) < menuL) || (x > (menuL + menuW)) ||
		((y + h) < menuT) || (y > (menuT + menuH)))
	{
		if (menu.activeTab)		// this menu doesn't overlap obj
		{
			if (mainMenuIsOverriden(x, y, w, h, menu.activeTab.childNodes[1].childNodes[0]))
			{
				return true;	// child menu overlap obj
			}
			return false;		// child menu doesn't overlap obj
		}
		return false;			// child menu doesn´t exist
	}
	else
	{
		return true;			// this menu overlap obj
	}
}

function leftPosition(obj){
	return obj.offsetLeft + (obj.offsetParent ? leftPosition(obj.offsetParent) : 0);
}

function topPosition(obj){
	return obj.offsetTop + (obj.offsetParent ? topPosition(obj.offsetParent) : 0);
}

function mainMenuBlur(ev){
	if (!ev) var ev = window.event;
	var src = ev.srcElement ? ev.srcElement : ev.target;
	src.blur();
}

/* ------- / normal mode ------- */


/* ------- popup mode ------- */

function mainMenuMouseOverPopup(ev){
	if (!ev) var ev = window.event;
	var src = ev.srcElement;
	if (src.tagName == "A") {
		var li = src.parentNode;
		if (li.parentNode.id != "mainMenu") return;
		var ul = src.nextSibling;
		if (ul) {
			window.newTab = ul;
		} else {
			window.newTab = 0;
		}
	}
}

function mainMenuSwitch(){
	var popup = window.popup;
	var ul = window.newTab;
	if (ul == window.activeTab) return;
	if (ul) {
		popup.document.body.innerHTML = ul.outerHTML;
		mainMenuSetClickEvent(popup.document.body.childNodes);
		popup.show(ul.offsetLeft, ul.offsetTop,
				ul.offsetWidth, ul.offsetHeight, ul.offsetParent);
	} else {
		popup.hide();
	}
	window.activeTab = ul;
}

function mainMenuSetClickEvent(childs){
	for (var i = 0; i < childs.length; i++) {
		var child = childs[i];
		if (child.tagName == "A") {
			child.onclick = mainMenuClick;
		}
		mainMenuSetClickEvent(child.childNodes)
	}
}



function mainMenuClick(ev){
	//var src = this.window.event.srcElement;
	window.mainMenuGoToUrl(this.href);
}


function mainMenuGoToUrl(url){
	window.popup.hide();
	location.href = url;
}

/* ------- / popup mode ------- */



function mainMenuCollapse() {
	if (menuShowMethod == "popup") {
		window.popup.hide();
		window.newTab = 0;
	} else {
		if(window.menuUL){
			if (window.menuUL.activeTab) {
				mainMenuCollapseTree(window.menuUL.activeTab);
				mainMenuShowHideSelects();
			}
		}
	}
}

function mainMenuInit(bodyElement)
{
	var menu = bodyElement. document.getElementById("MainMenu");
	bodyElement.onresize = bodyElement.onscroll = mainMenuCollapse;

	if(navigator.appName == "Netscape")
	{
		var topBarCellControl = document.getElementById("topBarCell");
		if(topBarCellControl != null)
		{

			topBarCellControl.style.position = "";
		}
	}

	if (0 && window.createPopup) {
		menuShowMethod = "popup";
		var tab = window.createPopup();
		tab.document.createStyleSheet(this.document.styleSheets[0].href);
		tab.document.body.id = "mainMenu";
		window.popup = tab;
		menu.onmouseover = mainMenuMouseOverPopup;
		setInterval("mainMenuSwitch();", 20)
	} else {
		window.menuUL = menu;
		menu.onmouseover = mainMenuMouseOver;
		menu.onclick = mainMenuBlur;
	}
}


