1 2/***************************** 3 * Version: 1.0.7 4 * TODO: change hours in en and de after black friday 19 ZMBF 5 ****************************/ 6 7var Countdown = {}; 8 9(function($) { 10 11 "use strict"; 12 13 // Number of seconds in every time division 14 var days = 24 * 60 * 60, 15 hours = 60 * 60, 16 minutes = 60; 17 18 var $this; 19 20 /** 21 * The global Countdown.Language object 22 */ 23 24 Countdown.Language = {}; 25 26 function createRandomly(seconds) { 27 28 var randoms = [], 29 number = 0; 30 31 for(var i = 1; i <= seconds; i++) { 32 33 number = number + Math.floor(Math.random() * (70 - 10 + 1) + 10); 34 35 randoms[i] = number; 36 } 37 38 var max = randoms[seconds].toString().length; 39 40 for(var i = seconds; i >= 1; i--) { 41 42 var string_number = randoms[i].toString(); 43 44 if(string_number.length < max) { 45 46 //randoms[i] = new Array((max - string_number.length) + (/\./.test(string_number) ? 2 : 1)).join('0') + string_number; 47 randoms[i] = string_number; 48 } 49 } 50 51 //randoms[0] = new Array(max + 1).join('0') 52 randoms[0] = 0; 53 54 return randoms; 55 } 56 57 function init(elem, options) { 58 59 // add class to container 60 elem.addClass(options.elemClass); 61 62 if(options.type === 'countdown') { 63 64 // define countdown elements 65 var structure = ['days', 'hours', 'minutes', 'seconds']; 66 67 var language = ((typeof Countdown.Language[options.language] !== 'undefined') ? Countdown.Language[options.language] : Countdown.Language['en']); 68 69 // create countdown structure 70 $.each(structure, function(index, value) { 71 72 var time_unit = document.createElement('span'); 73 time_unit.setAttribute('class', 'time_unit ' + value); 74 75 var span_number = document.createElement('span'); 76 span_number.setAttribute('class', 'number ' + value); 77 78 time_unit.appendChild(span_number); 79 80 // var element_break = document.createElement('br'); 81 82 // time_unit.appendChild(element_break); 83 84 var span_text = document.createElement('span'); 85 span_text.setAttribute('class', 'text ' + value); 86 span_text.appendChild(document.createTextNode(language[value])); 87 88 time_unit.appendChild(span_text); 89 90 elem.append(time_unit.outerHTML); 91 92 if (value === 'hours' || value === 'minutes') { 93 94 // create separator 95 var separator = document.createElement('span'); 96 separator.setAttribute('class', 'separator'); 97 // separator.appendChild(document.createTextNode(':')); // original 98 separator.appendChild(document.createTextNode(',')); // only for this campaign (ZMSC) 99 100 // append separator 101 elem.append(separator.outerHTML); 102 } 103 }); 104 } 105 else { 106 107 if(!options.randoms) { 108 109 options.randoms = createRandomly(options.seconds); 110 } 111 } 112 }; 113 114 function tick(options) { 115 116 if(options.type === 'countdown') { 117 118 // console.log(options.timestamp); 119 120 var diff = options.timestamp; 121 122 if(options.oneDay) { 123 124 var midnight = new Date(); 125 midnight.setHours(24); 126 midnight.setMinutes(0); 127 midnight.setSeconds(0); 128 midnight.setMilliseconds(0); 129 130 options.timestamp = midnight; 131 132 // get current date 133 var currentDate = new Date(); 134 135 diff = options.timestamp - currentDate.getTime(); 136 } 137 138 if (diff < 0) { 139 140 onFinish(options); 141 //$('.' + options.elemClass).slideUp().parent().remove(); 142 } 143 else { 144 145 var df = new Date(diff); 146 147 var d = Math.floor(df / (60 * 60 * 1000 * 24) * 1), 148 h = Math.floor((df % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1), 149 m = Math.floor(((df % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1), 150 s = Math.floor((((df % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1); 151 152 if (d < 10) { 153 154 d = '0' + d; 155 } 156 157 $('.' + options.elemClass + ' > .time_unit > span.number.days').text(d); 158 159 if (h < 10) { 160 161 h = '0' + h; 162 } 163 164 $('.' + options.elemClass + ' > .time_unit > span.number.hours').text(h); 165 166 if (m < 10) { 167 168 m = '0' + m; 169 } 170 171 $('.' + options.elemClass + ' > .time_unit > span.number.minutes').text(m); 172 173 if (s < 10) { 174 175 s = '0' + s; 176 } 177 178 $('.' + options.elemClass + ' > .time_unit > span.number.seconds').text(s); 179 180 // do another call of this function in 1 second 181 var t = setTimeout(function() { 182 183 // if is not one day 184 if(!options.oneDay) { 185 186 // decrease time 187 options.timestamp = options.timestamp - 1000; 188 } 189 190 tick(options); 191 }, 1000) 192 } 193 } 194 else { 195 196 // do another call of this function in 1 second 197 var t = setTimeout(function() { 198 199 var counter; 200 201 if(Array.isArray(options.randoms[options.seconds]) && options.randoms[options.seconds] > 0) { 202 203 counter = options.randoms[options.seconds]; 204 205 options.seconds--; 206 } 207 else { 208 209 counter = options.randoms; 210 } 211 212 if(counter > 0) { 213 214 $('.' + options.elemClass).html(counter); 215 216 tick(options); 217 } 218 219 }, 1000); 220 } 221 }; 222 223 function onFinish(options) { 224 225 if ($.isFunction(options.onFinish) === true) { 226 227 options.onFinish.apply($this, [options]); 228 } 229 } 230 231 // Creating the plugin 232 $.fn.countdown = function(options) { 233 234 var _options = $.extend({ 235 onFinish : function(callback) {}, 236 setTime : function(time) {}, 237 timestamp : 0, 238 startDate : false, 239 endDate : false,
240 elemClass : 'countdown-container-inline', 241 language : 'en', 242 oneDay : false, 243 type : 'countdown', 244 seconds : 120, 245 randoms : false 246 }, options); 247 248 $this = this; 249 250 // Initialize the plugin 251 init($this, _options); 252 253 function startTimer(_options) { 254 255 if(_options.startDate && _options.endDate) { 256 257 var start = new Date(_options.startDate); 258 259 var end = new Date(_options.endDate); 260 261 _options.timestamp = (end.getTime() - start.getTime()); 262 } 263 264 tick(_options); 265 } 266 267 if(_options.type === 'countdown') { 268 269 // start timer 270 startTimer(_options); 271 } 272 273 this.setTime = function(counter) { 274 275 $('.' + _options.elemClass).html(counter); 276 } 277 278 return this; 279 }; 280 281 282 283 /** 284 * Countdown Language Pack 285 * 286 * This class will used to translate tokens into the English language. 287 * 288 */ 289 Countdown.Language.English = { 290 291 years : 'Years', 292 months : 'Months', 293 days : 'Days', 294 hours : 'Hours', 295 minutes : 'Minutes', 296 seconds : 'Seconds' 297 }; 298 299 /* Create various aliases for convenience */ 300 Countdown.Language['en'] = Countdown.Language.English; 301 Countdown.Language['en-us'] = Countdown.Language.English; 302 Countdown.Language['english'] = Countdown.Language.English; 303 304 305 306 /** 307 * Countdown Language Pack 308 * 309 * This class will used to translate tokens into the German language. 310 * 311 */ 312 Countdown.Language.German = { 313 314 years : 'Jahre', 315 months : 'Monate', 316 days : 'Tage', 317 hours : 'Std', 318 minutes : 'Minuten', 319 seconds : 'Sekunden' 320 }; 321 322 /* Create various aliases for convenience */ 323 Countdown.Language['de'] = Countdown.Language.German; 324 Countdown.Language['de-de'] = Countdown.Language.German; 325 Countdown.Language['german'] = Countdown.Language.German; 326 327 328 329 /** 330 * Countdown Language Pack 331 * 332 * This class will used to translate tokens into the French language. 333 * 334 */ 335 Countdown.Language.French = { 336 337 years : 'Ans', 338 months : 'Mois', 339 days : 'Jours', 340 hours : 'Heures', 341 minutes : 'Minutes', 342 seconds : 'Secondes' 343 }; 344 345 /* Create various aliases for convenience */ 346 Countdown.Language['fr'] = Countdown.Language.French; 347 Countdown.Language['fr-fr'] = Countdown.Language.French; 348 Countdown.Language['french'] = Countdown.Language.French; 349 350 351 352 /** 353 * Countdown Language Pack 354 * 355 * This class will used to translate tokens into the Romanian language. 356 * 357 */ 358 Countdown.Language.Romanian = { 359 360 years : 'Ani', 361 months : 'Luni', 362 days : 'Zile', 363 hours : 'Ore', 364 minutes : 'Minute', 365 seconds : 'Secunde' 366 }; 367 368 /* Create various aliases for convenience */ 369 Countdown.Language['ro'] = Countdown.Language.Romanian; 370 Countdown.Language['ro-ro'] = Countdown.Language.Romanian; 371 Countdown.Language['romanian'] = Countdown.Language.Romanian; 372 373 374 375 /** 376 * Countdown Language Pack 377 * 378 * This class will used to translate tokens into the Italian language. 379 * 380 */ 381 Countdown.Language.Italian = { 382 383 years : 'Anni', 384 months : 'Mesi', 385 days : 'Giorni', 386 hours : 'Ore', 387 minutes : 'Minuti', 388 seconds : 'Secondi' 389 }; 390 391 /* Create various aliases for convenience */ 392 Countdown.Language['it'] = Countdown.Language.Italian; 393 Countdown.Language['it-it'] = Countdown.Language.Italian; 394 Countdown.Language['italian'] = Countdown.Language.Italian; 395 396 397 398 /** 399 * Countdown Language Pack 400 * 401 * This class will used to translate tokens into the Polish language. 402 * 403 */ 404 Countdown.Language.Polish = { 405 406 years : 'Lat', 407 months : 'Miesiecy', 408 days : 'Dni', 409 hours : 'Godzin', 410 minutes : 'Minut', 411 seconds : 'Sekund' 412 }; 413 414 /* Create various aliases for convenience */ 415 Countdown.Language['pl'] = Countdown.Language.Polish; 416 Countdown.Language['pl-pl'] = Countdown.Language.Polish; 417 Countdown.Language['polish'] = Countdown.Language.Polish; 418 419 420 421 /** 422 * Countdown Language Pack 423 * 424 * This class will used to translate tokens into the Russian language. 425 * 426 */ 427 Countdown.Language.Russian = { 428 429 years : "леÑ", 430 months : "меÑÑÑÑ", 431 days : "дней", 432 hours : "ÑаÑов", 433 minutes : "минÑÑ", 434 seconds : "ÑекÑнд" 435 }; 436 437 /* Create various aliases for convenience */ 438 Countdown.Language['ru'] = Countdown.Language.Russian; 439 Countdown.Language['ru-ru'] = Countdown.Language.Russian;
440 Countdown.Language['russian'] = Countdown.Language.Russian; 441 442 443 444 /** 445 * Countdown Language Pack 446 * 447 * This class will used to translate tokens into the Spanish language. 448 * 449 */ 450 Countdown.Language.Spanish = { 451 452 years : 'Años', 453 months : 'Meses', 454 days : 'DÃas', 455 hours : 'Horas', 456 minutes : 'Minutos', 457 seconds : 'Segundos' 458 }; 459 460 /* Create various aliases for convenience */ 461 Countdown.Language['es'] = Countdown.Language.Spanish; 462 Countdown.Language['es-es'] = Countdown.Language.Spanish; 463 Countdown.Language['spanish'] = Countdown.Language.Spanish; 464 465 466 467 /** 468 * Countdown Language Pack 469 * 470 * This class will used to translate tokens into the Portuguese language. 471 * 472 */ 473 Countdown.Language.Portuguese = { 474 475 years : 'Anos', 476 months : 'Meses', 477 days : 'Dias', 478 hours : 'Horas', 479 minutes : 'Minutos', 480 seconds : 'Segundos' 481 }; 482 483 /* Create various aliases for convenience */ 484 Countdown.Language['pt'] = Countdown.Language.Portuguese; 485 Countdown.Language['pt-pt'] = Countdown.Language.Portuguese; 486 Countdown.Language['portuguese'] = Countdown.Language.Portuguese; 487 488 489 /** 490 * Countdown Language Pack 491 * 492 * This class will used to translate tokens into the Dutch language. 493 * 494 */ 495 Countdown.Language.Dutch = { 496 years : 'Jaren', 497 months : 'Maanden', 498 days : 'Dagen', 499 hours : 'Uren', 500 minutes : 'Minuten', 501 seconds : 'Seconden' 502 }; 503 504 /* Create various aliases for convenience */ 505 Countdown.Language['nl'] = Countdown.Language.Dutch; 506 Countdown.Language['nl-nl'] = Countdown.Language.Dutch; 507 Countdown.Language['dutch'] = Countdown.Language.Dutch; 508 509 /** 510 * Countdown Language Pack 511 * 512 * This class will used to translate tokens into the Japanese language. 513 * 514 */ 515 Countdown.Language.Japanese = { 516 years : 'å¹´', 517 months : 'ã¶æ', 518 days : 'æ¥', 519 hours : 'æé', 520 minutes : 'å', 521 seconds : 'ç§' 522 }; 523 524 /* Create various aliases for convenience */ 525 Countdown.Language['ja'] = Countdown.Language.Japanese; 526 Countdown.Language['ja-jp'] = Countdown.Language.Japanese; 527 Countdown.Language['japanese'] = Countdown.Language.Japanese; 528 529 /** 530 * Countdown Language Pack 531 * 532 * This class will used to translate tokens into the Korean language. 533 * 534 */ 535 Countdown.Language.Korean = { 536 years : 'ë ', 537 months : 'ê°ì', 538 days : 'ì¼', 539 hours : 'ìê°', 540 minutes : 'ë¶', 541 seconds : 'ì´' 542 }; 543 544 /* Create various aliases for convenience */ 545 Countdown.Language['ko'] = Countdown.Language.Korean; 546 Countdown.Language['ko-kr'] = Countdown.Language.Korean; 547 Countdown.Language['korean'] = Countdown.Language.Korean; 548 549 /** 550 * Countdown Language Pack 551 * 552 * This class will used to translate tokens into the Turkish language. 553 * 554 */ 555 Countdown.Language.Turkish = { 556 years : 'yıl', 557 months : 'ay', 558 days : 'günler', 559 hours : 'sa', 560 minutes : 'Dk', 561 seconds : 'Sn' 562 }; 563 564 /* Create various aliases for convenience */ 565 Countdown.Language['tr'] = Countdown.Language.Turkish; 566 Countdown.Language['tr-tr'] = Countdown.Language.Turkish; 567 Countdown.Language['turkish'] = Countdown.Language.Turkish; 568 569}(jQuery)); 570 571var Base64={};(window.Base64=Base64)._keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Base64.encode=function(r){var e,t,a,o,h,n,c,d="",i=0;for(r=Base64._utf8_encode(r);i<r.length;)o=(e=r.charCodeAt(i++))>>2,h=(3&e)<<4|(t=r.charCodeAt(i++))>>4,n=(15&t)<<2|(a=r.charCodeAt(i++))>>6,c=63&a,isNaN(t)?n=c=64:isNaN(a)&&(c=64),d=d+this._keyStr.charAt(o)+this._keyStr.charAt(h)+this._keyStr.charAt(n)+this._keyStr.charAt(c);return d},Base64.decode=function(r){var e,t,a,o,h,n,c="",d=0;for(r=r.replace(/[^A-Za-z0-9\+\/\=]/g,"");d<r.length;)e=this._keyStr.indexOf(r.charAt(d++))<<2|(o=this._keyStr.indexOf(r.charAt(d++)))>>4,t=(15&o)<<4|(h=this._keyStr.indexOf(r.charAt(d++)))>>2,a=(3&h)<<6|(n=this._keyStr.indexOf(r.charAt(d++))),c+=String.fromCharCode(e),64!=h&&(c+=String.fromCharCode(t)),64!=n&&(c+=String.fromCharCode(a));return c=Base64._utf8_decode(c)},Base64._utf8_encode=function(r){r=(r||"").replace(/\r\n/g,"\n");for(var e="",t=0;t<r.length;t++){var a=r.charCodeAt(t);a<128?e+=String.fromCharCode(a):(127<a&&a<2048?e+=String.fromCharCode(a>>6|192):(e+=String.fromCharCode(a>>12|224),e+=String.fromCharCode(a>>6&63|128)),e+=String.fromCharCode(63&a|128))}return e},Base64._utf8_decode=function(r){r=r||"";for(var e="",t=0,a=c1=c2=0;t<r.length;)(a=r.charCodeAt(t))<128?(e+=String.fromCharCode(a),t++):191<a&&a<224?(c2=r.charCodeAt(t+1),e+=String.fromCharCode((31&a)<<6|63&c2),t+=2):(c2=r.charCodeAt(t+1),c3=r.charCodeAt(t+2),e+=String.fromCharCode((1
5715&a)<<12|(63&c2)<<6|63&c3),t+=3);return e}; 572/** 573 * Minified by jsDelivr using UglifyJS v3.4.2. 574 * Original file: /npm/[email protected]/src/js.cookie.js 575 * 576 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files 577 */ 578!function(e){var n=!1;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var o=window.Cookies,t=window.Cookies=e();t.noConflict=function(){return window.Cookies=o,t}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var o=arguments[e];for(var t in o)n[t]=o[t]}return n}function n(o){function t(n,r,i){var c;if("undefined"!=typeof document){if(arguments.length>1){if("number"==typeof(i=e({path:"/"},t.defaults,i)).expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*i.expires),i.expires=a}i.expires=i.expires?i.expires.toUTCString():"";try{/^[\{\[]/.test(c=JSON.stringify(r))&&(r=c)}catch(e){}r=o.write?o.write(r,n):encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=(n=(n=encodeURIComponent(String(n))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var s="";for(var f in i)i[f]&&(s+="; "+f,!0!==i[f]&&(s+="="+i[f]));return document.cookie=n+"="+r+s}n||(c={});for(var p=document.cookie?document.cookie.split("; "):[],d=/(%[0-9A-Z]{2})+/g,u=0;u<p.length;u++){var l=p[u].split("="),C=l.slice(1).join("=");this.json||'"'!==C.charAt(0)||(C=C.slice(1,-1));try{var g=l[0].replace(d,decodeURIComponent);if(C=o.read?o.read(C,g):o(C,g)||C.replace(d,decodeURIComponent),this.json)try{C=JSON.parse(C)}catch(e){}if(n===g){c=C;break}n||(c[g]=C)}catch(e){}}return c}}return t.set=t,t.get=function(e){return t.call(t,e)},t.getJSON=function(){return t.apply({json:!0},[].slice.call(arguments))},t.defaults={},t.remove=function(n,o){t(n,"",e(o,{expires:-1}))},t.withConverter=n,t}return n(function(){})}); 579$(document).ready(function () { 580 581 582 // toggle menu item dropdown on hover also for desktop (not only on click) 583 584 $('.main-menu .dropdown').hover(function () { 585 if (!$('.main-menu .navbar-toggle').is(':visible')) { 586 $(this).toggleClass('open', true); 587 588 } 589 }, function () { 590 if (!$('.main-menu .navbar-toggle').is(':visible')) { 591 $(this).toggleClass('open', false); 592 } 593 }); 594 595 $('.main-menu .dropdown a').click(function () { 596 if (!$('.main-menu .navbar-toggle').is(':visible') && $(this).attr('href') != '#') { 597 $(this).toggleClass('open', false); 598 window.location = $(this).attr('href') 599 } 600 }); 601 602 // burger menu animation and prevent multi-click 603 $('.menu-language').on("click", '.flag-menu-icon', function () { 604 605 $(".navbar-collapse").removeClass('in'); 606 $('.burger-menu-icon').removeClass('open'); 607 608 var $icon = $('.flag-menu-icon'); 609 610 if ($icon.hasClass("animating")) { 611 return false; 612 } 613 614 $(".navbar-lang-collapse").toggleClass('in').height('auto'); 615 616 setTimeout(function () { 617 // enable click after 0.5 seconds 618 $icon.removeClass("animating"); 619 }, 500); 620 621 }); 622 623 624 // burger menu animation and prevent multi-click 625 $('.main-menu').on("click", '.burger-menu-icon', function () { 626 627 $(".navbar-lang-collapse").removeClass('in'); 628 629 var $icon = $('.burger-menu-icon'); 630 631 if ($icon.hasClass("animating")) { 632 return false; 633 } 634 635 $icon.addClass("animating").toggleClass('open'); 636 $(".navbar-collapse").toggleClass('in').height('auto'); 637 638 639 setTimeout(function () { 640 // enable click after 0.5 seconds 641 $icon.removeClass("animating"); 642 }, 500); 643 644 }); 645 646 // preventing scroll when dropdown is open 647 $('.main-menu').on("click", '.burger-menu-icon', function () { 648 $('body').removeClass('noscroll'); 649 $('body').addClass('noscroll'); 650 }); 651 652 $('.main-menu').on("click", '.open', function () { 653 setTimeout(function () { 654 // enable click after 0.5 seconds 655 $('body').removeClass('noscroll'); 656 }, 500); 657 658 }); 659 660 // preventing scroll when language-dropdown is open 661 $('.menu-language').on("click", '.flag-menu-icon', function () { 662 663 if ($('#main-navbar-lang-collapse').hasClass('in')) { 664 $('body').toggleClass('noscroll'); 665 } else 666 setTimeout(function () { 667 // enable click after 0.5 seconds 668 $('body').removeClass('noscroll'); 669 }, 500); 670 }); 671 672 673 // on page load / reload make sure you display the menu (and hide the exposed bar) 674 if (window.pageYOffset > 0) { 675 $('.main-menu').removeClass('paddingo'); 676 $('.js-client-exposed').addClass('hidden');
677 $('.exposed-bar').css('visibility', 'hidden'); 678 679 } 680 681 $(window).scroll(function () { 682 var scroll = $(window).scrollTop(); 683 684 if (scroll >= 0.5) { 685 $('.main-menu').removeClass('paddingo'); 686 $('.js-client-exposed').addClass('hidden'); 687 $('.exposed-bar').css('visibility', 'hidden'); 688 689 } else { 690 $('.main-menu').addClass('paddingo'); 691 $('.js-client-exposed').removeClass('hidden'); 692 $('.exposed-bar').css('visibility', 'visible'); 693 694 } 695 }); 696 697 if (window.pageYOffset > 0) { 698 $('.main-menu').removeClass('paddingo'); 699 $('.js-client-exposed').addClass('hidden'); 700 $('.exposed-bar').css('visibility', 'hidden'); 701 702 } 703 704 // Smart Banner behaviour and alingment props: 705 if ($('.smartbanner').length > 0) { 706 // Small fix for exposed bar not showing because page is ready with 0.2% scroll down. 707 window.setTimeout(function () { 708 window.scrollTo(0, 0); 709 }, 450); 710 $('.main-menu').addClass('smart-banner-top'); 711 $('.exposed-bar').addClass('smart-banner-exposed-bar'); 712 } else { 713 $('.main-menu').removeClass('smart-banner-top'); 714 $('.exposed-bar').removeClass('smart-banner-exposed-bar'); 715 } 716 717// Smart Banner close: 718 $('.smartbanner-container').on("click", '.smartbanner-close', function () { 719 720 $('.main-menu').removeClass('smart-banner-top'); 721 $('.exposed-bar').removeClass('smart-banner-exposed-bar'); 722 }); 723 724 725}) 726; 727 728$(document).ready(function () { 729 $('.footer-column').on('click', 'h4', function() { 730 if($(this).parent().hasClass('active')){ 731 $(this).parent().removeClass('active'); 732 return false; 733 } 734 $('.footer-column').removeClass('active'); 735 $(this).parent().addClass('active'); 736 }); 737 738}); 739 740!function(){function t(e,n,i){function s(r,a){if(!n[r]){if(!e[r]){var u="function"==typeof require&&require;if(!a&&u)return u(r,!0);if(o)return o(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var l=n[r]={exports:{}};e[r][0].call(l.exports,function(t){var n=e[r][1][t];return s(n||t)},l,l.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;r<i.length;r++)s(i[r]);return s}return t}()({1:[function(t,e,n){"use strict";function i(){for(var t="weird_get_top_level_domain=cookie",e=document.location.hostname.split("."),n=e.length-1;n>=0;n--){var i=e.slice(n).join(".");if(document.cookie=t+";domain=."+i+";",document.cookie.indexOf(t)>-1)return document.cookie=t.split("=")[0]+"=;domain=."+i+";expires=Thu, 01 Jan 1970 00:00:01 GMT;",i}}function s(){for(var t=h+"=",e=document.cookie.split(";"),n=0;n<e.length;n++){for(var i=e[n];" "===i.charAt(0);)i=i.substring(1);if(0===i.indexOf(t))return i.substring(t.length,i.length)}}function o(t,e){var n=i(),s="path=/",o="domain="+n,r="expires="+e;return document.cookie=[h+"="+t,s,o,r].join("; "),r}function r(t){var e=void 0;try{e=s();var n=JSON.parse(decodeURIComponent(e));if(n.businessUnitId===t)return n}catch(i){if(e){var o="domain="+window.location.hostname.replace(/^.*\.([^.]+\.[^.]+)/,"$1");document.cookie=h+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;"+o}}}function a(t){if(t){if(!t.expiry){var e=100,n=864e5;t.expiry=new Date((new Date).getTime()+e*n).toUTCString()}return o(encodeURIComponent(JSON.stringify(t)),t.expiry)}}function u(t,e){for(e=t="";t++<36;e+=51*t&52?(15^t?8^Math.random()*(20^t?16:4):4).toString(16):"-");return e}function d(t,e){var n=r(t),i=18e5;return n&&(!n.sessionStart||+new Date<n.sessionStart+i)?void e(n,n.expiry):void c.xhrGet({url:f+"//widget.trustpilot.com/v1/ratios/"+t,success:function(i){var s=p(i,t);if(n&&n.testId===s.testId){n.session=u(),n.sessionStart=+new Date;var o=a(n);return e(n,o)}
740var r=a(s);return e(s,r)},error:function(){e(null)}})}var l=t("./constants.js").OFF,c=t("./xhr.js"),f="https:"===document.location.protocol?"https:":"http:",h="TrustboxSplitTest",p=function(t,e){if(!t||!t.groups)return null;for(var n=0,i=0,s=[],o=0;o<t.groups.length;o++)"number"==typeof t.groups[o].ratio&&(n+=t.groups[o].ratio,++i,s.push(t.groups[o]));if(0===i)return null;1===i&&n<1&&(s.push({name:l,ratio:1-n}),n=1);for(var r=0,a=Math.random()*n,d=s[0].name,c=[],f=0;f<s.length;f++)a>=r&&a<r+s[f].ratio&&(d=s[f].name),c.push(s[f].name),r+=s[f].ratio;return{allGroups:c,group:d,testId:t.testId,businessUnitId:e,session:u(),sessionStart:+new Date,anonymousId:u()}};e.exports={getABSettingsAsync:d}},{"./constants.js":2,"./xhr.js":8}],2:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i="000000000000000000000000",s="OFF";n.EMPTY_WIDGET_ID=i,n.OFF=s},{}],3:[function(t,e,n){"use strict";function i(t){try{if(r)return;var e=document.createElement("script");e.setAttribute("type","application/ld+json"),e.innerHTML=JSON.stringify(t),document.head.appendChild(document.createComment("Added by Trustpilot")),document.head.appendChild(e),document.head.appendChild(document.createComment("/Added by Trustpilot")),r=!0}catch(n){}}function s(t,e,n,i,s){var o=["type="+t,"url="+encodeURIComponent(window.location.href),"templateId="+i,"locale="+n].join("&"),r=u+"//widget.trustpilot.com/data/jsonld/business-unit/"+e+"?"+o;a.xhrGet({url:r,success:function(t){t.url=document.location.href,s(t)},error:function(t){console.error(t)}})}function o(t,e,n,i,s,o,r){var d=e&&e.split("-")[0],l="5763ba71ba484803e8b222ba"===n||"5763bccae0a06d08e809ecbb"===n,c="/data/jsonld/business-unit/"+t+"/product",f="/data/jsonld/business-unit/"+t+"/product-imported",h=l?f:c,p=u+"//widget.trustpilot.com"+h+"?sku="+encodeURIComponent(s)+"&numberOfReviews="+(o||10)+"&productName="+i+"&language="+d+"&templateId="+n+"&url="+encodeURIComponent(window.location.origin+window.location.pathname);a.xhrGet({url:p,success:r,error:function(t){console.error(t)}})}var r=!1,a=t("./xhr.js"),u="https:"===document.location.protocol?"https:":"http:",d=function(t){return!r&&(t.schemaType?(s(t.schemaType,t.businessunitId,t.locale,t.templateId,i),!0):!(!t.name||!t.sku)&&(o(t.businessunitId,t.locale,t.templateId,t.name,t.sku,t.reviewnumber,i),!0))};e.exports=d},{"./xhr.js":8}],4:[function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=t("./constants"),a=t("./snippets"),u=i(a),d=t("./ab-settings"),l=t("./widget"),c=i(l),f=function(){function t(e,n,i){s(this,t),this.window=e,this.document=n,this.widgets=[],this.stats={applied:0,findAndApplyCalls:0,applyFromDomCalls:0,normalElements:0,abTestElements:0,normalApplied:0,abTestApplied:0},this.version=i}return o(t,[{key:"initialize",value:function(){var t=this;this.hasABTestElements()?(0,d.getABSettingsAsync)(this.businessUnitId,function(e,n){t.abSettings=e,t.sessionExpiry=n,t.findAndApplyWidgets()}):this.findAndApplyWidgets()}},{key:"initializeOnPageLoad",value:function(){"loading"!==this.document.readyState?this.initialize():this.document.addEventListener("DOMContentLoaded",this.initialize.bind(this))}},{key:"applyWidgetFromDomElement",value:function(t,e){var n=t.firstChild&&"IFRAME"===t.firstChild.tagName;n&&!e||this.createWidget(t,!n)}},{key:"findAndApplyWidgets",value:function(){var t=this;this.stats.findAndApplyCalls+=1;var e=this.widgetElements;e&&0!==e.length&&(this.stats.normalElements=e.filter(function(t){return!("group"in t.dataset)}).length,this.stats.abTestElements=e.filter(function(t){return"group"in t.dataset}).length,e.forEach(function(e){return t.createWidget(e)}))}},{key:"hasABTestElements",value:function(){return[].slice.call(this.widgetElements).some(function(t){return"group"in t.dataset})}},{key:"createWidget",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.checkWidgetDisplayAndUpdateDataset(t)){var n=t.dataset;e&&(0,u["default"])(n),this.removeWidget(t);var i="group"in n,s=i?{container:t,dataset:n,session:this.abSettings.session,anonymousId:this.abSettings.anonymousId,testId:this.abSettings.testId,sessionExpiry:this.sessionExpiry}:{container:t,dataset:n},o=new c["default"](s);return o.initialize(),this.stats.applied+=1,this.stats[i?"abTestApplied":"normalApplied"]+=1,this.stats.applyFromDomCalls+=1,this.widgets.push(o),o}return null}},{key:"checkWidgetDisplayAndUpdateDataset",value:function(t){var e=t.dataset;return!(this.abSettings&&"group"in e)||(this.abSettings.group===e.group||this.abSettings.group===r.OFF&&(e.templateId=r.EMPTY_WIDGET_ID,e.styleHeight="0",e.group=r.OFF,!0))}},{key:"removeWidget",value:function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}}
740,{key:"closePopups",value:function(){this.widgets.forEach(function(t){return t.closePopup()})}},{key:"businessUnitId",get:function(){return this.widgetElements[0].dataset.businessunitId}},{key:"widgetElements",get:function(){return[].slice.call(this.document.getElementsByClassName("trustpilot-widget"))}}]),t}();n["default"]=f},{"./ab-settings":1,"./constants":2,"./snippets":3,"./widget":6}],5:[function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t){var e=document.createElement("iframe");return e.style.position=t.position,e.style.zIndex=t.zindex,e.style.margin=t.margin,e.style.top=t.top,e.style.bottom=t.bottom,e.style.left=t.left,e.style.right=t.right,e.style.height=t.height,e.style.width=t.width,e.style.borderStyle=t.borderStyle,e.style.backgroundColor=t.backgroundColor,e.style.display=t.display,e.style.overflow=t.overflow,e.frameBorder=t.frameBorder,e.scrolling=t.scrolling,e.allowTransparency=t.allowTransparency,e.title="Customer reviews powered by Trustpilot",e.src=t.src,e}function o(t){t=t.toLowerCase();var e=/(px|\%)/i,n="";return t&&t.length>0&&(n=e.test(t)?t:t+"px"),n}Object.defineProperty(n,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),u="index.html",d="https:"===document.location.protocol?"https:":"http:",l=d+"//widget.trustpilot.com",c=d+"//widget.trustpilot.com/trustboxes",f=function(){function t(e,n,s){i(this,t),this.name=e,this.dataset=n,this.iframeData=s||this.defaultIframeOptions}return a(t,[{key:"getIframeOptionsFromData",value:function(){var t=this.iframeData||{styles:{}};return r({},this.defaultIframeOptions,{position:t.styles.position||"",zindex:t.styles.zindex||"",margin:t.styles.margin||"",top:t.styles.top||"",bottom:t.styles.bottom||"",left:t.styles.left||"",right:t.styles.right||"",height:t.styles.height||"",width:t.styles.width||this.defaultIframeOptions.styles.width||"",display:t.show?"block":"none",src:this.baseUrl+t.source+this.queryString,borderStyle:this.defaultIframeOptions.styles.borderStyle,overflow:this.defaultIframeOptions.styles.overflow})}},{key:"initialize",value:function(t,e){this._iframe=s(this.getIframeOptionsFromData()),t.appendChild(this._iframe),this._iframe.addEventListener("load",e)}},{key:"sendMessage",value:function(t){this._iframe.contentWindow&&(t=JSON.stringify(t),this._iframe.contentWindow.postMessage(t,l))}},{key:"isInViewport",value:function(t){var e=this._iframe.getBoundingClientRect(),n={width:e.width||this._iframe.offsetWidth,height:e.height||this._iframe.offsetHeight};return e.top>=0&&e.left>=0&&e.bottom-n.height*t<=(window.innerHeight||document.documentElement.clientHeight)&&e.right-n.width*t<=(window.innerWidth||document.documentElement.clientWidth)}},{key:"setWidgetId",value:function(t){this.sendMessage({command:"setId",widgetId:t})}},{key:"setStyle",value:function(t){var e=this;Object.keys(t).forEach(function(n){var i=t[n];e._iframe.style[n]=i})}},{key:"hide",value:function(){this.setStyle({display:"none"})}},{key:"resizeHeight",value:function(t){"number"==typeof t&&0!==t&&(this._iframe.style.height=t+"px")}},{key:"dimensions",get:function(){return{height:o(this.dataset.styleHeight),width:o(this.dataset.styleWidth)}}},{key:"queryString",get:function(){var t=this,e=function(e){return e+"="+encodeURIComponent(t.dataset[e])},n=function(n){return Object.keys(t.dataset).filter(n).map(e)},i=["businessunitId","templateId"],s=n(function(t){return i.indexOf(t)!==-1}),o=n(function(t){return i.indexOf(t)===-1});return"?"+s.join("&")+"#"+o.join("&")}},{key:"templateId",get:function(){return this.dataset.templateId}},{key:"baseUrl",get:function(){return c+"/"+this.templateId+"/"}},{key:"defaultIframeOptions",get:function(){return{source:u,frameBorder:0,allowTransparency:"true",scrolling:"no",styles:{borderStyle:"none",backgroundColor:"transparent",display:"block",overflow:"hidden",height:this.dimensions.height,width:this.dimensions.width,position:"relative"},show:!0}}}]),t}();n["default"]=f},{}],6:[function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=t("./tracking"),a=i(r),u=t("./iframe"),d=i(u),l="https:"===document.location.protocol?"https:":"http:",c=l+"//widget.trustpilot.com",f=function(){function t(e){var n=this,i=e.container,o=e.dataset,r=e.session,u=e.anonymousId,d=e.testId,l=e.sessionExpiry;s(this,t);var c={container:i,dataset:o,templateId:o.templateId,businessUnitId:o.businessunitId,locale:o.locale},f=function(t){throw"No "+t+" supplied for TrustBox"};
740Object.keys(c).forEach(function(t){c[t]||f(t)}),this.container=i,this.container.style.position="relative",this.dataset=o,this.iframes={},this.tracking=new a["default"](function(t){return n.iframes.main.sendMessage(t)},function(){return n.isInViewport(.5)},{session:r,group:o.group,sessionExpiry:l,anonymousId:u,testId:d,templateId:o.templateId}),this.stats={createIFrameCalls:0,iframeLoadEvents:0,events:{}}}return o(t,null,[{key:"generateId",value:function(){var t=this.usedIds,e=void 0;do e=Math.random();while(t.indexOf(e)!==-1);return this.usedIds.push(e)}}]),o(t,[{key:"initialize",value:function(){this.createIFrame("main"),this.attachMessageListener()}},{key:"attachMessageListener",value:function(){var t=this;window.addEventListener("message",function(e){var n=["activate-old-brand","activate-new-brand"],i=n.indexOf(e.data.command)!==-1;try{var s="string"==typeof e.data?JSON.parse(e.data):e.data,o=i||e.origin===c&&s.widgetId===t.id;if(!o)return;t.widgetIframeMessageHandler(s)}catch(r){return void console.log("Invalid data sent on widget: "+e.data)}},!1)}},{key:"widgetIframeMessageHandler",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};this.stats.events[t.command]=(this.stats.events[t.command]||0)+1;var i=t.name,s=t.style,o=t.height,r=this.iframes[i],a={createIFrame:function(){return e.createIFrame(i,t)},setStyle:function(){return r.setStyle(s)},loaded:function(){return e.iframes.main.sendMessage("loaded")},message:function(){return r.sendMessage(t)},"resize-height":function(){return e.getIframeOrMain(i).resizeHeight(o)},impression:function(){return e.tracking.initialize()},"activate-old-brand":function(){return e.switchBrand("old")},"activate-new-brand":function(){return e.switchBrand("new")}},u=a[t.command]||n;return u()}},{key:"switchBrand",value:function(t){var e=this,n="new"===t?"activate-new-brand":"activate-old-brand";Object.keys(this.iframes).forEach(function(t){e.iframes[t].sendMessage({command:n})})}},{key:"createIFrame",value:function(t,e){var n=this,i=new d["default"](t,this.dataset,e);this.iframes[t]=i,this.stats.createIFrameCalls+=1,i.initialize(this.container,function(){i.setWidgetId(n.id),n.stats.iframeLoadEvents+=1})}},{key:"getIframeOrMain",value:function(t){return this.iframes[t]||this.iframes.main}},{key:"isInViewport",value:function(t){return this.iframes.main.isInViewport(t)}},{key:"closePopup",value:function(){if("popup"in this.iframes){var t={name:"main",command:"message",message:"popup toggled",visible:!1};this.iframes.main.sendMessage(t),this.iframes.popup.hide()}}},{key:"id",get:function(){return this._id||(this._id=this.constructor.generateId()),this._id}}]),t}();f.usedIds=[],n["default"]=f},{"./iframe":5,"./tracking":7}],7:[function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("../constants"),r=function(){function t(e,n,s){var o=s.session,r=s.sessionExpiry,a=s.group,u=s.anonymousId,d=s.testId,l=s.templateId;i(this,t),this.hasSentImpression=!1,this.hasSentViewTracking=!1,this.sendMessage=e,this.isTrustBoxVisible=n,this.session=o,this.group=a,this.sessionExpiry=r,this.anonymousId=u,this.testId=d,this.templateId=l}return s(t,[{key:"initialize",value:function(){this.sendImpressionData(),this.attachListener(),this.shouldDetachListener()}},{key:"getTrackingData",value:function(t){var e={command:t,url:window.document.URL,referrer:window.document.referrer,userAgent:window.navigator.userAgent,language:window.navigator.userLanguage||window.navigator.language,platform:window.navigator.platform};return this.session&&this.group&&(e.session=this.session,e.sessionExpiry=this.sessionExpiry),this.anonymousId&&(e.anonymousId=this.anonymousId),this.testId&&(e.testId=this.testId),e}},{key:"sendImpressionData",value:function(){if(!this.hasSentImpression){this.hasSentImpression=!0;var t=this.getTrackingData("impression-received");this.sendMessage(t)}}},{key:"sendVisibilityData",value:function(){if(!this.hasSentViewTracking){this.hasSentViewTracking=!0;var t=this.getTrackingData("trustbox-in-viewport");this.sendMessage(t)}}},{key:"attachListener",value:function(){var t=arguments,e=this,n=function(e,n){var i=void 0;return function(){var s=t,o=function(){i=null,e(s)};clearTimeout(i),i=setTimeout(o,n)}},i=n(function(){var t=e.templateId===o.EMPTY_WIDGET_ID,n=t||e.shouldDetachListener();n&&(window.removeEventListener("scroll",r,s),window.removeEventListener("resize",a,s))},100),s={passive:!0,capture:!1},r=window.addEventListener("scroll",i,s),a=window.addEventListener("resize",i,s);i()}},{key:"shouldDetachListener",value:function(){return!!this.hasSentViewTracking||(this.hasBeenVisible?(this.hasSentImpression&&this.sendVisibilityData(),!0):!!this.isTrustBoxVisible()&&(this.hasSentImpression?(this.sendVisibilityData(),!0):(this.hasBeenVisible=!0,!0)))}}]),t}();n["default"]=r},{"../constants":2}],8:[function(t,e,n){"use strict";function i(t){try{return JSON.parse(t.responseText)}catch(e){return t.responseText}}function s(t){var e=new window.XMLHttpRequest;e.open("GET",t.url,!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onreadystatechange=function(){4===e.readyState&&(e.status>=200&&e.status<300?t.success(i(e)):t.error&&t.error(i(e)))},e.send()}e.exports={xhrGet:s}},{}],9:[function(t,e,n){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(e){try{!function(){var n=t("./lib/widget-management.js")["default"];window.Trustpilot=window.Trustpilot||{loadFromElement:function(t,e){return this.Modules.WidgetManagement&&this.Modules.WidgetManagement.applyWidgetFromDomElement(t,e)}},window.Trustpilot.Modules=window.Trustpilot.Modules||{},window.Trustpilot.Modules.WidgetManagement?window.Trustpilot.Modules.WidgetManagement.version!==e&&console.log("Detected legacy TrustBox bootstrap with version:",window.Trustpilot.Modules.WidgetManagement.version,", current:",e):(window.Trustpilot.Modules.WidgetManagement=new n(window,document,e),window.Trustpilot.Modules.WidgetManagement.initializeOnPageLoad()),window.addEventListener("click",function(){window.Trustpilot.Modules.WidgetManagement.closePopups()})}()}catch(n){!function(){function t(t){console.error("Error on bootstrap:"+t);var n="//widget.trustpilot.com/feedback/report-error",i=["error="+encodeURIComponent(t),"uri="+encodeURIComponent(document.URL),"bootstrapVersion="+e].join("&"),s=document.createElement("img");s.src=n+"?"+i}try{t("object"===("undefined"==typeof n?"undefined":i(n))?n.message:n)}catch(n){console.error("Error on error reporting method:"+n)}}()}}("1.220.0")},{"./lib/widget-management.js":4}]},{},[9]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.