UKTV.ChannelNavigation = new function() {
	this.NS = 'UKTV.ChannelNavigation';
	var _container = false;
	var _hideTimer = false;
	var _hideTimeout = 400;
	var _activeLink = false;
	var _activeMenu = false;
	
	
	var menuHide = function() {
		YAHOO.util.Dom.setStyle(_activeMenu, 'display', 'none');
		YAHOO.util.Event.removeListener(_activeMenu, 'mouseover', blockUnTrigger);
		YAHOO.util.Event.removeListener(_activeMenu, 'mouseout', nodeUnTrigger);
		YAHOO.util.Dom.removeClass(_activeLink, 'active');
	}
	
	
	var nodeTest = function(node) {
		if(node.nodeName.toLowerCase() != 'a' || node.parentNode.parentNode != _container) {
			return false
		}
		
		var nextNode = YAHOO.util.Dom.getNextSibling(node);
		
		if(!nextNode || nextNode.nodeName.toLowerCase() != 'div') {		
			return false;
		}
		
		return true
	}
	

	var nodeTrigger = function(e, node) {
		menuHide();
		blockUnTrigger();
		
		var nextNode = YAHOO.util.Dom.getNextSibling(node);		
		YAHOO.util.Dom.setStyle(nextNode, 'display', 'block');

		if(YAHOO.env.ua.ie && YAHOO.env.ua.ie < 8) {			
		/*	TODO (simon dell theotherdell@gmail.com 2009-07-24) - why is this here?
			if(nextNode.className.indexOf('iframed') == -1) {
				var ifr = document.createElement('iframe');
				nextNode.appendChild(ifr);
				YAHOO.util.Dom.setStyle(ifr, 'height', nextNode.offsetHeight);
				YAHOO.util.Dom.setStyle(ifr, 'width', nextNode.offsetWidth);
				YAHOO.util.Dom.addClass(nextNode, 'iframed');
			}	*/
		}

		YAHOO.util.Dom.addClass(node, 'active');

		YAHOO.util.Event.addListener(nextNode, 'mouseover', blockUnTrigger);
		YAHOO.util.Event.addListener(nextNode, 'mouseout', nodeUnTrigger, node);
		
		_activeLink = node;
		_activeMenu = nextNode;
	}


	var blockUnTrigger = function() {
		if(_hideTimer) {
			window.clearTimeout(_hideTimer);		
		}
	}


	var nodeUnTrigger = function(e, node) {
		_hideTimer = window.setTimeout(menuHide, _hideTimeout);
	}


	var nodeInit = function(node) {
		YAHOO.util.Event.addListener(node, 'mouseover', nodeTrigger, node);
		YAHOO.util.Event.addListener(node, 'mouseout', nodeUnTrigger, node);
	}


	this.init = function()  {
		_container = YAHOO.util.Dom.get('channel-navigation');
		var i = YAHOO.util.Dom.getElementsBy(nodeTest, 'a', _container, nodeInit);
	}
	
	UKTV.loader.registerObj(this);
}

