PageSourceSearch

https://assets.zenmate.com/js/26f5763635907183e16a5f3c976897623de8…cf27378c3d3a50786afe4f5691.js?v=3.213.0-rc2

js zenmate.com collected 2026-10-02 05:54:56 UTC 40,371 bytes, 740 lines download raw bytes

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.