﻿Event.observe(window, 'load', SetupMenuHandlers);

var intHideMenuTimeout = 0;

function SetupMenuHandlers(event) {
    var menuList = $$('ul.menu a');
    for (var i = 0; i < menuList.length; i++) {

        Event.observe(menuList[i], 'mouseover', _over);
        Event.observe(menuList[i], 'mouseout', _out);

        Event.observe(menuList[i], 'focus', _over);
        Event.observe(menuList[i], 'blur', _out);

    }
}

function _over2(element) {
    if (intHideMenuTimeout > 0) {
        window.clearTimeout(intHideMenuTimeout);
        intHideMenuTimeout = 0;
    }

    var highlightList = $$('a.highlight');

    var a = element;

    var ulList = Element.ancestors(a);

    var nextEl = Element.next(a, 'ul')
    if (nextEl) {
        ulList.push(nextEl);
    }
    else {
        DoHighLight(a);
    }

    for (var i = 0, len1 = highlightList.length; i < len1; i++) {
        var aTemp = highlightList[i];
        var ulTemp = Element.next(aTemp, 'ul')

        var match = false;
        if (ulTemp)
            for (var j = 0, len2 = ulList.length; j < len2; j++) {
                if (ulTemp == ulList[j]) {
                    match = true;
                    break;
                }
            }
        if (!match) {
            if (ulTemp) {
                ulTemp.style.display = 'none';
            }
            DoUnHighLight(aTemp);
        }

    }

    var ulLength = ulList.length;
    for (var i = ulLength; i > 0; i--) {
        var ul = ulList[i - 1];
        if ((ul.tagName.toLowerCase() == 'ul') && (ul.className.toLowerCase() == 'submenu')) {
            //console.log(ul.style.zIndex);
            //ul.style.zIndex = 3500 - i;
            if (ul.style.display != 'block') {
                ul.style.display = 'block';
                var aLink = Element.previous(ul, 'a');
                DoHighLight(aLink);
            }
        }
    }
}

function DoHighLight(a) {
    a.className = 'highlight';
    //check to see if this menu item includes an image, if so attempt to swich the source.
    var imgMenu = Element.firstDescendant(a);
    if (imgMenu && imgMenu.tagName.toLowerCase() == 'img') {
        imgMenu.src = imgMenu.src.replace("-off", "-over");
    }
}

function DoUnHighLight(a) {
    a.className = '';
    //check to see if this menu item includes an image, if so attempt to swich the source.
    var imgMenu = Element.firstDescendant(a);
    if (imgMenu && imgMenu.tagName.toLowerCase() == 'img') {
        imgMenu.src = imgMenu.src.replace("-over", "-off");
    }
}

function _over(event) {
    var element = Event.element(event);
    if (element.tagName.toLowerCase() == 'img')
        element = element.parentNode;
    _over2(element);
}

function _out2(element) {
    //            var ulList = Element.adjacent(element, 'ul')
    //            for (var i = ulList.length; i > 0; i--) {
    //                ulList[i-1].style.display = 'none';
    //            }
    var menuList = $$('ul.menu ul.submenu,ul.menu a.highlight');
    var len1 = menuList.length
    for (var i = len1; i > 0; i--) {
        var _e = menuList[i - 1];
        if (_e.tagName.toLowerCase() == 'ul' && _e.style.display == 'block') {
            _e.style.display = 'none';
        }
        else if (_e.tagName.toLowerCase() == 'a') {
            DoUnHighLight(_e);
        }
    }
}

function _out(event) {
    var a = Event.element(event);
    intHideMenuTimeout = window.setTimeout(function () { _out2(a); }, 800);
}

