/* Vertical Menu functions */

var hoverClass = "AspNet-Menu-Hover";
var topmostClass = "AspNet-Menu";

function CanHaveClass(element)
{
    return ((element != null) && (element.className != null));
}

function HasAnyClass(element)
{
    return (CanHaveClass(element) && (element.className.length > 0));
}

function HasClass(element, specificClass)
{
    return (HasAnyClass(element) && (element.className.indexOf(specificClass) > -1));
}

function AddClass(element, classToAdd)
{
    if (HasAnyClass(element))
    {
        if (!HasClass(element, classToAdd))
        {
            element.className = element.className + " " + classToAdd;
        }
    }
    else if (CanHaveClass(element))
    {
        element.className = classToAdd;
    }
}

function AddClassUpward(startElement, stopParentClass, classToAdd)
{
    
    var elementOrParent = startElement;
  
    while (elementOrParent != null)
    {
        if (elementOrParent.tagName == "LI") 
        {  
  
            AddClass(elementOrParent, classToAdd);
         }
        elementOrParent = elementOrParent.parentNode;
    }    
    }   

function SwapClass(element, oldClass, newClass)
{
    if (HasAnyClass(element))
    {
        element.className = element.className.replace(new RegExp(oldClass, "gi"), newClass);
    }
}

function RemoveClass(element, classToRemove)
{
    SwapClass(element, classToRemove, "");
}

function RemoveClassUpward(startElement, stopParentClass, classToRemove)
{
    var elementOrParent = startElement;
    while (elementOrParent != null)
    {  
        if (elementOrParent.tagName == 'LI')
        { 
        RemoveClass(elementOrParent, classToRemove);
        }
        elementOrParent = elementOrParent.parentNode;
    }    
}

function Hover__AspNetMenu(element)
{
    AddClass(element,hoverClass);
    AddClassUpward(element.parentNode,topmostClass,hoverClass);
}

function Unhover__AspNetMenu(element)
{
    RemoveClass(element, hoverClass);
    RemoveClassUpward(element.parentNode,topmostClass,hoverClass);
}

function SetHover__AspNetMenu()
{
    var menus = document.getElementsByTagName("ul");
    for (var i=0; i<menus.length; i++)
    {
        if(menus[i].className == "AspNet-Menu")
        {
            var items = menus[i].getElementsByTagName("li");
            for (var k=0; k<items.length; k++)
            {
                var aitems = items[k].getElementsByTagName("a"); 
                var a = aitems[0];
                items[k].onmouseover = function() { Hover__AspNetMenu(this); }
                items[k].onmouseout = function() { Unhover__AspNetMenu(this); }
                a.onfocus = function() { Hover__AspNetMenu(this.parentNode); }
                a.onblur = function() {Unhover__AspNetMenu(this.parentNode);}
            }
        }
    }
}

var tempMenuOnLoad=window.onload;
window.onload = SetHover__AspNetMenu;
if (tempMenuOnLoad!=null) tempMenuOnLoad();

/* Vertical Menu functions end */
