// Brower Determination
    isDOM = (document.getElementById) ? true : false
    isNS4 = (document.layers) ? true : false
     isIE = (document.all) ? true : false
    isNS6 = isDOM && !isIE
    isIE4 = isIE && !isDOM
    isIE5 = isIE && isDOM

var reportLog = ""
	
// Resize
function RestoreMenu()
{
	PositionSubMenus()
}

// Functions
// Returns a reference to entire menu
function CreateMenu()
{
   if (!isNS4)
   {
	   // Build Top Menu (Level 1)
	   var menuHtml = "<table id='subMenu' align='center' cellPadding='2' cellSpacing='0' class='lev1'><tr>"
	   for(var x=0; x < menuData.length; x++) 
	   {
		menuHtml += "<th id=\'lev1_" + x + "\' onMouseOut='lev1Out(this)' "
		if (isIE) 		
			menuHtml += "class='ieLev1Out' "
		else if (isNS6) 	
			menuHtml += "class='ns6Lev1Out' "

		menuHtml += "onMouseOver=\"lev1Over(this); status=\'" 
		if (typeof(menuData[x][1]) == "object")
		{
			menuHtml += menuData[x][0] + "\'\" "
			menuHtml += ">"
			menuHtml += "<span class='theText'>" + menuData[x][0] + "</span>"
		}
		else
		{
			menuHtml += menuData[x][1] + "\'\" "
			menuHtml += "onClick=\"location.href=\'" + menuData[x][1] + "\'\" "
			menuHtml += ">"
			menuHtml += "<span class='theText' style='cursor: hand' onClick=\"this.style.color=\'red\'\">" + menuData[x][0] + "</span>"
		}

		menuHtml += "</th>"
	   }
	   menuHtml += "</tr></table>"
	   document.write(menuHtml)		

	   if (isIE4)
		var menuObj = document.all["subMenu"]
	   else
		var menuObj = document.getElementById("subMenu")

	   for(var x=0; x < menuData.length; x++) 
	   {
		if (typeof(menuData[x][1]) == "object")
		{
			if (isIE4)
				var theTh = document.all["lev1_" + x]
			else
				var theTh = document.getElementById("lev1_" + x)

			theTh.pseudoChild = createSubMenu(menuData[x][1], menuObj, x)
		}
	   }

	   PositionSubMenus()

	   return menuObj
   }	
   else // using Nescape Navigator 4.7
   {
	ns4_menuObj = ns4_CreateMenu()
	
	ns4_PositionSubMenus()
	
	return ns4_menuObj
   }
}

// Creates a SubMenu with the id equal to the parameter "id"
// Returns a reference to the SubMenu created
function createSubMenu(subMenuArr, pseudoParent, x)
{
	var id = pseudoParent.id + "_" + x
	subMenuHtml = ""
	subMenuHtml += "<div id=\'" + id
	subMenuHtml +=	"\' style='visibility:hidden; position:absolute;' "
	subMenuHtml +=	"onMouseOver='subMenuOver(this)' "
	subMenuHtml +=	"onMouseOut='subMenuOut(this)' "
	subMenuHtml += ">"
	subMenuHtml += "<table cellSpacing='0' cellPadding='0' class='lev2'>"
	for (var y=0; y < subMenuArr.length; y++)
	{
		subMenuHtml += "<tr>"
		subMenuHtml += "<td "
		subMenuHtml +=    "id=\'"+ id + "_td_" + y + "\' "
		subMenuHtml += 	"onMouseOut='subMenuTdOut(this)' "
		subMenuHtml += 	"onMouseDown='subMenuTdDown(this)' "
				
		if (isIE)	
			subMenuHtml += "class='ieLev2Out' "
		else
			subMenuHtml += "class='ns6Lev2Out' "

		subMenuHtml += "onMouseOver=\'subMenuTdOver(this); status=\""
		if (typeof(subMenuArr[y][1]) == "string")
		{
			subMenuHtml += subMenuArr[y][1] + "\"\' onClick=location.href=\'" + subMenuArr[y][1] + "\'"
		}
		else
		{
			subMenuHtml += subMenuArr[y][0] + "\"\'"
		}
		subMenuHtml += ">"

		subMenuHtml += "<table width='100%' cellPadding='0'><tr>"

		// Cell Reserved for icon
		subMenuHtml += "<td></td>"

		subMenuHtml += "<td>"
		subMenuHtml += "<span class='theText'>" + subMenuArr[y][0] + "</span>"
		subMenuHtml += "</td>"
		
		// Cell Reserved for arrow if there is another menu
		subMenuHtml += "<td align='right'>"
		if (typeof(subMenuArr[y][1]) == "object")
		   subMenuHtml += "&nbsp;<img src='arrowWhiteRight.gif'>"
		subMenuHtml += "</td>"
		subMenuHtml += "</tr></table></td>"
		subMenuHtml += "</tr>"
	}
	subMenuHtml += "</table>"
	subMenuHtml += "</div>"

	//alert (id + "\n" + subMenuHtml.replace(/>/g, ">\n"))
	document.write(subMenuHtml)

	// Get reference to itself
	if (isIE4)
		var subMenu = document.all[id]
	else
		var subMenu = document.getElementById(id)
		
   	subMenu.pseudoParent = pseudoParent
		
	
	for (var y=0; y < subMenuArr.length; y++)
	{
		if (typeof(subMenuArr[y][1]) == "object")
		{
			if (isIE4)
				var theTd = document.all[id + "_td_" + y]
			else
				var theTd = document.getElementById(id + "_td_" + y)

			theTd.pseudoChild = createSubMenu(subMenuArr[y][1], subMenu, y)
		}
	}

	return subMenu
}

