// Création de l'objet ajax  suivant le navigateur
var xhr = null;
var xhr2=null;
var waiter = "<center><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><img src='../images/ajax_loader.gif'></center>";
	
function getXhr()
{
	
  if(window.XMLHttpRequest) // Firefox et autres
	xhr = new XMLHttpRequest();
	else if(window.ActiveXObject)
	{ // Internet Explorer
		try
		{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{ // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...\n Utilisez Microsoft Internet Explorer ou Mozilla Firefox\n\n Your browser do not support XMLHTTPRequest objects ... \n Please use Microsoft Internet Explorer or Mozilla Firefox");
		xhr = false;
	}
}

function getXhr2()
{
	
  if(window.XMLHttpRequest) // Firefox et autres
	xhr2 = new XMLHttpRequest();
	else if(window.ActiveXObject)
	{ // Internet Explorer
		try
		{
			xhr2 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xhr2 = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{ // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...\n Utilisez Microsoft Internet Explorer ou Mozilla Firefox\n\n Your browser do not support XMLHTTPRequest objects ... \n Please use Microsoft Internet Explorer or Mozilla Firefox");
		xhr2 = false;
	}
	return xhr2;
}

/*
 * url = url d'appel
 * title = titre de la page
 */
// Fonction d'appel de l'url //avec le bon titre
function getContent(url)
{
  document.getElementById('page_content').innerHTML=waiter;
  getXhr();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			var rep=xhr.responseText;
			document.getElementById('page_content').innerHTML=rep;	
			
			// Si un menu d'onglet existe -> on affiche le premier
      if (document.getElementById("menu_part"))
      {
        var class_name_page = "part_page";
        var content_page = document.getElementsByTagName("div"); 
        var i=0;
        var found=false;
        while (!found && i< content_page.length)
        {
          elem = content_page[i]; 
          if (elem.className ==  class_name_page) 
          {
              found = true;
              displayPart(elem.id);
          }
          i++;
        }    
      } 				
		}
	}
  //console.log("getCOntent :", url);
	xhr.open("GET",url ,true);
	xhr.send(null);	
  
  
}


/*			   
  function resizeContent()
  {
    var new_size = document.body.offsetHeight -125 +'px';
    alert('page:'+ document.body.offsetHeight+' - new:'+ new_size + ' -  actuel:' + document.getElementById('cadre_content').style.height);
    document.getElementById('cadre_content').style.height = new_size;
    alert(document.getElementById('cadre_content').style.height + ' - ' +document.getElementById('cadre_content').style.width);
    
  }
  */


/*
 * url = url d'appel
 * form = formulaire à poster
 */
// Fonction d'appel de l'url //avec le bon titre
function getContentWithPost(url, form)
{
  var date = new Date().getTime();
  var data= getDataFromForm(document.getElementById(form)) + "&date="+ date;
  document.getElementById('page_content').innerHTML=waiter;
  getXhr();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			var rep=xhr.responseText;
			document.getElementById('page_content').innerHTML=rep;	
		}
	}
  xhr.open("post",url ,true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.send(data); 			 				
}


// Action de login
// url login php
// form dans le cas du login
function loginAction(url,form, alerte)
{
  //page semble inutilisé !!!
  
  var data= getDataFromForm(document.getElementById(form));
  document.getElementById('page_content').innerHTML=waiter;
  getXhr();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			var rep=xhr.responseText;
			rep=formatage_reponse(rep);
			
			if(rep =="OK") 
			{
          // on est loggé
          // On n'affiche plus l'arte (MAJ 09/02/2009 demande bureau)
          //alert(alerte);
          
          // reload
          setTimeout("window.location.reload()", 1000);

          var button_login  = document.getElementById('login');
          var button_logout = document.getElementById('logout');
                    
          //getContent(page);
          
          button_login.style.display='none';
          button_logout.style.display='block';
      }
      else
      {
        //document.getElementById('page_content').innerHTML= rep;
        getContent(rep);      
      }
      
		}
	}

  xhr.open("post",url ,true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.send(data); 
}

function logoutAction(url, page, alerte)
{
  document.getElementById('page_content').innerHTML=waiter;
  getXhr();
	var date = new Date().getTime();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			var rep=xhr.responseText;
			rep=formatage_reponse(rep);
			
			if(rep =="OK") 
			{
          // on est loggé
          //style='display:none;
          alert(alerte);
          
          // reload
          setTimeout("window.location.reload()", 1000);
          
          //getContent(page);
          var button_login  = document.getElementById('login');
          var button_logout = document.getElementById('logout');
          
          button_login.style.display='block';
          button_logout.style.display='none';
      }
		}
	}

  xhr.open("get",url ,true);
  xhr.send(null); 
}


/*
 * url = url d'appel
 * form = form to browse to find all fields 
 * page = page ou se rendre en cas de succès
 * entity = entite modifiée
 */

// Fonction d'appel de l'url
function getUrlWithAction(url, form, page, entity )
{
	getXhr();
	var date = new Date().getTime();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
	
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			var rep=xhr.responseText;
			rep=formatage_reponse(rep);
			var alerte ="";
			switch (rep)
			{	
				  case "create":  alerte += "L'objet [" + entity + "] a \351t\351 cr\351e avec succ\350s !";
				                  break;
				  case "update":  alerte += "L'objet [" + entity + "] a \351t\351 mis \340 jour avec succ\350s !";
				                  break;
				  case "delete":  alerte += "L'objet [" + entity + "] a \351t\351 effac\351 avec succ\350s !";
				                  break                          				                  
       } 
        alert (alerte);
				getContent(page);
		}
	}
	
		var data= getDataFromForm(document.getElementById(form)) + "&date="+ date;
	
	xhr.open("post",url,true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.send(data); 			 				
}


