var refs = {};

function InitializeSideMenu(menuID, selectedID, callback)
{
	if (! sideMenu[menuID])
		return;

	ShowSideMenu(menuID, selectedID, callback);
}

function ShowSideMenu(menuID, selectedID, callback)
{
	$('#pageContent').css('margin-left', '160px');

	var $leftSide = $('#leftSide');

	$leftSide.html(sideMenu[menuID]);

	if (callback)
		callback($leftSide);

	$leftSide.show();

//	$("#leftSide li a[href='#']").css({'color': 'red'});	// Temporaneo: vengono marcati in rosso i menu senza riferimento

	if (selectedID)
		SelectSideMenu(selectedID);
}

function SelectSideMenu(selectedID)
{
	var a = $('a#' + selectedID);

	if (! a.get(0)) return;

	a.addClass('active');
	a.parent().show();

	var parentClass = a.parent().get(0).className;
	var parentLevel = parseInt(parentClass.substr(parentClass.length - 1));
	var lastLevel = parentLevel;

	if (parentLevel > 1)
	{
		a.parent().prevAll().each(function(i) {

			var thisLevel = parseInt(this.className.substr(this.className.length - 1));

			if (thisLevel <= lastLevel)
			{
				$(this).show();
				lastLevel = thisLevel;
			}

			return (thisLevel != 1);
		});
	}

	if (a.parent().next().is("li"))
	{
		var nextLevelClass = a.parent().next().get(0).className;	// Devo espandere tutti i nodi successivi di classe uguale a quello immediatamente successivo
																	// per evitare di espandere sotto-nodi di altri nodi dello stesso livello
		var nextLevel = parseInt(nextLevelClass.substr(nextLevelClass.length - 1));

		a.parent().nextAll().each(function(i) {

			var thisLevel = parseInt(this.className.substr(this.className.length - 1));

			if (thisLevel == 1)
				return false;

			if (thisLevel <= nextLevel)	//  || this.className == parentClass)
			{
				$(this).show();

				if (thisLevel < nextLevel)
					nextLevel = thisLevel;	// Risalgo fino al prossimo menu di livello 1
			}
		});
	}
}

function HideSideMenu()
{
	$('#pageContent').hide();
	$('#rightSide').css('margin-left', '0');
}
