﻿///
function LargeNavigationMenuItem(elementId, titleId, targetElementId, navigateUrl) {
    this.elementId = elementId;
    this.titleId = titleId;
    this.targetElementId = targetElementId;
    this.navigateUrl = navigateUrl;
}

LargeNavigationMenuItem.prototype.getElementId = function () { return this.elementId; }
LargeNavigationMenuItem.prototype.getTitleId = function () { return this.titleId; }
LargeNavigationMenuItem.prototype.getTargetElementId = function () { return this.targetElementId; }
LargeNavigationMenuItem.prototype.getNavigateUrl = function () { return this.navigateUrl; }
LargeNavigationMenuItem.prototype.setElementId = function (elementId) { this.elementId = elementId; }
LargeNavigationMenuItem.prototype.setTitleId = function (titleId) { this.titleId = titleId; }
LargeNavigationMenuItem.prototype.setTargetElementId = function (targetElementId) { this.targetElementId = targetElementId; }
LargeNavigationMenuItem.prototype.setNavigateUrl = function (navigateUrl) { this.navigateUrl = navigateUrl; }




///
/************************************************************************/
/* Broadage Navigation Menu Script Dosyası - Development				*/
/************************************************************************/


function LargeNavigationMenu() {
}

LargeNavigationMenu.NormalItemCssClass = "";
LargeNavigationMenu.HoverItemCssClass = "";
LargeNavigationMenu.SelectedItemCssClass = "";
LargeNavigationMenu.SelectedHoverItemCssClass = "";
LargeNavigationMenu.ItemsCollection = new Array(); //LargeNavigationMenuItem türünden nesneler alır
LargeNavigationMenu.ItemsDictionary = new Array(); //LargeNavigationMenuItem türünden nesneler alır
LargeNavigationMenu.SelectedItemId = null;
LargeNavigationMenu.MenuContainerId = null;

LargeNavigationMenu.Configure = function (options) {
    try {
        LargeNavigationMenu.MenuContainerId = options.menuContainerId;
        LargeNavigationMenu.NormalItemCssClass = options.normalItemCssClass;
        LargeNavigationMenu.HoverItemCssClass = options.hoverItemCssClass;
        LargeNavigationMenu.SelectedItemCssClass = options.selectedItemCssClass;
        LargeNavigationMenu.SelectedHoverItemCssClass = options.selectedHoverItemCssClass;
        LargeNavigationMenu.ItemsCollection = new Array();
        LargeNavigationMenu.ItemsDictionary = new Array();

        for (var i = 0; i < options.items.length; i++) {
            var currentItem = options.items[i];
            var itemToAdd = new LargeNavigationMenuItem();

            if (currentItem.elementId != null)
                itemToAdd.setElementId(currentItem.elementId);
            if (currentItem.targetElementId != null)
                itemToAdd.setTargetElementId(currentItem.targetElementId);
            if (currentItem.navigateUrl != null)
                itemToAdd.setNavigateUrl(currentItem.navigateUrl);

            LargeNavigationMenu.ItemsCollection[LargeNavigationMenu.ItemsCollection.length] = itemToAdd;
            LargeNavigationMenu.ItemsDictionary[itemToAdd.getElementId()] = itemToAdd;
        }
    }
    catch (ex) {
    }
}

LargeNavigationMenu.RegisterOutOfMenuBehaviour = function () {
    try {
        $("#" + LargeNavigationMenu.MenuContainerId).hover(function () { },
        function () {
            LargeNavigationMenu.HideAllSubPanes();
            LargeNavigationMenu.RemoveAllHoverClasses();
        });
    }
    catch (ex) {
    }
}

LargeNavigationMenu.HideAllSubPanes = function () {
    try {
        for (var i = 0; i < LargeNavigationMenu.ItemsCollection.length; i++) {
            var currentHidingNavItem = LargeNavigationMenu.ItemsCollection[i];
            $("#" + currentHidingNavItem.getTargetElementId()).hide();
        }
    }
    catch (ex) {
    }
}

