// BY matrix666

/*
You have to follow 4 steps to make this menu working :
1) Make your own styles to customize your menu, you can follow the HTML example page
2) In your HTML page, before  "BODY" tag you have write these code lines:
	<script src="menuItems.js"></script>
3) In your HTML page you have to create a container with an ID, i.e. a TD or a DIV 
	i.e.
	<TABLE ...>
	  <TR>
	    <TD id="id_of_container">
	    </TD>
	  </TR>
	</TABLE>

4) At the end of the page, after "BODY" tag insert these code lines: 
<script>
	initializeMenu("id_of_container");
</script>

and you will have your menu.
*/


// Menu Items array **************************************
//var MenuItems = new Array();   // do not change this line*
//********************************************************

// These are your menu items, follow exemple to create your own menu

//********************************************
// You can change these lines as u want but u have to follow this plan
// MenuItems[index] = new MenuItem(text,url,father,hasSon,class);
// index 	-->	progressive index of the array
// text		-->	text you want in that item
// url		--> url of the item. If u don't want a linked item u have to write 0 (number)
// father   --> father of the item, you have to specify the father of each item of each submenu
// hasSon   --> you have to set this propertu to "true" if this item has a submenu else set it to "false"
// class    --> each item must have a css class, you can specify here
//****************************************************
/*MenuItems[1] = new MenuItem("isolamenti termici","http://",0,false,"tendinaLayer");
MenuItems[2] = new MenuItem("Progettazione impianti elettrici","http://",0,false,"tendinaLayer");
MenuItems[3] = new MenuItem("Progettazione impianti domotici","mostrasezione.asp?idsezione=progettazione%20impianti%20domotici",0,true,"tendinaLayer");
MenuItems[4] = new MenuItem("Progettazione impianti domotici1","http://",3,false,"tendinaLayer");
MenuItems[5] = new MenuItem("Progettazione impianti domotici2","http://",3,true,"tendinaLayer");
MenuItems[6] = new MenuItem("Progettazione impianti domotici3","http://",5,false,"tendinaLayer");
MenuItems[7] = new MenuItem("Progettazione impianti domotici4","http://",5,false,"tendinaLayer");
MenuItems[8] = new MenuItem("Progettazione impianti idrici","http://",0,false,"tendinaLayer");
MenuItems[9] = new MenuItem("Progettazione impianti termici","http://",0,false,"tendinaLayer");
MenuItems[10] = new MenuItem("Progettazione impianti di climatizzazione","http://",0,false,"tendinaLayer");
MenuItems[11] = new MenuItem("Progettazione impianti di ventilazione meccanica","http://",0,false,"tendinaLayer");
MenuItems[12] = new MenuItem("Progettazione solari termici","http://",0,false,"tendinaLayer");
MenuItems[13] = new MenuItem("Progettazione impianti fotovoltaici","http://",0,false,"tendinaLayer");
MenuItems[14] = new MenuItem("Progettazione impianti eolici","http://",0,false,"tendinaLayer");
MenuItems[15] = new MenuItem("Progettazione impianti geotermici","http://",0,false,"tendinaLayer");
MenuItems[16] = new MenuItem("Progettazione impianti recupero acqua piovana","http://",0,false,"tendinaLayer");
MenuItems[17] = new MenuItem("Progettazione impianti fitodepurazione","http://",0,false,"tendinaLayer");
MenuItems[18] = new MenuItem("Rilascio certificazione energetica","http://",0,false,"tendinaLayer");
*/

//*************************************************

// SETTINGS

//Do something else when mouse passes over menu items
// It must be some JavaScript code or a function name.
var something_else_to_do_Over	= "";
var something_else_to_do_Out	= "";
//*************************************************** 

//decoration HTML ***************************
//° leave blank if u don't want any decorations
//° remember to include your HTML code between <tr><td> and </td></tr> in this order as in exemple
var HTML_before						= "";
var HTML_after						= "";
//*******************************************

