// modificate tutte le funzioni di apertura in modo che si possa avere 
// un comportamento di tipo esplosivo

var HDom;						//se è compatibile W3C
var hloadable = true;			//se si possono caricare i menu
var hloaded = false;			//se la pagina è stata caricata


function argetIndent (theItem)
	{
	end = theItem.id.indexOf ("AXI") ;
	if (end == -1)
		return -1 ;
	return parseInt (theItem.id.substring (1, end)) ;
	}

function argetIndex (hel)
	{
	ind = -1 ;
	tempColl = document.getElementsByTagName ("DIV") ;
	for (i = 0 ; i < tempColl.length ; i++)
		{
		var theItem = tempColl [i] ;
		if (theItem.id == hel)
			{
			ind = i ;
			break ;
			}
		}
	return ind ;
	}

//hlinkcl is true if onclicked is called in a href descriptive link (i.e. the user is not clicking on the image)
function aronClicked (hel, hlinkcl)
	{
	
	if (!hloadable) return;
	if (!hloaded) return;

	
	var i = 0;
	var j = 0;
	var k = 0;
	var startsearch = -1;
	var indzero = 0;
	
	var indeo = 0;
	
	var tempdivColl = new Array();			//Array di tutti i tag Div
	var divColl = new Array();			//Array di tutti i tag Div
	var sxpColl = new Array();			//Array di tutti i tag Div cartelle di menu
	var openColl = new Array();			//Array della gerarchia degli elementi aperti (al contrario rispetto al menu)
	var openIndex = new Array();		//Indice nell'array sxpColl degli elementi di openColl
	var treeColl = new Array();			//Array albero degli elementi aperti
	
	var currindent;
	var openindent;
	var tryel;
	var tempobj;
	var td_sx;							//td di sinistra del div corrente
	var td_cx;							//td centrale del div corrente
	var td_dx;							//td di destra del div corrente
	var font_element;					//font nel link del div corrente
	var intra_element;					//td in mezzo alle voci
	var intra_element_id;				//radice dell'id del td in mezzo alle voci
	var actua_element;					//td della voce aperta
	
	var iselOpen=false;					//L'elemento è aperto? (distingue l'apertura dalla chiusura)

	var openImageMenu = imf + im_sxicon_open; //"sxicon1.jpg" ;		//Icona cartella aperta
	var closedImageMenu = imf + im_sxicon_closed; // "sxicon0.jpg" ;	    //Icona cartella chiusa
				
	theItem = document.getElementById (hel + "SXC") ;
	currindent = argetIndent (theItem) ;

	td_sx = document.getElementById (hel + "SXPTDSN")
	td_cx = document.getElementById (hel + "SXPTDCX")
	td_dx = document.getElementById (hel + "SXPTDDN")
	font_element = document.getElementById (hel + "SXPFO")

	//divColl = document.getElementsByTagName ("DIV") ;
	
	tempdivColl = document.getElementsByTagName ("DIV") ;
	j = 0;
	for (i = 0 ; i < tempdivColl.length ; i++)
		{
		tryel = tempdivColl[i] ;
		if (tryel.id.charAt (0) == "I")
			{
			divColl[j]= tempdivColl[i];
			j++;
			}
		}
	
	
	//verifica se l'utente ha cliccato sulla descrizione
	
	//verifica se l'elemento è aperto o chiuso
	//anche se l'elemento è aperto e l'utente clicca sulla descrizione il menu si deve comportare come se fosse chiuso
	if((document.images["M"+hel+"SXP"].src.indexOf(closedImageMenu) == -1))
		{
		if (hlinkcl == "true")
			{
			iselOpen = false;
			}
		else
			{
			iselOpen = true;
			}
		}
	else iselOpen = false;
	 
	//chiudo tutto			
	aronCollapseAll ();
	
	//carico in sxpcoll le voci di menu con figli
	j = 0;
	for (i = 0 ; i < divColl.length ; i++)
		{
		tryel = divColl[i] ;
		if (tryel.id.indexOf ("SXP") != -1)
			{
			sxpColl[j]= divColl[i];
			j++;
			}
		}
	
	
	//trovo in sxpColl l'elemento che è stato cliccato
	for (i = 0 ; i < sxpColl.length ; i++)
		{
		tryel = sxpColl[i] ;
		if (tryel.id == (hel+"SXP"))
			{
			startsearch=i;
			break;
			}
		}
	
	if (startsearch >= 0)
		{
		
		j = 0;
		k = currindent;
		
		//creo l'elenco delle voci aperte (1 voce per livello) in opencoll
		for (i = startsearch ; i >= 0 ; i--)
			{
			tryel = sxpColl[i] ;
			indeo = argetIndent (tryel) ;
						
			if (indeo == k)
				{
				openColl[j]=sxpColl[i];
				openIndex[j]=i;
				j++;
				k--;
				}
			if (indeo == 0)
				{
				indzero = i;
				break;
				}
			}
		
		//scandendo sxpcoll in avanti e all'indietro partendo dall'elemento in
		//opencoll creo in treecoll l'albero degli elementi aperti
		k=0;
		for (j=openColl.length-1; j>=0; j--)
			{
			for(i=openIndex[j]; i>=0; i--)
				{
				tryel = sxpColl[i] ;
				indeo = argetIndent (tryel) ;
				openindent = argetIndent (openColl[j]);
				if (openindent == indeo)
					{
					treeColl[k]=sxpColl[i];
					k++;
					}
				else if (openindent>indeo)
					{
					break;
					}
				}
			for(i=openIndex[j]; i<sxpColl.length; i++)
				{
				tryel = sxpColl[i] ;
				indeo = argetIndent (tryel) ;
				openindent = argetIndent (openColl[j]);
				if (openindent == indeo)
					{
					treeColl[k]=sxpColl[i];
					k++;
					}
				else if (openindent>indeo)
					{
					break;
					}
				}
			}	
		
		//aggiungo alle voci di menu quelle del livello successivo
		openindent = argetIndent (openColl[0]);
		for (i = (openIndex[0]+1); i < sxpColl.length ; i++)
			{
			tryel = sxpColl[i] ;
			indeo = argetIndent (tryel) ;
			if (openindent == (indeo-1))
				{
				treeColl[k]=sxpColl[i];
				k++;
				}
			else if (openindent == indeo)
				{
				break;
				}
			}
		
		//mostra tutti gli elementi dell'albero
		for (i = 0; i < treeColl.length; i++)
			{
			treeColl[i].style.display = "block" ;
			intra_element_id = treeColl[i].id;
			intra_element_id = intra_element_id.substr(0, intra_element_id.length-3);
			intra_element = document.getElementById (intra_element_id + "SXPINTRA");			
			if (intra_element) intra_element.style.display = "block";
			actua_element = document.getElementById (intra_element_id + "SXPACTUA");
			if (actua_element) actua_element.style.display = "block";
			
			}
		
		//mette l'icona di aperto a tutti gli elementi di opencoll	
		for (i = 0; i < openColl.length; i++)
			{
			var itd_sx;
			var itd_sd;
			var ifornt_element;
			
			tryel = openColl[i];
			document.images ["M"+tryel.id].src = openImageMenu;
			//metto la classe di aperto a tutti gli elementi di opencoll
			itd_sx = document.getElementById (tryel.id + "TDSN")
			itd_cx = document.getElementById (tryel.id + "TDCX")
			itd_dx = document.getElementById (tryel.id + "TDDN")
			ifont_element = document.getElementById (tryel.id + "FO")
			if (itd_sx) itd_sx.className = arptd_apertosx;
			if (itd_cx) itd_cx.className = arptd_apertocx;
			if (itd_dx) itd_dx.className = arptd_apertodx;
			if (ifont_element) ifont_element.className = farptd_aperto;
			
			}
		
		//mostra un solo item di menu senza figli (ha lo stesso nome dell'elemento
		//cliccato con desinenza sxc invece di sxp
		
		//divColl = document.getElementsByTagName ("DIV") ;
		
		tempdivColl = document.getElementsByTagName ("DIV") ;
	    j = 0;
	    for (i = 0 ; i < tempdivColl.length ; i++)
		{
		    tryel = tempdivColl[i] ;
		    if (tryel.id.charAt (0) == "I")
		    {
			     divColl[j]= tempdivColl[i];
			     j++;
		    }
		}
		
		for (i = 0 ; i < divColl.length ; i++)
			{
			tryel = divColl[i] ;
			if (tryel.id.indexOf ("SXC") != -1 )
				{
				if (tryel.id == (hel+"SXC"))
					{
					tryel.style.display = "block" ;
					}
				}
			}
		
		//da qui in poi viene eseguita se l'elemento è aperto e lo si clicca
		//per chiuderlo		
		if (iselOpen)
			{
			
			//chiude tutte le voci di livello inferiore a quella cliccata
			openindent = argetIndent (openColl[0]);
			for (i=(startsearch+1); i<sxpColl.length; i++)
				{
				tryel = sxpColl[i] ;
				indeo = argetIndent (tryel) ;
				if (openindent == indeo)
					{
					break;
					}
				else if (openindent < indeo)
					{
					tryel.style.display = "none" ;
					intra_element_id = tryel.id;
					intra_element_id = intra_element_id.substr(0, intra_element_id.length-3);
					intra_element = document.getElementById (intra_element_id + "SXPINTRA");			
					if (intra_element) intra_element.style.display = "none";
					actua_element = document.getElementById (intra_element_id + "SXPACTUA");
					if (actua_element) actua_element.style.display = "none";
					}
				}
			//mette l'icona di chiuso alla voce cliccata
			document.images["M"+hel+"SXP"].src = closedImageMenu;
			
			//mette lo stile di classe chiusa alla voce cliccata
			if (td_sx) td_sx.className = arptd_chiusosx;
			if (td_cx) td_cx.className = arptd_chiusocx;
			if (td_dx) td_dx.className = arptd_chiusodx;
			if (font_element) font_element.className = farptd_chiuso;
			
			//chiude tutti gli item senza figli
			//divColl = document.getElementsByTagName ("DIV") ;
			
		    tempdivColl = document.getElementsByTagName ("DIV") ;
			j = 0;
			for (i = 0 ; i < tempdivColl.length ; i++)
			{
				tryel = tempdivColl[i] ;
				if (tryel.id.charAt (0) == "I")
				{
					divColl[j]= tempdivColl[i];
					j++;
				}
			}
			
			for (i = 0 ; i < divColl.length ; i++)
				{
				tryel = divColl[i] ;
				if (tryel.id.indexOf ("SXC") != -1 )
					{
						tryel.style.display = "none" ;
					}
				}
			}	
		}
	else
		{
		alert(startsearch);
		window.status="startsearch "+startsearch;
		}
		
	//return 100;
	}
	




 
