﻿
function initParams() {
    menuClientID = document.getElementById("MenuClientIDControl").value;
    mainMenuAreaClientID = document.getElementById("MainMenuAreaClientIDControl").value;
    subMenuAreaClientID = document.getElementById("SubMenuAreaClientIDControl").value;
    subMenuItemAreaClientIDPraefix = document.getElementById("SubMenuItemAreaClientIDPraefixControl").value;
    mainMenuClientIDPraefix = document.getElementById("MainMenuClientIDPraefixControl").value;
    subMenuClientIDPraefix = document.getElementById("SubMenuClientIDPraefixControl").value;
    subMenuItemClientIDPraefix = document.getElementById("SubMenuItemClientIDPraefixControl").value;
    navigationInformationClientID = document.getElementById("NavigationInformationClientIDControl").value;
    mainMenuItemClientIDPostfix = document.getElementById("MainMenuItemClientIDPostfixControl").value;
    subMenuItemClientIDPostfix = document.getElementById("SubMenuItemClientIDPostfixControl").value;
}

function ToDigits(number) {
   var numberAsString = '00' + number.toString();
    return numberAsString.substring(numberAsString.length - 2, numberAsString.length);

}

function getNavigationInfo() {
    return document.getElementById(navigationInformationClientID).value;
}

function hasNavigationInfo() {
    if (getNavigationInfo() == null)
        return false;

    if (getNavigationInfo() == "")
        return false;

    return true;
}

function getMainMenu() {
    return document.getElementById(mainMenuAreaClientID);
}

function getMainMenuItem(index) {
    return document.getElementById(menuClientID + mainMenuClientIDPraefix + ToDigits(index) + mainMenuItemClientIDPostfix);
}

function getSubMenuArea() {
    return document.getElementById(subMenuAreaClientID);
}

function getSubMenu(index) {
    return document.getElementById(menuClientID + subMenuClientIDPraefix + ToDigits(index) + subMenuItemAreaClientIDPraefix);
}

function getSubMenuItem(mainMenuItemIndex, subMenuItemIndex) {
    return document.getElementById(menuClientID + subMenuClientIDPraefix + ToDigits(mainMenuItemIndex) + subMenuItemClientIDPraefix + ToDigits(subMenuItemIndex) + subMenuItemClientIDPostfix);
}

function addLoadEvent(func) {
    var oldonload = window.onload;

    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            oldonload(); func();
        }
    }
}
addLoadEvent(initParams);
addLoadEvent(InitSubmenu);


function InitSubmenu() {
    hideAllSubMenus();

    if (!hasNavigationInfo())
        return;

    var indizes = getNavigationInfo().split(';');

    var mainMenuItemIndex = indizes.pop();

    getMainMenuItem(mainMenuItemIndex).className = "MainMenuItemStyleSelected";
    getSubMenu(mainMenuItemIndex).className = "SubMenuStyleSelected";
    
    getSubMenu(mainMenuItemIndex).style.display = 'block';


    if (subMenuItemIndex = indizes.pop()) {
        getSubMenuItem(mainMenuItemIndex, subMenuItemIndex).className = "SubMenuItemStyleSelected";
    }
}

function hideAllSubMenus() {
    var subMenuIndex = -1;

    for (i = 0; i < getSubMenuArea().childNodes.length; i++) {
        if (getSubMenuArea().childNodes.item(i).nodeName ==null || getSubMenuArea().childNodes.item(i).nodeName.toLocaleLowerCase() == "div") {
            subMenuIndex++;

            getSubMenu(subMenuIndex).style.display = 'none';
           
            
            if (isMainMenuIndexSelected(subMenuIndex)) {
                getMainMenuItem(subMenuIndex).className = "MainMenuItemStyleSelected";
                getSubMenu(subMenuIndex).className = 'SubMenuStyleSelected';
            }
            else {
                getMainMenuItem(subMenuIndex).className = "MainMenuItemStyle";
                getSubMenu(subMenuIndex).className = 'SubMenuStyle';
            }
        }
    }
}

