//Funzione di invio di un form con AHAH
function submit(FILE, METHOD,target,form){
//	var num = document.forms[0].elements.length;
	var num = document.getElementById(form).elements.length;
	var url = "";

	//radio button
	var j = 0;
	var a = 0;
	var radio_buttons = new Array();
	var nome_buttons = new Array();
//	var the_form = window.document.forms[0];
	var the_form = document.getElementById(form);
	for(var i=0; i< the_form.length; i++){
		var temp = the_form.elements[i].type;
		if ( (temp == "radio") && ( the_form.elements[i].checked) ) {
			nome_buttons[a] = the_form.elements[i].name;
			radio_buttons[j] = the_form.elements[i].value;
			j++;
			a++;
		}
	}
	for(var k = 0; k < radio_buttons.length; k++) {
		url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
	}
	//checkbox
	var j = 0;
	var a = 0;
	var check_buttons = new Array();
	var nome_buttons = new Array();
//	var the_form = window.document.forms[0];
	var the_form = document.getElementById(form);
	for(var i=0; i< the_form.length; i++){
		var temp = the_form.elements[i].type;
		if ( (temp == "checkbox") && ( the_form.elements[i].checked) ) {
			nome_buttons[a] = the_form.elements[i].name;
			check_buttons[j] = the_form.elements[i].value;
			j++;
			a++;
		}
	}
	for(var k = 0; k < check_buttons.length; k++) {
		url += nome_buttons[k] + "=" + check_buttons[k] + "&";
	}

	//select (multiselect)
	var j = 0;
	var a = 0;
	var multiselect = new Array();
	var nome_select = new Array();
//	var the_form = window.document.forms[0];
	var the_form = document.getElementById(form);
	for(var i=0; i< the_form.length; i++){
		var temp = the_form.elements[i].type;
		if ( the_form.elements[i].options != undefined )
		{
			for(var y=0; y < the_form.elements[i].options.length; y++)
			{
				if(the_form.elements[i].options[y].selected)
				{
					nome_select[a] = the_form.elements[i].name;
					multiselect[j] = the_form.elements[i].options[y].value;
					j++;
					a++;
				}
			}
		}
	}
	for(var k = 0; k < multiselect.length; k++) {
		url += nome_select[k] + "=" + multiselect[k] + "&";
	}

	for (var i = 0; i < num; i++){

//		var chiave = document.forms[0].elements[i].name;
//		var valore = document.forms[0].elements[i].value;
//		var tipo = document.forms[0].elements[i].type;
		var chiave = document.getElementById(form).elements[i].name;
		var valore = document.getElementById(form).elements[i].value;
		//if (chiave=='abstract') alert(valore);
		valore = escape(valore);
		valore = valore.replace(/\+/gi, '%2B');
		//if (chiave=='abstract') alert(valore);
		//valore = valore.replace(/&/g,"__#and#__");
//		valore = valore.replace(/(\w|\W)/g,
//			   function (s, n) {
//			     c=n.charCodeAt(0);
//			     return (c==38?'&amp;':(c>127?'&#'+c+';':n));
//			   }
//			);
		var tipo = document.getElementById(form).elements[i].type;

		if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") || (document.getElementById(form).elements[i].options != undefined) ){}
		else {
			url += chiave + "=" + valore + "&";
		}
	}
	var parameters = url;
	url = FILE + "?" + url;
	if (METHOD == undefined) { METHOD = "GET"; 	}
	if (METHOD == "GET") { ahah(url, target, '', METHOD); }
	else { ahah(FILE, target, '', METHOD, parameters); }
}



//AHAH
function ahah(url, target, delay, method, parameters, hideLoadingLabel) {

// 	alert(hideLoadingLabel);
	
  if (method == undefined) {
	  if(hideLoadingLabel == undefined)document.getElementById(target).innerHTML = 'caricamento in corso...';
	  var req;
	  
	  if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req) {
		req.onreadystatechange = function() {
			ahahDone(url, target, req, delay, method, parameters);
		};
		req.open("GET", url, true);
		req.send("");
	  }
  }
  if ( (method == "GET") || (method == "get") )
  {
	   if(hideLoadingLabel == undefined)document.getElementById(target).innerHTML = 'caricamento in corso...';
	  if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req) {
		req.onreadystatechange = function() {
			ahahDone(url, target, req, delay, method, parameters);
		};
		req.open(method, url, true);
		req.send("");
	  }
  }

  if ( (method == "POST") || (method == "post") )
  {
	  if(hideLoadingLabel == undefined) document.getElementById(target).innerHTML = 'caricamento in corso...';
	  if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req) {
		req.onreadystatechange = function() {
			ahahDone(url, target, req, delay, method, parameters);
		};
		req.open(method, url, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
//		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.send(parameters);
	  }
  }
}



//AHAH
function ahahDone(url, target, req, delay, method, parameters) {
  if (req.readyState == 4)
  {
  	var div = document.getElementById(target);
    if (req.status == 200)
    {
	    risposta = 1;
    	div.innerHTML = req.responseText;
    	execJS(div);
    }
    else
    {
	    risposta = 0;
	    div.innerHTML="ahah error:\n"+req.statusText;
    }
  }
//  alert('readyState='+req.readyState+' status='+req.status);
}


//Esegue gli script presenti nell'html scritto da ahah; prende come parametro il
//getelementbyid del div contenente l'html generato

function execJS(node){
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');

	var st = node.getElementsByTagName('script');
	var strExec;

	for(var i=0;i<st.length;i++){
		if(bSaf){
			strExec = st[i].innerHTML;
		}else if(bOpera){
			strExec = st[i].text;
		}else if(bMoz){
			strExec = st[i].textContent;
		}else{
			strExec = st[i].innerHTML;
		}

		try{
			eval(strExec);
		}catch(e){
			alert(e);
		}
	}
}