function CanHaveClass__CssFriendlyAdapters(element)
{
    return ((element != null) && (element.className != null));
}

function HasAnyClass__CssFriendlyAdapters(element)
{
    return (CanHaveClass__CssFriendlyAdapters(element) && (element.className.length > 0));
}

function HasClass__CssFriendlyAdapters(element, specificClass)
{
    return (HasAnyClass__CssFriendlyAdapters(element) && (element.className.indexOf(specificClass) > -1));
}

function AddClass__CssFriendlyAdapters(element, classToAdd)
{
    if (HasAnyClass__CssFriendlyAdapters(element))
    {
        if (!HasClass__CssFriendlyAdapters(element, classToAdd))
        {
            element.className = element.className + " " + classToAdd;
        }
    }
    else if (CanHaveClass__CssFriendlyAdapters(element))
    {
        element.className = classToAdd;
    }
}

function AddClassUpward__CssFriendlyAdapters(startElement, stopParentClass, classToAdd)
{
    var elementOrParent = startElement;
    while ((elementOrParent != null) && (!HasClass__CssFriendlyAdapters(elementOrParent, topmostClass)))
    {
        AddClass__CssFriendlyAdapters(elementOrParent, classToAdd);
        elementOrParent = elementOrParent.parentNode;
    }    
}

function SwapClass__CssFriendlyAdapters(element, oldClass, newClass)
{
    if (HasAnyClass__CssFriendlyAdapters(element))
    {
        element.className = element.className.replace(new RegExp(oldClass, "gi"), newClass);
    }
}

function SwapOrAddClass__CssFriendlyAdapters(element, oldClass, newClass)
{
    if (HasClass__CssFriendlyAdapters(element, oldClass))
    {
        SwapClass__CssFriendlyAdapters(element, oldClass, newClass);
    }
    else
    {
        AddClass__CssFriendlyAdapters(element, newClass);
    }
}

function RemoveClass__CssFriendlyAdapters(element, classToRemove)
{
    SwapClass__CssFriendlyAdapters(element, classToRemove, "");
}

function RemoveClassUpward__CssFriendlyAdapters(startElement, stopParentClass, classToRemove)
{
    var elementOrParent = startElement;
    while ((elementOrParent != null) && (!HasClass__CssFriendlyAdapters(elementOrParent, topmostClass)))
    {
        RemoveClass__CssFriendlyAdapters(elementOrParent, classToRemove);
        elementOrParent = elementOrParent.parentNode;
    }    
}

var hoverClass = "Menu-Hover";
var topmostClass = "Menu";

function Hover__Menu(element)
{
//    AddClassUpward__CssFriendlyAdapters(element.firstChild /* gets the inner SPAN or A */, topmostClass, hoverClass);
    AddClass__CssFriendlyAdapters(element, hoverClass);
}

function Unhover__Menu(element)
{
//    RemoveClassUpward__CssFriendlyAdapters(element.firstChild /* gets the inner SPAN or A */, topmostClass, hoverClass);
    RemoveClass__CssFriendlyAdapters(element, hoverClass);
}

function SetHover__Menu()
{
    var menus = document.getElementsByTagName("ul");
    for (var i=0; i<menus.length; i++)
    {
        if(menus[i].className == topmostClass)
        {
            var items = menus[i].getElementsByTagName("li");
            for (var k=0; k<items.length; k++)
            {
                items[k].onmouseover = function() { Hover__Menu(this); }
                items[k].onmouseout = function() { Unhover__Menu(this); }
            }
        }
    }
}

function Popup(wPage,wID,wWidth,wHeight,wScrollbars,wLocation,wToolbar,wStatus,wResizable) {
	if (!wID) { wID = "Popup" }
	if (!wWidth) { wWidth = 400 }
	if (!wHeight) { wHeight = 260 }
	if (!wScrollbars) { wScrollbars = "yes" }
	if (!wLocation) { wLocation = "no" }
	if (!wToolbar) { wToolbar = "no" }
	if (!wStatus) { wStatus = "no" }
	if (!wResizable) { wResizable = "yes" }
	popupWindow = window.open(wPage,wID,"width=" + wWidth + ",height=" + wHeight + ",scrollbars=" + wScrollbars + ",location=" + wLocation + ",toolbar=" + wToolbar + ",status=" + wStatus + ",resizable=" + wResizable)
	if (window.focus) { popupWindow.focus() }
}

window.onload = SetHover__Menu;
