// JavaScript Document

function prendiElementoDaId(id_elemento) 
{
	var elemento;
	if(document.getElementById)
		elemento = document.getElementById(id_elemento);
	else
		elemento = document.all[id_elemento];
	return elemento;
};

function assegnaXMLHttpRequest() 
{
	var
		XHR = null,
		browserUtente = navigator.userAgent.toUpperCase();
	
	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
		XHR = new XMLHttpRequest();
	else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) 
	{
		if(browserUtente.indexOf("MSIE 5") < 0)
			XHR = new ActiveXObject("Msxml2.XMLHTTP");
		else
			XHR = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return XHR;
};

function ajaxGetHTML(url, parametri, elemento)
{
	// tipo = get/post, il tipo della comunicazione
	// url = l'indirizzo della pagina da chiamare
	// parametri = stringa con l'elenco dei parametri messi come negli url
	// elemento = id dell'elemento dove stampare il risultato
	
	var
		el = prendiElementoDaId(elemento),
		ajax = assegnaXMLHttpRequest(),
		usaLink = true,
		testo = "",
		tipo = 'post',
		
		dataChiamata = new Date(),
		inizioChiamata = dataChiamata.getTime(),
		massimaAttesa = 10,
		verificaTempoTrascorso;
	
	if(parametri == undefined)
		parametri = "";
	
	if(ajax)
	{
		usaLink = false;
		
		if(tipo == "get")
		{
			ajax.open(tipo, url + "?" + parametri, true);
			ajax.setRequestHeader("connection", "close");
			ajax.send(null);
		}
		else if(tipo == "post")
		{
//			ajax.open(tipo, url + "?r=" + dataChiamata.getMilliseconds(), true);
			ajax.open(tipo, url, true);
			ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			ajax.setRequestHeader("Content-length", parametri.length);
			ajax.send(parametri);
		}
		
		ajax.onreadystatechange = function()
		{
			if(ajax.readyState == readyState.COMPLETATO)
			{
				verificaTempoTrascorso = function(){};
				if(statusText[ajax.status] == "OK")
				{
//					alert(ajax.responseText);
					eval("ret = " + ajax.responseText);
					
					if(el == undefined)
					{
						elemento(ret);
					}
					else
					{
						eval(ret['Script']);
						el.innerHTML = ret['HTML'];
					}
				}
			}
		}
	}
	else
	{
		el.innerHTML = "Il client non supporta ajax!";
	}
	
	return usaLink;
}

function Ajax(Form, Elemento)
{
	var Post = 'ajax=1';
	var Action = str_replace(".html", ".ajax", Form.action);
	
	for(var i = 0; i < Form.elements.length; ++i)
	{
		Post += '&' + Form.elements[i].name + "=" + Form.elements[i].value;
		if(Form.elements[i].type == 'text')
			Form.elements[i].value = "";
	}
	
	ajaxGetHTML(Action, Post, Elemento);
	
	return false;
}

var readyState = 
{
	INATTIVO:		0,
	INIZIALIZZATO:	1,
	RICHIESTA:		2,
	RISPOSTA:		3,
	COMPLETATO:		4
};

var statusText = new Array();
statusText[100] = "Continue";
statusText[101] = "Switching Protocols";
statusText[200] = "OK";
statusText[201] = "Created";
statusText[202] = "Accepted";
statusText[203] = "Non-Authoritative Information";
statusText[204] = "No Content";
statusText[205] = "Reset Content";
statusText[206] = "Partial Content";
statusText[300] = "Multiple Choices";
statusText[301] = "Moved Permanently";
statusText[302] = "Found";
statusText[303] = "See Other";
statusText[304] = "Not Modified";
statusText[305] = "Use Proxy";
statusText[306] = "(unused, but reserved)";
statusText[307] = "Temporary Redirect";
statusText[400] = "Bad Request";
statusText[401] = "Unauthorized";
statusText[402] = "Payment Required";
statusText[403] = "Forbidden";
statusText[404] = "Not Found";
statusText[405] = "Method Not Allowed";
statusText[406] = "Not Acceptable";
statusText[407] = "Proxy Authentication Required";
statusText[408] = "Request Timeout";
statusText[409] = "Conflict";
statusText[410] = "Gone";
statusText[411] = "Length Required";
statusText[412] = "Precondition Failed";
statusText[413] = "Request Entity Too Large";
statusText[414] = "Request-URI Too Long";
statusText[415] = "Unsupported Media Type";
statusText[416] = "Requested Range Not Satisfiable";
statusText[417] = "Expectation Failed";
statusText[500] = "Internal Server Error";
statusText[501] = "Not Implemented";
statusText[502] = "Bad Gateway";
statusText[503] = "Service Unavailable";
statusText[504] = "Gateway Timeout";
statusText[505] = "HTTP Version Not Supported";
statusText[509] = "Bandwidth Limit Exceeded";