LargeNavigationMenu.RemoveAllHoverClasses = function () {
    $("#" + LargeNavigationMenu.MenuContainerId + " ." + LargeNavigationMenu.HoverItemCssClass).removeClass(LargeNavigationMenu.HoverItemCssClass).addClass(LargeNavigationMenu.NormalItemCssClass);
    $("#" + LargeNavigationMenu.MenuContainerId + " ." + LargeNavigationMenu.SelectedHoverItemCssClass).removeClass(LargeNavigationMenu.SelectedHoverItemCssClass).addClass(LargeNavigationMenu.SelectedItemCssClass);
}

LargeNavigationMenu.RegisterItemsBehaviour = function () {
    try {
        for (var i = 0; i < LargeNavigationMenu.ItemsCollection.length; i++) {
            var currentNavItem = LargeNavigationMenu.ItemsCollection[i];

            //hover behaviour
            $("#" + currentNavItem.getElementId()).hover(function () {
                try {
                    //mouse over
                    LargeNavigationMenu.RemoveAllHoverClasses();

                    var hoveredMenuItem = LargeNavigationMenu.ItemsDictionary[$(this).attr("id")]; // bu şekilde yapılmasının sebebi bu kısmın tıklama zamanında çalıştığında eğer for içerisindeki değişken kullanılırsa değişkenin son değerini alması
                    if (hoveredMenuItem.getElementId() == LargeNavigationMenu.SelectedItemId)
                        $(this).removeClass(LargeNavigationMenu.SelectedItemCssClass).addClass(LargeNavigationMenu.SelectedHoverItemCssClass);
                    else
                        $(this).removeClass(LargeNavigationMenu.NormalItemCssClass).addClass(LargeNavigationMenu.HoverItemCssClass);

                    LargeNavigationMenu.HideAllSubPanes();
                    if (hoveredMenuItem.getTargetElementId() != null) {
                        $("#" + hoveredMenuItem.getTargetElementId()).show();
                    }
                }
                catch (ex) {
                }
            },
            function () {
                try {
                    //mouse leave
                    /*var hoveredMenuItem = LargeNavigationMenu.ItemsDictionary[$(this).attr("id")];
                    if (hoveredMenuItem.getElementId() == LargeNavigationMenu.SelectedItemId)
                    $(this).removeClass(LargeNavigationMenu.HoverItemCssClass).addClass(LargeNavigationMenu.SelectedItemCssClass);
                    else
                    $(this).removeClass(LargeNavigationMenu.HoverItemCssClass).addClass(LargeNavigationMenu.NormalItemCssClass);*/

                    /*if (hoveredMenuItem.getTargetElementId() != null) {
                    $("#" + hoveredMenuItem.getTargetElementId()).hide();
                    }*/
                }
                catch (ex) {
                }
            });

            //click behaviour
            $("#" + currentNavItem.getElementId()).click(function () {
                try {
                    var clickedMenuItem = LargeNavigationMenu.ItemsDictionary[$(this).attr("id")];
                    if (clickedMenuItem.getNavigateUrl() != null) {
                        window.location = clickedMenuItem.getNavigateUrl();
                    }
                }
                catch (ex) {
                }
            });
        }
    }
    catch (ex) {
    }
}

LargeNavigationMenu.Register = function (options) {
    try {
        if (options != null)
            LargeNavigationMenu.Configure(options);

        LargeNavigationMenu.RegisterItemsBehaviour();
        LargeNavigationMenu.RegisterOutOfMenuBehaviour();
        LargeNavigationMenu.HideAllSubPanes();
    }
    catch (ex) {
    }
}

LargeNavigationMenu.SelectItem = function (elementId) {
    try {
        var itemToSelect = LargeNavigationMenu.ItemsDictionary[elementId];
        if (itemToSelect != null) {
            LargeNavigationMenu.SelectedItemId = elementId;
            $("#" + itemToSelect.getElementId()).removeClass(LargeNavigationMenu.NormalItemCssClass).addClass(LargeNavigationMenu.SelectedItemCssClass);
        }
    }
    catch (ex) {
    }
}
