var navItems;
var expandedItem = null;
var expandedSubItem = null;
var expandableItems = new Array();
var expandMe = null;
var expandMeSub = null;

function expandableItem(_link, _widget)
{
	this.link = _link;
	this.widget = _widget;
	this.element = document.getElementById(this.link.getAttribute('subCats'));
}

dojo.addOnLoad(
	function ()
	{
		navItems = getNavItems();
		initNavItems();
		initLoginLink();
		if (expandMe != null)
		{
			showNavItem(expandableItems[expandMe]);
		}
		if (expandMeSub != null)
		{
			showNavItem(expandableItems[expandMeSub]);
		}
	}
);

function initNavItems()
{
	var i;
	for (i=0; i<navItems.length; i++)
	{
		if (navItems[i].getAttribute('subCats'))
		{
			addExpandIcon(navItems[i]);
			document.getElementById(navItems[i].getAttribute('subCats')).style.display = "none";
		}
	}
}

function initLoginLink()
{
	var el=document.getElementById("LoginLink");
	if (el)
	{
		el.onclick = toggleLoginForm;
	}
		
	el=document.getElementById("CancelLoginButton");
	if (el)
	{
		el.onclick = toggleLoginForm;
	}
	
	el=document.getElementById("loginDestination");
	if (el)
	{
		var url = document.URL;
		el.value = url;
	}
}

function expandNavItem(e)
{
	var which = expandableItems[this.getAttribute('name')];
	var il = getItemLevel(which.element)
	
	if (expandedSubItem != null && expandedSubItem != which)
		hideNavItem(expandedSubItem);

	if (il == 1)
	{
		if (expandedItem != null && expandedItem != which)
			hideNavItem(expandedItem);
	}
	
	if (which.element.style.display == "block")
		hideNavItem(which);
	else
		showNavItem(which);
	
	return false;
}

function showNavItem(item)
{
	if (item != null)
	{
		item.widget.className = "collapseWidget";
		item.element.style.display = "block";
		var il = getItemLevel(item.element);
		
		if (il == 1)
		{
			item.element.parentNode.className = "activeMenuSelection";
			expandedItem = item;
		}
		else if (il == 2)
		{
			item.element.className = "activeMenuSubSelection";
			expandedSubItem = item;
		}
	}
}

function hideNavItem(item)
{
	if (item != null)
	{
		item.widget.className = "expandWidget";
		item.element.style.display = "none";
		
		if (isTopLevelItem(item.element))
		{
			item.element.parentNode.className = "";
			expandedItem = null;
			expandedSubItem = null;
		}
	}
}

function isTopLevelItem(item)
{
	return getItemLevel(item) == 1;
}

function getItemLevel(item)
{
	if (item != null)
	{
		return parseInt(item.parentNode.getAttribute('menuLevel'));
	}
	else
	{
		return -1;
	}
}

function toggleLoginForm()
{
	var lf = document.getElementById("LoginFormContainer");
	var ll = document.getElementById("LoginLabel");
	
	lf.style.display = (lf.style.display != "block") ? "block":"none";
	ll.style.display = (lf.style.display == "block") ? "none":"block";
	
	if (lf.style.display == "block")
		document.getElementById("userid").focus();
	
	return false;
}

function getNavItems()
{
	var navItems = new Array();
	var node = document.getElementById("NavItems");
	var all = node.getElementsByTagName("a");
	var len = all.length;
	for (i = 0, j = 0; i < len; i++)
	{
		if (all[i].name == "nav_item")
		{
			navItems[j] = all[i];
			j++;
		}
	}
	
	return navItems;
}

function revealCurrentNavItem(thePath)
{
	
}

function addExpandIcon(el)
{
	if (!el)
		return;
	var p = el.parentNode;
	var anchor = document.createElement('a');
	anchor.href = '#';
	anchor.className = "expandWidget";
	anchor.setAttribute('name', el.innerHTML);
	anchor.setAttribute('subCats', el.getAttribute('subCats'));
	anchor.innerHTML = "&nbsp;";
	anchor.onclick = expandNavItem;
	var targ = p.insertBefore(anchor, el);
	expandableItems[el.innerHTML] = new expandableItem(el, targ);
}
