﻿var prefix = "";
// var prefix = "/~dwen/indisys";

function loadXML(xmlFile) {
	xmlDoc.async="false";
	xmlDoc.onreadystatechange=verify;
	xmlDoc.load(xmlFile);
}

function verify() { 
	if(xmlDoc.readyState!=4)
		return false; 
}

function loadXMLDoc(fileName){
	if (window.XMLHttpRequest){
		xhttp=new XMLHttpRequest();
	}
	else{
		xhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xhttp.open("GET",fileName,false);
	xhttp.send("");
	return xhttp.responseXML;
} 

/*
Need to account for pages that do not contain left nav, such as Home and Solutions pages
*/

var noNavList =["index.html", "solutions.html"];

function getFileName () {
	var URL = document.URL;
	var URLparts = URL.split("/");
//	alert('URL: ' + URL);
	return URLparts[URLparts.length-1];
}

function isNavListMember (fileName) {
	for (i=0; i<noNavList.length; i++) {
		if (fileName == noNavList[i])
			return false
	}
	return true
}

function get_firstChild(n) {
	y=n.firstChild;
	while (y.nodeType!=1) {
		y=y.nextSibling;
	}
	return y;
}

function get_nextSibling(n) {
	y=n.nextSibling;
	while (y.nodeType!=1) {
		y=y.nextSibling;
	}
	return y;
}

function getAllSiblings(n) { // menu node
	var currentNode;
	var siblings = new Array();

	currentNode = get_firstChild(n)
	siblings.push(n.childNodes[0]);
	
	if (n.childNodes.length > 1) {
		for (i=1; i < n.childNodes.length; i++) {
			currentNode = currentNode.nextSibling;
			siblings.push(currentNode);
		}
	}
	return siblings;
}

function getBaseURL(nURL) {
    var url = document.URL;
    var nURLStartIndex = document.URL.indexOf(nURL);
    var bURL = url.substring(0, nURLStartIndex);

	return bURL;
}

var crumbsArray = new Array();

function traverse(tree) {
	var currentNode;
	var nodeURL;
	var baseURL;
	var list = "";
	var crumbs = "";
	var navArray = new Array();
	var nav = "";
	var isPage = false;

	// Set currentNode
	currentNode = get_firstChild(tree); // category node
	// alert ("current node: " + currentNode.nodeName);
	
	for (var i=0; i < tree.childNodes.length; i++) {
		/*	
		if (currentNode.childNodes[0].attributes[0].value.indexOf("?") > 0) {
			// alert ("Assigned URL: " + currentNode.childNodes[0].attributes[0].value);
			var nodeURLArray = currentNode.childNodes[0].attributes[0].value.split("?");
			nodeURL = nodeURLArray[0];
			// alert ("nodeURL: " + nodeURL);
		} else {
			nodeURL = currentNode.childNodes[0].attributes[0].value;
		}
		*/

		baseURL = getBaseURL(currentNode.childNodes[0].attributes[0].value);
		nodeURL = currentNode.childNodes[0].attributes[0].value;
/*
		alert (
			"nodeURL:\n" + nodeURL + "\n\n" +
			"baseURL.length: " + baseURL.length + "\n\n" +
			"document.URL.length: " + document.URL.length + "\n\n" +
			"currentURL:\n" + document.URL.substring(baseURL.length, document.URL.length)
		);		
*/
		// 2009.11.28
//		if ((nodeURL != "/index.html") && (document.URL.indexOf(nodeURL) > 0)) {
		    // not homepage and the node's URL is the latter part of the current page's URL
			// alert (nodeURL + ": " + document.URL.indexOf(nodeURL));

		if ((nodeURL != "/index.html") && (nodeURL == document.URL.substring(baseURL.length, document.URL.length))) {
			isPage = true;
			// alert ("isPage = true");

			// alert ("nodeURL: " + nodeURL);		
			// alert ("currentURL: " + document.URL.substring(baseURL.length, document.URL.length));		

			document.title += " - " + currentNode.childNodes[0].text;
			
			// Display Heading
			if (hasHeading) {
				document.getElementById("heading").innerHTML = currentNode.childNodes[0].text;
			}
			
			// Display Bread Crumbs
			if (hasBreadCrumbs) {
				// alert ("crumbs array length: " + crumbsArray.length);

				for (j=0; j < crumbsArray.length; j++){
					// alert ("Parent " + j + ": " + crumbsArray[j].childNodes[0].text);
					crumbs += "<a href='" + prefix + crumbsArray[j].childNodes[0].attributes[0].value + "'>" + crumbsArray[j].childNodes[0].text + "</a>&nbsp;&nbsp;>&nbsp;&nbsp;"
				}
				document.getElementById("bcrumbs").innerHTML = "<b>" + crumbs + currentNode.childNodes[0].text + "</b>";
			}
			
			// Display Nav
			if (hasNav) {
				// alert ("Before getAllSiblings: " + crumbsArray[0].childNodes[0].text);
	
				navArray = getAllSiblings(crumbsArray[0].childNodes[1]); // menu node
				for (j=0; j < navArray.length; j++){
					nav += "<li><a href='" + prefix + navArray[j].childNodes[0].attributes[0].value + "'>" + navArray[j].childNodes[0].text + "</a></li>"
				}
				document.getElementById("suckertree1").innerHTML = nav;
			}
			
			isPage = false;
		}

		// Check for submenu
		if ((currentNode.childNodes.length > 1) && (currentNode.childNodes[1].nodeName == "menu")) {
			crumbsArray.push(currentNode); // category tag
/*
			if (isPage) {
				list += "<li>" + currentNode.childNodes[0].text + "<ul>";
			}
			else {
				list += "<li><a href='" + prefix + currentNode.childNodes[0].attributes[0].value + "'>" + currentNode.childNodes[0].text + "</a><ul>";
			}
*/
			list += "<li><a href='" + prefix + currentNode.childNodes[0].attributes[0].value + "'>" + currentNode.childNodes[0].text + "</a><ul>";
			list += traverse(currentNode.childNodes[1]); // menu tag
			list += "</ul></li>";
		}
		else {
/*
			if (isPage) {
				list += "<li>" + currentNode.childNodes[0].text + "</li>";
			}
			else {
				crumbsArray.push(currentNode.childNodes[0]);
				list += "<li><a href='" + prefix + currentNode.childNodes[0].attributes[0].value + "'>" + currentNode.childNodes[0].text + "</a></li>";
			}
*/
			crumbsArray.push(currentNode.childNodes[0]);
			list += "<li><a href='" + prefix + currentNode.childNodes[0].attributes[0].value + "'>" + currentNode.childNodes[0].text + "</a></li>";
		}

		// isPage = false;

		if (currentNode != tree.lastChild) {
			currentNode = currentNode.nextSibling; // category tag
		}

		crumbsArray.pop();
	}

	return (list);
}

/*
Create an array for each menu ID, and have one call of initTraverse after the last ID.
Create a list variable to be assigned the value of the return and loop through each ID to populate node values into them
*/

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var htmlTagIDs = ["treemenu1"]; //Enter id(s) of SuckerTree UL menus, separated by commas

function initTraverse(file) {
	loadXML(file);
	var doc=xmlDoc.documentElement;
	var fullMenu = traverse(doc);
	
	// Only output fullMenu for treemenu1
	for (i=0; i < htmlTagIDs.length; i++) {
		document.getElementById(htmlTagIDs[i]).innerHTML = fullMenu;
	}
}

function initTraverse2(file, tag) {
	htmlTagID = tag;
	loadXML(file);
	var doc=xmlDoc.documentElement;
	document.getElementById(htmlTagID).innerHTML = traverse(doc);
}

//SuckerTree Horizontal Menu (Sept 14th, 06)
//By Dynamic Drive: http://www.dynamicdrive.com/style/

var menuids=["treemenu1"]; //Enter id(s) of SuckerTree UL menus, separated by commas

function buildsubmenus_horizontal(){
	for (var i=0; i<menuids.length; i++){
		var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
		for (var t=0; t<ultags.length; t++){
			if (ultags[t].parentNode.parentNode.id==menuids[i]){ //if this is a first level submenu
				ultags[t].style.top=ultags[t].parentNode.offsetHeight+"px" //dynamically position first level submenus to be height of main menu item
				ultags[t].parentNode.getElementsByTagName("a")[0].className="mainfoldericon"
			}
			else{ //else if this is a sub level menu (ul)
				ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
				ultags[t].parentNode.getElementsByTagName("a")[0].className="subfoldericon"
			}
			ultags[t].parentNode.onmouseover=function(){
				this.getElementsByTagName("ul")[0].style.visibility="visible"
			}
			ultags[t].parentNode.onmouseout=function(){
				this.getElementsByTagName("ul")[0].style.visibility="hidden"
			}
		}
	}
}

//SuckerTree Vertical Menu 1.1 (Nov 8th, 06)
//By Dynamic Drive: http://www.dynamicdrive.com/style/

var menuids2=["suckertree1"]; //Enter id(s) of SuckerTree UL menus, separated by commas

function buildsubmenus(){
	for (var i=0; i<menuids2.length; i++){
		var ultags=document.getElementById(menuids2[i]).getElementsByTagName("ul")
	   	for (var t=0; t<ultags.length; t++){
    		ultags[t].parentNode.getElementsByTagName("a")[0].className="subfolderstyle"
			if (ultags[t].parentNode.parentNode.id==menuids2[i]) //if this is a first level submenu
				ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
			else //else if this is a sub level submenu (ul)
				ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
			ultags[t].parentNode.onmouseover=function(){
				this.getElementsByTagName("ul")[0].style.display="block"
			}
			ultags[t].parentNode.onmouseout=function(){
				this.getElementsByTagName("ul")[0].style.display="none"
			}
		}
		for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
			ultags[t].style.visibility="visible"
			ultags[t].style.display="none"
		}
	}
}

/*
if (-4) {
	alert (document.URL.indexOf("/solutions/obr.html"));
}
*/

if (window.addEventListener) {
	window.addEventListener("load", buildsubmenus_horizontal, false);
//	if (isNavListMember(getFileName()))
//		window.addEventListener("load", buildsubmenus, false)
}	
else if (window.attachEvent) {
	window.attachEvent("onload", buildsubmenus_horizontal);
//	if (isNavListMember(getFileName()))
//		window.attachEvent("onload", buildsubmenus)
}
