/** (C) HTML.IT - insieme di funzioni ed oggetti utili per interagire con ajax */

/** FUNZIONI */

	// funzione per prendere un elemento con id univoco
		function prendiElementoDaId(id_elemento) {
			var elemento;
			if(document.getElementById)
				elemento = document.getElementById(id_elemento);
			else
				elemento = document.all[id_elemento];
			return elemento;
		};
	
	// funzione per assegnare un oggetto XMLHttpRequest
		function assegnaXMLHttpRequest() {

		// lista delle variabili locali
		var
		 // variabile di ritorno, nulla di default
		 XHR = null,
		 
		 // informazioni sul nome del browser
		 browserUtente = navigator.userAgent.toUpperCase();


		 // browser standard con supporto nativo
		 // non importa il tipo di browser
		 if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
		  XHR = new XMLHttpRequest();

		 // browser Internet Explorer
		 // è necessario filtrare la versione 4
		 else if(
		  window.ActiveXObject &&
		  browserUtente.indexOf("MSIE 4") < 0
		 ) {
		 
		  // la versione 6 di IE ha un nome differente
		  // per il tipo di oggetto ActiveX
		  if(browserUtente.indexOf("MSIE 5") < 0)
		   XHR = new ActiveXObject("Msxml2.XMLHTTP");

		  // le versioni 5 e 5.5 invece sfruttano lo stesso nome
		  else
		   XHR = new ActiveXObject("Microsoft.XMLHTTP");
		 }

		 return XHR;
		} 
		
	
		function ordinaMenu(id_elemento) {
		 // array di appoggio
			 var appoggio=new Array();
		 // ricavo il vettore contenente gli elementi
		 var op=prendiElementoDaId(id_elemento).options,
		 	selezionato = prendiElementoDaId(id_elemento).selectedIndex,
		 	cbomenu = prendiElementoDaId(id_elemento);
		 // travaso il tutto in appoggio
		 for (var i=0; i<op.length; i++) 
		 	{
		 		appoggio[i]=op[i].text+"|"+op[i].value;
		 		if(selezionato == i) appoggio[i]+= "|1"; else appoggio[i]+= "|0";
		 	}
		 // ordino appoggio
		 appoggio.sort();
		 // e ributto tutto nel tag select
		 for (var i=0; i<appoggio.length; i++) {
		  prendiElementoDaId(id_elemento).options[i].text=appoggio[i].split('|')[0];
			prendiElementoDaId(id_elemento).options[i].value=appoggio[i].split('|')[1];
			if(appoggio[i].split('|')[2] == '1') prendiElementoDaId(id_elemento).selectedIndex = i;
		 }
		}
			
		// funzione per leggere il contenuto presente
		// all'interno di un nodo XML, ad esempio
		// su <guida>ajax</guida> restituisce solo ajax
		function leggiContenuto(item, nomeNodo) {
		  return item.getElementsByTagName(nomeNodo).item(0).firstChild.nodeValue;
		}; 


	function AttivaFrame(iFrameID){
	   if (document.getElementById(iFrameID).contentDocument){ 
	      //Mozilla
	      return document.getElementById(iFrameID).contentDocument;
	   } else {
	      //ie
	      return document.frames[iFrameID].document;
	   }
	}
	
	function aggiornaCampo(iFrameID,campoDati,formato){
	   var contenuto = AttivaFrame(iFrameID).body.innerHTML,
	   	   contenuto2 = AttivaFrame(iFrameID).body.innertext;
	   	   
	   	   if(formato == 1)
	   	   	document.getElementById(campoDati).value = contenuto2.replace(/</g,"<");
	   	   else
	   	   document.getElementById(campoDati).value = contenuto.replace(/</g,"<");
	} 

		function mostraAgenda(mese,anno) {

			var ajax = new assegnaXMLHttpRequest(),
				divagenda = prendiElementoDaId("divAgenda");

			if (ajax) {
			  ajax.open("GET", "aj_agenda.asp?mese="+mese+"&anno="+anno, true);
			  ajax.setRequestHeader("connection", "close");
		      ajax.onreadystatechange = function() {
		        if(ajax.readyState === readyState.COMPLETATO) {
		          if(statusText[ajax.status] === "OK")
		            divagenda.innerHTML = ajax.responseText;			
		           else {
		            divagenda.innerHTML = "<p class=\"errore\">Errore nella lettura dei dati</p>";
		            //alert("Non è stato possibile caricare l'immagine! ("+statusText[ajax.status]+")");
		          } 
		         } 
		        }
			  ajax.send(null);

			  divagenda.innerHTML = "<p style=\"text-align: center\"><img alt=\"\" style=\"vertical-align: middle\" src=\"progress.gif\" /> Attendere</p>";
			}
		}

/** OGGETTI / ARRAY */

	// 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";
