
var mbW=500;
var mbA,mbC,mbCS; // actual open menu, expanded menu for page, current page/menu
var mbT,mbTf,mbSf; // timer, timer function reference, show menu function reference
var mbR = [];

// menu set function
function mbSet(m,c,x,y) {
if (document.getElementById&&document.createElement) {
	var m=document.getElementById(m);
	m.className=c;
	mbR[mbR.length] = m;
	if (x > '') mbC = document.getElementById(x);
	if (y > '') mbCS = document.getElementById(y);
	var i; // loop counter
	
	if (x > '') {
		// make main menu item bold, expanded & remove arrow
		main = mbC.parentNode.firstChild;
		main.style.fontWeight = 'bold';
		main.removeChild(main.firstChild);
		mbC.className = 'current';
		
		e = mbC.getElementsByTagName('a');
		for (i=0; i<e.length; i++) {
			if (e[i].parentNode.parentNode.id == x) {
				var h = e[i].innerHTML;
				e[i].innerHTML = h.replace(/<br>/ig,'<br>&nbsp;&nbsp;&nbsp;');
				var s = document.getElementById("space");
				var space = s.firstChild.cloneNode(s.firstChild);
				if (e[i].firstChild.nodeName == 'IMG') {
					e[i].insertBefore(space, e[i].firstChild.nextSibling);
				} else {
					e[i].insertBefore(space, e[i].firstChild);
				}
			}
		}
	}
	if (y > '') {
		// make current menu item bold
		if (mbCS.nodeName == 'LI') mbCS.firstChild.style.fontWeight = 'bold';
		else mbL(mbCS).className = 'hiddenbold';
	}
	
	var l; // link elements
	l = m.getElementsByTagName('a');
	if (!mbTf) mbTf=new Function('mbHT();');
	if (!mbSf) mbSf=new Function('mbS(this);');
	for (i=0; i<l.length; i++) {
		l[i].onmouseout = l[i].onblur = l[i].onclick = mbTf;
		l[i].onmouseover = l[i].onfocus = mbSf;
	}
}}

function mbHA() {
	if (mbA) {
		while (mbA) mbH(mbA);
		mbHE('visible');
	}
}

// timeout function
function mbHT() {
	if (!mbT) mbT=setTimeout('mbHA();', mbW);
}

// timeout clearing function
function mbTC() {
	if (mbT) {
		clearTimeout(mbT);
		mbT=null;
	}
}

// show menu function
function mbS(m) {
	mbTC();
	if (mbA) while (mbA&&m!=mbA&&mbP(m)!=mbA) mbH(mbA);
	else mbHE('hidden');

	if (mbM(m)) {
		if (m!=mbL(mbC)) mbSH(m,'visible');
		mbA=m;
	}
}

// hide menu function
function mbH(m) {
	if (m==mbA) mbA=mbP(m);
	if (m!=mbL(mbC)) {
		if (m==mbL(mbCS)) m.className='hiddenbold';
		else m.className='hidden';
		mbM(m).style.visibility='hidden';
	}
	mbT=null;
}

function mbL(m) {
	while (m && m.tagName != 'A') m = m.previousSibling;
	return m;
}

function mbM(l) {
	while (l && l.tagName != 'UL') l = l.nextSibling;
	return l;
}

function mbP(m) {
	var p = m.parentNode.parentNode;
	if (p.tagName == 'UL') {
		var i = 0;
		while (i < mbR.length) {
			if (mbR[i] == p) return null;
			i++;
		}
	} else {
		return null;
	}
	return mbL(p);
}

function mbSH(m,v) {
	var windowHeight=0, scrollOffset=0, menuTop=0, newTop=0;
	// IE 5
	if (document.body.offsetHeight > 0) windowHeight=document.body.offsetHeight+56;
	if (document.body.scrollTop > 0) scrollOffset=document.body.scrollTop;
	// IE 6 (strict mode)
	if (document.documentElement.clientHeight > 0) windowHeight=document.documentElement.clientHeight;
	if (document.documentElement.scrollTop > 0) scrollOffset=document.documentElement.scrollTop;
	// Others
	if (window.innerHeight > 0) windowHeight=window.innerHeight;
	if (window.scrollY > 0) scrollOffset=window.scrollY;
	if (mbM(m).offsetParent) {
		menuTop=mbM(m).offsetParent.offsetTop;
		if (((menuTop-scrollOffset) + mbM(m).offsetHeight) > windowHeight) {
			newTop=windowHeight-((menuTop-scrollOffset) + mbM(m).offsetHeight);
		}
		if (mbM(m).offsetParent.offsetParent) {
			if (mbM(m).offsetParent.offsetParent.offsetParent) {
				if (((mbM(m).offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetTop+menuTop+mbM(m).offsetHeight)-scrollOffset) > windowHeight) {
					newTop=(windowHeight+scrollOffset)-(mbM(m).offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetTop+menuTop+mbM(m).offsetHeight)-1;
				}
				if (mbM(m).offsetParent.offsetParent.offsetParent.offsetParent) {
					if (mbM(m).offsetParent.offsetParent.offsetParent.offsetParent.offsetParent) {
						if (((mbM(m).offsetParent.offsetParent.offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetTop+menuTop+mbM(m).offsetHeight)-scrollOffset) > windowHeight) {
							newTop=(windowHeight+scrollOffset)-(mbM(m).offsetParent.offsetParent.offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetParent.offsetTop+mbM(m).offsetParent.offsetParent.offsetTop+menuTop+mbM(m).offsetHeight)-2;
						}
					}
				}
			}
		}
	}
	if (newTop != 0) {
		mbM(m).style.top = newTop + "px";
	}
	mbM(m).style.visibility=v;
	if (m==mbL(mbCS)) {
		if (v=='visible') v='visiblebold';
		else v='hiddenbold';
	}
	m.className=v;
}

// show/hide all "select" elements
function mbHE(v) {
	mbHEV(v,document.getElementsByTagName('select'));
}
function mbHEV(v,e) {
	for (var i=0;i<e.length;i++) e[i].style.visibility=v;
}
