// Requête Javascript Asynchrone (AJAX)
// ///////////////////////////////////////////////////
function RequeteServeur(href, param, fonctionRetour, method, asynchro, format)
{
   var xhr_object = null;  
   method=(method)?method.toLowerCase():"get";
   if(!format) format="text";
   
   if(window.XMLHttpRequest) xhr_object=new XMLHttpRequest();
   else if(window.ActiveXObject)
   {
	  xhr_object=new ActiveXObject("Msxml2.XMLHTTP");	
	  if(!xhr_object) xhr_object= new ActiveXObject("Microsoft.XMLHTTP");
   }   
   if(!xhr_object) { alert("e-site est incompatible avec votre navigateur !");  return; }
   
   if(method=="get") { href+="?"+param; param=null; }

   try
   {	   
	  xhr_object.onreadystatechange=function()
	  {
		  if(xhr_object.readyState==4 && fonctionRetour && xhr_object.status==200)
		      fonctionRetour( (format=="xml")?xhr_object.responseXML:xhr_object.responseText );
	  }
	  xhr_object.open(method.toUpperCase(), href, asynchro);	  
	  if(method=="post") xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

	  xhr_object.send(param);
	   
   } catch(errv) { alert("Erreur de connection au serveur : "+errv.message); }
}

// Retourne un formulaire complet
// ///////////////////////////////////////////////////
function getDataFromForm(Form)
{  
   Form=document.getElementById(Form);
   var data= new Array(); 
   var key=0;
   
   for (key=0; key<Form.elements.length; key++)
   {   
       switch(Form.elements[key].type)
	   {   
           case 'checkbox':
		      var currentValue = getValueFromChk(Form.elements[key]);   
              break;   
           case 'radio':
		      var currentValue = getValueFromChk(Form.elements[key]);   
              break;   
           default:
		      var currentValue = (Form.elements[key].tagName.toLowerCase()=="select")?getSelectValue(Form.elements[key]):Form.elements[key].value;   
              break;   
       }   
  
       if(currentValue!=undefined && currentValue!='')
		   data[key]=Form.elements[key].name+'='+rawUrlEncode(currentValue);
   }

   return data.join('&');
}

function getValueFromChk(obj)
{    
   return (obj.checked)?obj.value:''; 
}

function getSelectValue(select)
{     
   var value="";  
   
   for (var i=0; true; i++)
   {   
      if (select[i])
	  {
         if (select[i].selected) value += select[i].value + ",";   
		   
      } else return value.substr(0, value.length-1);    
   }    
}

// Version complète de la fonction escape
// ///////////////////////////////////////////////////
function rawUrlEncode(string)
{
   string=escape(string);
   
   string=string.replace(/\+/, "%2B");
   string=string.replace(/\//, "%2F");
   string=string.replace(/\@/, "%40");

   return string;
}

// Fonction Check Formulaire 
// ///////////////////////////////////////////////////
function fnCheckForm(Form)
{
	document.getElementById("messageAlert").className="";
	
	var message = 'Veuillez remplir le champ suivant : ';
	
	if(document.getElementById(Form).nom.value=="") { alert(message + 'Nom'); document.getElementById("messageAlert").className="invisible"; return false; }
	
	if(document.getElementById(Form).prenom.value=="") { alert(message + 'Prénom'); document.getElementById("messageAlert").className="invisible"; return false; }
	
	if(document.getElementById(Form).email.value=="") { alert(message + 'Email'); document.getElementById("messageAlert").className="invisible"; return false; }
	
	if(document.getElementById(Form).email.value == " ") { alert(message + 'email'); document.getElementById("messageAlert").className="invisible"; return false; } 
	else if(document.getElementById(Form).email.value.indexOf('@') == -1) { alert("Ce n'est pas une adresse électronique!"); document.getElementById("messageAlert").className="invisible"; return false; }
	
	if(document.getElementById(Form).tel.value=="") { alert(message + 'Téléphone'); document.getElementById("messageAlert").className="invisible"; return false; }
	
	if(Form=="formContact") {
		if(document.getElementById(Form).societe.value=="") { alert(message + 'Société'); document.getElementById("messageAlert").className="invisible"; return false; }
	}

    var string = getDataFromForm(Form);
	
	RequeteServeur('fonctions.php', string, function(retour) { if(retour=="ok") { document.getElementById("messageAlert").className="invisible"; alert("Votre message a bien été envoyé."); } else { alert(retour); } }, 'post', true);
}
