/*
Fonction de communication AJAX :
cette fonction prend comme parametres : 
	- l' id de la div à actualiser
	- l'url de traitement
	- 4 parametres et leurs valeurs (facultatifs)
	- Si le premier parametre = 'formulaire', alors, value contient l'id du formualire à envoyer à la page de traitement 
	en methode post.


Utilisation :

// 1- temporisateur : préciser en tete de page l'URL du temporisateur
<script type="text/javascript">
// url de l'image du temporisateur :
var ImageTemporisateur = '<?php echo (ADRESSE_SITE_INTERNET . "/" . REPERTOIRE_IMAGES ."/indicator_medium.gif"); ?>';
</script>


// 2- La balise DIV parent de celle faisant l'objet d'une mise à jour (IdRetour) doit être en position relative (centrage du temporisateur)

*/

// <![CDATA[


	function AjaxUpdater(IdRetour, Url, param1,value1,param2,value2,param3,value3,param4,value4,param5,value5) 
	{
	parametre 		= "";
	if (param1=='formulaire')
		{
		parametre = $( value1 ).serialize(true);
		}
	else
		{
		parametre += param1 + "=" + value1;
		if (param2 !="")
			 { parametre+="&" + param2 + "=" + value2;}
		if (param3 !="")
			 { parametre+="&" + param3 + "=" + value3;}
		if (param4 !="")
			 { parametre+="&" + param4 + "=" + value4;}
		if (param5 !="")
			 { parametre+="&" + param5 + "=" + value5;}
		}
		
	Ajax.ElementId = IdRetour;	// le temporisateur se place par defaut dans l'element de retour, en attendant son contenu.

	new Ajax.Updater(IdRetour, Url, {				// reponse request
		method:'post',
		parameters: parametre,
		evalScripts : true
    });
	}



// Fonction faisant apparaitre le temporisateur
// url de l'image du temporisateur :
var ImageTemporisateur = 'images/indicator_medium.gif';


function AjaxControleurStart() {
	if ((Ajax.activeRequestCount > 0)  ) 
		{
		AjaxTemporisateurAppear();
		}
	}
	
function AjaxTemporisateurAppear() {
  // on crée un temporisateur dans la balise Ajax.ElementId
		//Effect.Fade(Ajax.ElementId, { duration: 0.3 , from: 1.0 , to: 0.5 });
		SupprimeEnfants(Ajax.ElementId);
		Tempo 					= document.createElement( "DIV" );
		TempoImg				= document.createElement( "IMG" );
		Tempo.id				= "Tempo";
		Tempo.style.textAlign 	= "center";
		Tempo.width 			= "100%";
		Tempo.height 			= "100%";
		Tempo.style.zIndex 		= "999";
		Tempo.style.position	= "absolute";
		Tempo.style.top 		= "50%";
		Tempo.style.left 		= "50%";


		document.getElementById(Ajax.ElementId).appendChild(Tempo);
	 	document.getElementById("Tempo").appendChild(TempoImg);
		TempoImg.style.borderWidth	= "0px";
		TempoImg.src	 	= ImageTemporisateur ;
		TempoImg.alt	 	= '' ;
		$(Ajax.ElementId).style.display='block'; //, { duration: 2.0 , from: 0.0 , to: 0.4 });
		//Effect.Appear(Ajax.ElementId, { duration: 0.3 , from: 0.0 , to: 0.5 });
}

function AjaxControleurStop(){
	if ((Ajax.activeRequestCount == 0) && ($("Tempo")) )
		{ 
		TempoImg	= $("Tempo").firstChild;
		// suppression du temporisateur
		disparu 	= $("Tempo").removeChild(TempoImg);
		}
		// reapparition de la balise mise à jour
		Effect.Appear(Ajax.ElementId, { duration: 0.1 , from: 0.0 , to: 1.0 });
	}

// Controleur de reponse AJAX. Au début : affichage / creation temporisateur. EN fin : suppression du temporisateur.	
Ajax.Responders.register( {
  		onCreate : function(){AjaxControleurStart()},
		onComplete: function(){AjaxControleurStop()}
});


// suppression de tous les elements enfants d'un ID fourni.
function SupprimeEnfants(Id)
{
if(document.getElementById(Id))
	{
	Fin		 = false;
	disparu  = new Array();
	t 		 = 0;

	while (!Fin)
		{
		if(document.getElementById(Id).hasChildNodes())
			{
			var noeud=document.getElementById(Id).firstChild;
			disparu = document.getElementById(Id).removeChild(noeud);
			t++;
			}
		else 
			{Fin = true;
			}
		}
	}
}

//]]>	}	


