﻿function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

function findTarget(e) {
	var eventElement;
	if (e && e.target) eventElement = e.target;
	if (window.event && window.event.srcElement) eventElement = window.event.srcElement;
	if (!e) return;
	return eventElement;
}

var timeout	= 500;
var closeTimer	= 0;
var activeLink = null;

function close() {
    if (activeLink) {
        activeLink.style.display = 'none';
    }
}

function cancelCloseTime() {
	if(closeTimer) 	{
		window.clearTimeout(closeTimer);
		closeTimer = null;
	}
}

function closeTime() {
	closeTimer = window.setTimeout(close, timeout);
}

function init() {
	if (!document.getElementsByTagName) return;
	var navContainer = document.getElementById("nav");
	
	//add hover event to display sub nav links
	var navLinks = navContainer.getElementsByTagName("dt");
	for (var i=0; i<navLinks.length; i++)
	{
	    addEvent(navLinks[i], 'mouseover', showNavLinks, false);
	    addEvent(navLinks[i], 'mouseout', closeTime, false);
	}
	
	//add mouse out event to hide nav links
	var navLinks = navContainer.getElementsByTagName("dd");
	for (var i=0; i<navLinks.length; i++)
	{
	    addEvent(navLinks[i], 'mouseover', cancelCloseTime, false);
	    addEvent(navLinks[i], 'mouseout', closeTime, false);
	}
}

function showNavLinks(e) {
    cancelCloseTime();

    if (activeLink) { close(); }
    
    var navLink = findTarget(e);
    navLink = navLink.parentNode;
    while (navLink.tagName.toLowerCase() != 'dl') {
        navLink = navLink.parentNode;
    }
    
    var subLinks = navLink.getElementsByTagName('dd');
    //if links are available, display them
    if (subLinks.length>0) {
    activeLink = subLinks[0];
        activeLink.style.display = 'block';
    }
}

function hideNavLinks(e) {
    var navLink = findTarget(e);
    navLink = navLink.parentNode;
    while (navLink.tagName.toLowerCase() != 'dd') {
        navLink = navLink.parentNode;
    }    
}

addEvent(window, 'load', init, false);