
function createXHR()
{
	var request = false;
	try
	{
		request = new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch (err2)
	{
		try
		{
			request = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (err3)
		{
			try
			{
				request = new XMLHttpRequest();
			}
			catch (err1) 
			{
				request = false;
			}
		}
	}
	return request;
}

function loadHTML(url, storage)
{
	storage = document.getElementById(storage);
	var xhr = createXHR();
	xhr.onreadystatechange=function()
	{ 
		if(xhr.readyState == 4)
		{
			if(xhr.status == 200)
			{
				if (storage)
				{
					storage.innerHTML = xhr.responseText;
				}
				else
				{
					alert(xhr.responseText);
					// messageInfo_add('giallo', xhr.responseText, 20);
				}
			}
			else
			{
				alert('Si è verificato un problema tecnico di connessione.\nSe il problema persiste, contattare il webmaster.\n\nurl: ['+url+']');
			}
		}
	};
	xhr.open("GET", url , true);
	xhr.send(null);
}

function divSpinnerRefill(storage, htmlLabel)
{
	obj = document.getElementById(storage);
	if (obj)
	{
		obj.innerHTML = '<div class="zloadHTML_spinner">'+htmlLabel+'</div>';
		obj.style.display = 'block';
	}
}

function divSpinnerAdd(storage, style, label)
{
	obj = document.getElementById(storage);
	if (obj)
	{
		obj.innerHTML += '<div class="zloadHTML_spinner" style="'+style+'">'+label+'</div>';
		obj.style.display = 'block';
	}
}

function loadHTML_spinner(url, storage)
{
	divSpinnerRefill(storage, 'caricamento in corso...');
	return loadHTML(url, storage);
}

function sendForm_execJs(formId)
{
	url = $(formId).action + '?' + $(formId).serialize();
	loadHTML_execJs(url);
}

function loadHTML_execJs(url, callerDiv)
{
	var xhr = createXHR();
	xhr.callerDiv = callerDiv;

	xhr.onreadystatechange=function()
	{
		if(xhr.readyState == 4)
		{
			if(xhr.status == 200)
			{
				try {
					eval(xhr.responseText);
				} catch (e) {
					if (e instanceof Error)
					{
						BugTRACK_idiv('<b>'+e+'</b><br /><div style="border: dotted 1px black; background-color: white; padding: 5px">'+xhr.responseText+'<div>');
					}
				}
			}
			else if (xhr.status == 0)
			{
				if (xhr.callerDiv)
				{
					messageInfo_updateAdd('rosso', 'azione interrotta', 15, xhr.callerDiv);
				}
			}
			else
			{
				alert('Attenzione, si è verificato un errore nel caricamento della pagina richiesta.\nPotrebbe essere dovuto ad un problema momentaneo della linea, oppure ad un effettivo errore del server.\n\nSe il problema persiste, contattare il webmaster.\n\nIndirizzo pagina:\n '+url);
			}
		}
	}
	xhr.open("GET", url , true);
	xhr.send(null);
}

function messageInfo_add(colorMessage, htmlMessage, messageDelaySeconds, divName, titleText)
{
	var isParent = false;

	var obj = document.getElementById(divName);
	if (obj)
	{
		obj.parentNode.removeChild(obj);
	}

	parentObj = null;
	MessageInfo = document.getElementById('framework_MessageInfo');
	if (!MessageInfo)
	{
		MessageInfo = window.parent.document.getElementById('framework_MessageInfo');
		if (MessageInfo)
		{
			parentObj = window.parent;
		}
		else if (window.parent.parent)
		{
			MessageInfo = window.parent.parent.document.getElementById('framework_MessageInfo');
			parentObj = window.parent.parent;
		}
		else if (window.opener)
		{
			MessageInfo = window.opener.document.getElementById('framework_MessageInfo');
			parentObj = window.opener;
		}
	}

	if (MessageInfo)
	{
		MessageInfo.style.display = 'block';
		_fwmii_+=1;

		if (!divName)
		{
			divName = 'z_fwmii_'+Math.round(Math.random()*10000);
		}
		MessageInfo.innerHTML += '<div class="framework_MessageInfoItem framework_MessageInfoColor_'+colorMessage+'" id="'+divName+'" '+(titleText ? ' title="'+titleText+'"' : '')+'><input type="button" onclick="Effect.BlindUp(\''+divName+'\', {duration: 0.2} )" class="framework_MessageInfoClose" alt="x">'+htmlMessage+'</div>';

		if (parentObj)
		{
			parentObj.framework_MessageInfo_close(divName, messageDelaySeconds);
		}
		else
		{
			framework_MessageInfo_close(divName, messageDelaySeconds);
		}
	}
	else
	{
		alert(htmlMessage);
	}
	return divName;
}

function messageInfo_update(colorMessage, htmlMessage, messageDelaySeconds, divName, titleText)
{
	obj = document.getElementById(divName);
	if (obj)
	{
		obj.className= 'framework_MessageInfoItem framework_MessageInfoColor_'+colorMessage;
		obj.innerHTML = '<input type="button" onclick="Effect.BlindUp(\''+divName+'\', {duration: 0.2} )" class="framework_MessageInfoClose" alt="x">'+htmlMessage;
		obj.title = titleText;
		framework_MessageInfo_close(divName, messageDelaySeconds);
	}
}

function messageInfo_updateAdd(colorMessage, htmlMessage, messageDelaySeconds, divName, titleText)
{
	obj = document.getElementById(divName);
	if (obj)
	{
		obj.className= 'framework_MessageInfoItem framework_MessageInfoColor_'+colorMessage;
		obj.innerHTML += '<br/>'+htmlMessage;
		obj.title = titleText;
		framework_MessageInfo_close(divName, messageDelaySeconds);
	}
}

function framework_MessageInfo_close(divName, messageDelaySeconds)
{
	setTimeout("_FMI_close('"+divName+"');", messageDelaySeconds*600);
}

function _FMI_close(divName, messageDelaySeconds)
{
	obj = $(divName);
	if (!obj)
	{
		return true;
	}
	obj = obj.parentNode;

	if (obj && (obj.attendi==true))
	{
		setTimeout("_FMI_close('"+divName+"');", 600);
	}
	else
	{
		setTimeout("Effect.BlindUp('"+divName+"', {duration: 0.3} );", messageDelaySeconds*600);
	}
}

var _fwmii_= 1;

function BugTRACK_idiv(htmlMessage)
{
	if (window.parent.document)
	{
		objDoc = window.parent.document.body;
	}
	else
	{
		objDoc = window.document.body;
	}

	divName = '_idivDebug_'+Math.random();
	objDoc.innerHTML += '<div class="idivDebug" id="'+divName+'"><input type="image" src="'+_fwz_layoutUrl_+'/buttons/chiudi.gif" onclick="Effect.BlindUp(\''+divName+'\', {duration: 0.2} )" class="framework_MessageInfoClose_debug">'+htmlMessage+'</div>';
}

function disabilitaTasti(parentNodeId)
{
	if (!parentNodeId)
	{
		return false;
	}
	parg = document.getElementById(parentNodeId);
	if (parg)
	{
		if (parg.hasChildNodes())
		{
			var children = parg.childNodes;
			for (var i = 0; i < children.length; i++) 
			{
				if (children[i].nodeName == 'INPUT')
				{
					children[i].backup_disabled = children[i].disabled;
					children[i].disabled = true;
				}
				else if (children[i].nodeName == 'A')
				{
					children[i].backup_onclick = children[i].onclick;
					children[i].onclick = new Function('e', 'return false');
				}
			}
		}
	}
}

function disabilitaTasti_restore(parentNodeId)
{
	parg = document.getElementById(parentNodeId);
	if (parg)
	{
		if (parg.hasChildNodes())
		{
			var children = parg.childNodes;
			for (var i = 0; i < children.length; i++) 
			{
				if (children[i].nodeName == 'INPUT')
				{
					children[i].disabled = children[i].backup_disabled;
				}
				else if (children[i].nodeName == 'A')
				{
					children[i].onclick = children[i].backup_onclick;
				}
			}
		}
	}
}

function disabilitaTasti_btnObj(btnObj, ifEmptyRenameWith)
{
	if (btnObj && btnObj.parentNode)
	{
		if (!btnObj.parentNode.id)
		{
			btnObj.parentNode.id = ifEmptyRenameWith;
		}
		disabilitaTasti(btnObj.parentNode.id);
	}
}

function disabilitaTasti_restore_btnObj(btnObj, ifEmptyRenameWith)
{
	if (btnObj && btnObj.parentNode)
	{
		if (!btnObj.parentNode.id)
		{
			btnObj.parentNode.id = ifEmptyRenameWith;
		}
		disabilitaTasti_restore(btnObj.parentNode.id);
	}
}

function zCallExecJs(uidDiv, labelWaiting, url)
{
	messageInfo_add('waiting', labelWaiting, 999, uidDiv, 'richiesta in corso, attendere...');
	loadHTML_execJs(url, uidDiv);
	return false;
}

