// $Id: menumanagement.js,v 1.4.2.4 2004/11/29 11:12:28 max Exp $

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

var mouseX = 0;
var mouseY = 0;

var menuOffsetX = 0;
var submenuOffsetX = 0;
var menuOffsetY = 2;
var SubmenuOffsetY = 29;
var menuVisibleDelay = 1000;
var predefinedDocumentWidth = 0;
var predefinedDeltaForIE5ForMac = 128;
var is_resize = true;
var ie_background_color = '#ff0000';
var menuImages = new Array();

var menuLayoutReversed = false;

var direction = 1;
var iniDocumentWidth = 0; 

if(fancy_left)
	menuOffsetX += fancy_left-20;
fancy_width -= (fancy_left+fancy_right);

if(predefinedDocumentWidth > 0 && is_resize) {
	window.onresize = function() {
		var leftOffset = menuOffsetX;
		iniDocumentWidth = getDocumentWidth();
		if(!iniDocumentWidth)
			iniDocumentWidth = self.outerWidth;
		leftOffset += parseInt((iniDocumentWidth-predefinedDocumentWidth)/2)+2;
		if(leftOffset < menuOffsetX)
			leftOffset = menuOffsetX;
	
		if(document.getElementById('toprootmenu')) {
			document.getElementById('toprootmenu').cssText = "position: absolute; "+
			( (menuLayoutReversed) ? "right: ":"left: ") + leftOffset + "; width: " + 
			( (isMSIE && !isOpera) ? "142" : "148") + ";";
			if(menuLayoutReversed)
				document.getElementById('toprootmenu').style.right = leftOffset;
			else
				document.getElementById('toprootmenu').style.left = '0px';//leftOffset;
		}
	}
}

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);
}

// Root menu layer Iinitialization
function InitRootMenu(isReversed) {
    var leftOffset = menuOffsetX;

	iniDocumentWidth = getDocumentWidth();
	if(!iniDocumentWidth)
		iniDocumentWidth = self.outerWidth;
	if (predefinedDocumentWidth != 0 && iniDocumentWidth > (predefinedDocumentWidth + leftOffset)) {
		leftOffset += parseInt((iniDocumentWidth-predefinedDocumentWidth)/2)+2;
	}

	if (isReversed) {
		leftOffset = "right: "+leftOffset+";";
        	menuLayoutReversed = true;
	} else {
		leftOffset = "left: "+leftOffset+";";
		menuLayoutReversed = false;
	}

    document.open();
    if ( isMSIE && !isOpera ) {
        document.write("<DIV id='toprootmenu' style='align: center; position: relative; " + leftOffset + "width: 100%;'>");
    } else {                                                                           
        document.write("<DIV id='toprootmenu' style='align: center; position: relative; " + leftOffset + "width: 100%;'>");
    }
    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) {
			if(e) {
    	        mouseX = e.pageX;
	            mouseY = e.pageY;
			}
            return true;
        }  
    }

    RootMenuObj = POPUP_Menu(rootMenuId);

    document.open();
    if ( isMSIE && !isOpera ) {
        document.write("<DIV style='position: absolute; width: "+fancy_width+"; z-index: -1;'>");
    } else {
        document.write("<DIV style='position: absolute; 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()) {
	    offsetY = 0;
        if (menuObj.level == 0)
        {
            offsetX = menuItem.getLeft() * (menuObj.level + 1);
                if ( isMSIE)
				    {
		            offsetY = menuItem.getHeight() * (menuObj.level + 1) + 1 + menuItem.getTop()/2;			
				    }
			    else if ( isOpera )
				    {
		            offsetY = menuItem.getHeight() * (menuObj.level + 1) + 1;
			        }
				else if ( isNC )
					{
		            offsetY = menuItem.getHeight() * (menuObj.level + 1) + 1;
					}

	    }
        else if(menuObj.level == 1)
        {
            offsetX = menuItem.getLeft() + menuItem.getWidth() * (menuObj.level);
            offsetY =  menuObj.layer.getHeight() + menuItem.getHeight() * (menuObj.level - 1) + 1;
        }
        else 
        {
            offsetY =  menuObj.layer.getHeight() + menuItem.getHeight() * (menuObj.level - 2) + 1;
        }
        if (!menuLayoutReversed)
        {
            if (menuObj.level == 0){
        	menuObj.submenu.layer.moveTo(menuObj.layer.getAbsoluteLeft() + offsetX, menuObj.layer.getAbsoluteTop() + menuItem.getTop() + menuOffsetY + SubmenuOffsetY);
	    }
	    else{
		menuObj.submenu.layer.moveTo(menuObj.layer.getAbsoluteLeft() + offsetX - 1, 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.style.backgroundImage = "url("+menuImages[Index].src+")";
}

function ShowMenyItem(Elm,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);
    }
  */
	Elm.className = (Status == 'On'?"CatMenuItemOn":"CatMenuItemOff");
	//if (isMSIE) {
	//		Elm.style.cssText = "background-color: "+(Status == 'On'?ie_background_color:"transparent")+";";
		//Elm.bgColor = (Status == 'On'?ie_background_color:"00EEF0")+";";
	//}
}
