//////////////////////////////////////////////////////////////////////////// // // © PMP CONCEPT 2006 :: BOUTIQUE/PANIER DYNAMIQUE // //////////////////////////////////////////////////////////////////////////// // Nom du fichier du procesus de commande var BoutiqueService = "/boutiqueservice"; var Bouton = "/bouton"; var zero = '\"0,00\" \"€\"'; var formatDecimal = ","; var formatCentaine = "."; // gestion des articles dans le panier function articleDansPanier(retourService, articleRef, articleNom, articleQtt) { // si on ajoute un article au panier on concatene la quantité if( retourService == "add" ) { if (!articleQtt) articleQtt = 1; articleRef = articleRef + "@" + articleQtt; } texte = ajaxSupporte(BoutiqueService+ "_" + retourService + "_" + articleRef + "_" + encodeURI(articleNom)) if(texte) { switch(texte) { // article ajouté dans la panier case '111': ChangeNumArticles(); txt = fenetreDebut + 'L\'article suivant :
' + articleNom + '
Vient d\'être ajouté à votre panier.' + fenetreFin; message(txt); break; // article deja dans le panier case '222': txt = fenetreDebut + 'L\'article suivant :
' + articleNom + '
a déja été ajouté au panier.
' + fenetreFin; message(txt); break; // article en rupture de stock case '1': txt = fenetreDebut + 'Nous sommes désolé, l\'article
' + articleNom + '
est momentanément indisponible.' + fenetreFin; message(txt); break; case '0': alert('Référence indisponible sur Maillot Bonsaï.'); break; // modification de la quantité d'article dans le panier case '333': // on actualise la qtt du panier dans le haut du site ChangeNumArticles() if( !document.getElementById('panierListe') && !document.getElementById('panierRecap') ) break; // on actualise le prix de l'article ChangePrixArticles(articleRef) // on actualise le sous-total ChangeSousTotalPanier(articleRef) break; // suppression de l'article dans le panier case '444': // si le panier contient des articles val = ajaxSupporte(BoutiqueService + "_upd_0_sousTotalPanierNum"); if(val > 0) { // effacement du bloc effaceLigne(articleRef) // on actualise le sous-total ChangeSousTotalPanier(articleRef, false) // si il n'y a plus d'article, uniquement des services/prestations sur place (ex: atelier) if(ajaxSupporte(BoutiqueService + "_upd_0_afficheLivraison") == 0) { // effacement du bloc if(document.getElementById('selectionLivraison')) document.getElementById('selectionLivraison').innerHTML = ""; ChangeTotalPanier(); } // sinon on vérifie s'il reste des articles à venir chercher à la pépinière else { // si il n'y a plus d'article a venir chercher a la pépinière if(ajaxSupporte(BoutiqueService + "_upd_0_venirPep") == 0) { // on reactive les checkbox document.getElementById('checkPepiniere').disabled = false; document.getElementById('checkLivraison').disabled = false; checkBox('checkLivraison'); } else checkBox('checkPepiniere'); } } // si le panier ne contient plus d'article else { // plus de produit dans le panier document.getElementById('panierListe').innerHTML = paniervide; // rend invisible le boutons sauvegarder mon panier if( document.getElementById('sauvePanier0') ) document.getElementById('sauvePanier0').className = 'invisible'; } // on actualise la qtt du panier dans le haut du site ChangeNumArticles() break; // sauvegarde du panier case '555' : // actualisation de la liste ActuListeArticleSauv(); // message de confirmation txt = fenetreDebut + 'Votre panier a été sauvegardé avec succès. ' + fenetreFin; message(txt); break; // depuis la page panier case '555.2' : // modification du menu document.getElementById('sauvePanier2').className = 'visible'; // message de confirmation txt = fenetreDebutSauv + 'Votre panier a été sauvegardé avec succès.' + fenetreFinSauv; message(txt); break; // suppression du panier sauvegarde case '666' : // actualisation de la liste ActuListeArticleSauv(); // message de confirmation txt = fenetreDebut + 'votre panier sauvegardé a été supprimé avec succès.' + fenetreFin; message(txt); // rend invisible les boutons supprimer mon panier if( document.getElementById('sauvePanier1') ) document.getElementById('sauvePanier1').className = 'invisible'; // rend invisible les boutons restaurer mon panier if( document.getElementById('sauvePanier2') ) document.getElementById('sauvePanier2').className = 'invisible'; if( document.getElementById('sauvePanier3') ) document.getElementById('sauvePanier3').className = 'invisible'; messageSauv = 'Voulez-vous sauvegarder votre panier ?'; bttMessageSauv = '/gestion.maillot-bonsai.com/_images/bouton/fr/sauvegarder_panier-255_255_255-77_77_79-7pts5.png'; break; // ajout d'article au panier case '777' : // on actualise la qtt du panier dans le haut du site ChangeNumArticles() // on affiche le bouton suavegarde du panier if(document.getElementById('sauvePanier0').className == 'invisible') { document.getElementById('sauvePanier0').className = 'visible'; } // message de confirmation txt = fenetreDebutSauv + 'votre panier a été mis à jour avec succès. ' + fenetreFinSauv; message(txt); break; case '777.2' : // modification du menu document.getElementById('sauvePanier0').className = 'visible'; /* // on actualise la qtt du panier dans le haut du site ChangeNumArticles() // on affiche le bouton sauvegarde du panier if(document.getElementById('sauvePanier0').className == 'invisible') { document.getElementById('sauvePanier0').className = 'visible'; } */ // message de confirmation txt = fenetreDebutSauv + 'votre panier a été mis à jour avec succès.' + fenetreFinSauv; message(txt); break; default: alert('Un problème est survenu avec la requête.' + texte + '.'); break; } } } // on verif que le navigateur supporte AJAX var xhr_object; function ajaxSupporte(fichier) { // Mozilla 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"); } } //the request could still be null if neither ActiveXObject... if (!xhr_object){ alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...'); return false; } xhr_object.open('GET', fichier, false); xhr_object.send(null); if(xhr_object.readyState == 4) { if(xhr_object.status == 200) { return(xhr_object.responseText); } else { alert('ERREUR ' + xhr_object.status + '\nUn problème est survenu.'); return(false); } } else return(false); } // Modifier la quantité d'article du panier :: block dans le haut du site function ChangeNumArticles() { //articleDansPanier('qtt', '', ''); qtt = ajaxSupporte(BoutiqueService+ "_qtt_0_0"); document.getElementById("account_panier_count").innerHTML = qtt; } // calcul du prix article function prixQtt(selObj, PanierRef) { var qtt = selObj.options[selObj.selectedIndex].value articleDansPanier('upd', PanierRef, qtt) } // Modifier le prix total de l'article :: panier function ChangePrixArticles(PanierRef) { //mtt = ajaxSupporte(BoutiqueService+ "_upd_" + PanierRef + "_prixArticle"); if( document.getElementById('totalPrixArticle[' + PanierRef + ']') ) { //document.getElementById('totalPrixArticle[' + PanierRef + ']').innerHTML = mtt; mtt = ajaxSupporte(BoutiqueService+ "_upd_" + PanierRef + "_prixArticleNum"); // stocke le montant du panier en float document.getElementById('totalPrixArticle[' + PanierRef + ']').montant = parseFloat(mtt); // formate le montant selon les paramètres de langue; mtt = number_format(mtt, 2, formatDecimal, formatCentaine); // création du montant graphique var srcMontant = toImage(0,0,0,0,77,77,79,"","","","Blokletters-Balpen.ttf",11,mtt,"","244","244","244"); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,77,77,79,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '\"€\"'; // affiche le montant en image document.getElementById('totalPrixArticle[' + PanierRef + ']').innerHTML = imgMontant + " " + imgDevise; } } // Modifier le prix des frais de livraison suplementaire :: panier function ChangePrixFraisSup(changeTotal) { if( document.getElementById('checkLivraison') && document.getElementById('checkLivraison').checked == true && document.getElementById('suplementPortPanier') ) { var mtt = parseFloat(ajaxSupporte(BoutiqueService+ '_upd_0_prixFraisSupNum')); // stocke le montant du panier en float document.getElementById('suplementPortPanier').montant = parseFloat(mtt); if (mtt==0) { //document.getElementById('supplement_port_panier').style.display = "none"; //document.getElementById('suplementPortPanier').style.display = "none"; document.getElementById('supplement_port_panier').className = "invisible"; document.getElementById('suplementPortPanier').className = "invisible"; } else { // formate le montant selon les paramètres de langue; mtt = number_format(mtt, 2, formatDecimal, formatCentaine); // création du montant graphique var srcMontant = toImage(0,0,0,0,232, 139, 0,"","","","Blokletters-Balpen.ttf",11,mtt,"","244","244","244"); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,232, 139, 0,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '\"€\"'; // affiche le montant en image document.getElementById('suplementPortPanier').innerHTML = imgMontant + " " + imgDevise; //mtt = ajaxSupporte(BoutiqueService+ "_upd_0_prixFraisSup"); //document.getElementById('suplementPortPanier').innerHTML = mtt; //document.getElementById('supplement_port_panier').style.display = "inherit"; //document.getElementById('suplementPortPanier').style.display = "inherit"; document.getElementById('supplement_port_panier').className = "visible"; document.getElementById('suplementPortPanier').className = "visible"; } } else if (document.getElementById('suplementPortPanier')) { document.getElementById('suplementPortPanier').innerHTML = zero; document.getElementById('suplementPortPanier').montant = 0; } if(changeTotal!=false) { ChangeTotalPanier(); } } // Modifier le prix des frais de livraison :: panier function ChangePrixFrais(codePays, changeTotal) { if( document.getElementById('checkLivraison') && document.getElementById('checkLivraison').checked == true && document.getElementById('portPanier') ) { mtt = ajaxSupporte(BoutiqueService+ '_upd_' + codePays + '_prixFraisNum'); // stocke le montant du panier en float document.getElementById('portPanier').montant = parseFloat(mtt); // formate le montant selon les paramètres de langue; mtt = number_format(mtt, 2, formatDecimal, formatCentaine); // création du montant graphique var srcMontant = toImage(0,0,0,0,77,77,79,"","","","Blokletters-Balpen.ttf",11,mtt,"","244","244","244"); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,77,77,79,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '\"€\"'; // affiche le montant en image document.getElementById('portPanier').innerHTML = imgMontant + " " + imgDevise; } else if (document.getElementById('portPanier')) { document.getElementById('portPanier').innerHTML = zero; document.getElementById('portPanier').montant = 0; } if(changeTotal!=false) { ChangeTotalPanier(); } } // modification de la selection du pays de livraison function modiPaysLiv(selObj) { // recuperation du code pays selectionné dans la combo var codePays = selObj.options[selObj.selectedIndex].value; // modif graphique du prix ChangePrixFrais(codePays) } // Modifier le sous total du panier function ChangeSousTotalPanier(PanierRef, changeTotal) { //mtt = ajaxSupporte(BoutiqueService+ "_upd_" + PanierRef + "_sousTotalPanier"); if( document.getElementById("sousTotalPanier") ) { mtt = ajaxSupporte(BoutiqueService+ "_upd_" + PanierRef + "_sousTotalPanierNum"); // stocke le montant du panier en float document.getElementById("sousTotalPanier").montant = parseFloat(mtt); // formate le montant selon les paramètres de langue; mtt = number_format(mtt, 2, formatDecimal, formatCentaine); // création du montant graphique var srcMontant = toImage(0,0,0,0,77,77,79,"","","","Blokletters-Balpen.ttf",11,mtt,"","244","244","244"); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,77,77,79,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '\"€\"'; // affiche le montant en image document.getElementById("sousTotalPanier").innerHTML = imgMontant + " " + imgDevise; } // vérification du code promo setCodePromo(true); // vérification des articles "1 euro de +" var retour = ajaxSupporte(BoutiqueService + "_verifArticlesEuroPlus_0_0"); if(retour!="") { txt = fenetreDebut + retour + '' + fenetreFin; message(txt); } // mise à jour de la liste des articles "1 euro de plus" en fonction du montant des achats var retour = ajaxSupporte(BoutiqueService + "_afficheArticlesEuroPlus_0_0"); if(document.getElementById('liste_europlus')) document.getElementById('liste_europlus').innerHTML = retour; /* //récupère toutes les lignes europlus var lignes = DomMgr.getElementsByMaskId('europlus[%i]','span'); if(lignes.length==0) { var bloc = document.getElementById('bloc_europlus'); if(bloc) bloc.parentNode.removeChild(bloc); } */ // modification des Packs RefreshPacks(); if(changeTotal!=false) { if(document.getElementById('choixPays')) { // modification frais de livraison ChangePrixFrais(document.getElementById('choixPays').options[document.getElementById('choixPays').selectedIndex].value); } // modification frais suplementaire ChangePrixFraisSup(); // modification du total du panier ChangeTotalPanier() } } // créer un bouton à la volée function toImage(largeur, hauteur, intX, intY, colorR, colorG, colorB, ombre1, ombre2, ombre3, font, fontsize, texte, image, colback1, colback2, colback3) { /* paramètres de création graphique var largeur = 0; var hauteur = 20; var intX = 0; var intY = 17; var colorR = 189; var colorG = 12; var colorB = 12; var ombre1 = ""; var ombre2 = ""; var ombre3 = ""; var font = "Blokletters-Balpen.ttf"; var fontsize = 14; var image = ""; var colback1 = ""; var colback2 = ""; var colback3 = ""; */ // url création de l'image var url = "/gestion.maillot-bonsai.com/_images/titre/bouton_volee.php?largeur=" + largeur + "&hauteur=" + hauteur + "&intX=" + intX + "&intY=" + intY + "&color1=" + colorR + "&color2=" + colorG + "&color3=" + colorB + "&ombre1=" + ombre1 + "&ombre2=" + ombre2 + "&ombre3=" + ombre3 + "&font=" + font + "&fontsize=" + fontsize + "&txt=" + texte + "&image=" + image + "&colback1=" + colback1 + "&colback2=" + colback2 + "&colback3=" + colback3; return url; } // Modifier le total du panier function ChangeTotalPanier() { // calcul du montant total du panier var montant = parseFloat(document.getElementById("sousTotalPanier").montant); if( document.getElementById('portPanier') ) montant += parseFloat(document.getElementById('portPanier').montant); if( document.getElementById('suplementPortPanier') ) montant += parseFloat(document.getElementById('suplementPortPanier').montant); if( document.getElementById('remise_code_promo') ) montant -= parseFloat(document.getElementById('remise_code_promo').montant); // Ajout des articles "1 euros de +" //récupère toutes les lignes var lignes = DomMgr.getElementsByMaskId('totalPrixArticleEuroPlus[%i]','span'); for(i=0; i < lignes.length; i++) { if(lignes[i].montant) montant += parseFloat(lignes[i].montant); } // Ajout des packs //récupère toutes les lignes var lignes = DomMgr.getElementsByMaskId('totalPrixPack[%i]','span'); for(i=0; i < lignes.length; i++) { if(typeof lignes[i].montant == "undefined") { var attrMontant = lignes[i].getAttribute("montant"); if(parseFloat(attrMontant)>=0) lignes[i].montant = attrMontant; } if(lignes[i].montant) montant += parseFloat(lignes[i].montant); } //vérifie que le montant soit positif if(montant < 0) montant = 0; // formate le montant selon les paramètres de langue; montant = number_format(montant, 2, formatDecimal, formatCentaine); // création du montant graphique var srcMontant = toImage(0,0,0,0,189,12,12,"","","","Blokletters-Balpen.ttf",14,montant,"","","",""); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(0, 1.2*14, 0, 0.9*14,189,12,12,"","","","Blokletters-Balpen.ttf", 0.67*14,"€","","","",""); var imgDevise = '\"€\"'; document.getElementById('totalPanier').innerHTML = imgMontant + " " + imgDevise; } // suppression de l'article dans le panier function placerDsCorbeille(PanierRef) { articleDansPanier('sup', PanierRef, 0) } // effacement de la ligne supprimé function effaceLigne(PanierRef) { document.getElementById('panier[' + PanierRef + ']').innerHTML = ''; document.getElementById('panier[' + PanierRef + ']').className = "invisible"; } // gestion des chekbox function checkBox(id, changeTotal) { id1 = id; id2 = id == 'checkLivraison' ? 'checkPepiniere' : 'checkLivraison'; // alert(id1 + " - " + id2); if(document.getElementById(id1) && document.getElementById(id2)) { document.getElementById(id1).checked=true; document.getElementById(id2).checked=(document.getElementById(id1).checked==true) ? false:true; document.getElementById('choixPays').disabled=(document.getElementById('checkLivraison').checked==true) ? false:true; // actualisation des styles document.getElementById('venirPepiniere').className=(document.getElementById('checkPepiniere').checked==true) ? "activated" : "desactivated"; document.getElementById('fraisdelivraison').className=(document.getElementById('checkLivraison').checked==true) ? "activated" : "desactivated"; // actualisation des frais de livraison ChangePrixFrais(document.getElementById('choixPays').options[document.getElementById('choixPays').selectedIndex].value, false); // actualisation du prix des frais de port sup. ChangePrixFraisSup(false); // sauvegarde du choix de l'utilisateur var checkLiv = document.getElementById('checkLivraison'); var livraison = checkLiv ? checkLiv.checked : false; var retour = ajaxSupporte(BoutiqueService + "_setLivraison_"+(livraison ? 1 : 0)+"_0"); // modification des Packs RefreshPacks(); if(changeTotal!=false) { // mise à jour des liens de changement de site var liensChangeSite = document.getElementsByName('lienChangeSite'); for(i=0; i< liensChangeSite.length; i++) { if(liensChangeSite[i].href) liensChangeSite[i].href=retour; } // modification du total du panier ChangeTotalPanier(); } } } function validPanier() { var panierOk = ajaxSupporte(BoutiqueService+ '_upd_0_verifPanier'); if ( panierOk!="1") { //document.getElementById('erreur_container').className="visible"; //document.getElementById('erreur').innerHTML = panierOk; window.location.href="/panier.php"; return; } // livraison ou chercher à la pépinière if( document.getElementById('checkLivraison') && document.getElementById('checkLivraison').checked==true ) var addLivraison = true; else var addLivraison = false; // recupération de la référence client var refClient = ""; // si le client est connecté if( refClient != "" ) { if(document.getElementById('choixPays') ) var panierPaysLiv = document.getElementById('choixPays').options[document.getElementById('choixPays').selectedIndex].value; else var panierPaysLiv = ""; //""; var comptePaysLiv = ""; if( addLivraison==true && panierPaysLiv != "" && panierPaysLiv != comptePaysLiv ) { // renvoie vers le formulaire de modification des coordonées de livraison window.location.href="/commande/modif_compte.php?addLivraison=" + addLivraison; } else // renvoie vers la page de validation de la commande window.location.href="/commande/validation.php?addLivraison=" + addLivraison; } else // renvoie vers la page commande/connection.php pour choisir de se connecter, de créer un compte ou de poursuivre sans compte window.location.href="/commande/connection.php?addLivraison=" + addLivraison; } function getSelectedElement(name) { if(!document.getElementsByName(name)) return ""; var elements = document.getElementsByName(name); var selectedElement=""; if (elements[0]) { // s'il y a plusieurs checkbox, elements est un tableau for( var i = 0; i < elements.length; i++) { if (elements[i].checked) { selectedElement = elements[i].id; i=elements.length; } } } else { if (elements.checked) selectedElement = elements.id; } return selectedElement; } function validCommande() { var selectedPaiement = getSelectedElement('checkbox_paiement'); if (selectedPaiement == "") { document.getElementById('erreur_container').className="visible"; document.getElementById('erreur').innerHTML = "Veuillez sélectionner un mode de paiement."; } else if ( document.getElementById('checkbox_cgv') && document.getElementById('checkbox_cgv').checked==false ) { document.getElementById('erreur_container').className="visible"; document.getElementById('erreur').innerHTML = "Vous devez accepter les conditions générales de vente pour commander."; } else { var mode_paiement = document.getElementById(selectedPaiement).value; var etapeSuivante= "/commande/paiement/" + document.getElementById(selectedPaiement).url; var commandeOk = ajaxSupporte(BoutiqueService + '_upd_' + mode_paiement + '_valideCommande'); // si la validation de la commande a échoué if ( commandeOk.substring(0,2)=="OK") { window.location.href=etapeSuivante + "?" + commandeOk.substring(2); // redirection vers le paiement sélectionné //document.getElementById('erreur_container').className="visible"; //document.getElementById('erreur').innerHTML = commandeOk.substring(2); } else { if ( commandeOk=="0" || commandeOk=="") { window.location.href="/panier.php"; // redirection vers le panier //document.getElementById('erreur_container').className="visible"; //document.getElementById('erreur').innerHTML = commandeOk; } else { txt = fenetreDebut + commandeOk + '' + fenetreFin; message(txt); } } } } function setModePaiement(mode_paiement) { if(!mode_paiement) return; // mise à jour du mode de paiement et récupération de l'url de changement de site avec les informations de session var retour = ajaxSupporte(BoutiqueService + '_setModePaiement_' + mode_paiement + '_0'); var liensChangeSite = document.getElementsByName('lienChangeSite'); for(i=0; i< liensChangeSite.length; i++) { if(liensChangeSite[i].href) liensChangeSite[i].href=retour; } } function commandeZero() { var etapeSuivante= "/commande/paiement/confirmation.php"; var commandeOk = ajaxSupporte(BoutiqueService + '_upd_-_valideCommande'); // si la validation de la commande a réussie if ( commandeOk.substring(0,2)=="OK") { window.location.href=etapeSuivante + "?" + commandeOk.substring(2); // redirection vers la page de confirmation } else { window.location.href="/panier.php"; // redirection vers le panier //document.getElementById('erreur_container').className="visible"; //document.getElementById('erreur').innerHTML = commandeOk; } } function modifPaiement(commande, encrypted) { var selectedPaiement = getSelectedElement('checkbox_paiement'); if (commande=="") { document.getElementById('erreur_container').className="visible"; document.getElementById('erreur').innerHTML = "Veuillez sélectionner un mode de paiement."; } if (selectedPaiement == "") { document.getElementById('erreur_container').className="visible"; document.getElementById('erreur').innerHTML = "Veuillez sélectionner un mode de paiement."; } else if ( document.getElementById('checkbox_cgv') && document.getElementById('checkbox_cgv').checked==false ) { document.getElementById('erreur_container').className="visible"; document.getElementById('erreur').innerHTML = "Vous devez accepter les conditions générales de vente pour commander."; } else { var mode_paiement = document.getElementById(selectedPaiement).value; var etapeSuivante= "/commande/paiement/" + document.getElementById(selectedPaiement).url + "?" + encrypted; var param = commande + "@" + mode_paiement; var commandeOk = ajaxSupporte(BoutiqueService + '_upd_' + param + '_modifPaiement'); // si le moyen de paiement a été modifié if ( commandeOk=="true") window.location.href=etapeSuivante; // redirection vers le paiement sélectionné else document.getElementById('erreur').innerHTML = commandeOk; //window.location.href="/panier.php"; // redirection vers page erreur } } // number_format(nombre, nbDecimal, formatDecimal, formaCentaine) function number_format(nombre, nbDecimal, formatDecimal, formatCentaine) { nombre = parseFloat(nombre); if( nombre=="NaN" || nombre==0 ) nombre = 0; // si le nombre de décimales passé en paramètre est valide if (nbDecimal != null) { nombre = nombre.toFixed(nbDecimal); } // on récupère le signe du nombre var sign = nombre < 0 ? "-" : ""; // on récupère la partie entière du nombre var entiere = (nombre > 0 ? Math.floor (nombre) : Math.abs (Math.ceil (nombre))).toString (); // on récupère la partie decimale du nombre var decimale = nombre.toString ().substring (entiere.length + sign.length); // on définit le séparateur: celui passé en paramètre s'il est valide sinon '.' par défaut formatDecimal = formatDecimal != null ? formatDecimal : "."; decimale = nbDecimal != null && nbDecimal > 0 || decimale.length > 1 ? (formatDecimal + decimale.substring (1)) : ""; // si le nombre de décimal est inférieur à nbDecimal on ajoute des 0 if (nbDecimal != null && nbDecimal > 0) { for (i = decimale.length - 1, z = nbDecimal; i < z; ++i) decimale += "0"; } formatCentaine = (formatCentaine != formatDecimal || decimale.length == 0) ? formatCentaine : null; if (formatCentaine != null && formatCentaine != "") { for (i = entiere.length - 3; i > 0; i -= 3) entiere = entiere.substring (0 , i) + formatCentaine + entiere.substring (i); } return sign + entiere + decimale; } // actualise la liste du panier sauvegardé function ActuListeArticleSauv() { //articleDansPanier('qtt', '', ''); html = ajaxSupporte(BoutiqueService+ "_listeArticleSauv_0_0"); document.getElementById("listeAricleSauve").innerHTML = html; // si pas d'article sauvegardé if(html == 'pas de panier sauvegardé'){ document.getElementById('sauvePanier1').className = 'invisible'; document.getElementById('sauvePanier2').className = 'invisible'; document.getElementById('sauvePanier3').className = 'invisible'; document.getElementById('sauvePanier4').className = 'invisible'; messageSauv = 'Voulez-vous sauvegarder votre panier ?'; bttMessageSauv = '/gestion.maillot-bonsai.com/_images/bouton/fr/sauvegarder_panier-255_255_255-77_77_79-7pts5.png'; } // si des articles sont sauvegardés else { document.getElementById('sauvePanier1').className = 'visible'; document.getElementById('sauvePanier2').className = 'visible'; document.getElementById('sauvePanier3').className = 'visible'; document.getElementById('sauvePanier4').className = 'visible'; document.getElementById('dateSauvPanier').innerHTML = ajaxSupporte(BoutiqueService+ "_dateSauvPanier_0_0"); // affichage de la nouvelle date de sauvegarde messageSauv = 'Vous avez déjà un panier sauvegardé,
Voulez-vous l\'écraser ?'; bttMessageSauv = '/gestion.maillot-bonsai.com/_images/bouton/fr/ecraser_panier-255_255_255-77_77_79-7pts5.png'; } } // vérifie la validité du code promo saisi function setCodePromo(check) { document.getElementById('erreur_container').className="invisible"; document.getElementById('erreur').innerHTML = ""; var codePromo = ""; if(document.getElementById('saisie_code_promo')) codePromo = document.getElementById('saisie_code_promo').value; else if(document.getElementById('input_code_promo')) codePromo = document.getElementById('input_code_promo').code; if(!codePromo || codePromo=="") { if(typeof(check)=='undefined' || check!=true) { txt = fenetreDebut + 'Vous devez saisir votre code avantage ou opération.' + fenetreFin; message(txt); } return; } var retour = ajaxSupporte(BoutiqueService + "_setCodePromo_"+ codePromo +"_0"); var tabCode = retour.split('|'); var montant = parseFloat(tabCode[0]); if( montant!=tabCode[0]) { txt = fenetreDebut + retour + '' + fenetreFin; message(txt); if(!document.getElementById('saisie_code_promo')) { unsetCodePromo(); } else { document.getElementById('saisie_code_promo').value = ""; } } else if(document.getElementById('saisie_code_promo')) { //calcul du montant if(tabCode[1] == 'pourcentage') { mtPanier = parseFloat(document.getElementById('sousTotalPanier').montant); montant = mtPanier * (montant/100); } else{ if( montant > parseFloat(document.getElementById('sousTotalPanier').montant) ) montant = parseFloat(document.getElementById('sousTotalPanier').montant); } document.getElementById('bouton_code_promo').src = "/_images/puces/puce_supprimer.png"; document.getElementById('bouton_code_promo').onclick = unsetCodePromo; document.getElementById('input_code_promo').code = document.getElementById('saisie_code_promo').value; document.getElementById('input_code_promo').innerHTML = document.getElementById('saisie_code_promo').value + " "; // création du montant graphique de la remise var srcMontant = toImage(0,0,0,0,125,200,75,"","","","Blokletters-Balpen.ttf",11,number_format(-montant, 2, formatDecimal, formatCentaine),"","244","244","244"); var imgMontant = '' + montant + ''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,125,200,75,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '€'; document.getElementById('remise_code_promo').innerHTML = imgMontant + " " + imgDevise; // mise à jour du montant de la remise document.getElementById("remise_code_promo").montant = montant; // mise à jour du total du panier ChangeTotalPanier(); } else{ if(tabCode[1] == 'pourcentage') { mtPanier = parseFloat(document.getElementById('sousTotalPanier').montant); montant = mtPanier * (montant/100); } // création du montant graphique de la remise var srcMontant = toImage(0,0,0,0,125,200,75,"","","","Blokletters-Balpen.ttf",11,number_format(-montant, 2, formatDecimal, formatCentaine),"","244","244","244"); var imgMontant = '' + montant + ''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,125,200,75,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '€'; document.getElementById('remise_code_promo').innerHTML = imgMontant + " " + imgDevise; // mise à jour du montant de la remise document.getElementById("remise_code_promo").montant = montant; // mise à jour du total du panier ChangeTotalPanier(); } } // supprime le code promo du panier function unsetCodePromo() { var retour = ajaxSupporte(BoutiqueService + "_unsetCodePromo_"+ document.getElementById('input_code_promo').code +"_0"); if( retour=="1" ) { document.getElementById('bouton_code_promo').src = "/_images/puces/code_promo_ok.png"; document.getElementById('bouton_code_promo').onclick = setCodePromo; document.getElementById('input_code_promo').code = ""; document.getElementById('input_code_promo').innerHTML = ''; montant = parseFloat("0"); document.getElementById('remise_code_promo').innerHTML = zero; // mise à jour du montant de la remise document.getElementById("remise_code_promo").montant = 0; // mise à jour du total du panier ChangeTotalPanier(); } } function choixEuroplusChange(checkbox, ref, nbChoixMax) { // par défaut ref = checkbox.value var offreRef = checkbox.value; var prixSpan = document.getElementById('totalPrixArticleEuroPlus['+offreRef+']'); if(nbChoixMax && nbChoixMax==parseInt(nbChoixMax)) { var nbChoix=0; var selectedCheckbox; //récupère toutes les checkbox correspondant aux articles "1 euro de plus" var lignes = DomMgr.getElementsByMaskId('choixEuroplus[%i]','input'); for(i=0; i < lignes.length; i++) { if(lignes[i] && lignes[i].checked==true) { if(lignes[i]!=checkbox) selectedCheckbox = lignes[i]; nbChoix ++; } } if(nbChoix > nbChoixMax) { if(nbChoixMax==1) // si on autorise une seule offre, la selection se comporte comme un toggle (annule la sélection précedente et valide) { if(selectedCheckbox) { selectedCheckbox.checked = false; choixEuroplusChange(selectedCheckbox, ref); } } else { checkbox.checked = false; return; } } } if(checkbox.checked==true) { var retour = ajaxSupporte(BoutiqueService + "_addArticleEuroPlus_"+ offreRef +"_0"); var montant = parseFloat(retour); if( montant!=retour) { txt = fenetreDebut + retour + '' + fenetreFin; message(txt); checkbox.checked = false; checkbox.disabled = true; var offreNode = document.getElementById('europlus['+offreRef+']'); if(offreNode) offreNode.parentNode.removeChild(offreNode); } else if(prixSpan) { // création du montant graphique de la remise var srcMontant = toImage(0,0,0,0,77,77,79,"","","","Blokletters-Balpen.ttf",11,number_format(montant, 2, formatDecimal, formatCentaine),"","244","244","244"); var imgMontant = '' + montant + ''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,77,77,79,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '€'; prixSpan.innerHTML = imgMontant + " " + imgDevise; // mise à jour du montant de la remise prixSpan.montant = montant; checkbox.disabled = false; } } else { var retour = ajaxSupporte(BoutiqueService + "_delArticleEuroPlus_"+ offreRef +"_0"); if( retour=="1" ) { montant = parseFloat("0"); prixSpan.innerHTML = zero; // mise à jour du montant de la remise prixSpan.montant = montant; } } // modification des Packs RefreshPacks(); // mise à jour du total du panier ChangeTotalPanier(); // mise à jour de l'url de changement de site avec les informations de session var retour = ajaxSupporte(BoutiqueService + "_changeSite_0_0"); var liensChangeSite = document.getElementsByName('lienChangeSite'); for(i=0; i< liensChangeSite.length; i++) { if(liensChangeSite[i].href) liensChangeSite[i].href=retour; } } function RefreshPacks() { var checkLiv = document.getElementById('checkLivraison'); var livraison = checkLiv ? checkLiv.checked : false; // mise à jour de la liste des packs en fonction du montant des achats et des articles "europlus" var retour = ajaxSupporte(BoutiqueService + "_affichePacks_"+(livraison ? 1 : 0)+"_0"); if(document.getElementById('liste_packs')) document.getElementById('liste_packs').innerHTML = retour; } function choixPackChange(checkbox, ref, nbChoixMax) { // par défaut ref = checkbox.value var packRef = checkbox.value; var prixSpan = document.getElementById('totalPrixPack['+packRef+']'); if(nbChoixMax && nbChoixMax==parseInt(nbChoixMax)) { var nbChoix=0; var selectedCheckbox; //récupère toutes les checkbox correspondant aux packs var lignes = DomMgr.getElementsByMaskId('choixPack[%i]','input'); for(i=0; i < lignes.length; i++) { if(lignes[i] && lignes[i].checked==true) { if(lignes[i]!=checkbox) selectedCheckbox = lignes[i]; nbChoix ++; } } if(nbChoix > nbChoixMax) { if(nbChoixMax==1) // si on autorise un seul pack, la selection se comporte comme un toggle (annule la sélection précedente et valide) { if(selectedCheckbox) { selectedCheckbox.checked = false; choixPackChange(selectedCheckbox, ref); } } else { checkbox.checked = false; return; } } } if(checkbox.checked==true) { var retour = ajaxSupporte(BoutiqueService + "_addPack_"+ packRef +"_0"); var montant = parseFloat(retour); if( montant!=retour) { txt = fenetreDebut + retour + '' + fenetreFin; message(txt); checkbox.checked = false; checkbox.disabled = true; var packNode = document.getElementById('pack['+packRef+']'); if(packNode) packNode.parentNode.removeChild(packNode); } else if(prixSpan) { // création du montant graphique de la remise var srcMontant = toImage(0,0,0,0,77,77,79,"","","","Blokletters-Balpen.ttf",11,number_format(montant, 2, formatDecimal, formatCentaine),"","244","244","244"); var imgMontant = '' + montant + ''; // création de la devise graphique var srcDevise = toImage(0, 1.2*11, 0, 0.9*11,77,77,79,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","244","244","244"); var imgDevise = '€'; prixSpan.innerHTML = imgMontant + " " + imgDevise; // mise à jour du montant de la remise prixSpan.montant = montant; checkbox.disabled = false; } } else { var retour = ajaxSupporte(BoutiqueService + "_delPack_"+ packRef +"_0"); if( retour=="1" ) { montant = parseFloat("0"); prixSpan.innerHTML = zero; // mise à jour du montant de la remise prixSpan.montant = montant; } } // mise à jour du total du panier ChangeTotalPanier(); // mise à jour de l'url de changement de site avec les informations de session var retour = ajaxSupporte(BoutiqueService + "_changeSite_0_0"); var liensChangeSite = document.getElementsByName('lienChangeSite'); for(i=0; i< liensChangeSite.length; i++) { if(liensChangeSite[i].href) liensChangeSite[i].href=retour; } } function pagePrecedente() { var retour = ajaxSupporte(BoutiqueService + "_goToHistory_-1_0"); if( retour!="0" ) window.location.href=retour; }