/*
** La fonction init est appelé au chargement de la page:
**   - elle défini l'effet
**   - initialise la variable d'état de la requete
**   - et appelle la fonction de callback
*/
function init() {
	
	// On déclare l'effet:
	fondu = new moofx.Height(to, {duration: tps});
	fondu.hide();
	
	//initialisation de la variable d'état d'une requete:
	en_cours = false;
	
	// la fonction de callback:
	new Form.MooElement.Observer(from, 0.01, livesearch);
	
}

/*
** La fonction de callback, qui sera appelée toutes les 0.01s:
**   - elle switch sur le nombre de caractères saisis
**   - et le cas échéant, fait appel à la requête ajax
**/
function livesearch() {
	
	// Si on a assez de caractères:
	if (document.getElementById(from).value.length >= mini) {
		// Si la recherche est déjà en cours, on ne fait rien:
    if (en_cours) return false;
    
    //sinon:
    en_cours = true;
    MooElement.show($('wait')); //on affiche le sablier
    fondu.clearTimer(); //on coupe l'effet
    fondu.hide();
    
    // Utilisé pour transmettre des paramètres au fichier php(ex: la limite)
    pars = Form.serialize(formulaire);
    
    //on effectue la requête:
    var myAjax = new Ajax.Request(
      by,
      {
        method: 'post',
        parameters: pars,
        onComplete: livesearchLoad
      }
    );
	// Si le champ de recherche est vide => on cache la zone de résultats
	} else if (document.getElementById(from).value.length <= 0) {
    fondu.clearTimer(); //on coupe l'effet
		fondu.hide();
  // Si on a pas assez de caractères:
	} else {
		fondu.clearTimer(); //on coupe l'effet
		fondu.hide();
		document.getElementById(to).innerHTML = mini+' caractères minimum';
		fondu.toggle();
	}
}
 /*
 ** La fonction appelée à la fin de la requete:
 **   - elle charge dans la zone d'affichage, les résultats de la requete
 */
function livesearchLoad(response) {
    $(to).innerHTML = response.responseText;
    fondu.toggle();
    MooElement.hide($('wait')); //on cache le sablier
    en_cours = false;
}

//on éxécute la fonction init():
Event.observe(window, 'load', init, false);

