
var globalDelay = null;
var globalFadeOut = null;

var globalDarken = null;
var globalFadeIn = null;

function darkenOpacity(element, opacity) {
    if (element.fade) {
        clearTimeout(element.fade);
    }
    
    // Get links
    for(var i=0; i<element.childNodes.length; i++) {
        if (element.childNodes[i].nodeName == "UL") {
            //var ul = element.childNodes[i];
			
			changeOpacity(element.childNodes[i], opacity);
            
		    /*
			for(var j=0; j<ul.childNodes.length; j++) {
		        if (ul.childNodes[j].nodeName == "LI") changeOpacity(ul.childNodes[j], opacity);
		    }
			*/
        }
    } 
      
    if (opacity>=100){
        if ( (element.className.indexOf(" over") == -1) && (element.className != "over") ) element.className+=" over";
        return;
    }
    
    var newOpacity = opacity + 10;
    
    var repeat = function(){
        darkenOpacity(element, newOpacity);
    };
    element.fade = setTimeout(repeat,2);
    globalFadeIn = element.fade;
}


function menuSlowShow(element) {

    if ( (element.className.indexOf(" over") == -1) && (element.className != "over") ) {
        globalDarken = setTimeout(function(){
            darkenOpacity(element, 0);
            },0);
            
        // Reset all menu hiding
		
		
        var navRoot = element.parentNode;
        var navItem = navRoot.firstChild;        
        while(navItem) {
            if ( (navItem.tagName == "LI") && globalDelay) {
                clearTimeout(globalDelay);
                menuHide(navItem);
            }
            navItem = navItem.nextSibling;
        }
        
		
        // Reset all fades
        if (globalFadeOut) clearTimeout(globalFadeOut);
        if (globalFadeIn) clearTimeout(globalFadeIn);
    }    
}

function menuShow(element) {

    // Reset all links (color/opacity)
    for(var i=0; i<element.childNodes.length; i++) {
        if (element.childNodes[i].nodeName == "UL") {
            //var ul = element.childNodes[i];
            
			changeOpacity(element.childNodes[i], 100);
			
			/*
		    for(var j=0; j<ul.childNodes.length; j++) {
		        if (ul.childNodes[j].nodeName == "LI") changeOpacity(ul.childNodes[j], 100);
		    }
			*/
        }
    }
        
    // Reset all menu hiding
    var navRoot = element.parentNode;
    var navItem = navRoot.firstChild;        
    while(navItem) {
        if ( (navItem.tagName == "LI") && globalDelay) {
            clearTimeout(globalDelay);
            menuHide(navItem);
        }
        navItem = navItem.nextSibling;
    }
    
    // Reset all fades
    if (globalFadeOut) clearTimeout(globalFadeOut);
    if (globalFadeIn) clearTimeout(globalFadeIn);
    
    // Show this menu
    if ( (element.className.indexOf(" over") == -1) && (element.className != "over") ) element.className+=" over";
}


function menuHide(element) {
    element.className = element.className.replace(" over", "");
		if (element.className == "over") element.className = "";
}


// New
function changeOpacity(element, opacity) {
    var o = element.style;
    o.opacity = (opacity / 100);
    o.MozOpacity = (opacity / 100);
    o.KhtmlOpacity = (opacity / 100);
    o.filter = "alpha(opacity=" + opacity + ")";
}

function fadeOpacity(element, opacity) {
    if (element.fade) {
        clearTimeout(element.fade);
    }
    
    // Get links
    for(var i=0; i<element.childNodes.length; i++) {
        if (element.childNodes[i].nodeName == "UL") {
            //var ul = element.childNodes[i];
            
			changeOpacity(element.childNodes[i], opacity);
			
		    /*
			for(var j=0; j<ul.childNodes.length; j++) {
		        if (ul.childNodes[j].nodeName == "LI") changeOpacity(ul.childNodes[j], opacity);
		    }
			*/
        }
    }   
    if (opacity<=0){
        menuHide(element);
        return;
    }
    
    var newOpacity = opacity - 5;
    
    var repeat = function(){
        fadeOpacity(element, newOpacity);
    };
    element.fade = setTimeout(repeat,20);
    globalFadeOut = element.fade;
}


function menuDelayHide(element) {
    var delayTime = 1500;
    
    globalDelay = setTimeout(function(){      
        fadeOpacity(element, 100);
        },delayTime);       
}


function addHover() {
    var navGrandpa = document.getElementById("site-nav");
    var navRoot;

    // Get starting UL
    for(var x=0; x<navGrandpa.childNodes.length; x++) 
    {
        if (navGrandpa.childNodes[x].nodeName == "DIV")
        {   
            var navParent = navGrandpa.childNodes[x];
						for(var y=0; y<navParent.childNodes.length; y++)
						{
								if (navParent.childNodes[y].nodeName == "UL") navRoot = navParent.childNodes[y];
						}
        }
				else if (navGrandpa.childNodes[x].nodeName == "UL") navRoot = navGrandpa.childNodes[x];
    }

    // Add event handlers
    for (var i=0; i<navRoot.childNodes.length; i++) {
        var node = navRoot.childNodes[i];
        if (node.nodeName == "LI") {
	        node.onmouseover=function() {
		        menuShow(this);
	        }
	        node.onmouseout=function() {
		        menuDelayHide(this);
	        }
        }
    }
}

addHover();
