// JavaScript Document
var menuReady=false;

//get folder name of current document
var URL=document.URL;
var st_len=URL.length;
var path=URL.slice(0,URL.lastIndexOf('/'));
path=path.slice(path.lastIndexOf('/')+1);

//pre-cache menu images
if (document.images) {
	var imagesNormal = new Array();
	imagesNormal["products"]= new Image(29,80);
	imagesNormal["products"].src="../images/products_off.gif";
	imagesNormal["support"]= new Image(29,80);
	imagesNormal["support"].src="../images/support_off.gif";
	imagesNormal["store"]= new Image(29,80);
	imagesNormal["store"].src="../images/store_off.gif";
	imagesNormal["license"]= new Image(29,80);
	imagesNormal["license"].src="../images/license_off.gif";	
	imagesNormal["about"]= new Image(29,80);
	imagesNormal["about"].src="../images/about_off.gif";
	imagesNormal["other_prod"]= new Image(29,130);
	imagesNormal["other_prod"].src="../images/other_prod_off.gif";

var imagesHilite = new Array();
	imagesHilite["products"]= new Image(29,80);
	imagesHilite["products"].src="../images/products_on.gif";
	imagesHilite["support"]= new Image(29,80);
	imagesHilite["support"].src="../images/support_on.gif";
	imagesHilite["store"]= new Image(29,80);
	imagesHilite["store"].src="../images/store_on.gif";
	imagesHilite["license"]= new Image(29,80);
	imagesHilite["license"].src="../images/license_on.gif";
	imagesHilite["about"]= new Image(29,80);
	imagesHilite["about"].src="../images/about_on.gif";
	imagesHilite["other_prod"]= new Image(29,130);
	imagesHilite["other_prod"].src="../images/other_prod_on.gif";
}

//function to keep font sizes in sync with user selected sizes in browser
function getElementStyle(elem, IEStyleProp, CSSStyleProp){
	if(elem.currentStyle) {
		return elem.currentStyle[IEStyleProp];
	} else if (window.getComputedStyle) {
		var compStyle=window.getComputedStyle(elem, "");
		return compStyle.getPropertyValue(CSSStyleProp);
	}
	return "";
}

var CSSRuleValues= {menuItemHeight: "24px",
					menuItemLineHeight:"1.4em",
					menuWrapperBorderWidth:"2px",
					menuWrapperPadding:"3px",
					defaultBodyFontSize:"12px"
					};

//specs for menu contents and menubar images
var menus= new Array();
//switch below corrects paths to files depending on which folder is current
switch (path) {
	case "products":
		var prod_path="";
		var sup_path="../support/";
		var lic_path="../license/";
	break
	case "support":
		var prod_path="../products/";
		var sup_path="";
		var lic_path="../license/";
	break
	case "license":
		var prod_path="../products/";
		var sup_path="../support/";
		var lic_path="";
	break
	case "admin":
		var prod_path="../products/";
		var sup_path="../support/";
		var lic_path="../license/";
	break
}
menus[0]={mBarImgId:"menuImg_1",
		mBarImgNormal:imagesNormal["products"],
		mBarImgHilite:imagesHilite["products"],
		menuItems: [{text:"Digital Editions", href: prod_path + "digital_ed.cfm"},
				    {text:"Choral", href: prod_path + "product_listing.cfm?cat_id=1"},
					{text:"Guitar", href: prod_path + "product_listing.cfm?cat_id=3"},
					{text:"Opera", href: prod_path + "product_listing.cfm?cat_id=4"},
					{text:"Organ", href: prod_path + "product_listing.cfm?cat_id=5"},
					{text:"Piano", href: prod_path + "product_listing.cfm?cat_id=6"},
					{text:"Strings", href: prod_path + "product_listing.cfm?cat_id=7"},
					{text:"Study Scores", href:prod_path + "product_listing.cfm?cat_id=8"},
					{text:"Voice", href: prod_path + "product_listing.cfm?cat_id=9"},
					{text:"Woodwinds", href: prod_path + "product_listing.cfm?cat_id=10"}
					],
		elemId:""
		};