function PositionSubMenus()
{	
   if (!isNS4)
   {
   	for (var x=0; x < menuData.length; x++)
   	{
   		if (typeof(menuData[x][1]) == "object")
   		{
			if (isIE4)
				var lev1Th = document.all["lev1_" + x]
			else
				var lev1Th = document.getElementById("lev1_" + x)

			var left  = lev1Th.offsetLeft
			var top   = lev1Th.offsetTop
			if (isIE)
			{
				left  += lev1Th.offsetParent.offsetLeft
				top   += lev1Th.offsetParent.offsetTop + lev1Th.offsetHeight
			}
			else
			{
				left  += lev1Th.offsetParent.offsetLeft - 4
				top   += lev1Th.offsetHeight + 4
			}
			
			if (isIE4)
				var lev2Div = document.all["subMenu_" + x]
			else
				var lev2Div = document.getElementById("subMenu_" + x)

			lev2Div.style.top = top
			var oldWidth = lev2Div.offsetWidth
			lev2Div.style.left = left
			
			// if the table is pushed too far to the right, the table will
			// shrink to fit the data.  if this happens, the table is
			// aligned to the right of the lev1 cell instead
			if (lev2Div.offsetWidth != oldWidth)
			{
				lev2Div.style.left = left + lev1Th.offsetWidth - oldWidth
			}

			// Position submenus
			for (var y=0; y < menuData[x][1].length; y++)
			{
				if (typeof(menuData[x][1][y][1]) == "object")
				{
					var nextPseudoParentId = lev2Div.id + "_td_" + y
					var nextPseduoChildId  = lev2Div.id + "_" + y
					if (isIE4)
					{
						var nextPseudoParent = document.all[nextPseudoParentId]
						var nextPseudoChild  = document.all[nextPseduoChildId]
					}
					else
					{
						var nextPseudoParent = document.getElementById(nextPseudoParentId)
						var nextPseudoChild  = document.getElementById(nextPseduoChildId)
					}
					positionSubMenu(menuData[x][1][y][1], nextPseudoParent, nextPseudoChild)
				}
			}
		}
 	}
   }
   else // using Nescape Navigator 4.7
   {
	ns4_PositionSubMenus()
   }
}

function positionSubMenu(subMenuArr, pseudoParent, pseudoChild)
{
	var left  = pseudoParent.offsetLeft + pseudoParent.offsetWidth - 3
	var top   = pseudoParent.offsetTop + 3
	if (isIE)
	{
		left += pseudoParent.offsetParent.offsetLeft + pseudoParent.offsetParent.offsetParent.offsetLeft
		top  += pseudoParent.offsetParent.offsetTop + pseudoParent.offsetParent.offsetParent.offsetTop
	}
	else
	{
		left -= 4
		top  -= 4
	}
			
	pseudoChild.style.top = top
	var oldWidth = pseudoChild.offsetWidth
	pseudoChild.style.left = left
			
	// if the table is pushed too far to the right, the table will
	// shrink to fit the data.  if this happens, the table is
	// aligned to the right of the lev1 cell instead
	if (pseudoChild.offsetWidth != oldWidth)
	{
		pseudoChild.style.left = left - pseudoParent.offsetWidth - oldWidth + 6
	}

	// Position submenus
	for (var y=0; y < subMenuArr.length; y++)
	{
		if (typeof(subMenuArr[y][1]) == "object")
		{
			var nextPseudoParentId = pseudoChild.id + "_td_" + y
			var nextPseduoChildId = pseudoChild.id + "_" + y
			if (isIE4)
			{
				var nextPseudoParent = document.all[nextPseudoParentId]
				var nextPseudoChild  = document.all[nextPseduoChildId]
			}
			else
			{
				var nextPseudoParent = document.getElementById(nextPseudoParentId)
				var nextPseudoChild  = document.getElementById(nextPseduoChildId)
			}
			positionSubMenu(subMenuArr[y][1], nextPseudoParent, nextPseudoChild)
		}
	}
}