//Image 'arrow' settings ********************
// if u don't want any images set "I_Want_Image_Arrow" flag to "false"
var I_Want_Image_Arrow	= true;
var img_toExpand 		= "img/piu.gif"
var img_expanded		= "img/meno.gif"
var images_height 		= 13;
var images_width  		= 13;
//*******************************************

// You can write some HTML code after or/and before text of each Item
var something_after_text 	= "" 
var something_before_text 	= ""
//*******************************************************************

// Layer settings ************
var layer_offsetX			= 0;
var layer_offsetY 			= 0;
var layer_offsetWidth		= 0;
var layer_offsetHeight		= 0;		// you can see changes of this property only if u set layer_BkColor property also
//---------------
var layer_BkColor			= "";	// i.e. "#ff0000"
//****************************

// Table properties ********
var tab_border 			= 0;
var tab_cellspacing		= 0;
var tab_cellpadding		= 0;
//**************************


// IMPLEMENTATION

//***********************************************************************************************
// DO NOT CHANGE THESE CODE LINES OR MENU WON'T WORK PROPERLY !!!
//***********************************************************************************************
var container_obj = null;
var elmentodiv = null;
var strelementodiv = "";
var timerID = 0;
var mostra = 0;

function nascondi_tutte_div()
{
     if (document.getElementById)
	{
        var divtemp = "";
        //Qui cambio e faccio un ciclo su un array creato prima che contiene tutte le div dei menu
        //divtemp = document.getElementById("div_artisti");
        //divtemp.style.visibility = 'hidden';
        //divtemp = document.getElementById("div_curriculum");
        //divtemp.style.visibility = 'hidden';
        //divtemp = document.getElementById("div_newsletter");
        //divtemp.style.visibility = 'hidden';
        for (var i=0;i<arraydivmenu.length;i++)
        {
            document.getElementById(arraydivmenu[i]).style.visibility = 'hidden';
        }
        //Qui cambio e faccio un ciclo su un array creato prima che contiene tutte le div dei menu
        nascondi_layer(strelementodiv,0,"");
    }
}
function rendi_visibile_div(obj_td,nomediv)
{
    //Qui devo nascondere tutte le altre DIV
    if (document.getElementById)
	{
        elmentodiv = document.getElementById(nomediv);
        strelementodiv = nomediv;
	    mostra = 1;
	    nascondi_tutte_div();	
        if (elmentodiv != null) 
        {
            elmentodiv.style.top = getAbsoluteTop(obj_td); 
	        elmentodiv.style.left = obj_td.offsetWidth + getAbsoluteLeft(obj_td);
	        elmentodiv.style.visibility = "visible";
        }
	}
}
function nascondi_div()
{
	mostra = 0;
	clearInterval(timerID);
	timerID=setInterval('nascondi_div_2()',2000);
}
function nascondi_div_2()
{
	if (mostra == 0)
	{
	    nascondi_layer("",0,"");
	    if (elmentodiv != null) elmentodiv.style.visibility = 'hidden';
	}
}
function nascondi_layer(strnomediv,livello,item)
//Allora, se l'argomento è vuoto, allora cancello tutte le div, altrimenti solo quelle di cui passo l'argomento se il livello è >= al livello del layer.
{
    for (var i=0;i<div_create.length;i++)
		{
		    var livellotemp = 0;
		    var livellotemp = div_create[i].livello;
		    //alert(div_create[i].livello);
		    //alert (strelementodiv.length)
		    if (strnomediv.length > 1)
		    {
		        var strnomedivtemp = div_create[i].text.substring(6,strnomediv.length + 6);
		        if (strnomedivtemp != strelementodiv)
		        {
		            var lay = document.getElementById(div_create[i].text);
		            lay.style.visibility = 'hidden';
		        }
		    }
		    else
		    {
		        var lay = document.getElementById(div_create[i].text);
		            lay.style.visibility = 'hidden';
		    }
	    }
}
function nascondi_menu()
{
	if (mostra == 0)
	{
	    nascondi_layer("",0,"");
	    if (elmentodiv != null) elmentodiv.style.visibility = 'hidden';
	}
	
}

