

//Variables pour lire le fichier XML renvoyer par ModifierPanier.java
var TAG_REPONSE = "REPONSE";
var TAG_RESULTAT = "RESULTAT";
var TAG_IDLIGNETABLEAU = "IDLIGNETABLEAU";
var TAG_MESSAGE = "MESSAGE";
var TAG_CODE_ERREUR ="CODE_ERREUR";

//Etat du traitement
var TAG_ETAT = "ETAT";
var ETAT_OK = "OK";
var ETAT_KO = "KO";
	
	//Mettre à jour le panier
var TAG_RECAPPANIER = "RECAPPANIER";
var RECAPPANIER_NB = "RECAPPANIER_NB";
var RECAPPANIER_MONTANT_HT = "RECAPPANIER_MONTANT_HT";
var RECAPPANIER_MONTANT_TTC = "RECAPPANIER_MONTANT_TTC";
    
    //Liste des codes erreurs
var ERREUR_EXCEPTION = "1";	    
var ERREUR_DEJAPRESENT = "2";	 
    
    //Les champs à mettre à jour
var TAG_UPDATE_HIDDEN_HT = "UPDATE_HIDDEN_HT";  		
var TAG_UPDATE_HIDDEN_TTC = "UPDATE_HIDDEN_TTC"; 
var TAG_UPDATE_CHAMP_PUHT = "UPDATE_CHAMP_PUHT";  	
var TAG_UPDATE_CHAMP_PUTTC = "UPDATE_CHAMP_PUTTC";  	
var TAG_UPDATE_CHAMP_HT = "UPDATE_CHAMP_HT";  		
var TAG_UPDATE_CHAMP_TTC = "UPDATE_CHAMP_TTC";  
var TAG_UPDATE_RECHGT_NECESSAIRE = "UPDATE_RECHGT_NECESSAIRE";


//Variables globales qui ont été défini dans traitement/PriseCommande.java
//var globalPanier_listeColonnes


// Fonction permettant l'ajout de l'article dans le panier par la touche Entrée
function validerQuantiteKeyPress(e, isProduitIshop, element, messageNoQte, urlAction, idSite, refArticle, desiArticle, messageDebut, messageFin, effacerQuantite, quantiteDefaut, idElemPanier) {
	/*var touche=(window.Event)?e.which:e.keyCode; //pour savoir s'il s'agit de Msie ou de Netscape
  	if (touche==13){
    	ajouterPanier(isProduitIshop, element, messageNoQte, urlAction, idSite, refArticle, desiArticle, messageDebut, messageFin, effacerQuantite, quantiteDefaut);
  	}*/

 	if(!e){
		// for IE
		e = window.event;
   	}
   	
   	if(e.keyCode==13){
		ajouterPanier(isProduitIshop, element, messageNoQte, urlAction, idSite, refArticle, desiArticle, messageDebut, messageFin, effacerQuantite, quantiteDefaut, idElemPanier);
	}	
}


// Fonction ajoutant l'article d'indice indice dans le panier avec la quantité correspondante
function ajouterPanier(isProduitIshop, element, messageNoQte, urlAction, idSite, refArticle, desiArticle, messageDebut, messageFin, effacerQuantite, quantiteDefaut, idElemPanier) {
	var qte;
	try{
		if(element!=null){
			qte = element.value;
		}else{
			qte = 1;
		}
	}
	catch (e){
		qte = 1;
	}
	if (qte == null || qte == '' || qte == "0" || isNaN(qte) || parseInt(qte) <= 0) {
		alert(messageNoQte);
		if(element!=null){
		 	element.select();
		 	element.focus();
		 }
	}else {
		if(isProduitIshop){
			ajoutPanier(urlAction, idSite, refArticle, qte, messageDebut, messageFin, desiArticle, true, null, idElemPanier);
			//if(element!=null){
			//	element.value = '1';
			//}
		}else{
	        try{
	                //Pour savoir si on est dans la commande (Commande > commande en cours) ou le catalogue
	                //en sachant que iframeFicheArticle se trouve seulement et forcément dans le catalogue  
	                var iframeFicheArticle;
	                try { 
	                        iframeFicheArticle = window.parent.iframeFicheArticle;
	                        if (iframeFicheArticle == null){
	                        	iframeFicheArticle = window.opener.iframeFicheArticle;
	                        }
	                } catch (e) { 
	                        iframeFicheArticle = null; 
	                }
	        
	                if (iframeFicheArticle == null){
	                        //On est dans la commande
	                        //Il faut mettre à jour le tableau, donc c'est comme si on faisait une saisie rapide
	                        try{
	                        	//L'ajout se fait-il dans l'encart résultat?
								window.top.ajoutPanierMiseAJourTableau(refArticle, qte, idSite, urlAction, idElemPanier, window);
	                       	}catch (e){
	                       		logErreurJS("[priseCommande.js, function ajouterPanier] \n L'ajout panier n'a pas pu être délenché dans l'encart Résultat");
	                       		try{
		                       		window.opener.top.ajoutPanierMiseAJourTableau(refArticle, qte, idSite, urlAction, idElemPanier, window);
		                       	}catch (e){
		                       		logErreurJS("[priseCommande.js, function ajouterPanier] \n L'ajout panier n'a pas pu être délenché dans la fiche Article");
		                       	}
	                       	}
	                }else{
	                        //On est dans le catalogue
	                        //On peut faire appel à un simple ajoutPanier avec affichage de popup
	                       	ajoutPanier(urlAction, idSite, refArticle, qte, messageDebut, messageFin, desiArticle, true, null, idElemPanier);
	                }
	        }catch (e){
	        }
		}
		if(element!=null && effacerQuantite){
			element.value = quantiteDefaut;
		}
	}
}

