/** (C) HTML.IT - insieme di funzioni ed oggetti utili per interagire con ajax */

/** FUNZIONI */
    //ricarica l'ultima pagina aperta con ajax 
    function refreshParent()
    {
       doc=window.opener.reloadAjax();
    }
    
    function checkFormMail(obj)
    {
        nome=document.getElementById('nome');
        email=document.getElementById('email');
        messaggio=document.getElementById('messaggio');
        
        if(nome.value=='') 
            { 
                alert('Il campo nome non puņ essere vuoto.'); 
                nome.focus();
                return false;
            }
        if(email.value=='') 
            { 
                alert('Il campo email non puņ essere vuoto.'); 
                email.focus();
                return false;
            }
        
        if(!checkEmailAddress(email.value))
        {
            alert('Formato email non valido.'); 
                email.focus();
                return false;
        }
        if(messaggio.value=='') 
            { 
                alert('Il campo messaggio non puņ essere vuoto.'); 
                messaggio.focus();
                return false;
            }
       //document.getElementById(obj).submit();
       var stringa="nome="+nome.value+"&email="+email.value+"&messaggio="+escape(messaggio.value);
       document.getElementById('statusMessage').style.display='block';
       return getWithAjax(document.getElementById(obj).action+"?"+stringa,'statusMessage');
    }
	
    
    function checkEmailAddress(indirizzo) {
    if (window.RegExp) 
    {
        var nonvalido = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
        var valido = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
        var regnv = new RegExp(nonvalido);
        var regv = new RegExp(valido);
        if (!regnv.test(indirizzo) && regv.test(indirizzo))
            return true;
        return false;
	}
    else 
    {
        if(indirizzo.indexOf("@") >= 0)
            return true;
        return false;
  	}
  }
    
    
    // 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;
		};
    
    // funzione per cambiare dinamicamente il contenuto di un contenitore
        function getWithAjax(nomefile,contenitore) {
	 var width=parseInt(document.getElementById(contenitore).style.width);
        document.getElementById(contenitore).innerHTML="<span style=\"position:absolute; width:"+width+"px; top:40%; font-size:10px; text-align:center; \"><img src='images/loading.gif'><br/>Loading...</span>";	 
        var ajax = assegnaXMLHttpRequest(); 
        usalink=true;   
        if(ajax)
        {
            usalink=false;     
            ajax.open("GET",nomefile,true);
            ajax.setRequestHeader("connection", "close");
            
            ajax.onreadystatechange = function() 
            {
                if(ajax.readyState === 4) 
                {
                    if(ajax.status == 200)
                    {    
                        document.getElementById(contenitore).innerHTML = ajax.responseText;
                    }
                    else
                        document.getElementById(contenitore).innerHTML = statusText[ajax.status];    
                }
            }
            ajax.send(null);
           
        }
        return usalink;

}

        function postWithAjax(nomefile,contenitore,infotosend) { 
            //Creo un nuovo oggetto XMLHTTPRequest
            var req = assegnaXMLHttpRequest(); 
            if(req)
            {
                  //Invio la richiesta
				req.open("POST", nomefile, true);
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				
                //Invio i dati POST
				req.send(infotosend);
				
				//Gestore dell'evoluzione dello stato dell'oggetto req
				req.onreadystatechange = function() 
                {
                    if(req.readyState === 4) 
                    {
                        if(req.status == 200)
                        {    
                            document.getElementById(contenitore).innerHTML = req.responseText;
                        }
                        else
                            document.getElementById(contenitore).innerHTML = statusText[req.status];   
                    }
                }   
                
            }
          
}

/** 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";
