
/************************************************************************************
**									PANIER											                                    *
************************************************************************************/

Event.observe(window, 'load',
              function() {
                new Panier();
              });

var Panier = Class.create({

	/**
	* Constructeur
	*/
	initialize: function() {
		var self = this;
    
    this.membreclub             = 0;
    this.sous_total_ht		      = 0;
    this.sous_total_ttc	        = 0;
    this.sous_total_ht		      = 0;
    this.sous_total_ttc	        = 0;
    this.montant_livraison_ht	  = 0;
    this.montant_livraison_ttc	= 0;
    this.montant_reduction_ht	  = 0;
    this.montant_reduction_ttc	= 0;
    this.montant_remise_ht		  = 0;
    this.montant_remise_ttc		  = 0;
    this.adhesion_seule         = false;

		if ($('code_promo')) {
      new Form.Element.Observer(
        'code_promo',
        2,
        function(el, value) {
          self.majAffichageTotalPanier();
        }
      );
		}

		if ($('mode_livraison')) {
			Event.observe('mode_livraison', 'change',
										function() {
											self.majMontantLivraison(this.options[this.selectedIndex].value);
										});

			// Mise a jour du montant de la livraison
			this.majMontantLivraison($('mode_livraison').options[$('mode_livraison').selectedIndex].value);
		}

		if ($('devenir_membre_club')) {
			Event.observe('devenir_membre_club', 'click',
										function() {
											self.adhesionClubDansPanier($('devenir_membre_club').checked);
										});
		}

		$$('a.bouton-poubelle').each(
			function(poubelle) {
				Event.observe(poubelle, 'mouseover',
											function() {
												this.className = 'bouton-poubelle on';
											});

				Event.observe(poubelle, 'mouseout',
											function() {
												this.className = 'bouton-poubelle';
											});

				Event.observe(poubelle, 'click',
											function() {
												self.supprimerProduitDansPanier(this.id.substring(this.id.indexOf('_') + 1, this.id.length));
											});
			}
		);

		$$('a.bouton-plus').each(
			function(plus) {
				Event.observe(plus, 'mouseover',
											function() {
												this.className = 'bouton-plus on';
											});

				Event.observe(plus, 'mouseout',
											function() {
												this.className = 'bouton-plus';
											});

				Event.observe(plus, 'click',
											function() {
												self.majQuantiteProduitDansPanier(this.id.substring(this.id.indexOf('_') + 1, this.id.length), 1);
											});
			}
		);

		$$('a.bouton-moins').each(
			function(moins) {
				Event.observe(moins, 'mouseover',
											function() {
												this.className = 'bouton-moins on';
											});

				Event.observe(moins, 'mouseout',
											function() {
												this.className = 'bouton-moins';
											});

				Event.observe(moins, 'click',
											function() {
												self.majQuantiteProduitDansPanier(this.id.substring(this.id.indexOf('_') + 1, this.id.length), -1);
											});
			}
		);

		// Marcus : precheck la carte membre
		if( $('devenir_membre_club') && $('devenir_membre_club').checked != true ) $('devenir_membre_club').checked = true;
   },
  
  /**
  * Enleve un produit du panier
  */
  supprimerProduitDansPanier: function(id_produit_dans_panier) {
    var self = this;

    // Appel ajax
    new Ajax.Request(
			'javascript/ajax/supprimerProduitDuPanier.php',
			{
				method: 'post', 
				parameters: 'id_produit_dans_panier=' + id_produit_dans_panier,
				onComplete: function(transport) {

					// On parse le JSON
					var JSON = transport.responseText.evalJSON();

					switch(JSON) {
            case -1:
             	// Erreur : variable session non instanciee
              $('message_info').update("Erreur variables sessions.");
              break;

            case -2:
             	// Erreur : le produit n'est pas dans le panier
              $('message_info').update("Le produit n'est pas dans le panier.");
              break;

            case -3:
             	// Erreur : lors de l'enregistrement des modifications sur le produit_dans_panier
              $('message_info').update("Erreur lors de l'enregistrement des modification sur le produit dans le panier.");
              break;

            default:
              $('message_info').update("Le produit a été supprimé.");
              Element.remove($('produit_dans_panier_id_' + id_produit_dans_panier));

              // On regarde si l'internaute est connecte en membre ou a coche la case _devennir membre_
              var membreclub	= 0;

              if ($('devenir_membre_club'))
                membreclub = ($('devenir_membre_club').checked) ? 1 : 0;
              else {
                // La checkbox n'existe pas, c'est qu'on est loggue en temps que membre
                membreclub = 2;
              }

              if (membreclub == 0) {
                Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc, JSON.pan_valeur_panier_ht);
              } else {
                Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc_membres, JSON.pan_valeur_panier_ht_membres);
              }

              if (JSON.pan_nb_item_dans_panier == 0)
                  self.insererLigneTableauPanierVide('detail_panier');

              // Mise a jour des totaux
              self.majAffichageTotalPanier();
              break;
          }
				}
			}
		);
  },
  
  /**
  * Augmente ou diminue la quantite d'un produit dans le panier
  * id_produit_dans_panier	: id du produit dans le panier à modifier
  * nb_variation				: si nombre negatif, quantite a retrancher, sinon, quantite a ajouter
  */
  majQuantiteProduitDansPanier: function(id_produit_dans_panier, nb_variation) {
    var self = this;

    // Si la checkbox "devenir membre du club" est cochee, on prend en compte le prix de l'adhesion
    var membreclub = 0;

    if ($('devenir_membre_club'))
      membreclub = ($('devenir_membre_club').checked) ? 1 : 0;
    else {
      // La checkbox n'existe pas, c'est qu'on est loggue en temps que membre
      membreclub = 2;
    }
	
    // Appel ajax
    new Ajax.Request(
			'javascript/ajax/majQuantiteProduitDansPanier.php',
			{
				method: 'post', 
				parameters: 'id_produit_dans_panier=' + id_produit_dans_panier + '&nb_variation=' + nb_variation + '&membreclub=' + membreclub,
				onComplete: function(transport) {

					// On parse le JSON
					var JSON = transport.responseText.evalJSON();

					switch(JSON) {
            case -1:
              // Erreur : variable session non instanciee
              $('message_info').update("Erreur variables sessions.");
              break;

            case -2:
              // Erreur : stocks insufisants
              $('message_info').update("Stocks insuffisants.");
              break;

            case -3:
              // Erreur : lors de l'enregistrement des modifications sur le produit_dans_panier
              $('message_info').update("Erreur lors de l'enregistrement des modification sur le produit dans le panier.");
              break;

            default:
              // Traitement ok, on met à jour l'affichage
              $('tableau_pdp_quantite_' + id_produit_dans_panier).update(JSON.quantite);			          // quantite
              $('tableau_pdp_pu_ttc_' + id_produit_dans_panier).update(JSON.pu_ttc);				            // prix unitaire TTC
              $('tableau_pdp_pt_ttc_' + id_produit_dans_panier).update(JSON.pt_ttc);				            // prix total TTC
              $('tableau_pdp_pu_ttc_membres_' + id_produit_dans_panier).update(JSON.pu_ttc_membres);		// prix membres unitaire TTC
              $('tableau_pdp_pt_ttc_membres_' + id_produit_dans_panier).update(JSON.pt_ttc_membres);		// prix membres total TTC

              if (membreclub == 0) {
                // Mise a jour de l'affichage du panier
                Panier.majAffichageInfoPanier(JSON.nb_item_dans_panier, JSON.valeur_panier_ttc, JSON.valeur_panier_ht);

              } else {
                // Mise a jour de l'affichage du panier
                Panier.majAffichageInfoPanier(JSON.nb_item_dans_panier, JSON.valeur_panier_ttc_membres, JSON.valeur_panier_ht_membres);
              }

              // Mise a jour des totaux
              self.majAffichageTotalPanier();
              break;
          }
				}
			}
		);
  },
  
  /**
  * Permet d'ajouter ou de supprimer le produit dans le panier special : l'adhesion au club
  * 	- adhesion est un booleen qui est a true si l'adhesion est dans le panier
  */
  adhesionClubDansPanier: function(adhesion){
    var self = this;

    // Appel ajax
    new Ajax.Request(
			'javascript/ajax/adhesionClubDansPanier.php',
			{
				method: 'post', 
				parameters: 'adhesion=' + adhesion,
				onComplete: function(transport) {

					// On parse le JSON
					var JSON = transport.responseText.evalJSON();

          switch(JSON) {
            case -1:
              // Erreur : variable session non instanciee
              $('message_info').update("Erreur variables sessions.");
              break;

            case -2:
              // Erreur : erreur de sauvegarde
              $('message_info').update("L'adhesion n'a pas pu être ajoutée dans la panier.");
              break;

            default:
              $('message_info').update("");

              // Ajout de la ligne adhesion dans le panier
              if (adhesion) {
                if (JSON.pan_nb_item_dans_panier == 1)
                  self.supprimerLigneTableauPanier('ligne_panier_vide');

                self.insererLignePanier('detail_panier', '0', JSON.intitule, '1', JSON.prix_ht_adhesion, JSON.prix_ttc_adhesion, false, false);
                Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc_membres, JSON.pan_valeur_panier_ht_membres);
              } else {
                self.supprimerLigneTableauPanier('produit_dans_panier_id_0');

                if (JSON.pan_nb_item_dans_panier == 0)
                  self.insererLigneTableauPanierVide('detail_panier');

                Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc, JSON.pan_valeur_panier_ht);
              }
              break;
          }

          self.majAffichageTotalPanier();
				}
			}
		);
  },
  
  /**
  * Insere une ligne qui informe que le panier est vide
  */
  insererLigneTableauPanierVide: function(idTableau) {
    var tbody   = $(idTableau).select('table')[0].select('tbody')[0];
    var ligne   = new Element('tr');
    
    var colonne = new Element('td', {'id': 'ligne_panier_vide', 'colspan': '6'}).update('Le panier est actuellement vide.');

    ligne.appendChild(colonne);

    // Ajout de la ligne au tableau
    tbody.appendChild(ligne);
  },
  
  /**
  * Insere une ligne dans la tableau du panier
  */
  insererLignePanier: function(idTableau, idProduit, intitule, quantite, prixHT, prixTTC, modifiable, supprimable) {
	
    var tbody = $(idTableau).select('table')[0].select('tbody')[0];
    var ligne = new Element('tr', {'id': 'produit_dans_panier_id_' + idProduit});
	
    // Colonne de modification et de suppression
    var colonneModifier = new Element('td', {'class': 'produit_modifier_quantite'});

    if (supprimable) {
      // On cree l'element
      var contenuSupprimer = new Element('a', {'class': 'bouton-poubelle', 'title': 'Supprimer ce produit du panier'}).update('&nbsp;');
      // On ajoute l'ecouteur
      Event.observe(contenuSupprimer, 'click', function() {
        this.supprimerProduitDansPanier(idProduit);
        return false;
      });
      colonneModifier.appendChild(contenuSupprimer);
    }

    if (modifiable) {
      // On cree l'element
      var contenuAjouterQuantite = new Element('a', {'class': 'bouton-plus', 'href': '#', 'title': 'Augmenter la quantité de ce produit'}).update('&nbsp;');
      // On ajoute l'ecouteur
      Event.observe(contenuAjouterQuantite, 'click', function() {
        this.majQuantiteProduitDansPanier(idProduit, 1);
        return false;
      });

      var contenuRetirerQuantite = new Element('a', {'class': 'bouton-moins', 'href': '#', 'title':'Diminuer la quantité de ce produit'});
      // On ajoute l'ecouteur
      Event.observe(contenuRetirerQuantite, 'click', function() {
        this.majQuantiteProduitDansPanier(idProduit, -1);
        return false;
      });

      colonneModifier.appendChild(document.createTextNode(' '));
      colonneModifier.appendChild(contenuAjouterQuantite);
      colonneModifier.appendChild(document.createTextNode(' '));
      colonneModifier.appendChild(contenuRetirerQuantite);
    }

    // Colonne de quantite
    var colonneQuantite = new Element('td', {'class': 'produit_quantite', 'id': 'tableau_pdp_quantite_' + idProduit}).update(quantite);

    // Colonne de l'intitule
    var colonneIntitule = new Element('td', {'class': 'produit_intitule', 'id': 'tableau_pdp_intitule_' + idProduit}).update(intitule);

    // Colonne prix unitaire
    var colonnePu = new Element('td', {'class': 'produit_pu'});
    var contenuPu	= document.createTextNode(prixTTC + ' \u20AC');
    colonnePu.appendChild(contenuPu);

    // Colonne prix total
    var prixTotal	= Math.round(100*(quantite*parseFloat(prixTTC)))/100;

    var colonnePt		= new Element('td', {'class': 'produit_pt'});
    var contenuPt		= document.createTextNode(prixTotal + ' \u20AC');
    colonnePt.appendChild(contenuPt);

    // Ajout des colonnes a la ligne
    ligne.appendChild(colonneModifier);
    ligne.appendChild(colonneQuantite);
    ligne.appendChild(colonneIntitule);
    ligne.appendChild(colonnePu);
    ligne.appendChild(colonnePt);

    // Ajout de la ligne au tableau
    tbody.appendChild(ligne);
  },
  
  /**
  * Supprimer une ligne du tableau du panier
  */
  supprimerLigneTableauPanier: function(idligne) {
    Element.remove($(idligne));
  },
  
  /**
  * Met a jour l'affichage des totaux finaux et des montant des codes promo et livraison
  */
  majAffichageTotalPanier: function() {
    // Si la checkbox "devenir membre du club" est cochee, on prend en compte le prix de l'adhesion
    this.membreclub = 0;

    if ($('devenir_membre_club')) {
      if ($('devenir_membre_club').checked == false) {
        this.membreclub = 0;
        General.changerStyleClasse('prixNormal', {'display': 'inline'});
  			General.changerStyleClasse('prixMembres', {'display': 'none'});

      } else {
        this.membreclub = 1;
        General.changerStyleClasse('prixNormal', {'display': 'none'});
        General.changerStyleClasse('prixMembres', {'display': 'inline'});
      }

    } else {
      // La checkbox n'existe pas, c'est qu'on est loggue en temps que membre
      this.membreclub	= 2;
      General.changerStyleClasse('prixNormal', {'display': 'none'});
      General.changerStyleClasse('prixMembres', {'display': 'inline'});
    }

    // On recupere les variables
    this.sous_total_ht		      = parseFloat($('tableau_pdp_sous_total_ht').innerHTML);			  // sous total HT avec les prix normaux
    this.sous_total_ttc	        = parseFloat($('tableau_pdp_sous_total_ttc').innerHTML);			// sous total TTC avec les prix normaux
  
    // on recupere les variables  modifiee
    this.sous_total_ht		      = parseFloat($('tableau_pdp_sous_total_ht').innerHTML);			  // sous total HT avec les prix normaux
    this.sous_total_ttc	        = parseFloat($('tableau_pdp_sous_total_ttc').innerHTML);			// sous total TTC avec les prix normaux
  
    this.montant_livraison_ht	  = parseFloat($('tableau_pdp_montant_livraison_ht').innerHTML);	// montant ht de la livraison
    this.montant_livraison_ttc	= parseFloat($('tableau_pdp_montant_livraison_ttc').innerHTML);	// montant ttc de la livraison
  
    // On verifie le champ du code promo
    this.checkCodePromo($('code_promo').value, this.sous_total_ht, this.sous_total_ttc, this.montant_livraison_ht, this.montant_livraison_ttc);
  },
  
  majValeurTotalePanier: function() {
    var self = this;
    
    this.montant_reduction_ht	  = parseFloat($('tableau_pdp_montant_reduction_ht').innerHTML);	// montant ht de la reduction code promo
    this.montant_reduction_ttc	= parseFloat($('tableau_pdp_montant_reduction_ttc').innerHTML);	// montant ttc de la reduction code promo

    this.montant_remise_ht		  = this.montant_reduction_ht;
    this.montant_remise_ttc		  = this.montant_reduction_ttc;

    new Ajax.Request(
			'javascript/ajax/majAffichageTotalPanier.php',
			{
				method: 'post', 
				parameters: 'membreclub=' + self.membreclub +
                    '&montant_livraison_ht=' + self.montant_livraison_ht +
                    '&montant_livraison_ttc=' + self.montant_livraison_ttc +
                    '&sous_total_ht=' + self.sous_total_ht +
                    '&sous_total_ttc=' + self.sous_total_ttc +
                    '&montant_remise_ht=' + self.montant_remise_ht +
                    '&montant_remise_ttc=' + self.montant_remise_ttc,

				onComplete: function(transport) {

					// On parse le JSON
					var JSON = transport.responseText.evalJSON();

					// Si le montant de la livraison est egal a zero, on n'affiche pas
					$('info_montant_livraison').style.display	= (parseFloat(self.montant_livraison_ttc) == 0 && parseFloat(self.montant_livraison_ht) == 0) ? 'none' : 'block';

					// Si le montant de la reduction est egal a zero, on n'affiche pas
					$('info_montant_reduction').style.display	= (parseFloat(self.montant_reduction_ttc) == 0 && parseFloat(self.montant_reduction_ht) == 0) ? 'none' : 'block';

					// Mise a jour de l'affichage
					$('tableau_pdp_total_ht').update(JSON.total_commande_ht);
					$('tableau_pdp_total_ttc').update(JSON.total_commande_ttc);

          if ($('tableau_pdp_montant_economise'))
						$('tableau_pdp_montant_economise').update(JSON.montant_economise);

          if (self.membreclub == 0)
            Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc, JSON.pan_valeur_panier_ht);
					else
						Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc_membres, JSON.pan_valeur_panier_ht_membres);

					$('bons_achat_parrainage').value = JSON.liste_id_parrainages;
					$('tableau_pdp_montant_parrainage_ht').update(JSON.montant_ht_parrainages);
					$('tableau_pdp_montant_parrainage_ttc').update(JSON.montant_ttc_parrainages);

					// Si le montant des bons parrainage est egal a zero, on n'affiche pas
					$('info_montant_parrainage').style.display	= (JSON.montant_ttc_parrainages == '' || parseFloat(JSON.montant_ttc_parrainages) == 0) ? 'none' : 'block';

					// Affichage du montant economise si on devient membre et des prix des produits membres ou normaux
					if ($('info_montant_economise'))
						$('info_montant_economise').style.display	= (self.membreclub != 2) ? 'block' : 'none';

          if ((parseInt(JSON.pan_nb_item_dans_panier) == 0 && self.adhesion_seule != true) || (JSON.adhesion_seule == 'true' && self.adhesion_seule != true)) {
            $('mode_livraison').selectedIndex = 0;
            $('mode_livraison').setAttribute('disabled', 'disabled');
            self.adhesion_seule = true;
            self.majMontantLivraison($('mode_livraison').options[$('mode_livraison').selectedIndex].value);

          } else {
            if ($('mode_livraison').getAttribute('disabled') == 'disabled')
              $('mode_livraison').setAttribute('disabled', '');
              self.adhesion_seule = false;
          }
				}
			}
		);
  },
  
  /**
  * Verifie si le code promo en parametre est valide, et met a jour les totaux du panier
  */
  checkCodePromo: function(code_promo, sous_total_ht, sous_total_ttc, montant_livraison_ht, montant_livraison_ttc){
    var self = this;

    new Ajax.Request(
			'javascript/ajax/checkCodePromo.php',
			{
				method: 'post', 
				parameters: 'code_promo=' + code_promo + '&sous_total_ht=' + sous_total_ht + '&sous_total_ttc=' + sous_total_ttc + '&montant_livraison_ht=' + montant_livraison_ht + '&montant_livraison_ttc=' + montant_livraison_ttc + "&checkCarteMembre=1",
				onComplete: function(transport) {

					// On parse le JSON
					var JSON = transport.responseText.evalJSON();

					switch(JSON) {
            case -1:
							// Erreur : tous les parametres n'ont pas ete renseignes, on n'affiche aucun picto
							$('code_promo_valide').style.display			= 'none';
							$('code_promo_erreur').style.display			= 'none';
							// Remise a zero de la reduction et on met le paragraphe en display: none
							$('tableau_pdp_montant_reduction_ht').update('0');
							$('tableau_pdp_montant_reduction_ttc').update('0');
							$('info_montant_reduction').style.display	= 'none';
							break;

						case -2:
							// le code promo n'est pas disponnible
							$('code_promo_valide').style.display			= 'none';
							$('code_promo_erreur').style.display			= 'inline';
							// remise a zero de la reduction et on met le paragraphe en display: none
							$('tableau_pdp_montant_reduction_ht').update('0');
							$('tableau_pdp_montant_reduction_ttc').update('0');
							$('info_montant_reduction').style.display	= 'none';
							break;

						case -3:
							// Variable session non instanciee
							$('code_promo_valide').style.display			= 'none';
							$('code_promo_erreur').style.display			= 'none';
							// Remise a zero de la reduction et on met le paragraphe en display: none
							$('tableau_pdp_montant_reduction_ht').update('0');
							$('tableau_pdp_montant_reduction_ttc').update('0');
							$('info_montant_reduction').style.display	= 'none';
							break;

						case -4:
							// Le montant minimum pour pouvoir beneficier de la reduc n'est pas atteint
							$('code_promo_valide').style.display			= 'none';
							$('code_promo_erreur').style.display			= 'inline';
							// Remise a zero de la reduction et on met le paragraphe en display: none
							$('tableau_pdp_montant_reduction_ht').update('0');
							$('tableau_pdp_montant_reduction_ttc').update('0');
							$('info_montant_reduction').style.display	= 'none';
							// Affichage du message d'erreur
							$('message_info').update("Le montant minimum de la commande pour pouvoir bénéficier de la réduction n'est pas atteint.");
							break;

						case -5:
							// Methode de calcul inconnue
							$('code_promo_valide').style.display			= 'none';
							$('code_promo_erreur').style.display			= 'none';
							// Remise a zero de la reduction et on met le paragraphe en display: none
							$('tableau_pdp_montant_reduction_ht').update('0');
							$('tableau_pdp_montant_reduction_ttc').update('0');
							$('info_montant_reduction').style.display	= 'none';
							// Affichage du message d'erreur
							$('message_info').update('Erreur interne.');
							break;

						default:
							// Le code est valide, on met à jour l'affichage
							$('code_promo_erreur').style.display			= 'none';
							$('code_promo_valide').style.display			= 'inline';

							// On met a jour le montant de la reduction et on affiche la div la contenant
							$('tableau_pdp_montant_reduction_ht').update(JSON.valeur_code_promo_ht);
							$('tableau_pdp_montant_reduction_ttc').update(JSON.valeur_code_promo_ttc);
							$('info_montant_reduction').style.display	= 'block';
							break;
          }

          self.majValeurTotalePanier();
				}
			}
		);
  },
	
	/**
	* Mise a jour du nombre et du montant des bons d'achat recus des parrainages
	*/
	majBonsAchatParrainage: function(sous_total_ht, sous_total_ttc) {
		// Appel ajax
		new Ajax.Request(
				'javascript/ajax/majBonsAchatParrainage.php',
				{
					method: 'post', 
					parameters: 'sous_total_ht=' + sous_total_ht + '&sous_total_ttc=' + sous_total_ttc,
					onComplete: function(transport) {

						// On parse le JSON
						var JSON = transport.responseText.toJSON();

						switch(JSON) {
							case -1:
								// Erreur : pas de variable session
								$('message_info').update('Erreur de variables session');
								$('bons_achat_parrainage').value = '';
								$('tableau_pdp_montant_parrainage_ht').update('0');
								$('tableau_pdp_montant_parrainage_ttc').update('0');
								break;

							case -2:
								// Erreur : l'internaute n'est pas loggue
								$('message_info').update('');
								$('bons_achat_parrainage').value = '';
								$('tableau_pdp_montant_parrainage_ht').update('0');
								$('tableau_pdp_montant_parrainage_ttc').update('0');
								break;

							default:
								$('message_info').update('');
								$('bons_achat_parrainage').value = JSON.liste_id_parrainages;
								$('tableau_pdp_montant_parrainage_ht').update(JSON.montant_ht_parrainages);
								$('tableau_pdp_montant_parrainage_ttc').update(JSON.montant_ttc_parrainages);
								break;
						}
					}
				}
			);
	},
	
	/**
	* Mise a jour du montant de la livraison
	*/
	majMontantLivraison: function(idMethodeLivraison) {
		var self = this;
    // Appel ajax
		new Ajax.Request(
				'javascript/ajax/majMontantLivraison.php',
				{
					method: 'post', 
					parameters: 'idMethodeLivraison=' + idMethodeLivraison,
					onComplete: function(transport) {

						// On parse le JSON
						var JSON = transport.responseText.evalJSON();

						switch(JSON) {
							case -1:
								// Erreur : parametre vide
								$('message_info').update('');
								$('tableau_pdp_montant_livraison_ht').update('0');
								$('tableau_pdp_montant_livraison_ttc').update('0');
								break;

							case -2:
								// Erreur : la methode de livraison n'est pas valide.
								$('message_info').update('');
								$('tableau_pdp_montant_livraison_ht').update('0');
								$('tableau_pdp_montant_livraison_ttc').update('0');
								break;

							default:
								$('tableau_pdp_montant_livraison_ht').update(JSON.montant_livraison_ht);
								$('tableau_pdp_montant_livraison_ttc').update(JSON.montant_livraison_ttc);
								break;
						}

						// Mise a jour des affichage total du panier
						self.majAffichageTotalPanier();
					}
				}
			);
	},

	/**
	* Affiche ou non une ligne d'un tableau passee en parametre si le parametre estCoche est a true
	*/
	toggleAffichageLigne: function(estCoche, idNoeud){
		// Si la checkbox est cochee, on affiche le noeud dont l'id est passe en parametre
		$(idNoeud).style.display	= (estCoche) ? 'table-row' : 'none';
	}
});

