var agt = navigator.userAgent.toLowerCase();
var isNN6 = agt.indexOf('netscape6') != -1;
var isIE = agt.indexOf('msie') != -1;

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 prefix = '';
var menuTimer;
var fullexit = false;
var currentTopItem = null;
var currentItem = null;

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();
		elem.style.backgroundColor = menuCurrentTopBgColor;
		elem.style.color = menuCurrentTopColor;
		currentTopItem = elem;
	}
}

function ClearCurrentTop() {
	if (currentTopItem) {
		if (currentTopItem.className.indexOf("current") == -1) {
		    currentTopItem.style.backgroundColor = menuClearTopBgColor;
		    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");
    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];
    		a.onmouseover = MenuShow;
	    	a.onmouseout = MenuHide;
		    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
    			a.onmouseover = MenuShow;
    			a.onmouseout = MenuHide;
    			if (menuStyle) a.style.backgroundImage = "url(css/"+menuStyle+"/gfx/arrow.gif)";
    			GetSubMenu(a).isSub = true;
    			// span
    			//a.firstChild.onmouseover = MenuShow;
    			//a.firstChild.onmouseout = MenuHide;
    		} else {
    			// a
    			a.onmouseover = StopTimer;
    			a.onmouseout = StartTimer;
    			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 (isIE) {
	    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;
			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";
					//if (elem.tagName == "A") elem.parentNode.style.backgroundImage = "url("+prefix+"gfx/li.gif)";
				} else {
					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";
				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);
            	if (x + w > document.body.clientWidth) {                       // til subsub naar links
            		var nx = document.body.clientWidth - w - mdiv.offsetLeft - (m.isSub ? (elem.offsetWidth+w) : 0);
            		m.style.left = nx+"px";
            	}
            	if (y + h > document.body.clientHeight) {
            		var ny = document.body.clientHeight - h - mdiv.offsetTop;
            		m.style.top = ny+"px";
            	}
            	//alert("top="+m.style.top+", left="+m.style.left);
			}
		}
	}
}

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";
    	}
    }
    UpdateCurrent();
    if (fullexit) ClearCurrentTop();
}

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);