function lev1Over(theTh)
{
	if (isIE)
		theTh.className = "ieLev1Over"
	else
		theTh.className = "ns6Lev1Over"

	if (theTh.pseudoChild)
		theTh.pseudoChild.style.visibility="visible"
}

function lev1Out(theTh)
{
	status = " "

	if (isIE)
		theTh.className = "ieLev1Out"
	else
		theTh.className = "ns6Lev1Out"
	
	if (theTh.pseudoChild)
		theTh.pseudoChild.style.visibility = "hidden"
}

function subMenuOver(subMenu)
{
	subMenu.style.visibility = "visible"

	if (subMenu.pseudoParent && subMenu.pseudoParent.id != "subMenu")
		subMenuOver(subMenu.pseudoParent)
}
function subMenuOut(subMenu)
{
	subMenu.style.visibility = "hidden"

	if (subMenu.pseudoParent && subMenu.pseudoParent.id != "subMenu")
		subMenuOut(subMenu.pseudoParent)
}

function subMenuTdOver(theTd)
{
	if (isIE)
		theTd.className="ieLev2Over"
	else
		theTd.className="ns6Lev2Over"
		
	if (theTd.pseudoChild)
	   theTd.pseudoChild.style.visibility = "visible"
}

function subMenuTdOut(theTd)
{
	status = ""

	if (isIE)
		theTd.className="ieLev2Out"
	else
		theTd.className="ns6Lev2Out"

	if (theTd.pseudoChild)
	   theTd.pseudoChild.style.visibility = "hidden"
}

function subMenuTdDown(theTd)
{
	if (isIE)
		theTd.className="ieLev2Click"
	else
		theTd.className="ns6Lev2Click"
}

////////////////
// NS4 Functions
////////////////
function ns4_CreateMenu()
{
	var menuHtml = "" 
	menuHtml += "<layer id='subMenu'>"
	menuHtml += "<table border='1' align='center' cellSpacing='0' class='lev1'><tr>"
	for(var x=0; x < menuData.length; x++) 
	{
		menuHtml += "<th id=\'subMenu_tdReal_" + x + "\' class='cell'>"
		menuHtml += "<a class='theText' "
		if (typeof(menuData[x][1]) == "string")
			menuHtml += "href=\'" + menuData[x][1] + "\' "
		menuHtml += ">" + menuData[x][0] + "</a>"
		menuHtml += "</th>"
	}
	menuHtml += "</tr></table>"
	menuHtml += "</layer>"

	document.write(menuHtml)

	var menuObj = document.subMenu
	
	// Make invisible layers for level 1
	for (var x=0; x < menuData.length; x++)
	{
	 	if (typeof(menuData[x][1]) == "object")
		{
	 	 	var theTh = document.subMenu.document["subMenu_tdReal_" + x]
	
			var lev1InnerLayerHtml = ""

			lev1InnerLayerHtml += "<layer "
			lev1InnerLayerHtml += 	"id=\'subMenu_td_" + x + "\' "
			lev1InnerLayerHtml += 	"width=\'" + theTh.clip.width + "\' "
			lev1InnerLayerHtml += 	"onMouseOver='ns4_lev1Over(this)' "
			lev1InnerLayerHtml += 	"onMouseOut='ns4_lev1Out(this)' "
			lev1InnerLayerHtml += ">"
    		lev1InnerLayerHtml += "&nbsp;</layer>"

			document.write(lev1InnerLayerHtml)
		}
	}
	
	for(var x=0; x < menuData.length; x++)
	{
		if (typeof(menuData[x][1]) == "object")
		{
			var theThLayer = document["subMenu_td_" + x]
			
			ns4_createSubMenu(menuData[x][1], menuObj, x)
			
			theThLayer.pseudoChild = document["subMenu_" + x]
		}
	}

	document.write("<br>")
}