function arswitchVisibility (theItem, image, image2)
	{
	if (theItem.style.display == "none")
		{
		theItem.style.display = "block" ;
		if (image)
			image.src = imf + im_sxicon_open; //"sxicon1.jpg" ;
		if (image2)
			image2.src = imf + "sxicon3.gif" ;
		}
	  else
		{
		theItem.style.display = "none" ;
		if (image)
			image.src = imf + im_sxicon_closed; // "sxicon0.jpg" ;
		if (image2)
			image2.src = imf + "sxicon2.gif" ;
		}
	}

function aronExpandAll ()
	{
	newSrc = imf + im_sxicon_open; //"sxicon1.jpg" ;
	//divColl = document.getElementsByTagName ("DIV") ;
	
	tempdivColl = document.getElementsByTagName ("DIV") ;
	    j = 0;
	    for (i = 0 ; i < tempdivColl.length ; i++)
		{
		    tryel = tempdivColl[i] ;
		    if (tryel.id.charAt (0) == "I")
		    {
			     divColl[j]= tempdivColl[i];
			     j++;
		    }
		}

	
	for (i = 0 ; i < divColl.length ; i++)
		{
		hel = divColl[i] ;
		hel.style.display = "block";
		if (hel.id.indexOf ("SXP") != -1)
			{
			document.images["M"+hel.id].src = newSrc ;
			if (bOpenIcon)
				document.images["N"+hel.id].src = imf + "sxicon3.gif" ;
			}
		}
	}

