$(document).ready(function() {
	// Site menu toggle creator v.20080716.
	var create_toggles = true;
	// Prepare the menu.
	if (create_toggles && $('.n .sitemap ul li.menu').length)
	{
		// Get all link elements that are direct descendants of list item elements that act as menus.
		// And add a toggle button to each element.
		var menu_item_heights = [];
		var menu_item_states = [];
		$('.n .sitemap ul li.menu > a').each(function(){
			var selected = '';
			if ($(this).hasClass('selected'))
			{
				selected = ' selected';
			}
			if ($(this).parent().hasClass('open'))
			{
				$(this).before('<a class="sitemap-toggle' + selected +' sitemap-toggle-toggled" tabindex="0"><span class="sitemap-toggle-char">&#8722;</span></a>');
			}
			else
			{
				$(this).before('<a class="sitemap-toggle' + selected +'" tabindex="0"><span class="sitemap-toggle-char">+</span></a>');
			}
			// Temporarily open the menu to get the height of the toggle. This cannot be done while the element is hidden.
			$(this).parent().parent().addClass('sitemap-toggle-height-helper');
			menu_item_heights[menu_item_heights.length] = $(this).height();
		});
		//alert(menu_item_heights);
		var i = 0;
		$('.n .sitemap ul li.menu > a.sitemap-toggle').each(function(){
			$(this).parent().parent().removeClass('sitemap-toggle-height-helper');
			$(this).addClass('sitemap-toggle-reset');
			$(this).height(menu_item_heights[i]);
			$(this).custom_height_property = menu_item_heights[i];
			i = i + 1;
		});
		$('.n .sitemap ul li.menu > a.sitemap-toggle').click(function(){
			$(this).parent().toggleClass('open');
			$(this).toggleClass('sitemap-toggle-toggled');
			if ($(this).parent().hasClass('open'))
			{
				$('span.sitemap-toggle-char', $(this)).replaceWith('<span class="sitemap-toggle-char">&#8722;</span>');
			}
			else
			{
				$('span.sitemap-toggle-char', $(this)).replaceWith('<span class="sitemap-toggle-char">+</span>');
			}
			return false;
		});
		// Set the key event.
		$('.n .sitemap ul li.menu > a.sitemap-toggle').keyup(function(event) {
			if (event.keyCode == 13 || event.keyCode == 32) // Return/enter or space.
			{
				$(this).parent().toggleClass('open');
				$(this).toggleClass('sitemap-toggle-toggled');
				if ($(this).parent().hasClass('open'))
				{
					$('span.sitemap-toggle-char', $(this)).replaceWith('<span class="sitemap-toggle-char">&#8722;</span>');
				}
				else
				{
					$('span.sitemap-toggle-char', $(this)).replaceWith('<span class="sitemap-toggle-char">+</span>');
				}
				return false;
			}
		});
		$('.n .sitemap ul li.menu > a.sitemap-toggle').mouseover(function(){
			if (!$(this).hasClass('hover'))
				$(this).addClass('hover');
		});
		$('.n .sitemap ul li.menu > a.sitemap-toggle').mouseout(function(){
			if ($(this).hasClass('hover'))
				$(this).removeClass('hover');
		});
	}
});