function cryptageReference(reference){
	if(reference!=null && reference!=""){
		reference = escape(reference);
		//escape(String) Note: does not encode '/' and '+' character
		reference = reference.replace("+","%2B");
	}
	return reference;
}


// Fonction mettant à jour le cookie du panier
// Attention : dureeVie est exprimée en ms
function ajoutPanier(urlAction, idSite, reference, qte, msg_debut, msg_fin, libArticle,afficherPopup, parametresRequete, idElemPanier){
	// si afficherPopup n'est pas renseigné, il faut afficher la popup
	if (typeof afficherPopup == 'undefined') { afficherPopup = true; }

	//Variables pour lire le fichier XML
	var TAG_REPONSE = "REPONSE";
	var TAG_IDLIGNETABLEAU = "IDLIGNETABLEAU";
	var TAG_MESSAGE = "MESSAGE";
	var TAG_CODE_ERREUR ="CODE_ERREUR";
	
	//Etat du traitement
	var TAG_ETAT = "ETAT";
	var ETAT_OK = "OK";
	var ETAT_KO = "KO";
	
	//On enregistre le nouvel article en BD (fait en ajax)
	var donnees = (parametresRequete) ? parametresRequete : "";
	if (donnees.length > 0)
	{
		donnees = donnees + "&";
	}
	donnees = donnees + "action=ajoutPanier"+
		"&idSite="+idSite+
		"&quantite="+qte+
		"&reference="+cryptageReference(reference)+
		"&idElemPanier="+ ((idElemPanier) ? idElemPanier : '');
	var xml = getReponseXmlAjax(urlAction,donnees);
	var noeudReponse = xml.getElementsByTagName(TAG_REPONSE).item(0);
	if(noeudReponse!=null ){
		var noeudEtat = xml.getElementsByTagName(TAG_ETAT).item(0);
		if(noeudEtat!=null && noeudEtat.firstChild.data == ETAT_OK)
		{
			var noeudMessage = xml.getElementsByTagName(TAG_MESSAGE).item(0);
			if(noeudMessage != null)
			{		
				if (noeudMessage.firstChild != null)
				{
					
					//Récupération de la popup
					var windowPrincipal = window.top;
					if(windowPrincipal==null){
						windowPrincipal = window;
					}
					var divPanier = windowPrincipal.document.getElementById('divAjoutPanier');
					if (!divPanier){
						//Construction de la popup
						divPanier = windowPrincipal.document.createElement('div');
						divPanier.id='divAjoutPanier';
						divPanier.style.display='none';
						windowPrincipal.document.body.appendChild(divPanier);
					}
					//Mise à jour du contenu de la popup
					divPanier.innerHTML=noeudMessage.firstChild.data;
					divPanier.style.zIndex='9999';
					divPanier.style.position='absolute';
					var scrOfX = 0, scrOfY = 0;
					if( typeof( windowPrincipal.pageYOffset ) == 'number' ) {
						//Netscape compliant
					    scrOfY = windowPrincipal.pageYOffset;
					    scrOfX = windowPrincipal.pageXOffset;
					}else if( windowPrincipal.document.body && ( windowPrincipal.document.body.scrollLeft || windowPrincipal.document.body.scrollTop ) ) {
						//DOM compliant
						scrOfY = windowPrincipal.document.body.scrollTop;
					    scrOfX = windowPrincipal.document.body.scrollLeft;
					}else if( windowPrincipal.document.documentElement && ( windowPrincipal.document.documentElement.scrollLeft || windowPrincipal.document.documentElement.scrollTop ) ) {
					    //IE6 standards compliant mode
					    scrOfY = windowPrincipal.document.documentElement.scrollTop;
					    scrOfX = windowPrincipal.document.documentElement.scrollLeft;
					}
					divPanier.style.top = (scrOfY + 150) + 'px';
					divPanier.style.left =Math.round(((windowPrincipal.document.body.clientWidth - 400) / 2 )) + 'px';
					divPanier.style.display='block';
				}
				// else le contenu HTML est vide, on n'affiche pas la popup
			}
			else
			{
				//Une erreur s'est produite lors de l'ajout de l'article au panier
				alert(noeudResultat.firstChild.data);
			}
			//Mise à jour du récap panier
			updateRecapPanier(xml);
		}else{
			if(noeudEtat==null){
				logErreurJS("[priseCommande.js, function ajoutPanier] \n <ETAT>==NULL");
			}else if(noeudEtat.firstChild.data==ETAT_KO){	 
				logErreurJS("[priseCommande.js, function ajoutPanier] \n <ETAT> : KO");
			}else{
				logErreurJS("[priseCommande.js, function ajoutPanier] \n <ETAT> : undefined");
			}
			//Un erreur s'est produite
			var noeudMessage = xml.getElementsByTagName(TAG_MESSAGE).item(0);
			if(noeudMessage!=null){
				alertHTML('erreur', null, noeudMessage.firstChild.data);
			}else{
				logErreurJS("[priseCommande.js, function ajoutPanier] \n <MESSAGE>==null");
			}
		}
	}else{
		logErreurJS("[priseCommande.js, function ajoutPanier] \n Le flux xml retourné par modifierPanier.java est mal formé, il ne contient pas le tag <REPONSE>");
	}
	
}

