
/**
 * Verifica dipendenze
 */

if (typeof(DMenuSupport) == 'undefined') {
	alert("DMenu non inizializzato");
}

/**
 * Generazione Menu
 */
var tlev = "";
var slev = "";

function SetCurrentMenuLevel(toplevel, secondlevel) {
	tlev = "" + toplevel;
	slev = tlev + "." + secondlevel;
	DMSelected = tlev;
}

function W(T) {
	document.writeln(T);
}

var DMSelected = "";

function SwitchSubMenu(lev) {

	var old = DMSelected;
	var item;
	DMSelected = lev;

	if (old != "-1") {
		item = GetMenuItem(old);
		DMenuSupport.SetVisible("d" + old, false);
		DMenuSupport.SetImage("im" + old, SelectImage(item, "normal"));
		DMenuSupport.SetImage("il" + old, DMenuSupport.imgs.pxtrasp);
		DMenuSupport.SetImage("ir" + old, DMenuSupport.imgs.pxtrasp);
		DMenuSupport.SetCellBgImage("td" + old, DMenuSupport.imgs.bg_mid);
	}

	if (lev != "-1") {
		item = GetMenuItem(lev);
		var mlev = item.level == 1 ? item.mlev : item.parent.mlev;
		var leftmost = (lev == MenuTree.childs[0].mlev);
		var rightmost = (lev == MenuTree.childs[MenuTree.count - 1].mlev);

		DMenuSupport.debug(lev + " :: leftmost: " + leftmost + " :: rightmost: " + rightmost);

		DMenuSupport.SetVisible("d" + lev, true);
		DMenuSupport.SetImage("im" + lev, SelectImage(item, "selected"));
		DMenuSupport.SetImage("il" + lev, DMenuSupport.imgs[leftmost ? "brk_xsx" : "brk_sx"]);
		DMenuSupport.SetImage("ir" + lev, DMenuSupport.imgs[rightmost ? "brk_xdx" : "brk_dx"]);
		DMenuSupport.SetCellBgImage("td" + lev, DMenuSupport.imgs.pxtrasp);

		DMenuSupport.SetImage("img-page-menu-bottomleft", DMenuSupport.imgs[mlev == tlev ? "pxtrasp" : "im_msx"]);
	}

}

// TopLevelClick
function tlc(lev) {
	var item = GetMenuItem(lev);
	if (item && item.url && item.count == 0) {
		return true;
	}
	SwitchSubMenu(lev);
	return false;
}
// RollOver
function ron(lev) {
	var item = GetMenuItem(lev);
	if (item) {
		ClearTimeout();
		if (item.level == 1) {
			SwitchSubMenu(lev);
		}
		else {
			DMenuSupport.SetImage("im" + lev, SelectImage(item, "over"));
		}
		window.status = item.alt_title ? item.alt_title : item.title;
	}
	return true;
}
// RollOut
function roff(lev) {
	var item = GetMenuItem(lev);
	if (item) {
		SetTimeout();
		if (item.level != 1) {
			DMenuSupport.SetImage("im" + lev, SelectImage(item, "normal"));
		}
	}
	window.status = "";
	return true;
}

function GetRealItemStatus(item, status) {
	if (item.level == 1) {
		if (item.mlev == DMSelected) {
			return "selected";
		}
		if ((item.mlev == tlev) && status == "normal") {
			return "current";
		}
	}
	else {
		if (item.mlev == slev) {
			if (status == "normal") {
				return "current";
			}
			else {
				return "selected";
			}
		}
	}
	return status;
}
function SelectAvailableImage() {
	var img = "";
	for (var i = 0; !img && i < SelectAvailableImage.arguments.length; i++)	{
		img = SelectAvailableImage.arguments[i];
	}
	return img;
}
//
function SelectImage(item, status) {
	var type = GetRealItemStatus(item, status);
	var img = "";
	if (item.img_base) {
		if (type == "normal") {
			img = item.img_base;
		}
		if (type == "over") {
			img = SelectAvailableImage(item.img_roll, item.img_base);
		}
		if (type == "selected") {
			img = SelectAvailableImage(item.img_sel, item.img_roll, item.img_base);
		}
		if (type == "current") {
			if (item.level == 1) {
				img = SelectAvailableImage(item.img_curr, item.img_base);
			}
			else {
				img = SelectAvailableImage(item.img_curr, item.img_roll, item.img_base);
			}
		}
	}
	DMenuSupport.debug(item.mlev + ": " + status + " = " + type + " :: " + img);
	return img;
}

