var pMnuDefObj;
var menuObj;
function buildMenu(mObj,barID,mnuCls){
	menuObj = captureObj(mObj);
	NoMMObjs = menuObj.childNodes.length;

	MNULinks = "";
	LinkNo = 0;
	for(tm=0; tm<NoMMObjs; tm++){
		linkObj = menuObj.childNodes.item(tm);
		if(linkObj.tagName == "DIV"){
			MNULinks += buildMenuLinks(linkObj,tm,1);
		}
	}
	setHTML('menu',MNULinks);
}

function moverfly(lnkID,typ,lnkURL,lnkNo,nodeLvl){
	if(window.event.srcElement.tagName != "SPAN"){
		showSubMnu(lnkID,typ,lnkURL,lnkNo,nodeLvl);
	}
}


function showSubMnu(lnkID,typ,lnkURL,lnkNo,nodeLvl){
	alnkObj = captureObj(lnkID);

	submenuObj = captureObj(lnkID+"submenu");

	built = eval(submenuObj.getAttribute("built"));
	mode = submenuObj.getAttribute("mode");

	if(mode == "hidden"){
		submenuObj.style.display = "block";
		submenuObj.setAttribute('mode','visible');
	}else{
		submenuObj.style.display = "none";
		submenuObj.setAttribute('mode','hidden');
	}
	handleSetSubMenus(nodeLvl,submenuObj);
	
	if(!built){
		SMLinks = "";
		NoSMObjs = alnkObj.childNodes.length;
		adjnodeLvl = eval(nodeLvl+1);

		for(sm=0; sm<NoSMObjs; sm++){
			linkObj = alnkObj.childNodes.item(sm);
			if(linkObj.tagName == "DIV"){
				SMLinks += buildMenuLinks(linkObj,lnkNo,adjnodeLvl);
			}
		}
		submenuObj.innerHTML = SMLinks;
		submenuObj.setAttribute('built','true');
	}
}

setMenus = new Array();
function handleSetSubMenus(nodeLvl,activeSMObj){
	if(setMenus[nodeLvl] != activeSMObj){
		try {
			setMenus[nodeLvl].style.display = "none";
			setMenus[nodeLvl].setAttribute('mode','hidden');
		}catch(exception){}
		setMenus[nodeLvl] = activeSMObj;
	}else{
		if(activeSMObj.getAttribute('mode') == "hidden"){
			setMenus[nodeLvl] = null;
		}
	}
	hideDependentMenus(nodeLvl+1);
}

function hideDependentMenus(nodeLvl){
	try {
		for(nl=nodeLvl;nl<setMenus.length;nl++){
			setMenus[nl].style.display = "none";
			setMenus[nl].setAttribute('mode','hidden');
			setMenus[nl] = null;
		}
	}catch(exception){}
}

var smParams = new Array();

function buildMenuLinks(alnkObj,lnkNo,nodeLvl){
	//dPath is the path through the node structure to the link object
	lbl = alnkObj.getAttribute("lbl");
	lnk = alnkObj.getAttribute("lnk");
	typ = alnkObj.getAttribute("typ");
	associd = alnkObj.getAttribute("id");
	
	flyHide = "";
	if(nodeLvl == 1){ flyHide = "hideDependentMenus(2);";	}
	moreicon = '<span class="moreicon'+nodeLvl+'">4</span>';
	popFunct = ""; linkURL="";

	switch(typ){
		case "S": //Submenu
			linkURL = "javascript:showSubMnu('"+associd+"','S','"+lnk+"','"+lnkNo+"',"+nodeLvl+");";
			smParams[smParams.length] = associd+",S,"+lnk+","+lnkNo+","+nodeLvl;
			popFunct = " onmouseover=\""+flyHide+"movermessage('','"+lbl+"');return true\"  onmouseout=\"javascript:moutmessage()\"";
			break;
		case "F": //Flyouts
			linkURL = "javascript:bbtlink('D','"+lnk+"');";
			popFunct = " onmouseover=\"javascript:moverfly('"+associd+"','S','"+lnk+"','"+lnkNo+"',"+nodeLvl+");movermessage('','"+lbl+"');return true\"  onmouseout=\"javascript:moutmessage()\"";
			break;
		default: //Direct
			linkURL = "javascript:bbtlink('"+typ+"','"+lnk+"');";
			popFunct = " onmouseover=\""+flyHide+"movermessage('','"+lbl+"');return true\"  onmouseout=\"javascript:moutmessage()\"";
			moreicon = "";
			break;
	}
 	
	thisLink = '<a class="menulevel'+nodeLvl+'" title="'+lbl+'" associd="'+associd+'" '+popFunct+' id="'+associd+'link" href="'+linkURL+'"><div class="menulabel">'+lbl+'</div>'+moreicon+'</a>';

	if(typ == "S" || typ == "F"){
		thisLink += '<div class="submenulevel'+nodeLvl+'" built="false" mode="hidden" id="'+associd+'submenu" associd="'+associd+'"></div>';
	}
	return thisLink;
}

