var menus = new Array();

function MenuItem(name, url, openInNewWindow) {
    this.name = "" + name;
    this.url = "" + url;
    this.openInNewWindow = openInNewWindow;
}

function f_contains(a, b) {
     while(b && (a!=b) && (b!=null)) {
        b = b.parentNode;
    }
    return a == b;
}

function doFade(e, el) {
    var target = (e) ? ((e.relatedTarget) ? e.relatedTarget : e.toElement) : null;

    if (!target) {
        hideMenu();
    } else {
        while(target.nodeType != 1) {  // 1 = ELEMENT_NODE
            target = target.parentNode;
        }

        for (var i = 0; i < menus.length; i++) {
            var src = document.getElementById("menu"+i);
            if (f_contains(src, target))
                return;
        }

        var layer = document.getElementById(el);

        if (!f_contains(layer, target))  {
            hideMenu();
            return;
        }

        var pos = findMenuPos(0);
        var y = 0;
        var x = 0;
        if (e.pageY) {
            x = e.pageX;
            y = e.pageY;
        } else if (e.clientY) {
            x = e.clientX + document.body.scrollLeft;
            y = e.clientY + document.body.scrollTop;
        }

        var posLastMenu = findMenuPos(menus.length-1);
        var maxX = posLastMenu[0] + document.getElementById("topmenu" + (menus.length-1)).offsetWidth;
        if (y  - 3 < pos[1] || x - 5 < pos[0] || x + 5 > maxX) {
            hideMenu();
        }
    }
}

function findMenuPos(i) {
    var obj = document.getElementById("topmenu" + i);
    if (obj == null) {
        return null;
    }

    var curleft = 0;
    var curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft,curtop];
}

function getTopMenuHeight(i) {
    var obj = document.getElementById("topmenu" + i);
    if (obj == null) {
        return 0;
    }

    return obj.offsetHeight;
}

function getMenuHeight(i) {
    var obj = document.getElementById("menu" + i);
    if (obj == null) {
        return 0;
    }

    return obj.offsetHeight;
}

function buildMenu() {
    var i = 0;
    var j = 0;
    var str = "";

    for(i = 0; i < menus.length; i++) {
        var pos = findMenuPos(i);
        if (pos != null) {
            var top = getTopMenuHeight(i) + pos[1] + menuOffsetTop;
            var left = menuOffsetLeft + pos[0];
            str += '<div id="menu' + i + '" onMouseOut="doFade(event, \'menu' + i + '\')" style="position: absolute; left: ' + left + 'px; top: ' + top + 'px; visibility: hidden; z-index:1001;" class="dropdownMenu">\n';
            // innhold i menyer
            str += '<ul>\n';
            for(j = 0; j < menus[i].length; j++) {
                var clazz = '';
                if(j == menus[i].length-1){
                    clazz = 'class="siste"';
                }
                var newWindow = '';
                if(menus[i][j].openInNewWindow) {
                    newWindow =  ' onclick="window.open(this.href); return false;"';
                }
                str += '<li><a '+clazz+' href="'+menus[i][j].url+'"' + newWindow + '>'+menus[i][j].name+'</a></li>\n';
            }
            str += '</ul>\n';
            str += '</div>\n';
            if (document.all && !window.opera) {
                // Legg til IFRAME for IE, skjuler select lister
                str += '<iframe id="menu' + i + '_iframe" src="Javascript:false;" scroll=none style="width:10;height:10;position:absolute;left:' + left + ';top:' + top + ';visibility: hidden; z-index:1000;"></iframe>';
            }
        }
    }
    var menu = document.getElementById('dropdown');
    menu.innerHTML = str;
}

function showMenu(num) {
    var str = "";
    for(var i = 0; i < menus.length; i++) {
        var div = document.getElementById('menu' + i);
        var iframe = document.getElementById('menu' + i + '_iframe');

        var topdiv = document.getElementById('topmenu' + i);
        var selected = "";
        if (topdiv.className.indexOf("Selected") != -1) {
            selected = "Selected";
        }

        if (div != null) {
            if (i == num) {
                topdiv.className = "topItem" + selected + "Over";
                div.style.visibility='visible';
                if (iframe) {
                    iframe.style.width=div.offsetWidth + "px";
                    iframe.style.height=div.offsetHeight + "px";
                    iframe.style.visibility='visible';
                }
            } else {
                topdiv.className = "topItem" + selected; 
                div.style.visibility='hidden';
                if (iframe) {
                    iframe.style.visibility='hidden';
                }
            }
        }

    }
}

function hideMenu() {
    for(var i = 0; i < menus.length; i++) {
        var topdiv = document.getElementById('topmenu' + i);
        var clz = topdiv.className;
        if (clz.indexOf("Selected") != -1) {
            topdiv.className = "topItemSelected";
        } else {
            topdiv.className = "topItem";
        }

        var div = document.getElementById('menu' + i);
        div.style.visibility='hidden';

        var iframe = document.getElementById('menu' + i + '_iframe');
        if (iframe) {
            iframe.style.visibility='hidden';
        }
    }
}