function MenuItem(text,url,father,hasSon,sc,livello)
{
	this.text		= text;
	this.url		= url;
	this.father		= father;
	if (hasSon == 0)
	{
	    this.hasSon = false;
	}
	else
	{
	    this.hasSon = true;
	}
	//this.hasSon		= hasSon;
	this.sc		= sc;
	this.livello = livello;
}
function crea_array_layer(text,livello)
{
	this.text		= text;
	this.livello = livello;
}

function initializeMenu(container,strmenu)
{
    if (document.getElementById)
	{
        var MenuItems = new Array();
        var arraystrmenu = strmenu.split("|");
        for (var i=1; i<=arraystrmenu.length; i++)
        {
            var arraytemp = arraystrmenu[i-1].split(",");
            MenuItems[i] = new MenuItem(arraytemp[0],arraytemp[1],arraytemp[2],arraytemp[3],arraytemp[4],arraytemp[5]);
        }
	    container_obj = document.getElementById(container);
	    createMenu(container,0,container,MenuItems);
	    createSubMenu(1,0,container,MenuItems);
	    adjustLayerDimension(container,MenuItems);	
    }	  
}

function createMenu(container,father,containerpadre,MenuItems)
{
	var strcontainerpadre = "'"+containerpadre+"'";
	obj = document.getElementById(container);
	var createdLayers = new Array();
	var count = 0;
	var str = '<table border="0" bordercolor="orange" cellspacing="'+tab_cellspacing+'" cellpadding="'+tab_cellpadding+'" id="tab_'+containerpadre+father+'">';
	str += HTML_before;
	for (var i=1; i<MenuItems.length; i++)
	{
		if (MenuItems[i].father == father)
		{
			str += '<tr>';
			str += '<td id="Item_'+containerpadre+i+'" ';
			var livello = 0;
			var livello = MenuItems[i].livello;
			livello++;
			//alert ("Menuitemlivello:" + MenuItems[i].livello + " LIvello:" + livello);
			if (MenuItems[i].hasSon)
			{
				str += 'onmouseOver="hideLayer_mio();showLayer('+i+','+father+','+strcontainerpadre+','+livello+');'+something_else_to_do_Over+'"';
				str += 'onmouseOut="hideLayer('+i+','+strcontainerpadre+');'+something_else_to_do_Out+'"';
			}
			else
			{
				str += 'onmouseOver="hideLayer_mio();'+something_else_to_do_Over+'"';
				str += 'onmouseOut="'+something_else_to_do_Out+'"';
			}
			str += ' >';
			str += something_before_text;
			if (MenuItems[i].url!=0) str += '<a href="'+MenuItems[i].url+'" class="'+MenuItems[i].sc+'" style="text-decoration: none;">';
			str += MenuItems[i].text;
			str += something_after_text;
			if (MenuItems[i].hasSon)
			{
				if (I_Want_Image_Arrow) str += '&nbsp;<img src="'+img_toExpand+'" id="Img_'+containerpadre+i+'" width="'+images_width+'" height="'+images_height+'" border="0" align="absmiddle">';
				if (MenuItems[i].url!=0) str += '</a>';
				str += '<div id="Layer_'+containerpadre+i+'" style="position:absolute; left:0px; top:0px; z-index:1;"></div>';
				createdLayers[count] = i;
				//div_create[div_create.length++ ] =  "Layer_"+containerpadre+i;
				div_create[div_create.length++ ] =  new crea_array_layer("Layer_"+containerpadre+i,livello);
				//alert (div_create[n_div_create]);
				count++;
			}
			else
	        {
	            if (MenuItems[i].url!=0) str += '</a>';
	        }
			str += '</td></tr>';
		}
	}
	str += HTML_after;
	str += "</table>";
	obj.innerHTML = str;
	//alert(str);
	for (i=0;i<createdLayers.length;i++)
	{
		var td  = document.getElementById("Item_"+containerpadre+createdLayers[i]);
		var lay = document.getElementById("Layer_"+containerpadre+createdLayers[i]);
		var tab = document.getElementById("tab_"+containerpadre+father);
		lay.style.top  	= layer_offsetY + getAbsoluteTop(td); 
		lay.style.left 	= layer_offsetX + td.offsetWidth + getAbsoluteLeft(td);
		lay.style.visibility = 'hidden';
	}
}
function createSubMenu(start,father,containerpadre,MenuItems)
{	
	for (var i=start; i<MenuItems.length; i++)
	{
		if (MenuItems[i].hasSon && MenuItems[i].father == father)
		{
			createMenu("Layer_"+containerpadre+i,i,containerpadre,MenuItems);
			createSubMenu(i+1,i,containerpadre,MenuItems);
		}
	}
}

