//=====================================================================================
// menu.js
// 11Aug2009
// Author: Steve Christensen
//
//=====================================================================================


function navbar_loadXMLDoc(dname)
{
	var xmlDoc;

	if (window.XMLHttpRequest)
	{
		xmlDoc=new window.XMLHttpRequest();
		xmlDoc.open("GET",dname,false);
		xmlDoc.send("");
		return xmlDoc.responseXML;
	}
	// IE 5 and IE 6
	else
	{
		try					// Try loading document in IE
		{
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async=false;
			xmlDoc.load(dname);
			return xmlDoc;
		}
		catch (e)
		{
			alert("Error loading document, '" + dname + "'!");
			return null;
		}
	}

}


function navbar_getAttribute(attributes, name)
{
	var value=null;
	for (i=0; i<attributes.length; i++)
	{
		if (name == attributes[i].nodeName)
		{
			value = attributes[i].nodeValue;
			break;
		}
	}
	
	return value;
}


function navbar_changeClass(cell, name)
{
	cell.className=name;
}


function navbar_showDropDown(menuId)
{
	document.getElementById(menuId).style.visibility="visible";
}


function navbar_hideDropDown(menuId)
{
	document.getElementById(menuId).style.visibility="hidden";
}

function navbar_getTarget(url)
{
	var target = null;
	var getFN=/[^\/]*$/;
	var curFile=getFN.exec(location.href);
	var destFile=getFN.exec(url);

	if (null == url || curFile == "default.htm" || url.indexOf("mailto") == 0)
	{
		target = url;
	}
	else if (curFile == destFile)
	{
		target=destFile;
	}
	else
	{
		target="../" + url;
	}

	return target;
}

function navbar_showSubMenu(menuItems, menuId)
{
	document.writeln('          <div class="menu">');
	document.writeln('          <table id="' + menuId + '" class="menu">');
	
	for (var i=0; i<menuItems.length; i++)
	{
		document.writeln('            <tr>');
		
		var menuName = menuItems[i].getElementsByTagName("item_name")[0].childNodes[0].nodeValue.replace(" ",String.fromCharCode(160));
		var menuURL = 0 == menuItems[i].getElementsByTagName("item_url").length ? null : menuItems[i].getElementsByTagName("item_url")[0].childNodes[0].nodeValue;
		var menuId = navbar_getAttribute(menuItems[i].attributes, "id");
		var menuClass = null == navbar_getAttribute(menuItems[i].attributes, "class") ? "navbar_item" : navbar_getAttribute(menuItems[i].attributes, "class");
		var menuActiveClass = null == navbar_getAttribute(menuItems[i].attributes, "active_class") ? "navbar_item_active" : navbar_getAttribute(menuItems[i].attributes, "active_class");
		
		var target=navbar_getTarget(menuURL);

		document.writeln('              <td>');

		document.writeln('                <td ' +
				(menuId != null ? 'id="' + menuId + '" ' : '') +
				'class="' + menuClass + '" ' +
				(null == target ? '' : 'onclick="location.href=' + "'" + target + "'" + ';" ') +
				'onmouseover="navbar_changeClass(this, ' + "'" + menuActiveClass + "'" + ');' + '" ' + 
				'onmouseout="navbar_changeClass(this, ' + "'" + menuClass + "'" + ');">' + menuName);
		
		document.writeln('            </tr>');
	}
	
	document.writeln('          </table>');
	document.writeln('          </div>');
}


function navbar_showMenu(menuArr)
{
	for (var i=0; i<menuArr.length; i++)
	{
		var menuName = menuArr[i].getElementsByTagName("name")[0].childNodes[0].nodeValue.replace("/ /g","&nbsp;");
		var menuURL = 0 == menuArr[i].getElementsByTagName("url").length ? null : menuArr[i].getElementsByTagName("url")[0].childNodes[0].nodeValue;
		var menuId = navbar_getAttribute(menuArr[i].attributes, "id");
		var menuClass = null == navbar_getAttribute(menuArr[i].attributes, "class") ? "navbar_item" : navbar_getAttribute(menuArr[i].attributes, "class");
		var menuActiveClass = null == navbar_getAttribute(menuArr[i].attributes, "active_class") ? "navbar_item_active" : navbar_getAttribute(menuArr[i].attributes, "active_class");
		
		var target=navbar_getTarget(menuURL);

		var menuItems = menuArr[i].getElementsByTagName("menu_item");
		var subMenuId = null == menuId ? 'navbar_menu_' + i : menuId + 'Menu';

		document.writeln('        <td ' +
				(menuId != null ? 'id="' + menuId + '" ' : '') +
				'class="' + menuClass + '" ' +
				(null == target ? '' : 'onclick="location.href=' + "'" + target + "'" + ';" ') +
				'onmouseover="navbar_changeClass(this, ' + "'" + menuActiveClass + "'" + ');' +
				(null == menuItems ? '' : ' navbar_showDropDown(' + "'" + subMenuId + "'" + ');') + '" ' + 
				'onmouseout="navbar_changeClass(this, ' + "'" + menuClass + "'" + ');' +
				(null == menuItems ? '' : ' navbar_hideDropDown(' + "'" + subMenuId + "'" + ');"') +
				'>' + menuName);

		if (null != menuItems)
		{
			navbar_showSubMenu(menuItems, subMenuId);
		}

		document.writeln('        </td>');
	}
}


function navbar_displayNavbar(menuFile)
{
	var menuDoc = navbar_loadXMLDoc(menuFile);
	
	if (null == menuDoc)
	{
		alert("Cannot load menu file, " + menuFile + "!");
	}
	else
	{
		var navbar = menuDoc.getElementsByTagName("navbar")[0];
		if (null == navbar)
		{
			alert("Cannot read navbar element from file, " + menuFile + "!");
		}
		else
		{
			document.writeln('    <table class="navbar">');
			document.writeln('      <tr>');
			
			navbar_showMenu(navbar.getElementsByTagName("menu"));
			
			document.writeln('      </tr>');
			document.writeln('    </table>');
		}
	}
}
