var isIE = BrowserDetect.browser == "Explorer"; // obsolete, but required for older styles with dropdown menu

var menuStyle = '';
var menuPullDownDirection = 'topbottom';
var menuCurrentTopBgColor = 'white';
var menuCurrentTopColor = 'black';
var menuClearTopBgColor = 'black';
var menuClearTopColor = 'white';
var menuCurrentBgColor = 'white';
var menuCurrentColor = 'black';
var menuClearBgColor = 'black';
var menuClearColor = 'white';
var menuTopFix = 0;
var menuLeftFix = 0;
var menuSubTopFix = 0;
var menuSubLeftFix = 0;
var menuClick = 0;
var menuClicked = 0;

var prefix = '';
var menuTimer;
var fullexit = false;
var currentTopItem = null;
var currentItem = null;

var ghideid = 0;

function UpdateCurrent(elem) {
	if (currentItem) {
		if (menuStyle) currentItem.style.backgroundImage = "url(css/"+menuStyle+"/gfx/arrow.gif)";
		//currentItem.style.backgroundColor = menuCurrentBgColor;
		//currentItem.style.color = menuCurrentColor;
		currentItem = null;
	}
	if (elem) {
		if (menuStyle) elem.style.backgroundImage = "url(css/"+menuStyle+"/gfx/arrow-hi.gif)";
		//elem.style.backgroundColor = "#fbe5c2";
		currentItem = elem;
	}
}

function SetCurrentTop(elem) {
	if (elem && elem.parentNode.parentNode.id == 't000000') {
		ClearCurrentTop();
		if (menuCurrentTopBgColor) elem.style.backgroundColor = menuCurrentTopBgColor;
		if (menuCurrentTopColor) elem.style.color = menuCurrentTopColor;
		currentTopItem = elem;
	}
}

function ClearCurrentTop() {
	if (currentTopItem) {
		if (currentTopItem.className.indexOf("current") == -1) {
		    if (menuClearTopBgColor) currentTopItem.style.backgroundColor = menuClearTopBgColor;
		    if (menuClearTopColor) currentTopItem.style.color = menuClearTopColor;
		}
		currentTopItem = null;
	}
}

function PointsToSub(elem) {
	if (!elem.tagName) elem = elem.parentNode; /* NN fix */
	return elem.href && elem.id && elem.id.indexOf("pm") == 0 && document.getElementById(elem.id.substr(1));
}

function GetSubMenu(elem) {
	var m = document.getElementById(elem.id.substr(1));
	if (m && m.firstChild) {
	    return m;
	} else {
		//MenuClearAll();
	    return;
	}
}

function InitMenu() {
	var menu = document.getElementById("menu");
	if (menu) {
	    var ul = menu.getElementsByTagName("UL");
	    for (var i = 0; i < ul.length; i++) {
			if (ul[i].id == "t000000") {
	    		InitTopMenus(ul[i]);
	    	} else {
	    		InitSubMenus(ul[i]);
				//ul[i].onmouseover = StopTimer;
	    	}
	    }
	}
}

function InitTopMenus(topmenu) {
    for (var i = 0; i < topmenu.childNodes.length; i++) {
        var li = topmenu.childNodes[i];
        if (li.tagName && li.tagName == "LI") {
            var a = li.getElementsByTagName("A")[0];
			if (!a.initdone) {
				xcmsAddEventListener(a, "mouseover", MenuShow, false);
	    		xcmsAddEventListener(a, "mouseout", MenuHide, false);
	    		if (menuClick) xcmsAddEventListener(a, "click", MenuShow, false);
	    		a.initdone = true;
	    	}
		    a.firstChild.innerHTML = a.firstChild.innerHTML.replace(/ /g, "&nbsp;");
		}
    }
}

function InitSubMenus(menu) {
    for (var i = 0; i < menu.childNodes.length; i++) {
        var li = menu.childNodes[i];
        if (li.tagName && li.tagName == "LI") {
            var a = li.getElementsByTagName("A")[0];
    		if (PointsToSub(a)) {
    			// a
    			if (!a.initdone) {
    				xcmsAddEventListener(a, "mouseover", MenuShow, false);
    				xcmsAddEventListener(a, "mouseout", MenuHide, false);
    				a.initdone = true;
    			}
    			if (menuStyle) a.style.backgroundImage = "url(css/"+menuStyle+"/gfx/arrow.gif)";
    			var s = GetSubMenu(a);
    			if (s) s.isSub = true;
    			// span
    			//a.firstChild.onmouseover = MenuShow;
    			//a.firstChild.onmouseout = MenuHide;
    		} else {
    			// a
    			if (!a.initdone) {
	    			xcmsAddEventListener(a, "mouseover", StopTimer, false);
    				xcmsAddEventListener(a, "mouseout", StartTimer, false);
    				a.initdone = true;
    			}
    			if (menuStyle) a.style.backgroundImage = "url(gfx/trans.gif)";
    			// span
    			//a.firstChild.onmouseover = StopTimer;
    			//a.firstChild.onmouseout = StartTimer;
    		}
      		a.firstChild.innerHTML = a.firstChild.innerHTML.replace(/ /g, "&nbsp;");
        }
    }
    SetWidth(menu);
}

function SetWidth(menu, w) {
	if (BrowserDetect.browser == "Explorer") {
	    //menu.style.width = (menu.offsetWidth < w ? w : menu.offsetWidth)+"px";
	}
}

