var menuLevel=0;
//------
MenuManager.prototype.MakeMenu = function(_ar,_isChild,_parMenu,_parItem)
{with(this){
	if (GetMenu(_ar[0])) return;	// defined
	menuLevel++;
	var m = null;
    var elStr = '';
    var itemCnt = 0;
    var column = 0;
    var curRow = 0;

    var w = mm.style.get('menuWidth_' + _ar[1]);
    var al = mm.style.get('menuItemsAlign_' + _ar[1]);

	elStr = ConstructMenuEl(_ar[0],w,_isChild ? _parMenu : null, al, _ar[1]);

	for (var i=4; i<_ar.length; i+=4)
	{
		if (!_ar[i]) break;
        itemCnt++;
        column++;
    	elStr += ConstructItemEl(_ar[0]+'_item_'+ itemCnt, w, column, _ar[3], curRow, _ar[2], _ar[0], _ar[i+3], _ar[i], _ar[i+2]);
        if ( _ar[3] == column ){
            column = 0;
            curRow++;
        }
	}

	m = MakeMenuEl(_ar[0],w,_isChild ? _parMenu : null, elStr,_ar[3]);
	m.zIndex = zIndex;
	m.elName = _ar[0];
	m.itemCount = 0;
	m.menuWidth = w;
    m.kind = _ar[1];
    m.rows = _ar[2];
    m.cols = _ar[3];
	m.items = new Array();
	m.sepStr = MenuSeparatorStr(m);
    column = 0;
    curRow = 1;
	for (var i=4; i<_ar.length; i+=4)
	{
		var item = 0;
		m.itemCount++;
		if (!_ar[i]) break;
        column++;
		item = MakeItemEl(m.elName+'_item_'+m.itemCount,m,column,curRow);
        if ( _ar[3] == column ){
            column = 0;
            curRow++;
        }
		item.menu = m;
		item.caption = _ar[i];
		item.url = _ar[i+1];
		item.subMenu = _ar[i+2];
        item.kind = _ar[i+3];

		ItemSetup(item);
		m.items[m.items.length] = item;

		if (item.subMenu)
			MakeMenu(FindMenu(item.subMenu),true,m,item);
	}
    if ( !OP )
    	MenuSetup(m);
	this.menus[this.menus.length] = m;
	menuLevel--;
	return m;
}}

//------
function MenuItemClick()
{
	if (!this.url || this.url=='') return;
	if (this.url.indexOf("javascript:")!=-1) eval(this.url)
	else mm.menuLoc.location.href = this.url;
}

//------
function PopUp(bid,id,a,src,offsetX,offsetY)
{
	if (!menuLoaded || !mm || !mm.GetMenu(id)) return;
	var e = (!mm.menuLoc.event) ? arguments.callee.caller.arguments[0] : mm.menuLoc.event;
	mm.SetAlignment(a);
	MenuPopUp(bid,mm.GetMenu(id),e,src,offsetX,offsetY);
}

//------
function PopDown(id)
{
	if (!menuLoaded || !mm || !mm.GetMenu(id)) return;
	mm.RunOut();
}

//------
function MenuDummy() {}

//------
function MenuSeparatorStr(m)
{
	var img = mm.style.get('hSeparatorImg');
	var siz = mm.style.get('hSeparatorSize');
    var wh = m.menuWidth;
	var s = '<img src="' + img + '" width="' + wh + '" height="' + siz + '" border="0">';

	return s;
}

//------
function MenuSetItem(item)
{
	if (!item) return;
	if (this.currentItem && (item != mm.itemOn)) this.currentItem.Hilite(0);
	var sm = 0;
	if (item.subMenu) sm = mm.GetMenu(item.subMenu);
	if (this.subMenu && this.subMenu != sm)
	{
		MenuShow(this.subMenu,0);
		this.subMenu = null;
	}
	this.currentItem = item;
  	item.Hilite(1);
    mm.itemOn = item;
	if (sm && !this.subMenu)
	{
		this.subMenu = mm.GetMenu(item.subMenu);
		this.subMenu.ShowAsChildOf(this,item);
	}
}

function MenuShowAsChildOf(_m,_i)
{
	var pos = MenuGetSubMenuPos(_m,_i);
	this.parent = _m;
	MenuShow(this,1,pos.x,pos.y);
}

//------
function MenuShow(m,flg,x,y)
{
	if (!flg)
	{
		if (m.subMenu) MenuShow(m.subMenu,0);
		m.subMenu = 0;
		m.currentItem = 0;
		m.parent = 0;
		m.Show(0);
        MenuPopDown(m);
		return;
	}
	for (var i=0; i<m.items.length; i++) m.items[i].Hilite(0);
	m.MoveTo(x,y);
	m.KeepInside();
	m.Show(1);
	m.isVisible = true;
}
//------
function MenuOver()
{
//dbgln('MenuOver');
	mm.SetCurrent(this);
}
//------
function MenuOut()
{
	mm.RunOut();
}
