/* v.2.0. 20030919

JavaScript per l'implementazione dei menu a tendina.
Il codice gestisce l'apertura o la chiusura dei menu agendo sul valore
dell'attributo class (valore chiave: 'attivo').
Via CSS si gestisce il resto del lavoro.

Copyright (C) 2003 Gianluca Troiani - Studio .ConStile

Questo codice è rilasciato sotto licenza GPL: http://www.opensource.org/licenses/gpl-license.php

Studio .ConStile:	w.constile.org
			studio@w.constile.org
*/

var flag = false;

function chiudiTutto(menuID) {
	var liste = document.getElementsByTagName("ul");
	if (flag)
		for(var i=0;i<liste.length;i++)
			if ((liste[i].className == "menuTendinaOrizz" && liste[i].id != menuID) || (liste[i].className == "menuTendina" && liste[i].id != menuID))
				chiudiLivello(liste[i].firstChild.firstChild);
	flag = true;
}
function menu(e) {
	var menu = e.parentNode;
	var menuID = menu.parentNode.id;
	if (menuID) chiudiTutto(menuID)
	
   var sottoMenu;
   
   for(var j=1; j<menu.childNodes.length; j++)
   {
      var child = menu.childNodes[j];
   
      if(child.nodeType == 1)
      {
         sottoMenu = child;
         break;
      }
   }
   
	//var sottoMenu = menu.childNodes[1];
	var prossimoStato = '';

	if (sottoMenu.className != "attivo") prossimoStato = "attivo";
	chiudiLivello(sottoMenu);
	sottoMenu.className = prossimoStato;
	menu.className = prossimoStato;
	if (e.className != "fir") e.className = prossimoStato;
	flag = false;
/* le seguenti tre linee di codice fissano un bug di IE5 */
		var skin = document.getElementById('skin');
		skin.disabled = true;
		skin.disabled = false;
}

function chiudiLivello(e) {
	
	var menu;
	try {
	  menu = e.parentNode;
	}
	catch (Exception) {
		return;
  }
	
	if (e.className != "fir") e.className = "";
	var i = menu.parentNode.firstChild;
	
	do {
		if(i.childNodes.length>1) {
			i.className="";
			
			if (i.childNodes[0].className!="fir") i.childNodes[0].className = "";
      	
      	for(var j=1; j<i.childNodes.length; j++)
      	{
      	   var child = i.childNodes[j];
      	   
      	   if(child.nodeType == 1)
      	   {
      	      child.className = "";
			      chiudiLivello(child.firstChild.childNodes[0]); // ricorsione per analizzare l'albero fino alle foglie      
      	   }
      	   
      	}
      	
		}
		i = i.nextSibling;
	} while(i);
	flag = false;
}

function getKeyChiudiTutto(e) {
    var finestra = window.event;
	try {
	  if (finestra.keyCode != 9) {
	  	chiudiTutto();
	  	flag = true;
	  }
	}
	catch (Exception) {
  }
}

function getKeyMenu(e) {
    var finestra = window.event;
	try {
		if (finestra.keyCode == 13) {
		  menu(e);
		  flag = false;
	  }
	}
	catch (Exception) {
  }
}
