var ToolBar_Supported = false;
var Frame_Supported   = false;
var DoInstrumentation = false;

/*
alert(navigator.appVersion.substr(17,9))
if (navigator.appVersion.indexOf("MSIE") != -1)
{
	alert(navigator.appVersion)
}
//alert(navigator.appVersion)
*/

if (navigator.userAgent.indexOf("MSIE")    != -1 && 
	navigator.userAgent.indexOf("Windows") != -1 &&
 	navigator.appVersion.substr(17,9) != "MSIE 5.01" && 
	navigator.appVersion.substring(0,1) > 3)
{
	ToolBar_Supported = true;
}


	var newLineChar = String.fromCharCode(10);
	var char34 = String.fromCharCode(34);
	var LastMSMenu = "";
	var IsMSMenu = false;
	var IsMenuDropDown = true;
	var HTMLStr;
	var x = 0;
	var y = 0;
	var x2 = 0;
	var y2 = 0;
	var MenuWidth;
	var ToolbarMinWidth;
	var ToolbarMenu;
	var ToolbarLoaded = false;
	var aDefColor  = new Array(3);
	var aCurColor  = new Array(3);
	var aSubMenuColor = new Array(2);
	var ToolbarFont;
	var MaxMenu = 30;
	var TotalMenu = 0;
	var arrMenuInfo = new Array(30);
	var FIXED_HEADER_HEIGHT;
	var FIXED_LEFT_OFFSET;
	
	/***************************************************************
	* Foundamental variables settings
	***************************************************************/
	var headerPosition = "left"; //center, left, right
	


	//colors definition
	aDefColor[0]	= "#783626";  	//blue 
	aDefColor[1]	= "#FCFAD3";	// text font color
	aDefColor[2]	= "#783626";	// mouseover font color - Giallo
	aSubMenuColor[0]= "#FFE469"; 	// submenu item 
	aSubMenuColor[1]= "#FFCC00";	// selected submenu item
	
	//ToolbarFont  = "bold  11px ,Verdana, Arial, Helvetica"; 	//bold xx-small Verdana;
	ToolbarFont = "font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold;";
	SubMenuFont = "font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold;"
	
	FIXED_HEADER_HEIGHT = 0;	//this is the height of all the stuff before tool bar (67)
	FIXED_LEFT_OFFSET = 153;	//offset to left margin of the header 153
	TOOLBAR_WIDTH="100%";			
		
if (ToolBar_Supported)
{	
	// Output style sheet and toolbar ID
	HTMLStr = "<td width=" + TOOLBAR_WIDTH + " height='20' bgcolor='" + aDefColor[0] + "'>";
	HTMLStr += "<SPAN ID='StartMenu' STYLE='display:none;'></SPAN>";
	HTMLStr +=
	"<DIV ID='idToolbar'     STYLE='background-color:white;width:" + TOOLBAR_WIDTH + ";'>" +
	"<DIV ID='idRow1'        STYLE='position:absolute;height:133;'>" +
	"<table width='" + TOOLBAR_WIDTH + "' border='0' cellspacing='0' cellpadding='0' align=''"  + headerPosition + "'>" +
	"<tr><td width='" + TOOLBAR_WIDTH + "' height='20' colspan='0' bgcolor='" + aDefColor[0] + "'>" +
	"<DIV ID='idMenuPane'  STYLE='position:relative;background-color:black;' NOWRAP><!--MS_MENU_TITLES--></DIV>" + 
	"</td></tr></table>" +
	"</DIV>" +
	"<SCRIPT TYPE='text/javascript'>" + 
	"   var ToolbarMenu = StartMenu;" + 
	"</SCRIPT></td>"; // + 

}	
else
{
	HTMLStr = "<td width='" + TOOLBAR_WIDTH + "' height='40' bgcolor='" + aDefColor[0] + "' class='menustatico'><!--MS_MENU_TITLES--></td>";
}

/*************************************************************************************
* Toolbar handling functions
*************************************************************************************/

// draw
//-----------------------------
function drawToolbar()
{
	
	document.write(HTMLStr);
	if (ToolBar_Supported)
	{	
		ToolbarLoaded = true;
	
	//TODO: check these 2 lines
	//	MenuWidth = Math.max(idMenuPane.offsetWidth, (200+112));
	//	ToolbarMinWidth = (250+18) + MenuWidth;
		MenuWidth = idMenuPane.offsetWidth;
		ToolbarMinWidth = MenuWidth;
	
	
		idMenuPane.style.backgroundColor  = aDefColor[0];
		for (i = 0; i < TotalMenu; i++) 
		{
			thisMenu = document.all(arrMenuInfo[i].IDStr);
			if (thisMenu != null)
			{
				if (arrMenuInfo[i].IDStr == LastMSMenu && arrMenuInfo[i].type == "R")
				{
					//Last MSMenu has to be absolute width
					arrMenuInfo[i].type = "A";
					arrMenuInfo[i].unit = 200;
				}
				if (arrMenuInfo[i].type == "A")
					thisMenu.style.width = arrMenuInfo[i].unit;
				else 
					thisMenu.style.width = Math.round(arrMenuInfo[i].width * arrMenuInfo[i].unit) + 'em';
			}
		}
	}
}