menus[1]={mBarImgId:"menuImg_2",
		mBarImgNormal: imagesNormal["support"],
		mBarImgHilite: imagesHilite["support"],
		menuItems: [{text:"FAQ", href: sup_path + "faq.cfm"},
				    {text: "Software Versions",  href: sup_path +"versions.cfm"},
					{text:"Help", href: sup_path + "help.cfm"}
					],
		elemId:""
		};
menus[2]={mBarImgId:"menuImg_3",
		  mBarImgNormal: imagesNormal["store"],
		  mBarImgHilite: imagesHilite["store"],
		  menuItems: "",
		  elemId:""
	};
menus[3]={mBarImgId:"menuImg_4",
		  mBarImgNormal: imagesNormal["license"],
		  mBarImgHilite: imagesHilite["license"],
		  menuItems: [{text: "General License", href: lic_path + "license.cfm"},
					  {text: "Site License", href: lic_path + "site_license.cfm"}
					  ],
		  elemId:""
	};
menus[4]={mBarImgId:"menuImg_5",
		  mBarImgNormal: imagesNormal["about"],
		  mBarImgHilite: imagesHilite["about"],
		  menuItems: "",
		  elemId:""
	};
menus[5]={mBarImgId:"menuImg_6",
		  mBarImgNormal: imagesNormal["other_prod"],
		  mBarImgHilite: imagesHilite["other_prod"],
		  menuItems: [{text: "Orchestra Musician's Library", href: "http://www.orchmusiclibrary.com"},
					  {text: "The Subito Store", href: "http://www.subitomusic.com/store"},
					  {text: "Stephens Music Store", href: "http://www.stephensmusicpub.com/"}
					  ],
		  elemId:""
	};


function makeHashes() {
	for (var i=0; i<menus.length; i++) {
		menus[menus[i].elemId]=menus[i];
		menus[menus[i].mBarImgId]=menus[i];
	}
}

function assignLabelEvents() {
	var elem;
	for (i=0; i< menus.length; i++) {
		elem = document.getElementById(menus[i].mBarImgId);
		elem.onmouseover = swap;
		elem.onmouseout = swap;
	}
}
//generates menu div elements and contents
function makeMenus() {
	var menuDiv, menuItem, itemLink, mbarImg, textNode, offsetLeft, offsetTop;
	var menuItemH=0;
	//make some adjustments for positioning
	var bodyFontSize = parseInt(getElementStyle(document.body, "fontSize", "font-size"));
	
	if (bodyFontSize == parseInt(CSSRuleValues.defaultBodyFontSize)) {
		menuItemH=parseFloat(CSSRuleValues.menuItemHeight);
	} else {
		menuItemH=parseInt(parseFloat(CSSRuleValues.menuItemLineHeight) * bodyFontSize);
	}
	
	var heightAdjust = parseInt(CSSRuleValues.menuWrapperPadding) + 
		parseInt(CSSRuleValues.menuWrapperBorderWidth);
	
	if (navigator.appName == "Microsoft Internet Explorer" &&
		navigator.userAgent.indexOf("Win") != -1 &&
		(typeof document.compatMode == "undefined" || document.compatMode == "BackCompat")) {
		heightAdjust= -heightAdjust;
	}
	
	//use menus array to create divs
	for (var i=0; i< menus.length; i++) {
		menuDiv=document.createElement("div");
		menuDiv.id="popupmenu" + i;
		menus[i].elemId= "popupmenu" + i;
		menuDiv.className="menuWrapper";
		
		//set the height of the menu based on number of menu items
		if (menus[i].menuItems.length > 0) {
			menuDiv.style.height = (menuItemH * menus[i].menuItems.length - heightAdjust + "px");
			} else {
				//don't display menu div if no menu items
				menuDiv.style.display="none";
			}
		menuDiv.onmouseover=keepMenu;
		menuDiv.onmouseout=requestHide;
		
		menuDiv.style.zIndex=1000;
		
		//assemble menu items - goes inside the menu div
		for (j=0; j<menus[i].menuItems.length; j++) {
			menuItem=document.createElement("div");
			menuItem.id="popupmenuItem_" + i + "_" + j;
			menuItem.className="menuItem";
			menuItem.onmouseover=toggleHighlight;
			menuItem.onmouseout=toggleHighlight;
			menuItem.onclick=hideMenus;
			menuItem.style.top=menuItemH * j + "px";
			
			itemLink=document.createElement("a");
			itemLink.href=menus[i].menuItems[j].href;
			itemLink.className="menuItem";
			itemLink.onmouseover=toggleHighlight;
			itemLink.onmouseout=toggleHighlight;
			
			textNode=document.createTextNode(menus[i].menuItems[j].text);
			
			itemLink.appendChild(textNode);
			menuItem.appendChild(itemLink);
			menuDiv.appendChild(menuItem);
		}//end of menuItem FOR loop
		document.body.appendChild(menuDiv);
	}//end of Menus FOR loop
	
	makeHashes();
	assignLabelEvents();
	//position menu
	for (i=0; i<menus.length; i++) {
		positionMenu(menus[i].elemId);
	}
	menuReady= true;
}//end of makeMenus function

