PageSourceSearch

https://escriba.es/modules/leofeature//js/leofeature_cart.js

js escriba.es collected 2026-10-02 07:49:27 UTC 72,248 bytes, 2,165 lines download raw bytes

1/**
2 * 2007-2017 Leotheme
3 *
4 * NOTICE OF LICENSE
5 *
6 * Leo feature for prestashop 1.7: ajax cart, review, compare, wishlist at product list 
7 *
8 * DISCLAIMER
9 *
10 *  @Module Name: Leo Feature
11 *  @author    leotheme <[email protected]>
12 *  @copyright 2007-2018 Leotheme
13 *  @license   http://leotheme.com - prestashop template provider
14 */
15$(document).ready(function(){
16	//DONGND:: check safari on window
17	var is_safari = false;
18	if (navigator.userAgent.toLowerCase().indexOf("chrome/") !== -1)
19	{
20		is_safari = false;
21	}
22	else if (navigator.userAgent.toLowerCase().indexOf("safari/") !== -1)
23	{
24		is_safari = true;
25	}
26	if (navigator.appVersion.indexOf("Win")!=-1 && is_safari)
27	{
28		$('html').addClass('safari-win');
29	}
30	//DONGND:: clone blockcart when turn off show popup
31	if (typeof show_popup != 'undefined' && !show_popup)
32	{
33		$(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart');		
34	}
35	
36	createModalAndDropdown(0, 0);
37	
38	leoSelectAttr();
39	leoBtCart();
40	
41	prestashop.on('updateProductList', function() {
42		leoSelectAttr();
43		leoBtCart();	
44	});	
45		
46	// prestashop.on('updatedCart', function (event) {
47		// console.log('aaa111');
48		// console.log($('#blockcart-modal'));
49		// $('#blockcart-modal').on('hidden.bs.modal', function (e) {
50		
51			// $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
52			// $('.leo-bt-cart.active').find('.leo-loading').hide();
53			// $('.leo-bt-cart.active').removeClass('active reset');
54		// });
55	// });
56	prestashop.on('updatedCart', function (event) {
57		// console.log(event);
58		// var scrollToElement = false;
59			
60		// console.log('bbb');
61		// console.log(event);
62		
63		if ($('.leo-dropdown-cart-item.deleting').length)
64		{
65			$('.leo-dropdown-cart-item.deleting .leo-dropdown-overlay').hide();
66			$('.leo-dropdown-cart-item.deleting .leo-dropdown-cssload-speeding-wheel').hide();
67			$('.leo-dropdown-cart-item.deleting').fadeOut(function(){
68				$('.leo-dropdown-cart-item.deleting').remove();
69				updateClassCartItem();
70			})
71			showLeoNotification('success','delete', false);
72		}
73		
74		if ($('.leo-dropdown-cart-item.updating').length)
75		{		
76			$('.leo-dropdown-cart-item.updating .leo-dropdown-overlay').hide();
77			$('.leo-dropdown-cart-item.updating .leo-dropdown-cssload-speeding-wheel').hide();
78			$('.leo-dropdown-cart-item.updating').removeClass('updating');
79			showLeoNotification('success','update', false);
80		}
81		
82		// if ($('.leo-dropdown-cart-item.deleting').length || $('.leo-dropdown-cart-item.updating').length)
83		// {
84			
85			// createModalAndDropdown(1, 1);
86		// }
87		// else
88		// {
89			// if (typeof show_popup && show_popup)
90			// {
91				//DONGND:: remove do not close dropdown-dropup when delete at page cart
92				$('.leo-dropdown-cart.dropdown').removeClass('disable-close');
93				$('.leo-dropdown-cart.dropup').removeClass('disable-close');
94				createModalAndDropdown(1, 0);			
95			// }
96			
97		// }
98			
99	});
100	// $('.blockcart.cart-preview').data('refresh-url','');
101	// $('.blockcart.cart-preview').removeAttr('refresh-url');
102	// $('.blockcart.cart-preview').wrap('<div class="leo-blockcart-wapper"></div>');
103	prestashop.on('updateCart', function (event) {
104		
105		// console.log('aaa');
106		// console.log(event);
107		//DONGND:: refresh cart if turn off show popup
108		if (typeof show_popup != 'undefined' && !show_popup)
109		{
110			//DONGND:: loading default cart
111			if ($('.leo-blockcart.cart-preview .cssload-piano').length)
112			{
113				$('.leo-blockcart.cart-preview .cssload-piano').show();
114			}
115			// console.log('test');
116			var refresh_url = $('.leo-blockcart').data('refresh-url');
117			$.ajax({
118				type: 'POST',
119				headers: {"cache-control": "no-cache"},
120				url: refresh_url,
121				async: true,
122				cache: false,										
123				success: function (resp)
124				{
125					$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
126					$(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart');
127					// createModalAndDropdown(1, 0);
128					//DONGND:: refresh at product page with cart button default
129					if (event.reason.linkAction == 'add-to-cart' && event.resp.success)
130					{
131						// console.log('test');
132						prestashop.emit('updateProduct', {
133						  reason: ''
134						});
135					}
136				},
137				error: function (XMLHttpRequest, textStatus, errorThrown) {
138					console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
139				}
140			});
141		}
142		//DONGND:: show notification if add cart success
143		if (event.reason.linkAction == 'add-to-cart' && event.resp.success)
144		{		
145			// console.log($('.leo-bt-cart.active'));		
146			
147			//DONGND:: run fly cart
148			if (typeof enable_flycart_effect != 'undefined' && enable_flycart_effect)
149			{
150				if ($('.leo-bt-cart.active').length)
151				{
152					//DONGND:: product list
153					flyCartEffect($('.leo-bt-cart.active'));
154				}
155				else if (prestashop.page.page_name == 'product' || $('.product-add-to-cart .add-to-cart').length)
156				{
157					//DONGND:: product page or quickview
158					flyCartEffect($('.product-add-to-cart .add-to-cart'));
159				}
160			}
161			
162			if ($('.leo-notification').length && typeof enable_notification != 'undefined' && enable_notification)
163			{
164				//DONGND:: show notification
165				var id_product = event.resp.id_product;
166				var product_name = false;
167				$.each(event.resp.cart.products, function(key, value){
168					// console.log(value);
169					// console.log(value.id_product);			
170					// console.log(value.name);
171					if (id_product == value.id_product)
172					{
173						product_name = value.name;
174						return false;
175					}
176				})				
177				showLeoNotification('success', 'add', product_name);				
178			}
179		}
180		
181		//DONGND:: hide cart item has been deleted from page cart
182		// if ($('.leo-dropdown-cart-item.deleting').length)
183		// {
184			// if (event.reason.idProduct)
185			// {
186				// var id_product = event.reason.idProduct;
187				// var id_product_attribute = event.reason.idProductAttribute;
188				// var id_customization = event.reason.idCustomization;
189							
190				// var object_parent = $('.leo-remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').parents('.leo-dropdown-cart-item');
191				// object_parent.find('.leo-dropdown-overlay').hide();
192				// object_parent.find('.leo-dropdown-cssload-speeding-wheel').hide();
193				// object_parent.fadeOut(function(){
194					
195					// object_parent.remove();
196					// updateClassCartItem();
197				// });
198								
199				// showLeoNotification('success','delete', false);
200			// }
201			// else
202			// {				
203				// showLeoNotification('error','delete', false);
204			// }
205		// }
206		
207		//DONGND:: update cart item has been updated from page cart
208		// if ($('.leo-dropdown-cart-item.updating').length)
209		// {		
210			// if (event.reason.success)
211			// {
212				// var id_product = event.reason.id_product;
213				// var id_product_attribute = '';
214				// if (event.reason.id_product_attribute)
215				// {
216					// id_product_attribute = event.reason.id_product_attribute;
217				// }
218				// var object_element = $('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"]');
219				// var object_parent = object_element.parents('.leo-dropdown-cart-item');
220				// if (object_parent.hasClass('updating'))
221				// {
222					// object_parent.find('.leo-dropdown-overlay').hide();
223					// object_parent.find('.leo-dropdown-cssload-speeding-wheel').hide();
224					// object_parent.removeClass('updating');
225					
226					// object_parent.find('.leo-input-product-quantity').data('product-quantity', object_parent.find('.leo-input-product-quantity').val());
227					// var id_customization = object_parent.find('.leo-input-product-quantity').data('id-customization');
228					// $('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').val(object_parent.find('.leo-input-product-quantity').val()).data('product-quantity', object_parent.find('.leo-input-product-quantity').val());
229				// }
230			
231				// showLeoNotification('success','update', false);
232			// }
233			// else
234			// {
235				// showLeoNotification('error','update', false);
236			// }
237			// $('.leo-dropdown-cart-item.updating').removeClass('updating');
238			
239		// }
240		
241		// console.log('test1');
242		if (typeof show_popup != 'undefined' && show_popup)
243		{
244			// console.log('test');
245			check_active_modal_cart = setInterval(function(){
246				
247				if ($('.leo-bt-cart.active').length && $('#blockcart-modal').length && $('#blockcart-modal').hasClass('modal fade in'))
248				{
249					
250					$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
251					$('.leo-bt-cart.active').find('.leo-loading').hide();
252					$('.leo-bt-cart.active').removeClass('active reset');
253					
254					clearInterval(check_active_modal_cart);
255				}
256				
257			}, 200);
258		}
259		
260		if (typeof show_popup != 'undefined' && !show_popup)
261		{
262			if ($('.leo-bt-cart.active').length)
263			{
264				$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
265				$('.leo-bt-cart.active').find('.leo-loading').hide();
266				$('.leo-bt-cart.active').removeClass('active reset');
267			}
268		}
269
270		// createModalAndDropdown(1, 0);	
271		//DONGND:: loading fly cart
272		if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
273		{
274			$('.leo-fly-cart .leo-fly-cart-cssload-loader').show();
275		}	
276	});
277	
278	//DONGND:: call event for fly cart slide bar
279	activeEventFlyCartSlideBar();
280	$('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon-wrapper').click(function(){
281		$('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon').trigger('click');
282	});
283	$('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon').click(function(){
284		showSlideBarCart($(this));
285		return false;
286	});
287	
288	$('.leo-fly-cart.enable-dropdown .leo-fly-cart-icon-wrapper , .leo-fly-cart.enable-dropdown .leo-fly-cart-icon').click(function(){		
289		showDropDownCart($(this), 'flycart');
290		return false;
291	});
292	
293	//DONGND:: click out to close dropdown-dropup cart
294	$(document).click(function (e) {
295		e.stopPropagation();
296		var container = $(".leo-dropdown-cart.dropdown.show");
297
298		//check if the clicked area is dropDown or not
299		if (container.length && container.has(e.target).length === 0) {
300			if (!container.hasClass('disable-close'))
301			{
302				container.removeClass('show');
303			}
304
305		}
306		var container1 = $(".leo-dropdown-cart.dropup.show");
307
308		//check if the clicked area is dropDown or not
309		if (container1.length && container1.has(e.target).length === 0) {
310			if (!container1.hasClass('disable-close'))
311			{
312				container1.removeClass('show');
313			}
314
315		}
316	})
317	
318	getOffsetFlycartIcon();
319	
320	//DONGND:: resize update scroll bar of fly cart slide bar
321	$(window).resize(function(){
322		//DONGND:: active scroll bar
323		$('.leo-dropdown-list-item').each(function(){
324			
325			//DONGND:: scroll bar for slidebar
326			if ($(this).parents('.leo-fly-cart-slidebar').length)
327			{
328				checkFlyCartScrollBar($(this));
329			}
330			//DONGND:: scroll bar for dropup/dropdown		
331			if ($(this).parents('.leo-fly-cart.type-fixed.enable-dropdown').length)
332			{
333				checkFlyCartScrollBarDropDown($(this));
334			}
335			
336		})
337		getOffsetFlycartIcon();
338	})
339});
340
341//DONGND:: event for button add cart
342function leoBtCart()
343{
344	$('.leo-bt-cart').each(function(){
345		if (!$(this).hasClass('leo-enable'))
346		{	
347			$(this).addClass('leo-enable');
348			$(this).click(function(event){
349				if ($(this).hasClass('active') || $(this).hasClass('reset') || $('.leo-bt-cart.active').length || $(this).hasClass('disabled'))
350				{
351					return false;
352				}
353				
354				$(this).find('.leo-bt-cart-content').hide();
355				$(this).find('.leo-loading').css({'display':'block'});
356				$(this).addClass('active');
357				// console.log('aaa');
358				// return false;
359				// var object_button_container = $(this).parents('.button-container');
360				var object_button_container = $(this).parents('.product-miniature');
361				if (object_button_container.find('.leo_cart_quantity').length)
362				{
363					object_button_container.find('.qty_product').val(object_button_container.find('.leo_cart_quantity').val());
364				}
365				
366				var qty_product = object_button_container.find('.qty_product').val();
367				var min_qty = object_button_container.find('.minimal_quantity').val();
368				var quantity_product = object_button_container.find('.quantity_product').val();
369				// console.log(qty_product);
370				// console.log(min_qty);
371				// console.log(quantity_product);
372				if(Math.floor(qty_product) == qty_product && $.isNumeric(qty_product) && qty_product > 0)
373				{
374					// return true;
375				}
376				else
377				{
378					$(this).addClass('reset');
379					// $(this).siblings('.qty_product').val(min_qty);
380					$('.leo-modal-cart .modal-header').addClass('warning-mess');
381					$('.leo-modal-cart .leo-warning').show();
382					$('.leo-modal-cart').modal('show');
383					return false;
384				}
385				// $('.leo-modal-cart .modal-header').addClass('block-mess');
386				// $('.leo-modal-cart .leo-block').show();
387				// $('.leo-modal-cart').modal('show');
388				if (parseInt(qty_product) < parseInt(min_qty))
389				{
390					$(this).addClass('reset');
391					$('.leo-modal-cart .modal-header').addClass('info-mess');
392					$('.leo-modal-cart .leo-info .alert-min-qty').text(min_qty);
393					$('.leo-modal-cart .leo-info').show();
394					$('.leo-modal-cart').modal('show');
395					return false;
396				}
397				
398				//DONGND:: check product out stock
399				var id_product = object_button_container.find('.id_product').val();
400				var id_product_attribute = object_button_container.find('.id_product_attribute').val();
401				var id_customization = object_button_container.find('.id_customization').val();
402				// var check_product_outstock = checkProductOutStock(id_product, id_product_attribute, qty_product);
403				// console.log(check_product_outstock);
404				// if (parseInt(qty_product) > parseInt(quantity_product))
405				// {
406					// $(this).addClass('reset');
407					// $('.leo-modal-cart .modal-header').addClass('block-mess');			
408					// $('.leo-modal-cart .leo-block').show();
409					// $('.leo-modal-cart').modal('show');
410					// return false;
411				// }
412				// return false;
413				// console.log(check_product_outstock);
414				var $element = $(this);
415				$(this).removeData('check-outstock');
416				
417				// $.when(checkProductOutStock(id_product, id_product_attribute, id_customization, qty_product, $element, true)).done(function(data){
418					checkProductOutStock(id_product, id_product_attribute, id_customization, qty_product, $element, true);
419					check_data_outstock = setInterval(function(){					
420						if (typeof $element.data('check-outstock') != 'undefined')
421						{							
422							clearInterval(check_data_outstock);
423							if (!$element.data('check-outstock'))
424							{
425								// console.log('bbbb');
426								$element.addClass('reset');
427								$('.leo-modal-cart .modal-header').addClass('block-mess');			
428								$('.leo-modal-cart .leo-block').show();
429								$('.leo-modal-cart').modal('show');
430								// return false;
431								event.preventDefault();
432								event.stopPropagation();
433								// check_product_outstock = false;
434							}
435							else
436							{
437								var $form = $element.closest('form');
438								var query = $form.serialize() + '&add=1&action=update';
439								var actionURL = $form.attr('action');
440								
441								//DONGND:: run add to cart
442								$.ajax({
443									type: 'POST',
444									headers: {"cache-control": "no-cache"},
445									url: actionURL,
446									async: true,
447									cache: false,
448									data: query,
449									dataType: 'json',
450									success: function (result)
451									{
452										if(result.success)
453										{							
454											if ($('.leo-notification').length && typeof enable_notification != 'undefined' && enable_notification)
455											{
456												//DONGND:: show notification
457												var id_product = result.id_product;
458												var product_name = false;
459												$.each(result.cart.products, function(key, value){
460													// console.log(value);
461													// console.log(value.id_product);			
462													// console.log(value.name);
463													if (id_product == value.id_product)
464													{
465														product_name = value.name;
466														return false;
467													}
468												})				
469												showLeoNotification('success', 'add', product_name);				
470											}
471											
472											//DONGND:: run fly cart
473											if (typeof enable_flycart_effect != 'undefined' && enable_flycart_effect)
474											{
475												if ($('.leo-bt-cart.active').length)
476												{
477													//DONGND:: product list
478													flyCartEffect($('.leo-bt-cart.active'));
479												}
480											}
481											
482											//DONGND:: loading fly cart
483											if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
484											{
485												$('.leo-fly-cart .leo-fly-cart-cssload-loader').show();
486											}
487											
488											//DONGND:: loading default cart
489											if ($('.leo-blockcart.cart-preview .cssload-piano').length)
490											{
491												$('.leo-blockcart.cart-preview .cssload-piano').show();
492											}
493											
494											//DONGND:: reset button add cart
495											if (typeof show_popup != 'undefined' && !show_popup)
496											{
497												if ($('.leo-bt-cart.active').length)
498												{
499													$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
500													$('.leo-bt-cart.active').find('.leo-loading').hide();
501													$('.leo-bt-cart.active').removeClass('active reset');
502												}
503												
504												//DONGND:: refresh default cart
505												var refresh_url = $('.leo-blockcart').data('refresh-url');
506												$.ajax({
507													type: 'POST',
508													headers: {"cache-control": "no-cache"},
509													url: refresh_url,
510													async: true,
511													cache: false,										
512													success: function (resp)
513													{
514														$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
515														$(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart');
516														//DONGND:: refresh default cart
517														createModalAndDropdown(1, 0);
518														
519													},
520													error: function (XMLHttpRequest, textStatus, errorThrown) {
521														console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
522													}
523												});
524											}
525																		
526											if (typeof show_popup != 'undefined' && show_popup)
527											{
528												var refreshURL = $('.blockcart').data('refresh-url');
529												var requestData = {};
530											
531												requestData = {
532													id_product_attribute: result.id_product_attribute,
533													id_product: result.id_product,
534													action: 'add-to-cart'
535												};
536												
537												$.ajax({
538													type: 'POST',
539													headers: {"cache-control": "no-cache"},
540													url: refreshURL,
541													async: true,
542													cache: false,
543													data: requestData,
544													dataType: 'json',
545													success: function (resp)
546													{
547														if ($('.leo-bt-cart.active').length)
548														{
549															$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
550															$('.leo-bt-cart.active').find('.leo-loading').hide();
551															$('.leo-bt-cart.active').removeClass('active reset');
552														}
553														
554														//DONGND:: refresh default cart
555														$('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
556														//DONGND:: show modal popup
557														if (resp.modal) {													
558															showModalPopupCart(resp.modal);
559														}
560														
561														//DONGND:: refresh dropdown cart
562														createModalAndDropdown(1, 0);	
563													},
564													error: function (XMLHttpRequest, textStatus, errorThrown) {
565														console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
566													}
567												});
568																
569											}																
570																			
571										}
572										else
573										{
574											//DONGND:: show notification
575											showLeoNotification('error','add', false);
576										}
577									},
578									error: function (XMLHttpRequest, textStatus, errorThrown) {
579										// alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
580										showLeoNotification('error','add', false);
581									}
582								});
583							}
584						}			
585					}, 10);
586					// console.log($element);
587					// console.log($element.data('check-outstock'));
588					
589				// });
590				
591				
592				return false;
593			});
594		};
595	});
596	
597	$('.leo_cart_quantity').each(function(){
598		//DONGND:: hide input quantity when cart buton does not show
599		if ($(this).parents('.product-miniature').find('.qty_product').val())
600		{
601			$(this).val($(this).parents('.product-miniature').find('.qty_product').val());
602		}
603		else
604		{
605			$(this).hide();
606		}
607	})
608	// $('.leo_cart_quantity').change(function(){
609		// console.log($(this).val());
610		// $(this).parents('.product-miniature').find('.qty_product').val($(this).val());
611	// })
612}
613
614//DONGND:: event for button add cart
615function leoSelectAttr()
616{
617	$('.leo-select-attr').click(function(e){
618		e.preventDefault();
619		var id_product = $(this).data('id-product');
620		var attr_txt = $(this).text();
621		var id_attr = $(this).data('id-attr');
622		var qty_attr = $(this).data('qty-attr');
623		var min_qty_attr = $(this).data('min-qty-attr');
624		// var parent_e = $(this).parents('.button-container');
625		var parent_e = $(this).parents('.product-miniature');
626		
627		// console.log(attr_txt);
628		if (!$(this).hasClass('selected'))
629		{
630			$(this).siblings().removeClass('selected');
631			$(this).addClass('selected');
632			parent_e.find('.dropdownListAttrButton_'+id_product).text(attr_txt);
633			if($(this).hasClass('disable'))
634			{
635				if(!parent_e.find('.leo-bt-cart_'+id_product).hasClass('disabled'))
636				{
637					parent_e.find('.leo-bt-cart_'+id_product).addClass('disabled');
638				}
639			}
640			else
641			{
642				if(parent_e.find('.leo-bt-cart_'+id_product).hasClass('disabled'))
643				{
644					parent_e.find('.leo-bt-cart_'+id_product).removeClass('disabled');
645				}
646			};
647			
648			var $product_article_e = $(this).parents('.product-miniature[data-id-product=' + id_product+']');
649			// console.log($product_article_e);
650			$product_article_e.find('.leo-bt-cart .leo-bt-cart-content').hide();
651			$product_article_e.find('.leo-bt-cart .leo-loading').css({'display':'block'});
652			$product_article_e.find('.leo-bt-cart').addClass('active');
653			
654			$.ajax({
655				type: 'POST',
656				headers: {"cache-control": "no-cache"},
657				url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(),
658				async: true,
659				cache: false,
660				data: {
661					"action": "get-attribute-data",
662					"id_product": id_product,
663					"id_product_attribute": id_attr,
664					"token": leo_token
665				},
666				success: function (result)
667				{
668					if(result != '')
669					{						
670						var obj = $.parseJSON(result);
671						// console.log($(this));
672						// console.log($('.product-miniature[data-id-product=' + id_product+']'));
673						
674						$product_article_e.find('.product-thumbnail img').attr('src', obj.product_cover.bySize.home_default.url).attr('alt', obj.product_cover.legend);
675						$product_article_e.find('.product-thumbnail').attr('href', obj.product_url);
676						$product_article_e.find('.product-price-and-shipping').empty().append(obj.price_attribute);
677						// if (typeof enable_product_label != 'undefined' && enable_product_label)
678						// {							
679							// updatePostionLabel($product_article_e);
680						// }
681					}
682					else
683					{
684						alert(add_cart_error);
685					}
686					$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
687					$('.leo-bt-cart.active').find('.leo-loading').hide();
688					$('.leo-bt-cart.active').removeClass('active reset');
689				},
690				error: function (XMLHttpRequest, textStatus, errorThrown) {
691					alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
692				}
693			});
694		}
695		
696		// $('#quantity_product_'+id_product).val(qty_attr);
697		// $('#id_product_attribute_'+id_product).val(id_attr);
698		// $('#minimal_quantity_'+id_product).val(min_qty_attr);
699		// $('#qty_product_'+id_product).val(min_qty_attr).attr('min',min_qty_attr);
700		
701		parent_e.find('.quantity_product_'+id_product).val(qty_attr);
702		parent_e.find('.id_product_attribute_'+id_product).val(id_attr);
703		parent_e.find('.minimal_quantity_'+id_product).val(min_qty_attr);
704		parent_e.find('.qty_product_'+id_product).val(min_qty_attr).data('min',min_qty_attr);
705		
706		parent_e.find('.leo_cart_quantity').val(min_qty_attr);
707		// $('#dropdownListAttrButton_'+id_product).trigger('click');
708		parent_e.find('.dropdownListAttrButton_'+id_product).trigger('click');
709		
710		// leoBtCart();
711		// return false;
712		
713	});
714	
715	// leoBtCart();
716}
717
718//DONGND:: event for module popup after add cart
719function activeEventModal()
720{
721	$('.leo-modal-cart').on('hide.bs.modal', function (e) {
722		// console.log('test');
723		$('.leo-modal-cart .modal-header').removeClass('block-mess info-mess warning-mess');
724		$('.leo-modal-cart .modal-title').hide();
725		var min_qty = $('.leo-bt-cart.reset').parents('.button-container').find('.minimal_quantity').val(); 
726		$('.leo-bt-cart.reset').parents('.button-container').find('.qty_product').val(min_qty);
727		$('.leo-bt-cart.reset').parents('.product-miniature').find('.leo_cart_quantity').val(min_qty);
728		$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
729		$('.leo-bt-cart.active').find('.leo-loading').hide();
730		$('.leo-bt-cart.active').removeClass('active reset');
731		
732	  // do something...
733	});
734	
735	// $('.leo-modal-cart').on('show.bs.modal', function (e) {
736		// $('.leo-bt-cart.active').find('.leo-bt-cart-content').show();
737		// $('.leo-bt-cart.active').find('.leo-loading').hide();
738	// })
739}
740
741//DONGND:: update position label
742function updatePostionLabel($parent)
743{
744	var FLAG_MARGIN = 10;
745      var $percent = $parent.find('.discount-percentage');
746      var $onsale =  $parent.find('.on-sale');
747      var $new = $parent.find('.new');
748      if($percent.length){
749        $new.css('top', $percent.height() * 2 + FLAG_MARGIN);
750        $percent.css('top',-$parent.find('.thumbnail-container').height() + $parent.find('.product-description').height() + FLAG_MARGIN);
751      }
752      if($onsale.length){
753        $percent.css('top', parseFloat($percent.css('top')) + $onsale.height() + FLAG_MARGIN);
754        $new.css('top', ($percent.height() * 2 + $onsale.height()) + FLAG_MARGIN * 2);
755      }
756}
757
758//DONGND:: show dropdown cart
759function showDropDownCart($element, $type)
760{
761	var object_element = '';
762	if ($type == 'defaultcart')
763	{
764		object_element = $element.siblings('.leo-dropdown-cart');
765	}
766	if ($type == 'flycart')
767	{
768		object_element = $element.parents('.leo-fly-cart').find('.leo-dropdown-cart');
769	}
770	
771	if (!object_element.hasClass('show'))
772	{
773		object_element.addClass('show');
774	}
775	else
776	{
777		object_element.removeClass('show');
778	}
779	
780}
781
782//DONGND:: show dropdown cart
783function showSlideBarCart($element)
784{
785	if (!$('.leo-fly-cart-slidebar.disable').length)
786	{
787		if (!$element.hasClass('active-slidebarcart'))
788		{
789			var type = $element.data('type');
790			var pusheffect = $element.data('pusheffect');
791			$element.addClass('active-slidebarcart');
792			
793			$('.leo-fly-cart-slidebar.'+type).addClass('active');
794			if ($('.leo-fly-cart-mask').length)
795			{
796				$('.leo-fly-cart-mask').first().addClass('active');
797				$('body').addClass('leoflycart-active-slidebar');
798			}
799			//DONGND:: update scrollbar of slidebar cart for safari win
800			if ($('html').hasClass('safari-win'))
801			{				
802				$('.leo-fly-cart-slidebar .leo-dropdown-list-item').each(function(){		
803					//DONGND:: scroll bar for slidebar
804					checkFlyCartScrollBar($(this));
805				})
806			};
807
808			if (pusheffect)
809			{
810				$('.leo-fly-cart-slidebar.'+type).addClass('push');
811				$('body').addClass('leoflycart-active-push');
812				var push_value;
813				var push_type;
814				if (type == 'slidebar_top' || type == 'slidebar_bottom')
815				{
816					push_type = "Y";
817					if (type == 'slidebar_top')
818					{
819						// push_value = $('.leo-fly-cart-slidebar.push.'+type).outerHeight()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerHeight();
820						push_value = $('.leo-fly-cart-slidebar.push.'+type).outerHeight();
821					}
822					if (type == 'slidebar_bottom')
823					{
824						// push_value = -($('.leo-fly-cart-slidebar.push.'+type).outerHeight()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerHeight());
825						push_value = -$('.leo-fly-cart-slidebar.push.'+type).outerHeight();
826					}
827
828				}
829				if (type == 'slidebar_right' || type == 'slidebar_left')
830				{
831					push_type = "X";
832					if (type == 'slidebar_left')
833					{
834						// push_value = $('.leo-fly-cart-slidebar.push.'+type).outerWidth()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerWidth();
835						push_value = $('.leo-fly-cart-slidebar.push.'+type).outerWidth();
836					}
837					if (type == 'slidebar_right')
838					{
839						// push_value = -($('.leo-fly-cart-slidebar.push.'+type).outerWidth()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerWidth());
840						push_value = -$('.leo-fly-cart-slidebar.push.'+type).outerWidth();
841					}
842
843				}
844				$('body.leoflycart-active-push main').css({
845					"-moz-transform": "translate"+push_type+"("+push_value+"px)",
846					"-webkit-transform": "translate"+push_type+"("+push_value+"px)",
847					"-o-transform": "translate"+push_type+"("+push_value+"px)",
848					"-ms-transform": "translate"+push_type+"("+push_value+"px)",
849					"transform": "translate"+push_type+"("+push_value+"px)",
850				})
851			}
852			
853		}
854		else
855		{
856			$('.leo-fly-cart-slidebar .leo-fly-cart-icon').trigger('click');
857		}
858	}
859}
860
861//DONGND:: event for dropdown cart
862function activeDropdownEvent()
863{
864	//DONGND:: active scroll bar
865	$('.leo-dropdown-list-item').each(function(){
866		// console.log($(this).parents('.leo-fly-cart-slidebar'));
867		var check_number_cartitem = 3;
868		if (typeof number_cartitem_display != 'undefined')
869		{
870			check_number_cartitem = number_cartitem_display;
871		}
872		//DONGND:: scroll bar for dropdown
873		// checkFlyCartScrollBarDropDown($(this));
874		// if (!$(this).parents('.leo-fly-cart-slidebar').length && $(this).find('.leo-dropdown-cart-item').length > check_number_cartitem)
875		// {
876		if (!$(this).parents('.leo-fly-cart-slidebar').length)
877		{			
878			// if (typeof height_cart_item != 'undefined')
879			// {
880				// $(this).addClass('active-scrollbar').css({'max-height': height_cart_item*number_cartitem_display});
881			// }
882			// else
883			// {
884				// $(this).addClass('active-scrollbar').css({'max-height': $(this).find('.leo-dropdown-cart-item').outerHeight()*check_number_cartitem});
885			// }
886			
887			
888			// $(this).mCustomScrollbar({
889				// theme:"dark",
890				// scrollInertia: 200,
891				// callbacks:{
892					// onInit:function(){
893					  
894					// }
895				// },
896				// keyboard:{
897					// enable:true,						
898				// }
899			// });
900			
901			// $(this).mCustomScrollbar('update');
902			// console.log('test');
903			checkFlyCartScrollBarDropDown($(this));
904			// if ($scrollToElement != false)
905			// {
906				// $(this).mCustomScrollbar('scrollTo',$(this).find('.mCSB_container').find('.leo-dropdown-cart-item:eq('+$scrollToElement+')'),{scrollInertia:0});
907			// }
908			
909			// $(this).scrollbar();
910		}
911		
912		//DONGND:: scroll bar for slidebar
913		if ($(this).parents('.leo-fly-cart-slidebar').length)
914		{
915			checkFlyCartScrollBar($(this));
916			
917		}
918	})
919	
920	//DONGND:: highlight dropdown cart item
921	$('.leo-remove-from-cart, .view-leo-dropdown-additional').hover(function(){
922		
923		if ($(this).hasClass('leo-remove-from-cart'))
924		{
925			$(this).parents('.leo-dropdown-cart-item').addClass('high-light');
926		}
927		
928	},function(){
929		if ($(this).hasClass('leo-remove-from-cart'))
930		{
931			$(this).parents('.leo-dropdown-cart-item').removeClass('high-light');
932		}
933	})
934	
935	//DONGND:: show additional info
936	$('.view-leo-dropdown-additional').click(function(){
937		var parent_obj = $(this).parents('.leo-dropdown-cart-item');
938		
939		var wrapper_parent_obj = $(this).parents('.leo-dropdown-list-item');
940			
941		if (!$(this).hasClass('show'))
942		{
943			if (wrapper_parent_obj.find('.leo-dropdown-cart-item.show-additional'))
944			{
945				wrapper_parent_obj.find('.leo-dropdown-cart-item.show-additional').removeClass('show-additional');
946				wrapper_parent_obj.find('.view-leo-dropdown-additional.show').removeClass('show');
947				wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){
948					$(this).remove();
949				});
950				wrapper_parent_obj.mCustomScrollbar("update");
951				
952				setTimeout(function() {
953					wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update");				
954				},500);
955			}
956			$(this).addClass('show');
957			
958			if (wrapper_parent_obj.hasClass('active-scrollbar') && parent_obj.hasClass('last'))			
959			{				
960				// if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top').length || $(this).parents('.leo-fly-cart-slidebar.
960slidebar_top').length || $(this).parents('.leo-fly-cart-slidebar.push_slidebar_bottom').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_bottom').length)
961				// {				
962					// var width_clone_obj = parent_obj.width();
963					// wrapper_parent_obj.find('.leo-dropdown-list-item').append('<li class="fake-element" style="width:'+width_clone_obj+'px"></li>');
964					// wrapper_parent_obj.mCustomScrollbar("update");
965					// wrapper_parent_obj.mCustomScrollbar("scrollTo","100%",{
966						// callbacks: parent_obj.addClass('show-additional')
967					// });
968				// }
969				// else
970				// {
971					var height_clone_obj = parent_obj.find('.leo-dropdown-additional').height();
972					wrapper_parent_obj.find('.mCSB_container').append('<p class="fake-element" style="height:'+height_clone_obj+'px"></p>');
973					wrapper_parent_obj.mCustomScrollbar("update");
974					wrapper_parent_obj.mCustomScrollbar("scrollTo","bottom",{
975						callbacks: parent_obj.addClass('show-additional')
976					});
977				// }
978	
979			} else if(wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').hasClass('active-scrollbar') && parent_obj.hasClass('last') && parent_obj.hasClass('first'))
980			{
981				wrapper_parent_obj.append('<li class="leo-dropdown-cart-item clearfix has-view-additional fake-element" style="width:'+width_cart_item+'px; height:'+height_cart_item+'px"></p>');
982				wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update");
983				wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("scrollTo","last",{
984					callbacks: parent_obj.addClass('show-additional')
985				});
986			}
987			else
988			{
989				parent_obj.addClass('show-additional');
990			}
991			//DONGND:: disable scrollbar with fly cart slide bar top
992			// if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top.active-scroll').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top.active-scroll').length)
993			// {
994				// $(this).parents('.leo-fly-cart-slidebar').find('.leo-dropdown-list-item-warpper.active-scrollbar').mCustomScrollbar("destroy");
995				// $(this).parents('.leo-fly-cart-slidebar').addClass('disable-scrollbar');
996			// }
997		}
998		else
999		{
1000			parent_obj.removeClass('show-additional');
1001			if (wrapper_parent_obj.hasClass('active-scrollbar') && parent_obj.hasClass('last'))			
1002			{			
1003				wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){
1004					$(this).remove();
1005				});
1006				wrapper_parent_obj.mCustomScrollbar("update");
1007				
1008			}
1009			else if(wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').hasClass('active-scrollbar') && parent_obj.hasClass('last') && parent_obj.hasClass('first'))
1010			{
1011				wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){
1012					$(this).remove();
1013				});
1014				parent_obj.removeClass('show-additional');
1015				$(this).removeClass('show');
1016				// wrapper_parent_obj.find('.fake-element').remove();
1017				setTimeout(function() {
1018					wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update");				
1019				},500);
1020				
1021			}
1022			parent_obj.removeClass('show-additional');
1023			$(this).removeClass('show');
1024			//DONGND:: disable scrollbar with fly cart slide bar top
1025			// if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top.active-scroll').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top.active-scroll').length)
1026			// {
1027				// if ($(this).parents('.leo-fly-cart-slidebar').hasClass('disable-scrollbar'))
1028				// {
1029					// $(this).parents('.leo-fly-cart-slidebar').removeClass('disable-scrollbar');
1030					// $(this).parents('.leo-fly-cart-slidebar').find('.leo-dropdown-list-item-warpper.active-scrollbar').mCustomScrollbar("update");
1031				// }
1032				
1033			// }
1034		}
1035		return false;
1036	})
1037	
1038	//DONGND:: remove dropdown cart item
1039	$('.leo-remove-from-cart').click(function(){
1040		var id_product = $(this).data('id-product');
1041		var id_product_attribute = $(this).data('id-product-attribute');
1042		var id_customization = $(this).data('id-customization');
1043		 
1044		var parent_obj = $(this).parents('.leo-dropdown-cart-item');
1045		
1046		parent_obj.addClass('deleting');
1047		if (parent_obj.hasClass('show-additional'))
1048		{
1049			parent_obj.find('.view-leo-dropdown-additional').trigger('click');
1050		}
1051		parent_obj.find('.leo-dropdown-overlay').show();
1052		parent_obj.find('.leo-dropdown-cssload-speeding-wheel').show();
1053		if ($('.remove-from-cart').length)
1054		{
1055			//DONGND:: do not close dropdown-dropup when delete at page cart
1056			$('.leo-dropdown-cart.dropdown').addClass('disable-close');
1057			$('.leo-dropdown-cart.dropup').addClass('disable-close');
1058			//DONGND:: page cart
1059			// console.log($('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]'));
1060			$('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').trigger('click');
1061		}
1062		else
1063		{
1064			var link_url = $(this).data('link-url');
1065			var refresh_url = $('.leo-blockcart.cart-preview').data('refresh-url');
1066			// var scrollToElement = parent_obj.index()-1;
1067			
1068			$.ajax({
1069				type: 'POST',
1070				headers: {"cache-control": "no-cache"},
1071				url: link_url,
1072				async: true,
1073				cache: false,
1074				data: {
1075					"ajax": 1,
1076					"action": "update",					
1077				},					
1078				success: function (result)
1079				{
1080					var obj = $.parseJSON(result);
1081					parent_obj.find('.leo-dropdown-overlay').hide();
1082					parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide();
1083					
1084					// console.log(obj);
1085					if(obj.success)
1086					{	
1087						parent_obj.fadeOut(function(){
1088							// if (parent_obj.hasClass('last'))
1089							// {
1090								// parent_obj.prev().addClass('last');
1091							// }
1092							// if (parent_obj.hasClass('first'))
1093							// {
1094								// parent_obj.next().addClass('first');
1095							// }
1096							parent_obj.remove();
1097							$('.leo-remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').parents('.leo-dropdown-cart-item').remove();
1098							updateClassCartItem();						
1099							
1100						});
1101						//DONGND:: show notification
1102						showLeoNotification('success','delete', false);
1103						
1104						//DONGND:: refresh cart
1105						$.ajax({
1106							type: 'POST',
1107							headers: {"cache-control": "no-cache"},
1108							url: refresh_url,
1109							async: true,
1110							cache: false,										
1111							success: function (resp)
1112							{
1113								$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));								
1114								$(".blockcart.cart-preview").addClass('leo-blockcart');	
1115								if (typeof show_popup != 'undefined' && !show_popup)
1116								{
1117									$(".blockcart.cart-preview").removeClass('blockcart')
1118								}
1119								createModalAndDropdown(1, 1);
1120								
1121							},
1122							error: function (XMLHttpRequest, textStatus, errorThrown) {
1123								console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1124							}
1125						});
1126						
1127					}
1128					else
1129					{
1130						//DONGND:: show notification
1131						showLeoNotification('error','delete', false);
1132					}
1133					
1134				},
1135				error: function (XMLHttpRequest, textStatus, errorThrown) {
1136					console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1137				}
1138			});
1139		}
1140		
1141		return false;
1142	})
1143	
1144	//DONGND:: change quantity product dropdown with input
1145	// $("body").on('focusout','.leo-input-product-quantity',function (event) {
1146		// updateQuantityProductDropDown(event.currentTarget);
1147		
1148	// });
1149	// $("body").on('keyup','.leo-input-product-quantity',function (event) {
1150		// if (event.keyCode == 13) {
1151			// updateQuantityProductDropDown(event.currentTarget);
1152		// }
1153	// });
1154	$('.leo-input-product-quantity').focusout(function(){
1155		updateQuantityProductDropDown($(this));
1156	})
1157	$('.leo-input-product-quantity').keyup(function(event){
1158		if (event.keyCode == 13) {
1159			updateQuantityProductDropDown($(this));
1160		}
1161	})
1162	
1163	// var update_quantity = false;
1164	var timer;
1165	var flag = false;
1166	
1167	//DONGND:: change quantity product dropdown with button up-down
1168	$('.leo-bt-product-quantity-down, .leo-bt-product-quantity-up').on('touchstart click', function(){
1169		if(flag == true)
1170		{
1171			flag = false;
1172			clearTimeout(timer);
1173		}
1174		flag = true;
1175		// console.log('test');
1176		var action = 'up';
1177		var input_target = $(this).parents('.leo-dropdown-cart-item').find('.leo-input-product-quantity');
1178		var input_quantity = parseInt(input_target.val());
1179		var quantity_update;
1180		if ($(this).hasClass('leo-bt-product-quantity-down'))
1181		{
1182			action = 'down';
1183		}
1184		
1185		if (action == 'up')
1186		{
1187			quantity_update = input_quantity+1;
1188		}
1189		if (action == 'down')
1190		{
1191			quantity_update = input_quantity-1;
1192		}
1193		input_target.val(quantity_update);
1194		// updateQuantityProductDropDown(input_target);
1195		// console.log(update_quantity);
1196		
1197		timer = setTimeout(
1198			function() 
1199			{
1200				flag = false;
1201				// update_quantity = true;
1202				// if (update_quantity)
1203				// {
1204					// console.log(update_quantity);
1205					updateQuantityProductDropDown(input_target);
1206				// }
1207			}, 800);
1208		
1209		return false;
1210	})
1211}
1212
1213function updateQuantityProductDropDown($element)
1214{
1215	// var $this = $(event.currentTarget);
1216	// if (obj instanceof jQuery)
1217	var $this = $element;
1218	var product_quantity = $this.data('product-quantity');
1219	var min_quantity = $this.data('min-quantity');
1220	var max_quantity = $this.data('quantity-available');
1221	var input_quantity = $this.val();
1222	// console.log(product_quantity);
1223	// console.log(input_quantity);
1224	
1225	// if (input_quantity != parseInt(input_quantity) || input_quantity < 0 || isNaN(input_quantity)) {
1226		// console.log('test');
1227		// showLeoNotification('normal','check');
1228		// $this.val(product_quantity);
1229		// return;
1230    // }
1231	
1232	//DONGND:: validate input
1233	if(Math.floor(input_quantity) == input_quantity && $.isNumeric(input_quantity) && input_quantity > 0)
1234	{
1235		// return true;
1236	}
1237	else
1238	{
1239		showLeoNotification('normal', 'check', false);
1240		$this.val(product_quantity);
1241		return;
1242	}
1243	
1244	//DONGND:: check min quantity
1245	if (parseInt(input_quantity) < parseInt(min_quantity))
1246	{
1247		showLeoNotification('warning', 'min', min_quantity);
1248		$this.val(product_quantity);
1249		return false;
1250	}
1251	
1252	//DONGND:: do not change
1253    var qty = parseInt(input_quantity) - parseInt(product_quantity);
1254	// console.log(qty);
1255	// console.log(product_quantity);
1256	
1257    if (qty == 0) {
1258      return;
1259    }
1260	
1261	//DONGND:: check stock
1262	// if (parseInt(input_quantity) > parseInt(max_quantity))
1263	// {
1264		// showLeoNotification('warning', 'max', false);
1265		// $this.val(product_quantity);
1266		// return false;
1267	// }
1268	var id_product = $this.data('id-product');
1269	var id_product_attribute = $this.data('id-product-attribute');
1270	var id_customization = $this.data('id-customization');
1271	
1272	$this.removeData('check-outstock');
1273	
1274	var check_product_outstock = true;
1275	var parent_obj = $this.parents('.leo-dropdown-cart-item');
1276				
1277	parent_obj.addClass('updating');
1278	
1279	parent_obj.find('.leo-dropdown-overlay').show();
1280	parent_obj.find('.leo-dropdown-cssload-speeding-wheel').show();
1281	// $.when(checkProductOutStock(id_product, id_product_attribute, id_customization, input_quantity, $this, false)).done(function(data){
1282		checkProductOutStock(id_product, id_product_attribute, id_customization, input_quantity, $this, false);
1283		// console.log($element);
1284		// console.log($this.data('check-outstock'));
1285		check_data_outstock = setInterval(function(){					
1286			if (typeof $element.data('check-outstock') != 'undefined')
1287			{							
1288				clearInterval(check_data_outstock);
1289				if (!$this.data('check-outstock'))
1290				{
1291					// console.log('bbbb');
1292					showLeoNotification('warning', 'max', false);
1293					$this.val(product_quantity);
1294					// console.log(event);
1295					// return false;
1296					// return;
1297					// break;
1298					// event.preventDefault();
1299					// event.stopPropagation();
1300					check_product_outstock = false;
1301					parent_obj.find('.leo-dropdown-overlay').hide();
1302					parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide();
1303					parent_obj.removeClass('updating');
1304				}
1305				if (!check_product_outstock)
1306				{
1307					return false;
1308				}
1309				
1310				if ($('.js-cart-line-product-quantity').length)
1311				{
1312					//DONGND:: page cart
1313					var e = $.Event("keyup");
1314					e.keyCode = 13; // # Some key code value
1315					// console.log($('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]'));
1316					$('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').parents('.cart-item').find('.js-cart-line-product-quantity').val(input_quantity).trigger(e);	
1317				}
1318				else
1319				{				
1320					var link_url = $this.data('update-url');
1321					var refresh_url = $('.leo-blockcart.cart-preview').data('refresh-url');
1322					var op = '';
1323					if (qty > 0)
1324					{
1325						op = 'up';
1326					}
1327					else
1328					{
1329						op = 'down';
1330					}
1331					// var scrollToElement = parent_obj.index()-1;
1332					
1333					$.ajax({
1334						type: 'POST',
1335						headers: {"cache-control": "no-cache"},
1336						url: link_url,
1337						async: true,
1338						cache: false,
1339						data: {
1340							"ajax": 1,
1341							"action": "update",	
1342							"qty": Math.abs(qty),
1343							"op": op,			
1344						},					
1345						success: function (result)
1346						{
1347							var obj = $.parseJSON(result);
1348							parent_obj.find('.leo-dropdown-overlay').hide();
1349							parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide();
1350							parent_obj.removeClass('updating');
1351							
1352							// console.log(obj);
1353							if(obj.success)
1354							{							
1355								// $this.data('product-quantity', input_quantity);
1356								$('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').val(input_quantity).data('product-quantity', input_quantity);				
1357								//DONGND:: show notification
1358								showLeoNotification('success','update', false);
1359								
1360								//DONGND:: refresh cart
1361								$.ajax({
1362									type: 'POST',
1363									headers: {"cache-control": "no-cache"},
1364									url: refresh_url,
1365									async: true,
1366									cache: false,										
1367									success: function (resp)
1368									{
1369										$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
1370										$(".blockcart.cart-preview").addClass('leo-blockcart');
1371										if (typeof show_popup != 'undefined' && !show_popup)
1372										{
1373											$(".blockcart.cart-preview").removeClass('blockcart')
1374										}
1375										createModalAndDropdown(1, 1);
1376										
1377									},
1378									error: function (XMLHttpRequest, textStatus, errorThrown) {
1379										console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1380									}
1381								});
1382								
1383							}
1384							else
1385							{
1386								//DONGND:: show notification
1387								showLeoNotification('error','update', false);
1388							}
1389							
1390						},
1391						error: function (XMLHttpRequest, textStatus, errorThrown) {
1392							console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1393						}
1394					});
1395				}
1396			}
1397		}, 10);
1398		
1399	// });
1400	
1401}
1402
1403function createModalAndDropdown($only_dropdown, $only_total)
1404{
1405
1406	//DONGD:: add loading
1407	// $('.blockcart.cart-preview .header').append('<span class="leo-dropdown-cssload-speeding-wheel"></span>');
1408	// $('.blockcart.cart-preview .leo-dropdown-cssload-speeding-wheel').css({'display':'inline-block'});
1409	// console.log(enable_dropdown_defaultcart);
1410	if (typeof enable_dropdown_defaultcart != 'undefined')
1411	{
1412		// console.log(enable_dropdown_defaultcart);
1413		if (enable_dropdown_defaultcart)
1414		{
1415			if ($('.blockcart.cart-preview').length)
1416			{
1417				$('.blockcart.cart-preview').addClass('leo-blockcart show-leo-loading').append('<div class="cssload-piano"><div class="cssload-rect1"></div><div class="cssload-rect2"></div><div class="cssload-rect3"></div></div>');
1418			}
1419			else
1420			{
1421				$('.leo-blockcart.cart-preview').addClass('show-leo-loading').append('<div class="cssload-piano"><div class="cssload-rect1"></div><div class="cssload-rect2"></div><div class="cssload-rect3"></div></div>');
1422			}
1423			
1424			$('.leo-blockcart.cart-preview .cssload-piano').show();
1425			// $('.blockcart.cart-preview a').attr('href', 'javascript:void(0)');
1426			// $('.blockcart.cart-preview').addClass('dropdown-toggle').data('toggle','dropdown').attr('aria-haspopup','true').attr('aria-expanded','false').attr('id','dropdownCartNormal');
1427			// $('.blockcart.cart-preview').parent().addClass('dropdown');
1428			$('.leo-blockcart.cart-preview.show-leo-loading').data('type',type_dropdown_defaultcart);
1429			// if (typeof enable_dropdown_defaultcart != 'undefined')
1430			// {
1431				// $('.leo-blockcart.cart-preview.show-leo-loading').data('pusheffect', enable_pusheffect_defaultcart);
1432			// }
1433			//DONGND:: action dropdown	
1434			if (typeof type_dropdown_defaultcart != 'undefined')
1435			{
1436				if (type_dropdown_defaultcart == 'dropdown' || type_dropdown_defaultcart == 'dropup')
1437				{
1438					$('.leo-blockcart.cart-preview.show-leo-loading').click(function(){
1439						// console.log('test');
1440						showDropDownCart($(this), 'defaultcart');
1441						return false;
1442					})
1443				}
1444				if (type_dropdown_defaultcart == 'slidebar_left' || type_dropdown_defaultcart == 'slidebar_right' || type_dropdown_defaultcart == 'slidebar_top' || type_dropdown_defaultcart == 'slidebar_bottom')
1445				{
1446					$('.leo-blockcart.cart-preview.show-leo-loading').click(function(){
1447						showSlideBarCart($(this));
1448						return false;
1449					})
1450				}
1451			}
1452		}
1453		else
1454		{
1455			// console.log('test');
1456			$('.blockcart.cart-preview').addClass('leo-blockcart');
1457		}
1458	}
1459	
1460	//DONGND:: loading fly cart
1461	if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
1462	{
1463		$('.leo-fly-cart .leo-fly-cart-cssload-loader').show();
1464	}
1465	$.ajax({
1466		type: 'POST',
1467		headers: {"cache-control": "no-cache"},
1468		url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(),
1469		async: true,
1470		cache: false,
1471		data: {
1472			"action": "render-modal",
1473			"only_dropdown": $only_dropdown,
1474			"only_total": $only_total,
1475			"token": leo_token
1476		},
1477		success: function (result)
1478		{
1479			if (result != '')
1480			{
1481				// $('.blockcart.cart-preview .leo-dropdown-cssload-speeding-wheel').hide();
1482				$('.leo-blockcart.cart-preview .cssload-piano').hide();
1483				if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
1484				{
1485					$('.leo-fly-cart .leo-fly-cart-cssload-loader').hide();
1486				}
1487				if(result.dropdown != '')
1488				{
1489					if ($('.leo-fly-cart-slidebar.disable').length)
1490					{
1491						$('.leo-fly-cart-slidebar').removeClass('disable');
1492					}
1493					if (!$('.leo-dropdown-cart').length)
1494					{
1495						if (typeof type_dropdown_defaultcart != 'undefined' && (type_dropdown_defaultcart == 'dropdown' || type_dropdown_defaultcart == 'dropup'))
1496						{
1497							$('.leo-blockcart.cart-preview.show-leo-loading').after('<div class="leo-dropdown-cart defaultcart '+type_dropdown_defaultcart+'"></div>');
1498						}				
1499						
1500						//DONGND:: add dropdown to flycart
1501						if ($('.leo-fly-cart.enable-dropdown').length)
1502						{
1503							$('.leo-fly-cart.enable-dropdown').append('<div class="leo-dropdown-cart flycart '+$('.leo-fly-cart.enable-dropdown').data('type')+'"></div>');
1504						}
1505						
1506						//DONGND:: add dropdown to flycart slide bar
1507						if ($('.leo-fly-cart-slidebar').length)
1508						{
1509							
1510							$('.leo-fly-cart-slidebar').append('<div class="leo-dropdown-cart"></div>');
1511						}
1512					}
1513					else
1514					{
1515						$('.leo-dropdown-cart').addClass('update');
1516					}
1517					
1518					if ($('.leo-dropdown-cart-content').length)
1519					{
1520						// console.log('test');
1521						// $('.leo-dropdown-cart-content').remove();
1522						// $('.leo-dropdown-cart-content').replaceWith(result.dropdown);
1523						
1524						if ($only_total == 1)
1525						{
1526							$('.leo-dropdown-cart-content .leo-dropdown-total').replaceWith(result.dropdown);
1527							var check_number_cartitem = 3;
1528							if (typeof number_cartitem_display != 'undefined')
1529							{
1530								check_number_cartitem = number_cartitem_display;
1531							}
1532							//DONGND:: turn off scroll bar
1533							$('.leo-dropdown-list-item').each(function(){
1534								// if (!$(this).parents('.leo-fly-cart-slidebar').length && $(this).find('.leo-dropdown-cart-item').length <= check_number_cartitem && $(this).hasClass('active-scrollbar'))
1535								// {
1536								if (!$(this).parents('.leo-fly-cart-slidebar').length)
1537								{
1538									// $(this).removeClass("active-scrollbar").css({'max-height': 'none'});
1539									// $(this).mCustomScrollbar("destroy");
1540									// $(this).mCustomScrollbar("disable",true);
1541									checkFlyCartScrollBarDropDown($(this));
1542								}
1543								//DONGND:: scroll bar for slidebar
1544								if ($(this).parents('.leo-fly-cart-slidebar').length && $(this).parents('.leo-fly-cart-slidebar').find('.active-scrollbar'))
1545								{
1546									// console.log('test');
1547									checkFlyCartScrollBar($(this));
1548								}
1549							})						
1550						}
1551						else
1552						{
1553							$('.leo-dropdown-cart-content').replaceWith(result.dropdown);
1554							activeDropdownEvent();
1555						}
1556						
1557					}
1558					else
1559					{
1560						// console.log('test1');
1561						$('.leo-dropdown-cart').append(result.dropdown);
1562						activeDropdownEvent();
1563					}
1564					
1565					
1566				}
1567				else
1568				{
1569					//DONGND:: clear cart
1570					if ($('.leo-dropdown-cart').length)
1571					{
1572						$('.leo-dropdown-cart').remove();
1573					}
1574					$('.leo-fly-cart-slidebar').addClass('disable');
1575					if ($('.leo-fly-cart-slidebar.active').length)
1576					{
1577						$('.leo-fly-cart-slidebar.active').find('.leo-fly-cart-icon').trigger('click');
1578					}
1579				}
1580				
1581				//DONGND:: create modal popup
1582				if(result.modal != '')
1583				{						
1584					$('body').append(result.modal);
1585					activeEventModal();
1586				}
1587				//DONGND:: create notification
1588				if(result.notification != '')
1589				{						
1590					$('body').append(result.notification);								
1591				}
1592				
1593				//DONGND:: update cart total for fly cart
1594				if ($('.leo-fly-cart-total').length)
1595				{
1596					if ($('.leo-dropdown-total').length)
1597					{
1598						$('.leo-fly-cart-total').text($('.leo-dropdown-total').data('cart-total'));
1599					}
1600					else
1601					{
1602						$('.leo-fly-cart-total').text("0");
1603					}
1604						
1605				}
1606			}
1607			else
1608			{
1609				alert(add_cart_error);
1610			}
1611						
1612		},
1613		error: function (XMLHttpRequest, textStatus, errorThrown) {
1614			console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1615			// alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1616		}
1617	});
1618}
1619
1620//DONGND:: event for notification
1621function activeEventNotification()
1622{
1623	$(".leo-notification .notification").click(function(){
1624		$(this).removeClass('show').addClass("closed").parent().addClass('disable');
1625		// var obj = $(this);
1626		// setTimeout(
1627		  // function() 
1628		  // {
1629			// obj.parent().addClass('disable');
1630		  // }, 700);
1631		// if (!$(".leo-notification .notification.show").length)
1632		// {
1633			// setTimeout(
1634			  // function() 
1635			  // {
1636				// $(".leo-notification").removeClass('active');
1637			  // }, 700);
1638			
1639		// }
1640	})
1641}
1642
1643function showLeoNotification($status, $action, $special_parameter)
1644{
1645	if (!$('.leo-notification').hasClass('active'))
1646	{
1647		$('.leo-notification').addClass('active');
1648	}
1649	var clone_obj = '';
1650	
1651	clone_obj = $('.leo-temp-'+$status+'>div').clone();
1652	clone_obj.find('.noti-'+$action).addClass('active');
1653	if ($special_parameter && $special_parameter != '')
1654	{
1655		clone_obj.find('.noti-'+$action).find('.noti-special').text($special_parameter);
1656	}
1657	// clone_obj.height(clone_obj.find('.notification').height());
1658	// clone_obj.find('.notification').addClass('show');
1659	$('.leo-notification').append(clone_obj);
1660	setTimeout(
1661		  function() 
1662		  {
1663			// $('.leo-notification .notification').last().addClass('show');
1664			clone_obj.find('.notification').addClass('show');
1665			// var height_wrapper = $('.leo-notification .notification').last().height();
1666			// $('.leo-notification .notification-wrapper').last().height(height_wrapper);
1667		  }, 100);
1668	
1669	activeEventNotification();
1670	setTimeout(
1671		  function() 
1672		  {
1673			// clone_obj.find('.notification').trigger('click');
1674			clone_obj.find('.notification').removeClass('show').addClass("closed").parent().addClass('disable');
1675		  }, 5000);
1676}
1677
1678//DONGND:: check product out stock
1679function checkProductOutStock($id_product, $id_product_attribute, $id_customization, $quantity, $element, $check_product_in_cart)
1680{
1681	// console.log($element);
1682	// return $.ajax({
1683	$.ajax({
1684		type: 'POST',
1685		headers: {"cache-control": "no-cache"},
1686		url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(),
1687		async: true,
1688		cache: false,
1689		data: {
1690			"action": "check-product-outstock",
1691			"id_product": $id_product,
1692			"id_product_attribute": $id_product_attribute,
1693			"id_customization": $id_customization,
1694			"quantity": $quantity,
1695			"check_product_in_cart": $check_product_in_cart,
1696			"token": leo_token
1697		},
1698		success: function (result)
1699		{
1700			if (result != '')
1701			{
1702				var obj = $.parseJSON(result);
1703				// console.log('bbb');
1704				// console.log(obj.success);
1705				
1706				$element.data('check-outstock', obj.success)
1707				// console.log($element.data('check-outstock'));
1708			}
1709			else
1710			{
1711				alert(add_cart_error);
1712			}
1713			
1714		},
1715		error: function (XMLHttpRequest, textStatus, errorThrown) {
1716			console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1717			// alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
1718		}
1719	});
1720}
1721
1722//DONGND:: update class first last of cart item
1723function updateClassCartItem()
1724{
1725	$('.leo-dropdown-list-item').each(function(){
1726		$(this).find('.leo-dropdown-cart-item').first().addClass('first');
1727		$(this).find('.leo-dropdown-cart-item').last().addClass('last');
1728	})
1729}
1730
1731//DONGND:: create fly cart effect
1732function flyCartEffect($element)
1733{
1734	if ($element.hasClass('leo-bt-cart'))
1735	{
1736		var parent_e = $element.parents('.product-miniature');
1737		var product_img = parent_e.find('.product-thumbnail').find("img").eq(0);
1738	}
1739	else
1740	{
1741		var product_img = '';
1742		if ($('.quickview .product-cover').length)
1743		{
1744			//DONGND:: quickview in produc page
1745			product_img = $('.quickview .product-cover').find("img").eq(0);
1746		}
1747		else
1748		{
1749			//DONGND:: product page
1750			product_img = $('.product-cover').find("img").eq(0);
1751		}	
1752	}
1753	if (typeof product_img != 'undefined' && product_img.length)
1754	{		
1755		var obj_element = '';
1756		if ($('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length)
1757		{
1758			obj_element = $('.leo-fly-cart-slidebar.active .leo-fly-cart-icon');
1759		}
1760		else if ($('.leo-fly-cart.solo .leo-fly-cart-icon').length)
1761		{
1762			obj_element = $('.leo-fly-cart.solo .leo-fly-cart-icon');
1763		}
1764		else if ($('.leo-blockcart.cart-preview').length)
1765		{
1766			obj_element = $('.leo-blockcart.cart-preview');
1767		}
1768		else if ($('.blockcart.cart-preview').length)
1769		{
1770			obj_element = $('.blockcart.cart-preview');
1771		}
1772		$('body').addClass('enable-leo-fly-cart');
1773		var divider = 4;
1774		var flyerClone = product_img.clone();
1775		
1776		var clone_offset_top = product_img.offset().top;
1777		var clone_offset_left = product_img.offset().left;
1778		//DONGND:: update for body boxed
1779		if ($('body').offset().left != 0)
1780		{
1781			clone_offset_left = clone_offset_left - $('body').offset().left;
1782		}
1783		flyerClone.css({position: 'absolute', top: clone_offset_top + "px", left: clone_offset_left + "px", opacity: 1, 'z-index': 1000, width: product_img.width(), height: product_img.height()});
1784		
1785		$('body').append(flyerClone);
1786		var gotoX = obj_element.offset().left + (obj_element.width() / 2) - (product_img.width()/divider)/2;
1787		//DONGND:: update for body boxed
1788		if ($('body').offset().left != 0)
1789		{
1790			gotoX = gotoX - $('body').offset().left;
1791		}
1792		if ($('html').hasClass('safari-win') && $('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length)
1793		{
1794			//DONGND:: update position of fly cart icon on slidebar cart for safari win
1795			var gotoY = $(window).scrollTop()+obj_element.offset().top + (obj_element.height() / 2) - (product_img.height()/divider)/2;
1796		}
1797		else
1798		{
1799			var gotoY = obj_element.offset().top + (obj_element.height() / 2) - (product_img.height()/divider)/2;
1800		}
1801		 
1802		flyerClone.animate({
1803			opacity: 0.4,
1804			left: gotoX,
1805			top: gotoY,
1806			width: product_img.width()/divider,
1807			height: product_img.height()/divider
1808		}, 1000,
1809		function () {		
1810			flyerClone.fadeOut('fast', function () {
1811				flyerClone.remove();
1812				$('body').removeClass('enable-leo-fly-cart');
1813			});
1814			if (typeof type_flycart_effect != 'undefined')
1815			{
1816				if (type_flycart_effect == 'shake')
1817				{
1818					obj_element.parents('.leo-fly-cart').find('.leo-fly-cart-total').css({'opacity':0});
1819					setTimeout(function () {
1820						obj_element.effect("shake", {
1821							times: 2
1822						}, 200, function(){
1823							obj_element.parents('.leo-fly-cart').find('.leo-fly-cart-total').css({'opacity':1});
1824						});
1825					}, 500);
1826				}
1827				if (type_flycart_effect == 'fade')
1828				{
1829					obj_element.fadeOut('fast', function () {
1830						obj_element.fadeIn('fast', function () {
1831						});
1832					});
1833				}
1834			}
1835			// obj_element.fadeOut('fast', function () {
1836				// obj_element.fadeIn('fast', function () {
1837					// flyerClone.fadeOut('fast', function () {
1838						// flyerClone.remove();
1839					// });
1840				// });
1841			// });
1842		});
1843		
1844		// var divider = 1;
1845		// var imgclone = product_img.clone()
1846                // .offset({
1847                // top: product_img.offset().top,
1848                // left: product_img.offset().left
1849            // })
1850                // .css({
1851                // 'opacity': '0.5',
1852                    // 'position': 'absolute',
1853                    // 'height': product_img.width()/divider,
1854                    // 'width': product_img.height()/divider,
1855                    // 'z-index': '100'
1856            // })
1857                // .appendTo($('body'))
1858                // .animate({
1859                // 'top': obj_element.offset().top + 10,
1860                    // 'left': obj_element.offset().left + 10,
1861                    // 'width': product_img.width()/divider/2,
1862                    // 'height': product_img.height()/divider/2
1863            // }, 1000, 'easeInOutExpo');
1864            
1865		// setTimeout(function () {
1866			// obj_element.effect("shake", {
1867				// times: 2
1868			// }, 200);
1869		// }, 1500);
1870
1871		// imgclone.animate({
1872			// 'width': 0,
1873				// 'height': 0
1874		// }, function () {
1875			// $(this).detach()
1876		// });
1877	}
1878}
1879
1880//DONGND:: event for fly cart slidebar
1881function activeEventFlyCartSlideBar()
1882{
1883	$('.leo-fly-cart-mask, .leo-fly-cart-slidebar .leo-fly-cart-icon, .leo-fly-cart-slidebar .leo-fly-cart-icon-wrapper').click(function(){
1884		// console.log('test');
1885		$('.leo-fly-cart-mask.active').removeClass('active');
1886		$('.leo-fly-cart-icon.active-slidebarcart').removeClass('active-slidebarcart');
1887		$('.leo-blockcart.cart-preview.active-slidebarcart').removeClass('active-slidebarcart');
1888		$('body.leoflycart-active-push main').css({
1889			"-moz-transform": "translateX(0px)",
1890			"-webkit-transform": "translateX(0px)",
1891			"-o-transform": "translateX(0px)",
1892			"-ms-transform": "translateX(0px)",
1893			"transform": "translateX(0px)",
1894			"-moz-transform": "translateY(0px)",
1895			"-webkit-transform": "translateY(0px)",
1896			"-o-transform": "translateY(0px)",
1897			"-ms-transform": "translateY(0px)",
1898			"transform": "translateY(0px)",
1899		});
1900		setTimeout(function(){
1901			$('body').removeClass('leoflycart-active-slidebar leoflycart-active-push');
1902		},300);
1903			
1904		$('.leo-fly-cart-slidebar.active').removeClass('active');
1905	});
1906	
1907	$(document).keyup(function(e) {
1908		//DONGND:: press esc
1909		if (e.keyCode == 27) { 
1910			if ($('.leo-fly-cart-mask').hasClass('active'))
1911			{
1912				$('.leo-fly-cart-mask.active').trigger('click');
1913			}
1914			else if ($('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length)
1915			{
1916				$('.leo-fly-cart-slidebar .leo-fly-cart-icon').trigger('click');
1917			}
1918		}
1919	});
1920}
1921
1922//DONGND:: update scroll bar for slidebar cart
1923function checkFlyCartScrollBar($element)
1924{
1925	var object_parent = $element.parents('.leo-fly-cart-slidebar');
1926	if (object_parent.hasClass('slidebar_top') || object_parent.hasClass('slidebar_bottom'))
1927	{
1928		// console.log('test');
1929		var width_bottom = object_parent.find('.leo-dropdown-bottom').outerWidth();
1930		var window_width = $(window).width();		
1931		var element_width = '';
1932		if (typeof width_cart_item != 'undefined')
1933		{
1934			element_width = $element.find('.leo-dropdown-cart-item').length * width_cart_item;
1935		}
1936		else
1937		{
1938			element_width = $element.find('.leo-dropdown-cart-item').length * $element.find('.leo-dropdown-cart-item').outerWidth();
1939		}
1940		// console.log(width_bottom);	
1941		// console.log(element_width);
1942		// console.log(window_width);
1943		if (element_width+width_bottom > window_width)
1944		{
1945			object_parent.addClass('active-scroll');
1946			object_parent.find('.leo-dropdown-list-item-warpper').addClass('active-scrollbar');
1947			object_parent.find('.leo-dropdown-list-item-warpper').css({'width': window_width-width_bottom});
1948			object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar({
1949				theme:"dark",
1950				axis: "x",
1951				scrollInertia: 200,
1952				callbacks:{
1953					onInit:function(){
1954					  
1955					}
1956				},
1957				advanced:{
1958					autoExpandHorizontalScroll:true
1959				},
1960				keyboard:{
1961					enable:true,
1962					// scrollType:"stepless",
1963					// scrollAmount:"auto"
1964				}
1965			});
1966			object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar('update');
1967		}
1968		else
1969		{
1970			object_parent.removeClass('active-scroll');
1971			object_parent.find('.leo-dropdown-list-item-warpper').removeClass("active-scrollbar").css({'width': 'auto'});
1972			object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar("destroy");
1973		}
1974	}
1975	
1976	if (object_parent.hasClass('slidebar_left') || object_parent.hasClass('slidebar_right'))
1977	{
1978		var height_bottom = object_parent.find('.leo-dropdown-bottom').outerHeight();
1979		var window_height = $(window).height();		
1980		var element_height = '';
1981		if (typeof height_cart_item != 'undefined')
1982		{
1983			element_height = $element.find('.leo-dropdown-cart-item').length * height_cart_item;
1984		}
1985		else
1986		{
1987			element_height = $element.find('.leo-dropdown-cart-item').length * $element.find('.leo-dropdown-cart-item').outerHeight();
1988		}
1989		if (element_height+height_bottom > window_height)
1990		{		
1991			object_parent.addClass('active-scroll');
1992			$element.addClass('active-scrollbar');
1993			$element.css({'max-height': window_height-height_bottom});
1994			$element.mCustomScrollbar({
1995				theme:"dark",
1996				scrollInertia: 200,
1997				callbacks:{
1998					onInit:function(){
1999					  
2000					}
2001				},
2002				keyboard:{
2003					enable:true,
2004					// scrollType:"stepless",
2005					// scrollAmount:"auto"
2006				}
2007
2008			});
2009			$element.mCustomScrollbar('update');
2010		}
2011		else
2012		{		
2013			object_parent.removeClass('active-scroll');
2014			$element.removeClass("active-scrollbar").css({'max-height': 'none'});
2015			$element.mCustomScrollbar("destroy");
2016		}
2017	}
2018	
2019}
2020
2021//DONGND:: update scroll bar for dropdown/dropup
2022function checkFlyCartScrollBarDropDown($element)
2023{
2024	var object_parent = $element.parents('.leo-fly-cart.type-fixed.enable-dropdown');
2025	var type = object_parent.data('type');
2026	var height_bottom = object_parent.find('.leo-dropdown-bottom').outerHeight();
2027	
2028	var height_real = height_cart_item*$element.find('.leo-dropdown-cart-item').length;
2029	var height_icon = object_parent.find('.leo-fly-cart-icon-wrapper').outerHeight();
2030	var window_height = $(window).height();
2031	var check_number_cartitem = 3;
2032	if (typeof number_cartitem_display != 'undefined')
2033	{
2034		check_number_cartitem = number_cartitem_display;
2035	}
2036	var height_default = height_cart_item*number_cartitem_display;
2037	
2038	if (object_parent.length > 0 && type == 'dropup' && height_real+height_bottom > object_parent.position().top && height_default+height_bottom > object_parent.position().top)
2039	{
2040		// console.log('test0');
2041		$element.addClass('active-scrollbar').css({'max-height': object_parent.position().top-height_icon-height_bottom});
2042		$element.mCustomScrollbar({
2043			theme:"dark",
2044			scrollInertia: 200,
2045			callbacks:{
2046				onInit:function(){
2047				  
2048				}
2049			},
2050			keyboard:{
2051				enable:true,					
2052			}
2053
2054		});
2055		$element.mCustomScrollbar('update');
2056	}
2057	else if (object_parent.length > 0 && type == 'dropdown' && height_real+height_bottom > $(window).height()-object_parent.position().top && height_default+height_bottom > $(window).height()-object_parent.position().top)
2058	{
2059		// console.log('test1');
2060		$element.addClass('active-scrollbar').css({'max-height': $(window).height()-object_parent.position().top-height_icon-height_bottom});
2061		$element.mCustomScrollbar({
2062			theme:"dark",
2063			scrollInertia: 200,
2064			callbacks:{
2065				onInit:function(){
2066				  
2067				}
2068			},
2069			keyboard:{
2070				enable:true,					
2071			}
2072
2073		});
2074		$element.mCustomScrollbar('update');
2075	}
2076	else if ($element.find('.leo-dropdown-cart-item').length > check_number_cartitem)
2077	{
2078		// console.log('test2');
2079		// console.log($(this).find('.leo-dropdown-cart-item').innerHeight());
2080		if (typeof height_cart_item != 'undefined')
2081		{
2082			$element.addClass('active-scrollbar').css({'max-height': height_cart_item*number_cartitem_display});
2083		}
2084		else
2085		{
2086			$element.addClass('active-scrollbar').css({'max-height': $element.find('.leo-dropdown-cart-item').outerHeight()*check_number_cartitem});
2087		}
2088		
2089		$element.mCustomScrollbar({
2090			theme:"dark",
2091			scrollInertia: 200,
2092			callbacks:{
2093				onInit:function(){
2094				  
2095				}
2096			},
2097			keyboard:{
2098				enable:true,
2099				// scrollType:"stepless",
2100				// scrollAmount:"auto"					
2101			}
2102		});
2103		// $(this).mCustomScrollbar('update');
2104		
2105		// if ($scrollToElement != false)
2106		// {
2107			// $(this).mCustomScrollbar('scrollTo',$(this).find('.mCSB_container').find('.leo-dropdown-cart-item:eq('+$scrollToElement+')'),{scrollInertia:0});
2108		// }
2109		
2110		// $(this).scrollbar();
2111	}
2112	else
2113	{
2114		// console.log('test3');
2115		// object_parent.removeClass('active-scroll');
2116		$element.removeClass("active-scrollbar").css({'max-height': 'none'});
2117		$element.mCustomScrollbar("destroy");
2118	}
2119}
2120
2121//DONGND:: set class by position of fly cart icon
2122function getOffsetFlycartIcon()
2123{
2124	if ($('.leo-fly-cart.solo .leo-fly-cart-icon').length)
2125	{
2126		var offset_top = $('.leo-fly-cart.solo .leo-fly-cart-icon').offset().top;
2127		var offset_left = $('.leo-fly-cart.solo .leo-fly-cart-icon').offset().left;
2128		var window_width = $(window).width();
2129		
2130		if (offset_left <= window_width/2)
2131		{
2132			$('.leo-fly-cart.solo').removeClass('offset-right').addClass('offset-left');
2133		}
2134		else
2135		{
2136			$('.leo-fly-cart.solo').removeClass('offset-left').addClass('offset-right');
2137		}
2138		
2139		//DONGND:: update rtl
2140		if (lf_is_gen_rtl
2140 && prestashop.language.is_rtl == 1)
2141		{			
2142			if ($('.leo-fly-cart.solo').hasClass('offset-right'))
2143			{
2144				$('.leo-fly-cart.solo').removeClass('offset-right').addClass('offset-left');
2145			}
2146			else if ($('.leo-fly-cart.solo').hasClass('offset-left'))
2147			{
2148				$('.leo-fly-cart.solo').removeClass('offset-left').addClass('offset-right');
2149			}
2150		}
2151	}
2152}
2153
2154//DONGND:: show modal popup cart
2155function showModalPopupCart(modal)
2156{
2157	if ($('#blockcart-modal').length)
2158	{
2159		$('#blockcart-modal').remove();
2160	}
2161	
2162	$('body').append(modal);
2163	
2164	$('#blockcart-modal').modal('show');	
2165}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.