/*************************************************************************************
* Menu handling functions
*************************************************************************************/
function setMSSubMenuWidth(MenuIDStr, WidthType, WidthUnit)
{

	tempID = "MS_" + MenuIDStr;
	setSubMenuWidth(tempID, WidthType, WidthUnit);

}

function setSubMenuWidth(MenuIDStr, WidthType, WidthUnit)
{
	var fFound = false;
	if (TotalMenu == MaxMenu)
	{
		alert("Unable to process menu. Maximum of " + MaxMenu + " reached.");
		return;
	}
	
	for (i = 0; i < TotalMenu; i++)
		if (arrMenuInfo[i].IDStr == MenuIDStr)
		{
			fFound = true;
			break;
		}

	if (!fFound)
	{
		arrMenuInfo[i] = new menuInfo(MenuIDStr);
		TotalMenu += 1;
	}

	if (!fFound && WidthType.toUpperCase().indexOf("DEFAULT") != -1)
	{
		arrMenuInfo[i].type = "A";
		//qui
		arrMenuInfo[i].unit = 175;
	}
	else
	{
		arrMenuInfo[i].type = (WidthType.toUpperCase().indexOf("ABSOLUTE") != -1)? "A" : "R";
		arrMenuInfo[i].unit = WidthUnit;
	}
}

// This function creates a menuInfo object instance.
function menuInfo(MenuIDStr)
{
	this.IDStr = MenuIDStr;
	this.type  = "";
	this.unit  = 0;
	this.width = 0;
	this.count = 0;
}

function updateSubMenuWidth(MenuIDStr)
{
	for (i = 0; i < TotalMenu; i++)
		if (arrMenuInfo[i].IDStr == MenuIDStr)
		{
			if (arrMenuInfo[i].width < MenuIDStr.length) 
				arrMenuInfo[i].width = MenuIDStr.length;
			arrMenuInfo[i].count = arrMenuInfo[i].count + 1;
			break;
		}
}

// Add menu
//-----------------------------
function addMSMenu(MenuIDStr, MenuDisplayStr, MenuHelpStr, MenuURLStr)
{	
	TargetStr = "_top";
	tempID = "MS_" + MenuIDStr;
	addMenu(tempID, MenuDisplayStr, MenuHelpStr, MenuURLStr, TargetStr); 
	LastMSMenu = tempID;
}

//this function handle static and dynamic menu
function addMenu(MenuIDStr, MenuDisplayStr, MenuHelpStr, MenuURLStr, TargetStr)
{	
	cFont   = ToolbarFont;
	cColor0 = aDefColor[0];
	cColor1 = aDefColor[1];
	cColor2 = aDefColor[2];
	tagStr  = "<!--MS_MENU_TITLES-->";
	

	if (ToolBar_Supported)
	{
		MenuStr = newLineChar;

		if (LastMSMenu != "") //this is never true for static menu
			MenuStr += "<SPAN STYLE='" + cFont + "color:" + cColor1 + "'>&nbsp;</SPAN>"; 
			
		MenuStr += "<A TARGET='" + TargetStr + "' TITLE='" + MenuHelpStr + "'" +
				   "   ID='AM_" + MenuIDStr + "'" +
				   "   STYLE='text-decoration:none;cursor:hand;" + cFont + "background-color:" + cColor0 + ";color:" + cColor1 + ";'";

		if (MenuURLStr != "")
		{
			MenuStr += " HREF='" + MenuURLStr + "'";
		}
		else
			MenuStr += " HREF='' onclick='window.event.returnValue=false;'";
	
			
		MenuStr += 	" onmouseout="  + char34 + "mouseMenu('out' ,'" + MenuIDStr + "', 0); hideMenu();" + char34 + 
					" onmouseover=" + char34 + "mouseMenu('over','" + MenuIDStr + "', 0); doMenu('"+ MenuIDStr + "');" + char34 + ">" +
					"&nbsp;" + MenuDisplayStr + "&nbsp;</a>";		
	}
	else
	{
		MenuStr = "";
		if (LastMSMenu != "") 
			MenuStr += "|";
		else
			MenuStr +="&nbsp;&nbsp;";
		MenuStr += "<a target='" + TargetStr + "' title='" + MenuHelpStr + "' ID='AM_" + MenuIDStr + "'" +
					" class='menustatico' ";
		if (MenuURLStr != "")
		{
			MenuStr += " HREF='" + MenuURLStr + "' ";
		}
		else
			MenuStr += " HREF='' onclick='window.event.returnValue=false;' ";
		MenuStr += ">&nbsp;" + MenuDisplayStr + "&nbsp;</a>";
			
	}

	MenuStr += tagStr;
	
	HTMLStr = HTMLStr.replace(tagStr, MenuStr);	
	setSubMenuWidth(MenuIDStr,"default",0);
}

