// JavaScript Document
var initialNavigationDisplay = 5; //number of seconds to show navigation before it shrinks

function prepNavigation(activeNavigationLink, activeSubNavigationLink, delayCollapse){
	var activeLink = document.getElementById(activeNavigationLink);
	if(activeSubNavigationLink != ''){
		var activeSubLink = document.getElementById(activeSubNavigationLink);
		activeSubLink.className = "active";
	}
	var navigationSlider = document.getElementById("primaryNavigationSlider");
	
	document.startNavigationHotSpot = 190;
	document.stopNavigationHotspot = 255;
	document.onmousemove = checkMousePosition;
	
	document.activeLinkWidth = activeLink.offsetWidth; //width of active link
	document.activeLinkOP = activeLink.offsetLeft;	//starting position of active link
	
	document.sliderInformation.push(Array("primaryNavigationSlider", document.activeLinkOP, "", "", "", document.activeLinkWidth));//primary navigation slider
	document.primaryNavigationBackground = document.getElementById('navigationDynamicBar');//dynamic div behind navigation
	
	document.primaryNavigationExpandedHeight = 30; //max height of dynamic div in px
	document.primaryNavigationExpandedPosition = 199; //position of dynamic div at max height in px
	document.primaryNavigationCollapsedHeight = 9;	//min height of dymanic div in px
	document.primaryNavigationCollapsedPosition = 213; //position of dynamic div at min height in px
	
	document.primaryNavigationRateOfHeightChange = 2; //rate of height change in px
	document.primaryNavigationRateOfPositionChange = 1; //rate of position change in px
	document.primaryNavigationChangeDelay = 20; //delay in miliseconds between animation loops
	document.currentPageSubNavigation = activeNavigationLink;
	
	navigationSlider.style.left = document.activeLinkOP + "px"; //set initial position of slider
	navigationSlider.style.width = document.activeLinkWidth + "px";
	activeLink.className = "active";
	
	showSubNavigation(activeNavigationLink);
	showPrimaryNavigation();
	document.navigationVisible = true;
	if(delayCollapse){
		document.initialNavigationTimeout = setTimeout("hideNavigation()", (initialNavigationDisplay*1000)); //set initial hide
	}else{
		hideNavigation();
	}
}

function checkMousePosition(e){
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY) 	{
			posy = e.pageY;
		}else if (e.clientX || e.clientY) 	{
			
			posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
				
		if(posy > document.startNavigationHotSpot && posy < document.stopNavigationHotspot){
			clearTimeout(document.initialNavigationTimeout);
			document.initialNavigationTimeout='cleared';
			if(!document.navigationVisible){
				showNavigation();
			}
		}else if(posy < document.startNavigationHotSpot && document.initialNavigationTimeout == 'cleared' || posy > document.stopNavigationHotspot && document.initialNavigationTimeout == 'cleared'){
			hideNavigation();
		}
}

function hideNavigation(){
	document.navigationVisible = false;
	hidePrimaryNavigation();
	replaceSubNavigation(document.currentPageSubNavigation);
	hideSubNavigation(document.lastSubNavigaiton);
}

function showNavigation(){
	document.navigationVisible = true;
	showPrimaryNavigation();
	showSubNavigation(document.lastSubNavigaiton);
}

function showPrimaryNavigation(){
	//clear any formatting from classes
	document.getElementById("primaryNavigationSlider").className = "";
	document.getElementById("primaryNavigation").className = "";
	//clear any running animation timeouts
	clearTimeout(document.primaryNavigationTimeout);
	//start animation
	document.primaryNavigationTimeout = setTimeout("primaryNavigationTransition("+document.primaryNavigationExpandedHeight+", "+document.primaryNavigationExpandedPosition+")", document.primaryNavigationChangeDelay);
}

function hidePrimaryNavigation(){
	//add class based formatting
	document.getElementById("primaryNavigationSlider").className = "collapsed";
	document.getElementById("primaryNavigation").className = "collapsed";
	//clear running animation timeouts
	clearTimeout(document.primaryNavigationTimeout);
	//start animation
	document.primaryNavigationTimeout = setTimeout("primaryNavigationTransition("+document.primaryNavigationCollapsedHeight+", "+document.primaryNavigationCollapsedPosition+")", document.primaryNavigationChangeDelay);
}

function showSubNavigation(parentMenuItem){
	var subNavigationMenu = document.getElementById("subNavigation-"+parentMenuItem);
	if(subNavigationMenu){
		subNavigationMenu.className = "subNavigationMenu showMenu";
	}
	document.lastSubNavigaiton = parentMenuItem;
}

function replaceSubNavigation(parentMenuItem){
	disableSubNavigaiton(document.lastSubNavigaiton);
	showSubNavigation(parentMenuItem);
}

function hideSubNavigation(parentMenuItem){
	var subNavigationMenu = document.getElementById("subNavigation-"+parentMenuItem);
	if(subNavigationMenu){
		subNavigationMenu.className = "subNavigationMenu";
	}
}

function disableSubNavigaiton(parentMenuItem){
	var subNavigationMenu = document.getElementById("subNavigation-"+parentMenuItem);
	if(subNavigationMenu){
		subNavigationMenu.className = "subNavigationMenu disabledMenu";
	}
}

function primaryNavigationTransition(targetHeight, targetPosition){
	//clear any animations
	clearTimeout(document.primaryNavigationTimeout);
	var currentNavigationHeight = document.primaryNavigationBackground.offsetHeight;
	var currentNavigationPosition = document.primaryNavigationBackground.offsetTop;
	
	if(currentNavigationHeight < targetHeight){
		var newNavigationHeight = currentNavigationHeight + document.primaryNavigationRateOfHeightChange;
		if(newNavigationHeight > targetHeight){
			newNavigationHeight = targetHeight;
		}
	}else{
		var newNavigationHeight = currentNavigationHeight - document.primaryNavigationRateOfHeightChange;
		if(newNavigationHeight < targetHeight){
			newNavigationHeight = targetHeight;
		}
	}
	
	if(currentNavigationPosition < targetPosition){
		var newNavigationPosition = currentNavigationPosition + document.primaryNavigationRateOfPositionChange;
		if(newNavigationPosition > targetPosition){
			newNavigationPosition = targetPosition;
		}
	}else{
		var newNavigationPosition = currentNavigationPosition - document.primaryNavigationRateOfPositionChange;
		if(newNavigationPosition < targetPosition){
			newNavigationPosition = targetPosition;
		}
	}
	
	document.primaryNavigationBackground.style.height = newNavigationHeight+"px";
	document.primaryNavigationBackground.style.top = newNavigationPosition+"px";
	
	if(newNavigationHeight != targetHeight){
		document.primaryNavigationTimeout = setTimeout("primaryNavigationTransition("+targetHeight+", "+targetPosition+")", document.primaryNavigationChangeDelay);	
	}
	
	if(newNavigationPosition != targetPosition){
		clearTimeout(document.primaryNavigationTimeout);
		document.primaryNavigationTimeout = setTimeout("primaryNavigationTransition("+targetHeight+", "+targetPosition+")", document.primaryNavigationChangeDelay);	
	}
}
