//-------------------------------------------------------------------------------------------------------------------
//---------------------------------------------- Fonctions principales ----------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

//fonction principale, qui envoie la  requête au serveur de façon asynchrone et positionne la fonction qui va traiter les données
// _method : POST ou GET
// _request : Requête envoyée au serveur (ici = le nom de la page de traitement)
// _parameters : Paramètres de la requête (de la forme "var1=value1&var2=value2")
// _id : ID de l'élément dans lequel seront ajouté les données
var PagePopUp;


function loadXMLAsynchroneously(_method, _request, _parameters, _id) {
    //initialisation de l'objet XMLXhttpRequest
    var xhr = initRequete ();

    //spécification de la fonction de traitement à appeler au retour serveur (car chargement asynchrone)
	var XMLDoc = null;
	
    xhr.onreadystatechange = function() { getXMLDocument(xhr, XMLDoc, _id); };
    
    //envoi de la requête de chargement du fichier XML au serveur
	//le dernier paramètre est true ; le chargement du fichier se fera en asynchrone
    xhr.open(_method, _request, true);
    //encodage des paramètres dans la requête, si la méthode est post
	if(_parameters && (_method == "post" || _method == "POST"))
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send(_parameters);
}



//autre fonction principale, plus simple, qui envoie la requête au serveur de façon asynchrone et ne se préoccupe pas de la réponse
//remarque : l'utilisation de cette fonction n'est pas nécessaire pour réaliser le devoir.
// _method : POST ou GET
// _request : Requête envoyée au serveur (ici = le nom de la page PHP de traitement)
// _parameters : Paramètres de la requête (de la forme "var1=value1&var2=value2")
function sendRequestAsynchroneously(_method, _request, _parameters) {
    //initialisation de l'objet XMLXhttpRequest
    var xhr = initRequete ();

    //envoi de la requête de chargement du fichier XML au serveur
	//le dernier paramètre est true ; le chargement du fichier se fera en asynchrone
    xhr.open(_method, _request, true);
    //encodage des paramètres dans la requête, si la méthode est post
	if(_parameters && (_method == "post" || _method == "POST"))
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send(_parameters);
}




// la petite soeur de celle du dessus mais en synchrone
function sendRequestSynchroneously(_method, _request, _parameters) {
    //initialisation de l'objet XMLXhttpRequest
    var xhr = initRequete ();

    //envoi de la requête de chargement du fichier XML au serveur
	//le dernier paramètre est true ; le chargement du fichier se fera en asynchrone
    xhr.open(_method, _request, false);
    //encodage des paramètres dans la requête, si la méthode est post
	if(_parameters && (_method == "post" || _method == "POST"))
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send(_parameters);
}




//-------------------------------------------------------------------------------------------------------------------
//------------------------------------------------ Fonctions secondaires --------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

//fonction appelée lors de la réception de la réponse, si la fonction principale loadXMLAsynchroneously() a été utilisée.
// _XMLDoc : Document XML créé par la requête
// _id : ID de l'élément dans lequel seront ajouté les données
function getXMLDocument(_xhr, _XMLDoc, _id) {
    // teste si la réponse est disponible
	if (_xhr.readyState==4) {
		// teste si la réponse est arrivée et contient des données (code HTTP = 200 : OK)
		if (_xhr.status == 200) {
			// teste si la réponse est arrivée en XML ou en texte (peut arriver pour certaines configurations d'Apache)
			if (_xhr.responseXML != null) {
				_XMLDoc=_xhr.responseXML;
			} else if (_xhr.responseText != null) {
				//si la réponse est en texte, transformation en XML (voir fonction façade plus bas)
				_XMLDoc=parseFromString(_xhr.responseText);
			}
			//Décommentez la ligne suivante pour voir le contenu XML obtenu (ne marche qu'avec FF)
			//alert((new XMLSerializer()).serializeToString(_XMLDoc));
			
			//appel de la fonction de traitement qui va ajouter les données au corps de la page
			traiteXML (_XMLDoc, _id);
		
		//teste si le code de statut est autre que le code renvoyé en cas d'absence de nouveaux messages.
		//Remarque : le code 1223 provient d'un bug avec IE : http://trac.dojotoolkit.org/ticket/2418
//		} else if (_xhr.status != 204 && _xhr.status != 1223) {
//		   alert("Un problème est survenu avec la requête : ");
		} else if (_xhr.status == 204) {
			//alert("Pas de nouveaux messages");
		} else if (_xhr.status == 1223) {
			alert("Bug IE");
		} else {
			alert("statut HTTP (="+_xhr.status+") inconnu");
        }
	}
}







