var pLastItemID = null;
var pLastItemUp = null;
var pLastItemDown = null;

var pActiveItemID = null;
var pActiveItemUp = null;
var pActiveItemDown = null;

var szPageCoreName = null;
var szScriptCoreName = null;

var bSaveToHistory = true;
var aNavigationHistory = new Array();
var nCurrentHistory = -1;
var nMaxHistory = 0;

var szMainTitle = document.title;

function PopMenuItem()
{
	if (null !== pLastItemID)
	{
		hideItem('id_submenu');
		if (pLastItemID !== pActiveItemID)
			SetItemImage(pLastItemID, pLastItemUp);
		pLastItemID = null;
		pLastItemUp = null;
		pLastItemDown = null;
	}
	if ((null !== pActiveItemID) &&
		(pActiveItemDown !== GetItemImage(pActiveItemID)))
		SetItemImage(pActiveItemID, pActiveItemDown);
}

function PushMenuItem(itemCoreName)
{
	PopMenuItem();
	OnMenuItemOut(itemCoreName);
	if (null !== (pLastItemID = ('id_' + itemCoreName)))
	{
		if (null !== pActiveItemID)
			SetItemImage(pActiveItemID, pActiveItemUp);

		pLastItemUp = GetItemImage(pLastItemID);
		SetItemImage(pLastItemID, 'skin/' + itemCoreName + '_down.png');
		pLastItemDown = GetItemImage(pLastItemID);
		return true;
	}
	return false;
}

function PopActiveItem()
{
	if (null !== pActiveItemID)
	{
		SetItemImage(pActiveItemID, pActiveItemUp);
		pActiveItemID = null;
		pActiveItemUp = null;
		pActiveItemDown = null;
	}
}

function PushActiveItem()
{
	if (null !== pActiveItemID) PopActiveItem();
	if (null !== pLastItemID)
	{
		pActiveItemID = pLastItemID;
		pActiveItemUp = pLastItemUp;
		pActiveItemDown = pLastItemDown;
		if (pActiveItemDown !== GetItemImage(pActiveItemID))
			SetItemImage(pActiveItemID, pActiveItemDown);
	}
}

function OnMenuItemOver(itemCoreName)
{
	var pThisItemID = 'id_' + itemCoreName;
	if ((pThisItemID !== pActiveItemID) && (pThisItemID !== pLastItemID))
	{
		SetItemImage(pThisItemID, 'skin/' + itemCoreName + '_over.png');
		return true;
	}
	return false;
}

function OnMenuItemOut(itemCoreName)
{
	var pThisItemID = 'id_' + itemCoreName;
	if ((pThisItemID !== pActiveItemID) && (pThisItemID !== pLastItemID))
	{
		SetItemImage(pThisItemID, 'skin/' + itemCoreName + '.png');
		return true;
	}
	return false;
}

function OnLoadPage()
{
	if (null === szPageCoreName) return;
	LoadContent('id_page_content', 'content/' + szPageCoreName + '.html', false);
	changeVisibility('id_page_content', 'id_page_loading');
	szPageCoreName = null;
}

function OnLoadScript()
{
	if (null === szScriptCoreName) return;
	LoadContent('id_page_content', 'scripts/' + szScriptCoreName + '.php', false);
	changeVisibility('id_page_content', 'id_page_loading');
	szScriptCoreName = null;
}

function OpenPage(pageCoreName, itemActivate)
{
	CloseBubble();

	if (bSaveToHistory)
	{
		/*var szItemActivate = null;
		if (false === itemActivate) szItemActivate = 'false';
		else if (true === itemActivate) szItemActivate = 'true';
		else if (null === itemActivate) szItemActivate = 'null';
		else szItemActivate = '\'' + itemActivate + '\'';*/
		aNavigationHistory[++nCurrentHistory] =
			'OpenPage(\'' + pageCoreName + '\', null)';
		nMaxHistory = nCurrentHistory;
	}

	if (null !== szPageCoreName) return;

	if (null === itemActivate) PopActiveItem();
	else if (false !== itemActivate)
	{
		if (true !== itemActivate) PushMenuItem(itemActivate);
		PushActiveItem(); PopMenuItem();
	}

	changeVisibility('id_page_loading', 'id_page_content');
	setTimeout('OnLoadPage()', 20);
	szPageCoreName = pageCoreName;

	if (undefined == a_page_title[pageCoreName])
		document.title = szMainTitle + ' – ' + pageCoreName;
	else
		document.title = szMainTitle + ' – ' + a_page_title[pageCoreName];

	SetDirectLink('page=' + pageCoreName);
}

