/*
 * date:		2006-11-07
 * modified by:	Iian Neill
 * info:		http://inspire.server101.com/js/mb/
 */

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 mbCZ; // current submenu selected item
var mbR = [];
var active_txt = ''; //level 1 text colour when flyout active
var active_bg = '#B9DCD9'; // level 1 bgcol when flyout active
var inactive_txt = '#00443E'; // level 1 text colour when flyout inactive
var inactive_bg = ''; // level 1 bgcol when flyout inactive

// menu set function
function mbSet(m,c,x,y,z) {
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);
	if (z > '') mbCZ = document.getElementById(z);
	var i; // loop counter
	
	if (x > '') {
		// make main menu item bold, expanded & remove arrow
		main = mbC.parentNode.firstChild;
		
		// mbC.className = 'current';
		
		//alert('main.className='+main.className);
		//alert('main.id='+main.id);
		//alert('main.tagName='+main.tagName);
		
		// mbC.className = 'current';
		
		if (main.className == 'more') {
			main.style.fontWeight = 'bold';
			main.style.color = '#006F65'; // change colour as CSS setting ignored (unsure why)
			main.style.backgroundColor = '#F8F8F8';
			main.style.borderBottom = 'none';
			main.style.background = 'url(/suncorp/_media/menu_background_current.gif)';
			main.className = 'hiddenbold';	// deactivate right arrow in level one button
			mbC.className = 'current';
		} else {							// ... if not a flyout just make button heading bold
			mbC.style.fontWeight = 'bold';
		}
		
		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';
		}
	}
	
	if (z > '') {
		// make current submenu item bold
		if (mbCZ.nodeName == 'LI') {
			mbCZ.firstChild.style.fontWeight = 'bold';
		} else {
			mbL(mbCZ).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() {
	while (mbA) mbH(mbA);
	mbHE('visible');
}

// timeout function
function mbHT() {
	if (!mbT) {
		if (mbA) mbT=setTimeout('mbHA();', mbW);
		else mbHA();
	}
}

// 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;
		//highlight level 1 while flyout active
		main = m.parentNode.firstChild;
		if (main.className == 'more') {
			main.style.color = active_txt;
			main.style.backgroundColor = active_bg;
		}
	}
}

// hide menu function
function mbH(m) {
	if (m==mbA) mbA=mbP(m);
	if (m!=mbL(mbC)) {
		if (m==mbL(mbCS)) {
			if ((m.className!='more') && (m.className!='more2')) {	
				m.className='hiddenbold';
			} else {
				mbM(m).style.visibility='hidden';
			}
		}
		else {
			if ((m.className!='more') && (m.className!='more2')) {
				m.className='hidden';
				} else {
					mbM(m).style.visibility='hidden';		
				}
			}
		mbM(m).style.visibility='hidden';
	}
	mbT=null;
	// unhighlight level 1 when leaving flyout
	main = m.parentNode.firstChild;
	if (main.className == 'more') {
		main.style.color = inactive_txt;
		main.style.backgroundColor = inactive_bg;
	}
}

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') {
		for (i = 0; i < mbR.length; i++) if (mbR[i] == p) return null;
	} 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';
	}
	//alert(m.className);
	if ((m.className!='more') && (m.className!='more2')) {
		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;
}
