// JavaScript Document

//fonction permettant de créer un objet ajax en fonction du type de navigateur
function getHTTPObject()
{
  var xmlhttp = false;
  
  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
  try{
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e){
  try{
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (E){
  xmlhttp = false;
  }
  }
  @else
  xmlhttp = false;
  @end @*/
  
  /* on essaie de créer l'objet si ce n'est pas déjà fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined'){
  try{
  xmlhttp = new XMLHttpRequest();
  }
  catch (e){
  xmlhttp = false;
  }
}

return xmlhttp;
}


function envoiAjax(php_file_name, data, elem_html_id){
	  var elemAmodif = document.getElementById(elem_html_id);
	  /* Création de l'objet : */
	  var xmlhttp = getHTTPObject();
	  /* Préparation d'une requête asynchrone de type GET : */
	  xmlhttp.open("GET", php_file_name+"?"+data, true);
	  /* Effectue la requête en envoyant les données : */
	  xmlhttp.onreadystatechange = function() {
	    if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
	     
	    	/* methode 1 :
	    	  cette méthode ne fonctionne pas toujours avec IE
	    	  elemAmodif.innerHTML = xmlhttp.responseText;*/
	      
	    	// methode 2 :
	    	elemAmodif.innerHTML = "";
	      var newdiv = document.createElement("div");
	      newdiv.innerHTML = xmlhttp.responseText;	      
	      elemAmodif.appendChild(newdiv);

	      execJS(elemAmodif);
	    }
	    else{
	      elemAmodif.innerHTML = "Chargement en Cours...";
	    }
	  }
	  xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	  xmlhttp.send(data);
}

/*http://www.wikistuce.info/doku.php/javascript/re-interpreter_du_code
Si on veut interpreter du code javascript dans la fonction retourné par envoiAjax
*/
function execJS(node) {
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');
	  var st = node.getElementsByTagName('SCRIPT');
	  var strExec;
	  for(var i=0;i<st.length; i++) {     
	    if (bSaf) {
	      strExec = st[i].innerHTML;
	    }
	    else if (bOpera) {
	      strExec = st[i].text;
	    }
	    else if (bMoz) {
	      strExec = st[i].textContent;
	    }
	    else {
	      strExec = st[i].text;
	    }
	    try {
	      eval(strExec);
	    } catch(e) {
	      alert(e);
	    }
	  }
}
//Certaines rêgles DOIVENT être réspectées tout de même :
//
//	   1.
//	      Toujours ecrire SCRIPT. Les majuscules sont etentielles.
//	   2.
//	      Ne pas utiliser / / pour les commentaires mais /* et */. Pour eval, votre code est sur une seule ligne (les retours à la ligne sont ignorés) et donc si vous utliser / /, tous ce qui suit sera en commentaire.
//	   3.
//	      Toujours terminer vos lignes par un ; et ceci pour les même raisons que précedement.
//
//
//
//	N'oubliez pas non plus que les fonctions déclarées dans le code que vous évaluez n'existe que dans le scope créé par eval. A la fin de l'évaluation vos fonctions disparaissent de la mémoire. 