//fonction de traitement de la réponse :
//- récupère des données dans un document XML passé en paramètre
//- formatte ces données en XHTML
//- puis les rajoute dans un élément d'id passé en paramètre
//remarque : cette fonction utilise la fonction façade getXMLTextContent().
function traiteXML (_XMLDoc, _id) {
	//recherche l'ensemble des éléments avec un nom donné (ici "Message") dans le document
	//récupère une NodeList => itération sur chacun des éléments
	var children = _XMLDoc.getElementsByTagName("donnees");
	if (children.length > 0) {
		for (var i = 0; i < children.length; i++) {
			var msg = children.item(i);
			
			//teste si les sous-éléments recherchés sont bien présents dans chaque élément "Message"
			if (msg.hasChildNodes() && msg.getElementsByTagName("login").length == 1 && msg.getElementsByTagName("message").length == 1
			 && msg.getElementsByTagName("dateheure").length == 1 && msg.getElementsByTagName("message").length == 1) {
				

				var precedent=document.getElementById(_id)
				//var precedent=window.frames["fr_messages"].document.getElementById(_id)
				//var precedent=frames["fr_messages"].document.getElementById(_id)
				//var precedent=frames[0].document.getElementById(_id)
				//var precedent= window.top.fr_messages.document.getElementById(_id);

				//crée un élément qui va contenir tout le message
				var ligne = document.createElement("tr");
				

				// ------------------------ Heure d'affichage --------------------------
				var IDHrAffElt = document.createElement("td");
				//crée un noeud texte à partir des contenus du document XML (voir fonction getXMLTextContent plus bas)
				var IDHrAffTxt = document.createTextNode(DonneHeure());
				//place le noeud texte dans le contenu de l'élément span
				IDHrAffElt.appendChild(IDHrAffTxt);
				//place la structure XHTML pour l'affichage du pseudo de l'auteur dans l'élément qui va contenir tout le message
				ligne.appendChild(IDHrAffElt);


				// ------------------------ IDMessages --------------------------
				var IDMessagesElt = document.createElement("td");
				//crée un noeud texte à partir des contenus du document XML (voir fonction getXMLTextContent plus bas)
				var IDMessagesTxt = document.createTextNode(getXMLTextContent(msg.getElementsByTagName("IDMessages").item(0)));
				//place le noeud texte dans le contenu de l'élément span
				IDMessagesElt.appendChild(IDMessagesTxt);
				//place la structure XHTML pour l'affichage du pseudo de l'auteur dans l'élément qui va contenir tout le message
				ligne.appendChild(IDMessagesElt);


				// --------------------- Pseudo ----------------------------------
				var auteurelt = document.createElement("td");
				var auteurtxt = document.createTextNode(getXMLTextContent(msg.getElementsByTagName("login").item(0)));
				auteurelt.appendChild(auteurtxt);
				ligne.appendChild(auteurelt);
				
				
				// ------------------------ Date, heure --------------------------
				var dateheureelt = document.createElement("td");
				var dateheuretxt = document.createTextNode(getXMLTextContent(msg.getElementsByTagName("dateheure").item(0)));
				dateheureelt.appendChild(dateheuretxt);
				ligne.appendChild(dateheureelt);

				
				
				// --------------------------- Message -------------------------------------
				var contenuelt = document.createElement("td");
				var contenutxt = document.createTextNode(getXMLTextContent(msg.getElementsByTagName("message").item(0)));
				contenuelt.appendChild(contenutxt);
				ligne.appendChild(contenuelt);
					
				//ajoute une propriété de style au nom de l'auteur
				auteurelt.style.fontWeight = "bold";
				
				
				//place l'élément qui contient tout le message à un endroit donné du document, donné par l'id passé en paramètre
				//document.getElementById(_id).appendChild(ligne);
				
				precedent.insertBefore(ligne, precedent.firstChild);
				
				
			} else {
				//si l'un des éléments "Message" n'a pas une structure convenable
				alert("Erreur dans la structure du document XML récupéré");
			}
		}
	} else {
		//alert("Pas de données");
	}
}