function aronCollapseAll ()
	{
	
	var intra_element;
	var ctd_sx; 
	var ctd_dx;
	var cfont_element; 
	var intra_element;
	var actua_element;
	
	var divColl= new Array();
	
	newSrc = imf + im_sxicon_closed; // "sxicon0.jpg";	 
	
	//divColl = document.getElementsByTagName ("DIV");
	
	tempdivColl = document.getElementsByTagName ("DIV") ;
	    j = 0;
	    for (i = 0 ; i < tempdivColl.length ; i++)
		{
		    tryel = tempdivColl[i] ;
		    if (tryel.id.charAt (0) == "I")
		    {
			     divColl[j]= tempdivColl[i];
			     j++;
		    }
		}

	
	for (i = 0 ; i < divColl.length ; i++)
		{
		hel = divColl[i] ;
		if (hel.id.indexOf ("SXP") != -1)
			{
			document.images ["M"+hel.id].src = newSrc;
			
			//mette lo stile di classe chiusa alla voce cliccata
			
			ctd_sx = document.getElementById (hel.id + "TDSN");
			ctd_cx = document.getElementById (hel.id + "TDCX");
			ctd_dx = document.getElementById (hel.id + "TDDN");
			cfont_element = document.getElementById (hel.id + "FO");
			if (ctd_sx) ctd_sx.className = arptd_chiusosx;
			if (ctd_cx) ctd_cx.className = arptd_chiusocx;
			if (ctd_dx) ctd_dx.className = arptd_chiusodx;
			if (cfont_element) cfont_element.className = farptd_chiuso;
			 
			
			if (bOpenIcon)
				document.images ["N"+hel.id].src = imf + "sxicon2.gif";
			
			}
		if (hel.id.indexOf ("SXC") != -1 || argetIndent (hel) > 0)
			{
			hel.style.display = "none";
			intra_element = document.getElementById (hel.id + "INTRA");
			if (intra_element) intra_element.style.display = "none";
			actua_element = document.getElementById (hel.id + "ACTUA");
			if (actua_element) actua_element.style.display = "none";
			}
		}
	}

