/**
* 2007-2017 Leotheme
*
* NOTICE OF LICENSE
*
* Leo feature for prestashop 1.7: ajax cart, review, compare, wishlist at product list
*
* DISCLAIMER
*
* @Module Name: Leo Feature
* @author leotheme
* @copyright 2007-2018 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
$(document).ready(function(){
//DONGND:: check safari on window
var is_safari = false;
if (navigator.userAgent.toLowerCase().indexOf("chrome/") !== -1)
{
is_safari = false;
}
else if (navigator.userAgent.toLowerCase().indexOf("safari/") !== -1)
{
is_safari = true;
}
if (navigator.appVersion.indexOf("Win")!=-1 && is_safari)
{
$('html').addClass('safari-win');
}
//DONGND:: clone blockcart when turn off show popup
if (typeof show_popup != 'undefined' && !show_popup)
{
$(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart');
}
createModalAndDropdown(0, 0);
leoSelectAttr();
leoBtCart();
prestashop.on('updateProductList', function() {
leoSelectAttr();
leoBtCart();
});
// prestashop.on('updatedCart', function (event) {
// console.log('aaa111');
// console.log($('#blockcart-modal'));
// $('#blockcart-modal').on('hidden.bs.modal', function (e) {
// $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
// $('.leo-bt-cart.active').find('.leo-loading').hide();
// $('.leo-bt-cart.active').removeClass('active reset');
// });
// });
// $('.blockcart.cart-preview').data('refresh-url','');
// $('.blockcart.cart-preview').removeAttr('refresh-url');
// $('.blockcart.cart-preview').wrap('');
prestashop.on('updateCart', function (event) {
// console.log('aaa');
// console.log(event);
//DONGND:: refresh cart if turn off show popup
if (typeof show_popup != 'undefined' && !show_popup)
{
//DONGND:: loading default cart
if ($('.leo-blockcart.cart-preview .cssload-piano').length)
{
$('.leo-blockcart.cart-preview .cssload-piano').show();
}
// console.log('test');
var refresh_url = $('.leo-blockcart').data('refresh-url');
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: refresh_url,
async: true,
cache: false,
success: function (resp)
{
$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
$(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart');
// createModalAndDropdown(1, 0);
//DONGND:: refresh at product page with cart button default
if (event.reason.linkAction == 'add-to-cart' && event.resp.success)
{
// console.log('test');
prestashop.emit('updateProduct', {
reason: ''
});
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
//DONGND:: show notification if add cart success
if (event.reason.linkAction == 'add-to-cart' && event.resp.success)
{
// console.log($('.leo-bt-cart.active'));
//DONGND:: run fly cart
if (typeof enable_flycart_effect != 'undefined' && enable_flycart_effect)
{
if ($('.leo-bt-cart.active').length)
{
//DONGND:: product list
flyCartEffect($('.leo-bt-cart.active'));
}
else if (prestashop.page.page_name == 'product' || $('.product-add-to-cart .add-to-cart').length)
{
//DONGND:: product page or quickview
flyCartEffect($('.product-add-to-cart .add-to-cart'));
}
}
if ($('.leo-notification').length && typeof enable_notification != 'undefined' && enable_notification)
{
//DONGND:: show notification
var id_product = event.resp.id_product;
var product_name = false;
$.each(event.resp.cart.products, function(key, value){
// console.log(value);
// console.log(value.id_product);
// console.log(value.name);
if (id_product == value.id_product)
{
product_name = value.name;
return false;
}
})
showLeoNotification('success', 'add', product_name);
}
}
//DONGND:: hide cart item has been deleted from page cart
// if ($('.leo-dropdown-cart-item.deleting').length)
// {
// if (event.reason.idProduct)
// {
// var id_product = event.reason.idProduct;
// var id_product_attribute = event.reason.idProductAttribute;
// var id_customization = event.reason.idCustomization;
// 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');
// object_parent.find('.leo-dropdown-overlay').hide();
// object_parent.find('.leo-dropdown-cssload-speeding-wheel').hide();
// object_parent.fadeOut(function(){
// object_parent.remove();
// updateClassCartItem();
// });
// showLeoNotification('success','delete', false);
// }
// else
// {
// showLeoNotification('error','delete', false);
// }
// }
//DONGND:: update cart item has been updated from page cart
// if ($('.leo-dropdown-cart-item.updating').length)
// {
// if (event.reason.success)
// {
// var id_product = event.reason.id_product;
// var id_product_attribute = '';
// if (event.reason.id_product_attribute)
// {
// id_product_attribute = event.reason.id_product_attribute;
// }
// var object_element = $('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"]');
// var object_parent = object_element.parents('.leo-dropdown-cart-item');
// if (object_parent.hasClass('updating'))
// {
// object_parent.find('.leo-dropdown-overlay').hide();
// object_parent.find('.leo-dropdown-cssload-speeding-wheel').hide();
// object_parent.removeClass('updating');
// object_parent.find('.leo-input-product-quantity').data('product-quantity', object_parent.find('.leo-input-product-quantity').val());
// var id_customization = object_parent.find('.leo-input-product-quantity').data('id-customization');
// $('.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());
// }
// showLeoNotification('success','update', false);
// }
// else
// {
// showLeoNotification('error','update', false);
// }
// $('.leo-dropdown-cart-item.updating').removeClass('updating');
// }
// console.log('test1');
if (typeof show_popup != 'undefined' && show_popup)
{
// console.log('test');
check_active_modal_cart = setInterval(function(){
if ($('.leo-bt-cart.active').length && $('#blockcart-modal').length && $('#blockcart-modal').hasClass('modal fade in'))
{
$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
$('.leo-bt-cart.active').find('.leo-loading').hide();
$('.leo-bt-cart.active').removeClass('active reset');
clearInterval(check_active_modal_cart);
}
}, 200);
}
if (typeof show_popup != 'undefined' && !show_popup)
{
if ($('.leo-bt-cart.active').length)
{
$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
$('.leo-bt-cart.active').find('.leo-loading').hide();
$('.leo-bt-cart.active').removeClass('active reset');
}
}
// createModalAndDropdown(1, 0);
//DONGND:: loading fly cart
if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
{
$('.leo-fly-cart .leo-fly-cart-cssload-loader').show();
}
//prestashop.on('updatedCart', function (event) {
// console.log(event);
// var scrollToElement = false;
// console.log('bbb');
// console.log(event);
if ($('.leo-dropdown-cart-item.deleting').length)
{
$('.leo-dropdown-cart-item.deleting .leo-dropdown-overlay').hide();
$('.leo-dropdown-cart-item.deleting .leo-dropdown-cssload-speeding-wheel').hide();
$('.leo-dropdown-cart-item.deleting').fadeOut(function(){
$('.leo-dropdown-cart-item.deleting').remove();
updateClassCartItem();
})
showLeoNotification('success','delete', false);
}
if ($('.leo-dropdown-cart-item.updating').length)
{
$('.leo-dropdown-cart-item.updating .leo-dropdown-overlay').hide();
$('.leo-dropdown-cart-item.updating .leo-dropdown-cssload-speeding-wheel').hide();
$('.leo-dropdown-cart-item.updating').removeClass('updating');
showLeoNotification('success','update', false);
}
// if ($('.leo-dropdown-cart-item.deleting').length || $('.leo-dropdown-cart-item.updating').length)
// {
// createModalAndDropdown(1, 1);
// }
// else
// {
// if (typeof show_popup && show_popup)
// {
//DONGND:: remove do not close dropdown-dropup when delete at page cart
$('.leo-dropdown-cart.dropdown').removeClass('disable-close');
$('.leo-dropdown-cart.dropup').removeClass('disable-close');
createModalAndDropdown(1, 0);
// }
// }
//});
});
//DONGND:: call event for fly cart slide bar
activeEventFlyCartSlideBar();
$('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon-wrapper').click(function(){
$('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon').trigger('click');
});
$('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon').click(function(){
showSlideBarCart($(this));
return false;
});
$('.leo-fly-cart.enable-dropdown .leo-fly-cart-icon-wrapper , .leo-fly-cart.enable-dropdown .leo-fly-cart-icon').click(function(){
showDropDownCart($(this), 'flycart');
return false;
});
//DONGND:: click out to close dropdown-dropup cart
$(document).click(function (e) {
e.stopPropagation();
var container = $(".leo-dropdown-cart.dropdown.show");
//check if the clicked area is dropDown or not
if (container.length && container.has(e.target).length === 0) {
if (!container.hasClass('disable-close'))
{
container.removeClass('show');
}
}
var container1 = $(".leo-dropdown-cart.dropup.show");
//check if the clicked area is dropDown or not
if (container1.length && container1.has(e.target).length === 0) {
if (!container1.hasClass('disable-close'))
{
container1.removeClass('show');
}
}
})
getOffsetFlycartIcon();
//DONGND:: resize update scroll bar of fly cart slide bar
$(window).resize(function(){
//DONGND:: active scroll bar
$('.leo-dropdown-list-item').each(function(){
//DONGND:: scroll bar for slidebar
if ($(this).parents('.leo-fly-cart-slidebar').length)
{
checkFlyCartScrollBar($(this));
}
//DONGND:: scroll bar for dropup/dropdown
if ($(this).parents('.leo-fly-cart.type-fixed.enable-dropdown').length)
{
checkFlyCartScrollBarDropDown($(this));
}
})
getOffsetFlycartIcon();
})
});
//DONGND:: event for button add cart
function leoBtCart()
{
$('.leo-bt-cart').each(function(){
if (!$(this).hasClass('leo-enable'))
{
$(this).addClass('leo-enable');
$(this).click(function(event){
if ($(this).hasClass('active') || $(this).hasClass('reset') || $('.leo-bt-cart.active').length || $(this).hasClass('disabled'))
{
return false;
}
$(this).find('.leo-bt-cart-content').hide();
$(this).find('.leo-loading').css({'display':'block'});
$(this).addClass('active');
// console.log('aaa');
// return false;
// var object_button_container = $(this).parents('.button-container');
var object_button_container = $(this).parents('.product-miniature');
if (object_button_container.find('.leo_cart_quantity').length)
{
object_button_container.find('.qty_product').val(object_button_container.find('.leo_cart_quantity').val());
}
var qty_product = object_button_container.find('.qty_product').val();
var min_qty = object_button_container.find('.minimal_quantity').val();
var quantity_product = object_button_container.find('.quantity_product').val();
// console.log(qty_product);
// console.log(min_qty);
// console.log(quantity_product);
if(Math.floor(qty_product) == qty_product && $.isNumeric(qty_product) && qty_product > 0)
{
// return true;
}
else
{
$(this).addClass('reset');
// $(this).siblings('.qty_product').val(min_qty);
$('.leo-modal-cart .modal-header').addClass('warning-mess');
$('.leo-modal-cart .leo-warning').show();
$('.leo-modal-cart').modal('show');
return false;
}
// $('.leo-modal-cart .modal-header').addClass('block-mess');
// $('.leo-modal-cart .leo-block').show();
// $('.leo-modal-cart').modal('show');
if (parseInt(qty_product) < parseInt(min_qty))
{
$(this).addClass('reset');
$('.leo-modal-cart .modal-header').addClass('info-mess');
$('.leo-modal-cart .leo-info .alert-min-qty').text(min_qty);
$('.leo-modal-cart .leo-info').show();
$('.leo-modal-cart').modal('show');
return false;
}
//DONGND:: check product out stock
var id_product = object_button_container.find('.id_product').val();
var id_product_attribute = object_button_container.find('.id_product_attribute').val();
var id_customization = object_button_container.find('.id_customization').val();
// var check_product_outstock = checkProductOutStock(id_product, id_product_attribute, qty_product);
// console.log(check_product_outstock);
// if (parseInt(qty_product) > parseInt(quantity_product))
// {
// $(this).addClass('reset');
// $('.leo-modal-cart .modal-header').addClass('block-mess');
// $('.leo-modal-cart .leo-block').show();
// $('.leo-modal-cart').modal('show');
// return false;
// }
// return false;
// console.log(check_product_outstock);
var $element = $(this);
$(this).removeData('check-outstock');
// $.when(checkProductOutStock(id_product, id_product_attribute, id_customization, qty_product, $element, true)).done(function(data){
checkProductOutStock(id_product, id_product_attribute, id_customization, qty_product, $element, true);
check_data_outstock = setInterval(function(){
if (typeof $element.data('check-outstock') != 'undefined')
{
clearInterval(check_data_outstock);
if (!$element.data('check-outstock'))
{
// console.log('bbbb');
$element.addClass('reset');
$('.leo-modal-cart .modal-header').addClass('block-mess');
$('.leo-modal-cart .leo-block').show();
$('.leo-modal-cart').modal('show');
// return false;
event.preventDefault();
event.stopPropagation();
// check_product_outstock = false;
}
else
{
var $form = $element.closest('form');
var query = $form.serialize() + '&add=1&action=update';
var actionURL = $form.attr('action');
//DONGND:: run add to cart
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: actionURL,
async: true,
cache: false,
data: query,
dataType: 'json',
success: function (result)
{
if(result.success)
{
if ($('.leo-notification').length && typeof enable_notification != 'undefined' && enable_notification)
{
//DONGND:: show notification
var id_product = result.id_product;
var product_name = false;
$.each(result.cart.products, function(key, value){
// console.log(value);
// console.log(value.id_product);
// console.log(value.name);
if (id_product == value.id_product)
{
product_name = value.name;
return false;
}
})
showLeoNotification('success', 'add', product_name);
}
//DONGND:: run fly cart
if (typeof enable_flycart_effect != 'undefined' && enable_flycart_effect)
{
if ($('.leo-bt-cart.active').length)
{
//DONGND:: product list
flyCartEffect($('.leo-bt-cart.active'));
}
}
//DONGND:: loading fly cart
if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
{
$('.leo-fly-cart .leo-fly-cart-cssload-loader').show();
}
//DONGND:: loading default cart
if ($('.leo-blockcart.cart-preview .cssload-piano').length)
{
$('.leo-blockcart.cart-preview .cssload-piano').show();
}
//DONGND:: reset button add cart
if (typeof show_popup != 'undefined' && !show_popup)
{
if ($('.leo-bt-cart.active').length)
{
$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
$('.leo-bt-cart.active').find('.leo-loading').hide();
$('.leo-bt-cart.active').removeClass('active reset');
}
//DONGND:: refresh default cart
var refresh_url = $('.leo-blockcart').data('refresh-url');
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: refresh_url,
async: true,
cache: false,
success: function (resp)
{
$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
$(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart');
//DONGND:: refresh default cart
createModalAndDropdown(1, 0);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
if (typeof show_popup != 'undefined' && show_popup)
{
var refreshURL = $('.blockcart').data('refresh-url');
var requestData = {};
requestData = {
id_product_attribute: result.id_product_attribute,
id_product: result.id_product,
action: 'add-to-cart'
};
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: refreshURL,
async: true,
cache: false,
data: requestData,
dataType: 'json',
success: function (resp)
{
if ($('.leo-bt-cart.active').length)
{
$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
$('.leo-bt-cart.active').find('.leo-loading').hide();
$('.leo-bt-cart.active').removeClass('active reset');
}
//DONGND:: refresh default cart
$('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
//DONGND:: show modal popup
if (resp.modal) {
showModalPopupCart(resp.modal);
}
//DONGND:: refresh dropdown cart
createModalAndDropdown(1, 0);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
}
else
{
//DONGND:: show notification
showLeoNotification('error','add', false);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
showLeoNotification('error','add', false);
}
});
}
}
}, 10);
// console.log($element);
// console.log($element.data('check-outstock'));
// });
return false;
});
};
});
$('.leo_cart_quantity').each(function(){
//DONGND:: hide input quantity when cart buton does not show
if ($(this).parents('.product-miniature').find('.qty_product').val())
{
$(this).val($(this).parents('.product-miniature').find('.qty_product').val());
}
else
{
$(this).hide();
}
})
// $('.leo_cart_quantity').change(function(){
// console.log($(this).val());
// $(this).parents('.product-miniature').find('.qty_product').val($(this).val());
// })
}
//DONGND:: event for button add cart
function leoSelectAttr()
{
$('.leo-select-attr').click(function(e){
e.preventDefault();
var id_product = $(this).data('id-product');
var attr_txt = $(this).text();
var id_attr = $(this).data('id-attr');
var qty_attr = $(this).data('qty-attr');
var min_qty_attr = $(this).data('min-qty-attr');
// var parent_e = $(this).parents('.button-container');
var parent_e = $(this).parents('.product-miniature');
// console.log(attr_txt);
if (!$(this).hasClass('selected'))
{
$(this).siblings().removeClass('selected');
$(this).addClass('selected');
parent_e.find('.dropdownListAttrButton_'+id_product).text(attr_txt);
if($(this).hasClass('disable'))
{
if(!parent_e.find('.leo-bt-cart_'+id_product).hasClass('disabled'))
{
parent_e.find('.leo-bt-cart_'+id_product).addClass('disabled');
}
}
else
{
if(parent_e.find('.leo-bt-cart_'+id_product).hasClass('disabled'))
{
parent_e.find('.leo-bt-cart_'+id_product).removeClass('disabled');
}
};
var $product_article_e = $(this).parents('.product-miniature[data-id-product=' + id_product+']');
// console.log($product_article_e);
$product_article_e.find('.leo-bt-cart .leo-bt-cart-content').hide();
$product_article_e.find('.leo-bt-cart .leo-loading').css({'display':'block'});
$product_article_e.find('.leo-bt-cart').addClass('active');
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(),
async: true,
cache: false,
data: {
"action": "get-attribute-data",
"id_product": id_product,
"id_product_attribute": id_attr,
"token": leo_token
},
success: function (result)
{
if(result != '')
{
var obj = $.parseJSON(result);
// console.log($(this));
// console.log($('.product-miniature[data-id-product=' + id_product+']'));
$product_article_e.find('.product-thumbnail img').attr('src', obj.product_cover.bySize.home_default.url).attr('alt', obj.product_cover.legend);
$product_article_e.find('.product-thumbnail').attr('href', obj.product_url);
$product_article_e.find('.product-price-and-shipping').empty().append(obj.price_attribute);
// if (typeof enable_product_label != 'undefined' && enable_product_label)
// {
// updatePostionLabel($product_article_e);
// }
}
else
{
alert(add_cart_error);
}
$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
$('.leo-bt-cart.active').find('.leo-loading').hide();
$('.leo-bt-cart.active').removeClass('active reset');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
// $('#quantity_product_'+id_product).val(qty_attr);
// $('#id_product_attribute_'+id_product).val(id_attr);
// $('#minimal_quantity_'+id_product).val(min_qty_attr);
// $('#qty_product_'+id_product).val(min_qty_attr).attr('min',min_qty_attr);
parent_e.find('.quantity_product_'+id_product).val(qty_attr);
parent_e.find('.id_product_attribute_'+id_product).val(id_attr);
parent_e.find('.minimal_quantity_'+id_product).val(min_qty_attr);
parent_e.find('.qty_product_'+id_product).val(min_qty_attr).data('min',min_qty_attr);
parent_e.find('.leo_cart_quantity').val(min_qty_attr);
// $('#dropdownListAttrButton_'+id_product).trigger('click');
parent_e.find('.dropdownListAttrButton_'+id_product).trigger('click');
// leoBtCart();
// return false;
});
// leoBtCart();
}
//DONGND:: event for module popup after add cart
function activeEventModal()
{
$('.leo-modal-cart').on('hide.bs.modal', function (e) {
// console.log('test');
$('.leo-modal-cart .modal-header').removeClass('block-mess info-mess warning-mess');
$('.leo-modal-cart .modal-title').hide();
var min_qty = $('.leo-bt-cart.reset').parents('.button-container').find('.minimal_quantity').val();
$('.leo-bt-cart.reset').parents('.button-container').find('.qty_product').val(min_qty);
$('.leo-bt-cart.reset').parents('.product-miniature').find('.leo_cart_quantity').val(min_qty);
$('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast');
$('.leo-bt-cart.active').find('.leo-loading').hide();
$('.leo-bt-cart.active').removeClass('active reset');
// do something...
});
// $('.leo-modal-cart').on('show.bs.modal', function (e) {
// $('.leo-bt-cart.active').find('.leo-bt-cart-content').show();
// $('.leo-bt-cart.active').find('.leo-loading').hide();
// })
}
//DONGND:: update position label
function updatePostionLabel($parent)
{
var FLAG_MARGIN = 10;
var $percent = $parent.find('.discount-percentage');
var $onsale = $parent.find('.on-sale');
var $new = $parent.find('.new');
if($percent.length){
$new.css('top', $percent.height() * 2 + FLAG_MARGIN);
$percent.css('top',-$parent.find('.thumbnail-container').height() + $parent.find('.product-description').height() + FLAG_MARGIN);
}
if($onsale.length){
$percent.css('top', parseFloat($percent.css('top')) + $onsale.height() + FLAG_MARGIN);
$new.css('top', ($percent.height() * 2 + $onsale.height()) + FLAG_MARGIN * 2);
}
}
//DONGND:: show dropdown cart
function showDropDownCart($element, $type)
{
var object_element = '';
if ($type == 'defaultcart')
{
object_element = $element.siblings('.leo-dropdown-cart');
}
if ($type == 'flycart')
{
object_element = $element.parents('.leo-fly-cart').find('.leo-dropdown-cart');
}
if (!object_element.hasClass('show'))
{
object_element.addClass('show');
}
else
{
object_element.removeClass('show');
}
}
//DONGND:: show dropdown cart
function showSlideBarCart($element)
{
if (!$('.leo-fly-cart-slidebar.disable').length)
{
if (!$element.hasClass('active-slidebarcart'))
{
var type = $element.data('type');
var pusheffect = $element.data('pusheffect');
$element.addClass('active-slidebarcart');
$('.leo-fly-cart-slidebar.'+type).addClass('active');
if ($('.leo-fly-cart-mask').length)
{
$('.leo-fly-cart-mask').first().addClass('active');
$('body').addClass('leoflycart-active-slidebar');
}
//DONGND:: update scrollbar of slidebar cart for safari win
if ($('html').hasClass('safari-win'))
{
$('.leo-fly-cart-slidebar .leo-dropdown-list-item').each(function(){
//DONGND:: scroll bar for slidebar
checkFlyCartScrollBar($(this));
})
};
if (pusheffect)
{
$('.leo-fly-cart-slidebar.'+type).addClass('push');
$('body').addClass('leoflycart-active-push');
var push_value;
var push_type;
if (type == 'slidebar_top' || type == 'slidebar_bottom')
{
push_type = "Y";
if (type == 'slidebar_top')
{
// push_value = $('.leo-fly-cart-slidebar.push.'+type).outerHeight()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerHeight();
push_value = $('.leo-fly-cart-slidebar.push.'+type).outerHeight();
}
if (type == 'slidebar_bottom')
{
// push_value = -($('.leo-fly-cart-slidebar.push.'+type).outerHeight()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerHeight());
push_value = -$('.leo-fly-cart-slidebar.push.'+type).outerHeight();
}
}
if (type == 'slidebar_right' || type == 'slidebar_left')
{
push_type = "X";
if (type == 'slidebar_left')
{
// push_value = $('.leo-fly-cart-slidebar.push.'+type).outerWidth()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerWidth();
push_value = $('.leo-fly-cart-slidebar.push.'+type).outerWidth();
}
if (type == 'slidebar_right')
{
// push_value = -($('.leo-fly-cart-slidebar.push.'+type).outerWidth()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerWidth());
push_value = -$('.leo-fly-cart-slidebar.push.'+type).outerWidth();
}
}
$('body.leoflycart-active-push main').css({
"-moz-transform": "translate"+push_type+"("+push_value+"px)",
"-webkit-transform": "translate"+push_type+"("+push_value+"px)",
"-o-transform": "translate"+push_type+"("+push_value+"px)",
"-ms-transform": "translate"+push_type+"("+push_value+"px)",
"transform": "translate"+push_type+"("+push_value+"px)",
})
}
}
else
{
$('.leo-fly-cart-slidebar .leo-fly-cart-icon').trigger('click');
}
}
}
//DONGND:: event for dropdown cart
function activeDropdownEvent()
{
//DONGND:: active scroll bar
$('.leo-dropdown-list-item').each(function(){
// console.log($(this).parents('.leo-fly-cart-slidebar'));
var check_number_cartitem = 3;
if (typeof number_cartitem_display != 'undefined')
{
check_number_cartitem = number_cartitem_display;
}
//DONGND:: scroll bar for dropdown
// checkFlyCartScrollBarDropDown($(this));
// if (!$(this).parents('.leo-fly-cart-slidebar').length && $(this).find('.leo-dropdown-cart-item').length > check_number_cartitem)
// {
if (!$(this).parents('.leo-fly-cart-slidebar').length)
{
// if (typeof height_cart_item != 'undefined')
// {
// $(this).addClass('active-scrollbar').css({'max-height': height_cart_item*number_cartitem_display});
// }
// else
// {
// $(this).addClass('active-scrollbar').css({'max-height': $(this).find('.leo-dropdown-cart-item').outerHeight()*check_number_cartitem});
// }
// $(this).mCustomScrollbar({
// theme:"dark",
// scrollInertia: 200,
// callbacks:{
// onInit:function(){
// }
// },
// keyboard:{
// enable:true,
// }
// });
// $(this).mCustomScrollbar('update');
// console.log('test');
checkFlyCartScrollBarDropDown($(this));
// if ($scrollToElement != false)
// {
// $(this).mCustomScrollbar('scrollTo',$(this).find('.mCSB_container').find('.leo-dropdown-cart-item:eq('+$scrollToElement+')'),{scrollInertia:0});
// }
// $(this).scrollbar();
}
//DONGND:: scroll bar for slidebar
if ($(this).parents('.leo-fly-cart-slidebar').length)
{
checkFlyCartScrollBar($(this));
}
})
//DONGND:: highlight dropdown cart item
$('.leo-remove-from-cart, .view-leo-dropdown-additional').hover(function(){
if ($(this).hasClass('leo-remove-from-cart'))
{
$(this).parents('.leo-dropdown-cart-item').addClass('high-light');
}
},function(){
if ($(this).hasClass('leo-remove-from-cart'))
{
$(this).parents('.leo-dropdown-cart-item').removeClass('high-light');
}
})
//DONGND:: show additional info
$('.view-leo-dropdown-additional').click(function(){
var parent_obj = $(this).parents('.leo-dropdown-cart-item');
var wrapper_parent_obj = $(this).parents('.leo-dropdown-list-item');
if (!$(this).hasClass('show'))
{
if (wrapper_parent_obj.find('.leo-dropdown-cart-item.show-additional'))
{
wrapper_parent_obj.find('.leo-dropdown-cart-item.show-additional').removeClass('show-additional');
wrapper_parent_obj.find('.view-leo-dropdown-additional.show').removeClass('show');
wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){
$(this).remove();
});
wrapper_parent_obj.mCustomScrollbar("update");
setTimeout(function() {
wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update");
},500);
}
$(this).addClass('show');
if (wrapper_parent_obj.hasClass('active-scrollbar') && parent_obj.hasClass('last'))
{
// if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top').length || $(this).parents('.leo-fly-cart-slidebar.push_slidebar_bottom').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_bottom').length)
// {
// var width_clone_obj = parent_obj.width();
// wrapper_parent_obj.find('.leo-dropdown-list-item').append('');
// wrapper_parent_obj.mCustomScrollbar("update");
// wrapper_parent_obj.mCustomScrollbar("scrollTo","100%",{
// callbacks: parent_obj.addClass('show-additional')
// });
// }
// else
// {
var height_clone_obj = parent_obj.find('.leo-dropdown-additional').height();
wrapper_parent_obj.find('.mCSB_container').append('');
wrapper_parent_obj.mCustomScrollbar("update");
wrapper_parent_obj.mCustomScrollbar("scrollTo","bottom",{
callbacks: parent_obj.addClass('show-additional')
});
// }
} else if(wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').hasClass('active-scrollbar') && parent_obj.hasClass('last') && parent_obj.hasClass('first'))
{
wrapper_parent_obj.append('
');
wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update");
wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("scrollTo","last",{
callbacks: parent_obj.addClass('show-additional')
});
}
else
{
parent_obj.addClass('show-additional');
}
//DONGND:: disable scrollbar with fly cart slide bar top
// if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top.active-scroll').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top.active-scroll').length)
// {
// $(this).parents('.leo-fly-cart-slidebar').find('.leo-dropdown-list-item-warpper.active-scrollbar').mCustomScrollbar("destroy");
// $(this).parents('.leo-fly-cart-slidebar').addClass('disable-scrollbar');
// }
}
else
{
parent_obj.removeClass('show-additional');
if (wrapper_parent_obj.hasClass('active-scrollbar') && parent_obj.hasClass('last'))
{
wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){
$(this).remove();
});
wrapper_parent_obj.mCustomScrollbar("update");
}
else if(wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').hasClass('active-scrollbar') && parent_obj.hasClass('last') && parent_obj.hasClass('first'))
{
wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){
$(this).remove();
});
parent_obj.removeClass('show-additional');
$(this).removeClass('show');
// wrapper_parent_obj.find('.fake-element').remove();
setTimeout(function() {
wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update");
},500);
}
parent_obj.removeClass('show-additional');
$(this).removeClass('show');
//DONGND:: disable scrollbar with fly cart slide bar top
// if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top.active-scroll').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top.active-scroll').length)
// {
// if ($(this).parents('.leo-fly-cart-slidebar').hasClass('disable-scrollbar'))
// {
// $(this).parents('.leo-fly-cart-slidebar').removeClass('disable-scrollbar');
// $(this).parents('.leo-fly-cart-slidebar').find('.leo-dropdown-list-item-warpper.active-scrollbar').mCustomScrollbar("update");
// }
// }
}
return false;
})
//DONGND:: remove dropdown cart item
$('.leo-remove-from-cart').click(function(){
var id_product = $(this).data('id-product');
var id_product_attribute = $(this).data('id-product-attribute');
var id_customization = $(this).data('id-customization');
var parent_obj = $(this).parents('.leo-dropdown-cart-item');
parent_obj.addClass('deleting');
if (parent_obj.hasClass('show-additional'))
{
parent_obj.find('.view-leo-dropdown-additional').trigger('click');
}
parent_obj.find('.leo-dropdown-overlay').show();
parent_obj.find('.leo-dropdown-cssload-speeding-wheel').show();
if ($('.remove-from-cart').length)
{
//DONGND:: do not close dropdown-dropup when delete at page cart
$('.leo-dropdown-cart.dropdown').addClass('disable-close');
$('.leo-dropdown-cart.dropup').addClass('disable-close');
//DONGND:: page cart
// console.log($('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]'));
$('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').trigger('click');
}
else
{
var link_url = $(this).data('link-url');
var refresh_url = $('.leo-blockcart.cart-preview').data('refresh-url');
// var scrollToElement = parent_obj.index()-1;
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: link_url,
async: true,
cache: false,
data: {
"ajax": 1,
"action": "update",
},
success: function (result)
{
var obj = $.parseJSON(result);
parent_obj.find('.leo-dropdown-overlay').hide();
parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide();
// console.log(obj);
if(obj.success)
{
parent_obj.fadeOut(function(){
// if (parent_obj.hasClass('last'))
// {
// parent_obj.prev().addClass('last');
// }
// if (parent_obj.hasClass('first'))
// {
// parent_obj.next().addClass('first');
// }
parent_obj.remove();
$('.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();
updateClassCartItem();
});
//DONGND:: show notification
showLeoNotification('success','delete', false);
//DONGND:: refresh cart
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: refresh_url,
async: true,
cache: false,
success: function (resp)
{
$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
$(".blockcart.cart-preview").addClass('leo-blockcart');
if (typeof show_popup != 'undefined' && !show_popup)
{
$(".blockcart.cart-preview").removeClass('blockcart')
}
createModalAndDropdown(1, 1);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
else
{
//DONGND:: show notification
showLeoNotification('error','delete', false);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
return false;
})
//DONGND:: change quantity product dropdown with input
// $("body").on('focusout','.leo-input-product-quantity',function (event) {
// updateQuantityProductDropDown(event.currentTarget);
// });
// $("body").on('keyup','.leo-input-product-quantity',function (event) {
// if (event.keyCode == 13) {
// updateQuantityProductDropDown(event.currentTarget);
// }
// });
$('.leo-input-product-quantity').focusout(function(){
updateQuantityProductDropDown($(this));
})
$('.leo-input-product-quantity').keyup(function(event){
if (event.keyCode == 13) {
updateQuantityProductDropDown($(this));
}
})
// var update_quantity = false;
var timer;
var flag = false;
//DONGND:: change quantity product dropdown with button up-down
$('.leo-bt-product-quantity-down, .leo-bt-product-quantity-up').on('touchstart click', function(){
if(flag == true)
{
flag = false;
clearTimeout(timer);
}
flag = true;
// console.log('test');
var action = 'up';
var input_target = $(this).parents('.leo-dropdown-cart-item').find('.leo-input-product-quantity');
var input_quantity = parseInt(input_target.val());
var quantity_update;
if ($(this).hasClass('leo-bt-product-quantity-down'))
{
action = 'down';
}
if (action == 'up')
{
quantity_update = input_quantity+1;
}
if (action == 'down')
{
quantity_update = input_quantity-1;
}
input_target.val(quantity_update);
// updateQuantityProductDropDown(input_target);
// console.log(update_quantity);
timer = setTimeout(
function()
{
flag = false;
// update_quantity = true;
// if (update_quantity)
// {
// console.log(update_quantity);
updateQuantityProductDropDown(input_target);
// }
}, 800);
return false;
})
}
function updateQuantityProductDropDown($element)
{
// var $this = $(event.currentTarget);
// if (obj instanceof jQuery)
var $this = $element;
var product_quantity = $this.data('product-quantity');
var min_quantity = $this.data('min-quantity');
var max_quantity = $this.data('quantity-available');
var input_quantity = $this.val();
// console.log(product_quantity);
// console.log(input_quantity);
// if (input_quantity != parseInt(input_quantity) || input_quantity < 0 || isNaN(input_quantity)) {
// console.log('test');
// showLeoNotification('normal','check');
// $this.val(product_quantity);
// return;
// }
//DONGND:: validate input
if(Math.floor(input_quantity) == input_quantity && $.isNumeric(input_quantity) && input_quantity > 0)
{
// return true;
}
else
{
showLeoNotification('normal', 'check', false);
$this.val(product_quantity);
return;
}
//DONGND:: check min quantity
if (parseInt(input_quantity) < parseInt(min_quantity))
{
showLeoNotification('warning', 'min', min_quantity);
$this.val(product_quantity);
return false;
}
//DONGND:: do not change
var qty = parseInt(input_quantity) - parseInt(product_quantity);
// console.log(qty);
// console.log(product_quantity);
if (qty == 0) {
return;
}
//DONGND:: check stock
// if (parseInt(input_quantity) > parseInt(max_quantity))
// {
// showLeoNotification('warning', 'max', false);
// $this.val(product_quantity);
// return false;
// }
var id_product = $this.data('id-product');
var id_product_attribute = $this.data('id-product-attribute');
var id_customization = $this.data('id-customization');
$this.removeData('check-outstock');
var check_product_outstock = true;
var parent_obj = $this.parents('.leo-dropdown-cart-item');
parent_obj.addClass('updating');
parent_obj.find('.leo-dropdown-overlay').show();
parent_obj.find('.leo-dropdown-cssload-speeding-wheel').show();
// $.when(checkProductOutStock(id_product, id_product_attribute, id_customization, input_quantity, $this, false)).done(function(data){
checkProductOutStock(id_product, id_product_attribute, id_customization, input_quantity, $this, false);
// console.log($element);
// console.log($this.data('check-outstock'));
check_data_outstock = setInterval(function(){
if (typeof $element.data('check-outstock') != 'undefined')
{
clearInterval(check_data_outstock);
if (!$this.data('check-outstock'))
{
// console.log('bbbb');
showLeoNotification('warning', 'max', false);
$this.val(product_quantity);
// console.log(event);
// return false;
// return;
// break;
// event.preventDefault();
// event.stopPropagation();
check_product_outstock = false;
parent_obj.find('.leo-dropdown-overlay').hide();
parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide();
parent_obj.removeClass('updating');
}
if (!check_product_outstock)
{
return false;
}
if ($('.js-cart-line-product-quantity').length)
{
//DONGND:: page cart
var e = $.Event("keyup");
e.keyCode = 13; // # Some key code value
// console.log($('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]'));
$('.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);
}
else
{
var link_url = $this.data('update-url');
var refresh_url = $('.leo-blockcart.cart-preview').data('refresh-url');
var op = '';
if (qty > 0)
{
op = 'up';
}
else
{
op = 'down';
}
// var scrollToElement = parent_obj.index()-1;
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: link_url,
async: true,
cache: false,
data: {
"ajax": 1,
"action": "update",
"qty": Math.abs(qty),
"op": op,
},
success: function (result)
{
var obj = $.parseJSON(result);
parent_obj.find('.leo-dropdown-overlay').hide();
parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide();
parent_obj.removeClass('updating');
// console.log(obj);
if(obj.success)
{
// $this.data('product-quantity', input_quantity);
$('.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);
//DONGND:: show notification
showLeoNotification('success','update', false);
//DONGND:: refresh cart
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: refresh_url,
async: true,
cache: false,
success: function (resp)
{
$('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart'));
$(".blockcart.cart-preview").addClass('leo-blockcart');
if (typeof show_popup != 'undefined' && !show_popup)
{
$(".blockcart.cart-preview").removeClass('blockcart')
}
createModalAndDropdown(1, 1);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
else
{
//DONGND:: show notification
showLeoNotification('error','update', false);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
}
}, 10);
// });
}
function createModalAndDropdown($only_dropdown, $only_total)
{
//DONGD:: add loading
// $('.blockcart.cart-preview .header').append('');
// $('.blockcart.cart-preview .leo-dropdown-cssload-speeding-wheel').css({'display':'inline-block'});
// console.log(enable_dropdown_defaultcart);
if (typeof enable_dropdown_defaultcart != 'undefined')
{
// console.log(enable_dropdown_defaultcart);
if (enable_dropdown_defaultcart)
{
if ($('.blockcart.cart-preview').length)
{
$('.blockcart.cart-preview').addClass('leo-blockcart show-leo-loading').append('');
}
else
{
$('.leo-blockcart.cart-preview').addClass('show-leo-loading').append('');
}
$('.leo-blockcart.cart-preview .cssload-piano').show();
// $('.blockcart.cart-preview a').attr('href', 'javascript:void(0)');
// $('.blockcart.cart-preview').addClass('dropdown-toggle').data('toggle','dropdown').attr('aria-haspopup','true').attr('aria-expanded','false').attr('id','dropdownCartNormal');
// $('.blockcart.cart-preview').parent().addClass('dropdown');
$('.leo-blockcart.cart-preview.show-leo-loading').data('type',type_dropdown_defaultcart);
// if (typeof enable_dropdown_defaultcart != 'undefined')
// {
// $('.leo-blockcart.cart-preview.show-leo-loading').data('pusheffect', enable_pusheffect_defaultcart);
// }
//DONGND:: action dropdown
if (typeof type_dropdown_defaultcart != 'undefined')
{
if (type_dropdown_defaultcart == 'dropdown' || type_dropdown_defaultcart == 'dropup')
{
$('.leo-blockcart.cart-preview.show-leo-loading').click(function(){
// console.log('test');
showDropDownCart($(this), 'defaultcart');
return false;
})
}
if (type_dropdown_defaultcart == 'slidebar_left' || type_dropdown_defaultcart == 'slidebar_right' || type_dropdown_defaultcart == 'slidebar_top' || type_dropdown_defaultcart == 'slidebar_bottom')
{
$('.leo-blockcart.cart-preview.show-leo-loading').click(function(){
showSlideBarCart($(this));
return false;
})
}
}
}
else
{
// console.log('test');
$('.blockcart.cart-preview').addClass('leo-blockcart');
}
}
//DONGND:: loading fly cart
if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
{
$('.leo-fly-cart .leo-fly-cart-cssload-loader').show();
}
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(),
async: true,
cache: false,
data: {
"action": "render-modal",
"only_dropdown": $only_dropdown,
"only_total": $only_total,
"token": leo_token
},
success: function (result)
{
if (result != '')
{
// $('.blockcart.cart-preview .leo-dropdown-cssload-speeding-wheel').hide();
$('.leo-blockcart.cart-preview .cssload-piano').hide();
if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length)
{
setTimeout(function(){
$('.leo-fly-cart .leo-fly-cart-cssload-loader').hide();
}, 2000);
}
if(result.dropdown != '')
{
if ($('.leo-fly-cart-slidebar.disable').length)
{
$('.leo-fly-cart-slidebar').removeClass('disable');
}
if (!$('.leo-dropdown-cart').length)
{
if (typeof type_dropdown_defaultcart != 'undefined' && (type_dropdown_defaultcart == 'dropdown' || type_dropdown_defaultcart == 'dropup'))
{
$('.leo-blockcart.cart-preview.show-leo-loading').after('');
}
//DONGND:: add dropdown to flycart
if ($('.leo-fly-cart.enable-dropdown').length)
{
$('.leo-fly-cart.enable-dropdown').append('');
}
//DONGND:: add dropdown to flycart slide bar
if ($('.leo-fly-cart-slidebar').length)
{
$('.leo-fly-cart-slidebar').append('');
}
}
else
{
$('.leo-dropdown-cart').addClass('update');
}
if ($('.leo-dropdown-cart-content').length)
{
// console.log('test');
// $('.leo-dropdown-cart-content').remove();
// $('.leo-dropdown-cart-content').replaceWith(result.dropdown);
if ($only_total == 1)
{
$('.leo-dropdown-cart-content .leo-dropdown-total').replaceWith(result.dropdown);
var check_number_cartitem = 3;
if (typeof number_cartitem_display != 'undefined')
{
check_number_cartitem = number_cartitem_display;
}
//DONGND:: turn off scroll bar
$('.leo-dropdown-list-item').each(function(){
// if (!$(this).parents('.leo-fly-cart-slidebar').length && $(this).find('.leo-dropdown-cart-item').length <= check_number_cartitem && $(this).hasClass('active-scrollbar'))
// {
if (!$(this).parents('.leo-fly-cart-slidebar').length)
{
// $(this).removeClass("active-scrollbar").css({'max-height': 'none'});
// $(this).mCustomScrollbar("destroy");
// $(this).mCustomScrollbar("disable",true);
checkFlyCartScrollBarDropDown($(this));
}
//DONGND:: scroll bar for slidebar
if ($(this).parents('.leo-fly-cart-slidebar').length && $(this).parents('.leo-fly-cart-slidebar').find('.active-scrollbar'))
{
// console.log('test');
checkFlyCartScrollBar($(this));
}
})
}
else
{
$('.leo-dropdown-cart-content').replaceWith(result.dropdown);
activeDropdownEvent();
}
}
else
{
// console.log('test1');
$('.leo-dropdown-cart').append(result.dropdown);
activeDropdownEvent();
}
}
else
{
//DONGND:: clear cart
if ($('.leo-dropdown-cart').length)
{
$('.leo-dropdown-cart').remove();
}
$('.leo-fly-cart-slidebar').addClass('disable');
if ($('.leo-fly-cart-slidebar.active').length)
{
$('.leo-fly-cart-slidebar.active').find('.leo-fly-cart-icon').trigger('click');
}
}
//DONGND:: create modal popup
if(result.modal != '')
{
$('body').append(result.modal);
activeEventModal();
}
//DONGND:: create notification
if(result.notification != '')
{
$('body').append(result.notification);
}
//DONGND:: update cart total for fly cart
if ($('.leo-fly-cart-total').length)
{
if ($('.leo-dropdown-total').length)
{
$('.leo-fly-cart-total').text($('.leo-dropdown-total').data('cart-total'));
}
else
{
$('.leo-fly-cart-total').text("0");
}
}
}
else
{
alert(add_cart_error);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
// alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
//DONGND:: event for notification
function activeEventNotification()
{
$(".leo-notification .notification").click(function(){
$(this).removeClass('show').addClass("closed").parent().addClass('disable');
// var obj = $(this);
// setTimeout(
// function()
// {
// obj.parent().addClass('disable');
// }, 700);
// if (!$(".leo-notification .notification.show").length)
// {
// setTimeout(
// function()
// {
// $(".leo-notification").removeClass('active');
// }, 700);
// }
})
}
function showLeoNotification($status, $action, $special_parameter)
{
if (!$('.leo-notification').hasClass('active'))
{
$('.leo-notification').addClass('active');
}
var clone_obj = '';
clone_obj = $('.leo-temp-'+$status+'>div').clone();
clone_obj.find('.noti-'+$action).addClass('active');
if ($special_parameter && $special_parameter != '')
{
clone_obj.find('.noti-'+$action).find('.noti-special').text($special_parameter);
}
// clone_obj.height(clone_obj.find('.notification').height());
// clone_obj.find('.notification').addClass('show');
$('.leo-notification').append(clone_obj);
setTimeout(
function()
{
// $('.leo-notification .notification').last().addClass('show');
clone_obj.find('.notification').addClass('show');
// var height_wrapper = $('.leo-notification .notification').last().height();
// $('.leo-notification .notification-wrapper').last().height(height_wrapper);
}, 100);
activeEventNotification();
setTimeout(
function()
{
// clone_obj.find('.notification').trigger('click');
clone_obj.find('.notification').removeClass('show').addClass("closed").parent().addClass('disable');
}, 5000);
}
//DONGND:: check product out stock
function checkProductOutStock($id_product, $id_product_attribute, $id_customization, $quantity, $element, $check_product_in_cart)
{
// console.log($element);
// return $.ajax({
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(),
async: true,
cache: false,
data: {
"action": "check-product-outstock",
"id_product": $id_product,
"id_product_attribute": $id_product_attribute,
"id_customization": $id_customization,
"quantity": $quantity,
"check_product_in_cart": $check_product_in_cart,
"token": leo_token
},
success: function (result)
{
if (result != '')
{
var obj = $.parseJSON(result);
// console.log('bbb');
// console.log(obj.success);
$element.data('check-outstock', obj.success)
// console.log($element.data('check-outstock'));
}
else
{
alert(add_cart_error);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
// alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
}
});
}
//DONGND:: update class first last of cart item
function updateClassCartItem()
{
$('.leo-dropdown-list-item').each(function(){
$(this).find('.leo-dropdown-cart-item').first().addClass('first');
$(this).find('.leo-dropdown-cart-item').last().addClass('last');
})
}
//DONGND:: create fly cart effect
function flyCartEffect($element)
{
if ($element.hasClass('leo-bt-cart'))
{
var parent_e = $element.parents('.product-miniature');
var product_img = parent_e.find('.product-thumbnail').find("img").eq(0);
}
else
{
var product_img = '';
if ($('.quickview .product-cover').length)
{
//DONGND:: quickview in produc page
product_img = $('.quickview .product-cover').find("img").eq(0);
}
else
{
//DONGND:: product page
product_img = $('.product-cover').find("img").eq(0);
}
}
if (typeof product_img != 'undefined' && product_img.length)
{
var obj_element = '';
if ($('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length)
{
obj_element = $('.leo-fly-cart-slidebar.active .leo-fly-cart-icon');
}
else if ($('.leo-fly-cart.solo .leo-fly-cart-icon').length)
{
obj_element = $('.leo-fly-cart.solo .leo-fly-cart-icon');
}
else if ($('.leo-blockcart.cart-preview').length)
{
obj_element = $('.leo-blockcart.cart-preview');
}
else if ($('.blockcart.cart-preview').length)
{
obj_element = $('.blockcart.cart-preview');
}
$('body').addClass('enable-leo-fly-cart');
var divider = 4;
var flyerClone = product_img.clone();
var clone_offset_top = product_img.offset().top;
var clone_offset_left = product_img.offset().left;
//DONGND:: update for body boxed
if ($('body').offset().left != 0)
{
clone_offset_left = clone_offset_left - $('body').offset().left;
}
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()});
$('body').append(flyerClone);
var gotoX = obj_element.offset().left + (obj_element.width() / 2) - (product_img.width()/divider)/2;
//DONGND:: update for body boxed
if ($('body').offset().left != 0)
{
gotoX = gotoX - $('body').offset().left;
}
if ($('html').hasClass('safari-win') && $('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length)
{
//DONGND:: update position of fly cart icon on slidebar cart for safari win
var gotoY = $(window).scrollTop()+obj_element.offset().top + (obj_element.height() / 2) - (product_img.height()/divider)/2;
}
else
{
var gotoY = obj_element.offset().top + (obj_element.height() / 2) - (product_img.height()/divider)/2;
}
flyerClone.animate({
opacity: 0.4,
left: gotoX,
top: gotoY,
width: product_img.width()/divider,
height: product_img.height()/divider
}, 1000,
function () {
flyerClone.fadeOut('fast', function () {
flyerClone.remove();
$('body').removeClass('enable-leo-fly-cart');
});
if (typeof type_flycart_effect != 'undefined')
{
if (type_flycart_effect == 'shake')
{
obj_element.parents('.leo-fly-cart').find('.leo-fly-cart-total').css({'opacity':0});
setTimeout(function () {
obj_element.effect("shake", {
times: 2
}, 200, function(){
obj_element.parents('.leo-fly-cart').find('.leo-fly-cart-total').css({'opacity':1});
});
}, 500);
}
if (type_flycart_effect == 'fade')
{
obj_element.fadeOut('fast', function () {
obj_element.fadeIn('fast', function () {
});
});
}
}
// obj_element.fadeOut('fast', function () {
// obj_element.fadeIn('fast', function () {
// flyerClone.fadeOut('fast', function () {
// flyerClone.remove();
// });
// });
// });
});
// var divider = 1;
// var imgclone = product_img.clone()
// .offset({
// top: product_img.offset().top,
// left: product_img.offset().left
// })
// .css({
// 'opacity': '0.5',
// 'position': 'absolute',
// 'height': product_img.width()/divider,
// 'width': product_img.height()/divider,
// 'z-index': '100'
// })
// .appendTo($('body'))
// .animate({
// 'top': obj_element.offset().top + 10,
// 'left': obj_element.offset().left + 10,
// 'width': product_img.width()/divider/2,
// 'height': product_img.height()/divider/2
// }, 1000, 'easeInOutExpo');
// setTimeout(function () {
// obj_element.effect("shake", {
// times: 2
// }, 200);
// }, 1500);
// imgclone.animate({
// 'width': 0,
// 'height': 0
// }, function () {
// $(this).detach()
// });
}
}
//DONGND:: event for fly cart slidebar
function activeEventFlyCartSlideBar()
{
$('.leo-fly-cart-mask, .leo-fly-cart-slidebar .leo-fly-cart-icon, .leo-fly-cart-slidebar .leo-fly-cart-icon-wrapper, .leo-fly-cart-slidebar .leo-fly-cart').click(function(){
// console.log('test');
$('.leo-fly-cart-mask.active').removeClass('active');
$('.leo-fly-cart-icon.active-slidebarcart').removeClass('active-slidebarcart');
$('.leo-blockcart.cart-preview.active-slidebarcart').removeClass('active-slidebarcart');
$('body.leoflycart-active-push main').css({
"-moz-transform": "translateX(0px)",
"-webkit-transform": "translateX(0px)",
"-o-transform": "translateX(0px)",
"-ms-transform": "translateX(0px)",
"transform": "translateX(0px)",
"-moz-transform": "translateY(0px)",
"-webkit-transform": "translateY(0px)",
"-o-transform": "translateY(0px)",
"-ms-transform": "translateY(0px)",
"transform": "translateY(0px)",
});
setTimeout(function(){
$('body').removeClass('leoflycart-active-slidebar leoflycart-active-push');
},300);
$('.leo-fly-cart-slidebar.active').removeClass('active');
});
$(document).keyup(function(e) {
//DONGND:: press esc
if (e.keyCode == 27) {
if ($('.leo-fly-cart-mask').hasClass('active'))
{
$('.leo-fly-cart-mask.active').trigger('click');
}
else if ($('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length)
{
$('.leo-fly-cart-slidebar .leo-fly-cart-icon').trigger('click');
}
}
});
}
//DONGND:: update scroll bar for slidebar cart
function checkFlyCartScrollBar($element)
{
var object_parent = $element.parents('.leo-fly-cart-slidebar');
if (object_parent.hasClass('slidebar_top') || object_parent.hasClass('slidebar_bottom'))
{
// console.log('test');
var width_bottom = object_parent.find('.leo-dropdown-bottom').outerWidth();
var window_width = $(window).width();
var element_width = '';
if (typeof width_cart_item != 'undefined')
{
element_width = $element.find('.leo-dropdown-cart-item').length * width_cart_item;
}
else
{
element_width = $element.find('.leo-dropdown-cart-item').length * $element.find('.leo-dropdown-cart-item').outerWidth();
}
// console.log(width_bottom);
// console.log(element_width);
// console.log(window_width);
if (element_width+width_bottom > window_width)
{
object_parent.addClass('active-scroll');
object_parent.find('.leo-dropdown-list-item-warpper').addClass('active-scrollbar');
object_parent.find('.leo-dropdown-list-item-warpper').css({'width': window_width-width_bottom});
object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar({
theme:"dark",
axis: "x",
scrollInertia: 200,
callbacks:{
onInit:function(){
}
},
advanced:{
autoExpandHorizontalScroll:true
},
keyboard:{
enable:true,
// scrollType:"stepless",
// scrollAmount:"auto"
}
});
object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar('update');
}
else
{
object_parent.removeClass('active-scroll');
object_parent.find('.leo-dropdown-list-item-warpper').removeClass("active-scrollbar").css({'width': 'auto'});
object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar("destroy");
}
}
if (object_parent.hasClass('slidebar_left') || object_parent.hasClass('slidebar_right'))
{
var height_bottom = object_parent.find('.leo-dropdown-bottom').outerHeight();
var window_height = $(window).height();
var element_height = '';
if (typeof height_cart_item != 'undefined')
{
element_height = $element.find('.leo-dropdown-cart-item').length * height_cart_item;
}
else
{
element_height = $element.find('.leo-dropdown-cart-item').length * $element.find('.leo-dropdown-cart-item').outerHeight();
}
if (element_height+height_bottom > window_height)
{
object_parent.addClass('active-scroll');
$element.addClass('active-scrollbar');
$element.css({'max-height': window_height-height_bottom});
$element.mCustomScrollbar({
theme:"dark",
scrollInertia: 200,
callbacks:{
onInit:function(){
}
},
keyboard:{
enable:true,
// scrollType:"stepless",
// scrollAmount:"auto"
}
});
$element.mCustomScrollbar('update');
}
else
{
object_parent.removeClass('active-scroll');
$element.removeClass("active-scrollbar").css({'max-height': 'none'});
$element.mCustomScrollbar("destroy");
}
}
}
//DONGND:: update scroll bar for dropdown/dropup
function checkFlyCartScrollBarDropDown($element)
{
var object_parent = $element.parents('.leo-fly-cart.type-fixed.enable-dropdown');
var type = object_parent.data('type');
var height_bottom = object_parent.find('.leo-dropdown-bottom').outerHeight();
var height_real = height_cart_item*$element.find('.leo-dropdown-cart-item').length;
var height_icon = object_parent.find('.leo-fly-cart-icon-wrapper').outerHeight();
var window_height = $(window).height();
var check_number_cartitem = 3;
if (typeof number_cartitem_display != 'undefined')
{
check_number_cartitem = number_cartitem_display;
}
var height_default = height_cart_item*number_cartitem_display;
if (object_parent.length > 0 && type == 'dropup' && height_real+height_bottom > object_parent.position().top && height_default+height_bottom > object_parent.position().top)
{
// console.log('test0');
$element.addClass('active-scrollbar').css({'max-height': object_parent.position().top-height_icon-height_bottom});
$element.mCustomScrollbar({
theme:"dark",
scrollInertia: 200,
callbacks:{
onInit:function(){
}
},
keyboard:{
enable:true,
}
});
$element.mCustomScrollbar('update');
}
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)
{
// console.log('test1');
$element.addClass('active-scrollbar').css({'max-height': $(window).height()-object_parent.position().top-height_icon-height_bottom});
$element.mCustomScrollbar({
theme:"dark",
scrollInertia: 200,
callbacks:{
onInit:function(){
}
},
keyboard:{
enable:true,
}
});
$element.mCustomScrollbar('update');
}
else if ($element.find('.leo-dropdown-cart-item').length > check_number_cartitem)
{
// console.log('test2');
// console.log($(this).find('.leo-dropdown-cart-item').innerHeight());
if (typeof height_cart_item != 'undefined')
{
$element.addClass('active-scrollbar').css({'max-height': height_cart_item*number_cartitem_display});
}
else
{
$element.addClass('active-scrollbar').css({'max-height': $element.find('.leo-dropdown-cart-item').outerHeight()*check_number_cartitem});
}
$element.mCustomScrollbar({
theme:"dark",
scrollInertia: 200,
callbacks:{
onInit:function(){
}
},
keyboard:{
enable:true,
// scrollType:"stepless",
// scrollAmount:"auto"
}
});
// $(this).mCustomScrollbar('update');
// if ($scrollToElement != false)
// {
// $(this).mCustomScrollbar('scrollTo',$(this).find('.mCSB_container').find('.leo-dropdown-cart-item:eq('+$scrollToElement+')'),{scrollInertia:0});
// }
// $(this).scrollbar();
}
else
{
// console.log('test3');
// object_parent.removeClass('active-scroll');
$element.removeClass("active-scrollbar").css({'max-height': 'none'});
$element.mCustomScrollbar("destroy");
}
}
//DONGND:: set class by position of fly cart icon
function getOffsetFlycartIcon()
{
if ($('.leo-fly-cart.solo .leo-fly-cart-icon').length)
{
var offset_top = $('.leo-fly-cart.solo .leo-fly-cart-icon').offset().top;
var offset_left = $('.leo-fly-cart.solo .leo-fly-cart-icon').offset().left;
var window_width = $(window).width();
if (offset_left <= window_width/2)
{
$('.leo-fly-cart.solo').removeClass('offset-right').addClass('offset-left');
}
else
{
$('.leo-fly-cart.solo').removeClass('offset-left').addClass('offset-right');
}
//DONGND:: update rtl
if (lf_is_gen_rtl && prestashop.language.is_rtl == 1)
{
if ($('.leo-fly-cart.solo').hasClass('offset-right'))
{
$('.leo-fly-cart.solo').removeClass('offset-right').addClass('offset-left');
}
else if ($('.leo-fly-cart.solo').hasClass('offset-left'))
{
$('.leo-fly-cart.solo').removeClass('offset-left').addClass('offset-right');
}
}
}
}
//DONGND:: show modal popup cart
function showModalPopupCart(modal)
{
if ($('#blockcart-modal').length)
{
$('#blockcart-modal').remove();
}
$('body').append(modal);
$('#blockcart-modal').modal('show');
}