﻿$(function() {
    var menu = $("#HeroMenu");
    if (menu.length == 0) {
        return;
    }
    var url = window.location.pathname + window.location.search;
    var currentLink = menu.find("a[href='" + url + "']");
    SetSelected(currentLink);

    var imgPlus = "/Images/plus.gif";     // click to collapse
    var imgSubtra = "/Images/minus.gif";     // click to toggle
    var imgBlank = "/Images/blank.gif";     // none

    // css class name
    var selected1 = "selected1";
    var selected2 = "selected2";
    var selected3 = "selected3";

    var bgColor1 = "#009fda";
    var bgColor2 = "#aea79f";
    var bgColor3 = "#c0edff";
    var selectedColor1 = "#001965";
    var selectedColor2 = "#82786f";
    var selectedColor3 = "#81dcff";

    var topBg = "url(/Images/menu/novo_menu_up.jpg) top";
    var topBgHover = "url(/Images/menu/novo_menu_up1.jpg) top";

    var oneBg = "url(/Images/menu/novo_menu_one.jpg)";
    var oneBgHover = "url(/Images/menu/novo_menu_one_hover.jpg)";

    var bottomBg1 = "url(/Images/menu/novo_menu_down.jpg) bottom";
    var bottomBg1Hover = "url(/Images/menu/novo_menu_down1.jpg) bottom";
    var bottomBg2 = "url(/Images/menu/novo_menu_down_1.jpg) bottom";
    var bottomBg2Hover = "url(/Images/menu/novo_menu_down_1_1.jpg) bottom";
    var bottomBg3 = "url(/Images/menu/novo_menu_down3.jpg) bottom";
    var bottomBg3Hover = "url(/Images/menu/novo_menu_down3_down.jpg) bottom";

    var deep = 1;
    RecurLi(menu.find(">li"), deep);
    function RecurLi(lis, deep) {
        if (lis.length == 0) {
            return;
        }
        lis.each(function() {
            var subUl = $(this).find(">ul");
            var $this = $(this);
            $this.data("deep", deep);
            var isLast = lis.index($this) == (lis.length - 1);
            $this.data("last", isLast);
            // click image
            if (subUl.length > 0) {
                $('<img />').attr('src', subUl.is(":hidden") ? imgPlus : imgSubtra).prependTo($this).click(function(event) {
                    var tempUl = $(this).siblings("ul");
                    if (tempUl.is(":hidden")) {
                        tempUl.show();
                        $(this).attr('src', imgSubtra);
                    }
                    else {
                        tempUl.hide();
                        $(this).attr('src', imgPlus);
                    }

                    SetLi($(this).parent());

                    event.stopPropagation();
                });
            } else {
                $('<img />').attr('src', imgBlank).prependTo($this);
            }

            $this.click(function(event) {
                window.location = $(this).find("a").attr("href");
                event.stopPropagation();
            });

            SetLi($this);

            RecurLi($this.find(">ul>li"), deep + 1);
        });

        ++deep;
    }

    function SetLi(li) {
        // init menu
        var subUl = li.find(">ul");
        var deep = li.data("deep").toString();
        var isLast = li.data("last").toString();
        var isSelected = li.data("selected");
        if (null == isSelected) {
            isSelected = "";
        }
        else {
            isSelected = isSelected.toString();
        }

        if (deep == "1") {
            if (li.is(":first")) {
                if (isSelected == "true") {
                    if (subUl.is(":hidden")) {
                        li.css("background", oneBgHover);
                    }
                    else {
                        li.css("background", topBgHover);
                    }
                }
                else {
                    // for upgrade
                }
            }
            else {
                // for upgrade
            }
        }
        else if (deep == "2") {
            if (isLast == "true") {
                if (isSelected == "true") {
                    if (subUl.is(":hidden")) {
                        li.css("background", bottomBg2Hover);
                    }
                    else {
                        li.css("background", selectedColor2);
                    }
                }
                else {
                    // for upgrade
                }
            }
            else {
                // for upgrade
            }
        }
        else if (deep == "3") {
            if (isLast == "true") {
                if (isSelected == "true") {
                    li.css("background", bottomBg3Hover);
                }
                else {
                    li.css("background", bottomBg3).hover(function() {
                        $(this).css("background", bottomBg3Hover);
                    }, function() {
                        $(this).css("background", bottomBg3);
                    });
                }
            }
            else {
                if (isSelected == "true") {
                    li.css("background", selectedColor3);
                }
                else {
                    li.css("background", bgColor3).hover(function() {
                        $(this).css("background", selectedColor3);
                    }, function() {
                        $(this).css("background", bgColor3);
                    });
                }
            }
        }
    }

    // add data(selected) to point selected li(which are parent)
    function SetSelected(link) {
        var selectedLi = link.parent();
        var temp = selectedLi;
        while (temp.length > 0) {
            temp.find(">ul").show();
            temp.data("selected", "true");
            temp = temp.parent("ul").parent("li");
        }

        link.attr("href", "javascript:void(0);");
        link.parent().click(function(event) { event.stopPropagation(); });
    }

    function ObjectEquals(obj1, obj2) {
        for (var i in obj1) {
            if (obj1.hasOwnProperty(i)) {
                if (!obj2.hasOwnProperty(i)) return false;
                if (obj1[i] != obj2[i]) return false;
            }
        }
        for (var i in obj2) {
            if (obj2.hasOwnProperty(i)) {
                if (!obj1.hasOwnProperty(i)) return false;
                if (obj1[i] != obj2[i]) return false;
            }
        }
        return true;
    }
});
