var formatDecimal = ","; var formatCentaine = "."; // 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) { // url création de l'image var url = "/images/titre/bouton.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; } function souscrire_pack(ref) { if(ajouter_produit(ref, 1)) { window.location.replace("/fr/partenaires/store/commande/validation.php5"); } } function renouveler_pack(ref) { if(ajouter_produit(ref, 1, 'RENOUVELLEMENT')) { window.location.replace("/fr/partenaires/store/commande/validation.php5"); } } function ajouter_produit(ref, qte, code) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Ajout d'un produit"); return false; } if( !PMP.common.isNumber(qte) ) { var msgbox = new PMP.util.pmpMsgBox("Quantité non définie", "erreur", "Ajout d'un produit"); return false; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/fr/partenaires/store/alias_boutique.php5", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Ajout d'un produit"); return false; } ajax.appendData("action", "ajouter_produit"); ajax.appendData("ref", ref); ajax.appendData("qte", qte); if( !PMP.common.isUndefined(code) ) ajax.appendData("code_prix", code); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Ajout d'un produit"); return false; } else if(retour.responseText.trim()!="1") { //var msgbox = new PMP.util.pmpMsgBox(retour.responseText.trim(), "erreur", "Ajout d'un produit"); return retour.responseText.trim(); } return true; } function modifier_quantite(ref, qte) { if( PMP.common.isUndefined(ref) ) { return "Référence non définie"; } if( !PMP.common.isNumber(qte) ) { return "Quantité non définie"; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/fr/partenaires/store/alias_boutique.php5", "POST"); if(!ajax) { return "Impossible de créer l'objet ajax"; } ajax.appendData("action", "modifier_quantite"); ajax.appendData("ref", ref); ajax.appendData("qte", qte); var retour = ajax.send(); if(!retour) { return "Une erreur s'est produite."; } else { return retour.responseText.trim(); } } function addQuantite(ref, qte) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Modification de la quantité"); return false; } if( !PMP.common.isNumber(qte) ) { var msgbox = new PMP.util.pmpMsgBox("Quantité non définie", "erreur", "Modification de la quantité"); return false; } var inputQte = document.getElementById(ref+"_quantite"); if(inputQte) { qte = ( PMP.common.isNumber(parseInt(inputQte.value)) ? parseInt(inputQte.value) : 0 ) + parseInt(qte); if( qte >= 0 ) setQuantite(ref, qte); } } function setQuantite(ref, qte) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Modification de la quantité"); return false; } if( !PMP.common.isNumber(qte) ) { var msgbox = new PMP.util.pmpMsgBox("Quantité non définie", "erreur", "Modification de la quantité"); return false; } if( qte < 0 ) qte = 0; // mise à jour du panier var reponse = modifier_quantite(ref, qte); if( !reponse=="1" ) { var msgbox = new PMP.util.pmpMsgBox(reponse, "erreur", "Modification de la quantité"); return; } var inputQte = document.getElementById(ref+"_quantite"); if(inputQte) inputQte.value = parseInt(qte); var inputPrix = document.getElementById(ref+"_prix"); if(!inputPrix) { var msgbox = new PMP.util.pmpMsgBox("Prix de l'article non défini", "erreur", "Prix de l'article non défini"); return } var divMontant = document.getElementById(ref+"_montant"); if(divMontant) { var montant = parseFloat(qte) * parseFloat(inputPrix.value); //vérifie que le montant soit positif if(montant < 0) montant = 0; divMontant.montant = montant; // 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,20,0,17,77, 77, 79,"","","","Blokletters-Balpen.ttf",10,montant,"","","",""); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(12,20,6,17,77, 77, 79,"","","","Blokletters-Balpen.ttf", 0.67*10,"€","","","",""); var imgDevise = '\"€\"'; divMontant.innerHTML = imgMontant + imgDevise; refreshSousTotal(); } } function supprimer_produit(ref) { if( PMP.common.isUndefined(ref) ) { return "Référence non définie"; } // mise à jour du panier var reponse = modifier_quantite(ref, 0); if( reponse!="1" ) { var msgbox = new PMP.util.pmpMsgBox(reponse, "erreur", "Prix de l'article non défini"); return; } var elements = DomMgr.getElementsByMaskId("%i_montant", "div"); if( elements.length <= 1) { window.location.replace("/fr/partenaires/store/"); return; } var ligne = document.getElementById("ligneproduit"+ref); if(ligne) ligne.parentNode.removeChild(ligne); refreshSousTotal(); refreshTotal(); } function refreshSousTotal() { var elements = DomMgr.getElementsByMaskId("%i_montant", "div"); var sousTotal = 0; for(var i=0; i < elements.length; i++) { sousTotal += elements[i].montant ? parseFloat(elements[i].montant) : 0; } var divSousTotal = document.getElementById("soustotal"); if(divSousTotal) { divSousTotal.montant = sousTotal; // formate le montant selon les paramètres de langue; sousTotal = number_format(sousTotal, 2, formatDecimal, formatCentaine); // création du montant graphique var srcMontant = toImage(0,20,0,17,189,12,12,"","","","Blokletters-Balpen.ttf",10,sousTotal,"","","",""); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(12,20,6,17,189,12,12,"","","","Blokletters-Balpen.ttf", 0.67*10,"€","","","",""); var imgDevise = '\"€\"'; divSousTotal.innerHTML = imgMontant + imgDevise; } } function refreshTotal() { var montant = 0; var divSousTotal = document.getElementById("soustotal"); if(divSousTotal) montant += parseFloat(divSousTotal.montant); var divLivraison = document.getElementById("livraison"); if(divLivraison) montant += parseFloat(divLivraison.montant); var divTotal = document.getElementById("total"); if(divTotal) { divTotal.montant = montant; // 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,20,0,17,77, 77, 79,"","","","Blokletters-Balpen.ttf",10,montant,"","","",""); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(12,20,6,17,77, 77, 79,"","","","Blokletters-Balpen.ttf", 0.67*10,"€","","","",""); var imgDevise = '\"€\"'; divTotal.innerHTML = imgMontant + imgDevise; } } function actualiser_fraisdeport(pays) { if( PMP.common.isUndefined(pays) || !PMP.common.isNumber(pays) ) { var msgbox = new PMP.util.pmpMsgBox("Pays non défini", "erreur", "Actualisation des frais de port"); return false; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/fr/partenaires/store/alias_boutique.php5", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Actualisation des frais de port"); return false; } ajax.appendData("action", "calculer_fraisdeport"); ajax.appendData("pays", pays); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Actualisation des frais de port"); return false; } else { var montant = parseFloat(retour.responseText.trim()); var livraison = document.getElementById("livraison"); if(livraison) { livraison.montant = montant; // 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,20,0,17,189,12,12,"","","","Blokletters-Balpen.ttf",11,montant,"","","",""); var imgMontant = '\"''; // création de la devise graphique var srcDevise = toImage(14,20,6,17,189,12,12,"","","","Blokletters-Balpen.ttf", 0.67*11,"€","","","",""); var imgDevise = '\"€\"'; livraison.innerHTML = imgMontant + imgDevise; } } refreshTotal(); return true; } function valider_commande() { // vérification de la case j'accepte les CGV if( document.getElementById('checkbox_cgv') && document.getElementById('checkbox_cgv').checked==false ) { var msgbox = new PMP.util.pmpMsgBox("Vous devez accepter les conditions générales de vente pour valider votre commande", "erreur", "Enregistrement de la commande"); return false; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/fr/partenaires/store/alias_boutique.php5", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Enregistrement de la commande"); return false; } ajax.appendData("action", "valider_commande"); //********* Identité //civilite var civilites = document.getElementsByName("civ"); var civ = ""; for(var i=0; i < civilites.length; i++) { if(civilites[i].checked == true) { civ = civilites[i].value; } } if( civ.trim()!="" ) ajax.appendData("civ", civ); if(document.getElementById('nom')) ajax.appendData("nom", document.getElementById('nom').value); if(document.getElementById('prenom')) ajax.appendData("prenom", document.getElementById('prenom').value); //********* Adresse if(document.getElementById('adresse1')) ajax.appendData("adresse1", document.getElementById('adresse1').value); if(document.getElementById('adresse2')) ajax.appendData("adresse2", document.getElementById('adresse2').value); if(document.getElementById('cp')) ajax.appendData("cp", document.getElementById('cp').value); if(document.getElementById('ville')) ajax.appendData("ville", document.getElementById('ville').value); if(document.getElementById('pays')) ajax.appendData("pays", document.getElementById('pays').value); //********* Paiement var modes_paiement = document.getElementsByName("checkbox_paiement"); var mode_paiement = ""; var url; for(var i=0; i < modes_paiement.length; i++) { if(modes_paiement[i].checked == true) { mode_paiement = modes_paiement[i].value; url = 'paiement/'+modes_paiement[i].url; } } if(mode_paiement) ajax.appendData("mode_paiement", mode_paiement); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Enregistrement de la commande"); return false; } else { if(retour.responseText.trim()=="1") { window.location.replace(url); } else { var message = retour.responseText.trim(); // remplacement des noms de champ par le libellé message = message.replace("civ", "Titre"); message = message.replace("nom", "Nom"); message = message.replace("prenom", "Prénom"); message = message.replace("adresse1", "Adresse"); message = message.replace("adresse2", "Complément adresse"); message = message.replace("cp", "Code postal"); message = message.replace("ville", "Ville"); message = message.replace("pays", "Pays"); // mise en forme du message : saut de ligne, -, espaces... message = "
- " + message.replace(/\,/g, "
- "); message = "Veuillez renseigner correctement les champs suivants:" + message; var msgbox = new PMP.util.pmpMsgBox(message, "erreur", "Enregistrement de la commande"); } } } // 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; } function viewProduit(ref) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Consultation du produit");return false; } if( typeof(popup)!='undefined' ) { popup.viewURL("fiche_produit_popup.php5?produit="+ref); popup.show(); } } function expandProduit(ref, obj) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Consultation du produit");return false; } if( PMP.common.isUndefined(obj) ) { var msgbox = new PMP.util.pmpMsgBox("Objet de référence non définie", "erreur", "Consultation du produit");return false; } var url = "fiche_produit_popup.php5?produit="+ref; // récupération du contenu de la page en ajax var xhr_object = null; if(!xhr_object && window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); if(!xhr_object && window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); if(!xhr_object && window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); if(!xhr_object) { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } xhr_object.open("GET", url, false); xhr_object.send(null); if(xhr_object.readyState != 4) return; if(xhr_object.status != 200) { alert('ERREUR : ' + xhr_object.status); return; } var hsInnerHTML = document.getElementById("popup-innerHTML"); if(hsInnerHTML) hsInnerHTML.innerHTML = xhr_object.responseText; hs.htmlExpand(obj, { contentId: 'pmpup-html' } ); } function viewCGV() { popup = new Popup(); popup.viewURL('/fr/partenaires/store/cgv.php5'); }