function toggleNode(src, id, sid)
{
	var ret = true;
	var el = document.getElementById(id);
	if (el != null)
	{
		if (src.className == "nodePlus")
		{
			// Open node
			src.className = "nodeMinus";
			src.title = "Chiudi";
			el.className = "node";
			ret = getContent(el.id, sid);
		}
		else
		{
			// Close node
			src.className = "nodePlus";
			src.title = "Apri";
			el.className = "hidden";
			if (el.load == undefined)
				el.load = true;
			ret = false;
		}
	}
	
	return ret;
}

function getContent(id, sid)
{
	var ret = true;
	var el = document.getElementById(id);
	if (el != null)
	{
		if (!el.load && !el.loading)
		{
			if (el.trying == undefined)
				el.trying = 2;
			
			var info = el.id.replace("node_","").split('_');
			ret = loadXML("xml_portali.asp?t=" + escape(info[0]) + "&id=" + escape(info[1]) + "&o=" + escape(info[2]) + "&el=" + escape(el.id) + ((sid != undefined) ? "&sid=" + escape(sid) : ""));
			
			if (!ret)
			{
				el.loading = true;
				
				// Se ritarda per pił di mezzo secondo imposta il messaggo di attesa
				el.setwaiting = setTimeout("setWaiting('" + el.id + "')", 500);

				// Se non ci riesce in 3 sec ci riprova per 3 volte
				el.timeout = setTimeout("timeout('" + el.id + "')", 3000);
			}
		}
		else
			ret = false;
	}
	
	return ret;
}

function setContent()
{
	var ret = false;
	try
	{
		if (window.request.readyState == 4)
		{
			if (window.request.responseXML != null)
			{
				var id = window.request.responseXML.firstChild.getAttribute("id");
				var sid = window.request.responseXML.firstChild.getAttribute("sid");
				var el = document.getElementById(id);
				if (el != null)
				{
					clearTimeout(el.setwaiting);
					clearTimeout(el.timeout);
					el.load = true;
					
					var items = window.request.responseXML.getElementsByTagName("item");
					if (items.length > 0)
					{
						el.innerHTML = "";
						var ul = document.createElement("ul");
						el.appendChild(ul);
						var li;
						var div;
						var url;
						var welcome;
						var a;
						var nome2;
						var url2;
						var welcome2;
						for (var i = 0; i < items.length; i++)
						{
							div = null;
							li = document.createElement("li");
							text = (items[i].textContent) ? items[i].textContent : items[i].text;
							url = items[i].getAttribute("url");
							if (url)
							{
								welcome = items[i].getAttribute("welcome");
								if (sid != "" && welcome != "")
								{
									if (url.lastIndexOf("/") > 8)
										url = url.substring(0, url.lastIndexOf("/")) + welcome + sid;
									else
										url += welcome + sid;
								}
								div = document.createElement("div");
								div.className = "link";
								div.innerHTML = "<a href=\"" + HTMLEscape(url) + "\" onclick=\"window.open(this.href); return false;\">" + HTMLEscape(text) + "</a>";
								li.appendChild(div);
							}
							else
								li.innerHTML = HTMLEscape(text);
							
							nome2 = items[i].getAttribute("nome2");
							if (nome2)
							{
								url2 = items[i].getAttribute("url2");
								if (url2)
								{
									welcome2 = items[i].getAttribute("welcome2");
									if (sid != "" && welcome2 != "")
									{
										if (url2.lastIndexOf("/") > 8)
											url2 = url2.substring(0, url2.lastIndexOf("/")) + welcome2 + sid;
										else
											url2 += welcome2 + sid;
									}

									if (div != null)
									{
										div.innerHTML += "<br/><span>(<a href=\"" + HTMLEscape(url2) + "\" onclick=\"window.open(this.href); return false;\">" + HTMLEscape(nome2) + "</a>)</span>";
									}
									else
										div.innerHTML += "<br/><span>(<a href=\"" + HTMLEscape(url2) + "\" onclick=\"window.open(this.href); return false;\">" + HTMLEscape(nome2) + "</a>)</span>";
								}
								else if (div != null)
									div.innerHTML += "<br/><span>(" + HTMLEscape(nome2) + ")</span>";
								else
									li.innerHTML += "<br/><span>(" + HTMLEscape(nome2) + ")</span>";
							}
							ul.appendChild(li);
						}
					}
					else
						el.innerHTML = "";
				}
			}
		}
	}
	catch (e) {}

	return ret;
}

function setWaiting(id)
{
	var el = document.getElementById(id);
	if (el != null)
	{
		if (el.loading && !el.load)
			el.innerHTML = "<img src=\"https://ssl.firenzetecnologia.com/portali/img/loading.gif\" alt=\"Loading\" style=\"display: inline; vertical-align: top\" /> attendere...";
		
		clearTimeout(el.setwaiting);
	}
}

function timeout(id)
{
	var el = document.getElementById(id);
	if (el != null)
	{
		clearTimeout(el.timeout);
		el.loading = false;
		var trying = parseInt(el.trying);
		if (el.trying > 0)
		{
			el.trying = el.trying - 1;
			getContent(el.id);
		}
		else
		{
			el.load = true;
			el.innerHTML = "";
			el.className = "hidden";
		}
	}
	return false;
}

function loadXML(url)
{
	var ret = true;
	if (window.ActiveXObject)
	{
		window.request = new ActiveXObject("Microsoft.XMLHTTP");
		if (window.request)
		{
			window.request.onreadystatechange = setContent;
			window.request.open("GET", url, true);
			window.request.send();
			ret = false;
		}
	}
	else if (window.XMLHttpRequest)
	{
		window.request = new XMLHttpRequest();
		window.request.onreadystatechange = setContent;
		window.request.open("GET", url, true);
		window.request.timeout = 5000;
		window.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		window.request.send(null);
		ret = false;
	}
	
	return ret;
}

function HTMLEscape(str)
{
	var div = document.createElement("div");
	div.innerHTML = str;
	var text = (div.textContent) ? div.textContent : div.innerText;
	
	return text;
}
