PageSourceSearch

https://www.kilchomandistillery.com/wp-content/themes/kilchoman/js/main.js?ver=1790279992

js kilchomandistillery.com collected 2026-09-24 20:00:14 UTC 77,166 bytes, 2,142 lines download raw bytes

1var myPathD = [];
2var myPathC = [];
3var Triangle = [];
4var snapC = [];
5var snapD = [];
6
7/**
8 * Competition modal country field must stay a native <select> for keyboard/tab access.
9 * Global Selectric leaves a hidden .selectric-input that steals focus and blocks typing.
10 */
11function kilchomanCompetitionUseNativeSelect() {
12    var $modal = jQuery('#competitionModal');
13
14    if (!$modal.length) {
15        return;
16    }
17
18    $modal.find('select.country-type, select[name="country"]').each(function () {
19        var $select = jQuery(this);
20
21        if (jQuery.fn.selectric && $select.data('selectric')) {
22            try {
23                $select.selectric('destroy');
24            } catch (error) {
25                // Fall through to manual cleanup below.
26            }
27        }
28
29        $select.siblings('.selectric-input').remove();
30
31        var $wrapper = $select.closest('.selectric-wrapper');
32        if ($wrapper.length) {
33            $select.detach();
34            $wrapper.replaceWith($select);
35        }
36
37        $select
38            .removeClass('selectric-hide-select')
39            .prop('tabindex', 0)
40            .css({
41                position: '',
42                left: '',
43                opacity: '',
44                visibility: '',
45                clip: '',
46                width: '',
47                height: ''
48            });
49    });
50
51    $modal.find('.selectric-input').remove();
52}
53
54function setSVGInit(id, index) {
55
56    snapC[index] = Snap(id);
57    snapD[index] = Snap(id);
58
59    myPathD[index] = snapC[index].path("M1,1c0,0,0,136.766,1.189,181.065c0.525,19.546,8.82,39.406,37.499,68.085c32.701,35.185,76.968,44.105,85.095,68.285 c15.619,46.474-80.144,121.175-67.689,172.342c2.942,12.088,28.162,15.561,52.823,10.208c33.168-7.198,77.093-44.698,77.093-44.698").attr({
60        id: 'svg_offset',
61        fill: "none",
62        strokeWidth: "2",
63        stroke: "#ba9765",
64    });
65
66    myPathC[index] = snapC[index].path("M1,1c0,0,0,136.766,1.189,181.065c0.525,19.546,8.82,39.406,37.499,68.085c32.701,35.185,76.968,44.105,85.095,68.285 c15.619,46.474-80.144,121.175-67.689,172.342c2.942,12.088,28.162,15.561,52.823,10.208c33.168-7.198,77.093-44.698,77.093-44.698").attr({
67        fill: "none",
68        strokeWidth: "2",
69        strokeDasharray: '2',
70        stroke: "#ba9765",
71    });
72
73    Triangle[index] = snapC[index].path("M12.2,2.1c-2.8,0-5.1,1-7.1,3s-3,4.3-3,7.1c0,2.8,1,5.1,3,7.1s4.3,3,7.1,3s5.1-1,7.1-3s3-4.3,3-7.1 c0-2.8-1-5.1-3-7.1C17.4,3.1,15,2.1,12.2,2.1z").attr({
74        fill: "#1b3975",
75        stroke: "#ba9765",
76        strokeWidth: "9px",
77        strokeDasharray: '0',
78        strokeLinejoin: "round",
79        class: "svg-round",
80        transform: 'scale(0.65)',
81    });
82}
83
84function setSVGInit1(id, index) {
85
86    snapC[index] = Snap(id);
87    snapD[index] = Snap(id);
88
89    myPathD[index] = snapC[index].path("M1-61.956V93.677c0,25.894,3.685,50.6,20.391,73.169A131.373,131.373,0,0,0,67.2,205.182c13.2,6.8,27.3,12.73,39.159,21.048,33.411,23.652,21.911,60.281,4.667,88.49-12.664,20.614-68.206,90.925-28.671,106.748,14.432,7.551,43.392-.189,59.227-13.605").attr({
90        id: 'svg_offset',
91        fill: "none",
92        strokeWidth: "2",
93        stroke: "#ba9765",
94
95    });
96
97    myPathC[index] = snapC[index].path("M1-61.956V93.677c0,25.894,3.685,50.6,20.391,73.169A131.373,131.373,0,0,0,67.2,205.182c13.2,6.8,27.3,12.73,39.159,21.048,33.411,23.652,21.911,60.281,4.667,88.49-12.664,20.614-68.206,90.925-28.671,106.748,14.432,7.551,43.392-.189,59.227-13.605").attr({
98        fill: "none",
99        strokeWidth: "2",
100        strokeDasharray: '2',
101        stroke: "#ba9765",
102
103    });
104
105    Triangle[index] = snapC[index].path("M12.2,2.1c-2.8,0-5.1,1-7.1,3s-3,4.3-3,7.1c0,2.8,1,5.1,3,7.1s4.3,3,7.1,3s5.1-1,7.1-3s3-4.3,3-7.1 c0-2.8-1-5.1-3-7.1C17.4,3.1,15,2.1,12.2,2.1z").attr({
106        fill: "#1b3975",
107        stroke: "#ba9765",
108        strokeWidth: "9px",
109        strokeDasharray: '0',
110        strokeLinejoin: "round",
111        class: "svg-round",
112        transform: 'scale(0.56) translate(2 0)',
113    });
114}
115
116function setSVGInit2(id, index) {
117
118    snapC[index] = Snap(id);
119    snapD[index] = Snap(id);
120
121    myPathD[index] = snapC[index].path("M1-120.28V36.957c0,11.316,3.307,50.757,44.8,89.133.52.507,33.182,37.783,34,38.634,35.958,37.474,18.922,136.5-34,78.942-58.71-63.854,68.637-72.959,149.912-53").attr({
122        id: 'svg_offset',
123        fill: "none",
124        strokeWidth: "2",
125        stroke: "#ba9765",
126
127    });
128
129    myPathC[index] = snapC[index].path("M1-120.28V36.957c0,11.316,3.307,50.757,44.8,89.133.52.507,33.182,37.783,34,38.634,35.958,37.474,18.922,136.5-34,78.942-58.71-63.854,68.637-72.959,149.912-53").attr({
130        fill: "none",
131        strokeWidth: "2",
132        strokeDasharray: '2',
133        stroke: "#ba9765",
134
135    });
136
137    Triangle[index] = snapC[index].path("M12.2,2.1c-2.8,0-5.1,1-7.1,3s-3,4.3-3,7.1c0,2.8,1,5.1,3,7.1s4.3,3,7.1,3s5.1-1,7.
1371-3s3-4.3,3-7.1 c0-2.8-1-5.1-3-7.1C17.4,3.1,15,2.1,12.2,2.1z").attr({
138        fill: "#1b3975",
139        stroke: "#ba9765",
140        strokeWidth: "9px",
141        strokeDasharray: '0',
142        strokeLinejoin: "round",
143        class: "svg-round",
144        transform: 'scale(0.56) translate(2 0)',
145    });
146}
147
148function setSVGInit3(id, index) {
149
150    snapC[index] = Snap(id);
151    snapD[index] = Snap(id);
152
153    myPathD[index] = snapC[index].path("M1-61.956V63.738c0,20.913,3.685,40.868,20.391,59.094,11.317,12.384,27.034,23.191,45.805,30.961,13.2,5.491,27.3,10.281,39.159,17,33.411,19.1,21.911,48.685,4.667,71.467-12.664,16.649-70.128,61.994-28.671,86.213,25.767,16.249,53.606,18.847,92.287,21.255").attr({
154        id: 'svg_offset',
155        fill: "none",
156        strokeWidth: "2",
157        stroke: "#ba9765",
158
159    });
160
161    myPathC[index] = snapC[index].path("M1-61.956V63.738c0,20.913,3.685,40.868,20.391,59.094,11.317,12.384,27.034,23.191,45.805,30.961,13.2,5.491,27.3,10.281,39.159,17,33.411,19.1,21.911,48.685,4.667,71.467-12.664,16.649-70.128,61.994-28.671,86.213,25.767,16.249,53.606,18.847,92.287,21.255").attr({
162        fill: "none",
163        strokeWidth: "2",
164        strokeDasharray: '2',
165        stroke: "#ba9765",
166
167    });
168
169    Triangle[index] = snapC[index].path("M12.2,2.1c-2.8,0-5.1,1-7.1,3s-3,4.3-3,7.1c0,2.8,1,5.1,3,7.1s4.3,3,7.1,3s5.1-1,7.1-3s3-4.3,3-7.1 c0-2.8-1-5.1-3-7.1C17.4,3.1,15,2.1,12.2,2.1z").attr({
170        fill: "#1b3975",
171        stroke: "#ba9765",
172        strokeWidth: "9px",
173        strokeDasharray: '0',
174        strokeLinejoin: "round",
175        class: "svg-round",
176        transform: 'scale(0.56) translate(2 0)',
177    });
178}
179
180function setSVGInit4(id, index) {
181
182    snapC[index] = Snap(id);
183    snapD[index] = Snap(id);
184
185    myPathD[index] = snapC[index].path("M1-61.956V93.677c0,25.894,3.685,50.6,20.391,73.169A131.373,131.373,0,0,0,67.2,205.182c13.2,6.8,27.3,12.73,39.159,21.048,33.411,23.652,21.911,60.281,4.667,88.49-12.664,20.614-68.206,90.925-28.671,106.748,14.432,7.551,71.144-2.368,86.979-15.784").attr({
186        id: 'svg_offset',
187        fill: "none",
188        strokeWidth: "2",
189        stroke: "#ba9765",
190
191    });
192
193    myPathC[index] = snapC[index].path("M1-61.956V93.677c0,25.894,3.685,50.6,20.391,73.169A131.373,131.373,0,0,0,67.2,205.182c13.2,6.8,27.3,12.73,39.159,21.048,33.411,23.652,21.911,60.281,4.667,88.49-12.664,20.614-68.206,90.925-28.671,106.748,14.432,7.551,71.144-2.368,86.979-15.784").attr({
194        fill: "none",
195        strokeWidth: "2",
196        strokeDasharray: '2',
197        stroke: "#ba9765",
198
199    });
200
201    Triangle[index] = snapC[index].path("M12.2,2.1c-2.8,0-5.1,1-7.1,3s-3,4.3-3,7.1c0,2.8,1,5.1,3,7.1s4.3,3,7.1,3s5.1-1,7.1-3s3-4.3,3-7.1 c0-2.8-1-5.1-3-7.1C17.4,3.1,15,2.1,12.2,2.1z").attr({
202        fill: "#1b3975",
203        stroke: "#ba9765",
204        strokeWidth: "9px",
205        strokeDasharray: '0',
206        strokeLinejoin: "round",
207        class: "svg-round",
208        transform: 'scale(0.56) translate(2 0)',
209    });
210}
211
212
213function svgAnimation(id, index) {
214
215    initTriangle(index);
216
217    function initTriangle(index) {
218        var triangleGroup = snapC[index].g(Triangle[index]); // Group path
219        movePoint = myPathC[index].getPointAtLength(length);
220        triangleGroup.transform('t' + parseInt(movePoint.x - 8) + ',' + parseInt(movePoint.y - 8) + 'r' + (movePoint.alpha - 90));
221    }
222
223    var lenC = myPathC[index].getTotalLength();
224
225    function animateSVG(id, index) {
226
227        myPathC[index].attr({
228            stroke: '#ba9765',
229            strokeWidth: 2,
230            fill: 'none',
231            strokeDasharray: '2',
232        });
233
234        var triangleGroup = snapC[index].g(Triangle[index]); // Group path
235
236        setTimeout(function () {
237            Snap.animate(0, lenC, function (value) {
238
239                movePoint = myPathC[index].getPointAtLength(value);
240
241                triangleGroup.transform('t' + parseInt(movePoint.x - 8) + ',' + parseInt(movePoint.y - 8) + 'r' + (movePoint.alpha - 90));
242
243            }, 4000, mina.linear, function () {
244                alertEnd(id, index);
245            });
246        });
247
248    }
249
250    animateSVG(id, index);
251
252    function alertEnd(id, index) {
253
254        // Do Animation
255        myPathC[index].attr({
256            strokeDasharray: '0',
257        })
258
259        // Enable Button
260        $(id).removeClass('svg_solid_drow');
261        $('#nin').removeAttr('disabled');
262
263    }
264}
265
266jQuery('.popup-close').on('click', function () {
267    alert('fsdfsd');
268    jQuery('.togglemenu').find('.menutxt').text("Close")
269});
270
271var navOffset = 0;
272var winHeight = 0;
273
274function kilchomanRememberPageForContactReturn() {
275    try {
276        var path = window.location.pathname.replace(/\/+$/, '') || '/';
277        if (path === '/contact' || /^\/wp-(admin|login)/.test(path)) {
278            return;
279        }
280        sessionStorage.setItem('kilchomanLastPage', window.location.href);
281    } catch (e) {
282        return;
283    }
284}
285
286var siteScript = {
287    init: function () {
288        this.fullpage();
289        this.sidebar();
290        this.carouselmulti();
291        // this.video();
292        this.scrollonscaleimg();
293        this.scrollonscaledownimg();
294        // this.fadedetail();
295        this.carouseltypesm();
296        // this.videosection();
297        this.contactslide();
298        this.fadedetail();
299        this.basecustomselect();
300        // this.carttoggler();
301        this.labelanim();
302        this.pagescrollr();
303        this.slimscroller();
304        this.listactiver();
305        this.bgmove();
306        // this.quantityDown();
307        // this.quantityUp();
308        this.blankpageopener();
309        //this.datepick();
310        this.masonry();
311        // this.scrollReveal();
312        //this.carouselprevnxt();
313        //this.carouseltypesm();    
314    },
315    fullpage: function () {
316
317        jQuery('.woocommerce-page.single-product .section.block-6').appendTo('.main-detail-page .woocommerce .single-product');
318
319        jQuery(document).on('click', '.btnpathgroup .with-path', function () {
320            jQuery(this).parent().addClass('spot-path');
321            jQuery('.path-mapcover').addClass('linestart');
322            jQuery('.islay-map').addClass('linestart');
323
324            setTimeout(function () {
325
326                jQuery('.home-path').addClass('startanim');
327                $.fn.fullpage.moveSectionDown(2);
328
329            }, 1000);
330            setTimeout(function () {
331                jQuery('.btnpathgroup .with-path').parent().removeClass('spot-path');
332            }, 1500);
333
334
335        });
336        /* jQuery(document).on('click', '#fp-nav li:nth-child(2) a', function(){
337            jQuery('.btnpathgroup').addClass('spot-path');
338              jQuery('.home-path').addClass('startanim');            
339        });
340
341        jQuery(document).on('click', '#fp-nav li:nth-child(2) a', function(){
342            jQuery('.btnpathgroup').addClass('spot-path');
343              jQuery('.home-path').addClass('startanim');            
344        });*/
345
346    },
347    sidebar: function () {
348
349        var loadMenuHoverImages = function () {
350            jQuery('.hovered-image[data-bg]').each(function () {
351                var $el = jQuery(this);
352                var url = $el.attr('data-bg');
353                if (!url) {
354                    return;
355                }
356                $el.css('background-image', 'url("' + url + '")');
357                $el.removeAttr('data-bg');
358            });
359        };
360
361        jQuery('.togglemenu').click(function (e) {
362            e.preventDefault();
363            jQuery('body').toggleClass('sidebar-open');
364            if (jQuery('body').hasClass('sidebar-open')) {
365                loadMenuHoverImages();
366            }
367            // jQuery(this).find('.menutxt').html('close');
368
369            if (jQuery(this).find('.menutxt').text() == "Menu")
370
371                jQuery(this).find('.menutxt').text("Close")
372
373            else
374                jQuery(this).find('.menutxt').text("Menu");
375
376        });
377        jQuery('.sidebar ul li a').on('click', function () {
378            jQuery('body').removeClass('sidebar-open');
379        });
380
381
382    },
383
384    carouselmulti: function () {
385        if (jQuery('.wrap-carousel .owl-carousel').length > 0) {
386            console.log("multi");
387            jQuery('.wrap-carousel .owl-carousel').owlCarousel({
388                items: 1,
389                dots: false,
390                navigation: true,
391                loop: true,
392                slideSpeed: 4000,
393                autoplay: false,
394                animateOut: 'fadeOut',
395                // margin:10,
396                autoHeight: false
397            });
398        }
399
400    },
401    datepick: function () {
402        if (jQuery('.datePick input').length > 0) {
403            jQuery('.datePick input').datepicker({
404                startDate: new Date(),
405                orientation: "bottom auto right",
406                format: "dd/mm/yyyy",
407                minDate: 0,
408                autoclose: true
409            }).on('changeDate', function (e) {
410                var d = new Date(e.date);
411                jQuery(this).parents().find('.dsp').text(d.getDate() + '/' + d.getMonth() + '/' + d.getFullYear());
412            }).on('clearDate', function (e) {
413                jQuery(this).parents().find('.dsp').text('Please Select');
414            }).on('hide', function (e) {
415                jQuery("#datepic1").val('');
416                //jQuery(this).parents().find('.dsp').text('Please Select');
417            });
418        }
419    },
420    scrollonscaleimg: function () {
421
422        var top = jQuery(window).scrollTop(),
423
424            nav = jQuery('.plain-block');
425        winHeight = jQuery(window).height();
426        if (nav.length > 0) {
427            navOffset = nav.offset().top - winHeight - 100;
428        }
429        top = top - navOffset;
430
431        if (top <= 0) {
432            top = 0;
433        }
434
435        // document.title = navOffset +'--' + (winHeight/2);
436
437        var scale = (top / 10000) + 1,
438            scale1 = (top / 8000) + 1,
439            translate = (top / 1),
440            translate1 = (top / 1.3);
441
442        if (scale <= 0) {
443            scale = 0;
444            translate = 0;
445            translate1 = 0;
446        }
447
448        if (scale > 3) {
449            scale = 3;
450        }
451
452        if (scale1 <= 0) {
453            scale1 = 0;
454            translate = 0;
455            translate1 = 0;
456        }
457
458        if (scale1 > 3) {
459            scale1 = 3;
460        }
461        setTimeout(function () {
462            var bigImage = jQuery('.mainimg').height();
463            jQuery('.behind-workshop').css('height', bigImage);
464            jQuery('.scrollmain').css('height', bigImage);
465
466            var smallImage = jQuery('.only-bottom img').height();
467            jQuery('.only-bottom').css('height', smallImage);
468        }, 200);
469
470
471        let scaler = {
472            'transform': 'scale(' + scale + ',' + scale + ') translateY(' + translate + 'px)',
473            '-webkit-transform': 'scale(' + scale + ',' + scale + ') translateY(' + translate + 'px)'
474        }
475        let scaler1 = {
476            'transform': 'scale(' + scale1 + ',' + scale1 + ') translateY(' + translate1 + 'px)',
477            '-webkit-transform': 'scale(' + scale1 + ',' + scale1 + ') translateY(' + translate1 + 'px)'
478        }
479
480        /*if(jQuery(window).scrollTop() >= navOffset){
481            jQuery('.behind-workshop').css('opacity', '0');
482            jQuery('.scale').css('opacity', '1');
483        }else{
484            jQuery('.behind-workshop').css('opacity', '1');
485            jQuery('.scale').css('opacity', '0');
486        }*/
487        jQuery('.scale').css(scaler);
488        jQuery('.scrollmain').css(scaler);
489        jQuery('.only-bottom').css(scaler1);
490    }
491    ,
492
493    scrollonscaledownimg: function () {
494
495        var top = jQuery(window).scrollTop(),
496            scale = (top / 522) + 0.85,
497            translate = (top / 4) - 5;
498
499        if (scale <= 0) {
500            scale = 0;
501        }
502
503        if (scale > 1) {
504            scale = 1;
505        }
506
507        if (translate > 0) {
508            translate = 0;
509        }
510
511        let scaler = {
512            'transform': 'scale(' + scale + ',' + scale + ') translate3d(0, ' + translate + '%, 0)',
513            '-webkit-transform': 'scale(' + scale + ',' + scale + ') translate3d(0, ' + translate + '%, 0)'
514        }
515
516        jQuery('.downscale').css(scaler);
517
518    },
519
520    fadedetail: function () {
521        var minheightPlace = jQuery('.minheight_imgspot').outerHeight() / 2;
522        jQuery(".minheight_imgspot .detail_block").css("opacity", 1 - jQuery(window).scrollTop() / minheightPlace);
523    },
524    carouseltypesm: function () {
525
526
527        jQuery('.plain_detail .owl-carousel').owlCarousel({
528            items: 1,
529            nav: false,
530            navText: ['<i class="arrow_lft"></i>', '<i class="arrow_rgt"></i>'],
531            onInitialized: counter, //When the plugin has initialized.
532            //When the translation of the stage has
533            onTranslated: counter,
534            onChanged: counter,
535            touchDrag: false,
536            mouseDrag: false,
537            animateOut: 'fadeOut',
538            slideTransition: 200
539
540        });
541
542        function counter(event) {
543            var element = event.target;         // DOM element, in this example .owl-carousel
544            var items = event.item.count;     // Number of items
545            var item = this._current + 1;     // Position of the current item
546            jQuery('#owls_count').html('Section ' + item + ' of ' + items);
547            jQuery('.img_switchgroup .itemz').removeClass('active');
548            jQuery('.img_switchgroup .itemz').eq(this._current).addClass('active');
549        }
550
551
552    },
553
554    carouselprevnxt: function () {
555
556
557        jQuery('.plain_detailwrap_new .owl-carousel').owlCarousel({
558            items: 1,
559            nav: false,
560            navText: ['<i class="arrow_lft"></i>', '<i class="arrow_rgt"></i>'],
561            onInitialized: counter, //When the plugin has initialized.
562            //When the translation of the stage has
563            onTranslated: counter,
564            onChanged: counter,
565
566        });
567
568        function counter(event) {
569            var element = event.target;         // DOM element, in this example .owl-carousel
570            var items = event.item.count;     // Number of items
571            var item = this._current + 1;     // Position of the current item
572            jQuery('#owls_count').html('Section ' + item + ' of ' + items);
573            jQuery('.img_switchgroup .itemz').removeClass('active');
574            jQuery('.img_switchgroup .itemz').eq(this._current).addClass('active');
575        }
576
577        // console.log(itemLength);
578
579
580    },
581    contactslide: function () {
582        jQuery('.form_mainwrap #step_type').click(function (e) {
583            e.preventDefault();
584            jQuery('.error-display').removeClass('compul');
585            var popError = false;
586            var username = jQuery('#fullname').val();
587            var emailaddress = jQuery('#emailaddress').val();
588            var telephone = jQuery('#telephone').val();
589
590            if (username == '') {
591                popError = true;
592                jQuery('#fullname').addClass('error-field');
593            } else {
594                jQuery('#fullname').removeClass('error-field');
595            }
596            if (emailaddress == '') {
597                popError = true;
598                jQuery('#emailaddress').addClass('error-field');
599            } else {
600                var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
601                var is_email_sample = re.test(emailaddress);
602                if (!is_email_sample) {
603                    popError = true;
604                    jQuery('#emailaddress').addClass('error-field');
605                } else {
606                    jQuery('#emailaddress').removeClass('error-field');
607                }
608            }
609            if (telephone == '') {
610                popError = true;
611                jQuery('#telephone').addClass('error-field');
612            } else {
613                var re = /^(?=.*[0-9])[- +()0-9]+$/;
614                var is_tel_sample = re.test(telephone);
615                if (!is_tel_sample) {
616                    popError = true;
617                    jQuery('#telephone').addClass('error-field');
618                } else {
619                    jQuery('#telephone').removeClass('error-field');
620                }
621            }
622
623            if (popError == true) {
624                jQuery('.error-display').addClass('compul');
625                return false;
626            } else {
627                jQuery(this).hide();
628                jQuery('.error-display').removeClass('compul');
629                jQuery('.control_dotsgroup a[href="#slidesecond"]').tab('show') // Select tab by name
630                jQuery('.form_mainwrap #form_submit').show();
631
632            }
633
634        });
635
636        jQuery('.control_dotsgroup a[href="#slidefirst"]').click(function (e) {
637            jQuery('.form_mainwrap #step_type').show();
638            jQuery('.form_mainwrap #form_submit').hide();
639        });
640        jQuery('.control_dotsgroup a[href="#slidesecond"]').click(function (e) {
641
642
643            e.preventDefault();
644            jQuery('.error-display').removeClass('compul');
645            var popError = false;
646            var username = jQuery('#fullname').val();
647            var emailaddress = jQuery('#emailaddress').val();
648            var telephone = jQuery('#telephone').val();
649
650            if (username == '') {
651                popError = true;
652                jQuery('#fullname').addClass('error-field');
653            } else {
654                jQuery('#fullname').removeClass('error-field');
655            }
656            if (emailaddress == '') {
657                popError = true;
658                jQuery('#emailaddress').addClass('error-field');
659            } else {
660                var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
661                var is_email_sample = re.test(emailaddress);
662                if (!is_email_sample) {
663                    popError = true;
664                    jQuery('#emailaddress').addClass('error-field');
665                } else {
666                    jQuery('#emailaddress').removeClass('error-field');
667                }
668            }
669            if (telephone == '') {
670                popError = true;
671                jQuery('#telephone').addClass('error-field');
672            } else {
673                var re = /^(?=.*[0-9])[- +()0-9]+$/;
674                var is_tel_sample = re.test(telephone);
675                if (!is_tel_sample) {
676                    popError = true;
677                    jQuery('#telephone').addClass('error-field');
678                } else {
679                    jQuery('#telephone').removeClass('error-field');
680                }
681            }
682
683            if (popError == true) {
684
685                jQuery('.error-display').addClass('compul');
686                return false;
687            } else {
688                jQuery('.form_mainwrap #step_type').hide();
689                jQuery('.form_mainwrap #form_submit').show();
690            }
691        });
692
693        var clearContactFormSubmitTimeout = function ($form) {
694            var timeoutId = $form.data('kilchomanSubmitTimeout');
695            if (timeoutId) {
696                window.clearTimeout(timeoutId);
697                $form.removeData('kilchomanSubmitTimeout');
698            }
699        };
700
701        var setContactFormSubmitting = function ($form, isSubmitting) {
702            var $btn = $form.find('#form_submit');
703            $form.data('kilchomanSubmitting', isSubmitting);
704            $form.toggleClass('is-submitting-form', isSubmitting);
705            if (!isSubmitting) {
706                clearContactFormSubmitTimeout($form);
707            }
708            if (isSubmitting) {
709                if (!$btn.data('originalText')) {
710                    $btn.data('originalText', $btn.text());
711                }
712                $btn.addClass('is-submitting').attr({
713                    'aria-busy': 'true',
714                    'aria-disabled': 'true'
715                }).html('Sending<span class="sending-dots" aria-hidden="true">...</span>');
716            } else {
717                $btn.removeClass('is-submitting').attr({
718                    'aria-busy': 'false',
719                    'aria-disabled': 'false'
720                });
721                if ($btn.data('originalText')) {
722                    $btn.text($btn.data('originalText'));
723                }
724            }
725        };
726
727        var unlockContactFormIfSubmitting = function (event) {
728            var $form = jQuery(event.target);
729            if (!$form.is('form.wpcf7-form') || !$form.data('kilchomanSubmitting')) {
730                return;
731            }
732            setContactFormSubmitting($form, false);
733        };
734
735        document.addEventListener('wpcf7invalid', unlockContactFormIfSubmitting);
736        document.addEventListener('wpcf7spam', unlockContactFormIfSubmitting);
737        document.addEventListener('wpcf7mailfailed', unlockContactFormIfSubmitting);
738        document.addEventListener('wpcf7aborted', unlockContactFormIfSubmitting);
739
740        var setContactFormNextLink = function () {
741            var link = document.querySelector('.contact-single-step-form .contact-form-next a');
742            if (!link) {
743                return;
744            }
745            try {
746                var current = new URL(window.location.href);
747                var currentPath = current.pathname.replace(/\/+$/, '') || '/';
748                var stored = sessionStorage.getItem('kilchomanLastPage');
749                if (!stored && document.referrer) {
750                    var previous = new URL(document.referrer);
751                    var previousPath = previous.pathname.replace(/\/+$/, '') || '/';
752                    if (previous.origin === current.origin && previousPath !== currentPath) {
753                        stored = previous.href;
754                        sessionStorage.setItem('kilchomanLastPage', stored);
755                    }
756                }
757                if (!stored) {
758                    return;
759                }
760                var storedUrl = new URL(stored);
761                if (storedUrl.origin !== current.origin) {
762                    return;
763                }
764                var storedPath = storedUrl.pathname.replace(/\/+$/, '') || '/';
765                if (storedPath === currentPath) {
766                    return;
767                }
768                link.setAttribute('href', storedUrl.href);
769                link.textContent = 'Return to the last page you visited';
770            } catch (e) {
771                return;
772            }
773        };
774        setContactFormNextLink();
775
776        var nameField = document.getElementById('fullname');
777        var contactForm = document.querySelector('.contact-single-step-form form.wpcf7-form');
778        if (nameField && contactForm && !contactForm.classList.contains('sent')) {
779            window.setTimeout(function () {
780                if (document.activeElement && document.activeElement !== document.body && document.activeElement !== nameField) {
781                    return;
782                }
783                nameField.focus();
784            }, 0);
785        }
786
787        if (contactForm) {
788            contactForm.querySelectorAll('#gdpr_terms a').forEach(function (link) {
789                link.setAttribute('tabindex', '-1');
790            });
791
792            var syncHiddenContactTabStops = function () {
793                contactForm.querySelectorAll('.cf-turnstile iframe').forEach(function (iframe) {
794                    var widget = iframe.closest('.cf-turnstile');
795                    var showingChallenge = widget && widget.offsetHeight > 32;
796                    iframe.setAttribute('tabindex', showingChallenge ? '0' : '-1');
797                });
798                contactForm.querySelectorAll('.wpcf7-honeypot input, .honeypot-cf7-field input').forEach(function (input) {
799                    input.setAttribute('tabindex', '-1');
800                });
801            };
802            syncHiddenContactTabStops();
803            if (window.MutationObserver) {
804                new MutationObserver(syncHiddenContactTabStops).observe(contactForm, {
805                    childList: true,
806                    subtree: true
807                });
808            }
809        }
810
811        var markContactFormComplete = function (form) {
812            var wrap = form && form.closest ? form.closest('.contact-single-step-form') : null;
813            if (!wrap) {
814                wrap = document.querySelector('.contact-single-step-form');
815            }
816            if (!wrap) {
817                return;
818            }
819            wrap.classList.add('is-complete');
820            var column = wrap.querySelector('.form_inner.with-bgemblom');
821            if (column && typeof column.scrollIntoView === 'function') {
822                var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
823                column.scrollIntoView({
824                    behavior: reduceMotion ? 'auto' : 'smooth',
825                    block: 'start'
826                });
827            }
828        };
829
830        if (document.querySelector('.contact-single-step-form form.sent')) {
831            markContactFormComplete(document.querySelector('.contact-single-step-form form.sent'));
832        }
833
834        document.addEventListener('wpcf7mailsent', function (event) {
835            clearContactFormSubmitTimeout(jQuery(event.target));
836            markContactFormComplete(event.target);
837        });
838
839        jQuery('#form_submit').on('click', function (e) {
840            e.preventDefault();
841            var $btn = jQuery(this);
842            var $form = $btn.closest('form.wpcf7-form');
843            if (!$form.length || $form.data('kilchomanSubmitting')) {
844                return;
845            }
846
847            var popError = false;
848            var username = jQuery('#fullname').val();
849            var emailaddress = jQuery('#emailaddress').val();
850            var telephone = jQuery('#telephone').val();
851            var messagearea = jQuery('#messagearea').val();
852
853            if (username == '') {
854                popError = true;
855                jQuery('#fullname').addClass('error-field');
856            } else {
857                jQuery('#fullname').removeClass('error-field');
858            }
859            if (emailaddress == '') {
860                popError = true;
861                jQuery('#emailaddress').addClass('error-field');
862            } else {
863                var emailRegex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
864                var isEmailValid = emailRegex.test(emailaddress);
865                if (!isEmailValid) {
866                    popError = true;
867                    jQuery('#emailaddress').addClass('error-field');
868                } else {
869                    jQuery('#emailaddress').removeClass('error-field');
870                }
871            }
872            if (telephone == '') {
873                popError = true;
874                jQuery('#telephone').addClass('error-field');
875            } else {
876                var telephoneRegex = /^(?=.*[0-9])[- +()0-9]+$/;
877                var isTelephoneValid = telephoneRegex.test(telephone);
878                if (!isTelephoneValid) {
879                    popError = true;
880                    jQuery('#telephone').addClass('error-field');
881                } else {
882                    jQuery('#telephone').removeClass('error-field');
883                }
884            }
885
886            var isChecked = jQuery('#gdpr input').is(':checked');
887            if (!isChecked) {
888                popError = true;
889                jQuery('label[for="gdpr_check"]').addClass('error-field');
890                jQuery('#gdpr span span').addClass('error-field');
891            } else {
892                jQuery('label[for="gdpr_check"]').removeClass('error-field');
893                jQuery('#gdpr span span').removeClass('error-field');
894            }
895
896            if (messagearea == '') {
897                popError = true;
898                jQuery('#messagearea').addClass('error-field');
899            } else {
900                jQuery('#messagearea').removeClass('error-field');
901            }
902
903            if (popError == false) {
904                jQuery('.error-display').removeClass('compul');
905                setContactFormSubmitting($form, true);
906                $form.data('kilchomanSubmitTimeout', window.setTimeout(function () {
907                    if (!$form.data('kilchomanSubmitting')) {
908                        return;
909                    }
910                    setContactFormSubmitting($form, false);
911                    var output = $form[0].querySelector('.wpcf7-response-output');
912                    if (output) {
913                        output.textContent = 'The form is taking too long to send. Please wait a moment and try again.';
914                    }
915                }, 45000));
916                if (window.wpcf7 && typeof window.wpcf7.submit === 'function') {
917                    window.wpcf7.submit($form[0]);
918                } else {
919                    HTMLFormElement.prototype.submit.call($form[0]);
920                }
921            } else {
922                jQuery('.error-display').addClass('compul');
923            }
924        });
925    },
926    basecustomselect: function () {
927        /* Leave CF7 cask form selects native (custom gold styling in cask-ownership.php). */
928        /* Competition modal country select: native select avoids an extra invisible tab stop from Selectric. */
929        jQuery('select')
930            .not('.cask-reg-form select')
931            .not('#competitionModal select')
932            .not('select.country-type')
933            .selectric();
934
935        kilchomanCompetitionUseNativeSelect();
936
937        jQuery('#shipping_state_field select').selectric('destroy');
938        if (jQuery('body').hasClass('woocommerce-checkout')) {
939            if (jQuery('#shipping_state').is('input:text')) {
940                if (jQuery('#shipping_state_field span.select2').is(':visible')) {
941                    jQuery('#shipping_state').select2('destroy');
942                }
943            } else {
944                jQuery('#shipping_state').select2();
945            }
946        }
947
948    },
949    carttoggler: function () {
950        jQuery('header .iconcart,.cart-contents').on('click', function (e) {
951            e.preventDefault();
952            // jQuery(this).html('<strong>Close</strong>');
953            jQuery('body').toggleClass('show_cart');
954            jQuery('html').toggleClass('onshow_cart');
955            //  jQuery("body.page-template-team .scrollwrap").niceScroll({});
956
957        });
958    },
959
960    labelanim: function () {
961        var updatePlaceholderLabel = function ($input) {
962            var $label = $input.next('.placeholdertxt');
963
964            if (!$label.length) {
965                $label = $input.closest('.wpcf7-form-control-wrap').next('.placeholdertxt');
966            }
967
968            if (!$label.length) {
969                $label = $input.closest('.form-group').find('> .placeholdertxt, label.placeholdertxt').first();
970            }
971
972            if (!$label.length) {
973                return;
974            }
975
976            if ($input.val() !== '' || $input.is(':focus')) {
977                $label.addClass('stickylabel');
978            } else {
979                $label.removeClass('stickylabel');
980            }
981        };
982
983        jQuery(document).on('input focus blur', '.slide_blocks .form-control, .contactWrap .form-control, #login .form-control, .form-control', function () {
984            updatePlaceholderLabel(jQuery(this));
985        });
986
987        jQuery('.slide_blocks .form-control, .contactWrap .form-control, #login .form-control, .form-control').each(function () {
988            updatePlaceholderLabel(jQuery(this));
989        });
990    },
991    pagescrollr: function () {
992        /*jQuery('.clickscroll').on('click', function (e) {
993               e.preventDefault();
994
995               var target = this.hash;
996               var $target = jQuery(target);
997               var headHeigh = jQuery('header').outerHeight();
998               jQuery('html, body').stop().animate({
999                   'scrollTop': $target.offset().top - headHeigh
1000               }, 900, 'swing', function () {
1001                   window.location.hash = target;
1002               });
1003           });*/
1004
1005        jQuery('.clickscroll, .page-template-distillery .scrollarrow_btn, .page-template-distillery .detail_block .btn').click(function () {
1006            var headHeigh = jQuery('header').outerHeight();
1007            var target = jQuery(this.hash);
1008            target = target.length ? target : jQuery('[name=' + this.hash.substr(1) + ']');
1009            if (target.length) {
1010                jQuery('html,body').animate({
1011                    scrollTop: target.offset().top - headHeigh
1012                }, 1000);
1013                return false;
1014            }
1015        });
1016    },
1017    slimscroller: function () {
1018
1019        jQuery('.scrollwrap').slimscroll({
1020            start: 'top',
1021            railColor: '#e4e0dc',
1022            railVisible: true,
1023            color: '#c3bcb4',
1024            height: '200px',
1025            railOpacity: '1',
1026            opacity: '1',
1027            //wheelStep: 10,
1028            allowPageScroll: false,
1029            //wheelStep: 10, 
1030        });
1031
1032        jQuery('.order-detail-container .scrollwrap, .sidebar-cart-count .scrollwrap').slimscroll({
1033            height: '350px',
1034        });
1035    },
1036    listactiver: function () {
1037        var url = window.location;
1038        jQuery('.lined_list a[href="' + url + '"]').parent().addClass('active');
1039        jQuery('.lined_list a').filter(function () {
1040            return this.href == url;
1041        }).parent().addClass('active');
1042
1043        jQuery('.lined_list a').each(function () {
1044            if (jQuery(this).attr('href') == '#') {
1045                jQuery(this).parents('li').removeClass('active');
1046            }
1047        });
1048    },
1049
1050    bgmove: function () {
1051        var movementStrength = 20;
1052        var height = movementStrength / jQuery(window).height();
1053        var width = movementStrength / jQuery(window).width();
1054        jQuery(".mover_bg").mousemove(function (e) {
1055            var pageX = e.pageX - (jQuery(window).width() / 2);
1056            var pageY = e.pageY - (jQuery(window).height() / 2);
1057            var newvalueX = width * pageX * -1 - -10;
1058            var newvalueY = height * pageY * -1 - 0;
1059            jQuery('.mover_bg').css("background-position", newvalueX + "px     " + newvalueY + "px");
1060        });
1061    },
1062    masonry: function () {
1063
1064
1065        // init Isotope after all images have loaded
1066        $('.grid-products').isotope({
1067            itemSelector: '.grid-item',
1068            layoutMode: 'fitRows'
1069        });
1070
1071
1072    },
1073    blankpageopener: function () {
1074        jQuery('#menu-social_links li, #menu-social_links-2 li').each(function () {
1075
1076            jQuery(this).find('a').attr('target', '_blank');
1077        })
1078    }
1079}
1080
1081jQuery(document).on('ready', function () {
1082    kilchomanRememberPageForContactReturn();
1083    siteScript.init();
1084    // console.log(itemLength);
1085    var owl = jQuery('.plain_detail .owl-carousel');
1086    owl.owlCarousel();
1087
1088    jQuery(document).on('click touch', '.customNextBtn', function () {
1089
1090        owl.trigger('next.owl.carousel', [300]);
1091
1092    });
1093    // Go to the previous item
1094    jQuery(document).on('click touch', '.customPrevBtn', function () {
1095
1096
1097        owl.trigger('prev.owl.carousel', [300]);
1098    });
1099
1100    jQuery('.woocommerce-checkout').on('click', '.actions a[href="#next"]', function (e) {
1101        if (jQuery('#billing_first_name').length > 0 && jQuery('#shipping_first_name').length > 0) {
1102            jQuery('#shipping_first_name').val(jQuery('#billing_first_name').val());
1103            jQuery('#shipping_last_name').val(jQuery('#billing_last_name').val());
1104        }
1105    });
1106
1107
1108
1109
1110    jQuery('body').addClass('notevidebutton');
1111
1112
1113    jQuery('#customer_country').selectric();
1114
1115
1116    jQuery('.custom_admin_order').on('click', function () {
1117
1118
1119        jQuery('.mainloader').html('<div class="preloader" style="display: none;"></div>');
1120
1121        jQuery('.mainloader .preloader').show();
1122        var prodctID = jQuery(this).attr('data-productID');
1123
1124        var data = {
1125            action: 'getAdminCustomOrder',
1126            productId: prodctID,
1127        };
1128        jQuery.ajax({
1129            type: 'POST',
1130            url: kilchoman_ajax_object.ajax_url,
1131            data: data, // form data
1132            success: function (data) {
1133                //var obj = jQuery.parseJSON( data );
1134
1135                jQuery('#product_popup').html(data);
1136                jQuery('#product_popup select').selectric({
1137                    onInit: function () {
1138                        var selectricContainer = jQuery(".selectric-scroll");
1139                        selectricContainer.slimScroll({
1140                            height: '200px',
1141                            start: 'top',
1142                            railColor: '#e4e0dc',
1143                            railVisible: true,
1144                            color: '#c3bcb4',
1145                            railOpacity: '1',
1146                            opacity: '1',
1147                            wheelStep: 10,
1148                            alwaysVisible: true
1149                        });
1150
1151                    },
1152                });
1153
1154                jQuery('#product_popup').modal('show');
1155                jQuery('.mainloader .preloader').remove();
1156
1157            }
1158        });
1159    });
1160    /* Custom Order Booking*/
1161
1162
1163    jQuery(document).on('click', "#book_now_ticket_new", function (e) {
1164
1165        e.preventDefault();
1166        //jQuery('body').addClass('modal-open');
1167        var popError = false;
1168        jQuery('#customer_data_group span.Error').remove();
1169
1170        var isDisable = jQuery(this).attr('disabled');
1171
1172        if (isDisable == 'disabled') {
1173            popError = true;
1174            jQuery('#customer_data_group .apply-btn').after('<span class="Error">Please select a time slot:</span>');
1175        }
1176        if (popError == true) {
1177            return false;
1178        }
1179
1180
1181        jQuery('.selectric-number-people span.Error').remove();
1182        //jQuery( 'body' ).removeClass( 'modal-open' );
1183
1184        var tourName = jQuery('#tour_name').val();
1185        var productType = jQuery('option:selected', "select[name='kilchoman-variation']").val();
1186        var productPrice = jQuery('option:selected', "select[name='available-places']").attr('data-price');
1187        var productId = jQuery('#ajax_change_id').val();
1188        var productVariationId = jQuery('option:selected', "select[name='available-places']").val();
1189        var bookingTime = jQuery('option:selected', "select[name='available-places']").text();
1190        var productQuantity = jQuery('option:selected', "select[name='kilchoman-people']").val();
1191        var productDate = jQuery("#datepicker_booking").val();
1192
1193        var single_event_adults = jQuery('option:selected', "select[name='single_event_adults']").val();
1194        var single_event_childrens = jQuery('option:selected', "select[name='single_event_childrens']").val();
1195        var is_single_event = jQuery('#is_single_event').val();
1196        /* Customer Info Start */
1197
1198        var firstname = jQuery("#firstname").val();
1199        var lastname = jQuery("#lastname").val();
1200        var emailid = jQuery("#emailid").val();
1201        var phonenumber = jQuery("#phonenumber").val();
1202        var customer_country = jQuery('option:selected', "select[name='customer_country']").val();
1203        var address1 = jQuery("#address1").val();
1204        var address2 = jQuery("#address2").val();
1205        var city = jQuery("#city").val();
1206        var state = jQuery("#state").val();
1207        var postcode = jQuery("#postcode").val();
1208
1209
1210        /* Customer Info End */
1211
1212        if (productDate == '') {
1213
1214            popError = true;
1215
1216            jQuery('.date-group span').after('<span class="Error">Please select date..</span>');
1217
1218        }
1219        if (jQuery('select[name="kilchoman-people"]').length > 0) {
1220            if (productQuantity == '' || productQuantity == 'Please select number of persons..') {
1221
1222                popError = true;
1223
1224                jQuery('.selectric-number-people .selectric').after('<span class="Error">Please select people..</span>');
1225
1226            }
1227        }
1228        if (productPrice == '') {
1229
1230            popError = true;
1231
1232            jQuery('.selectric-time-slote .selectric').after('<span class="Error">Please select a time slot</span>');
1233
1234        }
1235        if (productVariationId == '') {
1236
1237            popError = true;
1238
1239            jQuery('.selectric-time-slote .selectric').after('<span class="Error">Please select time..</span>');
1240
1241        }
1242
1243        // if(firstname == ''){
1244
1245        //   popError = true;
1246
1247        //   jQuery(".firstname").after('<span class="Error">Please Enter First Name..</span>');
1248
1249        // }
1250
1251        // if(lastname == ''){
1252
1253        //   popError = true;
1254
1255        //   jQuery(".lastname").after('<span class="Error">Please Enter Last Name..</span>');
1256
1257        // }
1258        // if(emailid == ''){
1259
1260        //   popError = true;
1261
1262        //   jQuery(".emailid").after('<span class="Error">Please Enter Email Address..</span>');
1263
1264        // }else if(emailid != ''){
1265        //   var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
1266        //   var is_email_sample = re.test(emailid);
1267        //   if(!is_email_sample){
1268
1269        //     popError = true;
1270
1271        //     jQuery(".emailid").after('<span class="Error">Please Enter Valid Email Address..</span>');
1272
1273        //   }
1274        // }
1275        // if(phonenumber == ''){
1276
1277        //   popError = true;
1278
1279        //   jQuery(".phonenumber").after('<span class="Error">Please Enter Phone Number..</span>');
1280
1281        // }else if(phonenumber != ''){
1282        //   var re = /^(?=.*[0-9])[- +()0-9]+$/;
1283        //   var is_tel_sample = re.test(phonenumber);
1284        //   if(!is_tel_sample){
1285        //     popError = true;
1286
1287        //     jQuery(".phonenumber").after('<span class="Error">Please Enter Valid Phone Number..</span>');
1288        //   }
1289        // }
1290
1291        // if(state == ''){
1292
1293        //   popError = true;
1294
1295        //   jQuery(".state").after('<span class="Error">Please Enter State..</span>');
1296
1297        // }
1298
1299        // if(address1 == ''){
1300
1301        //   popError = true;
1302
1303        //   jQuery(".address1").after('<span class="Error">Please Enter Address 1..</span>');
1304
1305        // }
1306
1307        // if(address2 == ''){
1308
1309        //   popError = true;
1310
1311        //   jQuery(".address2").after('<span class="Error">Please Enter Address 2..</span>');
1312
1313        // }
1314
1315        // if(city == ''){
1316
1317        //   popError = true;
1318
1319        //   jQuery(".city").after('<span class="Error">Please Enter City..</span>');
1320
1321        // }
1322
1323        // if(postcode == ''){
1324
1325        //   popError = true;
1326
1327        //   jQuery(".postcode").after('<span class="Error">
1327Please Enter Postcode..</span>');
1328
1329        // }
1330
1331        if (popError == true) {
1332            return false;
1333        }
1334        jQuery(".preloader").show();
1335        var data = {
1336            action: 'cutom_admin_order',
1337            productType: productType,
1338            productId: productId,
1339            productPrice: productPrice,
1340            bookingTime: bookingTime,
1341            productVariationId: productVariationId,
1342            productQuantity: productQuantity,
1343            productDate: productDate,
1344            firstname: firstname,
1345            lastname: lastname,
1346            emailid: emailid,
1347            phonenumber: phonenumber,
1348            address1: address1,
1349            address2: address2,
1350            city: city,
1351            state: state,
1352            postcode: postcode,
1353            customer_country: customer_country,
1354            tourName: tourName,
1355
1356            single_event_adults: single_event_adults,
1357            single_event_childrens: single_event_childrens,
1358            is_single_event: is_single_event
1359
1360        };
1361        jQuery.ajax({
1362            type: 'POST',
1363            url: kilchoman_ajax_object.ajax_url,
1364            data: data, // form data
1365            success: function (data) {
1366                var obj = jQuery.parseJSON(data);
1367
1368                if (obj.added == 'success') {
1369                    jQuery('.message').html('');
1370                    jQuery('.message').html(obj.message);
1371                    jQuery('.number-people').prop('selectedIndex', 0).selectric({
1372                        onInit: function () {
1373                            var selectricContainer = jQuery(".selectric-scroll");
1374                            selectricContainer.slimScroll({
1375                                height: '200px',
1376                                start: 'top',
1377                                railColor: '#e4e0dc',
1378                                railVisible: true,
1379                                color: '#c3bcb4',
1380                                railOpacity: '1',
1381                                opacity: '1',
1382                                wheelStep: 10,
1383                                alwaysVisible: true
1384                            });
1385
1386                        },
1387                    });
1388                    jQuery('#datepicker_booking').val('');
1389                    jQuery("#available_place").html('');
1390                    jQuery('#customer_data_group').hide();
1391                    jQuery('#firstname').val('');
1392                    jQuery('#lastname').val('');
1393                    jQuery('#emailid').val('');
1394                    jQuery('#address1').val('');
1395                    jQuery('#address2').val('');
1396                    jQuery('#city').val('');
1397                    jQuery('#state').val('');
1398                    jQuery('#postcode').val('');
1399                    jQuery('#phonenumber').val('');
1400                    jQuery('.button-group').hide();
1401                    jQuery('.ticket-price').hide();
1402                    jQuery('#book_now_ticket_new').attr('disabled', 'disabled');
1403                    jQuery('.form-control').next('.placeholdertxt').removeClass('stickylabel');
1404                    jQuery('select[name="customer_country"]').prop('selectedIndex', 0).selectric({
1405                        onInit: function () {
1406                            var selectricContainer = jQuery(".selectric-scroll");
1407                            selectricContainer.slimScroll({
1408                                height: '200px',
1409                                start: 'top',
1410                                railColor: '#e4e0dc',
1411                                railVisible: true,
1412                                color: '#c3bcb4',
1413                                railOpacity: '1',
1414                                opacity: '1',
1415                                wheelStep: 10,
1416                                alwaysVisible: true
1417                            });
1418
1419                        },
1420                    });
1421                    //jQuery('body').addClass('modal-open');
1422                    jQuery('.preloader').hide();
1423
1424                }
1425            }
1426        });
1427
1428
1429    });
1430
1431    // jQuery('#shipping_country').on('change',function(){
1432    //     setTimeout(function(){
1433    //       jQuery('.state_select').selectric('destroy');
1434    //       jQuery('.state_select').selectric();    
1435    //     });
1436
1437
1438    // });
1439
1440
1441    // if(window.location.href.indexOf('#data_login_modal') != -1) {
1442
1443    //   setTimeout(function(){ jQuery('#data_login_modal').modal('show'); },1000);
1444    // }
1445
1446    // for reset password
1447    // jQuery("form#resetPasswordForm").submit(function(){
1448    //   var submit = jQuery("div#resetPassword #submit"),
1449    //     preloader = jQuery("div#resetPassword #preloader"),
1450    //     message = jQuery("div#resetPassword #message"),
1451    //     contents = {
1452    //       action:   'reset_pass',
1453    //       nonce:    this.rs_user_reset_password_nonce.value,
1454    //       pass1:    this.pass1.value,
1455    //       pass2:    this.pass2.value,
1456    //       user_key: this.user_key.value,
1457    //       user_login: this.user_login.value
1458    //     };
1459
1460    //   // disable button onsubmit to avoid double submision
1461    //   submit.attr("disabled", "disabled").addClass('disabled');
1462
1463    //   // Display our pre-loading
1464    //   preloader.css({'visibility':'visible'});
1465
1466    //   $.post( kilchoman_ajax_object.ajax_url, contents, function( data ){
1467    //     submit.removeAttr("disabled").removeClass('disabled');
1468
1469    //     // hide pre-loader
1470    //     preloader.css({'visibility':'hidden'});
1471
1472    //     // display return data
1473    //     message.html( data );
1474    //   });
1475
1476    //   return false;
1477    // });
1478
1479
1480    // jQuery('.open-popup-link').on('click',function(){
1481    //   jQuery('.selectric-items ul li').each(function(){
1482    //     if(jQuery(this).hasClass('selected')){
1483    //       jQuery('.popup-price').html(jQuery(this).find('strong').text());
1484    //     }
1485    //   });
1486    // });
1487
1488
1489    //jQuery('.popup-price').html(jQuery('option:selected','select[name="attribute_product"]').attr('data-price'));
1490
1491
1492    jQuery(document).on('change', '.number-people', function () {
1493        var countPeople = jQuery('option:selected', this).val();
1494        var ticketPrice = jQuery('option:selected', '.tour-type').attr('data-price');
1495        jQuery('.ticket-price span').text((parseFloat(ticketPrice) * countPeople).toFixed(2));
1496
1497    });
1498
1499
1500    /*sigle add to cart ajax customize end*/
1501
1502
1503  //  jQuery('.club-login-menu a').attr('href', 'javascript:void(0)');
1504/*
1505    jQuery('.club-login-menu').on('click', function () {
1506
1507        jQuery('#data_login_modal').modal('show');
1508        ga('send', {
1509            hitType: 'event',
1510            eventCategory: 'Settings',
1511            eventAction: 'Enable',
1512            eventLabel: 'Dark mode'
1513        });
1514
1515        gtag('event', 'open_login', {
1516            event_category: 'Login Screen',
1517            event_label: 'Open Poup to Login'
1518        });
1519    });
1520*/
1521    jQuery('#gdpr input').attr('id', 'gdpr_check');
1522    jQuery('.toggle_cart').on('click', function () {
1523
1524        jQuery('body').toggleClass('show_cart');
1525    });
1526
1527    jQuery('#backtotop').click(function () {
1528        jQuery("html, body").animate({
1529            scrollTop: 0
1530        }, 500);
1531        return false;
1532    });
1533
1534    jQuery("select#product").on('change', function () {
1535        var popID = jQuery('.mfp-with-anim.wpb_wl_clearfix.product').attr('id');
1536        var priceVal = jQuery('option:selected', this).attr('data-price');
1537
1538        jQuery('#' + popID + ' .popup-price span').remove();
1539        jQuery('#' + popID + ' .popup-price').html(priceVal);
1540    });
1541
1542    jQuery('#shipping_myfield2_checkbox').on('click', function () {
1543        if (jQuery(this).prop("checked") == true) {
1544
1545            var country = jQuery('#billing_country option:selected').val();
1546            var address1 = jQuery('#billing_address_1').val();
1547            var address2 = jQuery('#billing_address_2').val();
1548            var ciy = jQuery('#billing_city').val();
1549            var postcode = jQuery('#billing_postcode').val();
1550
1551            jQuery('#shipping_country').val(country);
1552            jQuery('#shipping_country').selectric();
1553            jQuery('#shipping_address_1').val(address1);
1554            jQuery('#shipping_address_2').val(address2);
1555            jQuery('#shipping_city').val(ciy);
1556            jQuery('#shipping_postcode').val(postcode);
1557            //jQuery('body').trigger('update_checkout');
1558
1559        } else if (jQuery(this).prop("checked") == false) {
1560
1561            jQuery('#shipping_country').val('');
1562            jQuery('#shipping_country').selectric();
1563            jQuery('#shipping_address_1').val('');
1564            jQuery('#shipping_address_2').val('');
1565            jQuery('#shipping_city').val('');
1566            jQuery('#shipping_postcode').val('');
1567            //jQuery('body').trigger('update_checkout');
1568        }
1569    });
1570
1571
1572    // Perform AJAX forget password on form submit
1573    jQuery('form#forgot_password').on('submit', function (e) {
1574        if (!jQuery(this).valid()) return false;
1575
1576        ctrl = jQuery(this);
1577        var $status = jQuery('p.status', ctrl);
1578        var $button = jQuery('.submit_button', ctrl);
1579        var originalButtonText = $button.data('original-text') || $button.val();
1580        $button.data('original-text', originalButtonText);
1581
1582        // Loading state: show progress in the banner *and* on the button
1583        // itself, since that's where the user's eye already is.
1584        $status
1585            .removeClass('status--success status--error')
1586            .addClass('status--loading')
1587            .text(kilchoman_ajax_object.loadingmessage);
1588        $button.prop('disabled', true).val(kilchoman_ajax_object.loadingmessage);
1589
1590        jQuery.ajax({
1591            type: 'POST',
1592            dataType: 'json',
1593            url: kilchoman_ajax_object.ajax_url,
1594            data: {
1595                'action': 'ajaxforgotpassword1',
1596                'user_login': jQuery('#user_login').val(),
1597                'security': jQuery('#forgotsecurity').val(),
1598            },
1599            success: function (data) {
1600                var isSuccess = !!data.success;
1601                $status
1602                    .removeClass('status--loading status--success status--error')
1603                    .addClass(isSuccess ? 'status--success' : 'status--error')
1604                    .text(data.message);
1605
1606                if (isSuccess) {
1607                    $button.val('Email Sent').prop('disabled', true);
1608                } else {
1609                    $button.val(originalButtonText).prop('disabled', false);
1610                }
1611            },
1612            error: function () {
1613                $status
1614                    .removeClass('status--loading status--success status--error')
1615                    .addClass('status--error')
1616                    .text('Something went wrong sending that request. Please try again.');
1617                $button.val(originalButtonText).prop('disabled', false);
1618            }
1619        });
1620        e.preventDefault();
1621        return false;
1622    });
1623
1624// Client side form validation
1625    if (jQuery('#forgot_password').length) {
1626        jQuery('#forgot_password').validate();
1627    }
1628
1629
1630    if (jQuery('.onepage-account').length > 0) {
1631        jQuery(document).on("scroll", onScrollActive);
1632    }
1633
1634
1635    jQuery('#lostpass').on('click', function () {
1636        jQuery('#data_login_modal').modal('hide');
1637        jQuery('#data_reset_modal').modal('show');
1638    });
1639
1640    // Reset the password-reset modal to a clean state each time it's
1641    // reopened, so a previous success/error message or disabled button
1642    // doesn't linger from an earlier attempt.
1643    jQuery('#data_reset_modal').on('shown.bs.modal', function () {
1644        var $form = jQuery('#forgot_password', this);
1645        var $button = jQuery('.submit_button', $form);
1646        jQuery('p.status', $form).removeClass('status--loading status--success status--error').text('');
1647        $button.prop('disabled', false).val($button.data('original-text') || $button.val());
1648    });
1649
1650
1651    jQuery('#shipping_loader_btn').on('click', function () {
1652
1653        $sPostCode = jQuery('#shipping_loader_input').val();
1654        if ($sPostCode.length > 3) {
1655            ShippingSearchAddress($sPostCode);
1656        }
1657    });
1658
1659    jQuery('form#login').on('submit', function (e) {
1660        e.preventDefault();
1661        jQuery("#login #username").removeClass('error');
1662        jQuery("#login #password").removeClass('error');
1663
1664        jQuery("#login span.form-error-message").remove();
1665        // jQuery('form#login span.messages').text(kilchoman_ajax_object.loadingmessage);
1666        var userName = jQuery('form#login #username').val();
1667        var passWord = jQuery('form#login #password').val();
1668        var remember = jQuery('form#login #remember:checked').length;
1669        if (remember == 0) {
1670            rememberme = 'false';
1671        } else {
1672            rememberme = 'true';
1673        }
1674        var popError = false;
1675
1676        if (userName == '' && passWord != '') {
1677            popError = true;
1678
1679            jQuery("#login #username").addClass('error');
1680        } else if (userName != '' && passWord == '') {
1681            popError = true;
1682
1683            jQuery("#login #password").addClass('error');
1684        } else if (userName == '' && passWord == '') {
1685            popError = true;
1686
1687            jQuery("#login #username").addClass('error');
1688            jQuery("#login #password").addClass('error');
1689        } else {
1690            popError = false;
1691        }
1692
1693        if (popError == true) {
1694            return false;
1695        } else {
1696            jQuery('form#login span.messages').css('display', 'block');
1697        }
1698        jQuery.ajax({
1699            type: 'POST',
1700            dataType: 'json',
1701            url: kilchoman_ajax_object.ajax_url,
1702            data: {
1703                'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin
1704                'username': userName,
1705                'password': passWord,
1706                'remember': rememberme,
1707                'security': jQuery('form#login #security').val(),
1708                'redirect_to': jQuery('form#login input[name="redirect_to"]').val() || ''
1709            },
1710            success: function (data) {
1711                jQuery('form#login span.messages').text(data.message);
1712                if (data.needs_wp_login && data.redirect) {
1713                    window.location.href = data.redirect;
1714                    return;
1715                }
1716                if (data.loggedin == true) {
1717                    document.location.href = data.redirect || kilchoman_ajax_object.redirecturl;
1718                }
1719            },
1720            error: function (xhr, status, err) {
1721                var msg = 'Login could not be completed. Please try again or use the main login page.';
1722                if (status === 'parsererror') {
1723                    msg = 'The server returned an unexpected response (often two-factor or security software). Try logging in from the main WordPress login page, or refresh this page and try again.';
1724                } else if (xhr.status === 403 || xhr.status === 0) {
1725                    msg = 'Request was blocked or failed to reach the server. Check your connection or try again later.';
1726                }
1727                jQuery('form#login span.messages').text(msg);
1728            }
1729        });
1730        e.preventDefault();
1731    });
1732
1733
1734    jQuery('span#book_ticket_button').on('click', function () {
1735
1736        jQuery('#forms')[0].reset();
1737        jQuery('#variation_people').hide();
1738        jQuery('#variation_people').prop('selectedIndex', 0);
1739        jQuery('#available_place').hide();
1740        jQuery('.date-group').hide();
1741        jQuery('.button-group').hide();
1742        jQuery('#customer_data_group').hide();
1743
1744        jQuery("#datepicker_booking").datepicker("refresh");
1745        // jQuery('.apply-btn').hide();
1746    });
1747
1748    // jQuery('h3#ship-to-different-address label input[name="ship_to_different_address"]').prop('checked',true);
1749    // jQuery('.shipping-tab-contents .woocommerce-shipping-fields .shipping_address').show();
1750    //jQuery('#ship-to-different-address').hide();
1751    //jQuery('.mc4wp-checkbox.mc4wp-checkbox-woocommerce label span').after('<b>Keep up to date with all that goes on at Kilchoman and receive special offers on whisky and merchandise.</b>');
1752    jQuery('#billing_myfield11_field label span:eq(0)').after('<b>You must be aged 18 or over to checkout and become a member of the Kilchoman Club.</b>');
1753    jQuery('#shipping_myfield1_field label span:eq(0)').after('<b>You can edit the address saved to your account in your account settings.</b>');
1754    jQuery('#shipping_myfield2_field label span:eq(0)').after('<b>We are not able to ship alcohol to all the countries listed. Please check the above shipping costs for the full list of countries we are able to ship whisky to.</b>');
1755
1756
1757    jQuery('input[name="comOption"]').on('change', function () {
1758        jQuery("#SelectedOption").val(jQuery('input[name="comOption"]:checked').val());
1759    });
1760
1761    jQuery('#competitionModal').on('shown.bs.modal', function () {
1762        kilchomanCompetitionUseNativeSelect();
1763    });
1764
1765    document.addEventListener('wpcf7mailsent', function (event) {
1766        var form = event.target;
1767        if (!form || !form.querySelectorAll) {
1768            return;
1769        }
1770        form.querySelectorAll('.cf-turnstile, .wpcf7-turnstile').forEach(function (widget) {
1771            widget.style.display = 'none';
1772        });
1773    });
1774
1775    document.addEventListener('wpcf7domready', function (event) {
1776        if (event.target && event.target.closest && event.target.closest('#competitionModal')) {
1777            setTimeout(kilchomanCompetitionUseNativeSelect, 0);
1778        }
1779    });
1780
1781    var divs = jQuery(".grid-list-item");
1782    var divCount = divs.length;
1783    var evenHalf = Math.ceil(divs.length / 2);
1784    for (var i = 0; i < divCount; i += evenHalf) {
1785        if (i == evenHalf) {
1786            divs.slice(i, i + evenHalf).wrapAll("<div class='paroller-block-odd'></div>");
1787        } else {
1788            divs.slice(i, i + evenHalf).wrapAll("<div class='paroller-block-even'></div>");
1789        }
1790    }
1791
1792
1793    window.scrollTo(0, 0);
1794    jQuery(function () {
1795        var $elems = jQuery('.element-item,.blog-list');
1796        var winheight = jQuery(window).height();
1797        var fullheight = jQuery(document).height();
1798
1799        jQuery(window).scroll(function () {
1800            animate_elems($elems, winheight, fullheight);
1801        });
1802
1803
1804        // end animate_elems()
1805    });
1806
1807
1808    if (jQuery('#play_video').length > 0) {
1809        document.getElementById("play_video").controls = false;
1810    }
1811
1812
1813    jQuery('.product-remove a.remove').on('click', function () {
1814
1815        var url = window.location.href;
1816
1817        jQuery('a.cart-contents').load(url + ' div.header-cart-count');
1818        jQuery('#checkout_cart .preloader').show();
1819        jQuery('#checkout_cart').load(url + ' #refresh_checkout');
1820        setTimeout(function () {
1821            jQuery('#checkout_cart .preloader').hide();
1822            jQuery('.scrollwrap').slimscroll({
1823                start: 'top',
1824                railColor: '#e4e0dc',
1825                railVisible: true,
1826                color: '#c3bcb4',
1827                height: '350px',
1828                railOpacity: '1',
1829                opacity: '1',
1830                //wheelStep: 10,
1831                allowPageScroll: false,
1832                //wheelStep: 10, 
1833            });
1834        }, 2000);
1835    });
1836
1837
1838    jQuery('.product_single_modal').on('click', function () {
1839        jQuery('.mainloader').html('<div class="preloader" style="display: none;"></div>');
1840        jQuery('.mainloader .preloader').show();
1841        var prodctID = jQuery(this).attr('data-productID');
1842
1843        var data = {
1844            action: 'get_single_product_data',
1845            productId: prodctID,
1846        };
1847        jQuery.ajax({
1848            type: 'POST',
1849            url: kilchoman_ajax_object.ajax_url,
1850            data: data, // form data
1851            success: function (data) {
1852                jQuery('#product_popup').html(data);
1853                jQuery('#product_popup select').selectric({
1854                    onInit: function () {
1855                        var selectricContainer = jQuery(".selectric-scroll");
1856                        selectricContainer.slimScroll({
1857                            height: '200px',
1858                            start: 'top',
1859                            railColor: '#e4e0dc',
1860                            railVisible: true,
1861                            color: '#c3bcb4',
1862                            railOpacity: '1',
1863                            opacity: '1',
1864                            wheelStep: 10,
1865                            alwaysVisible: true
1866                        });
1867                    },
1868                });
1869                jQuery('#product_popup').modal('show');
1870                jQuery('.mainloader .preloader').remove();
1871            }
1872        });
1873        setTimeout(function () {
1874            jQuery('.modal-backdrop.in').fadeOut();
1875        }, 100);
1876        jQuery('.tour-type').prop('selectedIndex', prodctID).selectric();
1877        jQuery('.number-people').prop('selectedIndex', 0).selectric({
1878            onInit: function () {
1879                var selectricContainer = jQuery(".selectric-scroll");
1880                selectricContainer.slimScroll({
1881                    height: '200px',
1882                    start: 'top',
1883                    railColor: '#e4e0dc',
1884                    railVisible: true,
1885                    color: '#c3bcb4',
1886                    railOpacity: '1',
1887                    opacity: '1',
1888                    wheelStep: 10,
1889                    alwaysVisible: true
1890                });
1891            },
1892        });
1893        jQuery('#variation_people').show();
1894    });
1895
1896
1897    jQuery(".tab-whisky a").on('click', function (e) {
1898
1899        jQuery(".preloader").show();
1900
1901        jQuery(this).parent().siblings().removeClass('active');
1902        jQuery(this).parent().addClass('active');
1903
1904        var pageurl = jQuery(this).attr('data-href');
1905        var newYear = jQuery(this).html();
1906
1907        var data = {
1908            action: 'get_whisky_tab_posts',
1909            postYear: newYear
1910        };
1911        jQuery.ajax({
1912            type: 'POST',
1913            url: kilchoman_ajax_object.ajax_url,
1914            data: data, // form data
1915            success: function (data) {
1916                jQuery('.whiskyLoad').html(data);
1917                // window.history.pushState({path: pageurl}, '', pageurl);
1918                jQuery(".preloader").hide();
1919
1920            }
1921        });
1922
1923
1924    });
1925
1926
1927
1928    jQuery("#menu-primary_menu li").each(function () {
1929
1930        if (jQuery(this).hasClass('current-menu-item')) {
1931            jQuery(this).find('a').children('.menu-image-hover-wrapper').addClass('active');
1932        }
1933
1934    });
1935
1936    jQuery('#menu-primary_menu li a').mouseenter(function () {
1937        jQuery(this).parent().siblings().find('.menu-image-hover-wrapper').removeClass('active');
1938        jQuery(this).parent().siblings().removeClass('current-menu-item');
1939        jQuery(this).find('.menu-image-hover-wrapper').addClass('active');
1940        jQuery(this).parent().addClass('current-menu-item');
1941    });
1942
1943    jQuery(document).on('load', function () {
1944        jQuery(".video-foreground video source").each(function () {
1945            var sourceFile = jQuery(this).attr("data-src");
1946            jQuery(this).attr("src", sourceFile);
1947            var video = this.parentElement;
1948            video.load();
1949            video.play();
1950        });
1951    });
1952
1953    /**
1954     * product image lightbox
1955     */
1956
1957    jQuery("[data-fancybox]").fancybox();
1958
1959    if (jQuery('#svg_machir').length > 0) {
1960        setSVGInit1("#svg_machir", 0);
1961    }
1962    if (jQuery('#svgC').length > 0) {
1963        setSVGInit("#svgC", 0);
1964    }
1965    if (jQuery('#svg_sanaig').length > 0) {
1966        setSVGInit2("#svg_sanaig", 0);
1967    }
1968    if (jQuery('#svg_loch').length > 0) {
1969        setSVGInit3("#svg_loch", 0);
1970    }
1971    if (jQuery('#svg_islay').length > 0) {
1972        setSVGInit4("#svg_islay", 0);
1973    }
1974
1975
1976    jQuery("#nin").click(function (event) {
1977        jQuery("#svgC").toggleClass('svg_solid_drow');
1978        svgAnimation("#svgC", 0);
1979    });
1980    jQuery("#nin").click(function (event) {
1981        jQuery("#mobilesvg").toggleClass('svg_solid_drow');
1982        svgAnimation("#mobilesvg", 0);
1983    });
1984
1985    jQuery("button.machir-bay").click(function (event) {
1986        jQuery("#svg_machir").toggleClass('svg_solid_drow');
1987        svgAnimation("#svg_machir", 0);
1988    });
1989    jQuery("button.sanaig").click(function (event) {
1990        jQuery("#svg_sanaig").toggleClass('svg_solid_drow');
1991        svgAnimation("#svg_sanaig", 0);
1992    });
1993    jQuery("button.loch-gorm").click(function (event) {
1994        jQuery("#svg_loch").toggleClass('svg_solid_drow');
1995        svgAnimation("#svg_loch", 0);
1996    });
1997    jQuery("button.pro-100-islay").click(function (event) {
1998        jQuery("#svg_islay").toggleClass('svg_solid_drow');
1999        svgAnimation("#svg_islay", 0);
2000    });
2001
2002
2003});
2004jQuery(window).resize(function () {
2005    setTimeout(function () {
2006        var bigImage = jQuery('.mainimg').height();
2007        jQuery('.behind-workshop').css('height', bigImage);
2008        jQuery('.scrollmain').css('height', bigImage);
2009
2010        var smallImage = jQuery('.only-bottom img').height();
2011        jQuery('.only-bottom').css('height', smallImage);
2012    }, 200);
2013});
2014
2015jQuery(window).scroll(function () {
2016
2017    if (jQuery('.element-item').length > 0) {
2018        var $elems = jQuery('.element-item');
2019        var winheight = jQuery(window).height();
2020        var fullheight = jQuery(document).height();
2021
2022        animate_elems($elems, winheight, fullheight);
2023    }
2024    siteScript.scrollonscaleimg();
2025    if (jQuery(this).scrollTop() >= 200) {
2026
2027        jQuery('.showproduct_spot').addClass('zoomingstop');
2028    } else {
2029        siteScript.scrollonscaledownimg();
2030        jQuery('.showproduct_spot').removeClass('zoomingstop');
2031    }
2032
2033    siteScript.fadedetail();
2034
2035    var top = jQuery(window).scrollTop()
2036    jQuery('.behind-workshop').css({'transform': 'translateY(' + -top + 'px)'});
2037
2038}).scroll();
2039
2040
2041function playVideo(videoID) {
2042
2043    var element = document.getElementById(videoID);
2044    element.pause();
2045    element.currentTime = '0';
2046    element.play();
2047    document.getElementById("play_video").controls = true;
2048    jQuery('.maru_potanu').hide();
2049}
2050
2051function playVideoIfram(videoID) {
2052
2053    var symbol = jQuery('#' + videoID)[0].src.indexOf("?") > -1 ? "&" : "?";
2054    //modify source to autoplay and start video
2055    jQuery('#' + videoID)[0].src += symbol + "autoplay=1&controls=1&rel=0";
2056
2057    jQuery('#' + videoID).prev().hide();
2058    jQuery('#' + videoID).parent().addClass('active');
2059    //jQuery('#'+videoID).parent().addClass('active').parents('.grid-list-item').siblings().children().children('.img_place').removeClass('active');
2060}
2061
2062function animate_elems($elems, winheight, fullheight) {
2063    wintop = jQuery(window).scrollTop(); // calculate distance from top of window
2064
2065// loop through each item to check when it animates
2066
2067    $elems.each(function () {
2068        $elm = jQuery(this);
2069
2070        if ($elm.hasClass('animated')) {
2071            return true;
2072        } // if already animated skip to the next item
2073
2074        topcoords = $elm.offset().top; // element's distance from top of page in pixels
2075
2076        if (wintop > (topcoords - (winheight * .75))) {
2077            // animate when top of the window is 3/4 above the element
2078            $elm.addClass('animated');
2079        }
2080    });
2081}
2082
2083function redirectTo(pageLink) {
2084    location = pageLink;
2085}
2086
2087function ShippingSearchAddress($sPostCode) {
2088    jQuery("#shipping_loader_input").addClass('loader-field');
2089    jQuery.ajax({
2090        type: "GET",
2091        url: kilchoman_ajax_object.ajax_url,
2092        data: {action: 'search_address', post_code: $sPostCode},
2093        success: function (html) {
2094            var responseData = JSON.parse(html);
2095            var data = responseData.data;
2096            jQuery('#shipping_postcode_selector').remove();
2097            var combo = jQuery("<ul></ul>").attr("id", "shipping_postcode_selector").attr("name", "postcode_selector").attr("class", "postcode_selector");
2098            jQuery.each(data, function (i, el) {
2099                combo.append("<li class='shipping_postcode_selector_data' data-post-code='" + el.post_code + "' id='" + el.id + "'>" + el.post_code + " " + el.address + "</li>");
2100            });
2101            jQuery("#shipping_loader_input").after(combo);
2102            jQuery("#shipping_loader_input").removeClass('loader-field');
2103            jQuery('.shipping_postcode_selector_data').on('click', function (e) {
2104                //jQuery(".shipping_postcode_selector_data").click(function(){
2105
2106                var aId = this.id.split('|');
2107                console.log(jQuery(this).data("post-code"));
2108                if (aId[1].length > 0) {
2109                    $NewpostCode = this.id;
2110                    ShippingRetriveAddress($NewpostCode);
2111                } else {
2112                    ShippingSearchAddress(jQuery(this).data("post-code"));
2113                }
2114            });
2115        }
2116    });
2117}
2118
2119function ShippingRetriveAddress($NewpostCode) {
2120    jQuery("#shipping_loader_input").addClass('loader-field');
2121    jQuery.ajax({
2122        type: "GET",
2123        url: kilchoman_ajax_object.ajax_url,
2124        data: {action: 'retrive_address', id: $NewpostCode},
2125        success: function (html) {
2126            console.log(html);
2127            var responseData = JSON.parse(html);
2128            var data = responseData.data;
2129
2130
2131            jQuery('#shipping_address_1').val(data.Line1);
2132            jQuery('#shipping_address_2').val(data.Line2);
2133            jQuery('#shipping_city').val(data.City);
2134            jQuery('#shipping_state').val(data.Province);
2135            jQuery('#shipping_postcode').val(data.PostalCode);
2136
2137
2138            jQuery('#shipping_postcode_selector').remove();
2139            jQuery("#shipping_loader_input").removeClass('loader-field');
2140        }
2141    });
2142}

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.