Files
2024-11-05 12:22:50 +01:00

1463 lines
57 KiB
JavaScript

/**
* @Website: apollotheme.com - prestashop template provider
* @author Apollotheme <apollotheme@gmail.com>
* @copyright Apollotheme
* @description:
*/
/**
* Start block functions common for front-end
*/
(function ($) {
$.LeoCustomAjax = function () {
this.leoData = 'leoajax=1';
};
$.LeoCustomAjax.prototype = {
processAjax: function () {
var myElement = this;
if (leoOption.category_qty && $(".leo-qty").length)
myElement.getCategoryList();
else if ($(".leo-qty").length)
$(".leo-qty").remove();
if (leoOption.product_list_image && $(".leo-more-info").length)
myElement.getProductListImage();
else if ($(".leo-more-info").length)
$(".leo-more-info").remove();
if (leoOption.product_one_img && $(".product-additional").length)
myElement.getProductOneImage();
else if ($(".product-additional").length)
$(".product-additional").remove();
if (leoOption.product_one_img && $(".product-attribute-additional").length)
myElement.getProductAttributeOneImage();
else if ($(".product-attribute-additional").length)
$(".product-attribute-additional").remove();
if (leoOption.product_one_img && $(".product-all-additional").length)
myElement.getProductAllOneImage();
else if ($(".product-all-additional").length)
$(".product-all-additional").remove();
if (leoOption.productCdown && $(".leo-more-cdown").length)
myElement.getProductCdownInfo();
else if ($(".leo-more-cdown").length)
$(".leo-more-cdown").remove();
if (leoOption.productCdown && $(".leo-more-color").length)
myElement.getProductColorInfo();
else if ($(".leo-more-color").length)
$(".leo-more-color").remove();
if($(".product-item-size").length)
myElement.getSizeContent();
if($(".product-item-attribute").length)
myElement.getAttributeContent();
if($(".product-item-manufacture").length)
myElement.getManufactureName();
if($(".leo-ajax-tabs").length)
myElement.getTabContent();
//find class ap-count-wishlist-compare
if($('.ap-total-wishlist').length || $('.ap-total-compare').length)
{
myElement.getCountWishlistCompare();
}
if (myElement.leoData != "leoajax=1") {
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: prestashop.urls.base_url + 'modules/appagebuilder/apajax.php' + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType: "json",
data: myElement.leoData,
success: function (jsonData) {
if (jsonData) {
if (jsonData.cat) {
for (i = 0; i < jsonData.cat.length; i++) {
var str = jsonData.cat[i].total;
var label = $(".leo-qty.leo-cat-" + jsonData.cat[i].id_category).data("str");
if(typeof label != "undefined") {
str += "<span>" + label + "</span>";
}
$(".leo-qty.leo-cat-" + jsonData.cat[i].id_category).html(str);
$(".leo-qty.leo-cat-" + jsonData.cat[i].id_category).show();
}
$('.leo-qty').each(function(){
if($(this).html() == '')
{
$(this).html('0');
$(this).show();
}
})
}
if (jsonData.product_list_image) {
var listProduct = new Array();
for (i = 0; i < jsonData.product_list_image.length; i++) {
listProduct[jsonData.product_list_image[i].id] = jsonData.product_list_image[i].content;
}
$(".leo-more-info").each(function () {
$(this).html(listProduct[$(this).data("idproduct")]);
});
addEffectProducts();
}
if (jsonData.pro_cdown) {
var listProduct = new Array();
for (i = 0; i < jsonData.pro_cdown.length; i++) {
listProduct[jsonData.pro_cdown[i].id] = jsonData.pro_cdown[i].content;
}
$(".leo-more-cdown").each(function () {
$(this).html(listProduct[$(this).data("idproduct")]);
});
}
if (jsonData.pro_color) {
var listProduct = new Array();
for (i = 0; i < jsonData.pro_color.length; i++) {
listProduct[jsonData.pro_color[i].id] = jsonData.pro_color[i].content;
}
$(".leo-more-color").each(function () {
$(this).html(listProduct[$(this).data("idproduct")]);
});
}
if (jsonData.product_one_img) {
var listProductImg = new Array();
var listProductName = new Array();
for (i = 0; i < jsonData.product_one_img.length; i++) {
listProductImg[jsonData.product_one_img[i].id] = jsonData.product_one_img[i].content;
listProductName[jsonData.product_one_img[i].id] = jsonData.product_one_img[i].name;
}
iw = 360;
ih = 360;
if (typeof leoOption.homeWidth !== 'undefined') {
iw = leoOption.homeWidth;
ih = leoOption.homeheight;
}else{
iw = $('.product_img_link .img-fluid').first().attr('width');
ih = $('.product_img_link .img-fluid').first().attr('height');
}
$(".product-additional").each(function () {
if (listProductImg[$(this).data("idproduct")]) {
var str_image = listProductImg[$(this).data("idproduct")];
if ($(this).data("image-type")) {
src_image = str_image.replace('home_default',$(this).data("image-type"));
}else{
src_image = str_image.replace('home_default', 'home_default');
}
var name_image = listProductName[$(this).data("idproduct")];
$(this).html('<img class="img-fluid" title="'+name_image+'" alt="'+name_image+'" src="' + src_image + '" width="'+iw+'" height="'+ih+'"/>');
}
});
//addEffOneImg();
}
if (jsonData.product_attribute_one_img) {
var listProductImg = new Array();
var listProductName = new Array();
for (i = 0; i < jsonData.product_attribute_one_img.length; i++) {
listProductImg[jsonData.product_attribute_one_img[i].id] = jsonData.product_attribute_one_img[i].content;
listProductName[jsonData.product_attribute_one_img[i].id] = jsonData.product_attribute_one_img[i].name;
}
iw = 360;
ih = 360;
if (typeof leoOption.homeWidth !== 'undefined') {
iw = leoOption.homeWidth;
ih = leoOption.homeheight;
}else{
iw = $('.product_img_link .img-fluid').first().attr('width');
ih = $('.product_img_link .img-fluid').first().attr('height');
}
$(".product-attribute-additional").each(function () {
if (listProductImg[$(this).closest('.js-product-miniature').data("id-product")]) {
var str_image = listProductImg[$(this).closest('.js-product-miniature').data("id-product")];
if ($(this).data("image-type")) {
src_image = str_image.replace('home_default',$(this).data("image-type"));
}else{
src_image = str_image.replace('home_default', 'home_default');
}
var name_image = listProductName[$(this).closest('.js-product-miniature').data("id-product")];
$(this).html('<img class="img-fluid" title="'+name_image+'" alt="'+name_image+'" src="' + src_image + '" width="'+iw+'" height="'+ih+'"/>');
}
});
//addEffOneImg();
}
if (jsonData.product_attribute) {
if (typeof jsonData.product_attribute.attribute !== 'undefined') {
$.each( jsonData.product_attribute.attribute, function( key, value ) {
$('.product-attribute-'+key).html(value);
$('.product-attribute-'+key).removeClass('product-item-attribute');
});
}
if (typeof jsonData.product_attribute.size !== 'undefined') {
$.each( jsonData.product_attribute.size, function( key, value ) {
$('.product-size-'+key).html(value);
$('.product-size-'+key).removeClass('product-item-size');
});
}
}
if (jsonData.product_manufacture) {
$.each( jsonData.product_manufacture, function( key, value ) {
$('.product-manufacture-'+key).html(value);
$('.product-manufacture-'+key).removeClass('product-item-manufacture');
});
}
if (jsonData.product_all_one_img) {
var listProductImg = new Array();
var listProductName = new Array();
for (i = 0; i < jsonData.product_all_one_img.length; i++) {
listProductImg[jsonData.product_all_one_img[i].id] = jsonData.product_all_one_img[i].content;
listProductName[jsonData.product_all_one_img[i].id] = jsonData.product_all_one_img[i].name;
}
iw = 360;
ih = 360;
if (typeof leoOption.homeWidth !== 'undefined') {
iw = leoOption.homeWidth;
ih = leoOption.homeheight;
}else{
iw = $('.product_img_link .img-fluid').first().attr('width');
ih = $('.product_img_link .img-fluid').first().attr('height');
}
$(".product-all-additional").each(function () {
if (listProductImg[$(this).closest('.js-product-miniature').data("id-product")]) {
var str_image = listProductImg[$(this).closest('.js-product-miniature').data("id-product")];
if ($(this).data("image-type")) {
src_image = str_image.replace('home_default',$(this).data("image-type"));
}else{
src_image = str_image.replace('home_default', 'home_default');
}
var name_image = listProductName[$(this).closest('.js-product-miniature').data("id-product")];
$(this).html('<img class="img-fluid" title="'+name_image+'" alt="'+name_image+'" src="' + src_image + '" width="'+iw+'" height="'+ih+'"/>');
}
});
//addEffOneImg();
}
//wishlist
if (jsonData.wishlist_products)
{
$('.ap-total-wishlist').data('wishlist-total',jsonData.wishlist_products);
$('.ap-total-wishlist').text(jsonData.wishlist_products);
}
else
{
$('.ap-total-wishlist').data('wishlist-total',0);
$('.ap-total-wishlist').text('0');
}
//compare
if (jsonData.compared_products)
{
$('.ap-total-compare').data('compare-total',jsonData.compared_products);
$('.ap-total-compare').text(jsonData.compared_products);
}
else
{
$('.ap-total-compare').data('compare-total',0);
$('.ap-total-compare').text(0);
}
if (jsonData.ajaxTab) {
callshowmore = callajaxcontent = 0;
$(".leo-ajax-tabs").addClass('loaded');
$.each( jsonData.ajaxTab, function( key, value ) {
$("#"+key).html(value);
if(value.indexOf('ApProductList') >= 0){
callshowmore = 1;
}
if(value.indexOf('product_list') >= 0){
callajaxcontent = 1;
}
});
if(callshowmore){
apshowmore();
}
if(callajaxcontent){
if (typeof $.LeoCustomAjax !== "undefined" && $.isFunction($.LeoCustomAjax)) {
var leoCustomAjax = new $.LeoCustomAjax();
leoCustomAjax.processAjax();
}
//DONGND:: class function of leofeature
callLeoFeature();
//DONGND:: re call run animation
activeAnimation();
}
}
}
},
error: function () {
}
});
}
},
//check get number product of wishlist compare
getCountWishlistCompare: function()
{
this.leoData += '&wishlist_compare=1';
},
getCategoryList: function () {
//get category id
var leoCatList = "";
$(".leo-qty").each(function () {
if($(this).data("id")){
if (leoCatList)
leoCatList += "," + $(this).data("id");
else
leoCatList = $(this).data("id");
}else{
if (leoCatList)
leoCatList += "," + $(this).attr("id");
else
leoCatList = $(this).attr("id");
}
});
if (leoCatList) {
leoCatList = leoCatList.replace(/leo-cat-/g, "");
this.leoData += '&cat_list=' + leoCatList;
}
return false;
},
getProductListImage: function () {
var leoProInfo = "";
$(".leo-more-info").each(function () {
if (!leoProInfo)
leoProInfo += $(this).data("idproduct");
else
leoProInfo += "," + $(this).data("idproduct");
});
if (leoProInfo) {
this.leoData += '&product_list_image=' + leoProInfo;
}
return false;
},
getProductCdownInfo: function () {
var leoProCdown = "";
$(".leo-more-cdown").each(function () {
if (!leoProCdown)
leoProCdown += $(this).data("idproduct");
else
leoProCdown += "," + $(this).data("idproduct");
});
if (leoProCdown) {
this.leoData += '&pro_cdown=' + leoProCdown;
}
return false;
},
getProductColorInfo: function () {
var leoProColor = "";
$(".leo-more-color").each(function () {
if (!leoProColor)
leoProColor += $(this).data("idproduct");
else
leoProColor += "," + $(this).data("idproduct");
});
if (leoProColor) {
this.leoData += '&pro_color=' + leoProColor;
}
return false;
},
getTabContent: function () {
var tabshortcode = "";
var tabshortcodekey = "";
$(".leo-ajax-tabs").each(function () {
if(!$(this).hasClass('loaded')){
if (!tabshortcode)
tabshortcode += $(this).data("shortcode");
else
tabshortcode += "@|@" + $(this).data("shortcode");
if (!tabshortcodekey)
tabshortcodekey += $(this).attr("id");
else
tabshortcodekey += "@|@" + $(this).attr("id");
if(!$(this).find('slick-loading').length){
$(this).html('<div class="slick-loading" style="display: block;"><div class="slick-list" style="height: 600px;"> </div></div>');
}
}
});
if (tabshortcode) {
this.leoData += '&tabshortcode=' + tabshortcode;
}
if (tabshortcode) {
this.leoData += '&tabshortcodekey=' + tabshortcodekey;
//get category
if (tabshortcode && $('input:radio[name=ajaxtabcate]').length && $('input:radio[name=ajaxtabcate]:checked').val()) {
this.leoData += '&ajaxtabcate=' + $('input:radio[name=ajaxtabcate]:checked').val();
}
}
return false;
},
getSizeContent: function () {
//tranditional image
var leoAdditional = "";
$(".product-item-size").each(function () {
if (!leoAdditional)
leoAdditional += $(this).data("idproduct");
else
leoAdditional += "," + $(this).data("idproduct");
});
if (leoAdditional) {
this.leoData += '&product_size=' + leoAdditional;
}
return false;
},
getAttributeContent: function () {
//tranditional image
var leoAdditional = "";
$(".product-item-attribute").each(function () {
if (!leoAdditional)
leoAdditional += $(this).data("idproduct");
else
leoAdditional += "," + $(this).data("idproduct");
});
if (leoAdditional) {
this.leoData += '&product_attribute=' + leoAdditional;
}
return false;
},
getManufactureName: function () {
//tranditional image
var leoAdditional = "";
var testArray = [];
$(".product-item-manufacture").each(function () {
if (!leoAdditional){
leoAdditional += $(this).data("idmanufacturer");
testArray.push($(this).data("idmanufacturer"));
}
else{
if(testArray.indexOf($(this).data("idmanufacturer")) < 0){
leoAdditional += "," + $(this).data("idmanufacturer");
testArray.push($(this).data("idmanufacturer"));
}
}
});
if (leoAdditional) {
this.leoData += '&product_manufacture=' + leoAdditional;
}
return false;
},
getProductOneImage: function () {
//tranditional image
var leoAdditional = "";
$(".product-additional").each(function () {
if (!leoAdditional)
leoAdditional += $(this).data("idproduct");
else
leoAdditional += "," + $(this).data("idproduct");
});
if (leoAdditional) {
this.leoData += '&product_one_img=' + leoAdditional;
}
return false;
},
getProductAttributeOneImage: function () {
//tranditional image
var leoAdditionalattribute = "0-0";
$(".product-attribute-additional").each(function () {
leoAdditionalattribute += "," + $(this).closest('.js-product-miniature').data("id-product") + '-' + $(this).closest('.js-product-miniature').data("id-product-attribute");
});
if (leoAdditionalattribute && leoAdditionalattribute != '0-0') {
this.leoData += '&product_attribute_one_img=' + leoAdditionalattribute;
}
return false;
},
getProductAllOneImage: function () {
//tranditional image
var leoAdditional = "0";
var image_product = "0";
$(".product-all-additional").each(function () {
leoAdditional += "," + $(this).closest('.js-product-miniature').data("id-product");
image_product += "," + $(this).data("id-image");
});
if (leoAdditional) {
this.leoData += '&product_all_one_img=' + leoAdditional + '&image_product=' + image_product;;
}
return false;
},
};
}(jQuery));
function addJSProduct(currentProduct) {
// http://demos.flesler.com/jquery/serialScroll/
// if (typeof serialScroll == 'function') {
$('.thumbs_list_' + currentProduct).serialScroll({
items: 'li:visible',
prev: '.view_scroll_left_' + currentProduct,
next: '.view_scroll_right_' + currentProduct,
axis: 'y',
offset: 0,
start: 0,
stop: true,
duration: 700,
step: 1,
lazy: true,
lock: false,
force: false,
cycle: false,
onBefore: function( e, elem, $pane, $items, pos ){
//DONGND:: update status for button
if( pos == 0 )
{
$('.view_scroll_left_' + currentProduct).addClass('disable');
}
else if( pos == $items.length -1 )
{
$('.view_scroll_right_' + currentProduct).addClass('disable');
}
else
{
$('.view_scroll_left_' + currentProduct).removeClass('disable');
$('.view_scroll_right_' + currentProduct).removeClass('disable');
}
},
});
$('.thumbs_list_' + currentProduct).trigger('goto', 1);// SerialScroll Bug on goto 0 ?
$('.thumbs_list_' + currentProduct).trigger('goto', 0);
// }
}
function addEffectProducts(){
if(typeof(leoOption) != 'undefined' && leoOption.product_list_image){
$(".leo-more-info").each(function() {
addJSProduct($(this).data("idproduct"));
});
addEffectProduct();
}
}
function addEffectProduct() {
var speed = 800;
var effect = "easeInOutQuad";
//$(".products_block .carousel-inner .ajax_block_product:first-child").mouseenter(function() {
//$(".products_block .carousel-inner").css("overflow", "inherit");
//});
//$(".carousel-inner").mouseleave(function() {
//$(".carousel-inner").css("overflow", "hidden");
//});
$(".leo-more-info").each(function() {
var leo_preview = this;
$(leo_preview).find(".leo-hover-image").each(function() {
$(this).mouseover(function() {
var big_image = $(this).attr("rel");
var imgElement = $(leo_preview).parent().find(".product-thumbnail img").first();
if (!imgElement.length) {
imgElement = $(leo_preview).parent().find(".product_image img").first();
}
if (imgElement.length) {
$(imgElement).stop().animate({opacity: 0}, {duration: speed, easing: effect});
$(imgElement).first().attr("src", big_image);
$(imgElement).first().attr("data-rel", big_image);
$(imgElement).stop().animate({opacity: 1}, {duration: speed, easing: effect});
}
//DONGND:: change class when hover another image
if (!$(this).hasClass('shown'))
{
$(leo_preview).find('.shown').removeClass('shown');
$(this).parent().addClass('shown');
}
});
});
$('.thickbox-ajax-'+$(this).data("idproduct")).fancybox({
helpers: {
overlay: {
locked: false
}
},
'hideOnContentClick': true,
'transitionIn' : 'elastic',
'transitionOut' : 'elastic'
});
});
}
function addEffOneImg() {
var speed = 800;
var effect = "easeInOutQuad";
$(".product-additional").each(function() {
if ($(this).find("img").length) {
var leo_hover_image = $(this).parent().find("img").first();
var leo_preview = $(this);
$(this).parent().mouseenter(function() {
$(this).find("img").first().stop().animate({opacity: 0}, {duration: speed, easing: effect});
$(leo_preview).stop().animate({opacity: 1}, {duration: speed, easing: effect});
});
$(this).parent().mouseleave(function() {
$(this).find("img").first().stop().animate({opacity: 1}, {duration: speed, easing: effect});
$(leo_preview).stop().animate({opacity: 0}, {duration: speed, easing: effect});
});
}
});
}
function log(message) {
console.log(message);
}
//DONGND:: action animation
function activeAnimation()
{
$(".has-animation").each(function() {
onScrollInit($(this));
});
}
function onScrollInit(items) {
items.each(function() {
var osElement = $(this);
var animation = $(osElement).data("animation");
var osAnimationDelay = $(osElement).data("animation-delay");
var osAnimationDuration = $(osElement).data("animation-duration");
var osAnimationIterationCount = $(osElement).data("animation-iteration-count");
var osAnimationInfinite = $(osElement).data("animation-infinite");
if (osAnimationInfinite == 1)
{
var loop_animation = 'infinite';
}
else
{
var loop_animation = osAnimationIterationCount;
}
osElement.css({
"-webkit-animation-delay": osAnimationDelay,
"-moz-animation-delay": osAnimationDelay,
"animation-delay": osAnimationDelay,
"-webkit-animation-duration": osAnimationDuration,
"-moz-animation-duration": osAnimationDuration,
"animation-duration": osAnimationDuration,
"-webkit-animation-iteration-count": loop_animation,
"-moz-animation-iteration-count": loop_animation,
"animation-iteration-count": loop_animation,
});
osElement.waypoint(function() {
if (osElement.hasClass('has-animation'))
{
osElement.addClass('animated '+ animation).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
$(this).removeClass('has-animation animated ' +animation);
});
}
this.destroy();
}, {
triggerOnce: true,
offset: '100%'
});
});
}
/**
* End block functions common for front-end
*/
/**
* End block for module ap_gmap
*/
function synSize(name) {
var obj = $("#" + name);
var div = $(obj).closest(".gmap-cover");
var gmap = $(div).find(".gmap");
$(obj).height($(gmap).height());
//console.log($(gmap).height());
}
function apshowmore(){
/**
* Start block for module ap_product_list
*/
$(".btn-show-more").click(function() {
var page = parseInt($(this).data('page'));
var use_animation = parseInt($(this).data('use-animation'));
var btn = $(this);
var config = $(this).closest(".ApProductList").find(".apconfig").val();
// FIX 1.7
btn.data('reset-text', btn.html() );
btn.html( btn.data('loading-text') );
$.ajax({
headers: {"cache-control": "no-cache"},
url: prestashop.urls.base_url + 'modules/appagebuilder/apajax.php',
async: true,
cache: false,
dataType: "Json",
data: {"config": config, "p": page, "use_animation": use_animation},
success: function(response) {
var boxCover = $(btn).closest(".box-show-more");
if(!response.is_more) {
$(boxCover).removeClass("open").fadeOut();
}
if(response.html) {
$(boxCover).prev().append(response.html);
}
$(btn).data("page", (page + 1));
if (typeof $.LeoCustomAjax !== "undefined" && $.isFunction($.LeoCustomAjax)) {
var leoCustomAjax = new $.LeoCustomAjax();
leoCustomAjax.processAjax();
}
//DONGND:: class function of leofeature
callLeoFeature();
//DONGND:: re call run animation
activeAnimation();
}
}).always(function () {
// FIX 1.7
btn.html( btn.data('reset-text') );
});
});
/**
* End block for module ap_product_list
*/
/**
* Start block for module ap_image
*/
/**
* End block for module ap_image
*/
}
(function ($) {
window.addRule = function (selector, styles, sheet) {
styles = (function (styles) {
if (typeof styles === "string") return styles;
var clone = "";
for (var prop in styles) {
if (styles.hasOwnProperty(prop)) {
var val = styles[prop];
prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase(); // convert to dash-case
clone += prop + ":" + (prop === "content" ? '"' + val + '"' : val) + "; ";
}
}
return clone;
}(styles));
try {
sheet = sheet || document.styleSheets[document.styleSheets.length - 1];
if (sheet.insertRule)
{
// if(!(navigator.userAgent.toLowerCase().indexOf('firefox') > -1)) // FIX work on firefox
// {
if(sheet.cssRules!==null && sheet.cssRules.length!== 0)
sheet.insertRule(selector + " {" + styles + "}", sheet.cssRules.length);
// }
}
else if (sheet.addRule) sheet.addRule(selector, styles);
}
catch(err) {
// way 2 : https://stackoverflow.com/questions/28930846/how-to-use-cssstylesheet-insertrule-properly
var style = (function() {
var style = document.createElement("style");
style.appendChild(document.createTextNode(""));
document.head.appendChild(style);
return style;
})();
style.sheet.insertRule(selector + " {" + styles + "}", 0);
}
// window.console.log(sheet);
// window.console.log(selector);
// window.console.log(styles);
return this;
};
if ($) $.fn.addRule = function (styles, sheet) {
addRule(this.selector, styles, sheet);
return this;
};
}(this.jQuery || this.Zepto));
function apPopupForm(){
if($.cookie('apnewletter')) return;
$.fancybox({
'content' : $(".ap-popup").html(),
'wrapCSS' : 'ap-popup-clone',
afterClose: function (event, ui) {
},
beforeShow: function (event, ui) {
this.inner.append("<div class='turnoff-popup-wrapper text-center'><input id='turnoff-popup-bt' name='turnoff-popup-bt' class='turnoff-popup' type='checkbox'><label for='turnoff-popup-bt'>"+turnoff_popup_text+"</label></div>");
$("body").find("#turnoff-popup-bt").trigger('click');
$.cookie('apnewletter', '1');
$('.turnoff-popup').addClass('active');
$('.turnoff-popup').click(function(){
if (!$(this).hasClass('active'))
{
$.cookie('apnewletter', '1');
$(this).addClass('active');
}
else
{
$.cookie('apnewletter', null);
$(this).removeClass('active');
}
})
}
});
}
//set background and parallax
$(document).ready(function(){
//ap product list show more
if($(".btn-show-more").length) apshowmore();
//DONGND:: call active anmation
activeAnimation();
if($(".ajaxtabcate").length){
$('input:radio[name=ajaxtabcate]').click(function() {
$(".leo-ajax-tabs").each(function(){
//if have product
if($(this).find(".product-image").length || $(this).find(".product-title").length){
$(this).removeClass('loaded');
if (typeof $.LeoCustomAjax !== "undefined" && $.isFunction($.LeoCustomAjax)) {
var leoCustomAjax = new $.LeoCustomAjax();
leoCustomAjax.processAjax();
}
}
});
});
}
if($(".tabs-dropdown-menu").length){
$(".tabs-dropdown-menu").each(function(){
wraper = $(this).parent();
tabdrop = $(this);
if($(this).hasClass("selecttext")){
nav_active = $(wraper).find(".nav-link").first();
$(this).find('button').html($(nav_active).find("span").html());
}
$(this).find('.dropdown-item').first().addClass('active');
$(wraper).find('.nav-link').click(function(){
if($(this).hasClass('active')){
return;
}
$(tabdrop).find('.dropdown-item').removeClass('active');
cclass = $(this).attr('class');
var strArray = cclass.split(" ");
formClass = "";
for(var i = 0; i < strArray.length; i++){
if(strArray[i].indexOf('form') >=0 ){
formClass = strArray[i];
break;
}
}
$(wraper).find('.dropdown-item.'+formClass).addClass('active');
});
$(tabdrop).find('.dropdown-item').click(function(){
$(wraper).find('.nav-link').removeClass('active');
cclass = $(this).attr('class');
var strArray = cclass.split(" ");
formClass = "";
for(var i = 0; i < strArray.length; i++){
if(strArray[i].indexOf('form') >=0 ){
formClass = strArray[i];
break;
}
}
$(wraper).find('.nav-link.'+formClass).trigger('click');
});
});
}
//show popup
if($('.ap-popup').length){
if($('.ap-popup').hasClass('index-only') && $('body').attr('id') == 'index')
apPopupForm();
else
apPopupForm();
}
$(".has-bg.bg-fullwidth").each(function(){
id = "#"+$(this).attr("id");
bg = "";
if ($(this).data("src") !== undefined) bg = "url("+$(this).data("src")+")";
bg += $(this).data("bg_data");
$(id + ":before").addRule({
background: bg
});
});
//stela
if (typeof stellar !== 'undefined' && stellar)
$.stellar({horizontalScrolling:false});
//mouse
currentPosX = [];
currentPosY = [];
$("div[data-mouse-parallax-strength]").each(function(){
currentPos = $(this).css("background-position");
if (typeof currentPos == "string")
{
currentPosArray = currentPos.split(" ");
}else
{
currentPosArray = [$(this).css("background-position-x"),$(this).css("background-position-y")];
}
currentPosX[$(this).data("mouse-parallax-rid")] = parseFloat(currentPosArray[0]);
currentPosY[$(this).data("mouse-parallax-rid")] = parseFloat(currentPosArray[1]);
$(this).mousemove(function(e){
newPosX = currentPosX[$(this).data("mouse-parallax-rid")];
newPosY = currentPosY[$(this).data("mouse-parallax-rid")];
if($(this).data("mouse-parallax-axis") != "axis-y"){
mparallaxPageX = e.pageX - $(this).offset().left;
if($(this).hasClass("full-bg-screen"))
{
mparallaxPageX = mparallaxPageX - 1000;
}
newPosX = (mparallaxPageX * $(this).data("mouse-parallax-strength") * -1) + newPosX;
}
if($(this).data("mouse-parallax-axis") !="axis-x"){
mparallaxPageY = e.pageY - $(this).offset().top;
newPosY = mparallaxPageY * $(this).data("mouse-parallax-strength") * -1;
}
$(this).css("background-position",newPosX+"px "+newPosY+"px");
});
});
var ytIframeId; var ytVideoId;
function onYouTubeIframeAPIReady() {
$("div.iframe-youtube-api-tag").each(function(){
ytIframeId = $(this).attr("id");
ytVideoId = $(this).data("youtube-video-id");
new YT.Player(ytIframeId, {
videoId: ytVideoId,
width: "100%",
height: "100%",
playerVars :{autoplay:1,controls:0,disablekb:1,fs:0,cc_load_policy:0,
iv_load_policy:3,modestbranding:0,rel:0,showinfo:0,start:0},
events: {
"onReady": function(event){
event.target.mute();
setInterval(
function(){event.target.seekTo(0);},
(event.target.getDuration() - 1) * 1000
);
}
}
});
});
}
onYouTubeIframeAPIReady();
if (typeof MediaElementPlayer !== 'undefined') {
//add function for html5 youtube video
var player1 = new MediaElementPlayer('#special-youtube-video1');
var player2 = new MediaElementPlayer('#special-youtube-video2');
if(player1)
{
var auto_find = setInterval(function(){
if($('#video-1 .mejs-overlay-play').html())
{
$('#video-1 .mejs-overlay-play>.mejs-overlay-button').before('<div class="video-name">'+$('#special-youtube-video1').data('name')+'</div>');
$('#video-1 .mejs-overlay-play').append('<div class="video-description">Watch video and <span>subscribe us<span></div>');
clearInterval(auto_find);
}
}, 500);
}
if(player2)
{
var auto_find1 = setInterval(function(){
if($('#video-2 .mejs-overlay-play').html())
{
$('#video-2 .mejs-overlay-play>.mejs-overlay-button').before('<div class="video-name">'+$('#special-youtube-video2').data('name')+'</div>');
$('#video-2 .mejs-overlay-play').append('<div class="video-description">Watch video and <span>subscribe us<span></div>');
clearInterval(auto_find1);
}
}, 500);
}
}
//js for select header, footer, content in demo
current_url = window.location.href;
$('.apconfig').each(function(){
var enableJS = $(this).data('enablejs');
if(enableJS == false){
return;
}
var leochange = '&leopanelchange';
var current_url = $(this).data('url');
if( !current_url ){
current_url = window.location.href;
current_url = current_url.replace(leochange, "");
}
var param = $(this).data('type');
var value = $(this).data('id');
var re = new RegExp("([?|&])" + param + "=.*?(&|$)","i");
if (current_url.match(re))
$(this).attr('href', current_url.replace(re,'$1' + param + "=" + value + '$2') + leochange);
else{
if(current_url.indexOf('?') == -1)
$(this).attr('href', current_url + '?' + param + "=" + value + leochange);
else
$(this).attr('href', current_url + '&' + param + "=" + value + leochange);
}
});
//DONGND:: fix owl carousel in tab load delay when resize.
$(window).resize(function(){
if($('.tab-pane .owl-carousel').length)
{
$('.tab-pane .owl-carousel').each(function(index, element){
if(!$(element).parents('.tab-pane').hasClass('active') && typeof ($(element).data('owlCarousel')) !== "undefined")
{
var w_owl_active_tab = $(element).parents('.tab-pane').siblings('.active').find('.owl-carousel').width();
$(element).width(w_owl_active_tab);
$(element).data('owlCarousel').updateVars();
$(element).width('100%');
}
});
}
})
//DONGND:: loading owl carousel fake item
var check_window_w = parseInt($(window).width());
if (check_window_w >= 992 && check_window_w < 1200)
{
addClassLoading('lg');
}
else if (check_window_w >= 768 && check_window_w < 992)
{
addClassLoading('md');
}
else if (check_window_w >= 576 && check_window_w < 768)
{
addClassLoading('sm');
}
else if (check_window_w < 576)
{
addClassLoading('m');
}
else
{
addClassLoading('xl');
}
// swiper in mobile
if($('.list-images-mobile').length && $('.list-images-mobile').children().length > 1) {
$('.list-images-mobile').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: true,
infinite: false,
});
}
if($('.product-list-images-mobile').length) {
if ($('body').hasClass('lang-rtl')) {
$('.product-list-images-mobile').each(function(){
if ($(this).children().length > 1) {
$(this).slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: true,
infinite: false,
rtl: true
});
}
});
} else{
$('.product-list-images-mobile').each(function(){
if ($(this).children().length > 1) {
$(this).slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: true,
infinite: false,
});
}
});
}
//turn off swipe mode of owl-carousel when slide active on mobile
$( document ).ajaxComplete(function( event, xhr, settings ) {
if (settings.url.indexOf('apajax') > 0) {
$('.product-list-images-mobile').each(function(){
if($('.product-list-images-mobile').hasClass('slick-slider')){
function offSlideCarousel(selector){
selector.parents('.owl-item').on("touchstart mousedown", function(e) {
// Prevent carousel swipe
e.stopPropagation();
});
}
if (window.addEventListener) {
window.addEventListener("load", offSlideCarousel($(this)), false);
}
else if (window.attachEvent){
window.attachEvent("onload", offSlideCarousel($(this)));
}
else {
window.onload = offSlideCarousel($(this));
}
}
});
}
//fix swipe after ajax in category
if (settings.url.indexOf('from-xhr') > 0) {
if ($('body').hasClass('lang-rtl')) {
$('.product-list-images-mobile').each(function(){
if ($(this).children().length > 1) {
$(this).slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: true,
infinite: false,
rtl: true
});
}
});
} else{
$('.product-list-images-mobile').each(function(){
if ($(this).children().length > 1) {
$(this).slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: true,
infinite: false,
});
}
});
}
}
});
}
if($("body").attr("id") == "product") {
$( document ).ajaxComplete(function( event, xhr, settings ) {
if (settings.url.indexOf('controller=product') > 0) {
if($('.list-images-mobile').length && $('.list-images-mobile').children().length > 1) {
$('.list-images-mobile').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: true,
});
}
}
});
}
});
//DONGND:: add class loading by width of window
function addClassLoading($type)
{
$('.timeline-wrapper').each(function(){
if ($(this).data($type) <= $(this).data('item'))
{
var num_remove_item = $(this).data('item') - $(this).data($type);
if ($(this).data($type) < $(this).data('item'))
{
var num_remove_item = $(this).data('item') - $(this).data($type);
$(this).find('.timeline-parent').slice(-num_remove_item).remove();
}
if (12%$(this).data($type) == 0)
{
if ($type == 'm')
{
$(this).find('.timeline-parent').addClass('col-xs-'+12/$(this).data($type));
}
else
{
$(this).find('.timeline-parent').addClass('col-'+$type+'-'+12/$(this).data($type));
}
}
else
{
$(this).find('.timeline-parent').css({'width': 100/$(this).data($type)+'%', 'float': 'left'})
}
$('.timeline-wrapper').removeClass('prepare');
}
})
}
//DONGND:: call function from leofeature
function callLeoFeature()
{
if(typeof (leoBtCart) != 'undefined')
{
leoBtCart();
}
if(typeof (leoSelectAttr) != 'undefined')
{
leoSelectAttr();
}
if(typeof (LeoWishlistButtonAction) != 'undefined')
{
LeoWishlistButtonAction();
}
if(typeof (LeoCompareButtonAction) != 'undefined')
{
LeoCompareButtonAction();
}
if(typeof (actionQuickViewLoading) != 'undefined')
{
actionQuickViewLoading();
}
}
function SetOwlCarouselFirstLast(el){
el.find(".owl-item").removeClass("first");
el.find(".owl-item.active").first().addClass("first");
el.find(".owl-item").removeClass("last");
el.find(".owl-item.active").last().addClass("last");
}
/**
* List functions will run when document.ready()
*/
$(document).ready(function()
{
if(typeof (ap_list_functions) != 'undefined')
{
$.each(ap_list_functions, function(i, val) {
val();
ap_list_functions[i] = null;
});
}
//call function when ajax filter complete
if ($("body").attr("id") == "category" && $('#search_filters').length) {
$('.facet-label').on('click',function(){
$( document ).ajaxComplete(function( event, xhr, settings ) {
//click on filter call function
if(typeof xhr != "undefined" && typeof xhr.responseJSON != "undefined" && typeof xhr.responseJSON.products != "undefined"){
if(typeof (ap_list_functions) != 'undefined')
{
$.each(ap_list_functions, function(i, val) {
if(typeof val != "undefined" && val != null){
val();
ap_list_functions[i] = null;
}
});
}
}
});
});
}
});
/**
* List functions will run when window.load()
*/
$(window).load(function(){
if(typeof (ap_list_functions_loaded) != 'undefined')
{
for (var i = 0; i < ap_list_functions_loaded.length; i++) {
ap_list_functions_loaded[i]();
}
}
})
$(document).ready(function() {
if ($('#sitemap').length > 0) {
$('#sitemap .sitemap').prepend(leo_site_map);
}
if($('.lazy').length) {
$(function() {
$('.lazy').lazy({effect: 'fadeIn'});
});
$( document ).ajaxComplete(function() {
if($('.lazy').length) {
$('.lazy').lazy({effect: 'fadeIn'});
}
});
}
// REPLACE URL IN BLOCKLANGUAGES
if(typeof approfile_multilang_url != "undefined") {
$.each(approfile_multilang_url, function(index, profile){
var url_search = prestashop.urls.base_url + profile.iso_code;
var url_change = prestashop.urls.base_url + profile.iso_code + '/' + profile.friendly_url + '.html';
//console.log(url_change);
//DONGND:: update for module blockgrouptop and default
if ($('#leo_block_top').length)
{
var parent_o = $('#leo_block_top .language-selector');
}
else
{
var parent_o = $('.language-selector-wrapper');
}
parent_o.find('li a').each(function(){
var lang_href = $(this).attr('href');
if(lang_href.indexOf(url_search) > -1 )
{
//window.console.log('--' + url_change);
$(this).attr('href', url_change);
//window.console.log(url_change);
}
});
});
}
//DONGND:: update for module blockgrouptop and default
if ($('#leo_block_top').length)
{
var parent_o_currency = $('#leo_block_top .currency-selector');
}
else
{
var parent_o_currency = $('.currency-selector');
}
// REPLACE URL IN BLOCKLANGUAGES
parent_o_currency.find('li a').each(function(){
var url_link = $(this).attr('href');
var id_currency = getParamFromURL("id_currency", url_link);
var SubmitCurrency = getParamFromURL("SubmitCurrency", url_link);
var current_url = window.location.href;
//DONGND:: fix for only product page, url has #
if (prestashop.page.page_name == 'product')
{
var current_url = prestashop.urls.current_url;
}
var current_url = removeParamFromURL('SubmitCurrency',current_url);
var current_url = removeParamFromURL('id_currency',current_url);
if(current_url.indexOf('?') == -1){
var new_url = current_url + '?SubmitCurrency=' + SubmitCurrency + "&id_currency=" +id_currency;
$(this).attr('href', new_url);
}
else{
var new_url = current_url + '&SubmitCurrency=' + SubmitCurrency + "&id_currency=" +id_currency;
$(this).attr('href', new_url);
}
});
prestashop.on('updateProductList', function() {
// FIX BUG : FILTER PRODUCT NOT SHOW MORE IMAGE
if (typeof $.LeoCustomAjax !== "undefined" && $.isFunction($.LeoCustomAjax)) {
var leoCustomAjax = new $.LeoCustomAjax();
leoCustomAjax.processAjax();
}
});
// auto get link product and add to demo link on megamenu to show multi product detail
if ($('.demo-product-detail[data-menu-type=url] a').length && prestashop.page.page_name != 'product')
{
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: prestashop.urls.base_url + 'modules/appagebuilder/apajax.php' + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType: "json",
data: {"action": "get-product-link"},
success: function (jsonData) {
if (jsonData)
{
$('.demo-product-detail[data-menu-type=url] a').each(function(){
var original_url = $(this).attr('href');
var layout_key = original_url.substring(original_url.indexOf('?layout='));
var new_url = jsonData.replace('.html', '.html'+layout_key);
$(this).attr('href',new_url).addClass('updated');
});
if($('.lazy').length) {
if (lazyLoadInstance) {
lazyLoadInstance.update();
}
}
}
},
error: function () {
}
});
}
});
function removeParamFromURL(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param === key) {
params_arr.splice(i, 1);
}
}
if(params_arr.length > 0){
rtn = rtn + "?" + params_arr.join("&");
}
}
return rtn;
}
function getParamFromURL(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param === key) {
return params_arr[i].split("=")[1];
}
}
}
return false;
}