/**
 * Methodes de classe
 */
Object.extend(Panier, {
	/**
  * Ajout d'une reference au panier
  */
  ajouterReferenceAuPanier: function(event, id_produit, id_reference, quantite) {
    // Appel ajax
    new Ajax.Request(
			'javascript/ajax/ajouterReferenceAuPanier.php',
			{
				method: 'post', 
				parameters: 'id_produit=' + id_produit + '&id_reference=' + id_reference + '&quantite=' + quantite,
				onComplete: function(transport) {

					// On parse le JSON
					var JSON = transport.responseText.evalJSON();

					switch(JSON) {
            case -1:
              // Erreur : variable session non instanciee
              $('message_info').update("Erreur variables sessions.");
              break;

            case -2:
              // La reference ou le produit est desactive, est obsolete ou n'existe pas
              $('message_info').update("Cette référence n'existe pas.");
              break;

            case -3:
              // Erreur lors de l'appel au service Web
              $('message_info').update("Service Web indisponible.");
              break;

            case -4:
              // Erreur : le reference n'est pas en stock
              $('message_info').update("Cette référence n'est actuellement plus en stock.");
              break;

            case -5:
              // Erreur : lors de la sauvegarde du produit_dans_le_panier
              $('message_info').update("Erreur lors de l'ajout du produit dans le panier.");
              break;

            default:
              // Traitement Ok, on met un message pour le dire
              // On cache le bouton ajouter au panier
              new Effect.Fade($("btn-ajouter-ref-panier"), { duration: 0.5 });

              // on met un message indiquant qu'il a ete ajoute au panie
              new Effect.Appear($('produit-ajoute'), { duration: 0.5, delay: 0.5 });

              new Effect.Fade($('produit-ajoute'), { duration: 0.5, delay: 15 });
              new Effect.Appear($("btn-ajouter-ref-panier"), { duration: 0.5, from: 0.0, to: 1.0, delay: 15.5 });

              // On met a jour l'affichage des info du panier
              Panier.majAffichageInfoPanier(JSON.pan_nb_item_dans_panier, JSON.pan_valeur_panier_ttc, JSON.pan_valeur_panier_ht);
              break;
          }
				}
			}
		);

		Event.stop(event);
  },

	/**
  * Met a jour l'affichage des infos du panier
  */
  majAffichageInfoPanier: function(nb_item_dans_panier, valeur_panier_ttc, valeur_panier_ht) {
    // Infos dans le bloc de la colonne de gauche ou droite

		if (nb_item_dans_panier == 0) {
      $('pan_nb_item_dans_panier').update('0 article');

    } else if (nb_item_dans_panier == 1) {
      $('pan_nb_item_dans_panier').update('1 article');

    } else {
      $('pan_nb_item_dans_panier').update(nb_item_dans_panier + ' articles'); 
    }

    $('pan_valeur_panier_ttc').update(valeur_panier_ttc);

    // Infos dans le tableau du panier
    if ($('tableau_pdp_sous_total_ht'))
      $('tableau_pdp_sous_total_ht').update(valeur_panier_ht);

    if ($('tableau_pdp_sous_total_ttc'))
      $('tableau_pdp_sous_total_ttc').update(valeur_panier_ttc);
  }
});
