// Functions for managing dynamic menus
var nscp = (navigator.appName == "Netscape")
var ismc = (navigator.appVersion.indexOf("Mac") != -1)
var vers = parseFloat(navigator.appVersion.substring(22,25))
var docWriteText = "";

function writeMenuDiv(positionId, leftPut, topPut)
{ // Write out the <div> or <layer> element with style attribute for a drop down menu
	// first input is the element ID at which we are to position as a string
	// next two inputs are optional locations at which to put the div
	var leftPos, topPos, styleString, tagStart, alignString, visibleCmd;
	// styleString = 'style="z-index: 2; position : absolute; top : ' + 'px; left : ' + leftPos + 'px; visibility : hidden;"'
	if (writeMenuDiv.arguments.length < 2)
	{
		leftPos = 0;
	}
	else
	{
		leftPos = leftPut;
	}
	if (writeMenuDiv.arguments.length < 3)
	{
		topPos = 0;
	}
	else
	{
		topPos = topPut;
	}
	if (nscp && navigator.appVersion.charAt(0) <= 4) // Netscape 4?
	{
		tagStart = "<layer";
		alignString = "";
		visibleCmd = "this.visible='visible'";
	}
	else // not NetScape 4
	{
		tagStart = "<div";
		alignString = "align=left ";
		visibleCmd = "this.style.visible='visible'";
	}
	if (nscp && navigator.appVersion.charAt(0) <= 4) // Netscape 4?
	{
		styleString = 'z-index=4 top=' + topPos + 'px left=' + leftPos +  'px bgcolor=#888822 visibility=hidden';
	}
	else // not Netscape 4
	{
		styleString = 'style="z-index:4; position:absolute; top:' + topPos + 'px; left:' + leftPos +  'px; background-color: #888822 ; visibility : hidden;"'
	}
	docWriteText = tagStart + " id=" + positionId + "Drop " + alignString + styleString + " onMouseOut=hideMenu('" + positionId + "Drop'); onMouseOver=" + "this.visibility='visible';this.style.visibility='visible'" + ";>";
} // writeMenuDiv

function writeMenuCurrent(href, text)
{ // write out the current menu at the top of the pop up menu
	docWriteText += "<a class=menuCurrent href='" + href + "'>" + text + "<img src=images/MenuCurrentBk.gif width=14px></a><br>";
} // writeMenuCurrent
function writeSubMenu(href, text)
{ // write out a sub-menu
	docWriteText += "<a class=menuDrop href='" + href + "'>" + text + "</a><br>";
}// writeSubMenu
function writeMenuDivFinish()
{ // finish the <div> or <layer> element
	var tagClose;
	if (nscp && navigator.appVersion.charAt(0) <= 4) // Netscape 4?
	{
		tagClose = "</layer>";
	}
	else // not NetScape 4
	{
		tagClose = "</div>";
	}
	docWriteText += tagClose;
} // writeMenuDivFinish
function putWriteText(textToPut)
{ // write out accumulated text to document
	// argument is optional, uses docWriteText if not present
	if (putWriteText.arguments.length >= 1)
	{
		docWriteText = textToPut;
	}
	alert(docWriteText);
	doc.write(docWriteText);
} // putWriteText
function getWriteText()
{
	return docWriteText;
} // getWriteText

function getObj(obj)
{ // returns an object, passed in string with object's ID
	var compLayr;
	if (nscp && navigator.appVersion.charAt(0) <= 4)
	{
		compLayr = window.document.layers[obj];
		//compLayr = window.document.layers[0].document.layers[obj];
		/* alert("Getting object=" + obj + ", 1st Layer=" + window.document.layers[0].id +
		  ", Number of layers=" + document.layers.length +
		  ", Next level layers=" + document.layers[0].document.layers.length +
		  "; Left=" + window.document.layers[0].left + ", top=" + window.document.layers[0].top + ", id=" + window.document.layers[0].id); */
		//alert("Layer=" + compLayr.id + ".");
	}
	else
	{
		// compLayr = eval("document.all" + obj + ".style")
		compLayr = document.getElementById(obj).style;
	}
	return compLayr;
} // getObj
function getLeftPos(layerName)
{ // return the left position of the layer
	var leftPos;
	if (nscp)
	{
		leftPos = document.layers[layerName].pageX;
	}
	else
	{
		// compLayr = eval("document.all" + obj + ".style")
		leftPos = document.getElementById(layerName).offsetLeft;
	}
	return leftPos
} // getLeftPos

function getLeftAnchor(anchorName)
{ // returns the left position of an anchor element
	var obj;
	var curleft = 0;
	if (nscp)
	{
		alert("Number of anchors=" + window.document.anchors.length);
		obj = document.anchors[anchorName];
	}
	else
	{
		obj = document.getElementById(anchorName);
	}
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			alert(obj.offsetLeft + obj.id);
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) // NetScape 4?
		curleft += obj.x;
	return curleft;
} // getLeftAnchor

function getAbsLeft(element)
{ // returns absolute left position of an element
	var curLeft = 0;
	var obj;
	obj = element; // so we can recurse
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curLeft += obj.offsetLeft
			obj = obj.offsetParent;
		}
		if (nscp)
		{
			curLeft -= 2;  // adjust
		}
		else // not Netscape
		{
			curLeft -= 2;  // adjust by 2 pixels
		}
	} // if have parent for element
	else if (obj.x) // NetScape 4?
	{
		curLeft += obj.x;
	}
	return curLeft;
} // getAbsLeft
function getAbsTop(element)
{ // returns absolute top position of an element
	var curTop = 0;
	var obj;
	obj = element; // so we can recurse
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curTop += obj.offsetTop
			obj = obj.offsetParent;
		}
		if (nscp)
		{
		}
		else // not Netscape
		{
			curTop += 1;  // adjust by 1 pixel
		}
	} // if have parent for element
	else if (obj.y) // NetScape 4?
	{
		curTop += obj.y;
	}
	//alert("Top=" + curTop);
	return curTop;
} // getAbsTop

function displayMenu(menuName, atElement, anchorObj)
{ // displays the Menu whose name is passed in as a string,
	// 2nd input is element at which we are to display the menu
	// 3rd input is anchor at which we are to display the menu, for NetScape 4
	var obj;
	obj = getObj(menuName);
	// next lines may not work for Netscape 4
	if (nscp && navigator.appVersion.charAt(0) <= 4) // Netscape 4?
	{
		obj.left = anchorObj.x - 3;
		obj.top = anchorObj.y;
	}
	else
	{
		obj.left = getAbsLeft(atElement);
		obj.top = getAbsTop(atElement) - 1;
	}
	obj.visibility = "visible";
} // displayMenu
function hideMenu(elmnt)
{
	var obj;
	obj = getObj(elmnt);
	obj.visibility = "hidden";
} // hideMenu
function hideAnchor(anchorName)
{ // hides the anchor element whose name is passed in
	// will not work in NetScape 4
	var anchor
	anchor = document.getElementById(anchorName);
	anchor.style.visibility = "hidden";
} // hideAnchor

