//***************************************************
// Menu Copyright Harry Rolf 2007
// All rights reserved
// Code modified from www.sitepoint.com
//***************************************************

var Navigation = {

init: function()
{
	Navigation.displayMenu("menu");
	Navigation.displayMenu("subMenu");
	Navigation.displayContent("sLink");
},

//reserved word 'class' in IE and Safari...
displayContent: function(name)
{
	var links = Core.getElementsByClass(name);
	
    for (var i = 0; i < links.length; i++)
    {
      var group = links[i].childNodes;
      for (var j = 0; j < group.length; j++)
      {
        if (group[j].nodeType == 1)
        {
          var groupLink = group[j].getElementsByTagName("a");
          Core.addEventListener(groupLink[0], "click", Navigation.requestAction);
        }
      }
    }
},

displayMenu: function(name)
{
 	var menus = Core.getElementsByClass(name);
	for (var i = 0; i < menus.length; i++)
	{
		var menuItems = menus[i].childNodes;
		for (var j = 0; j < menuItems.length; j++)
		{
			if (menuItems[j].nodeType == 1)
			{
				var menuContent = document.createElement("div");
				menuContent.className = "mLevel";
				for (var k = 0; k < menuItems[j].childNodes.length; k++)
				{

					if (menuItems[j].childNodes[k].nodeName.toLowerCase() != "h3")
					{
						menuContent.appendChild(menuItems[j].childNodes[k]);
						k--;
					}
				}
				menuItems[j].appendChild(menuContent);
				
				Navigation.collapse(menuItems[j]);
				var menuLinks = menuItems[j].getElementsByTagName("a");
				var menuTitleLink = menuLinks[0];
				Core.addEventListener(menuTitleLink, "click", Navigation.clickListener);
				for (var k = 1; k < menuLinks.length; k++)
				{
					Core.addEventListener(menuLinks[k], "focus", Navigation.focusListener);
				}
			}
		}
	}
},

requestAction: function(event)
{
	var link = this;
	//var url = Core.parseURL(link.href);
	
	if (!Core.hasClass(link, "viewed"))
	{
		link.className = "viewed";
	}
	
	if(link.href && !link.target)
    {
		Core.preventDefault(event);
	    try
	    {
	      var requester = new XMLHttpRequest();
	    }
	    catch (error)
	    {
	      try
	      {
	        var requester = new ActiveXObject("Microsoft.XMLHTTP");
	      }
	      catch (error)
	      {
	        var requester = null;
	      }
	    }
    
	    if(requester != null)
	    {
	        requester.open("GET", link.href, true);
	        requester.onreadystatechange = function()
			{
				if (requester.readyState == 4)
				{
					if (requester.status == 200 || requester.status == 304)
					{
						var results = requester.responseText;
			            document.getElementById('content').innerHTML = results;
					}
					else
					{
						document.getElementById('content').innerHTML="Link Probelm: Please try again, or return to the home page";
						//+ requester.statusText
					}
				}
			};
	        requester.send(null);
	    }
    }
},

collapse: function(fold)
{
	Core.removeClass(fold, "expanded");
	Core.addClass(fold, "collapsed");
},

collapseAll: function(accordion)
{
	var folds = accordion.childNodes;
	for (var i = 0; i < folds.length; i++)
	{
		if (folds[i].nodeType == 1)
		{
			Navigation.collapse(folds[i]);
		}
	}
},

expand: function(fold)
{
	Navigation.collapseAll(fold.parentNode);
	Core.removeClass(fold, "collapsed");
	Core.addClass(fold, "expanded");
},

clickListener: function(event)
{
	var fold = this.parentNode.parentNode;
	if (Core.hasClass(fold, "collapsed"))
	{
		Navigation.expand(fold);
	}
	else
	{
		Navigation.collapse(fold);
	}
	Core.preventDefault(event);
},

focusListener: function(event)
{
	var element = this;
	while (element.parentNode)
	{
		if(element.parentNode.className == "menu")
		{
			Navigation.expand(element);
			return;
		}
		element = element.parentNode;
	}
}
};

Core.start(Navigation);
