/** 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() {
			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";
		
function showLoadingIcon(div_id) {
        temp_HTML ="<div class=\"boxRecensione\" style=\"padding: 10px; text-align: center;\"><img src=/images/icn_loading_animated.gif width=20 height=20 align=absmiddle> <strong>loading...</strong></div>";
        document.getElementById(div_id).innerHTML = temp_HTML;
}

function CaricaPagina(nomeFile,div_id) {

  // variabili di funzione
  var

    id_div = div_id;
    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest(),
    // assegnazione elemento del documento
    elemento = prendiElementoDaId(id_div),
    // risultato booleano di funzione
    usaLink = true;

    // Mostriamo l'icona di Caricamento
    showLoadingIcon(id_div);
  
  // se l'oggetto XMLHttpRequest non è nullo
  if(ajax) {
    // il link al file non deve essere usato
    usaLink = false;

    // impostazione richiesta asincrona in GET
    // del file specificato
    ajax.open("get", nomeFile, 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")
          // operazione avvenuta con successo
          elemento.innerHTML = ajax.responseText;
        else {
          // errore di caricamento
          elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
        }
      } 
    }

    // invio richiesta
    ajax.send(null);
  }
  return usaLink;
} 

function espandi(numero) {
	var itemMenu = document.getElementById(numero);
	if (itemMenu.className=="visibile") {
		itemMenu.className="invisibile";
	}
	else {
		itemMenu.className="visibile";
	}
}

var controllaloginurl = "/ajax/ajax_controllalogin.cfm?login="; 
var http = assegnaXMLHttpRequest();

function controllalogin() 
{ 
var nomeuser = document.getElementById("login").value; 
// showLoadingIcon('err_login');
http.onreadystatechange=handleHttpResponse; 
http.open("GET", controllaloginurl + escape(nomeuser), true);
http.send(null); 
} 

function handleHttpResponse() 
{ 
  if (http.readyState==4) 
  { 
    if (http.status==200) 
    { 
       var results=http.responseText; 
       var campo=document.getElementById("login"); 
       if (results==1 & document.getElementById("login").value != "") 
       { 
         document.getElementById('err_login').innerHTML="<font color=#aa0000><strong>Login gi&agrave; scelto. Scegline un altro!</strong></font>";
		 document.struttura.login.focus();
		 http.abort();
       } 
	   else if (document.getElementById("login").value != "")
	   {
	     document.getElementById('err_login').innerHTML="";
         http.abort();
       }
       else 
	   { 
		 document.getElementById('err_login').innerHTML="";
		 http.abort();
       }
    } 
  } 
} 

function controlloemail(campo,errore) {
	var email_reg_exp=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
	    div_errore = "err_" + errore;
	if  ((campo.value != '' & campo.value != 'undefined') & (!(email_reg_exp.test(campo.value)))) {
		 document.getElementById(div_errore).innerHTML="<br><font color=#aa0000><strong>Email Errata!</strong></font>";
		 campo.focus();
         return false;
        }
    else if (email_reg_exp.test(campo.value)) {	
	        document.getElementById(div_errore).innerHTML="";
            return true;
            }
    else return true;
}
