/*LIbreria Funzioni per Ajax*/

function RSobj() {
  var HTTPobj;
  if (window.ActiveXObject) HTTPobj = new ActiveXObject("MSXML2.XMLHTTP");
  else HTTPobj = new XMLHttpRequest();
  return HTTPobj;
}

function ajaxGETin(urlget, comp, inna) {
	var HTTPobj = new RSobj();
	HTTPobj.open("GET", urlget, true);
	HTTPobj.send(null);
	HTTPobj.onreadystatechange = function() {
		if (HTTPobj.readyState == 4) {
          if (inna == 1) document.getElementById(comp).innerHTML = HTTPobj.responseText;
          else if (inna == 2) document.getElementById(comp).innerHTML += HTTPobj.responseText;
		  if (document.ActiveXObject) HTTPobj.abort();
		}
	}
}

var HTTPobj = new RSobj();

function richiedi(urlget) {
        HTTPobj.open("GET", "module.php?m=" + urlget, true);
        HTTPobj.onreadystatechange = handleResponse;
	HTTPobj.send(null);
}

function handleResponse() {
  if(HTTPobj.readyState == 4){
     var response = HTTPobj.responseText;
     document.getElementById('content').innerHTML = response;
  }
}

var f = false;

function Response() {
  if (HTTPobj.readyState == 4) {
    if(HTTPobj.status == 200){
      results = HTTPobj.responseText; // http.responseXML;
      var para = document.getElementById('content'); //or whatever ID you gave your element.
      para.innerHTML = results;
      f = false; // re activate the AJAX function
    } else {
      var results = "Sorry, there was an error finding the server-side file. Please contact support.";
      var para = document.getElementById('errors');
      para.innerHTML = results;
    }
  }
}

function DP_AJAX(url, formname) {
  if (!f && HTTPobj) {
      var fields = new Array();
    if(formname){
      var ajax = formname;
    }
    //loop through form elements and retrieve field NAMEs and Values
    for (var x = 0; x < eval("document."+ajax+".elements.length"); x++){
     // join them into a string.
      eval("fields.push(document."+ajax+".elements[x].name+'='+document."+ajax+".elements[x].value)");
    }
    elem = 'errors';
    //sendf looks like "username=myusername&password=mypass"
    var sendf = fields.join('&');
    HTTPobj.open("POST", url, true);
    HTTPobj.onreadystatechange = Response;
    HTTPobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    HTTPobj.send(sendf);
    f = true;
  }
}

/*function ajaxPOSTxx(urlpost, comp) {
	var HTTPobj = new RSobj();
	var postData = "?testo=ciao";
	HTTPobj.open("POST", urlpost, true);

	HTTPobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    HTTPobj.setRequestHeader("Content-length", postData.length);
    HTTPobj.setRequestHeader("Connection", "close");

    HTTPobj.onreadystatechange = function() {
      	if (HTTPobj.readyState == 4) {
          if (HTTPobj.responseText == "OK") alert('ok');
          else if (HTTPobj.responseText == "LOGIN") alert('please login');
          else alert(HTTPobj.responseText);
          //document.getElementById(comp).innerHTML = HTTPobj.responseText;
		  if (document.ActiveXObject) HTTPobj.abort();
		}
    }
  HTTPobj.send(postData);
}*/




/** Oggetto "Remote Scripting Form"
  * crea un form per inviare dati attraverso l'oggeto HTTP
  * param id: l'id del form
  */
var RSForm = function (id) {

	// Imposta la variabile di classe form come il form passato
	this.form = document.getElementById(id);

	// Prende method e action del forum
	this.method = this.form.method;
	this.action = this.form.action;

	// Crea una variabile nulla per l'oggetto HTTP
	this.HTTPobj = null;

	// Crea un metodo nullo per il cambiamento di stato dell'oggetto HTTP
	this.onreadystatechange = function() { }

}

/** Metodo send dell'oggetto RSForm
  * Deve essere attivato all'onSubmit del form, e si occupa di inviare i dati
  */
RSForm.prototype.send = function() {

	// Riferisce la variabile form alla variabile di classe form
	var form = this.form;

	// Crea l'oggetto HTTP
	this.HTTPobj = RSobj();
	var HTTPobj = this.HTTPobj;

	// Associa il metodo onreadystatechange della classe a quello dell'oggetto HTTP
	HTTPobj.onreadystatechange = this.onreadystatechange;

	// Crea una variabile vuota con i dati da passare
	var data = "";

	// Per ogni elemento del form
	for (var i=0; i < form.elements.length; i++) {

		// Se il tipo è diverso da submit
		if (form.elements[i].type != "submit") {

			// Se non è il primo valore aggiunge la & per concatenare i valori
			if (i != 0) { data += "&"; }

			// Aggiugne ai dati "nome=valore" del campo
			data += form.elements[i].name +"="+ form.elements[i].value;

		}

	}

	// Invia i dati alla pagina tramite il metodo specificato nel form
        HTTPobj.open(this.method, this.action, true);
  	HTTPobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	HTTPobj.setRequestHeader('Content-length', data.length);
	HTTPobj.setRequestHeader('Connection', 'close');
	HTTPobj.send(data);

}