function adjustLayerDimension (containerpadre,MenuItems)
{
	// to call when all menu and submenus have been created
	var tab = null;
	var layer = null;
	for (var i=1;i<MenuItems.length;i++)
	{
		if (MenuItems[i].hasSon)
		{
			tab   = document.getElementById("tab_"+containerpadre+i);
			layer = document.getElementById("Layer_"+containerpadre+i);
			//layer.style.width  = tab.offsetWidth  + layer_offsetWidth;
			//layer.style.height = tab.offsetHeight + layer_offsetHeight;
		}
	}
}

function showLayer(num,father,containerpadre,livello)
{
    mostra = 1;
    clearInterval(timerID);
    //hideLayer_mio;
	var td  = document.getElementById("Item_"+containerpadre+num);
	var lay = document.getElementById("Layer_"+containerpadre+num);
	var tab = document.getElementById("tab_"+containerpadre+father);
	lay.style.top  	= layer_offsetY + getAbsoluteTop(td); 
	lay.style.left 	= layer_offsetX + td.offsetWidth + getAbsoluteLeft(td); 
	var obj = document.getElementById("Layer_"+containerpadre+num);
	obj.style.visibility = "visible";
	//alert("passo di qui visualizzo");
	if (I_Want_Image_Arrow)
	{
		var img = document.getElementById("Img_"+containerpadre+num);
		img.src = img_expanded;
	}
}
function hideLayer(num,containerpadre)
{
	//var obj = document.getElementById("Layer_"+containerpadre+num);
	//obj.style.visibility = "hidden";
	//alert(arraylaytertohide.length);
	arraylaytertohide[arraylaytertohide.length] = "Layer_"+containerpadre+num;
	
	if (I_Want_Image_Arrow)
	{
		var img = document.getElementById("Img_"+containerpadre+num);
		img.src = img_toExpand;
	}
	
}
function hideLayer_mio()
{
    //alert("prima di qui");
	    if (arraylaytertohide.length >0)
        {
            for (var i=0; i<arraylaytertohide.length; i++)
            {
                var obj = document.getElementById(arraylaytertohide[i]);
	            obj.style.visibility = "hidden";
	            //alert(arraylaytertohide[i]);
	        }
        }
        //Qui distruggo arraylaytertohide
        //alert(arraylaytertohide.length);
        arraylaytertohide = new Array();
        //alert(arraylaytertohide.length);
}

function getAbsoluteTop(obj)
{
	if(obj == null) return 0;
	if(obj.tagName =="DIV" || obj.tagName == "div") return 0;
	if(obj.tagName =="BODY" || obj.tagName == "body") return 0;
	return obj.offsetTop + getAbsoluteTop(obj.offsetParent);
}

function getAbsoluteLeft(obj)
{
	if(obj == null) return 0;
	if(obj.tagName =="DIV" || obj.tagName == "div") return 0;
	if(obj.tagName =="BODY" || obj.tagName == "body") return 0;
	return obj.offsetLeft + getAbsoluteLeft(obj.offsetParent);
}