var MenuHideDelay = 500;
var MenuEntryCount = 3;
var timerID = null;
var MenuIsIE = window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && !window.opera;
var MenuSelectedItems = new Array(MenuEntryCount);
var MenuItemSyles = new Array();

MenuItemSyles[0] = MenuItemStyle('menu', 'menu');
MenuItemSyles[1] = MenuItemStyle('menu', 'menu', 'menu', 'menu');
MenuItemSyles[2] = MenuItemStyle('menu', 'menu');

function MenuItemStyle(unhover, hover, unhoverHasChild, hoverHasChild) {
    if (unhoverHasChild == null) unhoverHasChild = unhover;
    if (hoverHasChild == null) hoverHasChild = hover;

    var style = new Object();
    style.Hover = hover;
    style.Unhover = unhover;
    style.HoverHasChild = hoverHasChild;
    style.UnhoverHasChild = unhoverHasChild;
    return style;
}

function MenuSelectedItem(item, child) {
    var selectedItem = new Object();
    selectedItem.Parent = item;
    selectedItem.VisibleMenu = child;
    return selectedItem;
}

function Menu_Show(parent, id, vertical, level, X_add, Y_add) {
    if (vertical == null) vertical = true;
    if (X_add == null) X_add = 0;
    if (Y_add == null) Y_add = 0;
    if (level == null) level = 0;
    if (level == 0) {
        test = TestBrowser();
        if (!test.IE) {
            X_add -= 2;
            Y_add += 0;
        }
    }

    var sub_elem = null;
    if (id != null) {
        sub_elem = document.getElementById(id);

        if (MenuSelectedItems[level] != null &&
            MenuSelectedItems[level].VisibleMenu == sub_elem) {
            MenuHideItem(level + 1);
        }
    }
    if (MenuSelectedItems[level] != null &&
            MenuSelectedItems[level].VisibleMenu != null &&
            MenuSelectedItems[level].VisibleMenu != sub_elem) {
        MenuHideItem(level);
    }
    if (MenuSelectedItems[level] != null &&
            MenuSelectedItems[level].Parent != null &&
            MenuSelectedItems[level].Parent != parent) {
        MenuHideItem(level);
    }
    MenuSelectedItems[level] = MenuSelectedItem(parent, sub_elem);


    if (sub_elem != null && sub_elem.tagName != 'DIV') {
        parent.className = MenuItemSyles[level].HoverHasChild;
    }
    else if (parent.className == MenuItemSyles[level].HoverHasChild) {
        parent.className = MenuItemSyles[level].Hover;
    }


    if (sub_elem == null) return;

    sub_elem.style.visibility = "visible"
    sub_elem.style.position = "absolute";

    var pos = MenuGetObjectPosition(parent);
    var HeightParent = pos.Height;
    var WidthParent = pos.Width;
    if (!vertical) HeightParent = 0;
    if (vertical) WidthParent = 0;
    sub_elem.style.left = (pos.X + WidthParent - 22 + X_add) + 'px';
    sub_elem.style.top = (pos.Y + HeightParent + 12 + Y_add) + 'px';
    if (vertical) {
        //sub_elem.style.width = pos.Width + 'px';
        //sub_elem.style.height = pos.Height + 'px';
    }
    sub_elem.style.display = "block";
    sub_elem.style.zIndex = 1001;
    if (MenuIsIE) {
        MenuDisplayIFrame(sub_elem);
    }


}

function MenuHideItem(level) {
    for (var i = level; i < MenuSelectedItems.length; i++) {
        if (MenuSelectedItems[i] != null) {
            if (MenuSelectedItems[i].VisibleMenu != null) {
                MenuSelectedItems[i].VisibleMenu.style.display = "none";
                MenuSelectedItems[i].VisibleMenu.style.visibility = "hidden"
                var frame = document.getElementById("MenuIFrameHolder_" + MenuSelectedItems[i].VisibleMenu.id);
                if (frame != null) {
                    frame.style.display = "none";
                }

                MenuSelectedItems[i].Parent.className = MenuItemSyles[i].UnhoverHasChild;
            }
            else {
                MenuSelectedItems[i].Parent.className = MenuItemSyles[i].Unhover;
            }

            MenuSelectedItems[i] = null;
        }
    }
}