function resetHoverStylesFromSubMenuItems(subMenuIndex) {
    var subMenuItemIndex = -1;


    for (i = 0; i < getSubMenu(subMenuIndex).childNodes.length; i++) {
        if (getSubMenu(subMenuIndex).childNodes.item(i).nodeName.toLocaleLowerCase() == "div") {
            subMenuItemIndex++;

            if (isSubMenuIndexSelected(subMenuIndex, subMenuItemIndex)) {
                getSubMenuItem(subMenuIndex, subMenuItemIndex).className = "SubMenuItemStyleSelected";
            }
            else {
                getSubMenuItem(subMenuIndex, subMenuItemIndex).className = "SubMenuItemStyle";
            }
        }
    }
}


function MainMenuItemHover(mainMenuItemIndex) {
     if (mainMenuItemIndex >= 0 && !hasNavigationInfo()) {
        ContinueHoverEffect();
       
        resetHoverStylesFromSubMenuItems(mainMenuItemIndex);

        if (getSubMenu(mainMenuItemIndex).style.display != 'block') {
            hideAllSubMenus();
            getSubMenu(mainMenuItemIndex).style.display = 'block';
            getSubMenu(mainMenuItemIndex).className = 'SubMenuStyleOnMainMenuItemHover';
        }
    }
}

function SubMenuItemHover(mainMenuItemIndex, subMenuItemIndex) {
     if (mainMenuItemIndex >= 0) {
        ContinueHoverEffect();

        resetHoverStylesFromSubMenuItems(mainMenuItemIndex);
        if (!isMainMenuIndexSelected(mainMenuItemIndex))
            getMainMenuItem(mainMenuItemIndex).className = "MainMenuItemStyleOnSubMenuHover";

        if (!isSubMenuIndexSelected(mainMenuItemIndex, subMenuItemIndex))
            getSubMenuItem(mainMenuItemIndex, subMenuItemIndex).className = "SubMenuItemStyle";
        else
            getSubMenuItem(mainMenuItemIndex, subMenuItemIndex).className = "SubMenuItemStyleSelected";

        if (getSubMenuItem(mainMenuItemIndex, subMenuItemIndex).style.display != 'block') {

            getSubMenu(mainMenuItemIndex).style.display = 'block';

        }
    }

}

function DynamicMenuItemHover(mainMenuItemIndex, subMenuItemIndex) {
    if (mainMenuItemIndex >= 0) {
        ContinueHoverEffect();

        getSubMenuItem(mainMenuItemIndex, subMenuItemIndex).className = "SubMenuItemStyleOnDynamicMenuHover";
    }
}

function isMainMenuIndexSelected(index) {
    if (!hasNavigationInfo())
        return;

    var indizes = getNavigationInfo().split(';');
    var mainMenuItemIndex = indizes.pop();

    return mainMenuItemIndex == index;

}

function isSubMenuIndexSelected(mainMenuIndex, subMenuIndex) {
    if (!hasNavigationInfo())
        return;

    var indizes = getNavigationInfo().split(';');
    var selectedMainMenuItemIndex = indizes.pop();
    var selectedSubMenuItemIndex = indizes.pop();

    if (selectedSubMenuItemIndex)
        return mainMenuIndex == selectedMainMenuItemIndex && subMenuIndex == selectedSubMenuItemIndex;
    else
        return false;
}

var currentThreadNumber = 0;

function MainMenuItemMouseLeave_Begin() {
    currentThreadNumber++;
    window.setTimeout('MainMenuItemMouseLeave_End(' + currentThreadNumber + ')', 750);
}

function MainMenuItemMouseLeave_End(threadNumber) {
    if (currentThreadNumber == threadNumber) {
        InitSubmenu();


        var indizes = getNavigationInfo().split(';');
        if (selectedMainMenuItemIndex = indizes.pop())
            resetHoverStylesFromSubMenuItems(selectedMainMenuItemIndex);

    }
}

function ContinueHoverEffect() {
    currentThreadNumber = (currentThreadNumber + 1) % 1000;
}
