let numberFormat = require('./libs.js').numberFormat;
let stickyFilterRow = require('./libs.js').stickyFilterRow;
if (typeof window.dataLayer === 'undefined') {
window.dataLayer = [];
}
$('.readmore').readmore(window.HWG_php_bridge.readmore);
$('img.pb-defer').defer();
$('body').on('click', function(event){
if( !$(event.target).is('.submenu') && !$(event.target).is('.main-menu *') ) {
$('.submenu').hide();
}
if( $('.productEnlarged').length >= 1 )
{
if( $('.productEnlarged').hasClass('opened') ) {
$('.productEnlarged').remove();
}
$('.productEnlarged').addClass('opened');
}
});
// open menu on desktop
window.openSubMenu = function ( num ) {
if( $('.sub' + num).css('display') == 'none') {
// close all opened
$('.submenu').css('display', 'none');
// open clicked one
$('.sub' + num).css('display', 'block');
}
else
{
// close clicked one
$('.sub' + num).css('display', 'none');
}
};
window.deletefreeproduct = function (id,url,msg)
{
if (confirm(msg))
{
document.location=url+'/?a=removefa&i='+id;
}
};
window.deletefromWL = function (id,sid,url,msg)
{
if (confirm(msg))
{
document.location=url+'/?a=remove&i='+id+'&pageSession='+sid;
}
};
window.printReceipt = function (obj,Width,Height) {
if (obj) {
winId=window.open('','printwin','width='+Width+',height='+Height+'');
winId.document.write('
'+obj.innerHTML+'');
winId.document.close();
winId.focus();
winId.print();
// The below line closes the window after the dialog got closed... You can disable it if you dont want to close it
winId.close();
}
};
// language selector
$('.language-selector-wrap').first('img').on('click', function(){
if( $('.language-selector').hasClass('opened') )
{
$('.language-selector').css('height', '0px');
$('.language-selector').css('padding', '0px');
$('.language-selector').removeClass('opened');
}
else
{
$('.language-selector').css('height', 'auto');
$('.language-selector').css('padding', '12px');
$('.language-selector').addClass('opened');
}
});
// scroll to element
window.scrollme = function ( toWhom ){
if($('.'+toWhom).length > 0 && $('.'+toWhom).is(':visible')) {
$('html, body').animate({
scrollTop: $('.'+toWhom).offset().top
}, 500);
}
};
window.setStars2 = function (score){
console.log( 'setStars2 function called' );
document.getElementById('rating').value = score;
var a = 0;
// color stars
for(i = 1; i <= score; i++) {
var elementID = "star_" + i;
document.getElementById(elementID).src = "/images/reviews/star.png";
a = i;
}
// grey out remaining stars
for(x = (a+1); a < 5; x++) {
var elementID = "star_" + x;
document.getElementById(elementID).src = "/images/reviews/star-gray.png";
}
event.preventDefault();
return false;
};
window.setStars = function (score, field, row, star){
document.getElementById(field).value = score;
var a = 0;
// color stars
for(i = 1; i <= star; i++) {
var elementID = "star_" + row + "_" + i;
document.getElementById(elementID).src = "/images/reviews/star.png";
a = i;
}
// grey out remaining stars
for(x = (a+1); a < 5; x++) {
var elementID = "star_" + row + "_" + x;
document.getElementById(elementID).src = "/images/reviews/star-gray.png";
}
event.preventDefault();
return false;
};
var comparisonRequest = null;
var comparisonChange = function (productID, productName, add) {
if (comparisonRequest) {
comparisonRequest.abort();
}
comparisonRequest = $.ajax({
url : '/ajax/comparison.php',
type : 'POST',
dataType: "json",
data : {
productID: productID | 0,
add: (!!add) | 0,
},
}).done(function (json) {
$('.comparison-checkbox').each(function () {
$(this).prop('checked', json.products.indexOf($(this).data('pid')) != -1);
});
var open = $('.product-comparison-popup').hasClass('open');
var scroll = $('.product-comparison-popup .product-comparison-body').scrollTop() | 0;
$('.product-comparison-popup').remove();
if (json.products.length) {
$(document.body).append(json.htmlPopup);
}
$('.product-comparison-popup').toggleClass('open', open);
$('.product-comparison-popup .product-comparison-body').scrollTop(scroll);
if (add) {
GoogleTagManagerProductComparison(productName);
}
}).fail(function (response) {
if (typeof response.responseJSON != 'undefined' && response.responseJSON.error) {
$('[data-remodal-id=add_to_cart_modal]').html(response.responseJSON.error).remodal().open();
}
});
return comparisonRequest;
};
$(document).on('change', '.comparison-checkbox', function (e) {
e.preventDefault();
var checkbox = $(this);
comparisonChange(
$(this).data('pid'),
$(this).data('pname'),
$(this).prop('checked')
).fail(function (response) {
checkbox.prop('checked', !checkbox.prop('checked'));
});
});
$(document).on('click', '.product-comparison-remove', function (e) {
e.preventDefault();
comparisonChange($(this).data('pid'), '', false);
});
$(document).on('click', '.remove-comparison-product', function (e) {
e.preventDefault();
comparisonChange($(this).data('remove'), '', false).done(function() {
window.location.reload();
});
});
$(document).on('click', '.product-comparison-handle', function (e) {
e.preventDefault();
$(this).closest('.product-comparison-popup').toggleClass('open');
});
$(document).on('click', '.product-comparison-handle .fa-times', function (e) {
e.preventDefault();
e.stopPropagation();
$(this).closest('.product-comparison-popup').remove();
});
window.addToShoppingcart = function ( productID, productPrice, ssize ) {
$("[data-remodal-id=add_to_cart_modal]").html('
');
var place = ($('.pdp__top').length > 0) ? 'pdp' : 'rollout';
var data = {
productID : productID,
productPrice : productPrice,
place : place
};
if (typeof ssize != 'undefined') {
data.ssize = ssize;
}
$.ajax({
url : '/ajax/addToShoppingcart.php',
type : 'POST',
dataType: "json",
data : data,
success : function(json) {
var add_to_cart = true;
if (json.hasOwnProperty('add')) {
$('.icon-' + productID).parent().addClass('in-comparison');
if (place != 'pdp') {
$("[data-product-id="+productID+"]").removeAttr("data-remodal-target");
}
$("[data-remodal-id=add_to_cart_modal]").remodal().settings.hashTracking = false;
$("[data-remodal-id=add_to_cart_modal]").html(json.content);
if (place != 'pdp') {
GoogleTagManagerAddToCartEvent(json.add);
}
} else if (json.hasOwnProperty('remove')) {
$('.icon-' + productID).parent().removeClass('in-comparison');
$("[data-product-id="+productID+"]").attr("data-remodal-target", "add_to_cart_modal");
add_to_cart = false;
}
if (json.alreadyInCart != 1) {
var num_items_block = $('.shoppingcart-header .numitems');
var num_items_block_new = $('.main-header .numitems_new');
var price_block = $('.totalItemPrice');
// update num items in cart
var items_cart = parseInt(num_items_block.html());
var items_cart_new = parseInt(num_items_block_new.html());
if (add_to_cart == true) {
num_items_block.html(items_cart+1);
num_items_block_new.html(items_cart_new+1);
$('strong.hide-when-zero').show();
} else {
num_items_block.html(items_cart-1);
num_items_block_new.html(items_cart_new-1);
if ((items_cart_new - 1) <= 0) {
$('strong.hide-when-zero').hide();
}
}
// update price
if ( price_block.length >= 1 ) {
var curPrice = price_block.attr('data-raw-price');
var decPoint = price_block.attr('data-dec-point');
var thousandSep = price_block.attr('data-thousand-sep');
if (add_to_cart == true) {
curPrice = ( parseFloat(curPrice) + parseFloat(productPrice) );
} else {
curPrice = ( parseFloat(curPrice) - parseFloat(productPrice) );
}
price_block.attr('data-raw-price', curPrice );
curPrice = numberFormat(curPrice, 2, decPoint, thousandSep);
price_block.html( curPrice );
}
}
}
});
};
window.fastAddToShoppingcart = function (productID, productPrice, parentID) {
var button = $('#upseller-' + productID)
button.html('');
$.ajax({
url : '/ajax/addToShoppingcart.php',
type : 'POST',
dataType: "json",
data : {
productID : productID,
productPrice : productPrice,
upsold: parentID,
},
success : function(json) {
var add_to_cart = true;
if (json.hasOwnProperty('add')) {
button.html('');
GoogleTagManagerAddToCartEvent(json.add);
} else if (json.hasOwnProperty('remove')) {
button.html(' ');
add_to_cart = false;
}
var num_items_block = $('.shoppingcart-header .numitems');
var num_items_block_new = $('.main-header .numitems_new');
var price_block = $('.totalItemPrice');
// update num items in cart
var items_cart = parseInt(num_items_block.html());
var items_cart_new = parseInt(num_items_block_new.html());
if (add_to_cart == true) {
num_items_block.html(items_cart+1);
num_items_block_new.html(items_cart_new+1);
$('strong.hide-when-zero').show();
} else {
num_items_block.html(items_cart-1);
num_items_block_new.html(items_cart_new-1);
if ((items_cart_new - 1) <= 0) {
$('strong.hide-when-zero').hide();
}
}
// update price
if( price_block.length >= 1 )
{
var curPrice = price_block.attr('data-raw-price');
var decPoint = price_block.attr('data-dec-point');
var thousandSep = price_block.attr('data-thousand-sep');
if (add_to_cart == true) {
curPrice = ( parseFloat(curPrice) + parseFloat(productPrice) );
} else {
curPrice = ( parseFloat(curPrice) - parseFloat(productPrice) );
}
price_block.attr('data-raw-price', curPrice );
curPrice = numberFormat(curPrice, 2, decPoint, thousandSep);
price_block.html( curPrice );
}
}
});
};
/* This function does a check of customer had added essential product or not.
If they didn't they get an extra spam message */
window.checkUpsellingEssentials = function () {
var essentials = $('.remodal .is-essential-upseller .upseller__button i.fa-shopping-cart');
if (essentials.length > 0) {
var newModal = $('');
var newModalContent = $('');
var upseller = essentials.first().closest('.is-essential-upseller');
// get image
var image = upseller.find('img').first();
if (image.length > 0) {
$('').html(image).appendTo(newModalContent);
}
var sidepart = $('');
var contentPart = $('');
var metaInfos = upseller.find('strong.upseller__title, strong.upseller__price');
metaInfos.each(function () {
contentPart.append('' + $(this).html() + '
');
});
if (upseller.data('text')) {
contentPart.append('' + upseller.data('text') + '
');
}
contentPart.appendTo(sidepart);
sidepart.appendTo(newModalContent);
newModalContent.appendTo(newModal);
var buttonPart = $('');
var childproduct = upseller.data('childproduct');
var parentproduct = upseller.data('parentproduct');
// Get links
if (upseller.data('link2') && upseller.data('link2text')) {
$('').appendTo(buttonPart);
}
if (upseller.data('link1') && upseller.data('link1text')) {
$('').appendTo(buttonPart);
}
buttonPart.appendTo(newModal);
$('#are-you-sure').replaceWith(newModal);
return false;
}
return true;
}
// Toggle upsellers in cart
$('.cart-upselling > h3').on('click', function() {
$(this).closest('.cart-upselling').toggleClass('hidden-upsellers');
})
$(document).on('closed', '[data-remodal-id=add_to_cart_modal]', function (e) {
$("[data-remodal-id=add_to_cart_modal]").html('');
});
$(document).on('click', '.product-comparison-close', function (e) {
$(".product-comparison").hide(250);
});
window.autoHeightMe = function ( a ) {
if( $( '.' + a ).hasClass('active')){
$( '.' + a ).removeClass('active');
$( '.' + a ).css('height', '30px');
} else {
$( '.' + a ).addClass('active');
$( '.' + a ).css('height', 'auto');
}
//$('.btn-show-pop-tags-mob').remove();
};
$(window).on( 'orientationchange', function( event ) {
setTimeout( function(){
if( $(window).width() <= 991 )
{
var loc = $('.company-logo img').data('logo-clean');
$('.company-logo img').attr('src', loc)
}
else
{
var loc = $('.company-logo img').data('logo-org');
$('.company-logo img').attr('src', loc);
}
}, 500);
});
$(window).on('resize', function( event ) {
if( $(window).width() <= 991 )
{
var loc = $('.company-logo img').data('logo-clean');
$('.company-logo img').attr('src', loc)
}
else
{
var loc = $('.company-logo img').data('logo-org');
$('.company-logo img').attr('src', loc);
}
});
window.result_request = function (id){
var element, post_value;
GoogleTagManagerSearchUniversalWatchStrap($('#BandSize option:selected').text(), $('#BandColorID option:selected').text());
element = $('#'+id).val();
post_value = id+'_'+element;
//var h = $('.brand-page-thumbnail-frame').height();
var h = 0;
$('#kieshulp').prepend('');
$.get('/ajax/horlogebanden-process.php?element=' + post_value,
function(data) {
var domdata = $(data);
//$.scrollTo('#advancedsearchform',500);
$('#kieshulp').html(domdata);
var isMobDevice = (/iphone|ipad|Android|webOS|iPod|BlackBerry|Windows Phone|ZuneWP7/gi).test(navigator.appVersion);
if(!isMobDevice){
$("img.lazy").show().lazyload({ effect : "fadeIn" });
}
else {
$('img.lazy').each(function(){ $(this).attr('src',$(this).data('original')).removeClass('lazy'); });
}
}
);
};
var lastPositionBeforeOverlayOpened = 0;
// Toggle pdp overlay
window.pdpOverlay = function (what = false) {
if ($(window).width() >= 768) {
return;
}
$('.pdp__overlay .replaceable').hide();
if (typeof what !== undefined && what == 'specs') {
$('.pdp__overlay .replaceable#overlay-specs-funcs').css('display', 'block');
} else if (typeof what !== undefined && what == 'reviews') {
$('.pdp__overlay .replaceable#overlay-reviews').css('display', 'block');
} else {
$('body').removeClass('open-pdp-overlay').css('margin-top', '');
$(window).scrollTop(lastPositionBeforeOverlayOpened);
return;
}
lastPositionBeforeOverlayOpened = $(window).scrollTop();
$('body').addClass('open-pdp-overlay').css('margin-top', '-' + lastPositionBeforeOverlayOpened + 'px');
$('.pdp__overlay .pdp__overlay__container').scrollTop(0);
};
window.triggerPdpTab = function (target) {
$('.nav-area, .pdp__tabcontainers > div').css('display', 'none');
$('.' + target ).css('display', 'block');
$('.nav-tabs li, .pdp__tabs li').removeClass('active');
$('.nav-tabs li a[data-display="' + target + '"], .pdp__tabs li a[data-display="' + target + '"]')
.parent('li')
.addClass('active');
};
$(function() {
var lastPositionBeforeLocked = 0;
// Function to open info modals
function openInfoModal () {
var button = $(this);
var key = (button.data('key') && button.data('key') != '') ? button.data('key') : false;
var vars = (button.data('vars')) ? button.data('vars') : null;
var title = (button.data('title')) ? button.data('title') : null;
if (!key) {
return;
}
if (title) {
GoogleTagManagerInfoButtonClick(title);
} else {
GoogleTagManagerInfoButtonClick(key);
}
closeInfoModal(false);
button.addClass('loading');
$.ajax({
url : '/ajax/infoModal.php',
type : 'POST',
data : {
key: key, title: title, vars : vars
},
dataType: 'json',
cache : false
}).done(function(response) {
if (typeof response.modal !== 'undefined') {
$('body').append(response.modal);
lastPositionBeforeLocked = $(window).scrollTop();
$('body').css('margin-top', '-' + lastPositionBeforeLocked + 'px').addClass('locked');
} else {
console.log('Error while getting info modal');
button.remove();
}
}).fail(function(response) {
alert('Error retrieving info modal.');
button.remove();
}).always(function() {
button.removeClass('loading');
});
};
// Function to open info modals
function closeInfoModal(toggle = true) {
$('.info-modal').remove();
if (toggle) {
$('body').removeClass('locked').css('margin-top', '');
$(window).scrollTop(lastPositionBeforeLocked);
}
};
$(document).on('click', '.nav-tabs a, .pdp__tabs a', function(target) {
triggerPdpTab($(this).data('display'));
return false;
});
$(document).on('click', '.info-button[data-key], .info-button-helper[data-key]', openInfoModal);
$(document).on('click', '.close-info-modal', closeInfoModal);
$(document).on('click', '.info-modal', function (e) {
if ($(e.target).is('.info-modal')) {
closeInfoModal();
}
})
// Old safari is shit and doesn't work with events on body
function close_legacy_menu (e) {
$('.small-mobile-side-menu').removeClass('open');
$('.small-mobile-side-menu-background').remove();
GoogleTagManagerToggleMobileMenu('close');
e.stopPropagation();
e.preventDefault();
return false;
};
// small mobile menu bar
$('.open-small-menu-bar').on('click', function(event){
$('.small-mobile-side-menu').addClass('open')
var $menuBackground = $('').hide().fadeIn(200);
$menuBackground.on('click', close_legacy_menu);
$('body').append($menuBackground);
GoogleTagManagerToggleMobileMenu('open');
event.preventDefault();
});
$('.close-mobile-small-menu').on('click', close_legacy_menu);
// swap logo for mobile
if( $(window).width() <= 991 )
{
var loc = $('.company-logo img').data('logo-clean');
$('.company-logo img').attr('src', loc)
}
else
{
var loc = $('.company-logo img').data('logo-org');
$('.company-logo img').attr('src', loc);
}
// like review
$(".product_review_like").on('click', function () {
var reviewID = $(this).data('review-id');
if (reviewID) {
likeReview(reviewID);
}
});
// accept cookies
$('.accept_cookies').on('click', function(){
GoogleTagManagerCookieNotificationUse('On');
// add cookie to user with ajax
$.ajax({
type: 'POST',
url: '/ajax/acceptedCookies',
data: {
accept: 1,
},
success: function () {
$('.cookie-notification').slideUp();
},
});
return false;
});
$('.reject_cookies').on('click', function () {
GoogleTagManagerCookieNotificationUse('Off');
$.ajax({
type: 'POST',
url: '/ajax/acceptedCookies',
data: {
accept: 0,
},
success: function () {
$('.cookie-notification').slideUp();
},
});
return false;
});
$('.more_info_cookies').on('click', function () {
GoogleTagManagerCookieNotificationUse('Lees meer');
});
$(".language-item").on('click', function() {
var website = $(this).attr('data-website');
var url = $(this).attr('data-href');
var country = $(this).attr('data-country');
var language = $(this).attr('data-language');
if (language == country) {
url = "/" + language + url;
} else {
url = "/" + country + "/" + language + url;
}
window.location = website+url;
});
// Newsletter form: add email hidden confirm input
$(".subscribeform_email").on('change keyup', function () {
var email = $(this).val();
$(".subscribeform_emailconfirm").val(email);
});
// Straps page brand page
var stdIMG = $('.bigImage').attr('src');
var hoverIMG = $('.bigImage').attr('data-hover');
$('.watch-straps-block-image').on('hover', function(){
$('.thumbnailbox').show(250);
}, function(){
$('.thumbnailbox').hide(250);
});
/**
* Left menu in / uitklappen
*/
$('.menu_toggle_button').on('click', function () {
var target = $(this).data('target');
// $('.close_mobile#'+target).toggle('slide');
if ($('.close_mobile#'+target).is(':visible')) {
$('.close_mobile#'+target).slideUp();
} else {
$('.close_mobile#'+target).slideDown();
}
});
// Remove pdp overlay
$('.back-to-pdp').on('click', function(){
pdpOverlay();
});
$(document).on('click', '.specs_functions .info-button[data-popup]', function () {
closeInfoModal(false);
$('body').append($(this).data('popup'));
lastPositionBeforeLocked = $(window).scrollTop();
$('body').css('margin-top', '-' + lastPositionBeforeLocked + 'px').addClass('locked');
});
$('.specs_specifications h3, .specs_functions h3').on('click', function(event) {
var target = $(event.target);
if (! target.is('span')) {
$(this).closest('.foldable:not(.primary)').toggleClass('closed');
return false;
}
});
$('.specs_specifications, .specs_functions').find('tfoot a.expand, tfoot a.unexpand').on('click', function () {
$(this).closest('.foldable').toggleClass('closed');
return false;
});
$('.mpn-pdfs .expand').on('click', function () {
$(this).closest('.mpn-pdfs').toggleClass('closed');
return false;
});
var videoSlides = $('.pdp__images__main > .main-img--video');
var initialSlide = (videoSlides.length > 0) ? 1 : 0;
$('
').on('load error', function () {
$('.pdp__images__main .main-img img.main:not(#main0)').each(function () {
if (!$(this).prop('src')) {
$(this).prop('src', $(this).data('original'));
}
});
}).prop('src', $('.pdp__images__main .main-img#main0 img.main').prop('src'));
$('.pdp__images__main').slick({
infinite: false,
slidesToShow: 1,
arrows: true,
initialSlide: initialSlide,
prevArrow: '',
nextArrow: '',
asNavFor: '.pdp__images__thumbs',
dots: ($(window).width() <= 768),
}).on('afterChange', function() {
GoogleTagManagerProductImageThumbClick();
});
var countSlides = $('.pdp__images__thumbs > .thumb-img').length;
if (countSlides == 0 || countSlides > 4) {
countSlides = 5;
}
$('.pdp__images__thumbs').slick({
infinite: false,
slidesToShow: countSlides,
slidesToScroll: 1,
adaptiveHeight: true,
focusOnSelect: true,
arrows: true,
prevArrow: '',
nextArrow: '',
asNavFor: '.pdp__images__main'
});
$('.pdp__images__thumbs .slick-slide').on('click', function (event) {
$('.pdp__images__main').slick('slickGoTo', $(this).data('slickIndex'));
});
if (initialSlide == 1) {
$('.pdp__images__thumbs').find('.slick-slide').removeClass('slick-current');
$('.pdp__images__thumbs').find('.slick-slide[data-slick-index="1"]').addClass('slick-current');
}
$('.pdp__gift .giftimg').on('click', function (e) {
$('.pdp__images__main .free-gift').first().siblings('a').first().trigger('click');
});
$(document).on({
mouseenter: function () {
var newSrc = ($(this).data('example')) ? $(this).data('example') : null;
if (newSrc != null) {
var activeImage = $('.pdp__images__main .slick-current img');
if (activeImage.length) {
activeImage.attr('src', newSrc);
}
}
},
mouseleave: function () {
setOriginalImage();
}
}, '.pdp__images__thumbs .slick-slide:not(.slick-current) .thumb-img');
function setOriginalImage () {
$('.pdp__images__main img[data-original]').each(function () {
$(this).attr('src', $(this).data('original'));
});
}
if($(window).width() >= 768) {
$(document).on({
mouseenter: function () {
var newSrc = ($(this).data('preview')) ? $(this).data('preview') : null;
var newColor = ($(this).data('color')) ? $(this).data('color') : null;
if (newColor != null) {
$('.pdp__variants #pdp-color-name').text(newColor);
}
timer = setTimeout(function(){
if (newSrc != null) {
var activeImage = $('.pdp__images__main .slick-current img');
if (activeImage.length) {
activeImage.fadeTo(150, 0, function() {
$(this).attr('src', newSrc).fadeTo(150, 1);
});
}
}
}, 500);
},
mouseleave: function () {
clearTimeout(timer);
setOriginalImage();
setOriginalColor();
}
}, '.pdp__variants a:not(.current-color)[data-preview]');
} else {
var reviewSummary = $('.pdp__review-summary');
if (reviewSummary.length > 0) {
reviewSummary.insertAfter('.pdp h1');
}
$(window).bind("load", function() {
// Check if we need to scroll the current variant
var pdpVariants = $('.pdp .pdp__variants > ul');
if (pdpVariants.length > 0) {
var currentVariant = pdpVariants.find('a.current-color').first();
if (currentVariant.length > 0) {
var windowWidth = $(window).width();
var currentPos = currentVariant.position().left;
if (currentPos > windowWidth) {
pdpVariants.scrollLeft((currentPos - windowWidth) + (currentVariant.outerWidth(true) * 1.5));
}
}
}
});
}
function setOriginalColor () {
$('.pdp__variants #pdp-color-name').each(function () {
var originalColor = $(this).data('original');
$(this).text(originalColor);
});
}
$('.zoom-tip').click(function(){
$('.pdp__images__main .slick-current a').trigger('click');
});
if($(window).width() < 768) {
$('.pdp__images__main .slick-slide a').on('click', function () {
GoogleTagManagerProductImageZoom();
}).magnify();
} else {
$('.pdp__images__main').slickLightbox({
itemSelector: '.slick-slide a',
slick: {
infinite: false
}
}).on('show.slickLightbox', function() {
GoogleTagManagerProductImageZoom();
$('html,body').css('overflow', 'hidden');
$('.pdp__images__main')[0].slickLightbox.slick.on('afterChange', function() {
GoogleTagManagerProductImageThumbClick();
});
}).on('hide.slickLightbox', function() {
$('html,body').css('overflow', 'auto');
});
}
// Function to toggle pdp info
$(document).on('click', '.pdp-toggle .toggle, .pdp-toggle .untoggle', function () {
$(this).closest('.pdp-toggle').toggleClass('untoggled');
});
/**
* Set newsletter subscribe checked
*/
$("input[name='list[3]']").prop("checked", true);
$('.addWishlistForm').on('submit', function(event){
if (location.protocol != 'https:') {
return;
}
$('.ajaxAddWishList .alert').remove();
$('.ajaxAddWishList').addClass('loading');
/* ajax call */
$.ajax({
type : 'POST',
url: '/ajax/addToWishlist.php',
data: $(this).serialize(),
success : function( result ) {
var json_object = $.parseJSON(result);
if( 'success' in json_object ) {
GoogleTagManagerWishlistUse();
$('.ajaxAddWishList').empty().html(''+json_object.success+'
');
GoogleTagManagerMessages('success', json_object.success);
} else if( 'exists' in json_object ) {
$('.ajaxAddWishList').empty().html(''+json_object.exists+'
');
GoogleTagManagerMessages('error', json_object.exists);
} else if ('validation_errors' in json_object ) {
var error = "";
var errorText = '';
$.each(json_object.validation_errors, function (key, value) {
error += "
"+value+"
";
errorText += value + " ";
});
error += "
";
$('.ajaxAddWishList').prepend(error);
GoogleTagManagerMessages('error', errorText);
} else {
$('.ajaxAddWishList').prepend(''+json_object.error+'
');
GoogleTagManagerMessages('error', json_object.error);
}
$('.ajaxAddWishList').removeClass('loading');
}
});
event.preventDefault();
});
$('.questionMarkInfo1').on('click', function(){
if( $(this).find('.questionContent_1').hasClass('opened')) {
$(this).find('.questionContent_1').removeClass('opened');
$(this).find('.questionContent_1').fadeOut(500)
} else {
$(this).find('.questionContent_1').addClass('opened');
$(this).find('.questionContent_1').fadeIn(500);
}
});
$('.questionMarkInfo2').on('click', function(){
if( $(this).find('.questionContent_2').hasClass('opened')) {
$(this).find('.questionContent_2').removeClass('opened');
$(this).find('.questionContent_2').fadeOut(500)
} else {
$(this).find('.questionContent_2').addClass('opened');
$(this).find('.questionContent_2').fadeIn(500);
}
});
$('.navbar-nav a.logout').on('click', function(){
var url = $(this).attr('href');
$.ajax({
url: '/ajax/logout.php',
success: function(data) {
document.location.assign(url);
}
});
return false;
});
if($('#receiptBirthdaySubscribe select[name="date_of_birth[month]"]').length > 0) {
$('#receiptBirthdaySubscribe select[name="date_of_birth[month]"]')
.on('change keyup', function() {
if($(this).val() == "") $(this).addClass("empty");
else $(this).removeClass("empty")
})
.change();
}
});
$('.openclose-header').on('click', function(){
// get settings
var toOpen = $(this).data('rel');
var direction = 'auto';
// we are closing or opening
if( $('.'+toOpen).css('height') != '0px'){
direction = '0px';
$(this).find('.fa-plus-square-o').css('transform', 'rotate(0deg)');
} else {
$(this).find('.fa-plus-square-o').css('transform', 'rotate(90deg)');
}
// alle openstaande sluiten
$('.openclose-content').each(function(){
if( $(this).css('height') != '0px' ) {
$(this).animate({
height : '0px'
}, 200);
}
});
// calculate the auto height
if(direction != '0px'){
direction = $('.'+toOpen).css('height', 'auto').height();
$('.'+toOpen).css('height', '0px')
}
// animate
$('.'+toOpen).animate({
height : direction
}, 200);
});
$(function(){
/**
* touchstart
* touchmove
* touchend
* touchcancel
*/
$('a img').on({
'touchstart' : function(){
$(this).css('filter', 'opacity(30%)');
},
'touchend' : function(){
$(this).css('filter', 'inherit');
},
'touchcancel' : function(){
$(this).css('filter', 'inherit');
},
'touchmove' : function(){
$(this).css('filter', 'inherit');
}
});
$('.pay_method [data-cc-method-type]').on('click', function(e){
e.stopPropagation();
var method_name = $(this).data('method-name');
var method_id = $(this).data('cc-method-type');
// update borders
$('[data-cc-method-type]').removeClass('selected_payment');
$(this).addClass('selected_payment');
$('.PaymentType_creditcard').prop("checked", true);
$('.PaymentType_creditcard').attr('data-method-name', method_name);
$('.PaymentType_creditcard').attr('id', 'PaymentType_'+method_id);
$('.PaymentType_creditcard').val(method_id);
$('.creditcard-type-container:first-child').addClass('selected_payment');
});
$('.pay_method').on('click', function(){
if ($(this).data('method-name') == 'Creditcard') {
var do_trigger = true;
$('.creditcard-type-block').each(function () {
if($(this).hasClass('selected_payment')) {
do_trigger = false;
}
});
if (do_trigger == true) {
$('[data-cc-method-type]').first('.creditcard-type-block').trigger('click');
}
} else {
$('[data-cc-method-type]').removeClass('selected_payment');
}
});
});
/* carousel header mobile */
$(function(){
$('.caroussel').slick({
infinite: true,
autoplay: true,
autoplaySpeed: 5000
});
});
// submit the mobile search form in the header
$(function(){
if($('#orderTrackingBlock').length != 0) {
var currentElement = $('#orderTrackingBlock');
var orderID = currentElement.data('order-id');
var email = currentElement.data('email');
$.ajax({
type: 'GET',
url: '/ajax/request-order-tracking/'+orderID+'/?email='+email,
success : function( html ) {
currentElement.html(html);
},
error: function () {
currentElement.html('');
}
});
}
});
// Fire GTM event if video is present on product depth page
$(function(){
if($('.productpage .embed-responsive').length > 0) {
GoogleTagManagerProductVideoPresent();
}
if($('.productpage .main-product-image-container .ribbon').length > 0) {
$('.productpage .main-product-image-container .ribbon').each(function(){
var ribbon = $(this).find('span').text();
GoogleTagManagerProductRibbon(ribbon);
});
} else {
if($('.productpage .main-product-image-container').length > 0) {
// This is a product page, but no ribbons found
var ribbon = 'none';
GoogleTagManagerProductRibbon(ribbon);
}
}
});
window.redirectContinueShopping = function (fallbackUrl)
{
// Using referrer might not be safe, but we are not depending on it (fallback to homepage).
// If website visitor malformed his request with malicious referrer, nothing bad will happen.
var referrer = document.referrer;
if(window.location.href.indexOf('a=remove') >= 0) {
// prevent redirect back to shopping cart, if you are on the shopping cart
window.location = fallbackUrl;
return false;
}
if(typeof referrer !== 'undefined' && referrer !== '' && referrer !== null) {
if(window.location.href !== document.referrer) {
// Previous request was not a POST request from checkout page
window.history.back();
} else {
// Previous request was a POST request (for example, changing shipping country).
// We do not know previous page, just return to all-watches index
window.location = fallbackUrl;
return false;
}
} else {
window.location = fallbackUrl;
}
return false;
};
$(function(){
if($('#back-to-top').length > 0 && $( window ).width() < 1170) {
$(window).on('scroll', function () {
if ($(this).scrollTop() > 400) {
$('#back-to-top').fadeIn();
} else {
$('#back-to-top').fadeOut();
}
});
}
if($('#back-to-top-pdp').length > 0 && $( window ).width() < 768) {
$(window).on('scroll', function () {
if ($(this).scrollTop() > 1400) {
$('#back-to-top-pdp').fadeIn();
} else {
$('#back-to-top-pdp').fadeOut();
}
});
}
$(document).on('click', '#back-to-top, #back-to-top-pdp', function(){
GoogleTagManagerScrolltoTopArrow();
$("html, body").animate({ scrollTop: 0 }, 600);
return false;
});
});
$(function(){
$(document).on('click', '.checkout-shipping-methods input[type="radio"]', function(){
$('.checkout-shipping-methods > div').removeClass('selected');
$(this).closest('.cart-shipment').parents('div:eq(0)').addClass('selected');
});
$(document).on('click', '.product-fit .toggle-button, .product-description .toggle-button', function(){
var otherTarget;
if($(this).closest('.product-fit').length > 0) {
otherTarget = $('.product-description .toggle-button').attr('href');
} else if($(this).closest('.product-description').length > 0) {
otherTarget = $('.product-fit .toggle-button').attr('href');
}
$(otherTarget).collapse('hide');
});
$(document).on('click', 'a.print-and-fit-button', function(event){
var href = $(this).attr('href');
window.open(href, null, 'height=640,width=840,status=yes,toolbar=no,menubar=no,location=no');
event.preventDefault();
});
$(document).on('click', '.pdp__description.untoggled .toggle', function(event){
GoogleTagManagerExtendedDescription();
});
var body = document.getElementsByTagName('body')[0];
if(body && typeof MutationObserver !== 'undefined') {
var obs = new MutationObserver(function (list) {
for (index in list) {
let item = list[index];
if (!item.removedNodes.length) {
return;
}
let searchPattern = new RegExp('^tsbadgeResponsiveTop_', 'i');
let id = item.target.id;
if (id && searchPattern.test(id)) {
GoogleTagManagerTrustedShopsWidget('close');
}
}
});
obs.observe(body, {childList: true, subtree: true});
}
$(document).on('click', 'div[id^=tsbadgeResponsiveTop_], div[id^=tsbadge][data-shopname]', function(e) {
var $target = $(e.target);
var searchPattern = new RegExp('^RemoveTrustbadgeLink_', 'i');
var id = $target.attr('id');
if (id && searchPattern.test(id)) {
return;
}
GoogleTagManagerTrustedShopsWidget('open');
});
checkForCookieNotification();
$(document).on('focus', '#mobile-search, input.header-zoekopdracht', function(){
$(this).attr('hide-placeholder', $(this).attr('placeholder'));
$(this).attr('placeholder', '');
}).on('focusout', '#mobile-search, input.header-zoekopdracht', function(){
$(this).attr('placeholder', $(this).attr('hide-placeholder'));
$(this).attr('hide-placeholder', '');
$('.mobile-search-box').removeClass('focus');
$('body').css('overflow', 'auto');
});
if ($(window).width() < 768) {
$('.button_carousel > .row > div').removeMatchingClasses('col-');
$('.button_carousel').each(function(){
if(!$(this).find('.slick-slide:last-child').visible()) {
$(this).addClass('white-noise-right');
}
});
$('.button_carousel > .row').slick({
autoplay: false,
infinite: false,
slidesToShow: 1,
centerMode: false,
variableWidth: true,
touchThreshold: 25,
arrows: false,
outerEdgeLimit: true
}).on('afterChange', function(event, slick, currentSlide, nextSlide){
// Use visible plugin to detect if buttons are visible
$('.button_carousel').each(function(){
if($(this).find('.slick-slide:first-child').visible()) {
$(this).removeClass('white-noise-left');
} else {
$(this).addClass('white-noise-left');
}
if($(this).find('.slick-slide:last-child').visible()) {
$(this).removeClass('white-noise-right');
} else {
$(this).addClass('white-noise-right');
}
});
});
}
$(document).on('click', '.productpage .average-review-rating a', function(){
if($('.product-review-details').length > 0) {
scrollme('product-review-details');
GoogleTagManagerClickedReviewTitle();
}
return false;
});
$(window).on('scroll', stickyFilterRow);
stickyFilterRow();
var slickProductSlideOptions = {
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 1,
arrows: false,
responsive: [
{
breakpoint: 1025,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
dots: true
}
},
{
breakpoint: 481,
settings: {
slidesToShow: 2,
slidesToScroll: 2,
dots: true
}
}
]
};
$('.container-products-others-bought').slick(slickProductSlideOptions);
$('.container-products-recently-viewed').slick(slickProductSlideOptions);
$('.container-available-in-name-serie').slick(slickProductSlideOptions);
$('.pdp__slick').slick(slickProductSlideOptions);
$('.movement_slick_products').slick(slickProductSlideOptions);
$(document).on('click', '.available-in-name-serie', function() {
var productNumber = $(this).data('product-number');
if(productNumber) {
GoogleTagManagerAvailableInNameSerie(productNumber);
}
}).on('click', '.products-recently-viewed', function() {
var productNumber = $(this).data('product-number');
if(productNumber) {
GoogleTagManagerProductsRecentlyViewed(productNumber);
}
}).on('click', '.products-others-bought', function() {
var productNumber = $(this).data('product-number');
if(productNumber) {
GoogleTagManagerProductsOthersBought(productNumber);
}
});
$(document).on('change', '#receiptNewsletterSubscribe #newsletter_subscribe', function() {
if($(this).is(':checked')) {
$(this).closest('form').find('button').prop('disabled', false);
} else {
$(this).closest('form').find('button').prop('disabled', 'disabled');
}
});
$(document).on('submit', '#receiptNewsletterSubscribe', function() {
var $form = $(this);
var remote = $form.attr('action');
var $loading = $('');
$form.append($loading);
$.post(remote, $form.serialize(), function(json) {
if(json.status === 200) {
$form.replaceWith(json.message);
GoogleTagManagerMessages('success', json.message);
GoogleTagManagerNewsletterSubscription('receipt');
$('.receipt_page .emarsys-date-of-birth-container').show();
}
$loading.remove();
});
return false;
});
$(document).on('submit', '.subscribe_newsletter', function() {
var $form = $(this);
$.post($form.attr('action'), $form.serialize(), function(json) {
if(json.status === 200) {
$form.replaceWith('' + json.message + '
');
GoogleTagManagerMessages('success', json.message);
GoogleTagManagerNewsletterSubscription('footer');
} else {
$form.find('.newsletter_error').remove();
$form.append('' + json.message + '
');
GoogleTagManagerMessages('error', json.message);
}
});
return false;
});
checkForCheckoutErrors();
if($('.msg-add-to-cart').length > 0) {
$('.msg-add-to-cart').each(function(){
var $target = $(this);
GoogleTagManagerMessages('success', $target.text());
setTimeout(function() {
$target.hide('slow', function(){ $target.remove(); });
}, 3000);
});
}
$(document).on('click', '.scroll-to-products-in-same-serie', function() {
scrollme('products-in-same-serie');
var productNumber = $(this).data('product-number');
if(productNumber) {
GoogleTagManagerAvailableInNameSerieScroll(productNumber);
}
});
$('#receiptBirthdaySubscribe').on('submit', function(){
var day = $(this).find('input[name="date_of_birth[day]"]').val();
var month = $(this).find('select[name="date_of_birth[month]"]').val();
var year = $(this).find('input[name="date_of_birth[year]"]').val();
// javascript is month -1
if(!isValidDate(month + '/' + day + '/' + year)) {
$(this).find('.birthdaygift-error').slideDown(500);
GoogleTagManagerMessages('error', $(this).find('.birthdaygift-error').text());
} else {
$(this).find('.birthdaygift-error').hide();
var remote = $(this).attr('action');
var $form = $(this);
// Do update
$.post(remote, {
'date_of_birth': year + '-' + month + '-' + day,
'order_id': $form.find('input[name="order_id"]').val()
}, function(json) {
if(json.status === 200) {
$form.replaceWith(''+ json.message +'
');
GoogleTagManagerMessages('success', json.message);
} else {
$form.append(''+ json.message +'
');
GoogleTagManagerMessages('error', json.message);
}
});
}
return false;
});
// jQuery unveil needs to be last (Won't work on images display:hidden at time of run)
$('img.unveil').unveil(window.HWG_php_bridge.unveil);
$(document).on('click', '.emarsys-predict .bs-product', function() {
GoogleTagManagerEmarsysPredict($(this).closest('.emarsys-predict').find('.emarsys-predict-title').text());
});
$(document).on('click', '.pdp__shortcuts a', function() {
if($(this).attr('data-trigger')) {
$($(this).data('trigger')).trigger('click');
}
if($(this).attr('data-target')) {
scrollme($(this).data('target'));
}
GoogleTagManagerShortcutButton($(this).text());
return false;
});
$('.compare-diff').on('change', function () {
$('body').toggleClass('compare-diff-only', $(this).prop('checked'));
}).trigger('change');
var compareButtons = function () {
var elem = $('.compare-container')[0];
var scroll = $('.compare-container').scrollLeft();
$('.compare-slide-left, .compare-slide-right').show();
if (scroll == 0) {
$('.compare-slide-left').hide();
}
if (scroll == elem.scrollWidth - elem.getBoundingClientRect().width) {
$('.compare-slide-right').hide();
}
};
$(window).on('resize scroll', function () {
if (!$('.compare-container').length) {
return;
}
var dist = $(window).scrollTop() - $('.compare-container').offset().top;
if (dist < 0) {
$('.compare-sticky').css('transform', '');
} else {
$('.compare-sticky').css('transform', 'translateY(' + dist + 'px)');
}
compareButtons();
}).trigger('resize');
$('.compare-container').on('scroll', compareButtons);
var compareSlide = function(diff) {
var colsize = $('.compare-container .compare-blocks td')[0].getBoundingClientRect().width;
var curcol = Math.floor(($('.compare-container').scrollLeft() + (colsize / 2)) / colsize);
var newpos = Math.ceil((curcol + diff) * colsize);
if ('scrollBehavior' in document.documentElement.style) {
$('.compare-container')[0].scroll({
left: newpos,
behavior: 'smooth',
});
} else {
$('.compare-container').scrollLeft(newpos);
}
};
$('.compare-slide-right').on('click', function () {
compareSlide(1);
});
$('.compare-slide-left').on('click', function () {
compareSlide(-1);
});
});
function checkForCookieNotification() {
if($('.cookie-notification').length > 0) {
GoogleTagManagerCookieNotificationShown();
}
}
jQuery.fn.extend({
removeMatchingClasses: function(pattern) {
return this.each(function() {
var element = jQuery(this);
var classes = element.attr("class").split(/\s+/);
jQuery.each(classes, function(idx, cssClass) {
if (cssClass.match(pattern)) element.removeClass(cssClass);
});
return this;
});
}
});
function checkForCheckoutErrors() {
if($('.hwg_checkout').length > 0 || $('.cart-summary').length > 0) {
$('.alert.alert-danger:visible').each(function(){
GoogleTagManagerMessages('error', $.trim($(this).text().replace("\u2022", "")));
});
$('#checkoutForm .text-danger').each(function(){
GoogleTagManagerMessages('error', $.trim($(this).text()));
});
if($('#checkoutForm .pay_method.has-error input[data-method-name="iDEAL"]:checked').length == 1) {
GoogleTagManagerMessages('error', 'Kies uw bank');
}
if($('#checkoutForm div[data-method-name="AfterPay"] .inputError:visible').length == 1) {
GoogleTagManagerMessages('error', 'Ik ga akkoord met de Afterpay betaalvoorwaarden');
}
}
}
/* Bind function to select image */
$(document).on('click', 'div.footer-menu-block > strong.footer-menu-heading', function() {
$(this).parent().toggleClass('toggled');
});
$.fn.isInViewport = function() {
var elementTop = $(this).offset().top;
var elementBottom = elementTop + $(this).outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
$(window).on('resize scroll', function() {
var elem = $('div.newsletter-container > div.stamp:not(.show-it)');
if (elem.length && elem.isInViewport()) {
elem.addClass('show-it');
}
});
// Validates that the input string is a valid date formatted as "mm/dd/yyyy"
function isValidDate(dateString)
{
// First check for the pattern
if(!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(dateString))
return false;
// Parse the date parts to integers
var parts = dateString.split("/");
var day = parseInt(parts[1], 10);
var month = parseInt(parts[0], 10);
var year = parseInt(parts[2], 10);
// Check the ranges of month and year
if(year < 1000 || year > 3000 || month == 0 || month > 12)
return false;
var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
// Adjust for leap years
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
monthLength[1] = 29;
// Check the range of the day
return day > 0 && day <= monthLength[month - 1];
};
$('#checkoutForm .orderbutton').click(function () {
if ($(this).is('.disabled')) {
return false;
}
$(this).addClass('disabled');
});
// Search for defined words and wrap them in a defined tag
$.fn.wrapInTag = function (opts) {
// http://stackoverflow.com/a/1646618
function getText(obj) {
return obj.textContent ? obj.textContent : obj.innerText;
}
var tag = opts.tag || 'strong',
words = opts.words || [],
regex = RegExp(words.join('|'), 'gi'),
replacement = '<' + tag + '>$&' + tag + '>';
// http://stackoverflow.com/a/298758
$(this).contents().each(function () {
if (this.nodeType === 3) //Node.TEXT_NODE
{
// http://stackoverflow.com/a/7698745
$(this).replaceWith(getText(this).replace(regex, replacement));
}
else if (!opts.ignoreChildNodes) {
$(this).wrapInTag(opts);
}
});
};
$(function () {
$('.slick_products').slick({
autoplay: false,
arrows: false,
dots: false,
draggable: false,
infinite: true,
speed: 500,
slidesToShow: 6,
slidesToScroll: 1,
adaptiveHeight: false,
responsive: [
{
breakpoint: 768,
settings: {
slidesToShow: 3,
arrows: true,
draggable: true,
},
},
],
});
});
$(document).on('click', 'a.reviews-toggle', function() {
if ($(window).width() < 768) {
pdpOverlay('reviews');
return;
} else {
// Check if there are still hidden reviews
var label_more = $(this).data('more');
var label_less = $(this).data('less');
if($('ol#reviews-list > li.hidden-review').length) {
$('ol#reviews-list > li.hidden-review:lt(3)').addClass('animate-review').removeClass('hidden-review');
if(!$('ol#reviews-list > li.hidden-review').length) {
$(this).text(label_less);
$(this).html(' ' + label_less);
}
} else {
$('ol#reviews-list > li:not(:lt(3))').addClass('hidden-review').removeClass('animate-review');
$(this).html(' ' + label_more + '');
$('html, body').animate({
scrollTop: ($('ol#reviews-list').offset().top - 15)
}, 600);
}
}
return false;
});
$(function() {
var elem = $('.sticky-product-info-container > .sticky-product-info')[0];
$(window).on('scroll resize', function() {
if (elem !== undefined){
var container = elem.parentNode;
var styles = getComputedStyle(container);
var width = container.getBoundingClientRect().width - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight);
var pos = container.offsetTop - container.scrollTop + container.clientTop + 10;
$(elem).css('width', width + 'px');
$(elem).toggleClass('sticky', $(window).scrollTop() > pos);
}
});
});