/**
* Funzione generica per inviare una richiesta JSON
* @param array p parametri
* @param array f funzioni da eseguire in base al risultato
* @param array fp parametri delle funzioni da eseguire in base al risultato
*/
function requestJsonPage(p,f,fp){
	new Request.JSON({
		url: '/request.php',
		method: 'get',
		onComplete: function(res){
			requestComplete(res,f,fp);
		}
	}).send(Hash.toQueryString(p));
}

/**
* Funzione generica per inviare i dati di un form
* @param object fo form
* @param array f funzioni da eseguire in base al risultato
* @param array fp parametri delle funzioni da eseguire in base al risultato
*/
function sendForm(fo,f,fp){
	if(!$chk(fo)) return;
	fo = new Element(fo);
	new Request.JSON({
		url: fo.get('action'),
		method: fo.get('method'),
		onComplete: function(res){
			requestComplete(res,f,fp);
		}
	}).send(fo);
}

/**
* Funzione generica per eseguire le funzione delle richieste
* @param array res risultato in JSON
* @param array f funzioni da eseguire in base al risultato
* @param array fp parametri delle funzioni da eseguire in base al risultato
*/
function requestComplete(res,f,fp){
	if($chk(res) && $chk(res.ok)){
		if($chk(f[res.ok])){
			var fa = new Hash(res);
			if($chk(fp) && $chk(fp[res.ok])){
				fa = fa.combine(fp[res.ok])
			}
			f[res.ok].attempt(fa);
		}
	}
}