function ns4_createSubMenu (subMenuArr, pseudoParent, x)
{
	var subMenuHtml = ""
	
	var id = pseudoParent.id + "_" + x

	subMenuHtml += "<layer "
	subMenuHtml +=   "id=\'" + id + "\' "
	subMenuHtml +=   "visibility='hide' "
	subMenuHtml +=   "onMouseOver='ns4_subMenuOver(this)' "
	subMenuHtml +=   "onMouseOut='ns4_subMenuOut(this)' "

	subMenuHtml += ">"
	subMenuHtml += "<table border='1' cellSpacing='0' class='lev2'>"

	for (y=0; y < subMenuArr.length; y++)
	{
		subMenuHtml += "<tr>"
		subMenuHtml +=   "<td id=\'" + id + "_tdReal_" + y + "\' class='cell'>"
		if (typeof(subMenuArr[y][1]) == "string")
		{
			subMenuHtml += "<a class='theText' href=\'" + subMenuArr[y][1] + "\'>" + subMenuArr[y][0] + "</a></td>"
		}
		else
		{
			subMenuHtml += "<span class='theText'>" + subMenuArr[y][0] + "</span>&nbsp;&nbsp;&nbsp;&nbsp;<img src='arrowWhiteRight.gif'></td>"
		}
		subMenuHtml += "</tr>"
	}

	subMenuHtml += "</table>"
	subMenuHtml += "</layer>"

	document.write(subMenuHtml)

	// Get reference to subMenu just Created
	var subMenu = document[id]
	subMenu.pseudoParent = pseudoParent

	// Invisible Layers for Mouse Events
	for (y=0; y < subMenuArr.length; y++)
	{
		if (typeof(subMenuArr[y][1]) == "object")
		{
			var theTd = subMenu.document[id + "_tdReal_" + y]
			//document.write("<layer left=\'" + (theTd.left + subMenu.clip.width - 15) + "\' top=\'" + (theTd.top + 5) + "\'><img src='arrowWhiteRight.gif'></layer>")

			var invisibleLayerHtml = ""

			invisibleLayerHtml += "<layer "
			invisibleLayerHtml += 	"id=\'"+ id + "_td_" + y + "\' "
			invisibleLayerHtml += 	"width=\'" + (theTd.clip.width + 5) + "\' "
			invisibleLayerHtml +=   "visibility='hide' "
			invisibleLayerHtml +=   "onMouseOver='ns4_subMenuTdOver(this)' "
			invisibleLayerHtml +=   "onMouseOut='ns4_subMenuTdOut(this)' "

			invisibleLayerHtml += ">"
	    		invisibleLayerHtml += "&nbsp;</layer>"

			document.write(invisibleLayerHtml)
		}
	}
		
	subMenu.childrenLayers = new Array()
	
	for(var y=0; y < subMenuArr.length; y++)
	{
		if (typeof(subMenuArr[y][1]) == "object")
		{
			var tdLayer = document[id + "_td_" + y]
			
			subMenu.childrenLayers[subMenu.childrenLayers.length] = tdLayer
			
			tdLayer.pseudoChild = ns4_createSubMenu(subMenuArr[y][1], subMenu, y)
			tdLayer.pseudoParent = subMenu
		}
	}
	
	return subMenu
}