function MenuShow(evt) {
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (elem) {
			ClearTimer();
			if (!elem.tagName) elem = elem.parentNode; /* NN fix */
			if (elem.tagName == "SPAN") elem = elem.parentNode;
			elem.blur();
			SetCurrentTop(elem);
			var m = GetSubMenu(elem);
			if (m) {
            	var mdiv = document.getElementById("menu");
				if (m.isSub) {
					MenuClearAll(true);
					UpdateCurrent(elem);
					m.style.left = elem.parentNode.offsetLeft+elem.offsetWidth+menuSubLeftFix+"px";
	    		    //m.style.top = elem.parentNode.offsetTop+elem.offsetTop+menuSubTopFix+"px";
	    		    m.style.top = elem.parentNode.offsetTop+menuSubTopFix+"px";
					//if (elem.tagName == "A") elem.parentNode.style.backgroundImage = "url("+prefix+"gfx/li.gif)";
				} else {
					if (menuClick) {
						if (evt.type == "click") {
							preventDefault(evt);
							menuClicked = 1;
						} else if (!menuClicked) {
							return;
						}
					}
					MenuClearAll();
					if (menuPulldownDirection == 'topbottom') {
					    m.style.left = elem.parentNode.offsetLeft+menuLeftFix+"px";
					    m.style.top = elem.offsetTop+elem.offsetHeight+menuTopFix+"px";
					} else {
					    m.style.left = elem.offsetLeft+elem.offsetWidth+menuLeftFix+"px";
					    m.style.top = elem.offsetTop-1+menuTopFix+"px";
					}
				}
    		    m.style.display = "block";
//    		    m.style.visibility = "visible";
				SetWidth(m, elem.offsetWidth);

            	//alert(mdiv.offsetLeft);
            	var w = m.offsetWidth;
            	var h = m.offsetHeight;
            	var x = mdiv.offsetLeft+parseInt(m.style.left);
            	var y = mdiv.offsetTop+parseInt(m.style.top);
            	//alert("mdivleft="+mdiv.offsetLeft+", w="+w+", h="+h+", x="+x+", y="+y);
                var cw = BrowserDetect.browser == "Explorer" ? document.body.clientWidth : document.documentElement.clientWidth;
                if (x + w > cw + document.body.scrollLeft) {                       // til subsub naar links
                        var nx = cw - w - mdiv.offsetLeft - (m.isSub ? (elem.offsetWidth+w) : 0) + document.body.scrollLeft;
                        m.style.left = nx+"px";
                }
            	//alert(document.documentElement.clientHeight);
            	//alert(y+" + "+h+" > "+document.body.offsetHeight +" + "+document.body.scrollTop);
                var ch = BrowserDetect.browser == "Explorer" ? document.body.clientHeight : document.documentElement.clientHeight;
                if (y + h > ch + document.body.scrollTop) {
                        var ny = ch - h - mdiv.offsetTop + document.body.scrollTop;
                        m.style.top = ny+"px";
                }
            	//alert("top="+m.style.top+", left="+m.style.left);

				ghideid = showHideSelectControls('hide',x,y,w,h);

			} else {
				MenuClearAll();
			}
		}
	}
}

function MenuHide(evt) {
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (elem) {
  			StartTimer(evt);
		}
	}
}

function MenuClearAll(subsonly) {
	var menu = document.getElementById("menu");
    var ul = menu.getElementsByTagName("UL");
    for (var i = 0; i < ul.length; i++) {
    	var child = ul[i];
    	if (!child.isSub && subsonly) continue;
    	if (child.id != "t000000") {
			child.style.display = "none";
//   		    child.style.visibility = "hidden";
    	}
    }
    UpdateCurrent();
    if (fullexit) {
    	ClearCurrentTop();
		showHideSelectControls(ghideid);
		menuClicked = 0;
		if (/page.cgi/.test(location.href)) {
			if (BrowserDetect.browser != "Explorer") {
				var iframe = parent.xcmsGetContentPageWindow(true);
				if (iframe) iframe.focus();
			}
		}
   	}
}

function StopTimer(evt) {
	ClearTimer();
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (elem) {
    		if (!elem.tagName) {
    		    elem = elem.parentNode; /* NN fix */
    		}
    	    if (elem.tagName == "SPAN") {
    	        elem = elem.parentNode;
    	    }
    		if (elem.tagName == "A" && !PointsToSub(elem) && !elem.parentNode.parentNode.isSub) {
    			MenuClearAll(true);
    		}
    		//if (elem.tagName == "A") elem.parentNode.style.backgroundImage = "url("+prefix+"gfx/li.gif)";
		}
	}
}

function StartTimer(evt) {
	evt = (evt) ? evt : ((event) ? event : null);
	var timeout = 500;
	if (evt) {
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (elem.tagName == "SPAN") {
        	elem = elem.parentNode;
        }
    	if (elem && elem.tagName == "A") {
    		elem.parentNode.style.backgroundImage = "url(gfx/trans.gif)";
    	}
	}
	//alert(timeout);
	menuTimer = setTimeout("MenuClearAll()", timeout);
	fullexit = true;
}

function ClearTimer() {
	clearTimeout(menuTimer);
	fullexit = false;
}

AddToInitArray(InitMenu);
