// Invia in ajax sincrono una richiesta ad una funzione di validazione passando i dati del form serializzati.
// Return: risposta JSON
function validate(ajax_validator, validateFunction, form)
{
	var response = null;

	//var newInput = document.createElement('input');

	//newInput.name="validateFunction";
	//newInput.value = validateFunction;
	//$(form).appendChild(newInput);
	formSerializzato = $(form).serialize(true);
	formSerializzato['validateFunction'] = validateFunction;


	new Ajax.Request(
	ajax_validator,
	{
		method:'post',
		asynchronous:false,
		parameters: formSerializzato,
		onSuccess: function(transport) {
			response = transport;
		},
		onFailure: function(trans) {
			alert("Errore ajax:\n\n" + trans.responseText.stripTags());
		}

		}
	);
	return response;

}


// Invia in ajax sincrono una richiesta ad una funzione di validazione passando i dati del form serializzati.
// Mostra un alert o un confirm in caso di errore o warning
// Return:	false in caso di  errori
// 			in caso di warning restituisce true o false in funzione della risposta dell'utente al confirm()
function validateAndAsk(ajax_validator, validateFunction, datiDelForm)
{
  return validateAndAskMsg(ajax_validator, validateFunction, datiDelForm, "Ci sono alcuni errori che non permettono di procedere:\n\n" );
}

function validateAndAskMsg(ajax_validator, validateFunction, datiDelForm, fraseErrore )
{
	var response = validate(ajax_validator, validateFunction, datiDelForm).responseText.evalJSON();

	var errori = "";
	var warnings = "";
	if(response.errore.size()>0)
	{
		for (var i=0; i < response.errore.size();i++)
			errori += response.errore[i] + "\n";
		alert(fraseErrore + errori);
		return false;
	}
	else if(response.warning.size()>0)
	{
		for (var i=0; i < response.warning.size();i++)
			warnings += response.warning[i] + "\n";
		return confirm("Avvertenza!\n\n" + warnings + "\n\nVuoi continuare comunque?");
	}
	else
	{
		return true;
	}
}