/* genera la voce di menu */
function GetMenuLink(item) {

	var url = item.url ? item.url : "javascript:void(0)";
	var over = " onmouseover=\"return ron('" + item.mlev + "')\" onmouseout=\"return roff('" + item.mlev + "')\"";
	var click = item.level == 1 ? " onclick=\"return tlc('" + item.mlev + "')\"" : "";
	var target = item.newwin ? "_blank" : "_self";
	var clazz = "page-menu-" + ((item.mlev == tlev || item.mlev == slev) ? "slink" : "nlink") + "-" + item.level;
	var tag_a_open = "<a href=\"" + url + "\"" + click + over + " class=\"" + clazz + "\" target=\"" + target + "\">";
	var tag_a_close = "</a>";

	var link = tag_a_open + item.title + tag_a_close;
	var img = SelectImage(item, "normal");

	if (img) {
		link = tag_a_open + IMG(img, "im" + item.mlev) + tag_a_close;
	}

	return link;
}
function IMG(path, id, width, height) {
	var img = "<img"
	if (id) {
		img += " id=\"" + DMenuSupport.EscapeHtml(id) + "\"";
		img += " name=\"" + DMenuSupport.EscapeHtml(id) + "\"";
	}
	img += " src=\"" + DMenuSupport.EscapeHtml(path) + "\"";
	if (width) {
		img += " width=\"" + width + "\"";
	}
	if (height) {
		img += " height=\"" + height + "\"";
	}
	img += " border=\"0\"";
	img += ">";
	DMenuSupport.debug("IMG: " + img);
	return img;
}

var timeout = 0;

function SetTimeout() {
	DMenuSupport.debug("SetTimeout()");
	timeout = 100;
}

function ClearTimeout() {
	if (timeout > 0) {
		DMenuSupport.debug("ClearTimeout()");
		timeout = 0;
	}
}

function CheckTimeout() {
	if (timeout > 0) {
		timeout -= 50;
		DMenuSupport.debug("CheckTimeout: " + timeout);
		if (timeout <= 0) {
			SwitchSubMenu(tlev);
		}
	}
	
}