//-------------------------------------------------------------------------------------------------------------------
//---------------------------------------------- Fonctions façades --------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
//permettent de masquer les différences entre les navigateurs
//remarque : ces fonctions ont uniquement été testées avec FF et IE7

//fonction façade qui teste le type de navigateur et renvoie un objet capable de se charger de l'envoi de la requête.
function initRequete() {
    var xhr = null;
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
	return xhr;
}



//fonction façade qui reçoit une chaîne de caractères et la parse en XML pour renvoyer un objet DOM.
//remarque : le XML doit être bien formé, sans quoi l'erreur de parsing bloque l'exécution du script.
function parseFromString (_docTXT) {
	// code for IE
	if (window.ActiveXObject)
  	{
		var XMLDoc=new ActiveXObject("Microsoft.XMLDOM");
		XMLDoc.async="false";
		XMLDoc.loadXML(_docTXT);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else
  	{
		var parser=new DOMParser();
		var XMLDoc=parser.parseFromString(_docTXT,"text/xml");
	}
	return XMLDoc;
}


//fonction façade qui renvoie le texte contenu dans un élément XML
function getXMLTextContent (_source) {
	if (_source.textContent != null) {
		//Gecko
		return _source.textContent;
	} else {
		//IE
		return _source.text;
	}
}



/*
function DonneHeure() {
  today   = new Date();
  hours   = today.getHours();
  minutes = today.getMinutes();
  seconds = today.getSeconds();
  timeValue = hours;

  // Les deux prochaines conditions ne servent que pour l'affichage.
  // Si le nombre de minute est inférieur à 10, alors on rajoute un 0 devant...

  timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
  timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
  //document.getElementById("time").value = timeValue;
  //timerRunning = true;
  return timeValue;
}
*/



function ValiderFormContact(formulaire) {
	if (formulaire.mail.value=="") {
		alert("Le mail ne peut-être vide");
		return;
	}
	
	if (formulaire.telephone.value=="") {
		alert("Le téléphone ne peut-être vide");
		return;
	}

	if (formulaire.nom.value=="") {
		alert("Le nom ne peut-être vide");
		return;
	}

	if (formulaire.prenom.value=="") {
		alert("Le prénom ne peut-être vide");
		return;
	}

	formulaire.submit();
}



function DeplaceMenu() {
	// Pour faire fonctionner cette procédure il faut ajouter onscroll="DeplaceMenu()" dans la balise BODY de index.php
	/*
	alert(
	'window.screen.availHeight='+window.screen.availHeight+'\n\r'+
	'window.innerHeight='+window.innerHeight+'\n\r'+
	'window.outerHeight='+window.outerHeight+'\n\r'+
	'window.outerWidth='+window.outerWidth+'\n\r'+
	'window.innerWidth='+window.innerWidth+'\n\r'+
	'window.pageXOffset='+window.pageXOffset+'\n\r'+
	'window.pageYOffset='+window.pageYOffset+'\n\r'+
	'--fin--');
	*/
	
	//alert('div.height='+document.getElementById("MenuGauche").height);
	
	document.getElementById("MenuGauche").style.top=window.pageYOffset+235+"px";
	//document.getElementById(LayerID).style.top = bloc_y
}



function pcdAfficheListeProduits() {
	var top=500;
	var left=600;
	PagePopUp=window.open('produit_liste.php','PageListeProduits','width=750,height=500,left='+left+',top='+top+',location=no,resizable=no,status=no,toolbar=no,scrollbars=yes,directories=no');
}



function pcdAuthentication() {
	Login=document.frm_login.Login.value
	Pwd=document.frm_login.Pwd.value
/*	
    var xhr = initRequete ();
	
    xhr.onreadystatechange = function() {
		if (xhr.readyState==4) {
		}
	};
	
    xhr.open('POST','connexion.php', true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send('Login='+Login+'&Pwd='+Pwd);
*/
	sendRequestSynchroneously('POST','connexion.php','Login='+Login+'&Pwd='+Pwd);
	window.location.replace('index.php');	
}




function pcdRazSession() {
	sendRequestSynchroneously('POST','raz_session.php');
	//window.location.reload();
	window.location.replace('index.php');
}



function pcdProduitAffiche(_IDProduits) {
	// Function appelée lors de la sélection par la fenêtre liste produit
	window.opener.document.getElementById("td_IDProduits").innerHTML=_IDProduits;
	window.opener.document.getElementById("inpRef").value=document.getElementById("Ref"+_IDProduits).innerHTML;
	window.opener.document.getElementById("td_LibProd").innerHTML=document.getElementById("LibProd"+_IDProduits).innerHTML;
	window.opener.document.getElementById("td_PrixStr").innerHTML=document.getElementById("Prix"+_IDProduits).innerHTML;
	
	window.opener.document.getElementById("inpQte").focus();
}



function pcdProduitAjoute() {
	entIDProduits=document.getElementById("td_IDProduits").innerHTML;
	entQte=document.getElementById("inpQte").value;
	
	if (entIDProduits==0) {
		alert('Aucun produit à ajouter');
		return;
	}
	if (entQte==0) {
		alert('Veuillez renseigner la quantité SVP');
		document.getElementById("inpQte").focus();
		return;
	}
	
	var xhr = initRequete ();

    xhr.onreadystatechange = function() {pcdAjouteProduitDansTb(xhr);}

	xhr.open('POST','produit_ajoute.php', true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send('IDProduits='+entIDProduits+'&Qte='+entQte);
}


function pcdAjouteProduitDansTb(_xhr) {
	// Lancée en call back de pcdProduitRecherche
	var XMLDoc = null;

	if (_xhr.readyState!=4) {
		document.getElementById("td_TotHT").innerHTML="<center><img src='images/attente.gif'/></center>";
		document.getElementById("td_AjoutProd").innerHTML="<center><img src='images/attente.gif'/></center>";

		return false;
	}

	if (_xhr.status!=200) {
		alert("xhr.status = "+_xhr.status);
		return false;
	}

	if (_xhr.responseText != null) {
		XMLDoc=parseFromString(_xhr.responseText);
	} else if (_xhr.responseXML != null) {
		XMLDoc=_xhr.responseXML;
	} else {
		alert("Impossible d'interpréter le XML");
		return false;
	}
	
	var children = XMLDoc.getElementsByTagName("donnees");
	if (children.length == 0) {
		alert('Pas de donnée');
		return false;
	}
	
	var msg = children.item(0);

	entIDCdesDetail=getXMLTextContent(msg.getElementsByTagName("IDCdesDetail").item(0));
	entIDProduits=getXMLTextContent(msg.getElementsByTagName("IDProduits").item(0));
	reeTotHt=getXMLTextContent(msg.getElementsByTagName("TotHT").item(0));
	strLibProd=getXMLTextContent(msg.getElementsByTagName("LibProd").item(0));
	reePrix=getXMLTextContent(msg.getElementsByTagName("PrixNum").item(0));
	strPrix=getXMLTextContent(msg.getElementsByTagName("PrixStr").item(0));
	entQte=getXMLTextContent(msg.getElementsByTagName("Qte").item(0));
	strRef=getXMLTextContent(msg.getElementsByTagName("Ref").item(0));
	reeSTot=getXMLTextContent(msg.getElementsByTagName("STot").item(0));

	// Construction du noeud
	EltTR = document.createElement("tr");
	
	EltTD = document.createElement("td");
	EltA = document.createElement("a");
	EltA.setAttribute("href","javascript:pcdProduitSupprime('"+entIDCdesDetail+"')");
	EltIMG=document.createElement("img");
	EltIMG.setAttribute("src","images/supprimer.png");
	EltIMG.setAttribute("title","Supprimer ce produit");
	EltIMG.setAttribute("border","0");
	EltA.appendChild(EltIMG);
	EltTD.appendChild(EltA);
	EltTR.appendChild(EltTD);
	
	
	// Référence
	EltTD = document.createElement("td");
	Txt = document.createTextNode(strRef);
	EltTD.appendChild(Txt);
	EltTR.appendChild(EltTD);
	

	// Libellé
	EltTD = document.createElement("td");
	Txt = document.createTextNode(strLibProd);
	EltTD.appendChild(Txt);
	EltTR.appendChild(EltTD);
	

	// Qté
	Txt=NombreVersChaine(entQte,2,",");
	
	EltTD = document.createElement("td");
	EltINP=document.createElement("input");
	EltINP.setAttribute("type","text");
	EltINP.setAttribute("value",Txt);
	EltINP.setAttribute("size",3);
	EltINP.setAttribute("onKeyUp","javascript:pcdProduitModifQte('"+entIDCdesDetail+"',this.value)");
	EltTD.appendChild(EltINP);
	EltTR.appendChild(EltTD);


	// PrixNum
	Txt="td_Prix"+entIDCdesDetail;
	EltTD = document.createElement("td");
	EltTD.style.display="none";
	EltTD.setAttribute("id",Txt);
	Txt = document.createTextNode(reePrix);
	EltTD.appendChild(Txt);
	EltTR.appendChild(EltTD);

	// PrixTxt
	EltTD = document.createElement("td");
	Txt = document.createTextNode(strPrix);
	EltTD.appendChild(Txt);
	EltTR.appendChild(EltTD);


	// STot
	Txt="td_STot"+entIDCdesDetail;
	EltTD = document.createElement("td");
	EltTD.setAttribute("id",Txt);
	Txt = document.createTextNode(NombreVersChaine(reeSTot,2,","));
	EltTD.appendChild(Txt);
	EltTR.appendChild(EltTD);

	// Insertion du noeud dans la page
	var table=document.getElementById("tabListeProduits");
	//table.insertBefore(EltTR, table.firstChild);
	table.appendChild(EltTR);

	document.getElementById("td_TotHT").innerHTML=NombreVersChaine(reeTotHt,2,",");
	document.getElementById("td_AjoutProd").innerHTML="<a href='javascript:pcdProduitAjoute();' class='contact'><img src='images/ajouter.png' title='Ajouter ce produit' border='0' /></a>";
}



function pcdProduitSupprime(_IDCdesDetail) {
	if (confirm('Souhaitez-vous réellement supprimer ce produit')==true) {
		sendRequestSynchroneously('POST','produit_supprime.php','IDCdesDetail='+_IDCdesDetail);
		window.location.reload();
	}
}


function pcdProduitRecherche(_Ref) {
	// Lancée par la modification dans l'INPUT Ref
	document.getElementById("td_IDProduits").innerHTML="<center><img src='images/attente.gif'/></center>";
	document.getElementById("td_LibProd").innerHTML="<center><img src='images/attente.gif'/></center>";
	document.getElementById("td_PrixNum").innerHTML="<center><img src='images/attente.gif'/></center>";
	document.getElementById("td_PrixStr").innerHTML="<center><img src='images/attente.gif'/></center>";
	document.getElementById("td_AjoutProd").innerHTML="<center><img src='images/attente.gif'/></center>";
	document.getElementById("td_Qte").innerHTML="<center><img src='images/attente.gif'/></center>";

	var xhr = initRequete ();

    xhr.onreadystatechange = function() {pcdProduitActualise(xhr);}

	xhr.open('POST','produit_recherche.php', true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send('Ref='+_Ref);
}


function pcdProduitActualise(_xhr) {
	// Lancée en call back de pcdProduitRecherche
	var XMLDoc = null;

	if (_xhr.readyState==4) {
		// RAS
		return false;
	}
	
	if (_xhr.status!=200) {
		alert("xhr.status = "+_xhr.status);
		return false;
	}

	if (_xhr.responseText != null) {
		XMLDoc=parseFromString(_xhr.responseText);
	} else if (_xhr.responseXML != null) {
		XMLDoc=_xhr.responseXML;
	} else {
		alert("Impossible d'interpréter le XML");
		return false;
	}

	var children = XMLDoc.getElementsByTagName("donnees");
	if (children.length > 0) {
		for (var i = 0; i < children.length; i++) {
			var msg = children.item(i);
			
			document.getElementById("td_IDProduits").innerHTML=getXMLTextContent(msg.getElementsByTagName("ID").item(0));
			document.getElementById("td_LibProd").innerHTML=getXMLTextContent(msg.getElementsByTagName("Libelle").item(0));
			document.getElementById("td_PrixStr").innerHTML=getXMLTextContent(msg.getElementsByTagName("PrixStr").item(0));
			document.getElementById("td_PrixNum").innerHTML=getXMLTextContent(msg.getElementsByTagName("PrixNum").item(0));
			
			document.getElementById("td_Qte").innerHTML="<input type='text' size='3' id='inpQte'/>"
			document.getElementById("td_AjoutProd").innerHTML="<a href='javascript:pcdProduitAjoute();' class='contact'><img src='images/ajouter.png' title='Ajouter ce produit' border='0' /></a>"	;			
		}
	}
}



function pcdProduitModifQte(_IDCdesDetail,_Qte) {
	document.getElementById("td_TotHT").innerHTML="<center><img src='images/attente.gif'/></center>";
	document.getElementById("td_STot"+_IDCdesDetail).innerHTML="<center><img src='images/attente.gif'/></center>";

	var xhr = initRequete ();
	
    xhr.onreadystatechange = function() {pcdProduitDetailActualise(xhr,_IDCdesDetail,_Qte);}
	
	xhr.open('POST','produit_modif_qte.php', true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send('IDCdesDetail='+_IDCdesDetail+'&Qte='+_Qte);
}




function pcdProduitDetailActualise(_xhr,_IDCdesDetail,_Qte) {
	// Fonction lancée par la modification de qté dans les produits
	if (_xhr.readyState!=4) {
		// RAS - ON attend
	}
	
	if (_xhr.status!=200) {
		alert("xhr.status = "+_xhr.status);
		return false;
	}

	strReponse=_xhr.responseText;
	if (isNaN(strReponse)) {
		// RAS
	} else {
		reeReponse=parseFloat(strReponse);
		strReponse=NombreVersChaine(reeReponse,2,",");
	}

	// Affichage du total cde
	document.getElementById("td_TotHT").innerHTML=strReponse;
	
	// Affichage du sous-total ligne
	reeReponse=parseFloat(document.getElementById("td_Prix"+_IDCdesDetail).innerHTML);
	reeReponse=reeReponse*_Qte;
	strReponse=NombreVersChaine(reeReponse,2,",");
	document.getElementById("td_STot"+_IDCdesDetail).innerHTML=strReponse;
}




function pcdCommandeNouvelle() {
	varIDFsseurs=prompt("Saisissez le n° de tarif SVP (il est indiqué sur le haut du tarif que vous avez reçu)","");
	
	sendRequestSynchroneously('POST','commande_nouvelle.php','IDFsseurs='+varIDFsseurs);
	window.location.replace('index.php');	
}



function pcdCommandeAffiche(_IDCdes) {
	window.location.replace('index.php?IDCdes='+_IDCdes);
}



function pcdCommandeValide(_IDCdes) {
	reeTotHT=parseFloat(document.getElementById("td_TotHT").innerHTML);
	if (reeTotHT<300) {
		alert("Le montant de la commande est inférieur à 300€\nVous ne pouvez pas la valider");
		return false;
	} else if (reeTotHT<500) {
		if (confirm('Cette commande fait moins de 500€\nCela engendrera probablement des frais de livraison\nSouhaitez-vous poursuivre')==false) {
			return false;
		}
	} else {
		if (confirm('Souhaitez-vous réellement valider cette commande\nUne commande validée ne peut plus être modifiée')==false) {
			return false;
		}	
	}
	sendRequestSynchroneously('POST','commande_valide.php','IDCdes='+_IDCdes);
	window.location.replace('index.php?IDCdes='+_IDCdes);
}





function pcdCommandeImprime(_IDCdes) {
	window.open("commande_impression.php");
}





function NombreVersChaine(valeur,decimal,separateur) {
	// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
	var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
	var val=Math.floor(Math.abs(valeur));
	if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal>0) {
		var decim=""; 
		for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
	
	var reg=new RegExp(".\..","g");
	
	//val_format.replace("/./g",",");
	val_format.replace(reg,",");
	
	return val_format;
}