var to_open = [];
var to_close = [];
var open = [];
var selectedList = false;
var firstTime = true; 

function onReadyMenuInit()
{
	$("#sitemap ul li ul").hide();
	$("#sitemap ul li a").click(function(){return onClicked($(this).parent().next()); });
	getMenusToOpen();
}

function onClicked(ul)
{
	var href = ul.parent('li').find('a');
	if(href.size() > 0)
	{
		href = href.attr('href');
		href = href.replace(base_url, '')
		if(href && (href == 'locations' || href == 'services'))
		{
			if(href == 'services')
			{
				ul.parent('li').find('a').attr('href', ul.parent('li ul a:first').attr('href'));
			}
			return true;
		}
		else if(ul.css('display') == 'none')
		{
			selectedList = ul;
			selectedList.parent('li').attr('class', 'selected');
			closeOpenMenuInSameList();
			return false;
		}
		else if(ul.css('display') == 'block')
		{
			lastList = false;
			ul.slideUp("slow");
			return false;
		}
		else
		{
			return true;
		}
	}
}

function getMenusToOpen(ul)
{
	if(!ul)
	{
		if($('.selected').parent().height() != null)
		{
			var ul = $('.selected').find('ul');
			if(ul.css('display') == 'none')
			{
				getMenusToOpen(ul);
			}
			else
			{
				getMenusToOpen($('.selected').parent());
			}
		}
		else
		{
			firstTime = false;
		}
	}
	else
	{
		if(ul.css('display') == 'none')
		{
			to_open.push(ul);
			if(ul.parent().parent().css('display') == 'none')
			{
				getMenusToOpen(ul.parent().parent());
			}
			else
			{
				openMenus();
			}
		}			
	}
}

function openMenus()
{
	if(to_open.length > 0)
	{
		var i = to_open.length-1;
		ul = to_open[i];
		to_open.pop();
		open.push(ul);
		
		var index = 0;
		if(open.length > 1)
		{
			index = open.length-1;
		}
		ul.attr('index', index);
		if(!firstTime)
		{
			ul.slideDown("slow", openMenus);
		}
		else
		{
			ul.show();
			openMenus();
		}
	}
	else
	{
		firstTime = false;
	}
}

function closeMenus()
{
	if(to_close.length > 0)
	{
		ul = to_close[to_close.length-1];
		to_close.pop();
		ul.slideUp("slow", closeMenus);
	}
	else if(to_open.length > 0)
	{
		openMenus();
	}
}

function closeOpenMenuInSameList()
{
	to_close = [];
	if(open.length > 0)
	{
		var parentIndex = selectedList.parent().parent().attr('index');
		for(var i=(open.length-1); i> -1; i--)
		{
			ul = open[i];
			
			if(parentIndex == ul.attr('index'))
			{
				break;
			}
			else if(ul.parent().parent().attr('index') == parentIndex)
			{
				to_close.push(open[i]);
			}
		}
	}
	
	to_open.push(selectedList);
	if(to_close.length > 0)
	{
		to_close.reverse();
		closeMenus();
	}
	else
	{
		openMenus();
	}
}



