//Creazione dell'oggetto xmlhttp
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 addSmile(emoticon)
{
	prendiElementoDaId('testo_chat').value += ' {' + emoticon + '} ';
}

function leggiXML() {

	//Creo l'oggetto xmlhttp
	var ajax = assegnaXMLHttpRequest();
 
	// elemento è il div dove visualizzare il risultato della pagina
	var elemento = prendiElementoDaId('chatboard');

	// se l'oggetto è creato	
	if(ajax)
	{
		// apre la connessione in GET con la pagina prova.php passando la variabile id
		ajax.open("get", "include/chat/leggiXML.php", true);
	
		ajax.setRequestHeader("connection", "close");
		
		// al cambio di stato
		ajax.onreadystatechange = function()
		{
			// verifica dello stato
			if(ajax.readyState === readyState.COMPLETATO)
			{
			
				// verifica della risposta da parte del server
				if(statusText[ajax.status] === "OK")
				{
					// riempie il div con dati printati dalla pagina php						
					elemento.innerHTML = ajax.responseText;
					return true;
				} else {
					 // errore di caricamento
					elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />Errore riscontrato: " + statusText[ajax.status];
					return false;
				}
			/*} else if(ajax.readyState === readyState.INATTIVO) {
				elemento.innerHTML = "Stato: Inattivo...";
			} else if(ajax.readyState === readyState.INIZIALIZZATO) {
				elemento.innerHTML = "Comando Inizializzato...";
			} else if(ajax.readyState === readyState.RICHIESTA) {
				elemento.innerHTML = "Invio Richiesta...";
			} else if(ajax.readyState === readyState.RISPOSTA) {
				elemento.innerHTML = "Ricezione Risposta..."; */
			} 
		}
		// invio richiesta
		ajax.send(null);
	}
	setTimeout('leggiXML()', 5000);
};

function sendXML() {

	//Creo l'oggetto xmlhttp
	var ajax = assegnaXMLHttpRequest();
 
	// elemento è il div dove visualizzare il risultato della pagina
	var elemento = prendiElementoDaId('chatboard');
	var text_chat = prendiElementoDaId('testo_chat');
	var tot_text = escape(text_chat.value);

	// se l'oggetto è creato	
	if(ajax)
	{
		// apre la connessione in GET con la pagina prova.php passando la variabile id
		ajax.open("post", "include/chat/sendXML.php", true);
	
		ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
		ajax.setRequestHeader("connection", "close");
		
		// al cambio di stato
		ajax.onreadystatechange = function()
		{
		
			// verifica dello stato
			if(ajax.readyState === readyState.COMPLETATO)
			{
				// verifica della risposta da parte del server
				if(statusText[ajax.status] === "OK")
				{
					// riempie il div con dati printati dalla pagina php							  
					//elemento.innerHTML = ajax.responseText;
					leggiXML();
					text_chat.value = "";
					return true;
				} else {
					 // errore di caricamento
					elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />Errore riscontrato: " + statusText[ajax.status];
					return false;
				}
			/*} else if(ajax.readyState === readyState.INATTIVO) {
				elemento.innerHTML = "Stato: Inattivo...";
			} else if(ajax.readyState === readyState.INIZIALIZZATO) {
				elemento.innerHTML = "Comando Inizializzato...";
			} else if(ajax.readyState === readyState.RICHIESTA) {
				elemento.innerHTML = "Invio Richiesta...";
			} else if(ajax.readyState === readyState.RISPOSTA) {
				elemento.innerHTML = "Ricezione Risposta..."; */
			}
		}
		// invio richiesta
		ajax.send("testo_chat="+tot_text);
	}
};



	// oggetto di verifica stato
var readyState = {
	INATTIVO:	0,
	INIZIALIZZATO:	1,
	RICHIESTA:	2,
	RISPOSTA:	3,
	COMPLETATO:	4
};

// array descrittivo dei codici restituiti dal server
// [la scelta dell' array è per evitare problemi con vecchi browsers]
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";

onload = function()
{
leggiXML();
}

function showHelp()
{

	var testo = "Tag Utilizzabili per FlatChat:\r\n\r\n"
	+ "{{ECOM}} == 'E' Commerciale\r\n"
	+ "[b]testo[/b] == Grassetto\r\n"
	+ "[u]testo[/u] == Sottolineato\r\n"
	+ "[code]testo[/code] == Codice\r\n"
	+ "[red]testo[/red] == Testo Rosso\r\n"
	+ "[green]testo[/green] == Testo Verde\r\n"
	+ "[blue]testo[/blue] == Testo Blu\r\n"
	+ "[pink]testo[/pink] == Testo Rosa\r\n"
	+ "[yellow]testo[/yellow] == Testo Giallo\r\n\r\n\r\n";
	
	alert(testo);
}

function prendiElementoDaId(id_elemento) {
 // elemento da restituire
 var elemento;
 
 // se esiste il metodo getElementById
 // questo if sarà diverso da false, null o undefined
 // e sarà quindi considerato valido, come un true
 if(document.getElementById)
  elemento = document.getElementById(id_elemento);
 
 // altrimenti è necessario usare un vecchio sistema
 else
  elemento = document.all[id_elemento];

 // restituzione elemento
 return elemento;
}