////////////////////////////////////////////////////////////////////////////////////////
//
// scripts ajax
//
// - mise à jour de cellules dans un formulaire
// - gestion des listes déroulantes liées
// - chargement de données dans un div
// - executer un script php
//
////////////////////////////////////////////////////////////////////////////////////////




////////////////////////////////////////////////////////////////////////////////////////
//
function actionsCellules(cellEnvoi, cellReception, actionPhp)
{
	/**
	* lors de la saisie d'une cellule
	* affectuer une action php pour mettre à jour une autre cellule ou un groupe de cellules
	*
	* cellEnvoi: cellule saisie dans le formulaire
	* cellReception: cellule ou liste de cellules à compléter par le script actionPhp
	* actionPhp: nom du script php à exécuter sur validation cellule
	*/

	// initialisation de l'objet
	var xhr_object = null;
	if(window.XMLHttpRequest) // Firefox
	   xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return;
	}

	// constitution de l'action avec les paramètres suivants:
	// s1: valeur de la cellule, s2: nom de la cellule
	var filename = actionPhp;
	var data = null;
	var s1=eval("document.form." + cellEnvoi + ".value"); 
	if (s1 != "")
	{
		data = "s1="+s1+"&s2="+cellEnvoi; 
		filename += "?"+data;
	}
	
	// initialise la requete en mode asynchrone
	xhr_object.open("GET", filename , true);
	// fonction à activer
	xhr_object.onreadystatechange = function() 
	{
		//lorsque la requete est compléte, on affiche la réponse à la requete
	   	if(xhr_object.readyState == 4)
	   	{
	   		// récupération des noms des champs de formulaire à alimenter
	   		var nomChamps = cellReception.split(",");
	   		
	   		// récupération de la réponse à la requete php
	   		var tmp = xhr_object.responseText;
	   		var retourRequete = tmp.split(",");
	   		
	   		// on remplit chacun des champs
	   		for ( var i = 0; i < nomChamps.length; i++ )
	   		{
	   			var el = document.getElementById(nomChamps[i]);
	   			el.value = retourRequete[i];
	   		}
	   	}
	}
	// envoi de la requete avec des données
	xhr_object.send(data);
	
}
//
////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////
//
function actionsListesLiees(nomChampEmetteur, nomChampRecepteur, ordreListe)
{
	/**
	* Traitement des listes liées
	* 
	* en entrée, 
	* les noms des champs émetteur et récepteur tels que décrits dans le formulaire appelant.
	* et le numéro ordre de l'action liste déroulante
	* en action de sortie
	* appel du script ajaxListesLiees.php
	* ce script va générer la liste déroulante
	*/
	
	var textVal = "document.form1." + nomChampEmetteur + ".value;";
	//var valeurChampEmetteur = document.form1.nomChampEmetteur.value;
	var valeurChampEmetteur = eval(textVal);
	var index = this.form1.elements[nomChampEmetteur].selectedIndex;
	if (index < 1)
	{
		this.form1.elements[nomChampRecepteur].options.length = 0;
	}
	else
	{
		// initialisation de l'objet
		var xhr_object = null;
		if(window.XMLHttpRequest) // Firefox
		   xhr_object = new XMLHttpRequest();
		else if(window.ActiveXObject) // Internet Explorer
		   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		else { // XMLHttpRequest non supporté par le navigateur
		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		   return;
		}
		
		// initialise la requete en mode asynchrone avec la méthode POST
		// initialiser les paramètres du script ajaxListesLiees.php de la manière suivante.
		// table: nom de la table des données téceptrices.
		// filtre: nom du champ à placer dans la clause Where de la requete de création liste réceptrice
		// libel: nom du champ à placer dans la clause de tri
		// id: clé de la table des données réceptrices qui sera la value de la liste
		
		if (ordreListe == 1)
		{
			scriptPhp = "../appli/ajaxListesLiees.php?table=fast_portefeuille&id=id_projet&filtre=nom_equipe&libel=nom_projet";
		}
		
		xhr_object.open("POST", scriptPhp , true);
		// actions quand la requete est terminée
		xhr_object.onreadystatechange = function() 
		{
		   	if(xhr_object.readyState == 4)
		   	{
		   		var tmp = xhr_object.responseText;
		   		//alert(tmp);
		   		eval(tmp);  
		   	}
		}
		// encodage suite à utilisation de la méthode post
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
		// création de la chaine de données 
		var data = "nomChampEmetteur="+valeurChampEmetteur+"&nomChampRecepteur="+nomChampRecepteur;
	
		// envoi de la requete avec des données 
		xhr_object.send(data);
	}
}
//
////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////
//
function actionsChargementDonnees(var1, var2, idDiv, actionPhp)
{
	/**
	* Chargement (Affichage) de données dans une zone div désignée par son id idDiv
	*
	* en entrée, 
	* 2 variables à passer en paramètre de l'action Php
	* l'id de la zone d'affichage
	* le script php à éxécuter pour récuperer les données à afficher
	*/

	// initialisation de l'objet
	var xhr_object = null;
	if(window.XMLHttpRequest) // Firefox
	   xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return;
	}

	// constitution de l'action avec les paramètres suivants:
	// s1: valeur de la cellule, s2: nom de la cellule
	var filename = actionPhp;
	var data = null;
	var s1=eval("document.form1." + var1 + ".value"); 
	var s2=eval("document.form1." + var2 + ".value");
	if (s1 != "")
	{
		data = "s1="+s1+"&s2="+s2; 
		filename += "?"+data;
	}
	
	// initialise la requete en mode asynchrone
	xhr_object.open("GET", filename , true);
	// fonction à activer
	xhr_object.onreadystatechange = function() 
	{
		//lorsque la requete est compléte, on affiche la réponse à la requete
	   	if(xhr_object.readyState == 4)
	   	{
	   		// affichage du buffer retour dans la div gestion
   			var tmp = xhr_object.responseText;
	   		document.getElementById(idDiv).innerHTML = tmp;
	   	}
	}
	// envoi de la requete avec des données
	xhr_object.send(data);
}
//
////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////
//
function actionsChargementDonnees2(idDiv, actionPhp)
{
	/**
	* Chargement (Affichage) de données dans une zone div désignée par son id idDiv
	*
	* en entrée, 
	* 2 variables à passer en paramètre de l'action Php
	* l'id de la zone d'affichage
	* le script php à éxécuter pour récuperer les données à afficher
	*/

	// initialisation de l'objet
	var xhr_object = null;
	if(window.XMLHttpRequest) // Firefox
	   xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return;
	}


	// constitution de l'action avec les paramètres suivants:
	var filename = actionPhp;
	var data = null;

	// initialise la requete en mode asynchrone
	xhr_object.open("GET", filename , true);
	// fonction à activer
	xhr_object.onreadystatechange = function() 
	{
		//lorsque la requete est compléte, on affiche la réponse à la requete
	   	if(xhr_object.readyState == 4)
	   	{
	   		// affichage du buffer retour dans la div gestion
   			var tmp = xhr_object.responseText;
   			//alert(tmp);
   			if (tmp == "ko")
   			{
   				alert("Votre session est terminée - cliquer pour réactualiser");
   				document.location.href="../index.php";
   			}
   			if (document.getElementById(idDiv))
   			{
	   		  document.getElementById(idDiv).innerHTML = tmp;
   			}
   			else
   			{
   			    alert("Un problème est survenu avec la requete - relancer la procédure");
   				document.location.href="../index.php";
   			}
   		
	   	}
	}
	// envoi de la requete avec des données
	xhr_object.send(data);
}
//
////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////
//
function executerPhp(actionPhp)
{
    /**
	* exécution d'un script PHP
	*
	* en entrée: le script php à exécuter
	*/
    
   
    // initialisation de l'objet
	var xhr_object = null;
	if(window.XMLHttpRequest) // Firefox
	   xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return;
	}
	
	// constitution de l'action avec les paramètres suivants:
	var filename = actionPhp;
	var data = null;
	
	// initialise la requete en mode asynchrone
	xhr_object.open("GET", filename , true);
	
	// fonction à activer
	xhr_object.onreadystatechange = function() 
	{
		//lorsque la requete est compléte, on affiche la réponse à la requete
	   	if(xhr_object.readyState == 4)
	   	{
	   		// affichage du buffer retour dans la div gestion
   			var tmp = xhr_object.responseText;
   			//alert(tmp);
   			if (tmp == "ko")
   			{
   				alert("problème dans l\'exécution de la requête");
   				document.location.href="../index.php";
   			}
   			//alert(tmp);
	   		//document.getElementById(idDiv).innerHTML = tmp;
	   	}
	}
	// envoi de la requete avec des données
	xhr_object.send(data);
}
//
////////////////////////////////////////////////////////////////////////////////////////