function ns4_PositionSubMenus()
{
	for (var x=0; x < menuData.length; x++)
	{
		if (typeof(menuData[x][1]) == "object")
		{
			var theTh = document.subMenu.document["subMenu_tdReal_" + x]
			var theThLeft   = theTh.pageX
			var theThTop    = theTh.pageY
			var theThWidth  = theTh.clip.width
			var theThHeight = theTh.clip.height	

			// Correct for 2-line-cell bug
			if (x != 0 && theThLeft == 0)
			{
				var lastTh = document["subMenu_" + (x-1)]
				theThLeft  = lastTh.pageX + lastTh.clip.width + 12
				theThTop   = lastTh.pageY
			}

			var lev1InnerLayer = document["subMenu_td_" + x]
			lev1InnerLayer.left = theThLeft
			lev1InnerLayer.top  = theThTop

			// Position first level of Submenus (lev2)
			var lev2OuterLayer = document["subMenu_" + x]
			lev2OuterLayer.left = theThLeft - 5
			lev2OuterLayer.top  = theThTop + theThHeight

			for (var y=0; y < menuData[x][1].length; y++)
			{
				if (typeof(menuData[x][1][y][1]) == "object")
				{
					var nextTdLayer = document[lev2OuterLayer.id + "_td_" + y]
					var nextTdReal = lev2OuterLayer.document[lev2OuterLayer.id + "_tdReal_" + y]

					ns4_positionSubMenu(menuData[x][1][y][1], nextTdLayer, nextTdReal, "forward")
				}
			}
		}
	}
}
function ns4_positionSubMenu(subMenuArr, tdLayer, tdReal, direction)
{
 	tdLayer.left = tdReal.pageX
	tdLayer.top  = tdReal.pageY

 	var pseudoChild = tdLayer.pseudoChild

	pseudoChild.left = tdReal.pageX + tdReal.clip.width

	pseudoChild.top  = tdReal.pageY

	if (direction == "forward" && pseudoChild.left + pseudoChild.clip.width > window.innerWidth)
		direction = "backward"

	if (direction == "backward")
	{
		pseudoChild.left = tdReal.pageX - pseudoChild.clip.width
		if (pseudoChild.left < 0)
		{
			direction = "forward"
			pseudoChild.left = tdReal.pageX + tdReal.clip.width
		}
	}



	for (var y = 0; y < subMenuArr.length; y++)
	{
		if (typeof(subMenuArr[y][1]) == "object")
		{
			var nextTdLayer = document[pseudoChild.id + "_td_" + y]
			var nextTdReal  = pseudoChild.document[pseudoChild.id + "_tdReal_" + y]

			ns4_positionSubMenu(subMenuArr[y][1], nextTdLayer, nextTdReal, direction)
		}
	}
}


function ns4_lev1Over(theThLayer)
{
 	var subMenu = theThLayer.pseudoChild
	
	reportLog += "ns4_lev1Over(" + subMenu.id + ")\n"

	subMenu.visibility="show"
		
	for (var i=0; i < subMenu.childrenLayers.length; i++)
	 	subMenu.childrenLayers[i].visibility="show"
}

function ns4_lev1Out(theThLayer)
{
	status = " "

	var subMenu = theThLayer.pseudoChild
	
	reportLog += "ns4_lev1Out(" + subMenu.id + ")\n"
	
	subMenu.visibility = "hide"
		
	for (var i=0; i < subMenu.childrenLayers.length; i++)
	 	subMenu.childrenLayers[i].visibility="hide"
}

function ns4_subMenuOver(subMenu)
{
	reportLog += "ns4_subMenuOver(" + subMenu.id + ")\n"

	subMenu.visibility = "show"

	if (subMenu.pseudoParent && subMenu.pseudoParent.id != "subMenu")
		ns4_subMenuOver(subMenu.pseudoParent)
		
	for (var i=0; i < subMenu.childrenLayers.length; i++)
	 	subMenu.childrenLayers[i].visibility="show"
}
function ns4_subMenuOut(subMenu)
{
	reportLog += "ns4_subMenuOut(" + subMenu.id + ")\n"

	subMenu.visibility = "hide"

	if (subMenu.pseudoParent && subMenu.pseudoParent.id != "subMenu")
		ns4_subMenuOut(subMenu.pseudoParent)
		
	for (var i=0; i < subMenu.childrenLayers.length; i++)
	 	subMenu.childrenLayers[i].visibility="hide"
}

function ns4_subMenuTdOver(theTdLayer)
{
 	// When you enter the layer, the layer underneath gets a MouseOut event
	// Therefore, go back and set the layer to "show" before continue
 	ns4_subMenuOver(theTdLayer.pseudoParent)

	// Now, display next menu
 	var subMenu = theTdLayer.pseudoChild
	
	reportLog += "ns4_subMenuTdOver(" + subMenu.id + ")\n"
	
	subMenu.visibility = "show"
	   
	for (var i=0; i < subMenu.childrenLayers.length; i++)
	 	subMenu.childrenLayers[i].visibility="show"
}

function ns4_subMenuTdOut(theTdLayer)
{
	status = ""

	var subMenu = theTdLayer.pseudoChild
	
	reportLog += "ns4_subMenuTdOut(" + subMenu.id + ")\n"
	
    subMenu.visibility = "hide"
	
	for (var i=0; i < subMenu.childrenLayers.length; i++)
	 	subMenu.childrenLayers[i].visibility="hide"
}

function ShowReportLog ()
{
 	alert(reportLog)
}