// JavaScript Document
// Nav Menu script - derivation of a text menu schema

//Create entries
  function org(name, parent, children, level){
		this.id = name
		this.parent = parent
		this.children = children
		this.level = level
		this.className = "level" + level
  }

//Arrays must be declared
var orgArray = new Array()
var newImg = new Array()
var docImages = new Array()

// Following array format:  name (element id) ; parent ("root" for the first element);
// children ( 0 if no,  1 if yes) ; level (root = 0)
makeArray()

// Set initial image values
blank = new Image
blank.src = "images/nav/blank.gif"

var newDiv, newLink, newImgNav

//  Write and display content
var content = ""
content += '<div class="' + orgArray[0].className + '" id="' + orgArray[0].id + 'Div">'
content += '<img src="images/nav/blank.gif" name="' + orgArray[0].id + '" border="0"></div>'

document.write(content)

for (var i = 1; i < orgArray.length ; i++)
{
	newDiv = document.createElement("div")
	newDiv.id = orgArray[i].id + "Div"
	newDiv.className = orgArray[i].className
	
	newLink = document.createElement("a")
	if (orgArray[i].id == "home")
	{
		newLink.href = "index.html"
	}
	else
	{
		if (orgArray[i].children == 0)
		{
			newLink.href = orgArray[i].id + ".html"
		}
	}
	newLink.level = orgArray[i].level
	
	newImgNav = document.createElement("img")
	newImgNav.src = "images/nav/" + orgArray[i].id + ".gif"
	newImgNav.name = orgArray[i].id
	newImgNav.id = orgArray[i].id
	newImgNav.level = orgArray[i].level

	if(orgArray[i].level > 1)
	{
		findParent = ""
		startk = i - 1
		for ( j = (orgArray[i].level - 2) ; j > -1 ; j--)
		{
			if (findParent == "")
			{
				findParent = orgArray[i].parent
			}
			for ( k = startk ; k > -1 ; k--)
			{
				if(orgArray[k].id == findParent)
				{
					findParent = orgArray[k].parent
					startk = k - 1
					k = 0
				}
			}
		}
		for ( j = 0 ; j < (orgArray[i].level - 1) ; j++ )
		{
			newImg[j] = document.createElement("img")
			newImg[j].src = "images/nav/blank.gif"
			newDiv.appendChild(newImg[j])
		}
	}	
	newLink.appendChild(newImgNav)  //in between link tags
	newDiv.appendChild(newLink)
	
	//set the mouse_over & mouse_out event handlers
	document.getElementById((orgArray[i].parent + "Div")).appendChild(newDiv)
	if (orgArray[i].children == 0)
	{
		navigator.appName == "Netscape" ? newImgNav.setAttribute("onmouseover", "MM_swapImage('" + orgArray[i].id + "','','images/nav/" + orgArray[i].id + "_over.gif',1); toggleAllOff(this); toggleParentOn (this)") : newImgNav.onmouseover = navOverNoChild

		if (orgArray[i].parent == "ROOT"  || orgArray[i].parent == "parent")
		{
			navigator.appName == "Netscape" ? newImgNav.setAttribute("onmouseout", "MM_swapImgRestore()") : newImgNav.onmouseout = navOutNone
		}
		else  //parent is not root - so want to keep myself shown until off of me, any siblings, or my parent
		{
			navigator.appName == "Netscape" ? newImgNav.setAttribute("onmouseout", "MM_swapImgRestore();checkToggleSelf(this, event)") : newImgNav.onmouseout = navOutNoChild
		}
	}
	else //has children
	{
		navigator.appName == "Netscape" ? newImgNav.setAttribute("onmouseover", "MM_swapImage('" + orgArray[i].id + "','','images/nav/" + orgArray[i].id + "_over.gif',1); navOverChild(this)") : newImgNav.onmouseover = navOverChild
		navigator.appName == "Netscape" ? newImgNav.setAttribute("onmouseout", "MM_swapImgRestore();checkToggle(this, event)") : newImgNav.onmouseout = checkToggle
	}
}

  function toggleChild(x)  //passes in at img level
  {
		for ( i = (parseInt(x.level)) ; i < x.parentNode.parentNode.childNodes.length ; i++)
		{
			x.parentNode.parentNode.childNodes[i].className == "temp" ? x.parentNode.parentNode.childNodes[i].className = "level" + (parseInt(x.level) + 1) : x.parentNode.parentNode.childNodes[i].className = "temp"
		}
  }

	function toggleAllOff(e) //toggle all items off to prevent multiple submenus showing
	{
		for (k = 1; k < orgArray.length; k++)
		{
			if (orgArray[k].id == e.id)
			{
				if (orgArray[k].parent == "parent")
				{
					for (i = 1; i < orgArray.length ; i++)
					{
						x = document.getElementById(orgArray[i].id)
						x.src = "images/nav/" + orgArray[i].id + ".gif"
						if (orgArray[i].parent == "parent")
						{
							toggleChildOff(x)
							x.className = "level" + (parseInt(orgArray[i].level))
						}
					}
				}
				k = orgArray.length
			}
		}
	}

  function toggleChildOff(x)  //passes in at img level - this is for use with toggling all off
  {
		for ( tco = (parseInt(x.level)) ; tco < x.parentNode.parentNode.childNodes.length ; tco++)
		{
			if (x.parentNode.parentNode.childNodes[tco].className == "temp")
			{
				x.parentNode.parentNode.childNodes[tco].className = "level" + (parseInt(x.level) + 1)
			}
		}
  }
	
	function toggleParentOn(e)  //make sure that if I am over a child, that the parent is set to on too
	{
		for (k = 1; k < orgArray.length; k++)
		{
			if (orgArray[k].id == e.id)
			{
				if (orgArray[k].parent != "ROOT" && orgArray[k].parent != "parent")
				{
					for (i = 1; i < orgArray.length ; i++)
					{
						if (orgArray[i].id == orgArray[k].parent)
						{
							x = document.getElementById(orgArray[i].id)
							x.src = "images/nav/" + orgArray[i].id + "_over.gif"
							x.className = "temp"
							i = orgArray.length
						}
					}
				}
				k = orgArray.length
			}
		}
	}
	
	function checkToggle(element, evt)
	{
		//if I do not land on another item with the className == "temp" then I want to do this
		//Netscape
		if (navigator.appName == "Netscape") //event != undefined
		{
			if (evt.relatedTarget.className != "temp")
			{
				navOutChild(element)
			}
		}
		else //IE
		{
			if (window.event.toElement.className != "temp")
			{
				navOutChild(window.event.srcElement)
			}
		}
	}

	function checkToggleSelf(x, evt)
	{  //coming from child image - so want to get to the parent Image and then toggle child from that
		tempParentId = x.parentNode.parentNode.parentNode.id.substring(0,(x.parentNode.parentNode.parentNode.id.length - 3))

		//if I do not land on another item with the className == "temp" then I want to do this
		//Netscape
		if (navigator.appName == "Netscape")
		{		
			//if (window.event.toElement.className != "temp")
			if (evt.relatedTarget.className != "temp") //needs to be the toElement instead
			{
				toggleChild(document.getElementById(tempParentId)) //pass in the parent image node
				
				//change the parent settings - proper class and new image
				document.getElementById(tempParentId).src = "images/nav/" + tempParentId + ".gif"
				//x.parentNode.parentNode.parentNode.className = "level" + (parseInt(x.level) - 1)
				document.getElementById(tempParentId).className = "level" + (parseInt(x.level) - 1)
			}
		}
		else //IE
		{
			if (window.event.toElement.className != "temp")
			{
	
				toggleChild(document.getElementById(tempParentId)) //pass in the parent image node
				
				//change the parent settings - proper class and new image
				document.getElementById(tempParentId).src = "images/nav/" + tempParentId + ".gif"
				//x.parentNode.parentNode.parentNode.className = "level" + (parseInt(x.level) - 1)
				document.getElementById(tempParentId).className = "level" + (parseInt(x.level) - 1)
			}
		}
	}

  // Required for IE5
		//mouse_over for parent with no children
  function navOverNoChild(event)
  {
		if (navigator.appName == "Netscape")
		{
					//turn off all elements first that are on to avoid multiple submenus being open
			toggleAllOff(event)
			
			//make sure that if I am a child, that my parent image is turned on as well
			toggleParentOn(event)
		}
		else
		{
			//turn off all elements first that are on to avoid multiple submenus being open
			toggleAllOff(window.event.srcElement)
			
			//make sure that if I am a child, that my parent image is turned on as well
			toggleParentOn(window.event.srcElement)
			
			//MM_swapImage()
			window.event.srcElement.src = "images/nav/" + window.event.srcElement.id + "_over.gif"
		}
	}
	
  // Required for IE5
		//mouse_over for parent with children
  function navOverChild(event)
  {
		//if Netscape
		if (navigator.appName == "Netscape") // if (event != undefined)
		{
			if (event.className != "temp")
			{
				toggleAllOff (event)
				event.className = "temp"
				toggleChild (event)
			}
		}
		else //if IE
		{
			if (window.event.srcElement.className != "temp")
			{
				//turn off all elements first that are on to avoid multiple submenus being open
				toggleAllOff(window.event.srcElement)
						
				//MM_swapImage()
					window.event.srcElement.src = "images/nav/" + window.event.srcElement.id + "_over.gif"
					window.event.srcElement.className = "temp"
				//toggle children on
					toggleChild(window.event.srcElement)
			}
		}
	}
	
	// Required for IE5
	 	//mouse_out for parent with no children & no parent
  function navOutNone(event)
  {
		//MM_swapImgRestore()
			window.event.srcElement.src = "images/nav/" + window.event.srcElement.id + ".gif"
	}

	 // Required for IE5
  function navOutNoChild(event)  //check if not over any of the children or self and toggle off & restore image
  {
		//MM_swapImgRestore()
			window.event.srcElement.src = "images/nav/" + window.event.srcElement.id + ".gif"
		//toggle self & siblings & parent off if off of all of us
			checkToggleSelf(window.event.srcElement)
	}

	// Required for IE5
		//mouse_out for parent with children
	function navOutChild(x)  //passes in image element
  {
		//MM_swapImgRestore()
			x.src = "images/nav/" + x.id + ".gif"
			x.className = "level" + x.level
			
		//toggle children off
			toggleChild(x)
	}
		//tagName, document.getElementById("companyDiv").innerHTML  -- keep as a reference