function arhinitialize (hmenu_open)
	{
	
	HDom=(document.getElementById && document.documentElement)? true:false;
	if (HDom)
	{
	
	var nextind=0;
	var sxpind=0;
	var state;
	
	var tempColl= new Array();
	
	hloaded=true;

	//tempColl = document.getElementsByTagName ("DIV");
	
	tempdivColl = document.getElementsByTagName ("DIV") ;
	    j = 0;
	    for (i = 0 ; i < tempdivColl.length ; i++)
		{
		    tryel = tempdivColl[i] ;
		    if (tryel.id.charAt (0) == "I")
		    {
			     tempColl[j]= tempdivColl[i];
			     j++;
		    }
		}

	
	for (i = 0 ; i < tempColl.length ; i++)
		{
		hel = tempColl[i];
		ii = argetIndent (hel);
		
		if (!state) 
			{
			if ((hel.id.indexOf ("SXC") != -1 && ii == showLevel) || ii > showLevel) hel.style.display = "none";
			}
		  else if (hel.id.indexOf ("SXP") != -1)
			{
			var bset = false;
			if (i >= nextind && state.substr (sxpind,1) == "0")
				{
				var helid = hel.id.substring (0,hel.id.indexOf ("SXP"));
				nextind = aronClicked (helid);
				bset = true;
				}

			if (!bset && i >= nextind)
				{
				document.images ["M"+hel.id].src = imf + im_sxicon_open //"sxicon1.jpg" ;
				if (bOpenIcon) document.images ["N"+hel.id].src = imf + "sxicon3.gif"  ;
				}
			sxpind++;
			}
		}
	//apre il menu scelto nel parametro di initialize
	if (hmenu_open)	aronClicked(hmenu_open);
	}
	else
	{
		hloadable=false;
	}
	}