//Add submenu
//-----------------------------
function addMSSubMenu(MenuIDStr, SubMenuStr, SubMenuURLStr)
{	
	if (ToolBar_Supported)
	{
		TargetStr = "_top";
		tempID = "MS_" + MenuIDStr;
		addSubMenu(tempID,SubMenuStr,SubMenuURLStr,TargetStr);
	}
}
function addSubMenu(MenuIDStr, SubMenuStr, SubMenuURLStr, TargetStr)
{
	cFont   = SubMenuFont; 
	cColor0 = aSubMenuColor[0];
	cColor1 = aDefColor[0];
	cColor2 = aSubMenuColor[1];
	
	URLStr = SubMenuURLStr;

	var LookUpTag  = "<!--" + MenuIDStr + "-->";
	var sPos = HTMLStr.indexOf(LookUpTag);
	if (sPos <= 0)
	//this manage the first submenu of each menu root
	{
		HTMLStr += newLineChar + 
				"<SPAN ID='" + MenuIDStr + "'" +
				" STYLE='display:none;position:absolute;width:160;background-color:" + cColor0 + 
				";padding-top:0;padding-left:0;padding-bottom:0;z-index:9;' onmouseout='hideMenu();'>";
		HTMLStr += "<img src='images/white.gif' style='podding-left:0;padding-right:0;height:1;width:160;'>"; //"<HR  STYLE='position:absolute;left:0;top:0;color:" + cColor2 + "' SIZE=1>";
		HTMLStr += "<DIV STYLE='position:relative;left:0;top:0;'>";
	}
	
	// Draw a submenu item 
	TempStr =  	"<A ID='AS_" + MenuIDStr + "'" +
				"   STYLE='height:16;width:220;padding-top:2;padding-bottom:0;padding-left:10;" + 
				"text-decoration:none;vertical-align:baseline;cursor:hand;" + 
				cFont + "color:" + cColor1 + "'" + " HREF='" + URLStr + "' TARGET='" + TargetStr + "'" +
				" onmouseout="  + char34 + "mouseMenu('out' ,'" + MenuIDStr + "', 1);" + char34 + 
				" onmouseover=" + char34 + "mouseMenu('over','" + MenuIDStr + "', 1);" + char34 + ">" +
				"&nbsp;" + SubMenuStr + "</A>" +
				"<img src='images/white.gif' style='podding-left:0;padding-right:0;height:1;width:175;'>" + LookUpTag;
	if (sPos <= 0)
		HTMLStr += TempStr + "</DIV></SPAN>";
	else
		HTMLStr = HTMLStr.replace(LookUpTag, TempStr);	

	updateSubMenuWidth(MenuIDStr);	
}


//manage mouse over and mouse out
function mouseMenu(id, MenuIDStr, Level) 
{
	var selectFont;
	IsMSMenu   = (MenuIDStr.toUpperCase().indexOf("MS_") != -1);
	IsMouseout = (id.toUpperCase().indexOf("OUT") != -1);

	if (IsMouseout)
	{
		//this version is always MsMenu
		if (Level == 0) //menu root
			color = aDefColor[1];
		else
			color = aSubMenuColor[0];	
	}
	else
	{
		if (Level == 0)
			color = aSubMenuColor[1];
		else
			color = aSubMenuColor[1];
	}
	if (Level == 0)
	{
		window.event.srcElement.style.color = color;
	}
	else
	{
		window.event.srcElement.style.background = color;
	}
}

