/*
SQLI Agency
author 	: obasaita
date 	: 06/05/2010
*/
$(document).ready(function() {
	//fonction de log
	function log(obj)
	{
		console.log(obj);
	}
	//fonction qui permet le parsing d'un string JSON
	function parseJSON (str) {
		if (str === "") str = '""';
		if (str.indexOf("<html")!=-1) str = '""';
		eval("var p=" + str + ";");
		return p;
	}
	//definition de l'objet
	BagController={
		revertTimeSB:27000,						//temps pour que le btn shopping bag reprend sa forme initial
		revertTime:3000,						//temps pour que le btn reprend sa forme initial
		urlAdd:typeof urlAddBagController != 'undefined' ? urlAddBagController : '',				//JSP qui controle l'ajout au bag
		urlAddNO:typeof urlAddNextOrderBagController != 'undefined' ? urlAddNextOrderBagController : '',				//JSP qui controle l'ajout au bag
		urlDel:typeof urlDelBagController != 'undefined' ? urlDelBagController : '',				//JSP qui controle la suppression du bag
		urlDelNO:typeof urlDelNextOrderBagController != 'undefined' ? urlDelNextOrderBagController : '',				//JSP qui controle la suppression du bag
		urlDelNOSpe:typeof urlDelNextOrderSpecialBagController != 'undefined' ? urlDelNextOrderSpecialBagController : '',	
		urlUpd:typeof urlUpdBagController != 'undefined' ? urlUpdBagController : '',				//JSP qui controle la mise a jour dans le bag
		DTOobj:{},								//initialisatin de l'objet DTO
		inputQ:null,
		typeBtn:'normal',
		init:function (){						//fonction d'initialisation
			$('.nes_linkAddToBag-white').hide();
			//definition du click sur le btn add to bag
			$('.nes_linkAddToBag, .nes_linkAddToBagNO').click(function(){
				BagController.initDTOobj($(this).attr('tag'));
				if($(this).attr('class')=='nes_linkAddToBagNO')
					BagController.addToBag(this,true);
				else
					BagController.addToBag(this);
					
				return false;
			});
			$('.nes_linkDelFromBag, .nes_linkDelFromBagNO').click(function(){
				if(contextPage == "quickorder" || contextPage == "quickorder-2")
				{	
					BagController.initDTOobj($(this).attr('tag'),'ajax');
				}
				else
					BagController.initDTOobj($(this).attr('tag'));
				
				if($(this).attr('class')=='nes_linkDelFromBagNO')
					BagController.DelFromBag(this,true);
				else
					BagController.DelFromBag(this);
					
				return false;
			});
			
			$('.nes_linkDelFromBagNOSpe').click(function(){
				BagController.initDTOobj($(this).attr('tag'));
				BagController.DelFromBagNOSpe(this);
					
				return false;
			});
			/*$('.nes_linkAddToBag_qs, .nes_linkAddToBag_qsp').change(function(){

				BagController.UpdToBag($(this));
				// BagController.initDTOobj($(this).attr('tag'));
				// BagController.addToBag(this);
			});*/
			$('.nes_linkAddToBag_qs').change(function(){
				BagController.UpdToBag($(this));
				// BagController.initDTOobj($(this).attr('tag'));
				// BagController.addToBag(this);
			});
			$('.nes_linkAddToBag_qsp').change(function(){
				BagController.UpdToBag($(this),'qsUpd');
				// BagController.initDTOobj($(this).attr('tag'));
				// BagController.addToBag(this);
			});
			// $('.nes_linkAddToBag_qspadd').change(function(){
				// BagController.initDTOobj($(this).attr('tag'));
				// BagController.addToBag(this);
			// });
			
		},
		initPonctual:function (tBtn,$btn,fn){						//fonction d'initialisation pointu
			$btn.click(function(){
				BagController.initDTOobj($(this).attr('tag'));
				BagController.addToBag(this);
				if(fn != null)
					fn();
				return false;
			});			
		},
		initDiffered:function (tBtn){						//fonction d'initialisation diferé
			$('.nes_linkAddToBag-white').hide();
			if(tBtn==null)
				this.typeBtn='big';
			else
				this.typeBtn=tBtn;
			
			if(this.typeBtn=='big')
			{	
				$('.nes_linkAddToBag_long').not(".nes_noAddToBag").click(function(){
					BagController.initDTOobj($(this).attr('tag'));
					BagController.addToBag(this);
					return false;
				});
			}
			else if(this.typeBtn=='qsUpd')
			{	
				$('.nes_linkAddToBag_qs').change(function(){
					BagController.UpdToBag($(this),'qsUpd');
				});
				if(contextPage == "quickorder-2") {
					$('.nes_linkAddToBag_qsp').change(function(){
						BagController.UpdToBag($(this),'qsUpd');
					});
				}
			}else if(this.typeBtn=='input')
			{	
				$('.nes_linkAddToBag_input').change(function(){
					BagController.initDTOobj($(this).attr('tag'));
					BagController.addToBag(this);
				});
			}
			else if(this.typeBtn=='normal')
			{	
				$('.nes_linkAddToBag_normal').click(function(){
					BagController.initDTOobj($(this).attr('tag'));
					BagController.addToBag(this);
					return false;
				});
			}
			if(contextPage == "quickorder-2") {
				//definition du click sur le btn add to bag
				$('.nes_linkAddToBag, .nes_linkAddToBagNO').click(function(){
					BagController.initDTOobj($(this).attr('tag'));
					if($(this).attr('class')=='nes_linkAddToBagNO')
						BagController.addToBag(this,true);
					else
						BagController.addToBag(this);
						
					return false;
				});
				$('.nes_linkDelFromBag, .nes_linkDelFromBagNO').click(function(){
					if(contextPage == "quickorder" || contextPage == "quickorder-2")
					{	
						BagController.initDTOobj($(this).attr('tag'),'ajax');
					}
					else
						BagController.initDTOobj($(this).attr('tag'));
					
					if($(this).attr('class')=='nes_linkDelFromBagNO')
						BagController.DelFromBag(this,true);
					else
						BagController.DelFromBag(this);
						
					return false;
				});
			}
		},
		// initialisation de l'objet DTO avec les param du tag btn
		initDTOobj:function (params,type)
		{
			// Clean DTOobj to work on clean object
			BagController.DTOobj = {};

			if(type!=null)
				this.typeBtn=type;
			if(params!=null)
			{	
				var t_params=params.split(';');				//liste des params separé par ;
				for(var i=0;i<t_params.length;i++)
				{
					var par=t_params[i].split(':');
					if(par[1].indexOf('{')==-1 && par[1].indexOf('}')==-1) 		// cas param normale
					{
						BagController.DTOobj[par[0]]=par[1];
					}else														// cas param textfield
					{
						BagController.DTOobj[par[0]]=$('#'+par[1].substr(1,par[1].length-2)).val();
						BagController.inputQ=par[1].substr(1,par[1].length-2);
					}
				}
				if(contextPage == "quickorder" || contextPage == "quickorder-2")
					BagController.DTOobj["isFromQuickOrder"]=true;
				if(contextPage == "shopping_bag")
					BagController.DTOobj["isFromShoppingBag"]=true;
			}
		},
		//reset de l objet DTO
		resetDTOobj:function ()
		{
			BagController.DTOobj={};
			BagController.inputQ=null;
			
		},
		// reset du bouton au format d'origine
		revertBtn:function (element)
		{
			if(contextPage =="quickorder" || contextPage == "quickorder-2")
			{
				$(element).parent('span').removeClass('nes_addToBag-White');
				if( $(element).hasClass('nes_linkAddToBag-white') )
					$(element).removeClass('nes_linkAddToBag-white');
				if($(element)[0].nodeName != 'INPUT')
					$(element).html(f_get_txt('addToBag'));
			}else
			{
				//$('.nes_linkAddToBag-white').parent('p.nes_none').css('background','#AA831E');
				$(element).find('span').css('color','white').html(f_get_txt('addToBag')).removeClass('nes_linkAddToBag-white');
				$(element).find('span').parent().removeClass('nes_linkAddToBag-white');
			}
			setTimeout(function(){
				$('.nes_num-bag').removeClass('nes_num-bag-fill');
				$('.nes_shop-bag').removeClass('nes_shop-bag-fill');
			}, BagController.revertTimeSB);
			$(element).attr('clickable',1);
		},
		//appel ajax pour l add to bag
		addToBag:function(element,nextOrder)
		{
			var self=this;
			if($(element).attr('clickable')==null || $(element).attr('clickable') == 1)
			{
				
				if(contextPage == "shopping_bag" && $(element).attr('class')=='nes_linkAddToBagNO') 
				{
					if($(element).attr('clicked')=='yes')
						return false;
					else
						$(element).attr('clicked','yes');
				}
				
				$.ajax(
					{ 
						url: (nextOrder==true)?BagController.urlAddNO:BagController.urlAdd,
						type:'POST',
						contentType:'application/json',
						dataType:'json',
						data:JSON.stringify(BagController.DTOobj),
						beforeSend: function(req) {
							req.setRequestHeader("Accept", "application/json");
						},
						success: function(data){
							//var oData=parseJSON(data);
							
							var oData=data;
							if(oData!=null)
							{
								if(oData.success==true) 							// si true effectué la modif en js
								{	
									if(nextOrder==true || $(element).attr('onSuccessDo')=='reload')
									{
										if(contextPage !="quickorder" && contextPage != "quickorder-2") {
											location.reload();
										}else{
											//BagController.bagUpdatedAjax(element,oData);
											$('.nes_listProducts_1').html(BagController.constructShoppingBag(oData.shoppingBag));
											$('.nes_linkDelFromBag_diff, .nes_linkDelFromBagNO_diff').click(function(){
												self.initDTOobj($(this).attr('tag'),'ajax');
												if($(this).attr('class')=='nes_linkDelFromBagNO_diff')
													BagController.DelFromBag(this,true);
												else
													BagController.DelFromBag(this);
													
												return false;
											});
										}
									}else
									{
										if($(element).attr('onSuccessDo')=='redirect')
										{
											window.location=urlAddBagControllerOnsuccesRedirect;
										}
										else
										{
											if($(element).attr('onSuccessDo')=='hide')
												$(element).parents("li").hide();
											else
												$(element).attr('clickable',0);
											BagController.bagAdded(element,oData);
											BagController.resetDTOobj();
										}
									}
									
									if(oData.refresh == true && contextPage !='list' && contextPage !='shopping_bag' && contextPage !='pdp')
										promotionLoader.getPromotions();
										
									if(contextPage == "shopping_bag")
										location.reload();
								}
								else											//sinon traitement selon le cas d'erreur
								{	
									if(oData.oldQuantity!=null && BagController.inputQ!=null)
									{
										$('#'+BagController.inputQ).val(oData.oldQuantity);
									}
									switch(oData.errorType)
									{
										case 'isNotLoggedIn':							// redirection pour effectuer un login
											$(document.body).append('<form id="BagController_genForm" method="post" action="'+oData.urlLogin+'" ><input type="hidden" value="'+window.location+'" name="spring-security-redirect"> </form> ' );
											$('#BagController_genForm').submit();
											break;
										case 'OutOfStock':						// produit out of stock
											
											if(self.typeBtn!='big')
											{
												if(contextPage == "quickorder" || contextPage == "quickorder-2")
												{
													//$(element).addClass('nes_linkout_stock');
													$(element).removeClass('nes_linkAddToBag');
													$(element).html(f_get_txt("outOfStock"));
													$(element).parents('.nes_addToBag').css({'background':'black'});
													$(element).css({'cursor': 'text', 'outline': 'none','background':'none','padding-left':'0','color':'white'});
													$(element).unbind('click');
												}else
												{
													$(element).addClass('nes_linkout_stock');
													$(element).removeClass('nes_linkAddToBag');
													$(element).find('span').html(f_get_txt("outOfStock"));
													$(element).css({'cursor': 'default', 'outline': 'none'});
													$(element).unbind('click');
												}
											}else
											{
												$(element).parent('p').addClass('nes_noneOut');
												$(element).find('span').html(f_get_txt("outOfStock"));
												$(element).css({'cursor': 'default', 'outline': 'none'});
												$(element).unbind('click');
											}
											
											break;
										case 'MaxQuantityReached':						// produit out of stock
											
											if(self.typeBtn!='big')
											{
												if(contextPage == "quickorder" || contextPage == "quickorder-2")
												{
													//$(element).addClass('nes_linkout_stock');
													$(element).removeClass('nes_linkAddToBag');
													$(element).html(f_get_txt("messageMaxQuantityReached"));
													$(element).parents('.nes_addToBag').css({'background':'black'});
													$(element).css({'cursor': 'text', 'outline': 'none','background':'none','padding-left':'0','color':'white'});
													$(element).unbind('click');
												}else
												{	
													var parent = $(element).parent();
													$(element).remove();
													parent.append('<center><p class="nes_none nes_reached_qty"><strong>' + f_get_txt('messageMaxQuantityReached') + '</strong></p></center>')
												}
											}else
											{
												$(element).parent().replaceWith('<center><p class="nes_none nes_reached_qty"><strong>' + f_get_txt('messageMaxQuantityReached') + '</strong></p></center>');
											}
											
											break;
										case 'Generic':						// erreur generique	
											alert(oData.message);
											break;
										default:						
											alert(f_get_txt('errNotRecognized')+' : '+oData.errorType);
											break;
									}
								}
							}
							$(".nes_innerBlocShoppingBag ul li").not('[class]').hover(function(){
								$(this).addClass('nes_quick_li_hover');
							},
								function(){
								$(this).removeClass('nes_quick_li_hover');
							})							
						}
					}
				);
			}
		},
		//modif du btn et panier si l'ajout s'effectue correctement
		bagAdded:function(element,oData)
		{
			if(oData.formatedTotalPrice!=null && oData.formatedTotalPrice!='')
				$('.nes_price-bag').html(': '+oData.formatedTotalPrice);
			else
				$('.nes_price-bag').html('');
			$('.nes_num-bag').addClass('nes_num-bag-fill');
			if(contextPage =="quickorder" || contextPage == "quickorder-2")
			{
				$(element).addClass('nes_linkAddToBag-white');
				$(element).html(f_get_txt('productAdded'));
				
				var QSValue = $(element).val();
				
				if($(element)[0].tagName == "A")
				{	
					if(BagController.DTOobj.q != null)
						QSValue = BagController.DTOobj.q;
					else
						QSValue = BagController.DTOobj.quantity;
				}
					
				//$('span.nes_select-quantity>input[prod='+$(element).attr('prod')+']').val($(element).val())
				//if($(element).attr('prod') != null){	
				//Mantis 9636
				var eltProd;
			
				if ($(element).attr("prod") != undefined){
					eltProd = $(element).attr("prod").match(/'(.*)'/)[1];
				} else {
					eltProd = $(element).attr("tag").match(/id:'(.*)'/)[1];
				}

				//Mantis 9636, 10733, 10698
				var val = $('span.nes_select-quantity>input[prod="\'' + eltProd + '\'"]').val();
				$('span.nes_select-quantity>input[prod="\'' + eltProd + '\'"]').val(parseInt(QSValue) + parseInt(val));
				if(parseInt(QSValue) + parseInt(val) != 0) {
					$('span.nes_select-quantity>input[prod="\'' + eltProd +'\'"]')
						.parents('div.nes_list-filter')
							.addClass('nes_list-selected')
							.end()
						.parents("span.nes_select-quantity_js")
							.addClass("nes_select-quantity_selected");
				} else {
					$('span.nes_select-quantity>input[prod="\'' + eltProd + '\'"]')
						.parents('div.nes_list-filter')
							.removeClass('nes_list-selected')
							.end()
						.parents("span.nes_select-quantity_js")
							.removeClass("nes_select-quantity_selected");
				}
						
				//}
        // if($(element)[0].id.indexOf('input_q_select-quantity')!=-1)
				// {
					// var idd=$(element)[0].id.replace('input_q_select-quantity','');
					// $('#input_q_'+idd).val($(element).val());
				// }else if($(element)[0].id.indexOf('input_q_')!=-1)
				// {
					// var idd=$(element)[0].id.replace('input_q_','');
					// $('#input_q_select-quantity'+idd).val($(element).val());
				// }
			}else
			{
				$(element).addClass('nes_linkAddToBag-white');
				$(element).find('span').css('color','black');
				//$('.nes_linkAddToBag-white').parent('p.nes_none').css('background','white');
				$(element).find('span').html(f_get_txt('productAdded'));
			}
			$('.nes_shop-bag').addClass('nes_shop-bag-fill');
			//$('#nbr_bag').html(oData.nbAddedItems);

			setTimeout(function(){BagController.revertBtn(element)}, BagController.revertTime);
			
			if(oData.shoppingBag!=null)
			{
				$('.nes_listProducts_1').html(BagController.constructShoppingBag(oData.shoppingBag));
				$('.nes_shop-bulle-top-showed').hide();
				$('.nes_linkDelFromBag_diff, .nes_linkDelFromBagNO_diff').click(function(){
					BagController.initDTOobj($(this).attr('tag'),'ajax');
					if($(this).attr('class')=='nes_linkDelFromBagNO_diff')
						BagController.DelFromBag(this,true);
					else
						BagController.DelFromBag(this);
						
					return false;
				});
				//if(oData.refresh != true)
					BagController.ChocoPushDisplay();
			}
		},
		//appel ajax pour l update
		UpdToBag:function(element,type)
		{
			if(type!=null)
				this.typeBtn=type;
			var self=this;
			BagController.initDTOobj(element.attr('tag'));
			$.ajax(
				{ 
					url: BagController.urlUpd, 
					type:'POST',
					contentType:'application/json',
					dataType:'json',
					data:JSON.stringify(BagController.DTOobj),
					beforeSend: function(req) {
						req.setRequestHeader("Accept", "application/json");
					},
					success: function(data){
						//var oData=parseJSON(data);
						var oData=data;
						if(oData!=null)
						{
							if(oData.success==true) 							// si true effectué la modif en js
							{	
								if(oData.refresh == true && contextPage != "shopping_bag")
									promotionLoader.getPromotions();
									
								if(self.typeBtn!='qsUpd' || contextPage == "shopping_bag")
									BagController.bagUpdated(element, oData);
								else
									BagController.bagUpdatedAjax(element,oData);
								BagController.resetDTOobj();
							}
							else											//sinon traitement selon le cas d'erreur
							{	
								if(oData.oldQuantity!=null && BagController.inputQ!=null)
								{
									$('#'+BagController.inputQ).val(oData.oldQuantity);
								}
								switch(oData.errorType)
								{
									case 'isNotLoggedIn':							// redirection pour effectuer un login
										$(document.body).append('<form id="BagController_genForm" method="post" action="'+oData.urlLogin+'" ><input type="hidden" value="'+window.location+'" name="spring-security-redirect"> </form> ' );
										$('#BagController_genForm').submit();
										break;
									case 'OutOfStock':							
										alert(oData.message);
										break;
									default:						
										alert(oData.message);
										break;
								}
							}
							
						}
						$(".nes_innerBlocShoppingBag ul li").not('[class]').hover(function(){
							$(this).addClass('nes_quick_li_hover');
						},
							function(){
							$(this).removeClass('nes_quick_li_hover');
						})
					}
				}
			);
		},
		bagUpdated:function(element, obj)
		{
			if(contextPage !="quickorder" && contextPage != "quickorder-2") {
				location.reload();
			}else{
				BagController.bagUpdatedAjax(element,obj);
			}
		},
		bagUpdatedAjax:function(element,obj)
		{
			var self=this;
			if(obj.formatedTotalPrice!=null && obj.formatedTotalPrice!='')
				$('.nes_price-bag').html(': '+obj.formatedTotalPrice);
			else
				$('.nes_price-bag').html('');
			
			//$('span.nes_select-quantity>input[prod='+$(element).attr('prod')+']').val($(element).val())
			if($.browser.msie)
			{	
				$('span.nes_select-quantity>input[prod="'+$(element).attr('prod')+'"]').val($(element).val());
				if($(element).val() != 0)
				{
					//MANTIS 9235
					$('span.nes_select-quantity>input[prod="'+$(element).attr('prod')+'"]').parents('div.nes_list-filter').addClass('nes_list-selected')
																							.end().parent(".nes_select-quantity").addClass("nes_select-quantity_selected");
				}else
				{
					$('span.nes_select-quantity>input[prod="'+$(element).attr('prod')+'"]').parents('div.nes_list-filter').removeClass('nes_list-selected')
																							.end().parent(".nes_select-quantity").removeClass("nes_select-quantity_selected");
				}
			}
			else
			{	
				$('span.nes_select-quantity>input[prod="'+$(element).attr('prod').replace(/'/g,"\\'")+'"]').val($(element).val());
				if($(element).val() != 0)
				{
					$('span.nes_select-quantity>input[prod="'+$(element).attr('prod').replace(/'/g,"\\'")+'"]').parents('div.nes_list-filter').addClass('nes_list-selected')
																												.end().parent(".nes_select-quantity").addClass("nes_select-quantity_selected");
				}else
				{
					$('span.nes_select-quantity>input[prod="'+$(element).attr('prod').replace(/'/g,"\\'")+'"]').parents('div.nes_list-filter').removeClass('nes_list-selected')
																												.end().parent(".nes_select-quantity").removeClass("nes_select-quantity_selected");
				}
			}
			
      // if($(element)[0].id.indexOf('input_q_select-quantity')!=-1)
			// {
				// var idd=$(element)[0].id.replace('input_q_select-quantity','');
				// $('#input_q_'+idd).val($(element).val());
			// }else if($(element)[0].id.indexOf('input_q_')!=-1)
			// {
				// var idd=$(element)[0].id.replace('input_q_','');
				// $('#input_q_select-quantity'+idd).val($(element).val());
			// }
			
			$('.nes_num-bag').addClass('nes_num-bag-fill');
			$('.nes_shop-bag').addClass('nes_shop-bag-fill');
			//$('#nbr_bag').html(obj.nbAddedItems);
			
			$('.nes_listProducts_1').html(BagController.constructShoppingBag(obj.shoppingBag));
			$('.nes_shop-bulle-top-showed').hide();
			if((obj.shoppingBag.machineMessages.length!=0 && obj.shoppingBag.machineMessages[0].messageBottom!=null) || (obj.shoppingBag.accessoryMessages.length!=0 && obj.shoppingBag.accessoryMessages[0].messageBottom!=null) || (obj.shoppingBag.capsuleMessages.length!=0 && obj.shoppingBag.capsuleMessages[0].messageBottom!=null) || (obj.shoppingBag.chocolateMessages.length!=0 && obj.shoppingBag.chocolateMessages[0].messageBottom!=null))
			{
				var err_msg='';
				if(obj.shoppingBag.machineMessages.length!=0)
				{	
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.machineMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.shoppingBag.accessoryMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.accessoryMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.shoppingBag.chocolateMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.chocolateMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.shoppingBag.capsuleMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.capsuleMessages[0].messageBottom;
					err_msg+='</div>';
				}
				$('.nes_shop-bulle-top-showed > div ').html(err_msg);
			}else{
				$('.nes_shop-bulle-top-showed > div > div').html('none');
			}
			$('.nes_linkDelFromBag_diff, .nes_linkDelFromBagNO_diff').click(function(){
				self.initDTOobj($(this).attr('tag'),'ajax');
				if($(this).attr('class')=='nes_linkDelFromBagNO_diff')
					BagController.DelFromBag(this,true);
				else
					BagController.DelFromBag(this);
					
				return false;
			});
			setTimeout(function(){BagController.revertBtn(element)}, BagController.revertTime);
			//if(obj.refresh != true)
				BagController.ChocoPushDisplay();
		},
		//appel ajax pour l delete
		DelFromBag:function(element,nextOrder)
		{
			var self=this;
			$.ajax(
				{ 
					url: (nextOrder==true)?BagController.urlDelNO:BagController.urlDel, 
					type:'POST',
					contentType:'application/json',
					dataType:'json',
					data:JSON.stringify(BagController.DTOobj),
					beforeSend: function(req) {
						req.setRequestHeader("Accept", "application/json");
					},
					success: function(data){
						//var oData=parseJSON(data);
						var oData=data;
						if(oData!=null)
						{
							if(oData.success==true) 							// si true effectué la modif en js
							{	
								if(oData.refresh == true && contextPage !="shopping_bag")
									promotionLoader.getPromotions();
										
								if(self.typeBtn!='ajax' || contextPage == "shopping_bag")
									BagController.bagDeleted(element, oData);
								else
									BagController.bagDeletedAjax(element,oData);
								BagController.resetDTOobj();
							}else											//sinon traitement selon le cas d'erreur
							{	
								switch(oData.errorType)
								{
									case 'isNotLoggedIn':							// redirection pour effectuer un login
										$(document.body).append('<form id="BagController_genForm" method="post" action="'+oData.urlLogin+'" ><input type="hidden" value="'+window.location+'" name="spring-security-redirect"> </form> ' );
										$('#BagController_genForm').submit();
										break;
									default:						
										alert(oData.message);
										break;
								}
							}
						}
						$(".nes_innerBlocShoppingBag ul li").not('[class]').hover(function(){
							$(this).addClass('nes_quick_li_hover');
						},
							function(){
							$(this).removeClass('nes_quick_li_hover');
						})
					}
				}
			);
		},
		bagDeleted:function(element, obj)
		{
			if(contextPage !="quickorder" && contextPage != "quickorder-2"){
				location.reload();
			}else{
				BagController.bagDeletedAjax(element,obj);
			}
		},
		bagDeletedAjax:function(element,obj)
		{    
			var self=this;
			if(obj.formatedTotalPrice!=null && obj.formatedTotalPrice!='')
				$('.nes_price-bag').html(': '+obj.formatedTotalPrice);
			else
				$('.nes_price-bag').html('');
			$('.nes_num-bag').addClass('nes_num-bag-fill');
			$('.nes_shop-bag').addClass('nes_shop-bag-fill');
			//$('#nbr_bag').html(obj.nbAddedItems);
			
			$('#input_q_select-quantity'+BagController.DTOobj.id).val(0);
			//var inputQuant=$('#input_q_'+BagController.DTOobj.id);
			var inputQuant=$('span.nes_select-quantity>input[prod="'+BagController.DTOobj.id+'"]');
			inputQuant.val(0);
			//var simInp=$('span.nes_select-quantity>input[prod='+BagController.DTOobj.id+']').val(0);
			if($.browser.msie)
				var simInp=$('span.nes_select-quantity>input[prod="'+BagController.DTOobj.id+'"]').val(0);
			else
				var simInp=$('span.nes_select-quantity>input[prod="'+BagController.DTOobj.id.replace(/'/g,"\\'")+'"]').val(0);
			
			if(inputQuant.length>0)
			{
				inputQuant.parent().removeClass('nes_select-quantity_selected');
				inputQuant.parents('.nes_list-filter').removeClass("nes_list-selected").css({'position':'', 'z-index':''}).siblings().css({'position':'', 'z-index':''});
			}
			
			if(!BagController.havePromotion(obj))
				$('.nes_welcomeOffer').show();
			
			$('.nes_listProducts_1').html(BagController.constructShoppingBag(obj.shoppingBag));
			$('.nes_shop-bulle-top-showed').hide();
			if((obj.shoppingBag.machineMessages.length!=0 && obj.shoppingBag.machineMessages[0].messageBottom!=null) || (obj.shoppingBag.accessoryMessages.length!=0 && obj.shoppingBag.accessoryMessages[0].messageBottom!=null) || (obj.shoppingBag.capsuleMessages.length!=0 && obj.shoppingBag.capsuleMessages[0].messageBottom!=null))
			{
				var err_msg='';
				if(obj.shoppingBag.machineMessages.length!=0)
				{	
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.machineMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.shoppingBag.accessoryMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.accessoryMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.shoppingBag.capsuleMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.shoppingBag.capsuleMessages[0].messageBottom;
					err_msg+='</div>';
				}
				$('.nes_shop-bulle-top-showed > div ').html(err_msg);
			}else{
				$('.nes_shop-bulle-top-showed > div > div').html('none');
			}
			$('.nes_linkDelFromBag_diff, .nes_linkDelFromBagNO_diff').click(function(){
				self.initDTOobj($(this).attr('tag'),'ajax');
				if($(this).attr('class')=='nes_linkDelFromBagNO_diff')
					BagController.DelFromBag(this,true);
				else
					BagController.DelFromBag(this);
					
				return false;
			});
			setTimeout(function(){BagController.revertBtn(element)}, BagController.revertTime);
			//if(obj.refresh != true)
				BagController.ChocoPushDisplay();
		},
		
		DelFromBagNOSpe:function(element)
		{
			if(contextPage == "shopping_bag") 
			{
				if($(element).attr('clicked')=='yes')
					return false;
				else
					$(element).attr('clicked','yes');
			}
			
			var self=this;
			$.ajax(
				{ 
					url: BagController.urlDelNOSpe, 
					type:'POST',
					contentType:'application/json',
					dataType:'json',
					data:JSON.stringify(BagController.DTOobj),
					beforeSend: function(req) {
						req.setRequestHeader("Accept", "application/json");
					},
					success: function(data){
						//var oData=parseJSON(data);
						
						var oData=data;
						if(oData!=null)
						{
							if(oData.success==true) 							// si true effectué la modif en js
							{	
								BagController.bagDeletedSpe(element, oData);
								
								BagController.resetDTOobj();
							}else											//sinon traitement selon le cas d'erreur
							{	
								switch(oData.errorType)
								{
									case 'isNotLoggedIn':							// redirection pour effectuer un login
										$(document.body).append('<form id="BagController_genForm" method="post" action="'+oData.urlLogin+'" ><input type="hidden" value="'+window.location+'" name="spring-security-redirect"> </form> ' );
										$('#BagController_genForm').submit();
										break;
									default:						
										alert(oData.message);
										break;
								}
							}
						}
					}
				}
			);
		},
		bagDeletedSpe:function(element, obj)
		{
			location.reload();
		},
		
		havePromotion:function(obj)
		{
			for(var i=0;i<obj.shoppingBag.accessoryItems.length;i++)
			{
				if(obj.shoppingBag.accessoryItems[0].codePromotion!=null)
					return true;
			}
			for(var i=0;i<obj.shoppingBag.capsuleItems.length;i++)
			{
				if(obj.shoppingBag.capsuleItems[0].codePromotion!=null)
					return true;
			}
			for(var i=0;i<obj.shoppingBag.machineItems.length;i++)
			{
				if(obj.shoppingBag.machineItems[0].codePromotion!=null)
					return true;
			}
			return false;
		},
		floatWithZero:function(nmb)
		{
			return (parseInt(nmb)==nmb)?(nmb+'.0'):nmb;
		},
		constructShoppingBag:function(obj)
		{
			var html='';
			//////////////////////////////capsule
			html+='<li class="nes_majText nes_noHover ">';
				html+='<span class="nes_l-float">';
					html+=f_get_txt('capsules')+' ('+obj.totalQuantityCapsules+')';
				html+='</span>';
				html+='<span class="nes_r-float">';
					html+=obj.currency;
				html+='</span>';
				if(obj.capsuleMessages.length!=0 && obj.capsuleMessages[0].messageCategory!=null)
				{
					html+='<div class="nes_blocErreur nes_png">';
						html+='<img src="'+contextPath+f_get_txt('imagePath')+'picto_warning.png" alt="" class="nes_l-float" />';
						html+='<p>'+obj.capsuleMessages[0].messageCategory+'</p>';
					html+='</div>';
				}
			html+='</li>';
			if(obj.capsuleItems.length!=0)
			{
				
				for(var i=0;i<obj.capsuleItems.length;i++)
				{
					html+='<li>';
						html+='<span class="nes_l-float nes_smallSpan">';
							html+=obj.capsuleItems[i].quantity;
						html+='</span>';
						html+='<span class="nes_name-quick-r nes_l-float">';
							html+=obj.capsuleItems[i].product.name;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.capsuleItems[i].totalPrice);isBillable
							if(obj.capsuleItems[i].isBillable==true)
								html+=obj.capsuleItems[i].formatedTotalPrice;
							else
								html+=f_get_txt('free');
						html+='</span>';
						if(obj.capsuleItems[i].isRemovable)
						{
							var class_name='nes_linkDelFromBag_diff';
							var id_value=obj.capsuleItems[i].product.code;
							var codePromo_value=(obj.capsuleItems[i].codePromotion != "undefined" && obj.capsuleItems[i].codePromotion != null) ? ";codePromotion:"+obj.capsuleItems[i].codePromotion : "";
							if(obj.capsuleItems[i].isNextOrderItem)
							{	
								class_name='nes_linkDelFromBagNO_diff';
								id_value=obj.capsuleItems[i].nextOrderId;
							}
							html+='<a href="javascript:void(0);" class="'+class_name+'" tag="id:'+id_value+codePromo_value+'" title="'+f_get_txt('delete')+' '+obj.capsuleItems[i].product.name+'">';
								html+='<strong class="nes_none">';
									html+='delete';
								html+='</strong>';
							html+='</a>';
						}
					html+='</li>';
				}
			}
			if(obj.isChocolateSaleActivated==true)
			{
				//////////////////////////////chocolat
				html+='<li class="nes_majText nes_separateur nes_noHover_2 ">';
					html+='<span class="nes_l-float">';
						html+=f_get_txt('chocolates')+' ('+obj.totalQuantityChocolates+')';
					html+='</span>';
					html+='<span class="nes_r-float">';
						html+=obj.currency;
					html+='</span>';
					if(obj.chocolateMessages.length!=0 && obj.chocolateMessages[0].messageCategory!=null)
					{
						html+='<div class="nes_blocErreur nes_png">';
							html+='<img src="'+contextPath+f_get_txt('imagePath')+'picto_warning.png" alt="" class="nes_l-float" />';
							html+='<p>'+obj.chocolateMessages[0].messageCategory+'</p>';
						html+='</div>';
					}
				html+='</li>';
				if(obj.chocolateItems.length!=0)
				{
					
					for(var i=0;i<obj.chocolateItems.length;i++)
					{
						html+='<li>';
							html+='<span class="nes_l-float nes_smallSpan">';
								html+=obj.chocolateItems[i].quantity;
							html+='</span>';
							html+='<span class="nes_name-quick-r nes_l-float">';
								html+=obj.chocolateItems[i].product.name;
							html+='</span>';
							html+='<span class="nes_r-float">';
								//html+=this.floatWithZero(obj.chocolateItems[i].totalPrice);
								html+=obj.chocolateItems[i].formatedTotalPrice;
							html+='</span>';
							if(obj.chocolateItems[i].isRemovable)
							{
								var class_name='nes_linkDelFromBag_diff';
								var id_value=obj.chocolateItems[i].product.code;
								if(obj.chocolateItems[i].isNextOrderItem)
								{	
									class_name='nes_linkDelFromBagNO_diff';
									id_value=obj.chocolateItems[i].nextOrderId;
								}
								html+='<a href="javascript:void(0);" class="'+class_name+'" tag="id:'+id_value+'" title="'+f_get_txt('delete')+' '+obj.chocolateItems[i].product.name+'">';
									html+='<strong class="nes_none">';
										html+='delete';
									html+='</strong>';
								html+='</a>';
							}
						html+='</li>';
					}
				}
			}
			//////////////////////////////accessoire
			html+='<li class="nes_majText nes_separateur nes_noHover_2 ">';
				html+='<span class="nes_l-float">';
					html+=f_get_txt('accessories')+' ('+obj.totalQuantityAccessories+')';
				html+='</span>';
				html+='<span class="nes_r-float">';
					html+=obj.currency;
				html+='</span>';
				if(obj.accessoryMessages.length!=0 && obj.accessoryMessages[0].messageCategory!=null)
				{
					html+='<div class="nes_blocErreur nes_png">';
						html+='<img src="'+contextPath+f_get_txt('imagePath')+'picto_warning.png" alt="" class="nes_l-float" />';
						html+='<p>'+obj.accessoryMessages[0].messageCategory+'</p>';
					html+='</div>';
				}
			html+='</li>';
			if(obj.accessoryItems.length!=0)
			{
				
				for(var i=0;i<obj.accessoryItems.length;i++)
				{
					html+='<li>';
						html+='<span class="nes_l-float nes_smallSpan">';
							html+=obj.accessoryItems[i].quantity;
						html+='</span>';
						html+='<span class="nes_name-quick-r nes_l-float">';
							html+=obj.accessoryItems[i].product.name;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.accessoryItems[i].totalPrice);
							if(obj.accessoryItems[i].isBillable==true)
								html+=obj.accessoryItems[i].formatedTotalPrice;
							else
								html+=f_get_txt('free');
						html+='</span>';
						if(obj.accessoryItems[i].isRemovable)
						{
							var class_name='nes_linkDelFromBag_diff';
							var id_value=obj.accessoryItems[i].product.code;
							var codePromo_value=(obj.accessoryItems[i].codePromotion != "undefined" && obj.accessoryItems[i].codePromotion != null) ? ";codePromotion:"+obj.accessoryItems[i].codePromotion : "";
							if(obj.accessoryItems[i].isNextOrderItem)
							{	
								class_name='nes_linkDelFromBagNO_diff';
								id_value=obj.accessoryItems[i].nextOrderId;
							}
							html+='<a href="javascript:void(0);" class="'+class_name+'" tag="id:'+id_value+codePromo_value+'" title="'+f_get_txt('delete')+' '+obj.accessoryItems[i].product.name+'">';
								html+='<strong class="nes_none">';
									html+='delete';
								html+='</strong>';
							html+='</a>';
						}
					html+='</li>';
				}
			}
			//////////////////////////////machine
			html+='<li class="nes_majText nes_separateur nes_noHover_2 ">';
				html+='<span class="nes_l-float">';
					html+=f_get_txt('machines')+' ('+obj.totalQuantityMachines+')';
				html+='</span>';
				html+='<span class="nes_r-float">';
					html+=obj.currency;
				html+='</span>';
				if(obj.machineMessages.length!=0 && obj.machineMessages[0].messageCategory!=null)
				{
					html+='<div class="nes_blocErreur nes_png">';
						html+='<img src="'+contextPath+f_get_txt('imagePath')+'picto_warning.png" alt="" class="nes_l-float" />';
						html+='<p>'+obj.machineMessages[0].messageCategory+'</p>';
					html+='</div>';
				}
			html+='</li>';
			if(obj.machineItems.length!=0)
			{
				
				for(var i=0;i<obj.machineItems.length;i++)
				{
					html+='<li>';
						html+='<span class="nes_l-float nes_smallSpan">';
							html+=obj.machineItems[i].quantity;
						html+='</span>';
						html+='<span class="nes_name-quick-r nes_l-float">';
							html+=obj.machineItems[i].product.name;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.machineItems[i].totalPrice);
							if(obj.machineItems[i].isBillable==true)
								html+=obj.machineItems[i].formatedTotalPrice;
							else
								html+=f_get_txt('free');
						html+='</span>';
						if(obj.machineItems[i].isRemovable)
						{
							var class_name='nes_linkDelFromBag_diff';
							var id_value=obj.machineItems[i].product.code;
							var codePromo_value=(obj.machineItems[i].codePromotion != "undefined" && obj.machineItems[i].codePromotion != null) ? ";codePromotion:"+obj.machineItems[i].codePromotion : "";
							if(obj.machineItems[i].isNextOrderItem)
							{	
								class_name='nes_linkDelFromBagNO_diff';
								id_value=obj.machineItems[i].nextOrderId;
							}
							html+='<a href="javascript:void(0);" class="'+class_name+'" tag="id:'+id_value+codePromo_value+'" title="'+f_get_txt('delete')+' '+obj.machineItems[i].product.name+'">';
								html+='<strong class="nes_none">';
									html+='delete';
								html+='</strong>';
							html+='</a>';
						}
					html+='</li>';
				}
			}
			//////////////////////////////prix
			html+='<li class="nes_separateur_2 nes_noHover_3">';
				html+='<span class="nes_l-float">';
					html+=f_get_txt('subtotal');
				html+='</span>';
				html+='<span class="nes_r-float">';
					//html+=this.floatWithZero(obj.subTotal);
					html += obj.formatedSubTotalWithoutCurrency;
				html+='</span>';
			html+='</li>';
			if(obj.others.length!=0)
			{
				for(var i=0;i<obj.others.length;i++)
				{
					html+='<li class="nes_noHover">';
						html+='<span class="nes_l-float nes_price-subtotal">';
							html+=obj.others[i].first;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.others[i].second);
							html+=obj.others[i].third;
						html+='</span>';
					html+='</li>';
				}
			}
			html+='<li class="nes_majText  nes_noHover">';
				html+='<span class="nes_l-float">';
					html+='<strong>';
						html+=f_get_txt('total');
					html+='</strong>';
				html+='</span>';
				html+='<span class="nes_r-float">';
					html+='<strong>';
						//html+=this.floatWithZero(obj.totalPrice);
						//html+=(contextPage == "quickorder"?obj.formatedTotalPriceWithOutCurrencyQO:obj.formatedTotalPrice);
						html+=((contextPage == "quickorder"||contextPage == "quickorder-2")?obj.formatedTotalPriceWithOutCurrencyQO:obj.formatedTotalPrice);
					html+='</strong>';
				html+='</span>';
			html+='</li>';
			if((obj.machineMessages.length!=0 && obj.machineMessages[0].messageBottom!=null) || (obj.accessoryMessages.length!=0 && obj.accessoryMessages[0].messageBottom!=null) || (obj.capsuleMessages.length!=0 && obj.capsuleMessages[0].messageBottom!=null) || (obj.chocolateMessages.length!=0 && obj.chocolateMessages[0].messageBottom!=null))
			{
				var err_msg='';
				if(obj.machineMessages.length!=0)
				{	
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.machineMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.accessoryMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.accessoryMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.capsuleMessages.length!=0)
				{		
					err_msg+='<img class="nes_l-float" alt="" src="'+f_get_txt('imagePath')+'picto_warning.png"/><div>';
					err_msg+=obj.capsuleMessages[0].messageBottom;
					err_msg+='</div>';
				}
				if(obj.chocolateMessages.length!=0)
				{		
					if(err_msg!='')
						err_msg+='<br />';
					err_msg+=obj.chocolateMessages[0].messageBottom;
				}
				$('.nes_shop-bulle-top-showed > div ').html(err_msg);
			}
			
			return html;
		},
		ChocoPushDisplay:function() {
			if(!$('#popinChocolat').length > 0)
				$('body').append('<div id="popinChocolat"></div>');
			var $chocoPush = $('#popinChocolat');
			if(!$chocoPush.data('alreadyShow') && (contextPage=='quickorder' || contextPage=='quickorder-2') && !$('#nes_colMid .nes_colMid-small').hasClass('nes_quickOrderMachines') && !$('#nes_colMid .nes_colMid-small').hasClass('nes_quickOrderAccessories'))
			{
				if(typeof urlIsChocoPushDisplay != "undefined"){
					$.ajax({ 
						beforeSend: function(req) {
							req.setRequestHeader("Accept", "application/json");
						},
						//url: 'json/displayChoco.json', 
						url : urlIsChocoPushDisplay,    
						type:'POST',
						dataType:'json',
						contentType: "application/json",
						data: {t:''},
						success: function(data){
							var oData=data;
							if(oData!=null && oData.displayChocoPush==true)
							{
								var $tplSettings = {
									disallow_functions: false,
									filter_data: false,
									filter_params: false,
									runnable_functions: false,
									clone_data: false,
									clone_params: false
								};

								var _TPL_ = $.createTemplate($.tpl.pushChocolate, null, $tplSettings);
								_TPL_ = $.processTemplateToText(_TPL_, oData, {
									urlPlpChocolate : urlPlpChocolate,
									chocoPushTitle : chocoPushTitle,
									chocoTitlePlp : chocoTitlePlp
								});
								$chocoPush.html(_TPL_).show().data('alreadyShow', true);
							}
						}
					});
				}
			}
		}
	};
	
	BagControllerPM={
		url:typeof urlBagControllerPM != 'undefined' ? urlBagControllerPM : '',
		addPM:function(val, altUrl)
		{
			var self=this;
			$.ajax(
				{ 
					url: typeof altUrl != "undefined" ? altUrl : BagControllerPM.url, 
					type:'POST',
					contentType:'application/json',
					dataType:'json',
					data:val,
					beforeSend: function(req) {
						req.setRequestHeader("Accept", "application/json");
					},
					success: function(data){
						//var oData=parseJSON(data);
						var oData=data;
						if(oData!=null)
						{
							if(oData.success==true)
							{
								var giftTotal = $("ul.nes_gift_total");
								
								BagControllerPM.constructAdressList(oData.shoppingBagShippingAddressDTO.addressBook);
								BagControllerPM.addedPM(oData.shoppingBagShippingAddressDTO.shoppingBag);
								
								$("ul li.nes_majText-total").append(giftTotal);
								
								// si le remaining == 0 cacher le block dans mini bag
								if( $("#payment-gift-card").html() == 0 ){
									$("ul.nes_gift_total").hide();
								}
							}
							else
							{
								switch(oData.errorType)
								{
									case 'isNotLoggedIn':							// redirection pour effectuer un login
										$(document.body).append('<form id="BagController_genForm" method="post" action="'+oData.urlLogin+'" ><input type="hidden" value="'+window.location+'" name="spring-security-redirect"> </form> ' );
										$('#BagController_genForm').submit();
										break;
									default:						
										alert(oData.message);
										break;
								}
							}
						}
						
					}
				}
			);
		},
		constructAdressList:function(obj)
		{
			if (obj == null) return;
		
			$('div.nes_shipping-hide>div.nes_block-address').each(
				function ()
				{
					if($(this)[0].className.indexOf('nes_block-address-click') == -1)
					{
						$(this).remove();
					}	
				}
			);
			var html ='';
			
			for(var i=0;i<obj.length;i++)
			{
				html+='<div class="nes_block-address';
				if(obj[i].shoppingBagReferenceAddress)
					html+=' nes_block-address-selected';
				html+='">';
					html+='<div class="nes_block-address-2 nes_block-address-choice" style="cursor: pointer;">';
						html+='<div>';
							var check='';
							if(obj[i].shoppingBagReferenceAddress)
								check='checked="checked"';
							html+='<input type="radio" '+check+' value="'+obj[i].dtoId+'" class="nes_l-float nes_radio-shipping nes_radio-border" name="referenceAddress.dtoId" id="addressRadio'+obj[i].dtoId+'">';
							html+='<label class="nes_none" for="address-1">address</label>';
						html+='</div>';
						if(obj[i].accountReferenceAddress)
							html+='<p class="nes_default-lab">Default delivery address:</p>';
						html+='<div class="nes_address-info">';
							html+='<ul class="nes_default-add">';
								html+=obj[i].addressPattern;
							html+='</ul>';
						html+='</div>';											
					html+='</div>';
				html+='</div>';
			}
			
			$('div.nes_shipping-hide').prepend(html);
			nes_blockAddress2SetClick();
		},
		addedPM:function(obj)
		{
			var html='';
			html+='<li style="margin-bottom: -16px;">&nbsp;</li>';
			//////////////////////////////capsule
			
			if(obj.capsuleItems.length!=0)
			{
				html+='<li class="nes_majText nes_noHover ">';
					html+='<span class="nes_l-float">';
						html+=f_get_txt('capsules')+' ('+obj.totalQuantityCapsules+')';
					html+='</span>';
					html+='<span class="nes_r-float">';
						html+=obj.currency;
					html+='</span>';
				html+='</li>';
				for(var i=0;i<obj.capsuleItems.length;i++)
				{
					html+='<li>';
						html+='<span class="nes_l-float nes_smallSpan">';
							html+=obj.capsuleItems[i].quantity;
						html+='</span>';
						html+='<span class="nes_name-quick-r nes_l-float">';
							html+=obj.capsuleItems[i].product.name;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.capsuleItems[i].totalPrice);isBillable
							if(obj.capsuleItems[i].isBillable==true)
								html+=obj.capsuleItems[i].formatedTotalPrice;
							else
								html+=f_get_txt('free');
						html+='</span>';
					html+='</li>';
				}
			}
			if(obj.isChocolateSaleActivated==true)
			{
				//////////////////////////////chocolat
				
				if(obj.chocolateItems.length!=0)
				{
					html+='<li class="nes_majText nes_separateur nes_noHover_2 ">';
						html+='<span class="nes_l-float">';
							html+=f_get_txt('chocolates')+' ('+obj.totalQuantityChocolates+')';
						html+='</span>';
						html+='<span class="nes_r-float">';
							html+=obj.currency;
						html+='</span>';
					html+='</li>';
					for(var i=0;i<obj.chocolateItems.length;i++)
					{
						html+='<li>';
							html+='<span class="nes_l-float nes_smallSpan">';
								html+=obj.chocolateItems[i].quantity;
							html+='</span>';
							html+='<span class="nes_name-quick-r nes_l-float">';
								html+=obj.chocolateItems[i].product.name;
							html+='</span>';
							html+='<span class="nes_r-float">';
								//html+=this.floatWithZero(obj.chocolateItems[i].totalPrice);
								html+=obj.chocolateItems[i].formatedTotalPrice;
							html+='</span>';
						html+='</li>';
					}
				}
			}
			//////////////////////////////accessoire
			
			if(obj.accessoryItems.length!=0)
			{
				html+='<li class="nes_majText nes_separateur nes_noHover_2 ">';
					html+='<span class="nes_l-float">';
						html+=f_get_txt('accessories')+' ('+obj.totalQuantityAccessories+')';
					html+='</span>';
					html+='<span class="nes_r-float">';
						html+=obj.currency;
					html+='</span>';
				html+='</li>';
				for(var i=0;i<obj.accessoryItems.length;i++)
				{
					html+='<li>';
						html+='<span class="nes_l-float nes_smallSpan">';
							html+=obj.accessoryItems[i].quantity;
						html+='</span>';
						html+='<span class="nes_name-quick-r nes_l-float">';
							html+=obj.accessoryItems[i].product.name;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.accessoryItems[i].totalPrice);
							if(obj.accessoryItems[i].isBillable==true)
								html+=obj.accessoryItems[i].formatedTotalPrice;
							else
								html+=f_get_txt('free');
						html+='</span>';
					html+='</li>';
				}
			}
			//////////////////////////////machine
			
			if(obj.machineItems.length!=0)
			{
				html+='<li class="nes_majText nes_separateur nes_noHover_2 ">';
					html+='<span class="nes_l-float">';
						html+=f_get_txt('machines')+' ('+obj.totalQuantityMachines+')';
					html+='</span>';
					html+='<span class="nes_r-float">';
						html+=obj.currency;
					html+='</span>';
				html+='</li>';
				for(var i=0;i<obj.machineItems.length;i++)
				{
					html+='<li>';
						html+='<span class="nes_l-float nes_smallSpan">';
							html+=obj.machineItems[i].quantity;
						html+='</span>';
						html+='<span class="nes_name-quick-r nes_l-float">';
							html+=obj.machineItems[i].product.name;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.machineItems[i].totalPrice);
							if(obj.machineItems[i].isBillable==true)
								html+=obj.machineItems[i].formatedTotalPrice;
							else
								html+=f_get_txt('free');
						html+='</span>';
					html+='</li>';
				}
			}
			//////////////////////////////prix
			html+='<li class="nes_separateur_2 nes_noHover_3">';
				html+='<span class="nes_l-float">';
					if(!obj.hasEstimatedShippingCost)
						html+=f_get_txt('subtotal');
					else
						html+=f_get_txt('estimSubtotal');
						
				html+='</span>';
				html+='<span class="nes_r-float">';
					//html+=this.floatWithZero(obj.subTotal);
					html+=obj.formatedSubTotalWithoutCurrency;
				html+='</span>';
			html+='</li>';
			if(obj.others.length!=0)
			{
				for(var i=0;i<obj.others.length;i++)
				{
					html+='<li class="nes_noHover">';
						html+='<span class="nes_l-float nes_price-subtotal">';
							html+=obj.others[i].first;
						html+='</span>';
						html+='<span class="nes_r-float">';
							//html+=this.floatWithZero(obj.others[i].second);
							html+=obj.others[i].third;
						html+='</span>';
					html+='</li>';
				}
			}
			
			if(obj.usableCredit != 0.0 && obj.usableCredit != -0.0)
			{
				html+='<li class="nes_noHover">';
					html+='<span class="nes_l-float nes_price-subtotal">';
						html+=f_get_txt('yourEstimatedCredit');
					html+='</span>';
					html+='<span class="nes_r-float">';
						html+=obj.formatedUsableCredit;
					html+='</span>';
				html+='</li>';
			}
			
			html+='<li class="nes_majText  nes_noHover nes_majText-total">';
				html+='<span class="nes_l-float">';
					html+='<strong>';
					if(!obj.hasEstimatedShippingCost)
						html+=f_get_txt('total');
					else
						html+=f_get_txt('estimatedTotal');
					html+='</strong>';
				html+='</span>';
				html+='<span class="nes_r-float">';
					html+='<strong>';
						//html+=this.floatWithZero(obj.totalPrice);
						html+=(contextPage == "formRegistration"?obj.formatedTotalPriceWithoutCurrency:obj.formatedTotalPricePlusCredit);
					html+='</strong>';
				html+='</span>';
			html+='</li>';
			
			$('ul.nes_listProducts_1').html(html);
			$('.nes_price-bag').html(': '+obj.formatedTotalPricePlusCredit);
		}
	};
	
	// if(contextPage == "formRegistration")
	// {
		// $('.nes_method-shipping-bottom').find('input.nes_radio-shipping').each(function ()
		// {
			// var $this = $(this);
			// $this.click(function (){BagControllerPM.addPM($this.val());});
		// });
	// }	
	if(contextPage!='quickorder-2'){
		BagController.init();
	}
	
	$(".nes_innerBlocShoppingBag ul li").not('[class]').hover(function(){
		$(this).addClass('nes_quick_li_hover');
	},
		function(){
		$(this).removeClass('nes_quick_li_hover');
	})
});
