// JS functions for navigation
// Nick Gates 08-06
// Function to build navigation root buttons
// plus on mouse over will expand those root buttons to show sub-options
// on mouse out will return to initial state
// --------------------------------------------------------------------
// Check Browser, toggle fades if IE 6 and above
var goFade = getIEVersionNumber() >= 6;
// Function to show sub menu
function showSub(subMenu,noOfSubs,goFadeCheck,m) {
	// Set class reference of "subSpacer" td to match current class reference of main button
	if(noOfSubs > 0) {
		var buttLen = subMenu.indexOf("_")
		var buttName = subMenu.substring(0,buttLen);
		var menuButton = document.getElementById(buttName);
		var spacer = document.getElementById("subSpacer_" + m);
		spacer.className = menuButton.className;
	}
	var menu = document.getElementById(subMenu);
	if(goFade && goFadeCheck) menu.filters["blendTrans"].apply();
	// if on Home Page - hide video player
	if((document.getElementById("topVideoPlayer") || document.getElementById("slideshow")) && noOfSubs > 0)
		if(document.getElementById("topVideoPlayer")) {
	    	document.getElementById("topVideoPlayer").style.visibility = "hidden"; }
	    else if(document.getElementById("slideshow")) {
	    	document.getElementById("slideshow").style.visibility = "hidden";   	
	    }
	menu.style.visibility = "visible";
	if(goFade) menu.filters["blendTrans"].play();
}
// Function to hide sub menu
function hideSub(subMenu) {
	var menu = document.getElementById(subMenu);
	// if on Home Page - show video player
	if(document.getElementById("topVideoPlayer") || document.getElementById("slideshow"))
		if(document.getElementById("topVideoPlayer")) {
	    	document.getElementById("topVideoPlayer").style.visibility = "visible"; }
	    else if(document.getElementById("slideshow")) {
	    	document.getElementById("slideshow").style.visibility = "visible";   	
	    }
	menu.style.visibility = "hidden";
}
// Function to set position of an element
function setElementPosition(locElem,elemToLocate) {
    var offsetTrail = document.getElementById(locElem);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 &&
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    // include some more calculations to take account of centering body on page
    offsetTop -= document.getElementById("headerHolder").offsetHeight;
    offsetTop -= document.getElementById("pageHolder").offsetTop;
    offsetLeft -= document.getElementById("pageHolder").offsetLeft;
    // Add back width of button
    offsetLeft += document.getElementById(locElem).offsetWidth;
    // Position element
	document.getElementById(elemToLocate).style.left=offsetLeft;
	document.getElementById(elemToLocate).style.top=offsetTop;
}
// Create root menu buttons and Sub menu's (if exist)
function buildMenus() {
	var nav = "",zindex;
	// begin to build html for button
	nav += '<table cellpadding="3" cellspacing="8" width="100%">';
	// Main menu button
	for(m=1; m <= noOfMenus; m++) {
		nav += '<tr><td id="' + stMenus[m].id + '" class="navOut"';
		nav += ' onMouseOver="itemState(event,\'navOver\',\'' + stMenus[m].id + '\');showSub(\'' + stMenus[m].id + '_sub\',' + stMenus[m].noOfSubs + ',1,' + m + ')" ';
		nav += ' onMouseOut="itemState(event,\'navOut\',\'' + stMenus[m].id + '\');hideSub(\'' + stMenus[m].id + '_sub\')" ';
		nav += ' onClick="location.href=(\'' + stMenus[m].link + '\')" nowrap>' + stMenus[m].Name +'</td></tr>';
	}
	// Add Counter
	// nav += '<tr><td align="center"><img src="/cgi-sys/Count.cgi?df=songCount.dat|display=Counter|ft=0|md=8|frgb=100;139;216|dd=M"></td></tr>';
	// Close Table
	nav += '</table>';
	// Set container divs for sub menu's
	for(m=1; m <= noOfMenus; m++) {
			zindex=m+50;
			nav += '<div id="' + stMenus[m].id + '_sub" class="subMenuHolder" style="z-index:' + zindex + ';"';
			nav += ' onMouseOver="showSub(\'' + stMenus[m].id + '_sub\',' + stMenus[m].noOfSubs + ',0,' + m + ')"';
			nav += ' onMouseOut="hideSub(\'' + stMenus[m].id + '_sub\')"';
			nav += ' onClick="hideSub(\'' + stMenus[m].id + '_sub\')"></div>';
	}
	// render Main Buttons div
	document.getElementById("mainNav").innerHTML = nav;
	// ------------------------------------------------
	var subHTML, ref;
	// Build sub menus
	for(m=1; m <= noOfMenus; m++) {
		// if contains subs, create hidden div for sub menu
		if(stMenus[m].noOfSubs > 0) {
		  subHTML = "";
		  subHTML += '<table cellpadding="3" cellspacing="0" width="100%"><tr><td id="subSpacer_' + m + '" class="SubOut">&nbsp;</td>';
		  for(s=1; s <= stMenus[m].noOfSubs; s++) {
		  	ref = "" + m + s;
		  	subHTML += (s == 1) ? '' : '<tr><td></td>';
		  	subHTML += '<td id="' + stSubMenus[ref].subId + '" class="SubOut" style="';
		  	subHTML += (s != 1) ? 'border-left:1px solid #CCCCFF;' : '';
		  	subHTML += 'border-right:3px groove #CCCCFF;';
		  	subHTML += (s == stMenus[m].noOfSubs) ? 'border-bottom:3px groove #CCCCFF;' : '';
			subHTML += '" onMouseOver="itemState(event,\'SubOver\',\'';
		  	subHTML += stSubMenus[ref].subId + '\')" onMouseOut="itemState(event,\'SubOut\',\'' + stSubMenus[ref].subId + '\')"';
			subHTML += ' onClick="location.href=(\'' + stSubMenus[ref].subLink + '\')" nowrap>' + stSubMenus[ref].subName + '</td></tr>';
		  }
		  subHTML += '</table>';
		  // Render sub menu div
		  getLayer(stMenus[m].id + "_sub").innerHTML = subHTML;
		  setElementPosition(stMenus[m].id,stMenus[m].id + "_sub")
		}
	}
}
