var flyoutIsOverButton = [];
var flyoutIsOverFlyout = [];

function initFlyouts() {
	var list = document.getElementById("primary_nav");
	if( !list ) {
		return false;
	}
	
	var items = list.childNodes;
	var item;
	var count = 0;
	for(var i = 0; i < items.length; i++) {
		// only get the list elements
		if( items[i].nodeName == "LI" ) {
			flyout = null;
			for(var j = 0; j < items[i].childNodes.length && !flyout; j++) {
				if(items[i].childNodes[j].className == "flyout") {
					flyout = items[i].childNodes[j];
				}
			}
			
			// add item id
			items[i].id = "nav_button_" + count;
							
			var iframe;
			if( flyout ) {
				// init flyout detectors
				flyoutIsOverButton[count] = false;
				flyoutIsOverFlyout[count] = false;
				
				// add ids
				flyout.id = "nav_flyout_" + count;
				
				// position borders
				buttonHeight = items[i].offsetHeight;
				verticalLine = YAHOO.util.Dom.getElementsByClassName("nav_bottom", "div", flyout)[0];
				if( verticalLine ) {
					verticalLine.style.height = (buttonHeight - 2) + "px";
				}
				horizontalLine = YAHOO.util.Dom.getElementsByClassName("nav_middle", "div", flyout)[0];
				if( horizontalLine ) {
					horizontalLine.style.top = (buttonHeight - 1) + "px";
				}
				
				// add iframe if IE < 7
				if( YAHOO.env.ua.ie > 0 && YAHOO.env.ua.ie < 7 ) {					
					iframe = document.createElement("iframe");
					iframe.style.position = "absolute";
					iframe.style.left = "0";
					iframe.style.top = "0";
					iframe.style.width = flyout.offsetWidth + "px";
					iframe.style.height = flyout.offsetHeight + "px";
					iframe.style.zIndex = "-1";
					iframe.style.filter = "mask()";
					
					flyout.appendChild(iframe);
				}
				
				// add listeners				
				YAHOO.util.Event.addListener(items[i], "mouseover", function(e, count) { flyoutIsOverButton[count] = true; flyoutOn(count); }, count);
				YAHOO.util.Event.addListener(items[i], "mouseout", function(e, count) { flyoutIsOverButton[count] = false; }, count);
				YAHOO.util.Event.addListener(flyout, "mouseover", function(e, count) { flyoutIsOverFlyout[count] = true; }, count);
				YAHOO.util.Event.addListener(flyout, "mouseout", function(e, count) { flyoutIsOverFlyout[count] = false; }, count);
			}
			
			count++;
		}
		
	}
	
}

// turn all flyouts off
function flyoutsOff(number) {
	for(var i = 0; i < flyoutIsOverButton.length; i++) {
		if( i != number ) {
			flyoutOff(i);
		}
	}		
}

// turn on flyout
function flyoutOn(number) {
	flyoutsOff(number);
	
	var flyout = document.getElementById("nav_flyout_" + number);
	var button = document.getElementById("nav_button_" + number);
	
	if( flyout ) {
		if( button ) {
			
			button.style.position = "relative";
		}
		
		flyout.style.visibility = "visible";
		checkFlyout(number);
	}
	
}

function checkFlyout(number) {
	if( !(flyoutIsOverButton[number] || flyoutIsOverFlyout[number]) ) { 		
		flyoutOff(number);
	}
	else {	
		setTimeout("checkFlyout(" + number + ")", 100);
	}	
}

/*
 * turn off flyout if mouse is outside, if not
 * set it to run again in 0.25 seconds
 */ 
function flyoutOff(number) {
	//alert(number);
	
	flyoutIsOverButton[number] = false;
	flyoutIsOverFlyout[number] = false;
			
	var button = document.getElementById("nav_button_" + number);
	if( button ) {				
		button.style.position = "";
	}
	
	var flyout = document.getElementById("nav_flyout_" + number);
	if( flyout ) {			
		flyout.style.visibility = "hidden";
	}
}

initFlyouts();
