// $Id: menumanagement.js,v 1.1.2.3 2004/05/13 13:09:50 max Exp $

var tm = null;
var RootMenuObj = null;
var CurrentMenuObj = null;

var mouseX = 0;
var mouseY = 0;

var menuOffsetX = 7;
var submenuOffsetX = 3;
var menuOffsetY = 4;
var menuVisibleDelay = 1000;
var predefinedDocumentWidth = 0;
var predefinedDeltaForIE5ForMac = 128;

var menuImages = new Array();

var menuLayoutReversed = false;

function cPOPUPMENU(layerId,parentObj)
{
    this.layer = DOC_Layer(layerId);
    this.id = layerId;
    this.submenu = false;
    if (parentObj)
    {
        this.level = parentObj.level + 1;
        this.parent = parentObj;
    }
    else
    {
        this.level = 0;
        this.parent = false;
    }
}

POPUPMENU = cPOPUPMENU.prototype;

function POPUP_Menu(layerId,parentObj)
{
    return new cPOPUPMENU(layerId,parentObj);
}

function InitRootMenu(isReversed)
{
    var leftOffset = "";

    if (!isReversed)
    {
        if (predefinedDocumentWidth != 0)
        {
    		var MainAreaOffsetX = parseInt((getDocumentWidth()-predefinedDocumentWidth)/2) + menuOffsetX;
        	leftOffset = "left: "+(MainAreaOffsetX+3)+"; ";
        }
        else
        {
        	leftOffset = "left: "+(menuOffsetX+1)+"; ";
        }
    }
    else
    {
        menuLayoutReversed = true;
    }

    document.open();
    if ( isMSIE && !isOpera )
    {
        document.write("<DIV id='catrootmenu' style='position: absolute; " + leftOffset + "width: 161;'>");
    }
    else
    {
        document.write("<DIV id='catrootmenu' style='position: absolute; " + leftOffset + "width: 167;'>");
    }
    document.close();
}

var documentWidth = 0;

function DocumentSizeChecker()
{
	if (documentWidth != getDocumentWidth())
	{
    	var MainAreaOffsetX = parseInt((getDocumentWidth()-predefinedDocumentWidth)/2);

        RootMenuObj.layer.moveTo(MainAreaOffsetX + menuOffsetX, RootMenuObj.layer.getAbsoluteTop());

        setTimeout ( "DocumentSizeChecker()", 100 );
	}
}

function RootMenuChecker()
{
    if (RootMenuObj.layer.getAbsoluteLeft() == 0)
    {
        setTimeout ( "RootMenuChecker()", 100 );
    }
    else
    {
    	if (menuLayoutReversed)
    	{
            var additionalOffsetX = 0;
            if ( isOpera )
            {
                additionalOffsetX = -6;
            }
            RootMenuObj.layer.moveTo(RootMenuObj.layer.getAbsoluteLeft() - 5 + additionalOffsetX, RootMenuObj.layer.getAbsoluteTop());
        }

        if (predefinedDocumentWidth != 0)
        {
        	DocumentSizeChecker();
        }
    }
}

function InitPopUp(rootMenuId)
{
    if ( ! isLayers )
    {
        return;
    }

    if ( isNC4 ) 
    {
        document.captureEvents(Event.MOUSEMOVE);
    }

    if ( isMSIE || isOpera7 )
    {
        document.onmousemove=function()
        {
            mouseX = event.clientX+document.body.scrollLeft;
            mouseY = event.clientY+document.body.scrollTop;
            return true;
        }
    }
    else if ( isOpera )
    {
        document.onmousemove=function()
        {
            mouseX = event.clientX;
            mouseY = event.clientY;
            return true;
        }
    }
    else if ( isNC )
    {
        document.onmousemove=function(e)
        {
            mouseX = e.pageX;
            mouseY = e.pageY;
            return true;
        }  
    }

    RootMenuObj = POPUP_Menu(rootMenuId);

    document.open();
    if ( isMSIE && !isOpera )
    {
        document.write("<DIV style='position: relative; width: 135; z-index: -1;'>");
    }
    else
    {
        document.write("<DIV style='position: relative; z-index: -1;'>");
    }
    document.close();

//    setTimeout ( "RootMenuChecker()", 100 );
}

