var temp, temp2, cookieArray, cookieArray2, cookieCount, containerul;
var imgfolder='img/';
var imgexpand='folder.gif';
var imgcollapse='folderopen.gif';
var imgdoc='un_doc.gif';

function initiate(){//viene invocata tutte le volte che la pagina viene caricata
	containerul = document.getElementById("containerul");

	cookieCount=0;
	if(document.cookie){//viene inserita nell'array cookieArray la struttura (nodo aperto) dell'albero
		cookieArray=document.cookie.split(";");
		cookieArray2=new Array();
		for(i in cookieArray){
			cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
		}
	}
	cookieArray=(document.cookie.indexOf("state=")>=0)?cookieArray2["state"].split(","):new Array();

	if(0==0){//controllo per poter eliminare il pezzo di codice in fase di debug
	for(var o=0;o<containerul.getElementsByTagName("li").length;o++){
		//itera su tutti gli elementi LI dell'albero e li mostra o nasconde in base a cio' che e' scritto nel cookie
		if(containerul.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
			temp2				= containerul.getElementsByTagName("li")[o].getElementsByTagName("img");
			temp2.src			= (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?imgfolder+imgcollapse:imgfolder+imgexpand):imgfolder+imgexpand;
			temp2.alt			= (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"contrai":"espandi"):"espandi";
			temp2.onclick		= function(){showhide(this.parentNode);writeCookie();}
			containerul.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
			if(cookieArray[cookieCount]=="true"){//non so perche' ma ci deve stare!!!
				showhide(containerul.getElementsByTagName("li")[o]);
			}
			cookieCount++;
		}
	}
}
//	closeall(containerul.getElementsByTagName("li")[0]);
}

function closeall(tag){
//  tag e' il tag <li> che deve essere lasciato aperto, se esiste.
//  navigo su tutti i tag <ul> che stanno dentro containerul
	for(var ul=0;ul<containerul.getElementsByTagName("ul").length;ul++){
		var ULelement = containerul.getElementsByTagName("ul")[ul];
		// chiudo se l'elemento UL ha dei figli (UL o LI) e se NON è lui stesso figlio dell'unico nodo da espandere
		if(((ULelement.getElementsByTagName("ul").length>0) || (ULelement.getElementsByTagName("li").length>0)) && (ULelement.parentNode != tag)){
			//nel caso debba essere chiuso devo iterare su tutti i tag LI e controllare che il
			//tag da espandere non sia uno dei suoi figli, in questo caso non devo chiuderlo
			var LIarray = ULelement.getElementsByTagName("li");
			var CanCollapse = true;
			for(var m=0;m<LIarray.length;m++){
				if(LIarray[m] == tag){
					CanCollapse = false;
				}
			}
			if(CanCollapse){
				temp2					= ULelement.parentNode.getElementsByTagName("img");
				temp2[0].src				= imgfolder+imgexpand;
				temp2[0].alt				= "espandi";
				ULelement.style.display = "none";
			}
		}
	}
}

function showhide(el){
var elClicked = el;
	if(elClicked.getElementsByTagName("a")[0]){
		if (elClicked.getElementsByTagName("a")[0].className=="limaster_selected"){
			elClicked.getElementsByTagName("a")[0].className="limaster";
		}else{
			elClicked.getElementsByTagName("a")[0].className="limaster_selected";
		}
	}else if(elClicked.getElementsByTagName("span")[0]){
		if (elClicked.getElementsByTagName("span")[0].className=="limaster_selected"){
			elClicked.getElementsByTagName("span")[0].className="limaster";
		}else{
			elClicked.getElementsByTagName("span")[0].className="limaster_selected";
		}
	}else{
		alert("errore");
	}
	if(el.getElementsByTagName("ul")[0].style.display=="none"){
		el.getElementsByTagName("ul")[0].style.display="block";
		el.getElementsByTagName("img")[0].src=imgfolder+imgcollapse;
		el.getElementsByTagName("img")[0].alt="contrai";
	}else{
		el.getElementsByTagName("ul")[0].style.display="none";
		el.getElementsByTagName("img")[0].src=imgfolder+imgexpand;
		el.getElementsByTagName("img")[0].alt="espandi";
	}
	closeall(el);
}

function writeCookie(){		// Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
	cookieArray=new Array()
	for(var q=0;q<containerul.getElementsByTagName("li").length;q++){
		if(containerul.getElementsByTagName("li")[q].childNodes.length>0){
			if(containerul.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" && containerul.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
				cookieArray[cookieArray.length]=(containerul.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
			}
		}
	}
	var expiredays = "1";
	var ExpireDate = new Date ();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
	var ExpireDateGMT = ExpireDate.toGMTString();
	document.cookie="state="+cookieArray.join(",")+";expires="+ExpireDateGMT;
}