positionNav = function (menu, coords, relCoords)
{
	
	(menu.hasClass('navAlignRight')) ?
		menu.setStyles({
		
			'display' : 'block',
			'right' : (relCoords.width - coords.right - 7) + 'px'
		
		}):
		menu.setStyles({
		
			'display' : 'block',
			'left' : (coords.left - 7) + 'px'
		
		});
	
}

displayActiveNav = function(navRoot)
{
	
	var theMenu = navRoot.getElement('ul.active');
	if (!$chk(theMenu)) return false;
	theMenu.setStyle('display','block');
	return true;
	
}

window.addEvent('domready', function()
{
	
	var i = 1;
	var theNodes = $$('.topNav a');
	theNodes.each(function(node){
		
		if (node.hasClass('on'))
		{
			
			node.addClass('active');
			var nodeMenu = $$('.'+node.get('id'));
			nodeMenu.addClass('active');
			
		}
		var navRoot = $('topNavigation');
		var navParent = navRoot.getElement('ul');
		var coords = node.getCoordinates(navParent);
		var relCoords = navParent.getCoordinates();
		var showMenu = navRoot.getElement('ul.'+node.id);
		if ((i > theNodes.length / 2) && $chk(showMenu))
			showMenu.addClass('navAlignRight');
		if ($chk(showMenu) && showMenu.hasClass('active'))
			positionNav(showMenu, coords, relCoords);
		
		node.addEvents({
			
			'mouseenter' : function()
			{
				
				navRoot.getElements('.topNav a').removeClass('on');
				node.addClass('on');
				
				var allSubs = navRoot.getElements('ul.subNav').each(function(el){
				
					el.setStyle('display','none');
					
				});
				
				var menu = navRoot.getElement('ul.'+node.id);
				
				if (!$chk(menu)) return false;
				positionNav(menu, coords, relCoords);
					
				menu.removeEvents().addEvent('mouseleave',function(){
					
					if (menu.hasClass('active')) return false;
					menu.setStyle('display','none');
					node.removeClass('on');
					displayActiveNav(navRoot);
					
				});
					
			},
			
			'mouseleave' : function()
			{
				
				if (!$chk(navRoot.getElement('ul.'+node.id)))
					navRoot.getElements('.topNav a').removeClass('on');
				else return false;
				
				displayActiveNav(navRoot);
				return true;
				
			}
			
		});
		
		i++;
		
	});
	
});