function WriteMenu() {

	// preload e definizione immagini comuni (path accessibili come "DMenuSupport.imgs.nome")
	DMenuSupport.PreloadImage("/images/px_trasp.gif",                 "pxtrasp");
	DMenuSupport.PreloadImage("/images/cti/pointer.gif",              "vbar");
	DMenuSupport.PreloadImage("/images/cti/brk_xsx.gif",              "brk_xsx");
	DMenuSupport.PreloadImage("/images/cti/brk_sx.gif",               "brk_sx");
	DMenuSupport.PreloadImage("/images/cti/brk_dx.gif",               "brk_dx");
	DMenuSupport.PreloadImage("/images/cti/brk_xdx.gif",              "brk_xdx");
	DMenuSupport.PreloadImage("/images/cti/bg_line.gif",              "bg_line");
	DMenuSupport.PreloadImage("/images/cti/bg_mid.gif",               "bg_mid");
	DMenuSupport.PreloadImage("/images/cti/im_msx.gif",               "im_msx");
	DMenuSupport.PreloadImage("/images/cti/wspace.gif",               "wspace");
	DMenuSupport.PreloadImage("/images/cti/bg_wspace.gif",            "bg_wspace");

	W("<div class=\"page\" onmouseover=\"ClearTimeout();\" onmouseout=\"SetTimeout();\">");
	W("<table width=\"734\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");

	W("<tr>");

	var no_element_selected = true;
	for(var i = 0; i < MenuTree.count; i++) {
		var item = MenuTree.childs[i];
		if (item.mlev == tlev) {
			no_element_selected = false;
		}
	}

	for(var i = 0; i < MenuTree.count; i++) {
		var item = MenuTree.childs[i];
		var leftmost = (i == 0);
		var rightmost = (i == MenuTree.count - 1);
		var img = SelectImage(item,  "normal");
		if (img) {
			var clazz = leftmost ? "page-menu-image-left" : (rightmost ? "page-menu-image-right" : "page-menu-image");
			W("<td colspan=\"3\" class=\"" + clazz + "\">" + GetMenuLink(item) + "</td>");
		}
		else {

			var left = leftmost ? "page-menu-left" : "page-menu-bracket";
			var right = rightmost ? "page-menu-right" : "page-menu-bracket";
			var left_img  = DMenuSupport.imgs.pxtrasp;
			var right_img = DMenuSupport.imgs.pxtrasp;

			W("<td class=\"" + left + "\">" + IMG(left_img, "il" + item.mlev, 5, 31) + "</td>");
			W("<td id=\"td" + item.mlev + "\" class=\"page-menu-text\" nowrap>" + GetMenuLink(item) + "</td>");
			W("<td class=\"" + right + "\">" + IMG(right_img, "ir" + item.mlev, 5, 31) + "</td>");
		}
	}

	W("</tr>");

	W("<tr>");
	if (no_element_selected) {
		W("<td class=\"page-menu-bottomleft-nobar\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 5, 30) + "</td>");
	}
	else {
		W("<td class=\"page-menu-bottomleft\">" + IMG(DMenuSupport.imgs.pxtrasp, "img-page-menu-bottomleft", 5, 30) + "</td>");
	}
	W("<td class=\"page-menu-bottom\" colspan=\"" + (3 * MenuTree.count - 2) + "\">");

	for(var i = 0; i < MenuTree.count; i++) {
		var item = MenuTree.childs[i];
		var st = ""; //" style=\"visibility: hidden;\"";
		//var st = "style=\"z-index: " + (200 - i) + "; position: absolute; visibility: hidden; height: 20px; left: 12px; top: 31px;\"";

		W("<div id=\"d" + item.mlev + "\" class=\"page-menu-submenu\"" + st + ">");

		if (item.count >= 0) {
		
			W("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
			W("<tr>");

			for(var j = 0; j < item.count; j++) {
				var subitem = item.childs[j];
				var img = SelectImage(subitem,  "normal");

				if (img) {
					W("<td class=\"page-menu-submenu-image\" colspan=\"2\">" + GetMenuLink(subitem) + "</td>");
				}
				else {
					if (j == 0)	{
						// cosi' funziona +/- anche con NS4 (altrimenti sbaglia a calcolare dim. tabelle e non mostra nulla)
						W("<td height=\"20\" rowspan=\"2\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 1, 20) + "</td>");
					}
					W("<td class=\"page-menu-submenu-text\" height=\"20\" colspan=\"2\" nowrap>" + GetMenuLink(subitem) + "</td>");
				}
			}

			W("</tr>");
			W("<tr>");

			var td1 = "<td>" + IMG(DMenuSupport.imgs.pxtrasp, "", 2, 10) + "</td>";
			var td2 = "<td>" + IMG(DMenuSupport.imgs.pxtrasp, "", 3, 10) + "</td>";

			if (item.mlev == tlev) {
				td1 = "<td background=\"" + DMenuSupport.imgs.bg_line + "\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 2, 10) + "</td>";
				td2 = "<td background=\"" + DMenuSupport.imgs.bg_line + "\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 3, 10) + "</td>";
			}

			for(var j = 0; j < item.count; j++) {
				var subitem = item.childs[j];

				if (subitem.mlev == slev) {
					td1 = "<td background=\"" + DMenuSupport.imgs.bg_line + "\" align=\"right\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 1, 10) + IMG(DMenuSupport.imgs.vbar, "", 1, 10) + "</td>";
					td2 = "<td>" + IMG(DMenuSupport.imgs.pxtrasp, "", 3, 10) + "</td>";
				}

				W(td1);
				W(td2);

				if (subitem.mlev == slev) {
					td1 = "<td>" + IMG(DMenuSupport.imgs.pxtrasp, "", 2, 10) + "</td>";
				}

			}

			W("</tr>");
			W("</table>");

		}

		W("</div>");

	}

	//W("<div class=\"page-menu-submenu-spc\"><a href=\"javascript:void(0)\" onmouseover=\"ClearTimeout();\" onmouseout=\"SetTimeout();\">" + IMG(pxtrasp, "", 724, 30) + "</a></div>");
	W("<div class=\"page-menu-submenu-spc\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 1, 30) + "</div>");

	W("</td>");
	W("<td class=\"page-menu-bottomright\">" + IMG(DMenuSupport.imgs.pxtrasp, "", 5, 30) + "</td>");
	W("</tr>");

	W("<tr>");
	W("<td colspan=\"" + (3 * MenuTree.count) + "\" background=\"" + (no_element_selected ? DMenuSupport.imgs.pxtrasp : DMenuSupport.imgs.bg_wspace) + "\" align=\"right\">" + IMG(DMenuSupport.imgs.wspace, "", 100, 20) + "</td>");
	W("</tr>");

	W("</table>")
	W("</div>");

	if (DMenuSupport._DebugEnubled) {
		W("<div id=\"debug\">&nbsp;</div>");
	}

	SwitchSubMenu(tlev);

	setInterval("CheckTimeout()", 100);

	// preload immagini menu
	for(prop in MenuTree) {
		var obj = MenuTree[prop];
		if (obj && obj.img_base) {
			DMenuSupport.PreloadImage(obj.img_base);
			DMenuSupport.PreloadImage(obj.img_roll);
			DMenuSupport.PreloadImage(obj.img_sel);
			DMenuSupport.PreloadImage(obj.img_curr);
		}
	}

}

/**********************************************************************
 **********************************************************************
 *
 * HOME PAGE
 *
 **********************************************************************
 **********************************************************************
 */

// RollOver (Home)
function hron(lev) {
	var item = GetMenuItem(lev);
	if (item) {
		if (item.img_hroll) {
			DMenuSupport.SetImage("i" + lev, item.img_hroll);
		}
		window.status = item.alt_title ? item.alt_title : item.title;
	}
	return true;
}
// RollOut (Out)
function hroff(lev) {
	var item = GetMenuItem(lev);
	if (item) {
		if (item.img_home) {
			DMenuSupport.SetImage("i" + lev, item.img_home);
		}
		window.status = "";
	}
	return true;
}
function GetHomeLink(item) {

	var url = item.url ? item.url : "javascript:void(0)";
	var over = " onmouseover=\"return hron('" + item.mlev + "')\" onmouseout=\"return hroff('" + item.mlev + "')\"";
	var target = item.newwin ? "_blank" : "_self";
	var tag_a_open = "<a href=\"" + url + "\"" + over + " target=\"" + target + "\">";
	var tag_a_close = "</a>";

	if (item.level == 1 && !item.url) {
		tag_a_open = "";
		tag_a_close = "";
	}

	var link = "<div class=\"text\">" + tag_a_open + DMenuSupport.EscapeHtml(item.title) + tag_a_close + "</div>";
	if (item.img_home) {
		var alt = DMenuSupport.EscapeHtml(item.alt_title ? item.alt_title : item.title);
		link = tag_a_open + "<img id=\"i" + item.mlev + "\" name=\"i" + item.mlev + "\" alt=\"" + alt + "\" src=\"" + item.img_home + "\" border=\"0\">" + tag_a_close;
	}
	return link;
}

function WriteHomeMenu() {

	// preload e definizione immagini comuni (path accessibili come "DMenuSupport.imgs.nome")
	DMenuSupport.PreloadImage("/images/px_trasp.gif",                 "pxtrasp");

	var w = [160, 156, 174, 104, 168];
	var s = 0
	var c = MenuTree.count;
	if (c > 0 && MenuTree.childs[0].mlev == "0") {
		s = 1;
		c = c - 1;
	}
	W("<div class=\"home\"><table class=\"menu\">");
	W("<tr>");
	for(var i = s; i < MenuTree.count; i++) {
		var item = MenuTree.childs[i];
		W("<td class=\"menu-lev1\" nowrap>" + GetHomeLink(item) + "</td>");
	}
	W("</tr>");
	W("<tr>");
	for(var i = s; i < MenuTree.count; i++) {
		var item = MenuTree.childs[i];
		W("<td class=\"menu-lev2\"><table>");
		for(var j = 0; j < item.count; j++) {
			W("<tr><td nowrap>" + GetHomeLink(item.childs[j]) + "</td></tr>");
		}
		W("</table></td>");
	}
	W("</tr>");
	if (c <= w.length) {
		W("<tr>");
		for(var i = s; i < w.length; i++) {
			W("<td height=\"1\">" + IMG(DMenuSupport.imgs.pxtrasp, "", w[i - s], 1) + "</td>");
		}
		W("</tr>");
	}
	W("</table></div>");

	if (DMenuSupport._DebugEnubled) {
		W("<div id=\"debug\">&nbsp;</div>");
	}

	// preload immagini menu
	for(prop in MenuTree) {
		var obj = MenuTree[prop];
		if (obj && obj.img_home) {
			DMenuSupport.PreloadImage(obj.img_home);
			DMenuSupport.PreloadImage(obj.img_hroll);
		}
	}

}