var animationEventOpen;
var animationEventClose;
var defaultMenu;// = 1;
var activeMenu;// = defaultMenu;
var primaryMouseOver = false;
var serviceNavMouseOver = false;
var stopMenuAnimation = false;

/**
 * Animate the submenu open
 */
function openMenu()
{
	var menu = $('serviceNav').getElementsByTagName('UL')[activeMenu];
	if (menu == undefined) {
		return;
	}
	var newMarginTop;
	var marginTop = menu.style.marginTop;
	if (marginTop == '') {
		// this is the first time through
		menu.style.display = 'block';
		newMarginTop = -20;
	} else {
		marginTop = Number(marginTop.split('px').join(''));
		newMarginTop = marginTop += 3;
		if (newMarginTop >= 0) {
			newMarginTop = 0;
		}
	}
	menu.style.marginTop = newMarginTop + 'px';
	if (newMarginTop < 0) {
		animationEventOpen = setTimeout('openMenu()', 10);
	}
}

/**
 * Animate the submenu closed
 */
function closeMenu()
{
	var menu = $('serviceNav').getElementsByTagName('UL')[activeMenu];
	if (menu == undefined) {
		return;
	}
	
	var newMarginTop;
	var marginTop = menu.style.marginTop;
	if (marginTop != '') {
		marginTop = Number(marginTop.split('px').join(''));
	} else {
		marginTop = '0px';
	}
	newMarginTop = marginTop -= 3;
	if (newMarginTop <= -20) {
		newMarginTop = -20;
	}
	
	menu.style.marginTop = newMarginTop + 'px';
	if (newMarginTop > -20) {
		animationEventClose = setTimeout('closeMenu()', 10);
	} else {
		activeMenu = null;
		//toggleCurrentSectionHighlight(true);
		try {
			activateMenu($('serviceNav').getElementsByTagName('UL')[defaultMenu], defaultMenu);
		} catch (e) {
			// alert(e.description);
		}
	}
}

/**
 * 
 */
function menuCheck()
{
	if (!primaryMouseOver && !serviceNavMouseOver && activeMenu != null && activeMenu != defaultMenu && stopMenuAnimation == false) {
		closeMenu();
	}
	setTimeout('menuCheck()', 1000);
}

/**
 * @param e  The main menu element activating the submenu
 * @param id The submenu id to activate
 */
function activateMenu(e, id)
{
	//calculateOffset(e);
	//toggleCurrentSectionHighlight(false);
	if (activeMenu == id || stopMenuAnimation == true ) {
		return;
	}
	clearTimeout(animationEventOpen);
	clearTimeout(animationEventClose);
	var serviceNavUl = $('serviceNav').getElementsByTagName('UL');
	for (var i = 0; i < serviceNavUl.length; i ++) {
		serviceNavUl[i].style.display = 'none';
		serviceNavUl[i].style.marginTop = '';
	}
	//serviceNavUl[id].style.paddingRight = calculateOffset(e) + 'px';
	if (id != activeMenu) {
		activeMenu = id;
	}
	openMenu();
}

/**
 * 
 */
function attachMenuEvents()
{
	var ul = document.getElementById('primary').getElementsByTagName('UL')[0];
	var menuIndex = 0;
	for (var i = 0; i < ul.childNodes.length; i++) {
		if (ul.childNodes[i].nodeName == 'LI') {
			ul.childNodes[i].menuIndex = menuIndex;
			menuIndex++;
			// mouseover
			ul.childNodes[i].onmouseover = function(event) {
				activateMenu(this, this.menuIndex);
			};
			ul.childNodes[i].onclick = function(event) {
				stopMenuAnimation = true;
			};
		}
	}
	var primaryUl = $('primary').getElementsByTagName('UL')[0];
	// mouseover
	primaryUl.onmouseover = function(event) {
		primaryMouseOver = true;
	};
	// mouseout
	primaryUl.onmouseout = function() {
		primaryMouseOver = false;
	};
	// mouseover
	$('serviceNav').onmouseover = function(event) {
		serviceNavMouseOver = true;
	};
	// mouseout
	$('serviceNav').onmouseout = function(event) {
		serviceNavMouseOver = false;
	};
	
	activeMenu = defaultMenu = document.activeMenu;
	
	menuCheck();
}





/**
 * 
 */
function onLoadHandler()
{
	attachMenuEvents();
}

/**
 * 
 */
function $(e)
{
	return document.getElementById(e);
}














/**
 * 
 */
function toggleCurrentSectionHighlight(state)
{
	var menu = $('primary').getElementsByTagName('LI')[defaultMenu];
	var menuItem = menu.getElementsByTagName('A')[0];
	if (state == true) {
		menuItem.className += 'selected';
	} else {
		menuItem.className = '';
	}
}








window.onload = onLoadHandler;