var timer;

function keepMenu(){
	clearTimeout(timer);
}

function cancelAll(){
	keepMenu();
	menuReady=false;
}

//invoked by mouseouts - hides all menus in .25 seconds unless cancelled
function requestHide() {
	timer=setTimeout("hideMenus()",250);
}

//hide all menus and restire menubar images
function hideMenus(){
	for (i=0; i<menus.length; i++) {
		document.getElementById(menus[i].mBarImgId).src=menus[i].mBarImgNormal.src;
		var menu = document.getElementById(menus[i].elemId);
		menu.style.visibility="hidden";
	}
}

function positionMenu(menuId){
	var mBarImg=document.getElementById(menus[menuId].mBarImgId);
	var offsetTrail=mBarImg;
	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;
	}
	var menuDiv=document.getElementById(menuId);
	menuDiv.style.left=offsetLeft + "px";
	menuDiv.style.top=offsetTop + mBarImg.height + "px";
}

//this function displays the menu for a particular menu div
function showMenu(menuId) {
	if (menuReady) {
		keepMenu();
		hideMenus();
		positionMenu(menuId);
		var menu = document.getElementById(menuId);
		menu.style.visibility="visible";
	}
}

function toggleHighlight(evt) {
	evt=(evt) ? evt : ((event) ? event : null); //alternate form of conditional statement
	if (typeof menuReady != "undefined") {  //make sure menus are loaded
		if (menuReady && evt) {
			var elem = (evt.target) ? evt.target : evt.srcElement;
			if (elem.nodeType == 3) {
				elem=elem.parentNode;
			}
			if (evt.type == "mouseover") {
				keepMenu();
				elem.className="menuItemOn";
			} else {
				elem.className="menuItem";
				requestHide();
			}
			evt.cancelBubble=true;
		}
	}
}

function swap(evt) {
	evt = (evt) ? evt : ((event) ? event : null);
	if (typeof menuReady !="undefined") {
		if (evt && (document.getElementById && document.styleSheets) && menuReady) {
			var elem = (evt.target) ? evt.target : evt.srcElement;
			if (elem.className == "menuImg") {
				if (evt.type== "mouseover") {
					showMenu(menus[elem.id].elemId);
					elem.src= menus[elem.id].mBarImgHilite.src;
				} else if (evt.type=="mouseout"){
					requestHide();
				}
				evt.cancelBubble = true;
			}
		}
	}
}

function initMenus() {
	if (document.getElementById && document.styleSheets) {
		setTimeout("makeMenus()",5);
		window.onunload=cancelAll;
	}
}