﻿// Fix Cascading Menus v1.6 by Matt Ditter (Jan. 2008; updated May 2009)
// Enables drop downs in IE6, supports tabbing through sublists,
// and adds rollover to top-level image on sublist mouseover
var lastMenuLink = null;
function fixMenu() {
    var lists = document.getElementsByTagName('ul');
    for (var i = 0, list; list = lists[i]; i++) {
        if (list.id && !list.id.indexOf('cascadingMenu')) {
            var lis = list.getElementsByTagName('li');
            for (var j = 0, li; li = lis[j]; j++) {
                var anchors = li.getElementsByTagName('a'), sublists = li.getElementsByTagName('ul');
                if (li.className && (li.className == 'itemFirst' || li.className == 'itemLast')) {
                    var parLIs = li.parentNode.getElementsByTagName('li');
                    if (li != parLIs[0] && li != parLIs[parLIs.length - 1]) li.className = '';
                }
                if (anchors.length) {
                    if (li.parentNode == list) anchors[0].onblur = function() { lastMenuLink = this; }
                    else if (sublists.length) {
                        anchors[0].onblur = function() {
                            var n = this.parentNode;
                            while (n) {
                                if (n.tagName == 'LI') { n.className = n.className.replace(/(?:^|\s)menuover(?:\b|$)/gi, ''); break; }
                                n = n.parentNode;
                            } 
                        } 
                    }
                    anchors[0].onfocus = function() {
                        var n = this.parentNode;
                        while (n) {
                            var p = n.parentNode, topLI = p && p.tagName == 'UL' && p.id && !p.id.indexOf('cascadingMenu');
                            if (topLI && lastMenuLink && (n.getElementsByTagName('a')[0] != lastMenuLink)) {
                                var lastMenuItem = lastMenuLink.parentNode;
                                while (lastMenuItem) {
                                    if (lastMenuItem.tagName == 'LI') break;
                                    else lastMenuItem = lastMenuItem.parentNode;
                                }
                                lastMenuItem.className = lastMenuItem.className.replace(/(?:^|\s)menuover(?:\b|$)/gi, '');
                                var lastItems = lastMenuItem.getElementsByTagName('li');
                                if (lastItems)
                                    for (var k = 0, lastItem; lastItem = lastItems[k]; k++)
                                    lastItem.className = lastItem.className.replace(/(?:^|\s)menuover(?:\b|$)/gi, '');
                                lastMenuLink = null;
                            }
                            if (n.tagName == 'LI') n.className += ' menuover';
                            n = n.parentNode;
                        } 
                    }
                    if (sublists.length) {
                        li.onmouseover = function() {
                            this.className += ' menuover';
                            var listPic = this.getElementsByTagName('img')[0];
                            if (listPic && listPic.className.match(/(?:^|\s)over(?:\b|$)/gi) && listPic.src.indexOf('/blank.gif') == -1) {
                                var path = listPic.src, dot = path.lastIndexOf('.');
                                if (!/-[ao]\./.test(path)) listPic.src = path.substring(0, dot) + '-o' + path.substring(dot, path.length);
                            } 
                        }
                        li.onmouseout = function() {
                            this.className = this.className.replace(/(?:^|\s)menuover(?:\b|$)/gi, '');
                            var listPic = this.getElementsByTagName('img')[0];
                            if (listPic && listPic.className.match(/(?:^|\s)over(?:\b|$)/gi) && listPic.src.indexOf('/blank.gif') == -1) {
                                var path = listPic.src;
                                if (path.indexOf('-o.') > -1) listPic.src = path.replace(/\-o\./gi, '.');
                            } 
                        }
                        anchors[anchors.length - 1].onblur = function() {
                            var n = this.parentNode;
                            while (n) {
                                if (n.tagName == 'LI') {
                                    var subLinks = n.getElementsByTagName('a');
                                    if (subLinks[subLinks.length - 1] == this) n.className = n.className.replace(/(?:^|\s)menuover(?:\b|$)/gi, '');
                                }
                                n = n.parentNode;
                                if (n == list) break;
                            } 
                        } 
                    } 
                } 
            } 
        } 
    } 
}