function doMenu(MenuIDStr) 
{
	if (ToolBar_Supported)
	{
		var thisMenu = document.all(MenuIDStr);
		if (ToolbarMenu == null || thisMenu == null || thisMenu == ToolbarMenu) 
		{
			window.event.cancelBubble = true;
			return false;
		}
		// Reset dropdown menu
		window.event.cancelBubble = true;
		ToolbarMenu.style.display = "none";
		showElement("SELECT");
		showElement("OBJECT");
		ToolbarMenu = thisMenu;
		IsMSMenu = true;  //(MenuIDStr.toUpperCase().indexOf("MS_") != -1);
	
		// Set dropdown menu display position
		x  = window.event.srcElement.offsetLeft + 
			window.event.srcElement.offsetParent.offsetLeft + window.event.srcElement.offsetParent.offsetParent.offsetLeft;
		//x = document.all.ms_tbarTable.cells("ms_tbarCell").offsetLeft;
		//alert(x);
		x2 = x + window.event.srcElement.offsetWidth;
		//this version always a Ms menu
		//y  = (IsMSMenu)? 
		//	 (idRow1.offsetHeight) :
		//	 (idRow1.offsetHeight + idRow2.offsetHeight + idRow3.offsetHeight);
		y  = FIXED_HEADER_HEIGHT + idRow1.offsetHeight;
	
	
		thisMenu.style.top  = y;
		thisMenu.style.left = x;
		thisMenu.style.clip = "rect(0 0 0 0)";
		thisMenu.style.display = "block";
	
		// delay 2 millsecond to allow the value of ToolbarMenu.offsetHeight be set
		window.setTimeout("showMenu()", 2);
	}
	return true;
}

function showMenu() 
{
	if (ToolbarMenu != null) 
	{ 
		IsMenuDropDown = (Frame_Supported && IsMSMenu == false)? false : true;
		if (IsMenuDropDown == false)
		{
			y = (y - ToolbarMenu.offsetHeight - idRow3.offsetHeight);
			if (y < 0) y = 0;
			ToolbarMenu.style.top = y;
		}

		y2 = y + ToolbarMenu.offsetHeight;

		ToolbarMenu.style.clip = "rect(auto auto auto auto)";
		hideElement("SELECT");
		hideElement("OBJECT");
		//hideElement("IFRAME");  //FRANKLO
		hideElement("APPLET");
	}
}

function hideMenu()
{
	if (ToolBar_Supported)
	{
		if (ToolbarMenu != null && ToolbarMenu != StartMenu) 
		{
			// Don't hide the menu if the mouse move between the menu and submenus
			cY = event.clientY + document.body.scrollTop;
			if ( (event.clientX >= (x+5) && event.clientX <= x2) &&
				 ((IsMenuDropDown == true  && cY > (y-10) && cY <= y2)      ||
				  (IsMenuDropDown == false && cY >= y     && cY <= (y2+10)) ))
			{
				window.event.cancelBubble = true;
				return; 
			}
	
			ToolbarMenu.style.display = "none";
			ToolbarMenu = StartMenu;
			window.event.cancelBubble = true;
	
			showElement("SELECT");
			showElement("OBJECT");
			showElement("IFRAME"); //FRANKLO
			showElement("APPLET");
		}
	}
}

function hideElement(elmID)
{
	for (i = 0; i < document.all.tags(elmID).length; i++)
	{
		obj = document.all.tags(elmID)[i];
		if (! obj || ! obj.offsetParent)
			continue;

		// Find the element's offsetTop and offsetLeft relative to the BODY tag.
		objLeft   = obj.offsetLeft;
		objTop    = obj.offsetTop;
		objParent = obj.offsetParent;
		while (objParent.tagName.toUpperCase() != "BODY")
		{
			objLeft  += objParent.offsetLeft;
			objTop   += objParent.offsetTop;
			objParent = objParent.offsetParent;
		}
		// Adjust the element's offsetTop relative to the dropdown menu
		objTop = objTop - y;

		if (x > (objLeft + obj.offsetWidth) || objLeft > (x + ToolbarMenu.offsetWidth))
			;
		else if (objTop > ToolbarMenu.offsetHeight)
			;
		else if (IsMSMenu && (y + ToolbarMenu.offsetHeight) <= 80)
			;
		else
			obj.style.visibility = "hidden";
	}
}

function showElement(elmID)
{
	for (i = 0; i < document.all.tags(elmID).length; i++)
	{
		obj = document.all.tags(elmID)[i];
		if (! obj || ! obj.offsetParent)
			continue;
		obj.style.visibility = "";
	}
}


function addSubMenuLine(MenuIDStr)
{
	//cFont   = SubMenuFont; 
	//cColor0 = aSubMenuColor[0];

	cColor1 = aDefColor[0];
//	cColor2 = aSubMenuColor[1];
	MenuIDStr = "MS_" + MenuIDStr;
	
	var LookUpTag  = "<!--" + MenuIDStr + "-->";
	var sPos = HTMLStr.indexOf(LookUpTag);

		TempStr = "<HR STYLE='COLOR:"+ cColor1 + "' SIZE=1>" + LookUpTag;
		HTMLStr = HTMLStr.replace(LookUpTag, TempStr);	

	updateSubMenuWidth(MenuIDStr);	
}

