function ajaxRequest(){

 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
 if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i])
   }
   catch(e){
    //suppress error
   }
  }
 }
 else if (window.XMLHttpRequest) // if Mozilla, Safari etc
  return new XMLHttpRequest()
 else
  return false
}

function xmlhttpPostTest(strURL) {
//Inizializzo l'oggetto xmlHttpReq
alert ("qui");
}


//Funzione per la gestione asincrona AJAX
function xmlhttpPost(strURL,formId) {
//Inizializzo l'oggetto xmlHttpReq

var xmlHttpReq = false;
var self = this;
// qui valutiamo la tipologia di browser utilizzato per selezionare la tipologia di oggetto da creare.
// Se sono in un browser Mozilla/Safari, utilizzo l'oggetto XMLHttpRequest per lo scambio di dati tra browser e server.
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// Se sono in un Browser di Microsoft (IE), utilizzo Microsoft.XMLHTTP
//che rappresenta la classe di riferimento per questo browser
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
//Apro il canale di connessione per regolare il tipo di richiesta.
//Passo come parametri il tipo di richiesta, url e se è o meno un operazione asincrona (isAsync)
self.xmlHttpReq.open('POST', strURL, true);

//setto l'header dell'oggetto
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

/* Passo alla richiesta i valori del form in modo da generare l'output desiderato*/
if (formId ==0){
	self.xmlHttpReq.send(recuperaValore());
} else {
	self.xmlHttpReq.send(recuperaValore2(formId));	
}
/* Valuto lo stato della richiesta */
self.xmlHttpReq.onreadystatechange = function() {

/*Gli stati di una richiesta possono essere 5
* 0 - UNINITIALIZED
* 1 - LOADING
* 2 - LOADED
* 3 - INTERACTIVE
* 4 - COMPLETE*/

//Se lo stato è completo
if (self.xmlHttpReq.readyState == 4) {
/* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/

if (formId ==0){
	aggiornaPagina(self.xmlHttpReq.responseText);
} else {
	aggiornaPagina2(self.xmlHttpReq.responseText,formId);	
}
}
}

}
/*Questa funzione recupera i dati dal form.*/
function recuperaValore2(codiceForm) {
	
	var nomeForm = 'form_'+codiceForm;
	var nomeCommento = 'commento_'+codiceForm;
	var nomeImmagine = 'immaginePost_'+codiceForm;
	//document.getElementById(nomeImmagine).src="img/icone/globe.gif";
	//document.getElementById(nomeImmagine).alt = "Processing";
	document.getElementById(nomeImmagine).disabled="disabled";
	document.getElementById(nomeCommento).style.background = "#ECE9D8";
	var formwt = document.forms[nomeForm];
	var text = formwt.commento.value;
	var codice = formwt.codice.value;
	var param1 = formwt.param1.checked;
	var param2 = formwt.param2.value;
	var param3 = formwt.param3.value;
	var param4 = formwt.param4.value;
	
	var bitly_link = document.getElementById('bitly_link').value;
	
	valore = 'testo=' + text;
	valore2= 'codice=' + escape(codice);
	valore3= 'bitly_link=' + escape(bitly_link);
	valore4= 'param1=' + escape(param1);
	
	valore5= 'param2=' + escape(param2);
	valore6= 'param3=' + escape(param3);
	valore7= 'param4=' + escape(param4);
	return valore+'&'+valore2+'&'+valore3+'&'+valore4+'&'+valore5+'&'+valore6+'&'+valore7;
//	return valore+'&'+valore2+'&'+valore3;

}
function recuperaValore() {
	document.getElementById("testo").style.background = "#ECE9D8";
	document.getElementById("immaginePost").disabled="disabled";
//	document.getElementById("immaginePost").src="img/icone/globe.gif";
//	document.getElementById("immaginePost").alt = "Processing";
	var formwt = document.forms['formwt'];
	var text = formwt.testo.value;
	var codice = formwt.codice.value;
	var param1 = formwt.param1.checked;
	var param2 = formwt.param2.value;
	var param3 = formwt.param3.value;
	var param4 = formwt.param4.value;
	
//	var bitly_link = formwt.bitly_link.value;
	var bitly_link = document.getElementById('bitly_link').value;

	valore = 'testo=' + escape(text);
	valore2= 'codice=' + escape(codice);
	valore3= 'bitly_link=' + escape(bitly_link);
	valore4= 'param1=' + escape(param1);
	
	valore5= 'param2=' + escape(param2);
	valore6= 'param3=' + escape(param3);
	valore7= 'param4=' + escape(param4);
	return valore+'&'+valore2+'&'+valore3+'&'+valore4+'&'+valore5+'&'+valore6+'&'+valore7;
//	return valore+'&'+valore2+'&'+valore3;

}
/*Questa funzione viene richiamata dall'oggetto xmlHttpReq per l'aggiornamento asincrono dell'elemento risultato*/
function aggiornaPagina2(stringa,codiceForm){
	/* per debug si può utilizzare questo come param di ritorno*/
	var nomeForm = 'form_'+codiceForm;	
	var nomeImmagine = 'immaginePost_'+codiceForm;
	var nomeCommento = 'commento_'+codiceForm;
	var nomeMsg = 'msg_'+codiceForm;
	document.getElementById(nomeCommento).style.background = "#FFF";
	document.getElementById(nomeImmagine).disabled="";
	document.forms[nomeForm].commento.value = "";
	document.getElementById(nomeMsg).innerHTML = stringa;
	
}

function aggiornaPagina(stringa){
	/* per debug si può utilizzare questo come param di ritorno*/
	document.getElementById("msg").innerHTML= stringa;
	document.getElementById("testo").rows = '1';
	document.getElementById("testo").value = '';
	document.getElementById("testo").style.background = '#FFF';
	document.getElementById("immaginePost").disabled="";
}




//Funzione per la gestione asincrona AJAX
function xmlhttpTraduci(strURL) {

//Inizializzo l'oggetto xmlHttpReq
var xmlHttpReq = false;
var self = this;
// qui valutiamo la tipologia di browser utilizzato per selezionare la tipologia di oggetto da creare.
// Se sono in un browser Mozilla/Safari, utilizzo l'oggetto XMLHttpRequest per lo scambio di dati tra browser e server.
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// Se sono in un Browser di Microsoft (IE), utilizzo Microsoft.XMLHTTP
//che rappresenta la classe di riferimento per questo browser
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
//Apro il canale di connessione per regolare il tipo di richiesta.
//Passo come parametri il tipo di richiesta, url e se è o meno un operazione asincrona (isAsync)
//document.getElementById("descrizione").src="img/icone/globe.gif";
//document.getElementById("immaginePost").alt = "Processing";
self.xmlHttpReq.open('POST', strURL, true);

//setto l'header dell'oggetto
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

/* Passo alla richiesta i valori del form in modo da generare l'output desiderato*/

self.xmlHttpReq.send(recuperaOriginale());

/* Valuto lo stato della richiesta */
self.xmlHttpReq.onreadystatechange = function() {

/*Gli stati di una richiesta possono essere 5
* 0 - UNINITIALIZED
* 1 - LOADING
* 2 - LOADED
* 3 - INTERACTIVE
* 4 - COMPLETE*/

//Se lo stato è completo
if (self.xmlHttpReq.readyState == 4) {
/* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/

aggiornaTraduzione(self.xmlHttpReq.responseText);
}
}

}
/*Questa funzione recupera i dati dal form.*/
function recuperaOriginale() {
	
	var str="testo="+document.getElementById('descrizioneO').innerHTML;

	return str;

}

function aggiornaTraduzione(stringa){
/* per debug si può utilizzare questo come param di ritorno*/
document.getElementById("descrizioneO").innerHTML= stringa;
//document.getElementById("immaginePost").src="img/icone/submit.png";
//document.getElementById("testo").value = '';
}


function xmlhttpPostAction(strURL,formName) {
	//Inizializzo l'oggetto xmlHttpReq
	var xmlHttpReq = false;
	var self = this;
	
	// qui valutiamo la tipologia di browser utilizzato per selezionare la tipologia di oggetto da creare.
	// Se sono in un browser Mozilla/Safari, utilizzo l'oggetto XMLHttpRequest per lo scambio di dati tra browser e server.
	if (window.XMLHttpRequest) {
		self.xmlHttpReq = new XMLHttpRequest();
	}
	// Se sono in un Browser di Microsoft (IE), utilizzo Microsoft.XMLHTTP
	//che rappresenta la classe di riferimento per questo browser
	else if (window.ActiveXObject) {
		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	//Apro il canale di connessione per regolare il tipo di richiesta.
	//Passo come parametri il tipo di richiesta, url e se è o meno un operazione asincrona (isAsync)
	self.xmlHttpReq.open('POST', strURL, true);
	
	//setto l'header dell'oggetto
	self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	/* Passo alla richiesta i valori del form in modo da generare l'output desiderato*/
	self.xmlHttpReq.send(recuperaValoreAction(formName));	
	
//	alert("qui "+strURL);
	/* Valuto lo stato della richiesta */
	self.xmlHttpReq.onreadystatechange = function() {
	
		/*Gli stati di una richiesta possono essere 5
		* 0 - UNINITIALIZED
		* 1 - LOADING
		* 2 - LOADED
		* 3 - INTERACTIVE
		* 4 - COMPLETE*/
		
		//Se lo stato è completo
		if (self.xmlHttpReq.readyState == 4) {
		/* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/
			aggiornaPaginaAction(self.xmlHttpReq.responseText,formName);
		}
	}

}

function recuperaValoreAction(pNomeForm) {
	
//	var nomeForm = 'action_'+codiceForm;
	var actionform = document.forms[pNomeForm];
	var param1 = actionform.param1.value;
	var param2 = actionform.param2.value;
	var param3 = actionform.param3.value;
	var param4 = actionform.param4.value;
	var param5 = actionform.param5.value;
	var param6 = actionform.param6.value;
		
	valore1= 'param1=' + escape(param1);
	valore2= 'param2=' + escape(param2);
	valore3= 'param3=' + escape(param3);
	valore4= 'param4=' + escape(param4);
	valore5= 'param5=' + escape(param5);
	valore6= 'param6=' + escape(param6);
	//alert (valore1+'&'+valore2+'&'+valore3+'&'+valore4+'&'+valore5+'&'+valore6);
	return valore1+'&'+valore2+'&'+valore3+'&'+valore4+'&'+valore5+'&'+valore6;
//	return valore+'&'+valore2+'&'+valore3;

}

function aggiornaPaginaAction(stringa,pNomeForm){
	/* per debug si può utilizzare questo come param di ritorno*/
	//alert ("up");	
	document.forms[pNomeForm].param3.value = swapAction(document.forms[pNomeForm].param4.value);
	//document.forms[pNomeForm].immaginePost.value  = swapLabelButton(document.forms[pNomeForm].param4.value);
	
	//alert ("prima "+document.forms[pNomeForm].param4.value);
	if (document.forms[pNomeForm].param4.value==0){
		document.forms[pNomeForm].param4.value=1;
		
		if (document.forms[pNomeForm].param1.value=="save"){
			elem=document.forms[pNomeForm].testoSave;
			$(elem).addClass("want");
		} else {
			elem=document.forms[pNomeForm].testoDone;
			$(elem).removeClass("undone");
		}
	} else {
		document.forms[pNomeForm].param4.value=0;
		if (document.forms[pNomeForm].param1.value=="save"){
			elem=document.forms[pNomeForm].testoSave;
			$(elem).removeClass("want");
		} else {
			elem=document.forms[pNomeForm].testoDone;
			$(elem).addClass("undone");
		}
		
	}
	//alert ("dopo "+document.forms[pNomeForm].param4.value);
	
	/*
	var nomeImmagine = 'immaginePost_'+codiceForm;
	var nomeCommento = 'commento_'+codiceForm;
	var nomeMsg = 'msg_'+codiceForm;
	document.getElementById(nomeCommento).style.background = "#FFF";
	document.getElementById(nomeImmagine).disabled="";
	document.getElementById(nomeMsg).innerHTML = stringa;
	*/
		
}