function setBreadcrumbs(aID){
	if(aID != ""){
		actMnuObj = captureObj(aID);

		bcLinks = actMnuObj.getAttribute("lbl");

		pObj = actMnuObj.parentNode;

		while(pObj.id != "mnuObject"){
			if(pObj.parentNode.id != "mnuObject"){
				bcLinks = writeBCLink(pObj) + " > " + bcLinks;
			}else{
				bcLinks = pObj.getAttribute("lbl") + " > " + bcLinks;
			}

			pObj = pObj.parentNode;
		}

		setHTML('breadcrumbs','&nbsp; > ' +bcLinks);
		if(actMnuObj.getAttribute("lnk").indexOf("#") == -1){
			setQuicklinks(actMnuObj);
		}
	}
}

function setQuicklinks(qlMnuObj){
	if(titleDisplay){
		MainTitle = qlMnuObj.parentNode.getAttribute("lbl");
		if(qlMnuObj.childNodes.length > 0){
			MainTitle += " &ndash; " + qlMnuObj.getAttribute("lbl");
		}
		setHTML('quicklinks',MainTitle);
	}else{
		QLinks = '<p class="qlinktitle">'+qlMnuObj.getAttribute("lbl")+' :: Quick Links</p>';
		NoQLObjs = qlMnuObj.childNodes.length;
		for(qlnk=0; qlnk<NoQLObjs; qlnk++){
			qlinkObj = qlMnuObj.childNodes.item(qlnk);
			if(qlinkObj.tagName == "DIV"){
				QLinks += writeQLink(qlinkObj,qlnk);
			}
		}
		setHTML('quicklinks',QLinks);
	}
	
	//captureObj('quicklinks').style.display = "block";
}

function writeBCLink(bclnkObj){
	lbl = bclnkObj.getAttribute("lbl");
	lnk = bclnkObj.getAttribute("lnk");
	typ = bclnkObj.getAttribute("typ");
	associd = bclnkObj.getAttribute("id");
	
	linkURL = "href=\"javascript:bbtlink('"+typ+"','"+lnk+"');setBreadcrumbs('"+associd+"')\"";
	mOver = "movermessage('','"+lbl+"');return true";
	
	thisLink = '<a onmouseover="javascript:'+mOver+'"  onmouseout="javascript:moutmessage()" title="Click to go to '+lbl+'" associd="'+associd+'" id="'+associd+'bclink" class="breadcrumb" '+linkURL+'>'+lbl+'</a>';
	return thisLink;
}

function writeQLink(alnkObj,lnkNo){
	lbl = alnkObj.getAttribute("lbl");
	lnk = alnkObj.getAttribute("lnk");
	typ = alnkObj.getAttribute("typ");
	associd = alnkObj.getAttribute("id");
	linkURL = "href=\"javascript:bbtlink('"+typ+"','"+lnk+"');setBreadcrumbs('"+associd+"')\"";

	mOver = "movermessage('','"+lbl+"');return true";
	
	thisLink = '<a onmouseover="javascript:'+mOver+'"  onmouseout="javascript:moutmessage()" title="Click to go to '+lbl+'" associd="'+associd+'" id="'+associd+'link" class="quicklink" '+linkURL+'>'+lbl+'</a>';
	return thisLink;
}