/* ======================================== util ajax ================================================== */
/* ======================================== util ajax ================================================== */
/* ======================================== util ajax ================================================== */

// with jQuery, to encode html entities from a text : $('<div/>').text('This is fun & stuff').html(); // evaluates to "This is fun &amp; stuff"

function calendar(year, month, action){
	creaCalendar('recal.jsp', year, month, action);
}
	

	
		
	// funzione per la creazione del calendario 
	function creaCalendar(nomeFile, year, month, action) {
	
		// alert(type + " - " + cat)
		
		var ajax = assegnaXMLHttpRequest();
	
		if(ajax) {
		
			var elemento = document.getElementById("calendar-container");
			elemento.innerHTML = "<img src='images/loader.gif' alt='loading'>";
			//window.setTimeout("document.getElementById('calendar-container').innerHTML = ''", 3000);
		 	
			var nomeFileCompleto = nomeFile + "?year="+year+"&month="+month+"&action="+action;
			// impostazione richiesta asincrona in GET del file specificato
			// NON asincrono - altrimenti non si riesce a fare il return a runtime
			ajax.open("get", nomeFileCompleto, true);
	
			// rimozione dell'header "connection" come "keep alive"
			ajax.setRequestHeader("connection", "close");
	
			// impostazione controllo e stato della richiesta
			ajax.onreadystatechange = function(){

				// verifica dello stato
				if(ajax.readyState === readyState.COMPLETATO) {
				
				// verifica della risposta da parte del server

				if(statusText[ajax.status] === "OK"){
					if(ajax.responseText){
						// qui elaboro l'xml/html e lo metto nel div
						var stuff = ajax.responseText;
					 //	alert(ajax.responseText);
						elemento.innerHTML = stuff;
					}
				}
	
				else {
					// errore di caricamento
					elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
					elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
				}
			} 
		} // fine callback function
	
		// invio richiesta
		ajax.send(null);
		
		} // fine if ajax

		// restituisco l'array di marker specifici per categoria
		return null;
	
	} // fine della funzione creaMap	
			

		
		

// ajax cantina =====================================================================================================
// ==================================================================================================================
// ==================================================================================================================
	
	// funzione per assegnare un oggetto XMLHttpRequest
		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;
		};



/** 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";