function updateRecapPanier(xml){
	var elemNbArticles = document.getElementById('recapPanier_nbArticles');
	var elemNbLignes = document.getElementById('recapPanier_nbLignes');
	var elemMontantHT = document.getElementById('recapPanier_montantHT');
	var elemMontantTTC = document.getElementById('recapPanier_montantTTC');
	if(elemNbArticles!=null || elemNbLignes!=null || elemMontantHT!=null || elemMontantTTC!=null){
		var noeudRecapPanier = xml.getElementsByTagName("RECAPPANIER").item(0);
		var valNoeudRecapPanier = noeudRecapPanier.childNodes;
		if(elemNbArticles!=null){
			var noeudRecapPanier_Nb = xml.getElementsByTagName("RECAPPANIER_NB").item(0);
			elemNbArticles.value = noeudRecapPanier_Nb.firstChild.data;
		}
		if(elemNbLignes!=null){
			var noeudRecapPanier_Nb = xml.getElementsByTagName("RECAPPANIER_NBLIGNES").item(0);
			elemNbLignes.value = noeudRecapPanier_Nb.firstChild.data;
		}
		if(elemMontantHT!=null){
			var noeudRecapPanier_MontantHT = xml.getElementsByTagName("RECAPPANIER_MONTANT_HT").item(0);
			elemMontantHT.value = noeudRecapPanier_MontantHT.firstChild.data;
		}
		if(elemMontantTTC!=null){
			var noeudRecapPanier_MontantTTC = xml.getElementsByTagName("RECAPPANIER_MONTANT_TTC").item(0);
			elemMontantTTC.value = noeudRecapPanier_MontantTTC.firstChild.data;
		}
	}
}


//Le champ devient modifiable et change de style
function modifierChamp(elemInputChamp, elemBoutonValiderChamp){
	if(elemInputChamp.className == 'lecture'){
		//Le champ passe en mode édition
		elemInputChamp.className = 'edition';
		elemInputChamp.readOnly = false;
		//On fait apparaitre le bouton de validation
		if(elemBoutonValiderChamp!=null){
			//elemBoutonValiderChamp.style.display = 'block';
			elemBoutonValiderChamp.className = 'edition';
		}
	}else{
		//Le champ est déjà en édition, on ne fait rien
	}
}