function OpenScript(scriptCoreName, itemActivate)
{
	CloseBubble();

	if (bSaveToHistory)
	{
		aNavigationHistory[++nCurrentHistory] =
			'OpenScript(\'' + scriptCoreName + '\', null)';
		nMaxHistory = nCurrentHistory;
	}

	if (null !== szScriptCoreName) return;

	if (null === itemActivate) PopActiveItem();
	else if (false !== itemActivate)
	{
		if (true !== itemActivate) PushMenuItem(itemActivate);
		PushActiveItem(); PopMenuItem();
	}

	changeVisibility('id_page_loading', 'id_page_content');
	setTimeout('OnLoadScript()', 20);
	szScriptCoreName = scriptCoreName;

	if (undefined == a_script_title[scriptCoreName])
		document.title = szMainTitle + ' – ' + scriptCoreName;
	else
		document.title = szMainTitle + ' – ' + a_script_title[scriptCoreName];

	SetDirectLink('mod=' + scriptCoreName);
}

function ActivateMenuItem_NoLoad(itemCoreName)
{
	if (null === itemCoreName) PopActiveItem();
	else if (false !== itemCoreName)
	{
		if (true !== itemCoreName) PushMenuItem(itemCoreName);
		PushActiveItem(); PopMenuItem();
	}
}

function ActivateMenuItem(itemCoreName)
{
	hideItem('id_submenu');
	if (PushMenuItem(itemCoreName))
	{
		PushActiveItem();
		OpenPage(itemCoreName, false);
		SetDirectLink('main=' + itemCoreName);
	}
}

function ActivateSubmenuItem(itemCoreName)
{
	OpenPage(itemCoreName, true);
	SetDirectLink('sub=' + itemCoreName);
}

function RedefineSubmenu(arrayItems, arrayPages, arrayTypes, menuName)
{
	hideItem('id_submenu');
	var newSubmenu = '<table class="submenu">';

	for (var i in arrayItems)
	{
		if (null == arrayItems[i])
			newSubmenu +=
				'<tr><td><img src="skin/null.gif" /></td></tr>' +
				'<tr><td class="item_separator">' +
				'<img src="skin/null.gif" /></td></tr>' +
				'<tr><td><img src="skin/null.gif" /></td></tr>';
		else
		{
			if (null === arrayPages[i])
				newSubmenu += '<tr><td class="item_caption"><span>' +
					arrayItems[i] + '</span></td></tr>';
			else if (true === arrayPages[i])
				newSubmenu +=
					'<tr><td><img src="skin/null.gif" /></td></tr>' +
					'<tr><td class="item_separator">' +
					'<img src="skin/null.gif" /></td></tr>' +
					'<tr><td><img src="skin/null.gif" /></td></tr>' +
					'<tr><td class="item_caption"><span>' +
					arrayItems[i] + '</span></td></tr>';
			else if ((null === arrayTypes) || (null === arrayTypes[i]))
				newSubmenu += '<tr><td onmouseover="this.className=' +
					'\'item_hover\'" onmouseout="this.className=' +
					'\'item_normal\'" class="item_normal" onclick="' +
					'ActivateSubmenuItem(\'' + arrayPages[i] +
					'\')"><span>' + arrayItems[i] + '</span></td></tr>';
			else
				switch (arrayTypes[i])
				{
				case 'gallery':
					newSubmenu += '<tr><td onmouseover="this.className=' +
						'\'item_hover\'" onmouseout="this.className=' +
						'\'item_normal\'" class="item_normal" onclick="' +
						'ActivateMenuItem_NoLoad(\'galeria\');' +
						'OpenGallery(\'' + arrayPages[i] +
						'\')"><span>' + arrayItems[i] + '</span></td></tr>';
					break;
				case 'script':
					newSubmenu += '<tr><td onmouseover="this.className=' +
						'\'item_hover\'" onmouseout="this.className=' +
						'\'item_normal\'" class="item_normal" onclick="' +
						'hideItem(\'id_submenu\'); OpenScript(\'' +
						arrayPages[i] + '\', \'' + menuName + '\')"><span>' +
						arrayItems[i] + '</span></td></tr>';
					break;
				}
		}
	}

	newSubmenu += '</table>';
	var pSubmenu = getElement('id_submenu');
	var pMenuItem = getElement('id_' + menuName);
	pSubmenu.innerHTML = newSubmenu;

	pSubmenu.style.left = GetX(pMenuItem);
	pSubmenu.style.top = GetY(pMenuItem) + 25;

	showItem('id_submenu');
}

function ShowSubmenu(menuName)
{
	if (pLastItemID === ('id_' + menuName))
		PopMenuItem(); else
	if (PushMenuItem(menuName))
		eval('RedefineSubmenu(a_' + menuName + '_items, a_' +
			menuName + '_pages, a_' + menuName + '_types, menuName)');
}

function TopNavigationBack()
{
	if (nCurrentHistory > 0)
	{
		bSaveToHistory = false; --nCurrentHistory;
		eval(aNavigationHistory[nCurrentHistory]);
		bSaveToHistory = true;
	}
}

function TopNavigationForward()
{
	if (nCurrentHistory < nMaxHistory)
	{
		bSaveToHistory = false; ++nCurrentHistory;
		eval(aNavigationHistory[nCurrentHistory]);
		bSaveToHistory = true;
	}
}