function showMenu(menuId,itemId,submenuId)
{
    if (!document.getElementById(menuId))
    {
        return;
    }
    if (!document.getElementById(itemId))
    {
        return;
    }
    if (!document.getElementById(submenuId))
    {
        return;
    }

    cancelCloseMenu();
    hideMenu(menuId,submenuId);

    var menuFound = false;
    var menuObj = RootMenuObj;
    while(menuObj)
    {
        if (menuObj.id == menuId)
        {
            menuFound = true;
            break;
        }

        menuObj = menuObj.submenu;
    }
    
    if (!menuFound)
    {
        menuObj = RootMenuObj;
    }

    menuObj.submenu = POPUP_Menu(submenuId, menuObj);

    var menuItem = DOC_Layer(itemId);

    if (!menuObj.submenu.layer.isVisible())
    {
        if (menuObj.level == 0)
        {
            offsetX = menuOffsetX;
        }
        else
        {
            offsetX = submenuOffsetX * (menuObj.level + 1);
        }
        if (!menuLayoutReversed)
        {
            menuObj.submenu.layer.moveTo(menuObj.layer.getAbsoluteLeft() + menuObj.layer.getWidth() - offsetX, menuObj.layer.getAbsoluteTop() + menuItem.getTop() + menuOffsetY);
        }
        else
        {
            menuObj.submenu.layer.moveTo(menuObj.layer.getAbsoluteLeft() - menuObj.submenu.layer.getWidth() + offsetX, menuObj.layer.getAbsoluteTop() + menuItem.getTop() + menuOffsetY);
        }
        menuObj.submenu.layer.show();
        CurrentMenuObj = menuObj.submenu;
    }
    else
    {
        hideMenu(menuObj.id,menuObj.submenu.id);
    }
}

function initiateHideMenu()
{
    tm = setTimeout("hideMenu()", menuVisibleDelay);
}

function cancelCloseMenu(exeptMenuId)
{
    if (self.tm)
    {
        clearTimeout(tm);
    }

    if (exeptMenuId)
    {
        hideMenu(exeptMenuId,exeptMenuId);
    }
}

function hideMenu(exeptMenuId,exeptSubMenuId)
{
    var menuObj = CurrentMenuObj;
    while(menuObj)
    {
        if (menuObj.parent)
        {
            if (exeptMenuId && exeptSubMenuId)
            {
                if (menuObj.id == exeptMenuId || menuObj.id == exeptSubMenuId)
                {
                    return;
                }
                else
                {
                    menuObj.layer.hide();
                }
            }
            else
            {
                menuObj.layer.hide();
            }
        }
        menuObj = menuObj.parent;
        if (menuObj.parent)
        {
            menuObj.submenu = false;
        }
    }
}

function InitMenuImages(ImagesPath)
{
    menuImages[0] = new Image; menuImages[0].src = ImagesPath + "/button_l_off.gif";
    menuImages[1] = new Image; menuImages[1].src = ImagesPath + "/button_l_on.gif";
    menuImages[2] = new Image; menuImages[2].src = ImagesPath + "/button_m_off.gif";
    menuImages[3] = new Image; menuImages[3].src = ImagesPath + "/button_m_on.gif";
    menuImages[4] = new Image; menuImages[4].src = ImagesPath + "/button_r_off.gif";
    menuImages[5] = new Image; menuImages[5].src = ImagesPath + "/button_r_on.gif";
}

function ShowMenyItemImage(Elm,Status,Index)
{
    if (Status == 'On')
    {
        Index ++;
    }
    Elm.src = menuImages[Index].src;
}

function ShowMenyItemBackground(Elm,Status,Index)
{
    if (Status == 'On')
    {
        Index ++;
    }
    Elm.background = menuImages[Index].src;
}

function ShowMenyItem(Elm,Status)
{
    Elm.className='CatMenuItem'+Status;
    var button_l = document.getElementById(Elm.id+'_button_l');
    var button_m = document.getElementById(Elm.id+'_button_m');
    var button_r = document.getElementById(Elm.id+'_button_r');
    if (button_l)
    {
        ShowMenyItemImage(button_l, Status, 0);
    }
    if (button_m)
    {
        ShowMenyItemBackground(button_m, Status, 2);
    }
    if (button_l)
    {
        ShowMenyItemImage(button_r, Status, 4);
    }
}