var menuContentDivId = "menu-content-div";
var deselectedStyleClassName = "menu-entry-deselected";
var selectedStyleClassName = "menu-entry-selected";
var selectedMenuEntryIdCookieName = "selectedMenuEntry";
var defaultSelectedMenuEntryId = "menu-entry-home";
var rootUrl;

var menuEntries = new Array();
var selectedMenuEntry = null;

function init(root) {
    rootUrl = root;

    //register menu entries
    var menuContentDiv = document.getElementById(menuContentDivId);
    var menuEntriesTmp = menuContentDiv.getElementsByTagName("div");
    for (var i = 0; i < menuEntriesTmp.length; i++) {
        registerMenuEntry(menuEntriesTmp[i]);
    }

    //load selection from cookie
    var selectedMenuEntryId = loadCookie(selectedMenuEntryIdCookieName);
    if (selectedMenuEntryId == null || selectedMenuEntryId.length <= 0) {
        selectedMenuEntryId = defaultSelectedMenuEntryId;
    }

    //select dom element
    var selected = document.getElementById(selectedMenuEntryId);
    if (selected != null) {
        selectMenuEntry(selected);
    }
}

function registerMenuEntry(menuEntry) {
    menuEntries.push(menuEntry);
    deselectMenuEntry(menuEntry);
}

function deselectAllMenuEntries() {
    for (var i = 0; i < menuEntries.length; i++) {
        deselectMenuEntry(menuEntries[i]);
    }
}

function deselectMenuEntry(menuEntry) {
    setMenuEntryImgState(menuEntry, "deselected");
}

function selectMenuEntry(menuEntry) {
    if (selectedMenuEntry != null) {
        deselectMenuEntry(selectedMenuEntry);
    }

    selectedMenuEntry = menuEntry;

    //save selection to cookie
    saveCookie(selectedMenuEntryIdCookieName, selectedMenuEntry.id, 10 * 60 * 1000); //10min

    //set correct image url
    setMenuEntryImgState(selectedMenuEntry, "selected");
}

function notifyMenuEntryClicked(menuEntry) {
    selectMenuEntry(menuEntry);
}

function notiyMenuEntryOnMouseOver(menuEntry) {
    if(selectedMenuEntry != menuEntry) {
        setMenuEntryImgState(menuEntry, "mouseover");
    }
}

function notifyMenuEntryOnMouseOut(menuEntry) {
    if(selectedMenuEntry == menuEntry) {
        setMenuEntryImgState(menuEntry, "selected");
    } else {
        setMenuEntryImgState(menuEntry, "deselected");
    }
}

function notifyLogoClicked() {
    var selected = document.getElementById(defaultSelectedMenuEntryId);
    if (selected != null) {
        selectMenuEntry(selected);
    }
}

function getMenuEntryImg(menuEntry) {
    return window.document.getElementById(menuEntry.id + "-img");
}

function getImgUrl(menuEntry, entryState) {
    if(entryState == "selected") {
        return rootUrl + "/img/" + menuEntry.id + ".png";
    } else if(entryState == "deselected") {
        return rootUrl + "/img/" + menuEntry.id + "-bw.png";
    } else if(entryState == "mouseover") {
        return rootUrl + "/img/" + menuEntry.id + "-mo.png";
    }
}

function setMenuEntryImgState(menuEntry, entryState) {
    if(menuEntry != null) {
        var img = getMenuEntryImg(menuEntry);
        if(img != null) {
            img.src = getImgUrl(menuEntry, entryState);
        }
    }
}
