// JavaScript Document - dipendenze: findObj, showHideLayers
//var SaverioAjaxPageRichiesta = 'saverioajaxrichiesta.php';
//var SaverioAjaxPageRichiestaMethod = 'post';
var LastRequest='';
var divLoading='divLoading';
var divLoadingTesto='Caricamento in corso';
function execJS(node)
{
  var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
  var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
  var bMoz = (navigator.appName == 'Netscape');

  if (!node) return;

  /* IE wants it uppercase */
  var st = node.getElementsByTagName('SCRIPT');
  var strExec;

  for(var i=0;i<st.length; i++)
  {
    if (bSaf) {
      strExec = st[i].innerHTML;
      st[i].innerHTML = "";
    } else if (bOpera) {
      strExec = st[i].text;
      st[i].text = "";
    } else if (bMoz) {
      strExec = st[i].textContent;
      st[i].textContent = "";
    } else {
      strExec = st[i].text;
      st[i].text = "";
    }
//	alert(strExec);
    try {
      var x = document.createElement("script");
      x.type = "text/javascript";

      /* In IE we must use .text! */
      if ((bSaf) || (bOpera) || (bMoz))
        x.innerHTML = strExec;
      else x.text = strExec;

      document.getElementsByTagName("head")[0].appendChild(x);
    } catch(e) {
      alert(e);
    }
  }
};



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


var http_request = false;

function makeRequest(url, method, query) {
	http_request = false;
	if (query==false || typeof query == 'undefined') return;
	Loading('show', '');

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/html');
//			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		Loading('hide', "Impossibile creare l'oggetto per processare la tua richiesta, in quanto il browser in uso non lo supporta.");
		return false;
	}
	http_request.onreadystatechange = loadedContents;
	
	var http_query = null;
	http_request.open(method.toUpperCase(), url, true);

	if (method.toUpperCase()=='POST'){
	   http_query=query;
	   http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
         http_request.setRequestHeader("Content-length", http_query.length);
      http_request.setRequestHeader("Connection", "close");
	}

	http_request.send(http_query);
}

function loadedContents() {

	if(http_request.readyState === readyState.COMPLETATO) {
		if(statusText[http_request.status] === "OK") {
			if(http_request.responseText && http_request.responseText.substr(0,1) == '{'){
//				alert(http_request.responseText);
				var the_object = eval("(" + http_request.responseText + ")");
//				alert(dump(the_object));
				stampaDati(the_object['saverio']);
			} else{
				Loading('hide', "La risposta restituita non e' valida.\n\n" + http_request.responseText.split('<').join("&lt;").split('>').join("&gt;"));
			}
		} else {
			Loading('hide', "Impossibile effettuare l'operazione richiesta.<br />Errore riscontrato: " + statusText[http_request.status]);
		}
	}
}

function stampaDati(dati){
	var obj, risposta=false;
//	alert(dati);
//	alert(dati.length);
	for(var item in dati) {
		risposta=true;
		var value = dati[item];
//		alert(item + ' - ' + dati[item]);
	    if ((obj = findObj(item)) != null){
//			alert(item + ' trovato');
//			alert(dump(value));
			obj.innerHTML=value.replace(/saverioscript/g, "script");
			execJS(obj);
		} else Loading('hide', item + ' non trovato');
	}
	if (risposta=false){
		Loading('hide', "La richiesta restituita non e' valida, in quando vi e' stata una risposta vuota.");
	}
	Loading('hide', '');
}

var StatoLoading='hide';
var ScriviLoadingI=3;
var timerLoading;
function Loading(stato, mex){ /* stato: show, hide */
	return;
	StatoLoading=stato;
	if (stato=='show'){
		document.getElementsByTagName("body")[0].style.cursor='wait';
		ScriviLoadingI=3;
		ScriviLoading();
	} else {
		document.getElementsByTagName("body")[0].style.cursor='default';
		timerLoading=null;
	}
	if (mex!='') alert(mex);
	showHideLayers(divLoading, '', stato);
}

function ScriviLoading(){
	var ripeti = '.';
	ripeti = ripeti.repeat(ScriviLoadingI);
	if ((obj = findObj(divLoading)) != null){
		obj.innerHTML=(ripeti + divLoadingTesto + ripeti);
	}
	if (ScriviLoadingI++>3) ScriviLoadingI=0;
	if (StatoLoading=='show'){
		timerLoading=setTimeout('ScriviLoading()', 1000);
	}

}

String.prototype.repeat = function(l){
	return new Array(l+1).join(this);
};