////////////////////////////////////////////////////////////////////////////////////////
//
function goTo(idDiv, actionPhp, nbreItemsPage, pageCourante, totalItems, paramsSelection)
{
    /**
	* aller à une page dans une pagination en Ajax
	*
	* en entrée: 
	* - id du div ou s'affiche la liste
	* - nom du script php
	* - nombre d'items par page
	* - numéro de la page courante
	* - total d'Items
	* - paramètres de sélection spécifique sà la requête
	*/
    var numero = document.form.page.value;
    var nbreitem = document.form.nbre_items.value;                
    var offset_p = ( numero * nbreItemsPage) - nbreItemsPage;
    var parametres = paramsSelection;
    if (offset_p < 0 ) {offset_p = 0}
    if (offset_p > totalItems ) {  offset_p = (nbreItemsPage * (pageCourante - 1)) }  
    var action = actionPhp + '?offset='+offset_p+'&max='+nbreitem+parametres;
    actionsChargementDonnees2(idDiv,action);
}
//
////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////
//
function changeNbreItems(idDiv, actionPhp, nbreItemsPage, pageCourante, totalItems, paramsSelection)
{
    /**
	* modifier le nombre d'éléments affichés dans une page de liste
	*
	* en entrée: 
	* - id du div ou s'affiche la liste
	* - nom du script php
	* - nombre d'items par page
	* - numéro de la page courante
	* - total d'Items
	* - paramètres de sélection spécifique sà la requête
	*/
    var nbreitem = document.form.nbre_items.value;
    var numero = document.form.page.value;
    var parametres = paramsSelection;
    if (nbreitem < 0 ) {nbreitem = 0}
    var offset_p = ( numero * nbreitem) - nbreitem; 
    var action = actionPhp + '?offset='+offset_p+'&max='+nbreitem+parametres;
    actionsChargementDonnees2(idDiv,action);
}
//
////////////////////////////////////////////////////////////////////////////////////////


