var menuBlocks=new Array();
var menuBlocksParents=new Array();
var menuBlocksVisible=new Array();

var menuBlockHideDelay=500;
var menuTimeout;

menuInit();

function menuInit()
{
var re=/ig_menu_item_/;
var elems=document.body.getElementsByTagName("a");
var elem;
var elemID;
var elemBlock;
var elemBlockID;
var elemULBlock;
var elemULBlockID;
var elemLIBlock;
	for(var i=0; i<elems.length; i++)
	{
		if(elems[i].id)
		{
		elemID=elems[i].id;
		elem=$(elemID);
			if(elemID.search(re)!=-1)
			{
			elem.onmouseover=menuItemMouseOver;
			elem.onmouseout=menuItemMouseOut;
			elemLIBlock=elem.parentNode;
			elemULBlock=elem.parentNode.parentNode;
			elemULBlockID=elemULBlock.id;
			elemBlockID=elemID.replace("_item", "_block");
				if($(elemBlockID))
				{
				menuBlocks[menuBlocks.length]=elemBlockID;
				menuBlocksParents[menuBlocksParents.length]=elemULBlockID;
				menuBlocksVisible[menuBlocksVisible.length]=0;
				elemBlock=$(elemBlockID);
					if(elemULBlock.className!="ig_menu_1_level" || controllerGetElementComputedStyle(elemLIBlock, "clear")=="both")
					{
					elemBlock.style.left=elemULBlock.offsetLeft+elemULBlock.offsetWidth+'px';
					elemBlock.style.top=elemULBlock.offsetTop+elemLIBlock.offsetTop+'px';
					}
					else
					{
					elemBlock.style.left=elemULBlock.offsetLeft+elemLIBlock.offsetLeft+'px';
					elemBlock.style.top=elemULBlock.offsetTop+elemLIBlock.offsetTop+elemLIBlock.offsetHeight+'px';
					}
				elem.href='javascript:void(0);';
				}
			}
		}
	}
}


function menuFindKeyInArray(menuArr, elemULBlockID)
{
	for(var key=0; key<menuArr.length; key++)
	{
	if(menuArr[key]==elemULBlockID) return key;
	}
return -1;
}


function menuItemMouseOver(event)
{
event = event || window.event
var elem = event.target || event.srcElement;
var key;

menuHideAll();

var elemULBlock=elem.parentNode.parentNode;
var elemULBlockID=elemULBlock.id;

key=menuFindKeyInArray(menuBlocks, elemULBlockID);
menuBlocksVisible[key]=1;
menuShow(elemULBlockID);

// display parent blocks
displayParentBlocks(elemULBlockID, 1);

// display child block
var elemBlockID=elem.id.replace("_item", "_block");
	if($(elemBlockID))
	{
	key=menuFindKeyInArray(menuBlocks, elemBlockID);
	menuBlocksVisible[key]=1;
	menuShow(elemBlockID);
	}
}


function displayParentBlocks(elemULBlockID, vis)
{
var key;
var elemULBlockParentID;
var elemABlockID;
key=menuFindKeyInArray(menuBlocks, elemULBlockID);
	if(key>-1)
	{
		if(menuBlocksParents[key])
		{
		elemULBlockParentID=menuBlocksParents[key];
		key=menuFindKeyInArray(menuBlocks, elemULBlockParentID);
		elemABlockID=elemULBlockID.replace("_block", "_item");
			if(vis)
			{
				if($(elemABlockID))
				{
				$(elemABlockID).className="active";
				}
			menuBlocksVisible[key]=1;
			menuShow(elemULBlockParentID);
			displayParentBlocks(elemULBlockParentID, vis);
			}
			else
			{
				if($(elemABlockID))
				{
				$(elemABlockID).className="";
				}
			menuBlocksVisible[key]=0;
			displayParentBlocks(elemULBlockParentID, vis);
			}
		}
	}
}


function menuItemMouseOut(event)
{
event = event || window.event
var elem = event.target || event.srcElement;
var key;

var elemULBlock=elem.parentNode.parentNode;
var elemULBlockID=elemULBlock.id;

// display parent blocks
displayParentBlocks(elemULBlockID, 0);

	// display child blocks
	for(var i=0; i<menuBlocksParents.length; i++)
	{
		if(menuBlocksParents[i]==elemULBlockID)
		{
		menuBlocksVisible[i]=0;
		}
	}

	if(elemULBlockID!="ig_menu_block_1")
	{
	key=menuFindKeyInArray(menuBlocks, elemULBlockID);
	menuBlocksVisible[key]=0;
	}
menuTimeout=setTimeout(menuHideDelay, menuBlockHideDelay);
}


function menuHideDelay()
{
	for(i=0; i<menuBlocksVisible.length; i++)
	{
		if(!menuBlocksVisible[i])
		{
		menuHide(menuBlocks[i]);
		}
	}
clearTimeout(menuTimeout);
}


function menuHide(elemBlockID)
{
$(elemBlockID).style.visibility='hidden';
}


function menuHideAll()
{
	for(i=0; i<menuBlocks.length; i++)
	{
	menuHide(menuBlocks[i]);
	menuBlocksVisible[i]=0;
	}
}


function menuShow(elemBlockID)
{
$(elemBlockID).style.visibility='visible';
}
