var initDropDownMenu = function() {

    var ie6 = (YAHOO.env.ua.ie > 5 && YAHOO.env.ua.ie < 7);

    // Get hold of drop down menu elements
    var hdnav = document.getElementById("hd-nav");
    if(!YAHOO.lang.isUndefined(hdnav)) {
        var menus = YAHOO.util.Dom.getElementsByClassName("dropdownmenu", "UL", hdnav);
        var noMenus = menus.length;

        // Fix each menu.
        for(var i=0; i<noMenus; i++) {
            var menu = menus[i];

            // Fix mouseover on list elements (IE 6 only)
            var title = YAHOO.util.Dom.getAncestorByTagName(menu, "LI");
            if(ie6) {
                title.onmouseover = function(){ YAHOO.util.Dom.addClass(this, "hover"); };
                title.onmouseout = function(){ YAHOO.util.Dom.removeClass(this, "hover"); };


                var listItems = menu.getElementsByTagName("LI");
                var noListItems = listItems.length;
                for(var j=0; j<noListItems; j++) {
                    listItems[j].onmouseover = function(){ YAHOO.util.Dom.addClass(this, "hover"); };
                    listItems[j].onmouseout = function(){ YAHOO.util.Dom.removeClass(this, "hover"); };
                }
            }

            // Fix keyboard navigation
            var links = title.getElementsByTagName("A");
            var noLinks = links.length;
            for(var k=0; k<noLinks; k++) {
                links[k].onfocus = function(){ YAHOO.util.Dom.addClass(this.parentNode, "focus"); };
                /*links[k].onblur = function(){ YAHOO.util.Dom.removeClass(this.parentNode, "focus"); };*/
                links[k].onkeydown = function(event) { 
                    if(YAHOO.lang.isUndefined(event)) event=window.event;

                    if(event.keyCode==9 && !event.shiftKey) { 
                        var links = this.parentNode.getElementsByTagName("A");
                        if(links.length>1) {
                            links[1].focus();
                            return false;
                        }
                        YAHOO.util.Dom.removeClass(this.parentNode, "focus");
                        var sibling = YAHOO.util.Dom.getNextSiblingBy(this.parentNode, function(node) {return node.tagName=="LI";});
                        if(sibling==null) {
                            YAHOO.util.Dom.removeClass(this.parentNode.parentNode.parentNode, "focus");
                            sibling = YAHOO.util.Dom.getNextSiblingBy(this.parentNode.parentNode.parentNode, function(node) {return node.tagName=="LI";});
                            if(sibling==null) {
                                YAHOO.util.Dom.removeClass(this.parentNode.parentNode.parentNode.parentNode.parentNode, "focus");
                            }
                        }
                    } else if(event.keyCode==9) {
                        YAHOO.util.Dom.removeClass(this.parentNode, "focus");
                    }
                    return true; 
                }; 
            }

        }
    }
}

YAHOO.util.Event.onDOMReady(initDropDownMenu);
