/*
 * Default version of menu has the problem that a click on a parent leads to a page. Most people will not be used to this behavior.
 * This script fixes that issue rewriting the urls of parent pages to #, so that a click on it leads nowhere.
 * Also, a click on a submenu item doesn't expand the tab, which this script mends as well.
 */
function augmentDefaultMenu()
{
	var menuItems = getMenuItems();
	for(var i = 0; i < menuItems.length; i++)
	{
		if(hasSubMenu(menuItems[i]))
		{
			disableClick(menuItems[i]);
			makeClickOnSubmenuItemExpandTab(menuItems[i]);
		}
	}
}

function disableClick(ele)
{
	ele.getElementsByTagName('a')[0].href='#';
}

function expandTab()
{
	var expandedTab = getExpandedTab();
	var parentTab = getTab(this);
	toggleTabExpansion(expandedTab);
	toggleTabExpansion(parentTab);
}

function makeClickOnSubmenuItemExpandTab(ele)
{
	var submenuItems = getSubmenuItems(ele);
	for(var i = 0; i < submenuItems.length; i++)
	{
		submenuItems[i].onclick=expandTab;
	}
}

//-----------------------Utility functions------------------------------------
function getExpandedTab()
{
	return $('.current_page_item')[0];
}

function getTab(ele)
{
	return ele.parentNode.parentNode;
}

function toggleTabExpansion(ele)
{
	if(hasClass(ele, 'current_page_item'))
	{
		removeClass(ele, 'current_page_item');
	}
	else
	{
		addClass(ele, 'current_page_item');
	}
}

function getMenuItems()
{
	return document.getElementById('nav').getElementsByTagName('div')[0].getElementsByTagName('ul')[0].getElementsByTagName('li');
}

function hasSubMenu(ele)
{
	return ele.getElementsByTagName('ul').length != 0;
}

function getSubmenuItems(ele)
{
	return ele.getElementsByTagName('ul')[0].getElementsByTagName('li');
}

function hasClass(ele, cls)
{
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele, cls)
{
	if(!this.hasClass(ele,cls))
	{
		ele.className += " "+cls;
	}
}

function removeClass(ele, cls)
{
	if(hasClass(ele,cls))
	{
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg, ' ');
	}
}

//-----------------------Hook into page------------------------------------
if(window.addEventListener)
{
	window.addEventListener("load", augmentDefaultMenu, false);
}

