/**
 * Opens and closes subnavgation on headerNav
 * 
 * @name      Navigation.js
 * @author    Peter Vorstenbosch
 * @copyright Ecommany B.V.
 * @version   1.0
 */

// global var to keep track of which subnav is open
var activeNavId = '';
var timerActive = null;
var bTimerActive = false;


//start closing of subnav via a setTimeout function
function TimedWipeOut() {
	if (!bTimerActive) {
		timerActive = setTimeout('wipeOutOne()', 100);
		bTimerActive = true;
	}
}

// cancel WipeOut function to keep opened subnav open
function cancelWipeOut() {
	if (bTimerActive) {
		clearTimeout(timerActive);
		bTimerActive = false;
	}
}

// Opens subnav based on object that triggered this event 
function wipeInOne(evt){
	cancelWipeOut();
	
	// get id of object that triggered this event
	idNode = evt.target.getAttribute("id");
	if (idNode != activeNavId) {
		if (activeNavId != '') {
			wipeOutOne();
		}
		activeNavId = idNode;
		
		if (dojo.byId('sub' + idNode)) {
			dojo.addClass(idNode, "hover");
			dojo.fx.wipeIn({
				node:'sub' + idNode, 
				duration: 300
			}).play();
		}
	}
}

//Closes active subnav  
function wipeOutOne(){
	var owo;
	
	if (activeNavId != '') {
		dojo.removeClass(activeNavId, "hover");
		if (dojo.byId('sub' + activeNavId)) {
			owo = dojo.fx.wipeOut({
				node: 'sub' + activeNavId,
				duration: 50
			}).play();
		}
	}
	activeNavId = '';
	
	bTimerActive = false;
}

// add evemt functions to top nav items
function addTopNavEvents() {  
	var l = dojo.query(".head");
	l.forEach(function(node, index, nodeList) {
		if (node.id != "" && node.id.substring(0,3) == 'nav') {
			dojo.connect(node, 'onmouseenter', wipeInOne);
			dojo.connect(node, 'onmouseleave', TimedWipeOut);
		}
	});
	
	l = dojo.query(".headerNavItemsSub");
	l.forEach(function(node, index, nodeList) {
		if (node.id != "") {
			dojo.connect(node, 'onmouseenter', cancelWipeOut);
			dojo.connect(node, 'onmouseleave', TimedWipeOut);
		}
	});
}

dojo.addOnLoad(addTopNavEvents);

