
function prendiElementoDaId(id_elemento) {
	var elemento;
	if(document.getElementById){
		elemento = document.getElementById(id_elemento);
	}else{
		elemento = document.all[id_elemento];
	}
	return elemento;
};

function cancellaRichiesta()
{
  
    ajax = assegnaXMLHttpRequest(),
    usaLink = true;
	ajax.clearRequestHeaders;
	clearTimeout(0);
	ajax.abort(); 
}

execStato = 0;
function ferma()
{
	if(ric)
		ric.abort();
	
	if(ric1)
		ric1.abort();
	
}

function azzeraStati()
{
	if(ric.readyState==1){execStato=1;}else{execStato=0;}
	if(ric){
		if(ric.readyState != 1)
			ric.abort();
	}
	
	if(execStato==0){
		if(ric1.readyState==1){execStato=1}else{execStato=0;}	
		if(ric1){
			if(ric1.readyState != 1)							
				ric1.abort();
		}
	}
	
}

ric1 = ''
function caricaTestoLight(nomliv, nomeFile) {
  
    var ajax = assegnaXMLHttpRequest(),
    elemento = prendiElementoDaId(nomliv),
    usaLink = true;
	ric1 = ajax;
	
	
  if(ajax) {
    usaLink = false;

	
    ajax.open("get", nomeFile, true);
    ajax.setRequestHeader("connection", "close");
    ajax.onreadystatechange = function() {

      if(ajax.readyState === readyState.COMPLETATO) {
        if(statusText[ajax.status] === "OK"){
          elemento.innerHTML = ajax.responseText;
          ajax.abort(); 
          
          
        }else {
          elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
        }
      } 
    }

    // invio richiesta
    ajax.send(null);
  }
	return usaLink;
	
} 

ric = '';
function caricaTesto(nomliv, nomeFile) {

  var ajax1 = assegnaXMLHttpRequest();
  ric = ajax1;  
  var elemento = prendiElementoDaId(nomliv);
  if(!elemento){
  	cancellaRichiesta();
  	return;
  }
  var usaLink = true;

	elemento.innerHTML = "<div align='center'><img alt='-' src='/images/ajax-loader.gif' /></div>";

	  if(ajax1) {
	    usaLink = false;
	    
	    ajax1.open("get", nomeFile, true);
	    ajax1.setRequestHeader("connection", "close");
	
	    ajax1.onreadystatechange = function() {
	      if(ajax1.readyState === readyState.COMPLETATO) {
	        if(statusText[ajax1.status] === "OK"){
	          elemento.innerHTML = ajax1.responseText;
	          ajax1.abort();
       
	
	        }else {
	          elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
	          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax1.status];
	        }
	      } 
	    }
	
	    // invio richiesta
	    ajax1.send(null);
	  }
	return usaLink;
	
} 






function aggiungiTesto(nomliv, nomeFile) {
	  
  var
    ajax = assegnaXMLHttpRequest(),
    elemento = prendiElementoDaId(nomliv),
    usaLink = true;
	//elemento.innerHTML = '<div align="center"><img alt="-" src="/images/ajax-loader.gif" /></div>'+elemento.innerHTML;

  if(ajax) {
    usaLink = false;


    ajax.open("get", nomeFile, true);
    ajax.setRequestHeader("connection", "close");
    ajax.onreadystatechange = function() {
      
      if(ajax.readyState === readyState.COMPLETATO) {
        if(statusText[ajax.status] === "OK"){
          elemento.innerHTML = ajax.responseText+elemento.innerHTML;
                                   
        } else {
          elemento.innerHTML += "Impossibile effettuare l'operazione richiesta.<br />";
          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
        }
      } 
    }

    // invio richiesta
    ajax.send(null);
  }
	return usaLink;
	
}


function caricaTestoSyncro(nomliv, nomeFile) {
	  
  var
    ajax = assegnaXMLHttpRequest(),
    elemento = prendiElementoDaId(nomliv),
    usaLink = true;

	elemento.innerHTML = "<div align='center'><img alt='-' src='/images/ajax-loader.gif' /></div>";

  if(ajax) {
    usaLink = false;

    ajax.open("get", nomeFile, false);
    ajax.setRequestHeader("connection", "close");
    ajax.send(null);

    elemento.innerHTML = ajax.responseText;
  }
  
	return usaLink;
} 

function Processa(nomeFile){
  var
    ajax = assegnaXMLHttpRequest(),
    usaLink = true;
          
  if(ajax) {
    usaLink = false;
    ajax.open("get", nomeFile, true);

    ajax.setRequestHeader("connection", "close");

    ajax.onreadystatechange = function() { 
    }
    ajax.send(null);
  }
  return usaLink;
}

function eseguiInRemoto(nomeFile) {
  var
    ajax = assegnaXMLHttpRequest();

  if(ajax) {
    ajax.open("get", nomeFile, false);
    ajax.setRequestHeader("connection", "close");
    ajax.send(null);
    return ajax.responseText;
  } 
  else {
    return false;
  }
} 






  if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement) {
    HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode) {
      switch (where){
        case "beforeBegin":
          this.parentNode.insertBefore(parsedNode,this)
          break;
        case "afterBegin":
          this.insertBefore(parsedNode,this.firstChild);
          break;
        case "beforeEnd":
          this.appendChild(parsedNode);
          break;
        case "afterEnd":
          if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);
          else this.parentNode.appendChild(parsedNode);
          break;
      }
    }
    
    HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var parsedHTML = r.createContextualFragment(htmlStr);
        this.insertAdjacentElement(where,parsedHTML)
    }
  
    HTMLElement.prototype.insertAdjacentText = function(where,txtStr) {
      var parsedText = document.createTextNode(txtStr)
      this.insertAdjacentElement(where,parsedText)
    }
  }

  function trim(str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  }

  function sleep(millis) {
  var 
    date = new Date(),
    curDate = null;
  
    do { curDate = new Date(); } 
    while(curDate-date < millis);
  
  }


	
	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;
	};




		var readyState = {
			INATTIVO:	0,
			INIZIALIZZATO:	1,
			RICHIESTA:	2,
			RISPOSTA:	3,
			COMPLETATO:	4
		};

		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] = "Non e\' possibile completare la richiesta; riprovare piu\' tardi";		//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";