//Le champ devient inactif
//La valeur est enregistrée en BD
function validerChamp(elemInputChamp, elemBoutonValiderChamp, idLigne, urlAction, idSite, nomChampBD, idElemPanier){
	if(elemInputChamp.className == 'edition'){
		//Le champ est en édition, il faut le passer en mode lecture
		elemInputChamp.className = 'lecture';
		elemInputChamp.readOnly = true;
		//On fait disparaitre le bouton de validation
		//elemBoutonValiderChamp.style.display = 'none';
		elemBoutonValiderChamp.className = 'lecture';
		//On enregistre le champ en BD (fait en ajax)
		var donnees = "action=validerChamp"+
				"&updateChamp="+nomChampBD+
				"&updateValeur="+elemInputChamp.value+
				"&idLigne="+idLigne+
				"&idSite="+idSite+
				"&idElemPanier=" + ((idElemPanier) ? idElemPanier : '');
		var xml = getReponseXmlAjax(urlAction,donnees);	
		var noeudReponse = xml.getElementsByTagName(TAG_REPONSE).item(0);
		if(noeudReponse!=null){
			var noeudEtat = xml.getElementsByTagName(TAG_ETAT).item(0);
			if(noeudEtat!=null && noeudEtat.firstChild.data == ETAT_OK){
				if(elemInputChamp.id=='priseCommande_qte_'+idLigne){
					var noeud;
					var elemAMettreAjour;
					noeud = xml.getElementsByTagName(TAG_UPDATE_HIDDEN_HT).item(0);
					if(noeud!=null){
						elemAMettreAjour = document.getElementById('totalHTPriseCommande_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
					}
					noeud = xml.getElementsByTagName(TAG_UPDATE_HIDDEN_TTC).item(0);
					if(noeud!=null){
						elemAMettreAjour = document.getElementById('totalTTCPriseCommande_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
					}
					noeud = xml.getElementsByTagName(TAG_UPDATE_CHAMP_PUHT).item(0);
					if(noeud!=null){
						elemAMettreAjour = document.getElementById('tablePUHTPriseCommande_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.innerHTML = formatMontant(noeud.firstChild.data);
						elemAMettreAjour = document.getElementById('divPUHT_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.innerHTML = formatMontant(noeud.firstChild.data);
						elemAMettreAjour = document.getElementById('divPUHorsRemise_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.innerHTML = '';
					}
					noeud = xml.getElementsByTagName(TAG_UPDATE_CHAMP_PUTTC).item(0);
					if(noeud!=null){
						elemAMettreAjour = document.getElementById('tablePUTTCPriseCommande_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.innerHTML = formatMontant(noeud.firstChild.data);
					}
					noeud = xml.getElementsByTagName(TAG_UPDATE_CHAMP_HT).item(0);
					if(noeud!=null){
						elemAMettreAjour = document.getElementById('tableHTPriseCommande_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.innerHTML = formatMontant(noeud.firstChild.data);
					}
					noeud = xml.getElementsByTagName(TAG_UPDATE_CHAMP_TTC).item(0);
					if(noeud!=null){
						elemAMettreAjour = document.getElementById('tableTTCPriseCommande_'+idLigne);
						if(elemAMettreAjour!=null)
							elemAMettreAjour.innerHTML = formatMontant(noeud.firstChild.data);
					}
					noeud = xml.getElementsByTagName(TAG_UPDATE_RECHGT_NECESSAIRE).item(0);
					if(noeud!=null && noeud.firstChild.data == "O"){
						document.location.reload();
					}
					
					
					//Mise à jour des totaux de la commande
					totauxCommande();
					
					//Mise à jour du récap panier
					updateRecapPanier(xml);
				}
			}else{
				//Un erreur s'est produite
				var noeudMessage = xml.getElementsByTagName(TAG_MESSAGE).item(0);
				if(noeudMessage!=null)
					alert(noeudMessage.firstChild.data);
				if(elemInputChamp.id=='priseCommande_qte_'+idLigne){
					//On remet l'ancienne quantité
					var elemInputOldQte = document.getElementById("priseCommande_oldQte_"+idLigne);
					elemInputChamp.value = elemInputOldQte.value;
				}else if(elemInputChamp.id=='priseCommande_commentaire_'+idLigne){
					//On remet l'ancien commentaire
					var elemInputOldQte = document.getElementById("priseCommande_oldCommentaire_"+idLigne);
					elemInputChamp.value = elemInputOldQte.value;
				}else{
					//On vide le champ
					elemInputChamp.value = "";
				}
			}
		}
	}else{
		//Le champ est en lecture, on ne fait rien
	}
}


function domSupprimerTr(elemTbody, elemTr){
	if(elemTbody!=null && elemTr!=null){
		elemTbody.removeChild(elemTr);
		return true;
	}
	return false;
}
function domAjouterTr(elemTbody, codeTr){
	var div = document.createElement('div');
	div.innerHTML='<table><tbody>' + codeTr + '</tbody></table>';
	var table = (div && div.childNodes && div.childNodes.length > 0) ? div.childNodes[0] : null;
	var tbody = (table && table.childNodes && table.childNodes.length > 0) ? table.childNodes[0] : null;
	var tr = (tbody && tbody.childNodes && tbody.childNodes.length > 0) ? tbody.childNodes[0] : null;
	if(elemTbody!=null){
		elemTbody.appendChild(tr);
		return tr;
	}
	return false;
}



//Supprime la ligne du tableau (tbody)
function supprimerLigne(elemBoutonSupp, idLigne, idSite, urlAction,idElemPanier){
	var elemTd = elemBoutonSupp.parentNode;
	var elemTr = elemTd.parentNode;
	//Supprimer la ligne en BD
	var donnees = "action=supprimerLigne"+
			"&idSite="+idSite+
			"&idLigne="+idLigne+
			"&idElemPanier="+((idElemPanier) ? idElemPanier : '');
	var xml = getReponseXmlAjax(urlAction,donnees);
	var noeudReponse = xml.getElementsByTagName(TAG_REPONSE).item(0);
	if(noeudReponse!=null ){
		var noeudEtat = xml.getElementsByTagName(TAG_ETAT).item(0);
		if(noeudEtat!=null && noeudEtat.firstChild.data == ETAT_OK){
			//Supprimer la ligne graphiquement
			var elemTBodyContenuPriseCommande = document.getElementById("contenuPriseCommande");
			domSupprimerTr(elemTBodyContenuPriseCommande, elemTr)
			//Mise à jour des totaux de la commande
			totauxCommande();
			//Mise à jour du récap panier
			updateRecapPanier(xml);
		}else{
			//Un erreur s'est produite
			var noeudMessage = xml.getElementsByTagName(TAG_MESSAGE).item(0);
			if(noeudMessage!=null)
				alert(noeudMessage.firstChild.data);
		}
	}
	var noeud = document.getElementById('commandeRapide');
	while (noeud)
	{
		//alert('debug disparition bloc ' + 'fin ' + noeud.parentNode.outerHTML);
		noeud = noeud.parentNode;
	}
//alert('debug disparition bloc ' + 'fin ' + document.getElementById('commandeRapide').parentNode.outerHTML);
}


//Ajout d'une ligne de commande
function ajouterLigne(idSite, urlAction, idElemPanier){
	var elemInputPriseCommandeRapide_Ref = document.getElementById("priseCommandeRapide_Ref");
	var elemInputPriseCommandeRapide_Qte = document.getElementById("priseCommandeRapide_Qte");
	//Ajout de la ligne au panier et affichage dans le tableau
	ajoutPanierMiseAJourTableau(elemInputPriseCommandeRapide_Ref.value, elemInputPriseCommandeRapide_Qte.value, idSite, urlAction, idElemPanier, window);
}

function ajoutPanierMiseAJourTableau(ref, qte, idSite, urlAction, idElemPanier, elemWindow){
	if(elemWindow==null){
		elemWindow = window;
	}
	//On enregistre le nouvel article en BD (fait en ajax) et on l'ajoute au tableau
	var elemInputPriseCommandeRapide_Ref = document.getElementById("priseCommandeRapide_Ref");
	var elemInputPriseCommandeRapide_Qte = document.getElementById("priseCommandeRapide_Qte");
	var donnees = "action=ajouterLigne"+
			"&idSite="+idSite+
			"&quantite="+qte+
			"&reference="+cryptageReference(ref)+
			"&idElemPanier=" + ((idElemPanier) ? idElemPanier : '')+
			"&listeColonnes="+globalPanier_listeColonnes;
	var xml = getReponseXmlAjax(urlAction,donnees);
	var noeudReponse = xml.getElementsByTagName(TAG_REPONSE).item(0);
	if(noeudReponse!=null){
		var noeudEtat = xml.getElementsByTagName(TAG_ETAT).item(0);
		if(noeudEtat!=null && noeudEtat.firstChild.data == ETAT_OK){
			logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n <ETAT>: OK");
			var noeudResultat = xml.getElementsByTagName(TAG_RESULTAT).item(0);
			if(noeudResultat!=null){
				if(!domAjouterTr(document.getElementById("contenuPriseCommande"), noeudResultat.firstChild.data)){
					logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n document.getElementById(\"contenuPriseCommande\")==null");
				}
				//Mise à jour des totaux de la commande
				totauxCommande();
				//Si article découpe affichage de la popup
				var noeudArticleDecoupe = xml.getElementsByTagName("ARTICLE_DECOUPE").item(0);
				if(noeudArticleDecoupe!=null){
					initialiseCptLigneDecoupe(1);
					var noeudArticleDecoupeLienAction = xml.getElementsByTagName("ARTICLE_DECOUPE_LIENACTION").item(0);
					if(noeudArticleDecoupeLienAction!=null){
						modifierDecoupage(noeudArticleDecoupeLienAction.firstChild.data);
					}
				}
			}else{
				logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n <TAG_RESULTAT>==null");
			}
			//Mise à jour du récap panier
			updateRecapPanier(xml);

			//On efface les deux champs de saisie rapide
			elemInputPriseCommandeRapide_Ref.value = "";
			elemInputPriseCommandeRapide_Ref.focus();
			var msgChampVide = elemInputPriseCommandeRapide_Qte.getAttribute('msgChampVide');
			elemInputPriseCommandeRapide_Qte.value=(msgChampVide) ? msgChampVide : '';
		}else{
			if(noeudEtat==null){
				logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n <ETAT>==NULL");
			}else if(noeudEtat.firstChild.data==ETAT_KO){	 
				logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n <ETAT> : KO");
			}else{
				logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n <ETAT> : undefined");
			}
			//Un erreur s'est produite
			var noeudMessage = xml.getElementsByTagName(TAG_MESSAGE).item(0);
			if(noeudMessage!=null){
				elemWindow.alert(noeudMessage.firstChild.data);
				elemInputPriseCommandeRapide_Ref.focus();
				elemInputPriseCommandeRapide_Ref.select();
			}else{
				logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n <MESSAGE>.item(0)==null");
			}
		}
	}else{
		logErreurJS("[priseCommande.js, function ajoutPanierMiseAJourTableau] \n Le flux xml retourné par modifierPanier.java est mal formé, il ne contient pas le tag <REPONSE>");
	}
}


//Mise à jour des totaux de la commande
function totauxCommande(){
	var elemTBodyContenuPriseCommande = document.getElementById("contenuPriseCommande");
	if(elemTBodyContenuPriseCommande!=null){
		var modeCalculPrixCommandeTmp = 'HT';
		try {modeCalculPrixCommandeTmp = eval('modeCalculPrixCommande');} catch (e) {}
		if (modeCalculPrixCommandeTmp == 'RELOAD')
		{
			document.location.reload();
		}
		else if (modeCalculPrixCommandeTmp == 'TTC')
		{
			var sommeTTC = 0;
			var elemTrs = elemTBodyContenuPriseCommande.childNodes;
			if(elemTrs!=null)
			{
				for(var i=0; i<elemTrs.length; i++)
				{
					if(elemTrs.item(i).nodeName == 'TR')
					{
						var idCourant = elemTrs.item(i).id;
						var index = idCourant.indexOf("_");
						var id = idCourant.substring(index+1);
						var elemInputPUTTC = document.getElementById("PUTTCPriseCommande_" + id);
						//alert(document.getElementById("PUHTPriseCommande_" + id));
						//alert(document.getElementById("PUTTCPriseCommande_" + id));
						var elemQuantite = document.getElementById("priseCommande_qte_" + id);
						//var elemCodeTva = document.getElementById("codeTva_" + id);
						var puttc = (elemInputPUTTC) ? parseFloat(elemInputPUTTC.value.replace(/,/g,'.')) : 0;
						var quantite = (elemQuantite) ? parseFloat(elemQuantite.value.replace(/,/g,'.')) : 0;
						//var codeTva = (elemCodeTva) ? elemCodeTva.value : '';
						var totalTTCLigne = Math.round(puttc * quantite * 100) / 100;
						sommeTTC = sommeTTC + totalTTCLigne;
						//var sommeBaseTva = sommeHTParBaseTva['TVA_' + codeTva];
						//sommeBaseTva = (sommeBaseTva) ? sommeBaseTva : 0;
						//sommeBaseTva = sommeBaseTva + totalHTLigne;
						//sommeHTParBaseTva['TVA_' + codeTva] = sommeBaseTva;
						//if(elemInputHT!=null){
						//	var totalHT = parseFloat(elemInputHT.value.replace(/,/g,'.'));
						//	sommeHT = Math.round((sommeHT + totalHT)*100)/100;
						//}
						//var elemInputTTC = document.getElementById("totalTTCPriseCommande_"+id);
						//if(elemInputTTC!=null){
						//	var totalTTC = parseFloat(elemInputTTC.value.replace(/,/g,'.'));
						//	sommeTTC = Math.round((sommeTTC + totalTTC)*100)/100;
						//}
					}
				}
	
	/*			//var sommeHT = 0.0;
				var sommeTTC = 0.0;
				//var sommeTVA = 0.0;
				for (var p in sommeHTParBaseTva)
				{
					var montantHT = sommeHTParBaseTva[p];
					var tauxTva = parseFloat(p.substring(4));
					var montantTva = Math.round((montantHT * tauxTva)) / 100;
					var montantTTC = montantHT + montantTva;
					sommeHT = sommeHT + montantHT;
					sommeTVA = sommeTVA + montantTva;
					sommeTTC = sommeTTC + montantTTC;
				}*/
				//Total de la commande
				//var elemInputHT = document.getElementById("totalHTPriseCommande");
				//if(elemInputHT!=null){
				//	elemInputHT.value = formatMontant(sommeHT);
				//}
				//totalCmdeHT = sommeHT;
	
				var elemInputTTC = document.getElementById("totalTTCPriseCommande");
				if(elemInputTTC!=null){
					elemInputTTC.value = formatMontant(sommeTTC);
				}
				totalCmdeTTC = sommeTTC;
				//alert(sommeTTC);
				
				//var elemInputTVA = document.getElementById("totalTVAPriseCommande");
				//if(elemInputTVA!=null){
				//	elemInputTVA.value = formatMontant(sommeTVA);
				//}
				//Montant des frais de port
				calculerFraisPort();
			}
		}
		else
		{
			var elemTrs = elemTBodyContenuPriseCommande.childNodes;
			if(elemTrs!=null)
			{
				var sommeHTParBaseTva = new Array();
				for(var i=0; i<elemTrs.length; i++)
				{
					if(elemTrs.item(i).nodeName == 'TR')
					{
						var idCourant = elemTrs.item(i).id;
						var index = idCourant.indexOf("_");
						var id = idCourant.substring(index+1);
						var elemInputPUHT = document.getElementById("PUHTPriseCommande_" + id);
						var elemQuantite = document.getElementById("priseCommande_qte_" + id);
						var elemCodeTva = document.getElementById("codeTva_" + id);
						var puht = (elemInputPUHT) ? parseFloat(elemInputPUHT.value.replace(/,/g,'.')) : 0;
						var quantite = (elemQuantite) ? parseFloat(elemQuantite.value.replace(/,/g,'.')) : 0;
						var codeTva = (elemCodeTva) ? elemCodeTva.value : '';
						var totalHTLigne = Math.round(puht * quantite * 100) / 100;
						var sommeBaseTva = sommeHTParBaseTva['TVA_' + codeTva];
						sommeBaseTva = (sommeBaseTva) ? sommeBaseTva : 0;
						sommeBaseTva = sommeBaseTva + totalHTLigne;
						sommeHTParBaseTva['TVA_' + codeTva] = sommeBaseTva;
						//if(elemInputHT!=null){
						//	var totalHT = parseFloat(elemInputHT.value.replace(/,/g,'.'));
						//	sommeHT = Math.round((sommeHT + totalHT)*100)/100;
						//}
						//var elemInputTTC = document.getElementById("totalTTCPriseCommande_"+id);
						//if(elemInputTTC!=null){
						//	var totalTTC = parseFloat(elemInputTTC.value.replace(/,/g,'.'));
						//	sommeTTC = Math.round((sommeTTC + totalTTC)*100)/100;
						//}
					}
				}
	
				var sommeHT = 0.0;
				var sommeTTC = 0.0;
				var sommeTVA = 0.0;
				for (var p in sommeHTParBaseTva)
				{
					var montantHT = sommeHTParBaseTva[p];
					var tauxTva = parseFloat(p.substring(4));
					var montantTva = Math.round((montantHT * tauxTva)) / 100;
					var montantTTC = montantHT + montantTva;
					sommeHT = sommeHT + montantHT;
					sommeTVA = sommeTVA + montantTva;
					sommeTTC = sommeTTC + montantTTC;
				}
				//Total de la commande
				var elemInputHT = document.getElementById("totalHTPriseCommande");
				if(elemInputHT!=null){
					elemInputHT.value = formatMontant(sommeHT);
				}
				totalCmdeHT = sommeHT;
	
				var elemInputTTC = document.getElementById("totalTTCPriseCommande");
				if(elemInputTTC!=null){
					elemInputTTC.value = formatMontant(sommeTTC);
				}
				totalCmdeTTC = sommeTTC;
				//alert(sommeTTC);
				
				var elemInputTVA = document.getElementById("totalTVAPriseCommande");
				if(elemInputTVA!=null){
					elemInputTVA.value = formatMontant(sommeTVA);
				}
				//Montant des frais de port
				calculerFraisPort();
	//			var paramFraisPort = getParamFraisPort();
	//			alert(paramFraisPort);
				//if (paramFraisPort)
	/*			{
					var valueMontantFP = paramFraisPort[1];
					if (paramFraisPort[2] <= sommeTTC)
					{
						valueMontantFP = 0;
					}
					var elemMontantFPHidden = document.getElementById("montantFPHidden");
					if(elemMontantFPHidden!=null){
						elemMontantFPHidden.value=valueMontantFP;
					}
					var elemMontantFP = document.getElementById("montantFP");
					if(elemMontantFP!=null){
						elemMontantFP.value=formatMontant(valueMontantFP);
					}
					var elemInputFPIHT = document.getElementById("totalFPIHTPriseCommande");
					if(elemInputFPIHT!=null){
						elemInputFPIHT.value = formatMontant(Math.round((sommeHT + valueMontantFP)*100)/100);
					}
					var elemInputFPITTC = document.getElementById("totalFPITTCPriseCommande");
					if(elemInputFPITTC!=null){
						elemInputFPITTC.value = formatMontant(Math.round((sommeTTC + valueMontantFP)*100)/100);
					}
				}*/
			}
		}
	}
}

function formatMontant(montant)
{
	if (typeof montant == 'string') { montant = montant.replace(/\,/, '.'); }
	var num = new Number(montant);
	return num.toFixed(2).replace(/\./, ',');
}


function calculerFraisPort()
{
	var elemIdFPHidden = document.getElementById('idFPHidden');
	var elemInputHT = document.getElementById("totalHTPriseCommande");
	var elemInputTTC = document.getElementById("totalTTCPriseCommande");
	var elemInputTVA = document.getElementById("totalTVAPriseCommande");
	var elemRemiseHT = document.getElementById("remiseHTPriseCommande");
	var elemRemiseTTC = document.getElementById("remiseTTCPriseCommande");
	var donnees = "idLivraison="+ ((elemIdFPHidden) ? elemIdFPHidden.value : '')
		+ "&idSite="+idSite +
		"&montantHT=" + ((elemInputHT) ? elemInputHT.value : totalCmdeHT) + 
		"&montantTTC=" + ((elemInputTTC) ? elemInputTTC.value : totalCmdeTTC) + 
		"&montantTVA=" + ((elemInputTVA) ? elemInputTVA.value : '') + 
		"&remiseHT=" + ((elemRemiseHT) ? elemRemiseHT.value : '') + 
		"&remiseTTC=" + ((elemRemiseTTC) ? elemRemiseTTC.value : '') + 
		"&idElemPanier=" + idElemPanier;
	var xml = getReponseXmlAjax(urlBase + 'geneweb/commande/modifierLivraison.html', donnees);
	var noeud = xml.getElementsByTagName('MONTANT_HT').item(0);
	var elemAMettreAjour = document.getElementById('totalHTPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}
	
	noeud = xml.getElementsByTagName('MONTANT_TTC').item(0);
	elemAMettreAjour = document.getElementById('totalTTCPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}
	
	var noeud = xml.getElementsByTagName('MONTANT_TVA').item(0);
	var elemAMettreAjour = document.getElementById('totalTVAPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}

	noeud = xml.getElementsByTagName('MONTANTFPI_HT').item(0);
	elemAMettreAjour = document.getElementById('totalFPIHTPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}

	noeud = xml.getElementsByTagName('MONTANTFPI_TTC').item(0);
	elemAMettreAjour = document.getElementById('totalFPITTCPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}

	noeud = xml.getElementsByTagName('REMISE_HT').item(0);
	elemAMettreAjour = document.getElementById('remiseHTPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}

	noeud = xml.getElementsByTagName('REMISE_TTC').item(0);
	elemAMettreAjour = document.getElementById('remiseTTCPriseCommande');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}

	noeud = xml.getElementsByTagName('FRAISPORT_HT').item(0);
	elemAMettreAjour = document.getElementById('montantFPHT');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}

	noeud = xml.getElementsByTagName('FRAISPORT_TTC').item(0);
	elemAMettreAjour = document.getElementById('montantFPTTC');
	if(noeud && noeud.firstChild && elemAMettreAjour)
	{
		elemAMettreAjour.value = formatMontant(noeud.firstChild.data);
	}
}



// GESTION DES DECOUPES
function ajouterUneDecoupe(idTr, elemTbody, codeTr){
	codeTr = codeTr.replace(/#IDTR#/, compteurLigneDecoupe);
	codeTr = codeTr.replace(/#IDINPUT#/g, compteurLigneDecoupe);
	codeTr = codeTr.replace(/&apos;/g, "'");
	var elemTr = domAjouterTr(elemTbody, codeTr);
	elemTr.id = idTr + compteurLigneDecoupe;
	compteurLigneDecoupe = parseInt(compteurLigneDecoupe) + 1;
}

function supprimerLigneSaisieRapideDecoupe(idSite, idLigne, urlAction,idElemPanier){
	//Supprimer la ligne en BD
	var donnees = "action=supprimerLigne"+
			"&idSite="+idSite+
			"&idLigne="+idLigne+
			"&idElemPanier="+((idElemPanier) ? idElemPanier : '');
	var xml = getReponseXmlAjax(urlAction,donnees);
	document.location.reload();
}

function validerDecoupes(idLigne, typeDecoupe, dimensionArticleAvantDecoupe, urlAction, idSite, reference, idElemPanier){
	var newValChamp = "";
	var qte = 0;
	for(var i=0; i<compteurLigneDecoupe; i++){
		if(typeDecoupe == "qxlxL"){
			var elemQte = document.getElementById('qte_'+i);
			var eleml = document.getElementById('largeur_'+i);
			var elemL = document.getElementById('longueur_'+i);
			if(elemQte!=null && eleml!=null && elemL!=null){
				newValChamp = newValChamp + " " + elemQte.value + "x" + eleml.value + "x" + elemL.value;
				qte = qte + (elemQte.value * eleml.value * elemL.value);
			}
		}else if(typeDecoupe == "qxL"){
			var elemQte = document.getElementById('qte_'+i);
			var elemL = document.getElementById('longueur_'+i);
			if(elemQte!=null && elemL!=null){
				newValChamp = newValChamp + " " + elemQte.value + "x" + elemL.value;
				qte = qte + (elemQte.value * elemL.value);
			}
		}
	}
	
	if(typeDecoupe == "qxlxL")
	{
		if (dimensionArticleAvantDecoupe > 0)
		{	// une dimension est renseignée. Le produit se vend entier, avec une option découpe
			qte = qte / 1000000;
			qte = Math.ceil(qte / dimensionArticleAvantDecoupe);
		}
		else
		{	// la dimension n'est pas renseignée. L'article est vendu au m²
			qte = qte / 1000000;
		}
	}
	else if(typeDecoupe == "qxL")
	{
		if (dimensionArticleAvantDecoupe > 0)
		{	// une dimension est renseignée. Le produit se vend entier, avec une option découpe
			qte = qte / 1000;
			qte = Math.ceil(qte / dimensionArticleAvantDecoupe);
		}
		else
		{	// la dimension n'est pas renseignée. L'article est vendu au m
			qte = qte / 1000;
		}
	}
	var donnees = "action=validerChamp"+
			"&updateChamp=PARAM1_VAL"+
			"&updateValeur="+newValChamp+
			"&idLigne="+idLigne+
			"&idSite="+idSite+
			"&idElemPanier="+((idElemPanier) ? idElemPanier : '');
	var xml = getReponseXmlAjax(urlAction,donnees);
	
	var donnees = "action=validerChamp"+
			"&updateChamp=QTE"+
			"&updateValeur="+qte+
			"&idLigne="+idLigne+
			"&idSite="+idSite+
			"&idElemPanier="+((idElemPanier) ? idElemPanier : '');
	var xml = getReponseXmlAjax(urlAction,donnees);
	
	document.location.reload();
}


function ajouterPanierArticleDecoupe(isProduitIshop, typeDecoupe, dimensionArticleAvantDecoupe, urlAction, idSite, refArticle, desiArticle, messageDebut, messageFin, idElemPanier){
	var paramArticleDecoupe = "";
	var qte = 0;
	for(var i=0; i<compteurLigneDecoupe; i++){
		if(typeDecoupe == "qxlxL"){
			var elemQte = document.getElementById('qte_'+i);
			var eleml = document.getElementById('largeur_'+i);
			var elemL = document.getElementById('longueur_'+i);
			if(elemQte!=null && eleml!=null && elemL!=null){
				qte = qte + (elemQte.value*eleml.value*elemL.value);
				paramArticleDecoupe = paramArticleDecoupe + "&param1LigneVal=" + elemQte.value + "x" + eleml.value + "x" + elemL.value;
			}
		}else if(typeDecoupe == "qxL"){
			var elemQte = document.getElementById('qte_'+i);
			var elemL = document.getElementById('longueur_'+i);
			if(elemQte!=null && elemL!=null){
				qte = qte + (elemQte.value*elemL.value);
				paramArticleDecoupe = paramArticleDecoupe + "&param1LigneVal=" + elemQte.value + "x" + elemL.value;
			}
		}
	}
	if(typeDecoupe == "qxlxL")
	{
		if (dimensionArticleAvantDecoupe > 0)
		{	// une dimension est renseignée. Le produit se vend entier, avec une option découpe
			qte = qte / 1000000;
			qte = Math.ceil(qte / dimensionArticleAvantDecoupe);
		}
		else
		{	// la dimension n'est pas renseignée. L'article est vendu au m²
			qte = qte / 1000000;
		}
	}
	else if(typeDecoupe == "qxL")
	{
		if (dimensionArticleAvantDecoupe > 0)
		{	// une dimension est renseignée. Le produit se vend entier, avec une option découpe
			qte = qte / 1000;
			qte = Math.ceil(qte / dimensionArticleAvantDecoupe);
		}
		else
		{	// la dimension n'est pas renseignée. L'article est vendu au m
			qte = qte / 1000;
		}
	}
	
	paramArticleDecoupe = paramArticleDecoupe + "&param1LigneType=" + typeDecoupe;
	
	if(urlAction.indexOf('?')>0){
		urlAction = urlAction + "&" + paramArticleDecoupe;
	}else{
		urlAction = urlAction + "?" + paramArticleDecoupe;
	}
	ajoutPanier(urlAction, idSite, refArticle, qte, messageDebut, messageFin, desiArticle, true, null, idElemPanier);	
	gestionPopupGetOnClickClose(true, 'divDecoupage');
}

function modifierDecoupage(urlAction){
	var xml = getReponseXmlAjax(urlAction,"");
	var noeudReponse = xml.getElementsByTagName(TAG_REPONSE).item(0);
	if(noeudReponse!=null){
		var noeudCptLigneDecoupe = xml.getElementsByTagName("CPT").item(0);
		if(noeudCptLigneDecoupe!=null){
			initialiseCptLigneDecoupe(noeudCptLigneDecoupe.firstChild.data);
		}
		var noeudPopup = xml.getElementsByTagName("POPUP").item(0);
		if(noeudPopup!=null){
			gestionPopupCreate(noeudPopup.firstChild.data, 'divDecoupage');
		}
	}
}

function initialiseCptLigneDecoupe(valeur){
	compteurLigneDecoupe = valeur;
}


function decoupeBienRempli(typeDecoupe, msgLigneMalRempli, msgAucuneLigneFicheArticle, msgAucuneLignePanier, fourchetteMin, fourchetteMax, msgFourchetteNonRespecte){
	var nbLigne = 0;
	var pasUneSeuleErreur = true;
	var auMoinsUneLigneMalRemplie = false;
	var fourchetteRespecte = true;
	for(var i=0; i<compteurLigneDecoupe; i++){
		if(typeDecoupe == "qxlxL"){
			var elemQte = document.getElementById('qte_'+i);
			var eleml = document.getElementById('largeur_'+i);
			var elemL = document.getElementById('longueur_'+i);
			if(elemQte!=null && eleml!=null && elemL!=null){
				nbLigne = nbLigne + 1;
				if(elemQte.value=="" || eleml.value=="" || elemL.value==""){
					auMoinsUneLigneMalRemplie = auMoinsUneLigneMalRemplie || true;
					pasUneSeuleErreur = pasUneSeuleErreur && false;
				}else{
					fourchetteRespecte = eleml.value<=fourchetteMax && eleml.value>=fourchetteMin && elemL.value<=fourchetteMax && elemL.value>=fourchetteMin;
				}
			}
		}else if(typeDecoupe == "qxL"){
			var elemQte = document.getElementById('qte_'+i);
			var elemL = document.getElementById('longueur_'+i);
			if(elemQte!=null && elemL!=null){
				nbLigne = nbLigne + 1;
				if(elemQte.value=="" || elemL.value==""){
					auMoinsUneLigneMalRemplie = auMoinsUneLigneMalRemplie || true;
					pasUneSeuleErreur = pasUneSeuleErreur && false;
				}else{
					fourchetteRespecte = elemL.value<=fourchetteMax && elemL.value>=fourchetteMin;
				}
			}
		}
	}
	var elemMsgErreurGeneral = document.getElementById('messageErreur');
	if(auMoinsUneLigneMalRemplie){
		elemMsgErreurGeneral.innerHTML = msgLigneMalRempli;
		pasUneSeuleErreur = pasUneSeuleErreur && false;
	}else{
		if(!fourchetteRespecte){
			elemMsgErreurGeneral.innerHTML = msgFourchetteNonRespecte;
			pasUneSeuleErreur = pasUneSeuleErreur && false;
		}
	}
	if(nbLigne<1){
		if(msgAucuneLigneFicheArticle!=null){
			elemMsgErreurGeneral.innerHTML = msgAucuneLigneFicheArticle;
			pasUneSeuleErreur = pasUneSeuleErreur && false;
		}else{
			elemMsgErreurGeneral.innerHTML = msgAucuneLignePanier;
			pasUneSeuleErreur = pasUneSeuleErreur && false;
		}
	}
	return pasUneSeuleErreur;
}