function Func() {
    alert('1');
}

function MenuStaticHover(item, id, vertical, X_add, Y_add) {
    if (vertical == null) vertical = true;
    if (X_add == null) X_add = 0;
    if (Y_add == null) Y_add = 0;
    MenuClearTimer();
    Menu_Show(item, id, vertical, 0, X_add, Y_add);
}
function MenuClearTimer() {
    if (timerID != null) {
        window.clearTimeout(timerID);
        timerID = null;
    }
}

function MenuStatic_Unhover(root) {
    timerID = window.setTimeout("MenuHideItem(" + root + ")", MenuHideDelay);
}


function DynamicMenuItemHover(item, id, level) {
    MenuClearTimer();
    test = TestBrowser();
    if (test.Firefox == true || test.Mozilla == true) {
        Menu_Show(item, id, true, level, 45, 0);
    }
    else {
        Menu_Show(item, id, true, level, 45, 0);
    }

}


function MenuDisplayIFrame(item) {

    var childFrameId = "MenuIFrameHolder_" + item.id;
    var childFrame = document.getElementById(childFrameId);
    var parent = item.offsetParent;
    if (!childFrame) {
        childFrame = document.createElement("iframe");
        childFrame.id = childFrameId;
        childFrame.src = "about:blank";
        childFrame.style.position = "absolute";
        childFrame.style.display = 'none';
        childFrame.scrolling = "no";
        childFrame.frameBorder = "0";
        document.forms[0].appendChild(childFrame);
    }
    var menuPosition = MenuGetObjectPosition(item);
    var parentPos = MenuGetObjectPosition(parent);
    childFrame.style.left = (menuPosition.X - parentPos.X) + 'px';
    childFrame.style.top = (menuPosition.Y - parentPos.Y) + 'px';

    childFrame.style.width = menuPosition.Width + 'px';
    childFrame.style.height = menuPosition.Height + 'px';
    childFrame.style.display = 'block';
    if (item.style.zIndex != null && !isNaN(item.style.zIndex) && item.style.zIndex > 0) {
        childFrame.style.zIndex = item.style.zIndex - 1;
    }
    else {
        item.style.zIndex = 1001;
        childFrame.style.zIndex = 1000;
    }
}

function MenuGetObjectPosition(item) {
    var position = new Object();

    position.X = 0;
    position.Y = 0;
    position.Width = 0;
    position.Height = 0;

    if (item.offsetParent != null) {
        position.X = item.offsetLeft;
        position.Y = item.offsetTop;

        var parentItem = item.offsetParent;
        while (parentItem != null) {
            position.X += parentItem.offsetLeft;
            position.Y += parentItem.offsetTop;

            var tagName = parentItem.tagName.toLowerCase();
            if (tagName != "body" && tagName != "html" &&
                parentItem.clientTop != null && parentItem.clientLeft != null) {
                position.X += parentItem.clientLeft;
                position.Y += parentItem.clientTop;
            }
            parentItem = parentItem.offsetParent;
        }
    }
    else if (item.left != null && item.top != null) {
        position.X = item.left;
        position.Y = item.top;
    }
    else {
        if (item.x != null) {
            position.X = item.x;
        }
        if (item.y != null) {
            position.Y = item.y;
        }
    }
    if (item.offsetWidth && item.offsetHeight) {
        position.Width = item.offsetWidth;
        position.Height = item.offsetHeight;
    }
    else if (item.style && item.style.pixelWidth && item.style.pixelHeight) {
        position.Width = item.style.pixelWidth;
        position.Height = item.style.pixelHeight;
    }

    return position;
}
