﻿var menuActive = false;
var activeEl = null;

function toggle(obj) {
    var el = obj.parentNode;
    if (menuActive == false) {
        menuActive = true;
        activeEl = el;
        activeEl.className = 'active';
    } else {
        if (activeEl===el) {
            menuActive = false;
            activeEl.className = '';
            activeEl = null;
        } else {
            activeEl.className = '';
            activeEl = el;
            activeEl.className = 'active';
        }
    }
    return false;
}

function switchFocus() {
    var el = this.parentNode;
    if (menuActive == true) {
        menuActive = true;
        activeEl.className = '';
        activeEl = el;
        activeEl.className = 'active';
    }
}

function clickedOutsideElement(elemId, evt) {
    var theElem = '';
    if(window.event) {
        theElem = getEventTarget(window.event);
    } else {
        theElem = getEventTarget(evt);
    }
    while(theElem != null) {
        if(theElem.id == elemId) {return false}
        theElem = theElem.parentNode;
    }
    return true;
}

function getEventTarget(evt) {
    var targ = (evt.target) ? evt.target : evt.srcElement;
    if(targ != null) {
        if(targ.nodeType == 3) {targ = targ.parentNode}
    }
    return targ;
}

function initMenu() {
    if (!document.getElementById) {return}
    var objMenu = document.getElementById('menu');
    objMenu.className = 'jsOn';
    for (i=0;i<objMenu.childNodes.length;i++) {
        var obj1 = objMenu.childNodes[i];
        if (obj1.nodeType==1&&obj1.nodeName=='LI') {
            var bIsDD = false;
            var objA = null;
            for (j=0;j<obj1.childNodes.length;j++) {
                var obj2 = obj1.childNodes[j];
                if (obj2.nodeType==1) {
                    if (obj2.nodeName=='A') {
                        objA = obj2;
                    }
                    if (obj2.nodeName=='UL') {
                        bIsDD = true;
                    }
                }
            }
            objA.onmouseover = switchFocus;
            objA.onfocus = switchFocus;
            if (bIsDD) {
                objA.onclick = function() {
                    this.blur();
                    if (window.event) {window.event.returnValue = false}
                    return toggle(this);
                }
            }
        }
    }
    document.onclick = function(evt) {
        if(clickedOutsideElement('menu', evt)) {
            if (menuActive == false) {
                return true;
            } else {
                menuActive = false;
                activeEl.className = '';
                activeEl = null;
                return false;
            }
        } else {
            return true;
        }
    }
}

// Initialise menu when page is loaded
addLoadEvent(initMenu)