﻿window.onload = Init;

var currentOpenSubmenu = null;
var closingTimer = null;
var timeToClose = 100;
function Init()
{
    var menuLists = document.getElementsByTagName("ul");
    for(var i=0;i<menuLists.length;i++)
    {
        if(menuLists[i].attributes["class"].nodeValue == "HorezontalMainMenu" || menuLists[i].attributes["class"].nodeValue == "VerticalMainMenu")
        {
            var menuLinks = menuLists[i].getElementsByTagName("a");
            for(var j=0;j<menuLinks.length;j++)
            {
                menuLinks[j].parentmenu = menuLinks[j].parentNode.parentNode;
                menuLinks[j].submenu = menuLinks[j].parentNode.getElementsByTagName("ul")[0];
                var linkImages = menuLinks[j].getElementsByTagName("img");
                menuLinks[j].DefaultLinkImage = new Image();
                menuLinks[j].DefaultActiveLinkImage = new Image();
                for(var x=0; x<linkImages.length;x++)
                {
                    if(linkImages[x].className == "LinkImage")
                    {
                        menuLinks[j].LinkImage = linkImages[x];
                        menuLinks[j].DefaultLinkImage.src = menuLinks[j].LinkImage.src;
                    }else if(linkImages[x].className == "ActiveLinkImage")
                    {
                        menuLinks[j].ActiveLinkImage = linkImages[x];
                        menuLinks[j].DefaultActiveLinkImage.src = menuLinks[j].ActiveLinkImage.src;
                    }
                }
                var pageLink = String(window.location);
                if(menuLinks[j].href.indexOf("#") == -1)
                {
                    if(pageLink.indexOf(menuLinks[j].href) > -1 && menuLinks[j].LinkImage != null && menuLinks[j].ActiveLinkImage != null)
                    {
                        menuLinks[j].LinkImage.src = menuLinks[j].ActiveLinkImage.src;
                        menuLinks[j].DefaultLinkImage.src = menuLinks[j].LinkImage.src;
                    }
                    if(pageLink.indexOf(menuLinks[j].href) > -1 && menuLinks[j].parentmenu !=null && menuLinks[j].parentmenu.parentNode.parentNode.className=="HorezontalMainMenu")
                    {
                        var parentLink = menuLinks[j].parentmenu.parentNode.getElementsByTagName("a")[0];
                        if(parentLink.LinkImage != null && parentLink.ActiveLinkImage != null)
                        {
                            parentLink.LinkImage.src = parentLink.ActiveLinkImage.src;
                            parentLink.DefaultLinkImage.src = parentLink.LinkImage.src;
                        }
                    }
                }
                menuLinks[j].onmouseover = showSubMenu;
                menuLinks[j].onmouseout = hideSubMenu;
            }
        }
        
    }
}
function showSubMenu()
{
    for(var i =0; i<100;i++)
    {
        //wait 100 instruction
    }
    if(this.submenu != null)
    {
        var offsetLeft =0;
        var offsetTop = 0;
        var tempElement = this;
        while(tempElement != null)
        {
            offsetLeft += tempElement.offsetLeft;
            offsetTop += tempElement.offsetTop;
            tempElement = tempElement.offsetParent;
        }
        this.submenu.menutype = this.submenu.attributes["class"].nodeValue;
        if(this.submenu.menutype == "LeftSubMenu")
        {
            this.submenu.style.left = (offsetLeft -  this.submenu.offsetWidth) + "px";
            this.submenu.style.top = offsetTop + "px";
        }
        else if(this.submenu.menutype == "RightSubMenu")
        {
            this.submenu.style.left = (offsetLeft +  this.offsetWidth) + "px";
            this.submenu.style.top = offsetTop + "px";
        }
        else if(this.submenu.menutype == "SubMenu")
        {
            var leftValue = offsetLeft- ((this.submenu.getElementsByTagName("a")[0].offsetWidth) - (this.offsetWidth));
            var topValue = offsetTop + this.offsetHeight;
//            if(leftValue > offsetLeft)
//            {
//                leftValue = offsetLeft- ((this.submenu.getElementsByTagName("a")[0].offsetWidth) - (this.offsetWidth));
//                if(leftValue > offsetLeft){leftValue = offsetLeft;}
//            }
            this.submenu.style.left = leftValue + "px";
            this.submenu.style.top = topValue + "px";
        }
    }
    if(this.LinkImage != null && this.ActiveLinkImage != null)
    {
        this.LinkImage.src = this.DefaultActiveLinkImage.src;
    }
    if(this.submenu == currentOpenSubmenu)
    {
        openSubmenu();
    }
    else if(this.parentmenu == currentOpenSubmenu)
    {
        window.clearTimeout(closingTimer);
    }
    else if(this.submenu != currentOpenSubmenu && this.submenu != null)
    {
        closeSubmenuNow();
        currentOpenSubmenu = this.submenu;
        currentOpenSubmenu.Link = this;
        openSubmenu();
    }
    
}
function hideSubMenu()
{
    if(this.submenu == null)
    {
        if(this.LinkImage != null && this.ActiveLinkImage != null)
        {
            this.LinkImage.src = this.DefaultLinkImage.src;
        }
    }
    if(this.parentmenu == currentOpenSubmenu)
    {
        closingTimer = window.setTimeout(closeSubmenu,timeToClose);
    }
    else if(this.submenu == currentOpenSubmenu)
    {
        closingTimer = window.setTimeout(closeSubmenu,timeToClose);
    }
}
function openSubmenu()
{
    
    if(closingTimer != null)
    {
        window.clearTimeout(closingTimer);
    }
    if(currentOpenSubmenu != null)
    {
        if(currentOpenSubmenu.closingLinkInterval != null)
        {
            window.clearInterval(currentOpenSubmenu.closingLinkInterval);
        }
        currentOpenSubmenu.style.visibility = "visible";
        currentOpenSubmenu.sublinks = currentOpenSubmenu.getElementsByTagName("a");
        currentOpenSubmenu.NextLinkToOpen = 0;
        currentOpenSubmenu.openningLinkInterval = window.setInterval(openNextSubLink,10);
    }
}
function openNextSubLink()
{
    if(currentOpenSubmenu.NextLinkToOpen < currentOpenSubmenu.sublinks.length)
    {
        currentOpenSubmenu.sublinks[currentOpenSubmenu.NextLinkToOpen].style.visibility = "visible";
        currentOpenSubmenu.NextLinkToOpen = currentOpenSubmenu.NextLinkToOpen+1;
    }else
    {
        window.clearInterval(currentOpenSubmenu.openningLinkInterval);
    }
}
function closeSubmenu()
{
    if(closingTimer != null)
    {
        window.clearTimeout(closingTimer);
    }
    if(currentOpenSubmenu != null)
    {
        if(currentOpenSubmenu.Link.LinkImage != null && currentOpenSubmenu.Link.ActiveLinkImage != null)
        {
            currentOpenSubmenu.Link.LinkImage.src = currentOpenSubmenu.Link.DefaultLinkImage.src;
        }
        currentOpenSubmenu.sublinks = currentOpenSubmenu.getElementsByTagName("a");
        currentOpenSubmenu.NextLinkToClose = currentOpenSubmenu.sublinks.length - 1 ;
        currentOpenSubmenu.closingLinkInterval = window.setInterval(closeNextSubLink,1);
        currentOpenSubmenu.style.visibility = "hidden";
    }
}
function closeSubmenuNow()
{
    if(closingTimer != null)
    {
        window.clearTimeout(closingTimer);
    }
    if(currentOpenSubmenu != null)
    {
        if(currentOpenSubmenu.Link.LinkImage != null && currentOpenSubmenu.Link.ActiveLinkImage != null)
        {
            currentOpenSubmenu.Link.LinkImage.src = currentOpenSubmenu.Link.DefaultLinkImage.src;
        }
        currentOpenSubmenu.sublinks = currentOpenSubmenu.getElementsByTagName("a");
        window.clearInterval(currentOpenSubmenu.closingLinkInterval);
        window.clearInterval(currentOpenSubmenu.openningLinkInterval);
        for(var i=0;i<currentOpenSubmenu.sublinks.length;i++)
        {
            currentOpenSubmenu.sublinks[i].style.visibility = "hidden";
        }
        currentOpenSubmenu.style.visibility = "hidden";
    }
}
function closeNextSubLink()
{
    if(currentOpenSubmenu.NextLinkToClose >= 0)
    {
        currentOpenSubmenu.sublinks[currentOpenSubmenu.NextLinkToClose].style.visibility = "hidden";
        currentOpenSubmenu.NextLinkToClose = currentOpenSubmenu.NextLinkToClose-1;
    }else
    {
        window.clearInterval(currentOpenSubmenu.closingLinkInterval);
    }
}
