/**
 * @author chris.deemer
 */
var hideNavTimer;
var showNavTimer;
var aTimer;

Event.observe(window, 'load', function() {
	if($('navMain')){
		var rootlinks = $A($('navMain').getElementsByClassName('rootLink'));
		var rl_length = rootlinks.length;
		for(i=0; i<rl_length; ++i){
			var root = $(rootlinks[i]);
			var flyout = root.next('div.flyoutWrapper',0);
			iframeShim(flyout);
			var flyout_tab = flyout.down('a.overTabLeft',0);
			Event.observe(root, 'mouseover', function(event){
				var targ = $(Event.element(event));
				if(targ.hasClassName('rootLink') || targ.hasClassName('flyoutWrapper') || targ.hasClassName('overTabLeft')){
					displayNav(targ);
				}
			}, false);
			Event.observe(root, 'mouseout', clearShowNavTimer , false);
			Event.observe(flyout, 'mouseout', startHideNavTimer , false);
			Event.observe(flyout, 'mouseover', clearHideNavTimer , false);
			Event.observe(flyout_tab, 'mouseout', startHideNavTimer , false);
			Event.observe(flyout_tab, 'mouseover', clearHideNavTimer , false);
			
		}
	}
}, false);
		
function displayNav(domElm){
	var nav = $(domElm).next('div.flyoutWrapper',0);
	var wrapperOffset = $('navMainWrapper').cumulativeOffset()[0];
	var rootOffset = $(domElm).cumulativeOffset()[0];
	var navOffset = rootOffset - wrapperOffset - 3;
	showNavTimer = setTimeout(function(){
		hideNavs();
		iframeShim(nav, {left: navOffset});
		nav.setStyle({left: navOffset + 'px'});
	}, 200);		
}

function hideNavs(){
	clearHideNavTimer();
	var flyouts = $A($('navMain').getElementsByClassName('flyoutWrapper'));
	var f_length = flyouts.length;
	for (i = 0; i < f_length; ++i) {
		$(flyouts[i]).setStyle({left: '-99999px'});
		var shim = $(flyouts[i]).previous('iframe');
		if(shim!=null){Element.remove(shim);}
	}
}

function hideNav(domElm){
	var nav = domElm;
	$(nav).setStyle({left: '-99999px'});
	var shim = $(nav).previous('iframe');
	if(shim!=null){Element.remove(shim);}
}

function startHideNavTimer(){
	clearHideNavTimer();
	hideNavTimer = setTimeout(hideNavs, 300);
}


function clearHideNavTimer(){
	clearTimeout(hideNavTimer);
}

function clearShowNavTimer(){
	clearTimeout(showNavTimer);
}

function autoKillTimers(b){
		if (b) 
			aTimer = setInterval(function(){
				clearTimeout(hideNavTimer);
			}, 50);
		else {
			clearTimeout(aTimer);
			startHideNavTimer();
		}
}