var dropdown_rootNode = null; // Reference to root node of the current navigation.
var dropdown_timer = null; // Timer to hide all menu's on a 'onmouseout'.
var dropdown_timerWait = 750; // Time to wait before closing all open menu's.
var dropdown_zIndex = 1000; // zIndex of the navigation.

function createDropdown() {
    if (document.getElementById) {  
        try {
			var rootNode = document.getElementById('navHolder').getElementsByTagName('UL')[0];
            // Add javascript to items in navigation and hide submenu's.
            for (var j = 0; j < rootNode.childNodes.length; j++) {
            	var liNode = rootNode.childNodes[j];
				if (liNode.nodeName == 'LI' && liNode.className != 'separator') {
                	// Init subitems
                     __initDropdown(liNode);
					// Add a mouseover-event to each list item.
                    liNode.onmouseover = function() {
                    	try {
                        	clearTimeout(dropdown_timer);
                        }
                        catch(e) { }
                        __showDropdown(this);
                        //this.className = 'hover';
                    }

                    liNode.onmouseout = function() {
                    	try {
                        	clearTimeout(dropdown_timer);
                        }
                        catch(e) { }
                        dropdown_timer = setTimeout('__hideDropdown()', dropdown_timerWait);
                        //this.className = '';
                    }
                 }
			}
		}
        catch(e) {
            // Ignore
        }
    }
}

// Add classes and mouse-events to subitems.
function __initDropdown(rootNode) {
    dropdown_zIndex += 2;
    var zIndex = dropdown_zIndex;
    // Open subitems
    for (var i = 0; i < rootNode.childNodes.length; i++) {
        var ulNode = rootNode.childNodes[i];
        if(ulNode.nodeName == 'UL') {
            ulNode.style.display = 'none';
            ulNode.style.visibility = 'hidden';
            //ulNode.style.left = findPosX(rootNode) + 'px';
            ulNode.style.zIndex = zIndex;

            for (var j = 0; j < ulNode.childNodes.length; j++) {
                var liNode = ulNode.childNodes[j];
                if(liNode.nodeName == 'LI' && liNode.className != 'separator') {
                    // liNode.style.zIndex = zIndex + 1;
                    // Init subitems
                    __initDropdown(liNode);
                    // Add a mouseover-event to each list item.
                    liNode.onmouseover = function() {
                        try {
                            clearTimeout(dropdown_timer);
                        }
                        catch(e) { }
                        //this.className += ' hover';
                        __showDropdown(this);
                    }

                    liNode.onmouseout = function() {
                        try {
                            clearTimeout(dropdown_timer);
                        }
                        catch(e) { }
                        //this.className = this.className.replace('hover', '');
                        dropdown_timer = setTimeout('__hideDropdown()', dropdown_timerWait);
                    }
                }
            }
        }
    }
}

// Show submenu
function __showDropdown(rootNode) {
    if(dropdown_rootNode == null) {
        dropdown_rootNode = rootNode.parentNode.parentNode;
    }
	
    // Hide siblings' submenu's
    var ulNode = rootNode.parentNode;
    for(var i = 0; i < ulNode.childNodes.length; i++) {
        var liNode = ulNode.childNodes[i];
        if(liNode.nodeName == 'LI' && liNode.className != 'separator') {
            if(liNode != rootNode) {
                __hideDropdown(liNode);
            }
        }
    }

    // Show submenu's (if any)
    for(var i = 0; i < rootNode.childNodes.length; i++) {
        var ulNode = rootNode.childNodes[i];
        if(ulNode.nodeName == 'UL') {
            ulNode.style.display = 'block';
            ulNode.style.visibility = 'visible';
        }
    }
}

// Hide submenu's
function __hideDropdown(rootNode) {
    if(__hideDropdown.arguments.length < 1) {
        var tmpNode = dropdown_rootNode;
        dropdown_rootNode = null;

        if(tmpNode != null) {
            for(var i = 0; i < tmpNode.childNodes.length; i++) {
                var ulNode = tmpNode.childNodes[i];

                if(ulNode.nodeName == 'UL') {
                    for(var j = 0; j < ulNode.childNodes.length; j++) {
                        var liNode = ulNode.childNodes[j];
                        if(liNode.nodeName == 'LI' && liNode.className != 'separator') {
                            __hideDropdown(liNode);
                        }
                    }
                }
            }
        }
    } else {
        for(var i = 0; i < rootNode.childNodes.length; i++) {
            var ulNode = rootNode.childNodes[i];

            if(ulNode.nodeName == 'UL') {
                ulNode.style.display = 'none';
                ulNode.style.visibility = 'hidden';

                for(var j = 0; j < ulNode.childNodes.length; j++) {
                    var liNode = ulNode.childNodes[j];
                    if(liNode.nodeName == 'LI' && liNode.className != 'separator') {
                        __hideDropdown(liNode);
                    }
                }
            }
        }
        //rootNode.className = '';
    }
}


function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x){
		curleft += obj.x;
	}
	return curleft;
}

if (window.attachEvent) window.attachEvent("onload", createDropdown);
window.onload = function(){
	createDropdown();
}
