function MM_findObj(n, d) { //v4.0
  var p,i,x;  
  
  /*
  ho la sensazion che i seuenti siano tutti tentativi in sequenza di ottenere lo stesso
  risultato e che si escludono a vicenda, se il risultato e' trovato annulla le ricerche
  succesive...
  */
    if(!d) d=document;  //se d non esiste, d e' il documento base
	// se p (posizione del primo ? nella stringa n) esiste, cioe' se esiste un ? nella stringa n
	// E esiste un parent.frames.length
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
		  //d e' uguale al documento presente nel frame numero = alla sottostringa di n che segue p
          d=parent.frames[n.substring(p+1)].document; 
		  //e n e' posto uguale alla semistringa che precede la sottostringa trovata
		  n=n.substring(0,p);
		  }
	//se x NON e' uguale al valore dell'array predefinito del documento d al punto n e il documento d
	//ha degli elementi html allora x e' l'elemento html del documento al punto n	  
    if(!(x=d[n])&&d.all) x=d.all[n];
	// cicla tra tutti i <form> del documento e per ciascuno imposta x = al valore del ultimo elemento dell'ultimo form
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	
	// cicla per ogni layer del documento e imposta ricorsivamente x = al valore del tal layer
	// contenuto nel documento trattandolo come un documento a se' stante
	for (i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	//  se la x non esiste e la posizione del documento
    if(!x && document.getElementById) x=document.getElementById(n); 
	//restituisce il valore trovato
	return x;
}


/*
   
*/
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments; // modo per richiamare gli argomenti passati alla funzione?
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) //per ogni 'oggetto' trovato se non nullo
      { 
      v=args[i+2];
      if (obj.style) {   // se esiste lo style dell'elemento html
	                obj=obj.style; 
					// v = a visibile se v = a show altrimenti v = se v = hide allora hidden senno' = v
					v=(v=='show')?'visible':(v='hide')?'hidden':v;
					}
	  //imposta la visibility definitiva dell'oggetto
      obj.visibility=v;
	  obj.backgroundColor= '';
	  }
}


function My_Over(livello){
 if (livello == 'primo')   {MM_showHideLayers('Layer1','','show','Layer2','','hide','Layer3','','hide','Layer4','','hide');};
 if (livello == 'secondo') {MM_showHideLayers('Layer1','','hide','Layer2','','show','Layer3','','hide','Layer4','','hide');};
 if (livello == 'terzo')   {MM_showHideLayers('Layer1','','hide','Layer2','','hide','Layer3','','show','Layer4','','hide');};
 if (livello == 'quarto')   {MM_showHideLayers('Layer1','','hide','Layer2','','hide','Layer3','','hide','Layer4','','show');};
 //document.all.item(livello).style.backgroundColor = '';  cambiano solo il colore dello sfondo della tabella a scomparsa
}

function My_Out(livello){
 if (livello == 'primo')   {MM_showHideLayers('Layer1','','hide','Layer2','','hide','Layer3','','hide','Layer4','','hide');};
 if (livello == 'secondo') {MM_showHideLayers('Layer1','','hide','Layer2','','hide','Layer3','','hide','Layer4','','hide');};
 if (livello == 'terzo')   {MM_showHideLayers('Layer1','','hide','Layer2','','hide','Layer3','','hide','Layer4','','hide');};
 if (livello == 'quarto')   {MM_showHideLayers('Layer1','','hide','Layer2','','hide','Layer3','','hide','Layer4','','hide');};
 //document.all.item(livello).style.backgroundColor = '';  cambiano solo il colore dello sfondo della tabella a scomparsa
}