var nav = document.getElementById('ko-nav');
if ( nav == null ) {
	throw "Where is the navigation element";
}
var selectedNavItem = 'undefined';
if ( document.getElementById && document.all ) {
	initNavigation( nav );
}

function initNavigation(menu) {
	var elements = getChildrenByTagName( menu, "ul" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		initItems( elements[ counter ], "ko-nav-ul" );
	}
}

function initItems(menu, klass) {
	menu.className = klass;
	var elements = getChildrenByTagName( menu, "li" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		initItem( elements[ counter ], klass + "-li" );
	}
}

function initItem( item, klass ) {
	item.className = klass;
	var elements = getChildrenByTagName( item, "a" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		initItemLink( elements[ counter ], klass + "-a" );
	}
	//XBrowserAddHandler( item, 'click', onNavItem );
	//XBrowserAddHandler( item, 'mouseover', highlightLI );
	//XBrowserAddHandler( item, 'mouseout', lowlightLI );
	XBrowserAddHandler( item, 'mouseover', showMenu );
	XBrowserAddHandler( item, 'mouseout', hideMenu );
	XBrowserAddHandler( item, 'mouseover', clearHideTimerHandler );
	initChildNav( item );
}
function initItemLink( item, klass ) {
	item.className = klass;
	XBrowserAddHandler( item, 'mouseover', clearHideTimerHandler );
	//XBrowserAddHandler( item, 'mouseover', showMenu );
	//XBrowserAddHandler( item, 'mouseout', hideMenu );
}
function onNavItem(e) {
	var target = getFirstNonTextAncestor( e.target );
	document.location = target.getAttribute( 'href' );
}

function showMenu(e) {
	var target = getFirstAncestor( e.target, "li" );
	var elements = getChildrenByTagName( target, "ul" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		elements[counter].style.display = 'block';
		clearTargetTimeout( elements[counter] );
	}
}
function hideMenu(e) {
	var target = getFirstAncestor( e.target, "li" );
	var elements = getChildrenByTagName( target, "ul" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		startHideTimer( elements[counter] );
	}
}

function initChildNav(catnav) {
	var elements = getChildrenByTagName( catnav, "ul" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		if ( document.all && document.getElementById ) {
			initListItems( elements[ counter ], 'ko-nav-ul-li-ul' );
		}
		else {
			XBrowserAddHandler( catnav, 'mouseover', clearHideTimerHandler );
			XBrowserAddHandler( catnav, 'mouseout', startHideTimerHandler );
		}
	}
}


function initLists(menu, klass, elementCounter) {
	var elements = getChildrenByTagName( menu, "ul" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		initListItems( elements[ counter ], klass + "-ul" );
		XBrowserAddHandler( elements[ counter ], 'mouseover', clearHideTimerHandler );
		elements[ counter ].id = klass + "-" + elementCounter + "-" + counter;
	}
}

function initListItems(menu, klass) {
	menu.className = klass;
	var elements = getChildrenByTagName( menu, "li" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		initListLinks( elements[ counter ], klass + "-li" );
		initLists( elements[ counter ], klass + '-li', counter ); // recurse down embedded menus
	}
}

function initListLinks(menu, klass) {
	menu.className = klass;
	var elements = getChildrenByTagName( menu, "a" );
	for ( var counter = 0; counter < elements.length; counter++ ) {
		initListLink( elements[ counter ], klass + "-a");
	}
	XBrowserAddHandler( menu, 'mouseover', clearHideTimerHandler );
}

function initListLink( item, klass ) {
	item.className = klass;
	XBrowserAddHandler( item, 'mouseover', highlightA );
	XBrowserAddHandler( item, 'mouseout', lowlightA );
	XBrowserAddHandler( item, 'mouseover', clearHideTimerHandler );
	XBrowserAddHandler( item, 'mouseout', startHideTimerHandler );
	var sibling = getNextNonTextSibling( item );
	if ( sibling != null ) {
		//XBrowserAddHandler( item, 'mouseover', showNextNonTextSibling );
	}
}