// fonction qui énumère les paramètres à passer à la fonction en cas de poste d'un formulaire
function getDataFromForm(Form) {
    var data="";
    var key=0;
    for (key=0;key<Form.elements.length;key++) {     
        //alert(key + '/' + Form.elements.length + Form.elements[key].tagName + "//" +Form.elements[key].type); 
         if ((Form.elements[key].type.toLowerCase()!="reset")&&(Form.elements[key].type.toLowerCase()!="button") && (Form.elements[key].type.toLowerCase()!="submit") && (Form.elements[key].type.toLowerCase()!="file") )
         {
            var currentValue= Form.elements[key].value
            data+=escape(Form.elements[key].name)+"="+escape(encodeURIComponent(currentValue))+"&"; 
         }
    }
    return data.substr(0, data.length-1);
}
 
function getSelectValue(select) {
   var value="";
   for (var i=0; true; i++) {
      if (select.option[i]) {
         if (select.options[i].selected) {
            value += select.options[i].value + ",";
         }
      } else {return value.substr(0, value.length-1); }
   }
}


// Fonction formatant la réponse du fichier PHP appelé pour éviter les retour à la ligne inattendus
function formatage_reponse(chaine)
{
	nChaine="";
	car="\n\r";
	car2="\r\n";
	car3="\n";
	
	for (var i=0; i<chaine.length;i++)
	{
		if ((car.indexOf(chaine.charAt(i))==-1)|| (car2.indexOf(chaine.charAt(i))==-1))
		{
			nChaine+=chaine.charAt(i);
		}
	}
	
	chaine=nChaine;
	nChaine="";
	
	for (var i=0; i<chaine.length;i++)
	{
		if (car3.indexOf(chaine.charAt(i))==-1)
		{
			nChaine+=chaine.charAt(i);
		}
	}
	return nChaine;
}



/* FONCTION POUR DEVENIR MEMBRE
 * url = url d'appel
 * form = formulaire à poster
 */
function teamRequest(url, formID,page,  callback_message)
{
  var date = new Date().getTime();
  var form = document.getElementById(formID);
  
  var display ="";
  var nb_empty = 0;
  for (var j=0 ;j <form.elements.length;j++)
  {
    elem = form.elements[j];
    if ( elem.type.toLowerCase()!="reset" && elem.type.toLowerCase()!="button"  && elem.type.toLowerCase()!="submit")
    { 
      if ((elem.value =="") || (elem.value.length ==0))
      {
        nb_empty ++;
        elem.style.background='orange';
        
      }
    }
  }
  if (nb_empty>0)
  { 
    display += nb_empty + " champ";
    display += (nb_empty>1) ? "s sont incomplets\n" : " est incomplet\n";
    display += "Veuillez compl\350ter ";
    display += (nb_empty>1) ? "les champs " : "le champ ";
    display += "en orange";
  
    alert(display);
    return;
    
  }  
  var data= getDataFromForm(document.getElementById(formID)) + "&date="+ date;
  document.getElementById('page_content').innerHTML=waiter;
  getXhr();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			var rep=formatage_reponse(xhr.responseText);
			document.getElementById('page_content').innerHTML=rep;	
			if (rep == "send")
			{
			   alert(callback_message);
			   getContent(page);
			}
			else  // url 
			{
          //console.log(rep);
          getContent(rep);
      }
		}
	}
  xhr.open("post",url ,true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.send(data); 			 				
}







/* MANAGER */
/* 
 * url = url de la page php a executer
 * id_member = membre a mettre a jour 
 * type = action a réaliser   
 * confirmation = message de confirmation 
 */

function getMemberManager(url, id_member, type, confirmation, callback)
{
  var date = new Date().getTime();
  
  var display ="";
  var nb_empty = 0;
  if (confirm(confirmation))
  {
    var data= "member_id="+id_member ; 
    
    // cas d'un update ou il faut passer le parametre de la liste selectionnee en plus de l'id member 
    if (type==2)
    {
        data += "&member_authority="+ document.getElementById('member_authority_'+id_member).value;
    }
    
    data += "&date="+ date;

    document.getElementById('page_content').innerHTML=waiter;
    getXhr();
  	// On définit ce qu'on va faire quand on aura la réponse
  	xhr.onreadystatechange = function()
  	{
  		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  		if(xhr.readyState == 4 && xhr.status == 200)
  		{
  			var rep=formatage_reponse(xhr.responseText);
  			
  			var display ="Erreur dans la mise a jour du compte utilisateur";
  			switch (rep)
  			{
          case "desactivate" :  // desactivation du compte
                    display = "Le compte a \351t\351 d\351sactiv\351 avec succ\350s."
                    break;
          
          case "activate" :  // activation du compte
                    display = "Le compte a \351t\351 activ\351 avec succ\350s."
                    break;
                  
                  
          case "update" : // changement de l'autorite
                    display = "Les droits du compte ont \351t\351 chang\351 avec succ\350s."
                    break;
        
        }
        
  			alert(display);
  			document.getElementById('page_content').innerHTML=rep;
        
        //retour a la page d'appel
        getContent(callback);	
  		}
  	}
    xhr.open("post",url ,true);
  	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(data); 
  }			 				
}





