var stack = new Array();
var monitor = false;
	
	
function getLevel (element) {
	var level = 1;
	while (element.up().id != "nav_menu") {
		element = element.up();
		level++;
	}
	return level/2;
}


function getLastVisibleLevel () {
	return stack.size();
}


function is_first (id) {
	return stack[0] == id;
}

function menuType (element) {
	while (element != document) {
		if (element.hasClassName('lm_left')) 
			return 1;
		else if (element.hasClassName('lm_right')) 
			return 2;
		element = element.up();
	}
	return 0;
}


function expand (element, effect) {
	var submenu = Element.childElements(element)[Element.childElements(element).size()-1];
	
	if (!submenu.visible()) {
		if (effect) {
			Effect.SlideDown(submenu.id, { duration: effect });
		} else {
			submenu.show();
		}
	}	
		
	submenu.style.position = "absolute";
	submenu.addClassName('level_'+getLevel(submenu));
	submenu.addClassName('submenu');

	if (getLevel(submenu) == 1) {
		var left = element.cumulativeOffset()[0];
		var top = element.cumulativeOffset()[1];
	} else {		
		var top = element.offsetTop;
		var left = element.style.left.replace('px','')*1;
	}

	if (menuType(element) == 0 && getLevel(submenu) <= 1) {			// Orizzontale
		submenu.style.left = left+'px';
		submenu.style.top = top+element.getHeight()+'px';
	} else if (menuType(element) == 2) {	// Destra	
		submenu.style.left = (left - submenu.getWidth())+'px';
		submenu.style.top = top+'px';
		element.cssFloat = 'none';
		element.styleFloat = 'none';
	} else {								// Sinistra
		submenu.style.left = (left + element.getWidth())+'px';
		submenu.style.top = top+'px';
		element.cssFloat = 'none';
		element.styleFloat = 'none';
	}
}


function clearAll (effect) {
	// Cancella tutti i sottomenu visibili
	$$('.submenu').each (function (div) {
		if (div.visible()) {
			if (effect) {
				Effect.SlideUp(div.id, { duration: effect });
			} else {
				div.hide();
			}
		}
	});
}


function render (effect) {
	clearAll(effect);
	
	// Mostra il menu basandosi sullo stack
	stack.each (function (id) {
		expand($(id),effect);
	});

}


function showsubmenu(e, element, effect){
	try{
		var submenu = Element.childElements(element)[Element.childElements(element).size()-1];		
		var level = getLevel(submenu);

		if (!submenu.visible()) { 							// Stiamo andando avanti
			monitor = true;

			if (getLastVisibleLevel() == level) {
				stack.pop();
			}

			stack.length = level - 1;
			stack.push(element.id);
		} else {											// Stiamo andando indietro, su o giù
			if (!monitor) {
				monitor = true;
				if (getLastVisibleLevel() > level) {
					var id = stack.pop();
				}
			} else {										// Evento intercettato dal nodo radice
				if (stack.size() == 0 || is_first(element.id)) {
					monitor = false;
					render(effect);	

					if (!e) var e = window.event;
					e.cancelBubble = true;
					if (e.stopPropagation) e.stopPropagation();
				}
			}
		}

		if (level == 1 && monitor) {
			render(effect);

			if (!e) var e = window.event;
			e.cancelBubble = true;
			if (e.stopPropagation) e.stopPropagation();
		}
	} catch(ex){
		alert(ex);
	}
}


function hidesubmenu(e, element){
}


Event.observe(window, 'load', function() {
	Event.observe(document.body,'mouseover',function () {
		clearAll();
	});

	$$('.menu_ver_link').each(function (link) {
		Event.observe(link,'click',function () {
			clicked(link);
		});
	});

	getPage('home.html');
});









function closeSubmenuVer (link) {
	var submenu = link.next();
	if (submenu) {
		Effect.BlindUp(submenu, { duration: 0.5 });
	}
}

function openSubmenuVer (link, noeffect) {
	var submenu = link.next();
	if (submenu) {
		if (noeffect) {
			submenu.show();
		} else {
			Effect.BlindDown(submenu, { duration: 0.5 });
		}
	}
}

function closeAllSubmenuVer (link) {
	$$('.menu_ver_link').each(function (lnk) {
		if (lnk != link) {
			closeSubmenuVer(lnk);
		}
	});
}

function clicked (link) {
	var submenu = link.next();
	closeAllSubmenuVer(link);
	if (submenu) {
		if (submenu.visible()) {
//			closeSubmenuVer(link);
		} else {
			openSubmenuVer(link);
		}
	}
}





function getPage (page, file, open) {
	new Ajax.Updater('page', page, {
		evalScripts: 'force',
		onComplete : function () {
			if (open && $(open)) {
				openSubmenuVer($(open),true);
			}

			if (file) {
				getContent(file);
			}

			$$('.menu_ver_link').each(function (link) {
				Event.observe(link,'click',function () {
					clicked(link);
				});
			});
		}
	});
//	return false;
}


function getContent (file) {
	new Ajax.Updater('content', 'contenuti/'+file, {
		evalScripts: 'force',
		onComplete : function () {
			setAltezza();
			lightwindowInit();
		}
	});
//	return false;
}


function setAltezza () {
	var page = $('page');
	var content = $$('.content_bordo_content');
	var h = page.getHeight() - 50;
	content = content[0].firstDescendant();
	content.setStyle({'height' : h+"px"});
}



