var myRequest = null;

var recentHash = "";

var recentSummary = "";

function CreateXmlHttpReq(handler,ref_id) {
  var xmlhttp = null;
  try {
    xmlhttp = new XMLHttpRequest();
  } catch(e) {
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }

  xmlhttp.onreadystatechange = function() {
  	if (myRequest.readyState == 4 && myRequest.status == 200) {
  		myHandler(ref_id);
  	}
  };
  return xmlhttp;
}

/*
	quando la richiesta viene soddisfatta con successo viene restituita la risposta (mandata dalla funzione php richiamata sul server) all'elemento del documento indicato dall'identificativo ref_id
*/


function myHandler(ref_id) {
    if (myRequest.readyState == 4 && myRequest.status == 200) {
        e = document.getElementById(ref_id);
        
        if(myRequest.responseText.match("goto!!")) {
        	s_state = myRequest.responseText.split("!!")[1];
        	par = myRequest.responseText.split("!!")[2];
        	if(par != '')	state = s_state+"&"+par;
        	else state = s_state;
        	gotoState(state);
        }
        else {
        	e.innerHTML = myRequest.responseText;      
    	}
    }
    else {
		alert("Errore: "+myRequest.statusText);
	}
}


/*
	form_id e l'identificativo del form che invia la richiesta,
	url e l'indirizzo del file (su server) il quale elabora la richiesta,
	ref_id e l'identificatore dell'elemento che deve ricevere la risposta
*/
function sendPostForm(form_id, url, ref_id) {

	try {
		// per in seguito inserire tutte le variabili di tipo request
		var variables = Array();
	
		// variabile passata dal form che da il numero totale di variabili passate
		nov=parseInt(document.forms[form_id].numvar.value);
	
		string_var = "";
	
		// ciclo per mettere nell'array variables tutti i valori delle variabili passate (var1 var2 etc...)
		for(i=1; i<nov+1; i++) {
			actual_var = "var"+i;
			if(actual_var != null) {
				variables[i] = document.forms[form_id].elements[actual_var].value;
			}
			else {
				variables[i] = '';
			}
			// preparo la stringa di passaggio delle variabili
			string_var = string_var+actual_var+"="+variables[i]+"&";
		}
	
		// creo l'oggetto httprequest
		myRequest = CreateXmlHttpReq(myHandler, ref_id);
	
		// apro la richiesta indicandone il tipo
		myRequest.open("post", url, true);
	
		// serve per request di tipo post
		myRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
		// invio la richiesta (con get mando null e non variabili)
		myRequest.send(string_var);	// Trasferimento
	}
	catch(e) {
		alert("Errore: "+e);
	}
	
}

function sendGetPt(url, ref_id) {
	 
	try {
		recentHash = window.location.hash;
		myRequest = CreateXmlHttpReq(myHandler, ref_id);
		myRequest.open("get", url, true);
		myRequest.send(null);
	
	}
	catch(e) {
		alert("Errore: "+e);
	}
	
}

function gotoState(state) {
	
	try {
		recentHash = '';
		window.location.hash = '#'+state;
	}
	catch(e) {
		alert("Errore: "+e);
	}
	
}


