PageSourceSearch

https://www.privateproperties.com.au/wp-content/themes/digitalcreative/js/scripts_v7.js?camnp6629x&ver=7.0.2

js privateproperties.com.au collected 2026-10-07 18:20:18 UTC 110,110 bytes, 2,983 lines download raw bytes

1var is_map_open = false;
2var baseUrl = '';
3/*document.addEventListener('touchmove', function(event) {
4    event = event.originalEvent || event;
5    if (event.scale !== 1) {
6        event.preventDefault();
7    }
8}, false);*/
9
10jQuery(document).ready(function($){
11    jQuery('#pre-load').hide();
12    new WOW().init();
13    smooth_scroll();
14    slick_gallery_init();
15    accordion_init();
16    titlebox_downarrow();
17    trigger_chat_window()
18    clone_contact_menu();
19    change_popup_close();
20    masterslider_init();
21
22    property_filter_mobile();
23
24    jQuery("#selUser").select2();
25
26    // Read selected option
27    jQuery('.select_property #selUser,.modalcheck.prprty').change(function(){
28        if ( jQuery(this).val() ){
29            window.location = jQuery(this).val();
30        }
31    });
32
33
34    /*setTimeout(function() {
35        jQuery( '.homeherosection .herocontent h1' ).addClass( 'animate-in');
36    }, 3500);
37
38    setTimeout(function() {
39        jQuery( '.homeherosection .herocontent p' ).addClass( 'animate-in');
40    }, 4500);
41
42    setTimeout(function() {
43        jQuery( '.homeherosection .search-bar-wwrapper' ).addClass( 'animate-in');
44    }, 5000);
45
46    setTimeout(function() {
47        jQuery( '.homeherosection a.captiontextlink' ).addClass( 'animate-in');
48    }, 5500);*/
49
50    // if(jQuery('body').hasClass('home')){
51    //              jQuery('.main-menu-container').addClass('transparent');
52    //          }
53
54    jQuery( window ).scroll(function() {
55        var head_height = jQuery('#header_main').height();
56
57        if (jQuery(window).scrollTop() > head_height) {
58            jQuery('body').addClass('moved');
59        } else {
60            jQuery('body').removeClass('moved');
61        }
62    });
63
64    if(jQuery('body').hasClass('page-template-page-destination_guide_detail')){
65        destinationMap();
66    }
67
68    if(jQuery('.property_list_wrapper').length){
69        isotope_init();
70        deeplink_init();
71        isotope_search();
72        filter_buttons();
73        sort_properties_by();
74        default_sort_init();
75
76        jQuery( window ).scroll(function() {
77            var mm_height = jQuery('#header_main').height();
78            var pos_submenu = jQuery('#property_filter_row').position().top + jQuery('#property_filter_row').outerHeight();
79            if (jQuery(window).scrollTop() > (pos_submenu-mm_height)) {
80                jQuery('body').addClass('sticky-active');
81                jQuery('#property_filter_row').addClass('sticky');
82                jQuery('#property_filter_row').css("top", mm_height);
83            } else {
84                jQuery('body').removeClass('sticky-active');
85                jQuery('#property_filter_row').removeClass('sticky');
86            }
87        });
88
89        jQuery('.select_property').click(function() {
90            jQuery('.full_property_list').addClass('active');
91        });
92
93        jQuery('.fpl_close').click(function() {
94            jQuery('.full_property_list').removeClass('active');
95        });
96        var date = new Date();
97        var currentMonth = date.getMonth();
98        var currentYear = date.getFullYear();
99        var monthLastDt = new Date(currentYear,currentMonth+13,0);
100        jQuery('[data-toggle="datepicker"]').datepicker(
101            {
102                dateFormat: 'dd/mm/yy',
103                minDate: 0,
104                /*maxDate: '+1y -1d',*/
105                maxDate: monthLastDt,
106                beforeShow: setDtPkrTtl,
107                onClose: emptyTtl,
108                /*beforeShowDay:function(date) {
109                    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
110                    return [!(isBetween(string,'2022-12-14','2023-01-09'))]
111                }*/
112            }).attr('readonly','readonly').on( "change",dateChanged);
113    }
114
115    if(jQuery('body').hasClass('single-property')){
116        single_page_buttons();
117
118        jQuery("#fancy_map_trigger").fancybox({
119            width   : '90%',
120            height  : '90%',
121            beforeLoad: function(){
122                console.log('loaded');
123                //properties_map = new google.maps.Map(document.getElementById("googleMap"), show_location_map());
124                show_location_map();
125            }
126        });
127        jQuery("#showEnquiry").fancybox({
128            width   : '90%',
129            height  : '90%',
130            'scrolling'     : 'no',
131            // 'titleShow'      : false,
132            afterShow: function(){
133              var arvlDt = jQuery('#arvlDt').val();
134              var dprtrDt = jQuery('#deprtrDt').val();
135              var frmtArvlDt = moment(arvlDt).format("DD/MM/YYYY");
136              var frmtDprtrDt = moment(dprtrDt).format("DD/MM/YYYY");
137              var hmnFrmtArvlDt = moment(arvlDt).format("Do MMMM");
138              var hmnFrmtDprtrDt = moment(dprtrDt).format("Do MMMM");
139              var enqryMdlDtTxt = 'Arrive '+hmnFrmtArvlDt+' - Depart '+hmnFrmtDprtrDt;
140              jQuery('#input_7_29').val(frmtArvlDt);
141              jQuery('#input_7_5').val(frmtDprtrDt);
142              jQuery('.enqryMdlDtCntnr').text(enqryMdlDtTxt);
143           },
144            'onClosed'      : function() {
145                jQuery("#enquiry-form-modal").hide();
146            }
147        });
148        jQuery("#noClndrEnqryMdl").fancybox({
149            width   : '90%',
150            height  : '90%',
151            'scrolling'     : 'no',
152            'onClosed'      : function() {
153                jQuery("#noClndrEnqryMdlCntnt").hide();
154            }
155        });
156
157//      if(jQuery('#googleMap').length && (jQuery('.location_map').data('map')  != '')){
158//          properties_map = new google.maps.Map(document.getElementById("googleMap"), show_location_map());
159//      }
160
161        jQuery( window ).scroll(function() {
162            var mm_height = jQuery('#header_main').height();
163            if(jQuery('.property_intro').length) {
164                var pos_submenu = jQuery('.property_intro').position().top + jQuery('.property_intro').outerHeight();
165                if (jQuery(window).scrollTop() > (pos_submenu-mm_height)) {
166                    jQuery('body').addClass('sticky-active');
167                    jQuery('.property_submenu').addClass('sticky');
168                    jQuery('.property_submenu').css("top", mm_height);
169                } else {
170                    jQuery('body').removeClass('sticky-active');
171                    jQuery('.property_submenu').removeClass('sticky');
172                }
173            }
174            
175        });
176
177        jQuery('.property_overview .overview_gallery .showcase .gallery .gallery-item .gallery-icon').click(function(e){
178            openImageGallery();
179        });
180        setCntntTopPstn();
181        
182    }
183
184
185    jQuery('.slide_down').on('click',function(e){
186        var target = jQuery(this).data('location');
187        target = jQuery(target);
188
189        if(jQuery(target).length){
190            jQuery('html, body').animate({
191              scrollTop: target.offset().top-92
192            }, 1000, function() {
193              // Callback after animation
194              // Must change focus!
195              $target.focus();
196              if ($target.is(":focus")) { // Checking if the target was focused
197                return false;
198              } else {
199                $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
200                $target.focus(); // Set focus again
201              };
202            });
203        }
204    });
205
206    jQuery('.mobile-menu-toggle').on('click',function(e){
207        e.preventDefault();
208        //jQuery('.mobile-menu-toggle').toggleClass('mobile-active');
209        //jQuery('.left_menu').toggleClass('mobile-menu');
210        //jQuery('.right_menu').toggleClass('mobile-menu');
211        jQuery('.mobile-menu').toggleClass('active');
212    });
213
214    jQuery('.mobile-phone-toggle').on('click',function(e){
215        e.preventDefault();
216        //jQuery('.mobile-menu-toggle').toggleClass('mobile-active');
217        //jQuery('.left_menu').toggleClass('mobile-menu');
218        //jQuery('.right_menu').toggleClass('mobile-menu');
219        jQuery('.main-menu-container #header_main .mobile-phone-toggle-wrapper').toggleClass('active');
220        jQuery('.main-menu-container #header_main .mobile-contact-menu-wrapper').toggleClass('active');
221    });
222
223
224    jQuery('.mobile-menu ul li a').on('click',function(e){
225        jQuery(this).parent().toggleClass('active');
226        jQuery(this).parent().siblings().removeClass('active');
227        jQuery(this).parent().parent('ul').siblings().children('li').removeClass('active');
228    });
229
230
231    if(jQuery('.blog_filter').length){
232        jQuery('.blog_filter .filter_button').on('click',function(e){
233            jQuery(this).next().toggleClass('active');
234        });
235    }
236    //if(jQuery('body').hasClass('post-type-archive-property')) {
237        jQuery(document).on('click', '.ui-datepicker-next', function () {
238            var title = jQuery('#shownDP').val();
239            setTimeout(function() {
240                jQuery('#ui-datepicker-div').prepend('<p class="dpTitl">'+title+'</p>');
241            }, 320);
242        });
243        jQuery(document).on('click', '.ui-datepicker-prev', function () {
244            var title = jQuery('#shownDP').val();
245            setTimeout(function() {
246                jQuery('#ui-datepicker-div').prepend('<p class="dpTitl">'+title+'</p>');
247            }, 320);
248        });
249
250    //}
251    if(jQuery('body').hasClass('home')) {
252        var date = new Date();
253        var currentMonth = date.getMonth();
254        var currentYear = date.getFullYear();
255        var monthLastDt = new Date(currentYear,currentMonth+13,0);
256        jQuery('[data-toggle="datepicker"]').datepicker({
257            dateFormat: 'dd/mm/yy',
258            minDate: 0,
259            /*maxDate: '+1y -1d',*/
260            maxDate:monthLastDt,
261            beforeShow: setDtPkrTtl,
262            onClose: emptyTtl,
263            showOn: "both",
264            buttonText: "",
265            /*beforeShowDay:function(date) {
266                var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
267                return [!(isBetween(string,'2022-12-14','2023-01-09'))]
268            }*/
269        }).attr('readonly','readonly').on( "change",dateChanged);
270        jQuery('.property_filter .filter_list .dropdown button').click(function() {
271            if(jQuery(this).parent().hasClass('active')){
272                jQuery(this).parent().removeClass('active');
273            } else {
274                jQuery('.property_filter .filter_list .dropdown').removeClass('active');
275                jQuery(this).parent().addClass('active');
276
277            }
278        });
279        jQuery(document).click( function(e){
280            jQuery('.property_filter .filter_list .dropdown').removeClass('active');
281            var container = jQuery('.property_filter .sort_list .dropdown');
282            if ( !container.is(e.target) && container.has(e.target).length === 0 && container.hasClass('active') )
283            {
284                container.removeClass('active');
285            }
286
287        });
288        jQuery('.property_filter .filter_list .dropdown').click(function(event){
289            event.stopPropagation();
290            //scrlToHmSrch();
291        });
292    }
293    jQuery("#email-form-2").submit(function(e) {
294        e.preventDefault();
295        jQuery(this).find('.search-button').html('<i class="fas fa-spinner fa-spin fa-1x fa-fw"></i>');
296        var frmDta = jQuery(this).serialize();
297        if(frmDta) {
298            hmSrch(frmDta);
299        }
300    });
301    jQuery('.modalbutton').click(function () {
302        var nxtEle = jQuery(this).next();
303        if(jQuery(nxtEle).is(':visible')) {
304            jQuery(nxtEle).slideUp();
305            jQuery(this).find('.dropdownarrows .modalarrowup').hide();
306            jQuery(this).find('.dropdownarrows .modalarrowdown').show();
307        } else {
308            jQuery(nxtEle).slideDown();
309            jQuery(this).find('.dropdownarrows .modalarrowdown').hide();
310            jQuery(this).find('.dropdownarrows .modalarrowup').show();
311        }
312    });
313    jQuery('.herobutton.responsive').click(function () {
314        jQuery('.srchBxCntnr').fadeIn();
315    });
316    jQuery('.closemodal').click(function () {
317        jQuery('.srchBxCntnr').fadeOut();
318    });
319    jQuery('.updatemodaltop').click(function (e) {
320        e.preventDefault();
321        jQuery(this).html('<i class="fas fa-spinner fa-spin fa-1x fa-fw"></i>');
322        var frmDta = jQuery('#email-form').serialize();
323        if(frmDta) {
324            hmSrch(frmDta);
325        }
326    });
327    jQuery('.search-bar-wwrapper *').click(function() {
328        scrlToHmSrch();
329    });
330    jQuery('#w-dropdown-toggle-5').click(function(){
331        var isTrue = jQuery(this).attr('aria-expanded');
332        if(isTrue==true) {
333            jQuery(this).attr('aria-expanded','false');
334            jQuery(this).removeClass('w--open');
335            jQuery(this).next().removeClass('w--open');
336        } else {
337            jQuery(this).attr('aria-expanded','true');
338            jQuery(this).addClass('w--open');
339            jQuery(this).next().addClass('w--open');
340        }
341
342
343    });
344    jQuery('#email-form input,#email-form select').change(function() {
345        jQuery('.updatemodaltop.filter').addClass('active');
346    });
347    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td').click(function(e) {
348        resetBkngBtn();
349        var selDat = jQuery(this).attr('data-date');
350        if(jQuery(this).hasClass('un-avail')) {
351            e.preventDefault();
352        } else if(jQuery(this).hasClass('hilt')) {
353            if(jQuery(this).hasClass('selArvl')) {
354                bkngWdgtResetArrvlDt();
355                bkngWdgtSetArrvlDt(selDat);
356            } else {
357                bkngWdgtResetDprtrDt();
358                bkngWdgtSetDprtrDt(selDat);
359            }
360        } else {
361
362            /*** Arrival & Departure Date Set***/
363
364            if(jQuery(this).hasClass('arrival')) {
365                bkngWdgtSetDprtrDt(selDat);
366            } else if(jQuery(this).hasClass('departure')) {
367                bkngWdgtSetArrvlDt(selDat);
368            } else {
369                if(jQuery('#arvlDt').val()!='' && jQuery('#deprtrDt').val()!='') {
370                    bkngWdgtResetArrvlDt();
371                    bkngWdgtSetArrvlDt(selDat);
372                    var dprtrDt = jQuery('#deprtrDt').val();
373                    if(moment(selDat).isSameOrAfter(dprtrDt)) {
374                        bkngWdgtResetDprtrDt();
375                    }
376                } else if(jQuery('#arvlDt').val()!='') {
377                    bkngWdgtSetDprtrDt(selDat);
378                } else {
379                    bkngWdgtSetArrvlDt(selDat);
380                }
381            }
382            //bkngWdgtVldtn();
383        }
384    });
385    jQuery('.opnBkngMdl').click(function() {
386        if(jQuery(this).hasClass('arvl') ) {
387            if(jQuery('#arvlDt').val()!='') {
388                var selArvlDt = jQuery('#arvlDt').val();
389                var slideno = jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td[data-date='+selArvlDt+']').closest('.avail_slide').data('slick-index');
390            } else {
391                var slideno = jQuery('#booking-calendar .avail_slide.slick-current').data('slick-index');
392            }
393            jQuery('#bkngWdgtModal #needToSet').val('arvl');
394        } else if(jQuery(this).hasClass('deprt')) {
395            if(jQuery('#deprtrDt').val()!='') {
396                var selDprtDt = jQuery('#deprtrDt').val();
397                var slideno = jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td[data-date='+selDprtDt+']').closest('.avail_slide').data('slick-index');
398            } else {
399                var slideno = jQuery('#booking-calendar .avail_slide.slick-current').data('slick-index');
400            }
401            jQuery('#bkngWdgtModal #needToSet').val('deprt');
402        }
403        var selArvlDt = jQuery('#arvlDt').val();
404        var selDprtDt = jQuery('#deprtrDt').val();
405        if(selArvlDt && selDprtDt) {
406            bkngWdgtSetArrvlDt(selArvlDt);
407            bkngWdgtSetDprtrDt(selDprtDt);
408        } else if(selArvlDt) {
409            bkngWdgtSetArrvlDt(selArvlDt);
410        } else if(selDprtDt) {
411            bkngWdgtSetDprtrDt(selDprtDt);
412        }
413        jQuery('.slick-calander').slick('slickGoTo', slideno);
414        jQuery('#bkngWdgtModal').css({
415            'height' : '100%',
416            'opacity' : 1,
417            'z-index' : 999
418        });
419    });
420    if(jQuery('body').hasClass('single-property')) {
421        jQuery(document).click(function(e) {
422            var clkEle = e.target;
423            if(jQuery(clkEle).attr('id')=='bkngWdgtModal') {
424                clsbkngWdgtMdl();
425            }
426        });
427    }
428    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td').click(function(e) {
429        resetBkngBtn();
430        var dtTyp = jQuery('#bkngWdgtModal #needToSet').val();
431        var selDat = jQuery(this).attr('data-date');
432        if(jQuery(this).hasClass('un-avail')) {
433            e.preventDefault();
434        } else if(jQuery(this).hasClass('hilt')) {
435            if(dtTyp=='arvl') {
436                bkngWdgtResetArrvlDt();
437                bkngWdgtSetArrvlDt(selDat);
438            } else if(dtTyp=='deprt') {
439                bkngWdgtResetDprtrDt();
440                bkngWdgtSetDprtrDt(selDat);
441            }
442        } else {
443            if(dtTyp=='arvl') {
444                bkngWdgtSetArrvlDt(selDat);
445            } else if(dtTyp=='deprt') {
446                bkngWdgtSetDprtrDt(selDat);
447            }
448            var slideno = jQuery('#bkngWdgtModal .avail_slide.slick-current').data('slick-index');
449            jQuery('.slick-calander').slick('slickGoTo', slideno);
450            clsbkngWdgtMdl();
451            bkngWdgtVldtn();
452        }
453    });
454    jQuery('.book-submit').click(function(e) {
455        e.preventDefault();
456        if(!(jQuery(this).hasClass('disable'))) {
457            if(jQuery(this).attr('href')=='#') {
458                jQuery(this).html('<i class="fas fa-spinner fa-spin fa-1x fa-fw"></i>');
459                var isDtErr = bkngWdgtVldtn();
460                if(isDtErr==0) {
461                    jQuery(this).html('<i class="fas fa-spinner fa-spin fa-1x fa-fw"></i>');
462                    getRMSAPIRate();
463                } else {
464                    jQuery(this).html('Submit');
465                }
466            } else {
467                var rmsUrl = jQuery(this).attr('href');
468                window.open(rmsUrl,'_blank');
469            }
470        }
471    });
472    jQuery('.qty-arrow i').click(function(e) {
473        var crntTxtEle = jQuery(this).closest('.qty-icons').prev();
474        var crntVal = (jQuery(crntTxtEle).text())*1;
475        var crntGstEle = jQuery(this).closest('.guests-qty-field');
476        if(jQuery(this).hasClass('fa-angle-up')) {
477            crntVal = crntVal+1;
478        } else {
479            crntVal = crntVal-1;
480            var mnVal = 0;
481            var crntGstLbl = jQuery(crntGstEle).prev().text();
482            if(crntGstLbl=='Adults (16yrs+)') {
483                mnVal = 1;
484            }
485            if(crntVal<mnVal) {
486                return '';
487            }
488        }
489        jQuery(crntGstEle).next().val(crntVal);
490        jQuery(crntTxtEle).text(crntVal);
491    });
492    jQuery('.gst-submit').click(function(e) {
493        var navEle = jQuery(this).closest('nav');
494        var prevEle = jQuery(navEle).prev();
495        var prntEle = jQuery(this).closest('.dropdown-2');
496        jQuery(prevEle).removeClass('w--open');
497        jQuery(prevEle).attr('aria-expanded','false');
498        jQuery(navEle).removeClass('w--open');
499        jQuery(prntEle).attr('style','');
500        var gstAdlt = jQuery('#gstAdlt').val();
501        var gstChldrn = jQuery('#gstChldrn').val();
502        var gstInfnt = jQuery('#gstInfnt').val();
503        var arattlGst = jQuery('#slpCnt').val();
504        var ttlGst = (gstAdlt*1)+(gstChldrn*1)+(gstInfnt*1);
505        if(ttlGst>arattlGst) {
506            bkngWdgtGstErr('Total Guest Exceeds');
507        } else {
508            jQuery('.gst-widget-error-wrapper .gst-booking-widget-error > div').text('');
509            jQuery('.gst-widget-error-wrapper').hide();
510        }
511    });
512    if(jQuery('body').hasClass('newsletter-signup')) {
513        jQuery('input[type=text]').each(function() {
514            jQuery(this).addClass('textfield w-input');
515        });
516        jQuery('input[type=submit]').addClass('btn-large');
517    }
518    jQuery('.reset-btn').click(function(e) {
519		e.preventDefault()
520        bkngWdgtResetAllDts();
521    });
522	jQuery('body > div').each(function() {
523		var styleVal = jQuery(this).attr('style');
524		var id = jQuery(this).attr('id');
525		var clsVal = jQuery(this).attr('class');
526		if (typeof styleVal !== 'undefined' && styleVal!='' && typeof id == 'undefined' && typeof clsVal == 'undefined') {
527			jQuery(this).hide();
528		   /*console.log(jQuery(this));*/
529		  }
530	});
531	jQuery('.removeFvrt').click(function() {
532		jQuery(this).parent().find('.simplefavorite-button').trigger('click');
533	});
534	if(jQuery('body').hasClass('page-template-page-favourites-enquiry')) {
535		jQuery(".gform_wrapper input[type=text],.gform_wrapper input[type=email],.gform_wrapper input[type=tel],.gform_wrapper input[type=password],.gform_wrapper input[type=number],.gform_wrapper textarea").addClass("block w-full rounded-md border-0 px-3.5 py-2 text-brand ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6");
536		jQuery(".gform_wrapper select").addClass(" border border-gray-300 ring-1 ring-inset ring-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5");
537		jQuery(".gform_wrapper label").addClass("block text-sm leading-6 text-brand");
538		jQuery(".gform_wrapper input[type=submit]").addClass("block w-full rounded-md bg-neutral-800 px-3 py-3 text-center text-sm font-medium text-white hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600");
539		
540	}
541    jQuery('#responsiveHeader #hamburger').click(function(){
542        jQuery('#responsiveHeader #overlay').removeClass('hidden');
543        jQuery('#responsiveHeader #drawer').removeClass('-translate-x-full');
544        jQuery('#responsiveHeader #drawer-content').removeClass('hidden').addClass('opacity-100');
545    });
546    jQuery('#responsiveHeader #close').click(function(){
547        jQuery('#responsiveHeader #overlay').addClass('hidden');
548        jQuery('#responsiveHeader #drawer').addClass('-translate-x-full');
549        jQuery('#responsiveHeader #drawer-content').addClass('hidden').removeClass('opacity-100');
550    });
551    jQuery('#responsiveHeader .accordion-button').click(function(){
552        var submMnuSts = jQuery(this).attr('aria-expanded');
553        if(submMnuSts=='false'){
554            jQuery(this).attr('aria-expanded',true);
555            jQuery(this).next().removeClass('hidden').attr('aria-hidden',false);
556        } else {
557            jQuery(this).attr('aria-expanded',false);
558            jQuery(this).next().addClass('hidden').attr('aria-hidden',true);
559        }
560    });
561    tstNtfctn();
562    jQuery('#close-toast').click(function(){
563        jQuery('#toast').addClass('translate-x-full opacity-0').removeClass('translate-x-0 opacity-100');
564        sessionStorage.setItem("toastClosed", "true")
565    });
566    setHdrMsg();
567});
568function setHdrMsg() {
569    if(jQuery('.header_message').length) {
570        var topPostn =  jQuery('.header_message').height();
571        jQuery('header').css('top',topPostn);
572        var HmbrgrPstn = 'calc('+topPostn+'px + 0.5rem)';
573        jQuery('header #hamburger').css('top',HmbrgrPstn);
574    }
575}
576function tstNtfctn(){
577    var isClsed = sessionStorage.getItem("toastClosed");
578    if(isClsed!='true' && jQuery('#toast').length) {
579        setTimeout(function() {
580            jQuery('#toast').removeClass('translate-x-full opacity-0').addClass('translate-x-0 opacity-100');
581        }, 300);
582
583    }
584}
585function setCntntTopPstn() {
586    if(jQuery('body').hasClass('single-property')){
587        var stkyHdrHt = jQuery('#header_main').height();
588        if (jQuery('.header_message').is(':visible')) {
589            stkyHdrHt = stkyHdrHt + jQuery('.header_message').height();
590        }
591        jQuery('.property_intro').css('padding-top',stkyHdrHt);
592    }
593}
594function resetBkngBtn() {
595    if(jQuery('.book-submit').attr('href')!='#') {
596        jQuery('.book-submit').attr('href','#');
597        jQuery('.book-submit').text('Select dates');
598        jQuery('.due-price').text('');
599        jQuery('.due-price,.booking-details').hide();
600    }
601}
602function getRMSAPIRate() {
603    var arvlDt = jQuery('#arvlDt').val();
604    var dprtDt = jQuery('#deprtrDt').val();
605    var araId = jQuery('#areaId').val();
606    var reqSts = jQuery('#reqSts').val();
607    var reqDtSts = jQuery('#reqDtSts').val();
608    var rates = jQuery('#rates').val();
609    var categoryId = jQuery('#categoryId').val();
610    var rateId = jQuery('#rateId').val();
611    /*var gstAdlt = jQuery('#gstAdlt').val();
612    var gstChldrn = jQuery('#gstChldrn').val();
613    var gstInfnt = jQuery('#gstInfnt').val();*/
614    jQuery.ajax({
615        url: siteUrl +"/wp-admin/admin-ajax.php",
616        type: "post",
617        dataType: "json",
618        data: {
619            action : 'getRMSAPIRate',
620            arrival: arvlDt,
621            departure: dprtDt,
622            area : araId,
623            reqSts : reqSts,
624            reqDtSts : reqDtSts,
625            categoryId : categoryId,
626            rateId : rateId
627            /*gstAdlt : gstAdlt,
628            gstChldrn : gstChldrn,
629            gstInfnt : gstInfnt,*/
630        },
631        success: function(response) {
632            if ( typeof response.href === "undefined") {
633                var btnEle = jQuery('.book-submit');
634                jQuery(btnEle).removeClass('disable');
635                bkngWdgtErr('Something went wrong please try again.');
636                bkngWdgtResetArrvlDt();
637                bkngWdgtResetDprtrDt();
638                jQuery(btnEle).text('Select dates');
639            } else {
640                jQuery('.book-submit').attr('href',response.href);
641                jQuery('.book-submit').attr('target','_blank');
642
643                // currency format
644                var btnTxt = new Intl.NumberFormat('en-US', {
645                  minimumFractionDigits: 2,
646                  maximumFractionDigits: 2,
647                }).format(rates);
648                item.ecommerce.value = Number(btnTxt);
649                item.ecommerce.items[0].price = Number(btnTxt);
650                if(Number(btnTxt)==0) {
651                    btnTxt = '';
652                }
653                if(reqSts==1 || reqDtSts==1) {
654                    if(btnTxt) {
655                        btnTxt = '$'+btnTxt+ ' Request Booking';
656                    } else {
657                        btnTxt = 'Request Booking';
658                    }
659                    
660                    jQuery('.book-submit').hide();
661                    jQuery('#showEnquiry').css('display','inline-block');
662                    jQuery('#showEnquiry').text(btnTxt);
663                } else {
664                    if(btnTxt) {
665                        btnTxt = '$'+btnTxt+' Book Now';
666                    } else {
667                       btnTxt = 'Book Now';
668                    }
669                    
670                }
671                jQuery('.book-submit').text(btnTxt);
672                jQuery('.book-submit').removeClass('disable');
673                jQuery('.due-price').text('$985.50 due today');
674                jQuery('.booking-details').show();
675            }
676        },
677        error: function(xhr,error) {
678            console.log(error);
679            var btnEle = jQuery('.book-submit');
680            jQuery(btnEle).removeClass('disable');
681            bkngWdgtErr('Something went wrong please try again.');
682            bkngWdgtResetArrvlDt();
683            bkngWdgtResetDprtrDt();
684            jQuery(btnEle).text('Select dates');
685        }
686    });
687}
688function bkngWdgtVldtn() {
689    var btnEle = jQuery('.book-submit');
690    /*** Arrival & Departure Date Validation ***/
691    jQuery('.widget-error-wrapper').hide();
692    jQuery('.booking-widget-error > div').text('');
693    var errFlg = 0;
694    var arvlDt = jQuery('#arvlDt').val();
695    var dprtDt = jQuery('#deprtrDt').val();
696    var minLeadTime = getMinLeadTime();
697
698    // user can't select within 5 days from today
699    var today = moment();
700    let withinMindays = moment().add(parseInt(minLeadTime), 'days');
701    var propid = jQuery('#propId').val();
702if(moment(dprtDt).isBetween(today, withinMindays) && propid!=5404) {
703    var errFlg = 1;
704    bkngWdgtErr('Contact our Booking Consultants for last minute bookings.');
705    bkngWdgtResetArrvlDt();
706    bkngWdgtResetDprtrDt();
707
708  }
709    else if(arvlDt && dprtDt) {
710        if(moment(dprtDt).isSameOrAfter(arvlDt)) {
711            var arvlDtObj = new Date(arvlDt);
712            var dprtDtObj = new Date(dprtDt);
713            while(arvlDtObj<dprtDtObj) {
714                var currDt = arvlDtObj.setDate(arvlDtObj.getDate() + 1);
715                var curFrmtDt = moment(currDt).format("YYYY-MM-DD");
716                var curDtEle = jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td[data-date='+curFrmtDt+']');
717                if(jQuery(curDtEle).hasClass('un-avail') || jQuery(curDtEle).hasClass('departure')) {
718                    errFlg = 1;
719                    bkngWdgtErr('This departure date is not available.');
720                    bkngWdgtResetDprtrDt();
721                }
722            }
723        }
724        else {
725            errFlg = 1;
726            bkngWdgtErr('Departure date must be after arrival date.');
727            bkngWdgtResetDprtrDt();
728        }
729    } else if(arvlDt) {
730        errFlg = 1;
731        bkngWdgtErr('Please provide departure date.');
732    } else {
733        errFlg = 1;
734        bkngWdgtErr('Please provide arrival date.');
735    }
736    if(errFlg==0) {
737        //jQuery(btnEle).text('Get Price');
738    }
739     return errFlg;
740}
741function getMinLeadTime(){
742    var minLeadTime = jQuery('#minLeadTime').val();
743    return minLeadTime;
744}
745function clsbkngWdgtMdl() {
746    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt.selDprt').removeClass('hilt selDprt');
747    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt.selArvl').removeClass('hilt selArvl');
748    jQuery('#bkngWdgtModal #needToSet').val('');
749    jQuery('#bkngWdgtModal').css({
750        'height' : '0',
751        'opacity' : 0,
752        'z-index' : -1
753    });
754
755}
756function bkngWdgtErr(errMsg) {
757    if(errMsg) {
758        jQuery('.booking-widget-error > div').text(errMsg);
759        jQuery('.widget-error-wrapper').show();
760    }
761}function bkngWdgtGstErr(errMsg) {
762    if(errMsg) {
763        jQuery('.gst-widget-error-wrapper .gst-booking-widget-error > div').text(errMsg);
764        jQuery('.gst-widget-error-wrapper').show();
765    }
766}
767
768function bkngWdgtSetArrvlDt(selDat) {
769    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td.hilt.selArvl').removeClass('hilt selArvl');
770    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt.selArvl').removeClass('hilt selArvl');
771    jQuery('#arvlDt').val(selDat);
772    jQuery('.arvl .booking-calendar-field .dropdowntext').text(moment(selDat, "YYYY-MM-DD").format('DD MMMM YYYY'));
773    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td[data-date='+selDat+']').addClass('hilt selArvl');
774    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td[data-date='+selDat+']').addClass('hilt selArvl');
775    // user can't select within 5 days from today
776    var yesterday = moment().subtract(1, 'days');
777  var minLeadTime = getMinLeadTime();
778  let withinMindays = moment().add(parseInt(minLeadTime), 'days');
779  var propid = jQuery('#propId').val();
780  if(moment(selDat).isBetween(yesterday, withinMindays) && propid!=5404) {
781    bkngWdgtErr('Contact our Booking Consultants for last minute bookings.');
782    bkngWdgtResetArrvlDt();
783    bkngWdgtResetDprtrDt();
784  } else {
785    bkngWdgtSetMdlDt();
786        enableReset();
787  }
788
789}
790function enableReset() {
791    var arvlDt = jQuery('#arvlDt').val();
792    var deprtrDt = jQuery('#deprtrDt').val();
793    var resetEle = jQuery('.reset-wrapper');
794    if(jQuery(resetEle).is(':hidden') && (arvlDt!='' ||  deprtrDt!='')) {
795        jQuery(resetEle).show();
796    }
797}
798function bkngWdgtResetArrvlDt() {
799    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td.hilt.selArvl').removeClass('hilt selArvl');
800    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt.selArvl').removeClass('hilt selArvl');
801    jQuery('#arvlDt').val('');
802    jQuery('.arvl .booking-calendar-field .dropdowntext').text('Arrival Date');
803    disableReset();
804}
805function disableReset() {
806    var arvlDt = jQuery('#arvlDt').val();
807    var deprtrDt = jQuery('#deprtrDt').val();
808    var resetEle = jQuery('.reset-wrapper');
809    if(jQuery(resetEle).is(':visible') && arvlDt=='' && deprtrDt=='') {
810        jQuery(resetEle).hide();
811    }
812}
813function bkngWdgtSetDprtrDt(selDat) {
814    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td.hilt.selDprt').removeClass('hilt selDprt');
815    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt.selDprt').removeClass('hilt selDprt');
816    jQuery('#deprtrDt').val(selDat);
817    jQuery('.deprt .booking-calendar-field .dropdowntext').text(moment(selDat, "YYYY-MM-DD").format('DD MMMM YYYY'));
818    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td[data-date='+selDat+']').addClass('hilt selDprt');
819    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td[data-date='+selDat+']').addClass('hilt selDprt');
820    var btnEle = jQuery('.book-submit');
821    if(!(jQuery(btnEle).hasClass('disable'))) {
822        jQuery(btnEle).text('Get Price');
823    }
824    enableReset();
825    var isDtErr = bkngWdgtVldtn();
826    if(isDtErr==0) {
827        bkngWdgtSetMdlDt();
828        setMinNights();
829    }
830}
831function bkngWdgtSetMdlDt() {
832    var arvlDt = jQuery('#arvlDt').val();
833    var dprtDt = jQuery('#deprtrDt').val();
834    if(arvlDt && dprtDt) {
835        bkngWdgtResetMdlDt();
836        var arvlDtObj = new Date(arvlDt);
837        var dprtDtObj = new Date(dprtDt);
838        while(arvlDtObj<dprtDtObj) {
839            var currDt = arvlDtObj.setDate(arvlDtObj.getDate() + 1);
840            var curFrmtDt = moment(currDt).format("YYYY-MM-DD");
841            var curDtEle = jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td[data-date='+curFrmtDt+']');
842            jQuery(curDtEle).addClass('hilt');
843            var curDtEleMdl = jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td[data-date='+curFrmtDt+']');
844            jQuery(curDtEleMdl).addClass('hilt');
845        }
846    }
847}
848function bkngWdgtResetMdlDt() {
849    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td.hilt').each(function() {
850        if(!(jQuery(this).hasClass('selArvl')) && !(jQuery(this).hasClass('selDprt'))) {
851            jQuery(this).removeClass('hilt');
852        }
853    });
854    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt').each(function() {
855        if(!(jQuery(this).hasClass('selArvl')) && !(jQuery(this).hasClass('selDprt'))) {
856            jQuery(this).removeClass('hilt');
857        }
858    });
859}
860function bkngWdgtResetDprtrDt() {
861    jQuery('#booking-calendar .slick-slider .avail_slide .tabpp td.hilt.selDprt').removeClass('hilt selDprt');
862    jQuery('#bkngWdgtModal .slick-slider .avail_slide .tabpp td.hilt.selDprt').removeClass('hilt selDprt');
863    jQuery('#deprtrDt').val('');
864    jQuery('.deprt .booking-calendar-field .dropdowntext').text('Departure Date');
865    bkngWdgtResetMdlDt();
866    jQuery('.book-submit').text('Select dates');
867    disableReset();
868}
869function bkngWdgtResetAllDts() {
870    bkngWdgtResetArrvlDt();
871    bkngWdgtResetMdlDt();
872    bkngWdgtResetDprtrDt();
873    jQuery('.widget-error-wrapper').hide();
874    jQuery('.booking-widget-error > div').text('');
875    if (jQuery('.book-submit').is(':hidden')) {
876        jQuery('.book-submit').attr('href','#');
877        jQuery('.book-submit').show();
878    }
879    if (jQuery('#showEnquiry').is(':visible')) {
880        jQuery('#showEnquiry').hide();
881    }
882  
883
884    
885}
886function setMinNights() {
887    jQuery('#reqDtSts').val(0);
888    var araId = jQuery('#areaId').val();
889    var btnEle = jQuery('.book-submit');
890    var arvlDt = jQuery('#arvlDt').val();
891    var deprtrDt = jQuery('#deprtrDt').val();
892    jQuery('.widget-error-wrapper').hide();
893    jQuery('.booking-widget-error > div').text('');
894    jQuery(btnEle).addClass('disable');
895    jQuery(btnEle).html('<i class="fas fa-spinner fa-spin fa-1x fa-fw"></i>');
896    jQuery.ajax({
897        url: siteUrl +"/wp-admin/admin-ajax.php",
898        type: "post",
899        dataType: "json",
900        data: {
901            action : 'getMinNights',
902            arrival: arvlDt,
903            departure: deprtrDt,
904            araId: araId
905        },
906        success: function(response) {
907            if(response.closedOnArrival==1 || response.closedOnDeparture==1) {
908				jQuery(btnEle).removeClass('disable');
909				bkngWdgtResetArrvlDt();
910				bkngWdgtResetDprtrDt();
911				jQuery(btnEle).text('Select dates');
912				if( (response.closedOnArrival==1 && response.closedOnDeparture==1) || 
913                    (response.closedOnArrival==1) ||                     
914                    (response.closedOnDeparture==1)
915                ) {
916					var errMsg = 'Please select another date or contact our Bookings Consultants';
917				} 
918				bkngWdgtErr(errMsg);
919				
920			} else {
921                if(response.stopSell==1) {
922                    jQuery('#reqDtSts').val(1);
923                }
924                if(response.rate) {
925                    jQuery('#rates').val(response.rate);
926                    jQuery('#categoryId').val(response.categoryId);
927                    jQuery('#rateId').val(response.rateId);
928                    getRMSAPIRate();
929                } else if(response.minstay) {
930                    jQuery('#minNights').val(response.minstay);
931                    jQuery(btnEle).removeClass('disable');
932                    var errMsg = 'Minimum '+response.minstay+' night stay to book these dates.';
933                    bkngWdgtErr(errMsg);
934                    bkngWdgtResetArrvlDt();
935                    bkngWdgtResetDprtrDt();
936                    jQuery(btnEle).text('Select dates');
937                } else if(response.message) {
938                    jQuery(btnEle).removeClass('disable');
939                    bkngWdgtErr(response.message);
940                    bkngWdgtResetArrvlDt();
941                    bkngWdgtResetDprtrDt();
942                    jQuery(btnEle).text('Select dates');
943                }
944            }
945            /*jQuery(btnEle).removeClass('disable');
946            jQuery(btnEle).text('Get Price');
947            bkngWdgtVldtn();*/
948        },
949        error: function(xhr,error) {
950            jQuery(btnEle).removeClass('disable');
951            bkngWdgtErr('Something went wrong please try again.');
952            bkngWdgtResetArrvlDt();
953            bkngWdgtResetDprtrDt();
954            jQuery(btnEle).text('Select dates');
955        }
956    });
957
958}
959function home_slider_anim(){
960    jQuery( '.home_main_banner .ms-slide-layers .ms-layer h1' ).addClass( 'animate-in');
961}
962
963
964
965
966
967function smooth_scroll(){
968
969    $headerheight = jQuery( '.main-menu-container' ).height();
970    $stickynavheight = jQuery( '.property_submenu' ).height();
971    $topoffset = $headerheight + $stickynavheight;
972
973    // Select all links with hashes
974    jQuery('a[href*="#"]')
975      // Remove links that don't actually link to anything
976      .not('[href="#"]')
977      .not('[href="#0"]')
978      .click(function(event) {
979        // On-page links
980        if (
981          location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
982          &&
983          location.hostname == this.hostname
984        ) {
985          // Figure out element to scroll to
986          var target = jQuery(this.hash);
987          target = target.length ? target : jQuery('[name=' + this.hash.slice(1) + ']');
988          // Does a scroll target exist?
989          if (target.length) {
990            // Only prevent default if animation is actually gonna happen
991            event.preventDefault();
992            console.log(target.offset().top-98);
993            jQuery('html, body').animate({
994              scrollTop: target.offset().top-98
995            }, 1000, function() {
996              // Callback after animation
997              // Must change focus!
998              if (!jQuery('body').hasClass('single-property')){
999                  var $target = jQuery(target);
1000                  $target.focus();
1001                  if ($target.is(":focus")) { // Checking if the target was focused
1002                    return false;
1003                  } else {
1004                    $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
1005                    $target.focus(); // Set focus again
1006                  };
1007              }
1008            });
1009          }
1010        }
1011    });
1012}
1013
1014
1015
1016function clone_contact_menu(){
1017    var $contact_menu = jQuery('.main-menu-container #header_main .right_menu > ul > li.phone .sub-menu').clone();
1018    jQuery('.mobile-contact-menu').html($contact_menu);
1019}
1020
1021
1022function titlebox_downarrow(){
1023    if(jQuery('.title_box-wrapper.downarrow').length){
1024        jQuery('.title_box-wrapper.downarrow').append('<span class="click"><i class="fal fa-chevron-down"></i></span>');
1025        jQuery('.title_box-wrapper.downarrow span.click').click(function(){
1026            var nextEle = jQuery(this).parent().next();
1027            jQuery('html, body').animate({
1028                scrollTop: nextEle.offset().top
1029            }, 800);
1030        });
1031    }
1032}
1033
1034
1035
1036function slick_gallery_init(){
1037    jQuery('.slick-gallery').slick({
1038        dots: true,
1039        arrows: true,
1040        infinite: true,
1041        speed: 300,
1042        slidesToShow: 1,
1043        adaptiveHeight: true,
1044        mobileFirst: true,
1045    });
1046	jQuery('.archive-gallery').slick({
1047        lazyLoad: 'ondemand',
1048		dots: false,
1049        arrows: true,
1050        infinite: true,
1051        speed: 300,
1052        slidesToShow: 1,
1053        adaptiveHeight: true,
1054        mobileFirst: true,
1055    });
1056	jQuery('.hmGrdSldr').slick({
1057        dots: false,
1058        arrows: true,
1059        infinite: true,
1060        speed: 300,
1061        slidesToShow: 1,
1062        adaptiveHeight: true,
1063        mobileFirst: true,
1064    });
1065
1066    jQuery('.slick-calander').slick({
1067        dots: true,
1068        arrows: true,
1069        infinite: true,
1070        speed: 300,
1071        slidesToShow: 1,
1072        adaptiveHeight: true,
1073        mobileFirst: false,
1074        responsive: [{
1075            breakpoint: 767,
1076            settings: {
1077                slidesToShow: 2,
1078            }
1079        },{
1080            breakpoint: 550,
1081            settings: {
1082                slidesToShow: 1,
1083            }
1084        }]
1085    });
1086
1087    jQuery('.slick-testimonials').slick({
1088        dots: true,
1089        arrows: true,
1090        infinite: true,
1091        fade: true,
1092        cssEase: 'linear',
1093        speed: 1500,
1094        slidesToShow: 1,
1095        adaptiveHeight: true,
1096        mobileFirst: true,
1097        autoplaySpeed: 7000,
1098    });
1099}
1100
1101
1102
1103function isotope_init(){
1104    jQuery('.property_list').isotope({
1105        // options
1106        itemSelector: '.item',
1107        layoutMode: 'fitRows',
1108        transitionDuration: '0.6s',
1109        hiddenStyle: {
1110            opacity: 0
1111        },
1112        visibleStyle: {
1113            opacity: 1
1114        },
1115        fitRows: {
1116          gutter: 97
1117        },
1118        getSortData: {
1119            // name: '.name', // text from querySelector
1120            // price: '[data-price]' // value of attribute
1121            // location: '[data-destination]' // value of attribute
1122            default: function( itemElem ) { // function
1123              var price = jQuery( itemElem ).data('defaultorder');
1124              return parseFloat( price );
1125            },
1126            price: function( itemElem ) { // function
1127              var price = jQuery( itemElem ).data('price');
1128              return parseFloat( price );
1129            }
1130        }
1131    });
1132
1133    updateFilterCount(jQuery('.property_list').isotope());
1134}
1135
1136
1137function deeplink_init(){
1138
1139    var hash_string =  window.location.href.split('?')[1];
1140
1141    if (hash_string && hash_string.length){
1142        hash_string = hash_string.replace('filters+', '');
1143
1144        hash_data = hash_string.split('&');
1145
1146        jQuery.each( hash_data, function( key, value ) {
1147            data_type = value.split('=')[0];
1148            data_value = value.split('=')[1]
1149
1150            if(data_type == "locations"){
1151                data_sets  = [];
1152                data_sets = data_value.split(',');
1153
1154                jQuery.each( data_sets, function( key, value ) {
1155                    jQuery('.dropdown.destination .dropdown-content input[value="'+decodeURIComponent(value)+'"]').attr('checked',true);
1156                });
1157            }
1158
1159            if(data_type == "features"){
1160                data_sets  = [];
1161                data_sets = data_value.split(',');
1162
1163                jQuery.each( data_sets, function( key, value ) {
1164                    jQuery('.dropdown.features .dropdown-content input[value="'+decodeURIComponent(value)+'"]').attr('checked',true);
1165                });
1166            }
1167
1168            if(data_type == "features"){
1169                data_sets  = [];
1170                data_sets = data_value.split(',');
1171
1172                jQuery.each( data_sets, function( key, value ) {
1173                    jQuery('.dropdown.features .dropdown-content input[value="'+decodeURIComponent(value)+'"]').attr('checked',true);
1174                });
1175            }
1176
1177            if(data_type == "sleeps"){
1178                data_sets  = [];
1179                data_sets = data_value.split('-');
1180
1181                //console.log(data_sets[0]+' - '+data_sets[1]);
1182
1183                jQuery('.dropdown.sleeps .dropdown-content select#sleep_min_input').val([ data_sets[0] ]);
1184                jQuery('.dropdown.sleeps .dropdown-content select#sleep_max_input').val([ data_sets[1] ]);
1185
1186            }
1187
1188
1189            if(data_type == "checkin"){
1190
1191                jQuery('.availability input[name="checkin_date"]').val([ data_value ]);
1192
1193            }
1194
1195            if(data_type == "checkout"){
1196
1197                jQuery('.availability input[name="checkout_date"]').val([ data_value ]);
1198
1199            }
1200        });
1201
1202        jQuery('#property_loading').addClass('active');
1203
1204        filter_property();
1205    } else {
1206        setTimeout(function() {
1207            jQuery('#property_loading').removeClass('active');   //Hide loading
1208            map_update();
1209        }, 200);
1210    }
1211}
1212
1213
1214
1215function filter_buttons(){
1216    jQuery('.property_filter .filter_list .dropdown button').click(function() {
1217        if(jQuery(this).parent().hasClass('active')){
1218            jQuery(this).parent().removeClass('active');
1219        } else {
1220            jQuery('.property_filter .filter_list .dropdown').removeClass('active');
1221            jQuery(this).parent().addClass('active');
1222
1223            // jQuery(this).parent().find('.dropdown-content').mouseenter(function() {
1224            //  jQuery(this).parent().mouseleave(function(){
1225            //      jQuery(this).removeClass('active');
1226            //  });
1227            // });
1228        }
1229    });
1230
1231    jQuery('.property_filter .sort_list .dropdown button').click(function() {
1232        if(jQuery(this).parent().hasClass('active')){
1233            jQuery(this).parent().removeClass('active');
1234        } else {
1235            jQuery('.property_filter .sort_list .dropdown').removeClass('active');
1236            jQuery(this).parent().addClass('active');
1237
1238            jQuery(this).parent().find('.dropdown-content').mouseenter(function() {
1239                jQuery(this).mouseleave(function(){
1240                    jQuery(this).parent().removeClass('active');
1241                });
1242            });
1243        }
1244    });
1245
1246    jQuery('.property_filter .map_view_nav input').click(function() {
1247        if(jQuery(this).is(':checked')){
1248            jQuery(".property_map").addClass('active');  // checked
1249            if (!is_map_open){
1250//              properties_map = new google.maps.Map(document.getElementById("googleMap"), myMap());
1251//              google.maps.event.trigger(properties_map,'resize');
1252                is_map_open = true;
1253                map_update();
1254            }
1255        } else {
1256            jQuery(".property_map").removeClass('active');  // unchecked
1257            is_map_open = false
1258        }
1259    });
1260
1261
1262
1263    // Close when click on outside
1264    jQuery(document).click( function(e){
1265        jQuery('.property_filter .filter_list .dropdown').removeClass('active');
1266
1267        var container = jQuery('.property_filter .sort_list .dropdown');
1268
1269        if ( !container.is(e.target) && container.has(e.target).length === 0 && container.hasClass('active') )
1270        {
1271            container.removeClass('active');
1272        }
1273        // jQuery('.property_filter .sort_list .dropdown').removeClass('active');
1274    });
1275
1276    // Stop closing current clicked item
1277    jQuery('.property_filter .filter_list .dropdown').click(function(event){
1278        event.stopPropagation();
1279    });
1280
1281    jQuery('.property_filter .filter_list .dropdown-content ul li').click(function(event){
1282        if(event.target == event.currentTarget) {
1283            jQuery(this).find('input:checkbox').trigger('click');
1284          }
1285    });
1286
1287    $window_width = jQuery(window).width();
1288
1289    if ($window_width < 768) {
1290        jQuery('.property_filter .filter_list').click(function() {
1291            if(jQuery(this).hasClass('active')){
1292                jQuery(this).removeClass('active');
1293            } else {
1294                jQuery(this).removeClass('active');
1295                jQuery(this).addClass('active');
1296            }
1297        });
1298    }
1299}
1300
1301
1302function single_page_buttons(){
1303
1304    //Full description button
1305    if(jQuery('#open_full_desc').length && jQuery('#property_full_desc').length){
1306
1307        jQuery('#open_full_desc').click(function() {
1308            jQuery('#property_full_desc').toggleClass('active');
1309            jQuery('#property_full_desc').parent().toggleClass('active');
1310        });
1311        jQuery('.close_description').click(function() {
1312            jQuery('#property_full_desc').removeClass('active');
1313            jQuery('#property_full_desc').parent().removeClass('active');
1314        });
1315
1316        jQuery('.property_full_desc_wrapper').click(function() {
1317            if(jQuery('#property_full_desc').hasClass('active')){
1318                jQuery('#property_full_desc').removeClass('active');
1319                jQuery('#property_full_desc').parent().removeClass('active');
1320            }
1321        });
1322    }
1323
1324    // Show full gallery
1325    if(jQuery('.overview_gallery').length && jQuery('#view_all_images').length){
1326        //console.log('works1');
1327        jQuery('#view_all_images').click(function() {
1328            // jQuery('.overview_gallery .esg-grid li:first-child a').click();;
1329            var mobx = new ModuloBox();
1330            mobx.init();
1331            mobx.open( 'mobx-holder', 0 );
1332
1333        });
1334    }
1335
1336
1337    jQuery(".back_to_top a").click(function() {
1338        jQuery("html, body").animate({ scrollTop: 0 }, "slow");
1339        return false;
1340    });
1341}
1342
1343
1344function isotope_search(){
1345
1346    // jQuery('.dropdown').each(function() {
1347    //  var filter = jQuery(this).data('filter');
1348
1349    //  if( filter !== undefined) {
1350    //      jQuery(this).find('a').each(function() {
1351    //          jQuery(this).click(function() {
1352    //              // console.log(jQuery(this).data('value'));
1353    //              var available = new Array();
1354    //              available.push(jQuery(this).data('value'));
1355    //              jQuery('.property_list').isotope({ filter: function() {
1356    //                  var prop_value= jQuery(this).data(filter);
1357    //                  // console.log(prop_value+" : "+available);
1358    //                  return ( jQuery.inArray( prop_value, available ) > 0 ) ;
1359    //              } })
1360    //          });
1361
1362    //      });
1363    //  }
1364    // });
1365
1366
1367    // jQuery('.dropdown.destination .dropdown-content input').change(function() {
1368    //  var destinations = [];
1369    //  jQuery('.dropdown.destination .dropdown-content input:checked').each(function() {
1370    //      destinations.push(jQuery(this).val());
1371    //  });
1372    //  console.log(destinations);
1373    //  jQuery('.property_list').isotope({ filter: function() {
1374    //      var prop_value= jQuery(this).data('destination');
1375    //      // console.log(destinations+" - "+prop_value);
1376    //      console.log(jQuery.inArray( prop_value, destinations ));
1377    //      return (jQuery.inArray( prop_value, destinations ) >= 0) ;
1378    //  } })
1379    // });
1380
1381
1382    // jQuery('.dropdown.features .dropdown-content input').change(function() {
1383    //  var features = [];
1384    //  jQuery('.dropdown.features .dropdown-content input:checked').each(function() {
1385    //      features.push(jQuery(this).val());
1386    //  });
1387    //  console.log(features);
1388    //  jQuery('.property_list').isotope({ filter: function() {
1389    //      var value_array = jQuery(this).data('features');
1390    //      var prop_value= value_array.split(',');
1391    //      console.log(arrayContainsArray( prop_value, features ));
1392    //      return (arrayContainsArray( prop_value, features )) ;
1393    //  } })
1394    // });
1395
1396
1397
1398    // jQuery('.dropdown.sleeps .dropdown-content input').change(function() {
1399    //  var sleeps = [];
1400    //  jQuery('.dropdown.sleeps .dropdown-content input:checked').each(function() {
1401    //      sleeps.push(parseInt(jQuery(this).val()));
1402    //  });
1403    //  console.log(sleeps);
1404    //  jQuery('.property_list').isotope({ filter: function() {
1405    //      var prop_value= jQuery(this).data('sleeps');
1406    //      // console.log(sleeps+" - "+prop_value);
1407    //      console.log(parseInt(prop_value));
1408
1409    //      // console.log(jQuery.inArray( prop_value, sleeps ));
1410    //      return (jQuery.inArray( prop_value, sleeps ) >= 0) ;
1411    //  } })
1412    // });
1413
1414    jQuery('.dropdown .dropdown-content input').change(function() {
1415
1416        if ( jQuery(this).parent().parent().parent().parent().hasClass('sleeps') ){
1417            jQuery(this).parent().parent().find('input').not(this).prop('checked', false);
1418        }
1419
1420        filter_property();
1421    });
1422    jQuery('.availability input').change(function() {
1423        var checkin_date = jQuery('.availability input[name="checkin_date"]').val();
1424        var checkout_date = jQuery('.availability input[name="checkout_date"]').val();
1425
1426        if (checkin_date != '' && checkout_date != ''){
1427            filter_property();
1428        }
1429    });
1430    jQuery('.dropdown .dropdown-content select').change(function() {
1431        filter_property();
1432    });
1433
1434}
1435
1436
1437
1438function filter_property(){
1439
1440    jQuery('#property_loading').addClass('active'); // Show loading
1441
1442    //Get destination list from filter options
1443    var destinations = [];
1444    jQuery('.dropdown.destination .dropdown-content input:checked').each(function() {
1445        destinations.push(jQuery(this).val());
1446    });
1447
1448    //Get feature selection from filter options
1449    var features = [];
1450    jQuery('.dropdown.features .dropdown-content input:checked').each(function() {
1451        features.push(jQuery(this).val());
1452    });
1453
1454    //Get sleeps count from filter options
1455    var sleeps_min = 0; var sleeps_max = 0;
1456    jQuery('.dropdown.sleeps .dropdown-content select#sleep_min_input').each(function() {
1457        sleeps_min = parseInt(jQuery(this).val());
1458    });
1459
1460    // jQuery('.dropdown.sleeps .dropdown-content input:checked').each(function() {
1461    //  sleeps_min = jQuery(this).val();
1462    // });
1463    jQuery('.dropdown.sleeps .dropdown-content select#sleep_max_input').each(function() {
1464        sleeps_max = parseInt(jQuery(this).val());
1465    });
1466
1467    // jQuery('.dropdown.sleeps .dropdown-content input').each(function() {
1468    //  sleeps_max =  Math.max(sleeps_max, parseFloat(this.value));
1469    // });
1470
1471
1472
1473    // Deeplink filters
1474    var filter_hash = "?filters+";
1475
1476    if(destinations.length){
1477        var encdDstnts = [];
1478        jQuery.each( destinations, function( key, value ) {
1479          encdDstnts.push(encodeURIComponent(value));
1480        });
1481        filter_hash += "locations="+encdDstnts.join(",")+"&";
1482    }
1483    if(features.length){
1484        var encdFtrs = [];
1485        jQuery.each( features, function( key, value ) {
1486          encdFtrs.push(encodeURIComponent(value));
1487        });
1488        filter_hash += "features="+encdFtrs.join(",")+"&";
1489    }
1490    // if((sleeps_min > 0) || (sleeps_max < 12)){
1491    //  filter_hash += "sleeps="+sleeps_min+"-"+sleeps_max+"|";
1492    // }
1493    if(sleeps_min > 0){
1494        filter_hash += "sleeps="+sleeps_min+"-"+sleeps_max+"&";
1495    }
1496
1497
1498    //Get property avaialbe dates
1499    var checkin_date = jQuery('.availability input[name="checkin_date"]').val();
1500    var checkout_date = jQuery('.availability input[name="checkout_date"]').val();
1501
1502    var date_format = 'DD/MM/YYYY';
1503    /*if ( jQuery(window).width() < 768 ) {
1504        date_format = 'YYYY-MM-DD';
1505    }*/
1506
1507    if (checkin_date != '' && checkout_date != ''){
1508        checkin_date_mom = moment(checkin_date, "YYYY-MM-DD").format(date_format);
1509        checkout_date_mom = moment(checkout_date, "YYYY-MM-DD").format(date_format);
1510        /*if ( jQuery(window).width() < 768 ) {
1511            checkin_date_mom = moment(checkin_date, "DD/MM/YYYY").format(date_format);
1512            checkout_date_mom = moment(checkout_date, "DD/MM/YYYY").format(date_format);
1513        }*/
1514        var now_mom = moment().format(date_format);
1515
1516        var d = new Date();
1517        $curr_date =  d.getDate() + "/" + ( ( (d.getMonth()+1) < 10 ? '0' : '') + (d.getMonth()+1) ) + "/" + d.getFullYear();
1518        /*if ( jQuery(window).width() < 768 ) {
1519            $curr_date =   d.getFullYear()+"-"+( ( (d.getMonth()+1) < 10 ? '0' : '') + (d.getMonth()+1) )+"-"+d.getDate();
1520        }*/
1521
1522        console.log( moment(checkin_date, date_format).isSameOrAfter(moment($curr_date, date_format))
1523            && moment(checkout_date, date_format).isSameOrAfter(moment(checkin_date, date_format)) );
1524
1525        if( moment(checkin_date, date_format).isSameOrAfter(moment($curr_date, date_format))
1526            && moment(checkout_date, date_format).isSameOrAfter(moment(checkin_date, date_format)) ){
1527
1528            filter_hash += "checkin="+checkin_date+"&";
1529            filter_hash += "checkout="+checkout_date+"&";
1530
1531            /*if ( jQuery(window).width() < 768 ) {
1532                checkin_date = moment(checkin_date).format("DD/MM/YYYY");
1533                checkout_date = moment(checkout_date).format("DD/MM/YYYY")
1534            }*/
1535
1536            jQuery.ajax({
1537              url: siteUrl +"/wp-admin/admin-ajax.php",
1538              type: "post", //send it through get method
1539              data: {
1540                action : 'getRMSPropertiesByDate',
1541                arrival: checkin_date,
1542                departure: checkout_date
1543              },
1544              success: function(response) {
1545                var result = jQuery.parseJSON(response);
1546                // $prop_ids = array_map('intval', explode(',', $result[1]));
1547              //    console.log(result);
1548                isotope_filter(destinations, features, sleeps_min, sleeps_max, result[1]);
1549                updateFilterCount(jQuery('.property_list').isotope());
1550
1551                setTimeout(function() {
1552                    jQuery('#property_loading').removeClass('active');   //Hide loading
1553                    map_update();
1554                }, 1000);
1555              },
1556              error: function(xhr) {
1557               console.log(xhr);
1558              }
1559            });
1560        }
1561
1562    } else if (destinations.length != 0 || features.length != 0 || sleeps_min <= sleeps_max) {
1563        isotope_filter(destinations, features, sleeps_min, sleeps_max);
1564        updateFilterCount(jQuery('.property_list').isotope());
1565
1566        setTimeout(function() {
1567            jQuery('#property_loading').removeClass('active');   //Hide loading
1568            map_update();
1569        }, 1000);
1570    } else {
1571        jQuery('.property_list').isotope({ filter: "*" });
1572        updateFilterCount(jQuery('.property_list').isotope());
1573
1574        setTimeout(function() {
1575            jQuery('#property_loading').removeClass('active');   //Hide loading
1576            map_update();
1577        }, 1000);
1578    }
1579    var curUrl = window.location.href;
1580    var partlUrl = curUrl.replace(siteUrl+'/holiday-homes/?filters+', "");
1581    var hash_data = partlUrl.split('&');
1582    var url_fltr_hash = '?filters+';
1583    var urlIndx = searchStringInArray('locations',hash_data);
1584    if(urlIndx!=-1) {
1585        url_fltr_hash+=hash_data[urlIndx]+'&';
1586    }
1587    urlIndx = searchStringInArray('features',hash_data);
1588    if(urlIndx!=-1) {
1589        url_fltr_hash+=hash_data[urlIndx]+'&';
1590    }
1591    urlIndx = searchStringInArray('sleeps',hash_data);
1592    if(urlIndx!=-1) {
1593        url_fltr_hash+=hash_data[urlIndx]+'&';
1594    }
1595    urlIndx = searchStringInArray('checkin',hash_data);
1596    if(urlIndx!=-1) {
1597        url_fltr_hash+=hash_data[urlIndx]+'&';
1598    }
1599    urlIndx = searchStringInArray('checkout',hash_data);
1600    if(urlIndx!=-1) {
1601        url_fltr_hash+=hash_data[urlIndx]+'&';
1602    }
1603
1604    if (filter_hash != url_fltr_hash){
1605        filter_hash = filter_hash.slice(0,-1)
1606        //document.location = window.location.href.split('#')[0]+filter_hash;
1607        window.history.pushState("", "",siteUrl+'/holiday-homes/'+filter_hash);
1608    }
1609
1610
1611}
1612
1613function searchStringInArray (str, strArray) {
1614    for (var j=0; j<strArray.length; j++) {
1615        if (strArray[j].match(str)) return j;
1616    }
1617    return -1;
1618}
1619function isotope_filter(destinations = '', features = '', sleeps_min = '', sleeps_max = '', prop_ids = ''){
1620
1621    $search_details = " ";
1622    if(destinations != '' && destinations.length != 0){
1623        if(destinations.length == 1){
1624            var dest_list = destinations
1625        } else if(destinations.length == 2){
1626            var dest_list = destinations[0]+" and "+destinations[1];
1627        } else {
1628            var dest_list = destinations.join(', ').replace(/,(?!.*,)/gmi, ' and');
1629        }
1630        $search_details += dest_list;
1631    }
1632    if(features != '' && features.length != 0){
1633        $search_details += ", Has "+features;
1634    }
1635    if(sleeps_min <= sleeps_max && sleeps_min > 0){
1636        $search_details += ", Sleeps "+sleeps_min+" - "+sleeps_max;
1637    }
1638    if(prop_ids != '' && prop_ids.length != 0){
1639        var checkin_date = jQuery('.availability input[name="checkin_date"]').val();
1640        var checkout_date = jQuery('.availability input[name="checkout_date"]').val();
1641        // checkin_date_mo = moment(checkin_date, "DD/MM/YYYY").format("YYYY-MM-DD");
1642        // checkout_date_mo = moment(checkout_date, "DD/MM/YYYY").format("YYYY-MM-DD");
1643        $search_details += ", Available within "+checkin_date+" and "+checkout_date;
1644    }
1645
1646    var clearButton = '<button class="dropbtn" id="clearfilter" onclick="clear_filter();">X Clear filter</button>';
1647    jQuery('.property_filter #filter_details').html( $search_details+" "+clearButton);
1648
1649
1650
1651    jQuery('.property_list').isotope({ filter: function() {
1652        var value_array= jQuery(this).data('destination');
1653        var prop_value = value_array.split(',');
1654        has_destination = arrayContainsAnyArray( prop_value, destinations );
1655
1656        var value_array = jQuery(this).data('features');
1657        var prop_value= value_array.split(',');
1658        has_features = arrayContainsArray( prop_value, features ) ;
1659
1660
1661        var prop_value= jQuery(this).data('sleeps');
1662        has_sleeps = (prop_value >= sleeps_min && prop_value <= sleeps_max) ;
1663
1664
1665        var prop_id= jQuery(this).data('propid');
1666        has_propid = jQuery.inArray( prop_id, prop_ids ) >= 0 ;
1667
1668
1669        if (destinations.length != 0 || features.length != 0 || sleeps_min <= sleeps_max || prop_ids.length != 0){
1670            var check = true;
1671        } else {
1672            var check = false;
1673        }
1674
1675        if(destinations.length != 0){
1676            check = check && has_destination;
1677        }
1678
1679        if(features.length != 0){
1680            check = check && has_features;
1681        }
1682
1683
1684        if(sleeps_min <= sleeps_max && sleeps_min > 0){
1685            check = check && has_sleeps;
1686        }
1687
1688        if(prop_ids.length != 0){
1689            check = check && has_propid;
1690        }
1691
1692        return check;
1693
1694        // if(destinations.length == 0 && features.length == 0 && sleeps.length == 0){
1695        //  return true;
1696        // } else if(destinations.length != 0 && features.length == 0 && sleeps.length == 0){
1697        //  return (has_destination) ;
1698        // } else if(destinations.length == 0 && features.length != 0 && sleeps.length == 0){
1699        //  return (has_features) ;
1700        // } else if(destinations.length == 0 && features.length == 0 && sleeps.length != 0){
1701        //  return (has_sleeps) ;
1702        // } else if(destinations.length != 0 && features.length != 0 && sleeps.length == 0){
1703        //  return (has_destination && has_features) ;
1704        // } else if(destinations.length != 0 && features.length == 0 && sleeps.length != 0){
1705        //  return (has_destination && has_sleeps) ;
1706        // } else if(destinations.length == 0 && features.length != 0 && sleeps.length != 0){
1707        //  return (has_features && has_sleeps) ;
1708        // } if(destinations.length != 0 && features.length != 0 && sleeps.length != 0){
1709        //  return (has_destination && has_features && has_sleeps) ;
1710        // } else {
1711        //  return true;
1712        // }
1713
1714
1715    } });
1716
1717
1718    // map_update();
1719    // properties_map = new google.maps.Map(document.getElementById("googleMap"), myMap());
1720    // google.maps.event.trigger(properties_map,'resize');
1721}
1722
1723
1724function updateFilterCount(isotope) {
1725    var iso = isotope.data('isotope');
1726    var filter_text = jQuery('#property_filter_info #filter_details').html();
1727    var filter_amount = '<span class="prop_count">Viewing '+ iso.filteredItems.length + ' Properties</span>';
1728
1729    jQuery('.property_filter #filter_details').html(filter_amount+" "+filter_text);
1730
1731//  new WOW().init();
1732    setTimeout(function() {
1733     new WOW().init();
1734    }, 1000);
1735
1736}
1737
1738
1739
1740// Check if array elements are included in another array
1741function arrayContainsArray (superset, subset) {
1742  if (0 === subset.length) {
1743    return false;
1744  }
1745  for(var i = 0; i < subset.length; i++) {
1746    if(superset.indexOf(subset[i]) === -1) return false;
1747  }
1748  return true;
1749}
1750
1751
1752function arrayContainsAnyArray (superset, subset) {
1753  if (0 === subset.length) {
1754    return false;
1755  }
1756  for(var i = 0; i < subset.length; i++) {
1757     if(!(superset.indexOf(subset[i]) === -1) ) return true;
1758  }
1759  return false;
1760}
1761
1762
1763function clear_filter(){
1764    jQuery('.dropdown input:checkbox').attr('checked',false);
1765    jQuery('.availability input').val('');
1766    jQuery('.property_filter #filter_details').html( 'Search filter cleared.' );
1767    jQuery('.property_list').isotope({ filter: "*" });
1768    jQuery("#sleep_min_input").val(jQuery("#sleep_min_input option:first").val());
1769    jQuery("#sleep_max_input").val(jQuery("#sleep_max_input option:last").val());
1770    jQuery('[data-toggle="datepicker"]').each(function(){
1771        jQuery(this).datepicker("setDate",null); 
1772        jQuery(this).datepicker("option", "maxDate", null);
1773        jQuery(this).datepicker("option", "minDate", 0);
1774    });
1775    removeHash();
1776    map_update();
1777}
1778
1779
1780
1781function removeHash() {
1782    var scrollV, scrollH, loc = window.location;
1783    if ("pushState" in history)
1784        history.pushState("", document.title, loc.pathname + loc.search);
1785    else {
1786        // Prevent scrolling by storing the page's current scroll offset
1787        scrollV = document.body.scrollTop;
1788        scrollH = document.body.scrollLeft;
1789
1790        loc.hash = "";
1791
1792        // Restore the scroll offset, should be flicker free
1793        document.body.scrollTop = scrollV;
1794        document.body.scrollLeft = scrollH;
1795    }
1796}
1797
1798
1799
1800function sort_properties_by(){
1801    // current_sort = "";
1802    // sort_order = 'asc';
1803    // jQuery('.sort_list .dropdown-content ul li').click(function() {
1804    //  var sort = jQuery(this).data('sort');
1805
1806    //  if(sort == 'default'){
1807    //      jQuery('.property_list').isotope({ sortBy : 'original-order' });
1808    //  } else {
1809
1810    //      // if(current_sort == sort && jQuery(this).data('from') == 'high'){
1811    //      //  var sort_ascending = false;
1812    //      //  sort_order = 'dsc';
1813    //      // } else {
1814    //      //  var sort_ascending = true;
1815    //      //  sort_order = 'asc'
1816    //      // }
1817    //      if (sort == "price" && jQuery(this).data('from') == 'high'){
1818    //          console.log('work high');
1819    //          jQuery('.property_list').isotope({
1820    //            sortBy: 'price',
1821    //            sortAscending: false
1822    //          });
1823    //      } else if (sort == "price" && jQuery(this).data('from') == 'low'){
1824    //          console.log('work low');
1825    //          jQuery('.property_list').isotope({
1826    //            sortBy: 'price',
1827    //            sortAscending: true
1828    //          });
1829    //      }
1830    //      // jQuery('.property_list').isotope({ sortBy: sort, sortAscending: sort_ascending });
1831
1832    //  }
1833
1834    //  current_sort = sort;
1835
1836    //  jQuery('.sort_list .dropdown button.dropbtn').text(jQuery(this).text());
1837    // });
1838
1839
1840    jQuery('.sort_list .dropdown-content ul li#filter_default').click(function() {
1841  //    jQuery('.property_list').isotope({
1842        //   sortBy: 'default',
1843        //   sortAscending: true
1844        // });
1845        var textVal =  jQuery(this).text();
1846        jQuery('.property_filter .sort_list.sort_list #sort_details .dropbtn').html(textVal);
1847
1848        jQuery('.property_list article').each(function() {
1849            jQuery(this).css('order', jQuery(this).attr('data-defaultorder'));
1850            // jQuery(this).parent().css('flex-direction', 'row');
1851          }
1852        );
1853        new WOW().init();
1854    });
1855
1856    jQuery('.sort_list .dropdown-content ul li#filter_price_l2h').click(function() {
1857  //    jQuery('.property_list').isotope({
1858        //   sortBy: 'price',
1859        //   sortAscending: true
1860        // });
1861        var textVal =  jQuery(this).text();
1862        jQuery('.property_filter .sort_list.sort_list #sort_details .dropbtn').html(textVal);
1863        jQuery('.property_list article').each(function() {
1864            jQuery(this).css('order', Math.abs(jQuery(this).attr('data-price')));
1865            // jQuery(this).parent().css('flex-direction', 'row');
1866          }
1867        );
1868        new WOW().init();
1869    });
1870
1871    jQuery('.sort_list .dropdown-content ul li#filter_price_h2l').click(function() {
1872  //    jQuery('.property_list').isotope({
1873        //   sortBy: 'price',
1874        //   sortAscending: false
1875        // });
1876        var textVal =  jQuery(this).text();
1877        jQuery('.property_filter .sort_list.sort_list #sort_details .dropbtn').html(textVal);
1878        jQuery('.property_list article').each(function() {
1879            jQuery(this).css('order', -Math.abs(jQuery(this).attr('data-price')));
1880          }
1881        );
1882        new WOW().init();
1883    });
1884
1885}
1886
1887
1888function openShowcaseGallery(){
1889    jQuery('.property_overview .overview_gallery .showcase .gallery dl.gallery-item:first-child a img').click();
1890}
1891
1892function openImageGallery(){
1893     //console.log('works');
1894     jQuery('.property_overview .overview_gallery .fullgallery a').each(function() {
1895        var imgSrc = jQuery(this).find('img').attr('src');
1896        if (imgSrc) {
1897            var imgElmnt = jQuery(this).find('img');
1898            jQuery(imgElmnt).click();
1899            return false; // breaks out of .each()
1900        }
1901     });
1902    //jQuery('.property_overview .overview_gallery .fullgallery a:first-child img').click();
1903    //jQuery('.property_overview .overview_gallery #'+ gallery_id +'dl.gallery-item:first-child a img').click();
1904}
1905
1906function myMap() {
1907
1908    if (jQuery('body').hasClass('post-type-archive-property')) {
1909
1910        console.log('location map init');
1911
1912        var locations = [];
1913        google.maps.event.addDomListener(window, 'load', function() {
1914            var map;
1915            var bounds = new google.maps.LatLngBounds();
1916            var mapOptions = {
1917                mapTypeId: "roadmap",
1918                maxZoom: 18,
1919                mapTypeControl: false,
1920                styles: [
1921                    {
1922                        "featureType": "poi",
1923                        "stylers": [
1924                            { "visibility": "off" }
1925                        ]
1926                    }
1927                ],
1928                center: new google.maps.LatLng(25.2744, 133.7751), // somewhere in the uk BEWARE center is required
1929            };
1930
1931            // Display a map on the page
1932            map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);
1933            map.markers = [];
1934            // map.setTilt(45);
1935
1936            // Multiple Markers
1937            jQuery('.property_list .item').each(function(){
1938                var loc = jQuery(this).attr('data-map');
1939                if(loc!='' && loc!=undefined){
1940                    // locations.push(JSON.parse(loc));
1941
1942                    var latlng = new google.maps.LatLng( JSON.parse(loc)[1], JSON.parse(loc)[2] );
1943
1944                    var icon = {
1945                        url: templateUrl+'/img/[email protected]', // url
1946                        scaledSize: new google.maps.Size(25, 37), // scaled size
1947                        origin: new google.maps.Point(0,0), // origin
1948                        anchor: new google.maps.Point(12, 37) // anchor
1949                    };
1950
1951                    // create marker
1952                    var marker = new google.maps.Marker({
1953                        position    : latlng,
1954                        map         : map,
1955                        icon        : icon
1956                    });
1957
1958                    var title = jQuery(this).find('.property_details h3').text();
1959                    var location = jQuery(this).attr('data-destination');
1960                    var img = jQuery(this).find('.img_wrapper').html();
1961                    var box_id = jQuery(this).attr('data-propid');
1962                    var url = jQuery(this).attr('data-url');
1963
1964                    var sleeps = jQuery(this).attr('data-sleeps');
1965                    var beds = jQuery(this).attr('data-beds');
1966                    var baths = jQuery(this).attr('data-baths');
1967
1968                    var contentString = '<div id="infobox_'+box_id+'" class="infobox">'+
1969                        '<div class="prop_img">'+img+'</div>'+
1970                        '<div class="prop_details">'+
1971                            '<div class="info_title"><a href="'+url+'">'+title+'</a></div>'+
1972                            '<div class="info_location">'+location+'</div>'+
1973                            '<div class="info_slpeeps">'+sleeps+'</div>'+
1974                            '<div class="info_beds">'+beds+'</div>'+
1975                            '<div class="info_baths">'+baths+'</div>'+
1976                        '</div></div>';
1977
1978                    var infowindow = new google.maps.InfoWindow({
1979                      content: contentString
1980                    });
1981
1982                    marker.addListener('click', function() {
1983                      infowindow.open(map, marker);
1984                    });
1985
1986                    bounds.extend( latlng );
1987
1988                    // add to array
1989                    map.markers.push( marker );
1990                }
1991            });
1992
1993            // markers = locations;
1994            map.fitBounds(bounds);
1995
1996            var markerCluster = new MarkerClusterer(map, map.markers, {
1997                imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m',
1998                maxZoom: 15,
1999            });
2000
2001        });
2002    }
2003
2004}
2005
2006
2007
2008function destinationMap() {
2009
2010    if (jQuery('body').hasClass('page-template-page-destination_guide_detail')) {
2011
2012        console.log('destination map init');
2013
2014        var locations = [];
2015        google.maps.event.addDomListener(window, 'load', function() {
2016            var map;
2017            var bounds = new google.maps.LatLngBounds();
2018            var mapOptions = {
2019                mapTypeId: "roadmap",
2020                maxZoom: 18,
2021                mapTypeControl: false,
2022                styles: [
2023                    {
2024                        "featureType": "poi",
2025                        "stylers": [
2026                            { "visibility": "off" }
2027                        ]
2028                    }
2029                ],
2030                center: new google.maps.LatLng(25.2744, 133.7751), // somewhere in the uk BEWARE center is required
2031            };
2032
2033            // Display a map on the page
2034            map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);
2035            map.markers = [];
2036            // map.setTilt(45);
2037
2038            // Multiple Markers
2039            jQuery('.destination_guide_map .property_map_list .property').each(function(){
2040                var loc = jQuery(this).attr('data-map');
2041                if(loc!='' && loc!=undefined){
2042                    // locations.push(JSON.parse(loc));
2043
2044                    var latlng = new google.maps.LatLng( JSON.parse(loc)[1], JSON.parse(loc)[2] );
2045
2046                    var icon = {
2047                        url: templateUrl+'/img/[email protected]', // url
2048                        scaledSize: new google.maps.Size(25, 37), // scaled size
2049                        origin: new google.maps.Point(0,0), // origin
2050                        anchor: new google.maps.Point(12, 37) // anchor
2051                    };
2052
2053                    // create marker
2054                    var marker = new google.maps.Marker({
2055                        position    : latlng,
2056                        map         : map,
2057                        icon        : icon
2058                    });
2059
2060                    var title = jQuery(this).attr('data-title');
2061                    var location = jQuery(this).attr('data-destination');
2062                    var img = jQuery(this).find('.img_wrapper').html();
2063                    var box_id = jQuery(this).attr('data-propid');
2064                    var url = jQuery(this).attr('data-url');
2065
2066                    var sleeps = jQuery(this).attr('data-sleeps');
2067                    var beds = jQuery(this).attr('data-beds');
2068                    var baths = jQuery(this).attr('data-baths');
2069
2070                    var contentString = '<div id="infobox_'+box_id+'" class="infobox">'+
2071                        '<div class="prop_img">'+img+'</div>'+
2072                        '<div class="prop_details">'+
2073                            '<div class="info_title"><a href="'+url+'">'+title+'</a></div>'+
2074                            '<div class="info_location">'+location+'</div>'+
2075                            '<div class="info_slpeeps">'+sleeps+'</div>'+
2076                            '<div class="info_beds">'+beds+'</div>'+
2077                            '<div class="info_baths">'+baths+'</div>'+
2078                        '</div></div>';
2079
2080                    var infowindow = new google.maps.InfoWindow({
2081                      content: contentString
2082                    });
2083
2084               //      marker.addListener('click', function() {
2085               //       infowindow.close();
2086                        // infowindow.open(map, marker);
2087               //      });
2088
2089                    marker.info = new google.maps.InfoWindow({
2090                        content: contentString
2091                    });
2092
2093                    google.maps.event.addListener(marker, 'click', function() {
2094                        this.info.open(map,this );
2095                    });
2096
2097                    bounds.extend( latlng );
2098
2099                    // add to array
2100                    map.markers.push( marker );
2101                }
2102            });
2103
2104            // markers = locations;
2105    //         map.fitBounds(bounds);
2106            map.setCenter(bounds.getCenter());
2107            map.setZoom(6);
2108
2109            var markerCluster = new MarkerClusterer(map, map.markers, {
2110                imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m',
2111                maxZoom: 15,
2112            });
2113
2114        });
2115    }
2116
2117}
2118
2119
2120
2121
2122function myMap_backup() {
2123    var locations = [];
2124    google.maps.event.addDomListener(window, 'load', function() {
2125        var locations = [];
2126        jQuery('.property_list .item').each(function(){
2127        var loc = jQuery(this).attr('data-map');
2128            if(loc!=''){
2129                 locations.push([loc,loc]);
2130            }
2131        });
2132       //  console.log(locations);
2133
2134        var mapProp= {
2135            zoom: 11,
2136            // center: new google.maps.LatLng(7.819296, 80.551962),
2137            mapTypeId: google.maps.MapTypeId.ROADMAP,
2138        };
2139        var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
2140
2141        var infowindow = new google.maps.InfoWindow();
2142        var geocoder = new google.maps.Geocoder();
2143
2144        var marker, i;
2145
2146        for (i = 0; i < locations.length; i++) {
2147            geocodeAddress(locations[i],geocoder);
2148        }
2149
2150        function geocodeAddress(location) {
2151            geocoder.geocode( { 'address': location[1]}, function(results, status) {
2152                //alert(status);
2153                if (status == google.maps.GeocoderStatus.OK) {
2154                    map.setCenter(results[0].geometry.location);
2155                    createMarker(results[0].geometry.location,location[0]+"<br>"+location[1]);
2156                }
2157                else
2158                {
2159                    alert("some problem in geocode" + status);
2160                }
2161            });
2162        }
2163
2164        function createMarker(latlng,html){
2165            var marker = new google.maps.Marker({
2166                position: latlng,
2167                map: map
2168            });
2169            marker.hideInfoWindow();
2170
2171            google.maps.event.addListener(marker, 'mouseover', function() {
2172                infowindow.open(map, marker);
2173            });
2174
2175            google.maps.event.addListener(marker, 'mouseout', function() {
2176                infowindow.close();
2177            });
2178        }
2179    });
2180}
2181
2182
2183// function map_update(){
2184
2185//     // jQuery.each(iso.filteredItems, fucntion(){
2186//     // var loc = jQuery(this).attr('data-map');
2187//     //     if(loc!=''){
2188//     //          locations.push([loc,loc]);
2189//     //     }
2190//     // });
2191//     // console.log(locations);
2192
2193//     var map;
2194//     var bounds = new google.maps.LatLngBounds();
2195//     var mapOptions = {
2196//         mapTypeId: "roadmap",
2197//         center: new google.maps.LatLng(52.791331, -1.918728), // somewhere in the uk BEWARE center is required
2198//     };
2199
2200//     // Display a map on the page
2201//     map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);
2202//     map.setTilt(45);
2203
2204//     // Multiple Markers
2205//     var iso = jQuery('.property_list').isotope().data('isotope');
2206
2207//  var locations = [];
2208//  for (var item in iso.filteredItems) {
2209//      var loc = jQuery(iso.filteredItems[item].element).attr('data-map');
2210//      if(loc!='' && loc!=undefined){
2211//          locations.push(JSON.parse(loc));
2212//         }
2213//  }
2214//     markers = locations;
2215//     console.log(markers);
2216
2217
2218//     // Info Window Content
2219//     var infoWindowContent = [];
2220
2221//     // Display multiple markers on a map
2222//     var infoWindow = new google.maps.InfoWindow();
2223//     var marker, i;
2224
2225//  var icon = {
2226//      url: templateUrl+'/img/[email protected]', // url
2227//      scaledSize: new google.maps.Size(50, 50), // scaled size
2228//      origin: new google.maps.Point(0,0), // origin
2229//      anchor: new google.maps.Point(0, 0) // anchor
2230//  };
2231
2232//     // Loop through our array of markers & place each one on the map
2233//     for (i = 0; i < markers.length; i++) {
2234//         var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
2235//         bounds.extend(position);
2236//         marker = new google.maps.Marker({
2237//             position: position,
2238//             map: map,
2239//             title: markers[i][0],
2240//             icon: icon,
2241//         });
2242
2243//         // Allow each marker to have an info window
2244//         google.maps.event.addListener(marker, 'click', (function (marker, i) {
2245//             return function () {
2246//                 infoWindow.setContent(infoWindowContent[i][0]);
2247//                 infoWindow.open(map, marker);
2248//             }
2249//         })(marker, i));
2250
2251//         // Automatically center the map fitting all markers on the screen
2252//         map.fitBounds(bounds);
2253//     }
2254// }
2255
2256
2257
2258
2259function map_update(){
2260
2261    google.maps.event.clearInstanceListeners(window);
2262    google.maps.event.clearInstanceListeners(document);
2263    google.maps.event.clearInstanceListeners(document.getElementById("googleMap"));
2264
2265    if (is_map_open){
2266
2267        console.log('update map');
2268
2269        var locations = [];
2270        // google.maps.event.addDomListener(window, 'load', function() {
2271        var map;
2272        var bounds = new google.maps.LatLngBounds();
2273        var mapOptions = {
2274            mapTypeId: "roadmap",
2275            maxZoom: 18,
2276            mapTypeControl: false,
2277            styles: [
2278                {
2279                    "featureType": "poi",
2280                    "stylers": [
2281                        { "visibility": "off" }
2282                    ]
2283                }
2284            ],
2285            center: new google.maps.LatLng(52.791331, -1.918728), // somewhere in the uk BEWARE center is required
2286        };
2287
2288        // Display a map on the page
2289        map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);
2290        map.markers = [];
2291        // map.setTilt(45);
2292
2293        var iso = jQuery('.property_list').isotope('getFilteredItemElements');
2294
2295        // Multiple Markers
2296        jQuery(iso).each(function(){
2297            var loc = jQuery(this).attr('data-map');
2298            if(loc!='' && loc!=undefined){
2299                // locations.push(JSON.parse(loc));
2300
2301                var latlng = new google.maps.LatLng( JSON.parse(loc)[1], JSON.parse(loc)[2] );
2302
2303                var icon = {
2304                    url: templateUrl+'/img/[email protected]', // url
2305                    scaledSize: new google.maps.Size(25, 37), // scaled size
2306                    origin: new google.maps.Point(0,0), // origin
2307                    anchor: new google.maps.Point(12, 37) // anchor
2308                };
2309
2310                // create marker
2311                var marker = new google.maps.Marker({
2312                    position    : latlng,
2313                    map         : map,
2314                    icon        : icon
2315                });
2316
2317                var title = jQuery(this).find('.property_details h3').text();
2318                var location = jQuery(this).attr('data-destination');
2319                var img = jQuery(this).find('.img_wrapper .slick-track img:nth-child(2)').attr('src');
2320                var box_id = jQuery(this).attr('data-propid');
2321                var url = jQuery(this).attr('data-url');
2322
2323                var sleeps = jQuery(this).attr('data-sleeps');
2324                var beds = jQuery(this).attr('data-beds');
2325                var baths = jQuery(this).attr('data-baths');
2326
2327                var contentString = '<div id="infobox_'+box_id+'" class="infobox">'+
2328                    '<div class="prop_img"><img src="'+img+'" /></div>'+
2329                    '<div class="prop_details">'+
2330                    '<div class="info_title"><a href="'+url+'">'+title+'</a></div>'+
2331                    '<div class="info_location">'+location+'</div>'+
2332                    '<div class="info_slpeeps">'+sleeps+'</div>'+
2333                    '<div class="info_beds">'+beds+'</div>'+
2334                    '<div class="info_baths">'+baths+'</div>'+
2335                    '</div></div>';
2336
2337                var infowindow = new google.maps.InfoWindow({
2338                    content: contentString
2339                });
2340
2341                marker.addListener('click', function() {
2342                    infowindow.open(map, marker);
2343                });
2344
2345                bounds.extend( latlng );
2346
2347                // add to array
2348                map.markers.push( marker );
2349            }
2350        });
2351
2352        // markers = locations;
2353        map.fitBounds(bounds);
2354
2355        const markerCluster = new markerClusterer.MarkerClusterer({ markers:map.markers, map:map });
2356    }
2357    // });
2358
2359}
2360
2361
2362
2363
2364
2365
2366function show_location_map(){
2367
2368    if(jQuery('body').hasClass('single-property')){
2369
2370        console.log('location map init');
2371
2372//         google.maps.event.addDomListener(window, 'load', function() {
2373            var locations = [];
2374            locations = jQuery('.location_map').data('map');
2375            var map;
2376            var bounds = new google.maps.LatLngBounds();
2377            var mapOptions = {
2378                mapTypeId: "roadmap",
2379                maxZoom: 15,
2380                mapTypeControl: false,
2381                styles: [
2382                    {
2383                        "featureType": "poi",
2384                        "stylers": [
2385                            { "visibility": "off" }
2386                        ]
2387                    }
2388                ],
2389                center: new google.maps.LatLng(locations[1], locations[2]), // somewhere in the uk BEWARE center is required
2390            };
2391
2392
2393            // Display a map on the page
2394            map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);
2395            map.markers = [];
2396            // map.setTilt(45);
2397
2398            var latlng = new google.maps.LatLng( locations[1], locations[2] );
2399
2400            var icon = {
2401                url: templateUrl+'/img/[email protected]', // url
2402                scaledSize: new google.maps.Size(25, 37), // scaled size
2403                origin: new google.maps.Point(0,0), // origin
2404                anchor: new google.maps.Point(12, 37) // anchor
2405            };
2406
2407            // create marker
2408            var marker = new google.maps.Marker({
2409                position    : latlng,
2410                map         : map,
2411                icon        : icon
2412            });
2413
2414            var title = locations[0];
2415            var location = jQuery('.location_map').data('destination');
2416            var img = jQuery('.location_map').data('image');
2417            var box_id = jQuery('.location_map').data('propid');
2418            var contentString = '<div id="infobox_'+box_id+'" class="infobox">'+
2419                '<div class="info_title">'+title+'</div>'+img+'</div>';
2420
2421            var title = locations[0];
2422            var img = '<img src="'+jQuery('.location_map').data('image')+'">';
2423            var box_id = jQuery('.location_map').data('propid');
2424
2425            var sleeps = jQuery('.location_map').data('sleeps');
2426            var beds = jQuery('.location_map').data('beds');
2427            var baths = jQuery('.location_map').data('baths');
2428
2429            var contentString = '<div id="infobox_'+box_id+'" class="infobox">'+
2430                '<div class="prop_img">'+img+'</div>'+
2431                '<div class="prop_details">'+
2432                    '<div class="info_title">'+title+'</div>'+
2433                    '<div class="info_location">'+location+'</div>'+
2434                    '<div class="info_slpeeps">'+sleeps+'</div>'+
2435                    '<div class="info_beds">'+beds+'</div>'+
2436                    '<div class="info_baths">'+baths+'</div>'+
2437                '</div></div>';
2438
2439            var infowindow = new google.maps.InfoWindow({
2440              content: contentString
2441            });
2442
2443            marker.addListener('click', function() {
2444              infowindow.open(map, marker);
2445            });
2446
2447            bounds.extend( latlng );
2448
2449            // add to array
2450            map.markers.push( marker );
2451
2452            // markers = locations;
2453            //map.fitBounds(bounds);
2454            map.setCenter(bounds.getCenter());
2455            map.setZoom(11);
2456
2457//      });
2458    }
2459
2460}
2461
2462
2463
2464function accordion_init(){
2465    if ( jQuery('.accordion-list').length && jQuery('.accordion-list .accordion-item').length ){
2466        jQuery('.accordion-list .accordion-item').click(function(){
2467            jQuery(this).toggleClass('active');
2468        });
2469    }
2470}
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480// Google maps for ACF
2481(function($) {
2482
2483
2484function new_map( $el ) {
2485
2486    // var
2487    var $markers = $el.find('.marker');
2488
2489
2490    // vars
2491    var args = {
2492        zoom        : 16,
2493        center      : new google.maps.LatLng(0, 0),
2494        mapTypeId   : google.maps.MapTypeId.ROADMAP
2495    };
2496
2497
2498    // create map
2499    var map = new google.maps.Map( $el[0], args);
2500
2501
2502    // add a markers reference
2503    map.markers = [];
2504
2505
2506    // add markers
2507    $markers.each(function(){
2508
2509        add_marker( $(this), map );
2510
2511    });
2512
2513
2514    // center map
2515    center_map( map );
2516
2517
2518    // return
2519    return map;
2520
2521}
2522
2523
2524function add_marker( $marker, map ) {
2525
2526    // var
2527    var latlng = new google.maps.LatLng( $marker.attr('data-lat'), $marker.attr('data-lng') );
2528
2529    // create marker
2530    var marker = new google.maps.Marker({
2531        position    : latlng,
2532        map         : map
2533    });
2534
2535    // add to array
2536    map.markers.push( marker );
2537
2538    // if marker contains HTML, add it to an infoWindow
2539    if( $marker.html() )
2540    {
2541        // create info window
2542        var infowindow = new google.maps.InfoWindow({
2543            content     : $marker.html()
2544        });
2545
2546        // show info window when marker is clicked
2547        google.maps.event.addListener(marker, 'click', function() {
2548
2549            infowindow.open( map, marker );
2550
2551        });
2552    }
2553
2554}
2555
2556
2557function center_map( map ) {
2558
2559    // vars
2560    var bounds = new google.maps.LatLngBounds();
2561
2562    // loop through all markers and create bounds
2563    $.each( map.markers, function( i, marker ){
2564
2565        var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() );
2566
2567        bounds.extend( latlng );
2568
2569    });
2570
2571    // only 1 marker?
2572    if( map.markers.length == 1 )
2573    {
2574        // set center of map
2575        map.setCenter( bounds.getCenter() );
2576        map.setZoom( 16 );
2577    }
2578    else
2579    {
2580        // fit to bounds
2581        map.fitBounds( bounds );
2582    }
2583
2584}
2585
2586
2587var map = null;
2588
2589var gformSubmitted = false;
2590
2591$(document).ready(function(){
2592
2593    $('.acf-map').each(function(){
2594
2595        // create map
2596        map = new_map( $(this) );
2597
2598    });
2599
2600    /*$(".gform_wrapper form").submit(function(event) {
2601    if (gformSubmitted) {
2602        event.preventDefault();
2603    }
2604    else {
2605            gformSubmitted = true;
2606            $("input[type='submit']", this).val("Processing, please wait...");
2607            this.submit();
2608        }
2609    });*/
2610
2611
2612
2613
2614});
2615
2616})(jQuery);
2617
2618function trigger_chat_window(){
2619    jQuery('.trigger-chat').click(function(e){
2620        e.preventDefault();
2621        LC_API.open_chat_window();
2622    });
2623}
2624
2625function change_popup_close(){
2626    jQuery('.sgpb-popup-close-button-1').attr('src','/wp-content/uploads/2019/04/pp-popup-close-btn.png');
2627    //console.log('popup');
2628}
2629
2630function masterslider_init(){
2631    var slider = new MasterSlider();
2632    slider.setup('masterslider' , {
2633            width:800,    // slider standard width
2634            height:350,   // slider standard height
2635            space:5,
2636           layout:'fullscreen',
2637           mouse: false,
2638           swipe: false,
2639            // more slider options goes here...
2640            // check slider options section in documentation for more options.
2641        });
2642    // adds Arrows navigation control to the slider.
2643    slider.control('arrows');
2644}
2645
2646
2647
2648function openVideoPopup(){
2649    jQuery('.property_intro > .container .row .M5 .video_link a').click();
2650}
2651
2652
2653
2654
2655
2656function property_filter_mobile(){
2657    $window_width = jQuery(window).width();
2658
2659    if ($window_width < 768) {
2660        jQuery('.property_filter .filter_list .dropdowns .destination').after('<div class="availability-wrapper"><div class="dropdown_title">Arrival / Departure</div></div>');
2661        jQuery('.property_filter #property_filter_row .dropdowns .availability').appendTo(".property_filter #property_filter_row .dropdowns .availability-wrapper");
2662
2663
2664        jQuery('.property_filter #property_filter_row .filter_mobile button').click(function(){
2665            jQuery('#property_filter_row .filter_list').toggleClass('show');
2666        });
2667
2668        jQuery('.property_filter #property_filter_row .mobile_close button').click(function(){
2669            jQuery('#property_filter_row .filter_list').removeClass('show');
2670        });
2671
2672        jQuery('.property_filter #property_filter_row .mobile_search button').click(function(){
2673            jQuery('#property_filter_row .filter_list').removeClass('show');
2674        });
2675
2676//      jQuery('.property_filter .filter_list .dropdown, .property_filter .filter_list .availability-wrapper').click(function(){
2677//          jQuery(this).toggleClass('active');
2678//      });
2679
2680//      jQuery('.property_filter .filter_list .dropdown, .property_filter .filter_list .availability-wrapper').click(function(){
2681//          if (!jQuery(this).hasClass('active')){
2682//              console.log('w1');
2683//              jQuery(this).addClass('active');
2684//          }
2685//      });
2686
2687//      jQuery('.property_filter .filter_list .dropdown .dropdown_title, .property_filter .filter_list .availability-wrapper .dropdown_title').click(function(){
2688//          if (jQuery(this).parent().hasClass('active')){
2689//              console.log('w2');
2690//              jQuery(this).parent().removeClass('active');
2691//          }
2692//      });
2693
2694        jQuery('.property_filter .filter_list .select_property .dropdown_title,.property_filter .filter_list .dropdown .dropdown_title, .property_filter .filter_list .availability-wrapper .dropdown_title').click(function(){
2695            jQuery('.property_filter .filter_list .dropdown, .property_filter .filter_list .availability-wrapper').not(jQuery(this).parent()).removeClass('active');
2696            jQuery(this).parent().toggleClass('active');
2697        });
2698    }
2699
2700    if (jQuery('body').hasClass('post-type-archive-property')){
2701        jQuery(window).resize(function(){
2702            var w = jQuery(window).width();
2703            if(w > 767) {
2704                if (jQuery('.filter_list .dropdowns .availability-wrapper').length){
2705                    jQuery('.property_filter #property_filter_row .dropdowns .availability-wrapper .availability').insertAfter( ".property_filter .filter_list .dropdowns .sleeps" );
2706                    jQuery('.property_filter #property_filter_row .dropdowns .availability-wrapper').remove();
2707                    /*location.reload(true);*/
2708                }
2709            } else {
2710                if (!jQuery('.filter_list .dropdowns .availability-wrapper').length){
2711                    jQuery('.property_filter .filter_list .dropdowns .sleeps').after('<div class="availability-wrapper"><div class="dropdown_title">Arrival / Departure</div></div>');
2712                    jQuery('.property_filter #property_filter_row .dropdowns .availability').appendTo(".property_filter #property_filter_row .dropdowns .availability-wrapper");
2713
2714                    jQuery('.property_filter .filter_list .dropdown .dropdown_title, .property_filter .filter_list .availability-wrapper .dropdown_title').click(function(){
2715                        jQuery('.property_filter .filter_list .dropdown, .property_filter .filter_list .availability-wrapper').not(jQuery(this).parent()).removeClass('active');
2716                        jQuery(this).parent().toggleClass('active');
2717                    });
2718                    /*location.reload(true);*/
2719                }
2720            }
2721        });
2722    }
2723}
2724
2725// Trigger default sort on page load
2726function default_sort_init(){
2727    jQuery('.sort_list .dropdown-content ul li#filter_default').trigger('click');
2728}
2729function dateChanged(ev) {
2730    var ele = ev.target;
2731    var frmEle = jQuery(ele).closest('form');
2732    if(!(jQuery(frmEle).length)) {
2733        frmEle = jQuery(ele).closest('.dropdowns');
2734    }
2735    var eleNm = jQuery(ele).attr('name');
2736    var eleVal = jQuery(ele).val();
2737    var eleValArr = eleVal.split('/');
2738    var frmtDt = eleValArr[2]+'-'+eleValArr[1]+'-'+eleValArr[0];
2739    if(eleNm=='checkin_date') {
2740        var minDate = new Date(frmtDt);
2741        jQuery(frmEle).find("input[name='checkout_date']").datepicker('option','minDate', minDate);
2742        //jQuery("input[name='checkout_date']").datepicker("show");
2743        setTimeout(function() {
2744            jQuery(frmEle).find("input[name='checkout_date']").datepicker("show");
2745        }, 320);
2746    } else if(eleNm=='checkout_date') {
2747        var maxDate = new Date(frmtDt);
2748        jQuery(frmEle).find("input[name='checkin_date']").datepicker('option','maxDate', maxDate);
2749    }
2750}
2751function setDtPkrTtl(el, dpObj) {
2752    var inptEle = jQuery(el).get(0);
2753    var inptEleNm = jQuery(inptEle).attr('name');
2754    var dpEle = dpObj.dpDiv[0];
2755    setTimeout(function() {
2756        if(inptEleNm=='checkin_date') {
2757            var title = 'Arrival Date';
2758        } else if(inptEleNm=='checkout_date') {
2759            var title = 'Departure Date';
2760        }
2761        jQuery(dpEle).prepend('<p class="dpTitl">'+title+'</p>');
2762        jQuery('#shownDP').val(title);
2763    }, 320);
2764    if(jQuery('body').hasClass('home')) {
2765        var $window_width = jQuery(window).width();
2766        if($window_width>990) {
2767            setTimeout(function () {
2768                dpObj.dpDiv.css({
2769                    top: jQuery(inptEle).offset().top + 45,
2770                    left: jQuery(inptEle).offset().left
2771                });
2772            }, 0);
2773        }
2774    }
2775}
2776function emptyTtl() {
2777    jQuery('#shownDP').val('');
2778}
2779function hmSrch(frmDta) {
2780    if(frmDta) {
2781        var frmDtaArr = frmDta.split('&');
2782        var isLoc = isArrive = isDeprt = isFtr = 0;
2783        var locStr = 'locations=';
2784        var slpStr = 'sleeps=';
2785        var ftrStr = 'features=';
2786        jQuery.each( frmDtaArr, function( i, val ) {
2787            var valArr = val.split('=');
2788            var fld = valArr[0];
2789            var fldVal = valArr[1];
2790            if(fld=='destination') {
2791                isLoc = 1;
2792                locStr = locStr+fldVal+',';
2793            } else if(fld=='checkin_date' && fldVal!='') {
2794                isArrive = 1;
2795                arvStr = 'checkin='+decodeURIComponent(fldVal);
2796            } else if(fld=='checkout_date' && fldVal!='') {
2797                isDeprt = 1;
2798                dprtStr = 'checkout='+decodeURIComponent(fldVal);
2799            } else if(fld=='features') {
2800                isFtr = 1;
2801                ftrStr = ftrStr+decodeURIComponent(fldVal)+',';
2802            } else if(fld=='sleep_min'){
2803                slpStr = slpStr+fldVal;
2804            } else if(fld=='sleep_max') {
2805                slpStr = slpStr+'-'+fldVal;
2806            }
2807        });
2808        var trgtUrl = baseUrl+'/holiday-homes/?filters+';
2809        if(isLoc) {
2810            var lastChar = locStr.slice(-1);
2811            if(lastChar == ',') {
2812                locStr = locStr.slice(0, -1);
2813            }
2814            trgtUrl = trgtUrl+locStr+'&';
2815        }
2816        if(isArrive) {
2817            trgtUrl = trgtUrl+arvStr+'&';
2818        }
2819        if(isDeprt) {
2820            trgtUrl = trgtUrl+dprtStr+'&';
2821        }
2822        if(isFtr) {
2823            var lastChar = ftrStr.slice(-1);
2824            if(lastChar == ',') {
2825                ftrStr = ftrStr.slice(0, -1);
2826            }
2827            trgtUrl = trgtUrl+ftrStr+'&';
2828        }
2829        trgtUrl = trgtUrl+slpStr;
2830        window.location.href=trgtUrl;
2831    }
2832}
2833function scrlToHmSrch() {
2834    var isSrchScrl = jQuery('#isSrchScrl').val();
2835    if(isSrchScrl==0) {
2836        var topPos = (jQuery('.search-bar-wwrapper').offset().top)-77;
2837        jQuery('html, body').animate({
2838            scrollTop: topPos
2839        }, 1000);
2840        jQuery('#isSrchScrl').val(1);
2841    }
2842}
2843function isBetween($dt,$strtDt,$endDt) {
2844    if(moment($dt).isBetween($strtDt, $endDt,'days','[]')) {
2845        return true;
2846    } else {
2847        return false;
2848    }
2849}
2850
2851function gotoPropertyDetail() {
2852    var x = document.getElementById("knowYourPropertySelect").value;
2853    console.log(x);
2854    window.location.href = x;
2855}
2856
2857document.addEventListener( 'DOMContentLoaded', function() {
2858    var elms = document.getElementsByClassName( 'splide-listing' );
2859    for ( var i = 0; i < elms.length; i++ ) {
2860        console.log(elms[i]);
2861      new Splide( elms[ i ], {
2862        type      : 'loop',
2863        rewind    : true,
2864        pagination: false,
2865        arrows    : true,
2866        lazyLoad  : false,
2867       } ).mount();
2868    }
2869    if(jQuery('.splide-hero').length) {
2870        // property hero setting
2871        var splide = new Splide( '.splide-hero' , {
2872                type: "loop",
2873                perPage: 1,
2874                rewind: true,
2875                padding: 0,
2876                pagination: true,
2877                width: "100%",
2878                autoplay: true,
2879                height: 650,
2880                breakpoints: {
2881                    1024: {
2882                        height: 400
2883                    },
2884                    1280: {
2885                        height: 650
2886                    },
2887                    2000: {
2888                        height: 750
2889                    }
2890                }
2891            });
2892        splide.mount();
2893    }
2894} );
2895
2896function dateCompare(now, past) {
2897
2898    var firstDate = new Date(now),
2899        secondDate = new Date(past),
2900        firstDateInSeconds = firstDate.getTime() / 1000,
2901        secondDateInSeconds = secondDate.getTime() / 1000,
2902        difference = Math.abs(firstDateInSeconds - secondDateInSeconds);
2903
2904//  600000 = 1 week
2905    if (difference < 600000) {
2906        console.log(difference + ' seconds');
2907        return false;
2908    } else {
2909        console.log(Math.floor(difference / 3600) + ' hours ok');
2910        localStorage.removeItem("havePopup");
2911        localStorage.removeItem("popupDate");
2912        return true;
2913    }
2914}
2915jQuery(document).on('favorites-updated-single', function(event, favorites, post_id, site_id, status){
2916	var fvrts = favorites[0]['posts'];
2917	var fvrtCnt = Object.keys(fvrts).length;
2918	if(jQuery('.fvrtCnt').length && fvrtCnt!=0){
2919		jQuery('.fvrtCnt').text(fvrtCnt);
2920	} else if(fvrtCnt!=0) {
2921		/** Need to add span element **/
2922		var cntHtml = '<span class="fvrtCnt">'+fvrtCnt+'</span>';
2923		jQuery(".favNavIcn").append(cntHtml).addClass('filled');
2924		
2925		
2926	} else {
2927		/** Need to remove span element **/
2928		jQuery('.fvrtCnt').remove();
2929		jQuery(".favNavIcn").removeClass('filled');
2930		if((jQuery('body').hasClass('page-template-page-favourites'))) {
2931			jQuery('.fvrtIntro').hide();
2932			jQuery('.noFvrt').show();
2933		}
2934	}
2935	
2936	if ((jQuery('body').hasClass('page-template-page-favourites')) || (jQuery('body').hasClass('page-template-page-favourites-enquiry'))){
2937		jQuery('.fvritPst-'+post_id).remove();
2938	}
2939	if(jQuery('body').hasClass('page-template-page-favourites-enquiry')) {
2940		jQuery('input[type="checkbox"][value="'+post_id+'"]').prop('checked', false); 
2941	}
2942	if(status=='active') {
2943		const propertyID = post_id; // Get the property ID from the button attribute
2944		window.dataLayer = window.dataLayer || [];
2945        window.dataLayer.push({
2946            'event': 'favourite_property',
2947            'property_id': propertyID
2948        });
2949	}
2950	
2951  
2952});
2953/*document.querySelectorAll('.simplefavorite-button').forEach(button => {
2954    button.addEventListener('click', function () {
2955        const propertyID = this.dataset.postid; // Get the property ID from the button attribute
2956		window.dataLayer = window.dataLayer || [];
2957        window.dataLayer.push({
2958            'event': 'favourite_property',
2959            'property_id': propertyID
2960        });
2961    });
2962});*/
2963function debounce(func, wait) {
2964    let timeout;
2965    return function() {
2966        const context = this, args = arguments;
2967        clearTimeout(timeout);
2968        timeout = setTimeout(() => func.apply(context, args), wait);
2969    };
2970}
2971
2972// Function to be executed on resize
2973function onResize() {
2974    setCntntTopPstn();
2975    setHdrMsg();
2976}
2977jQuery(window).on('resize', debounce(onResize, 250));
2978function openLnk(url) {
2979    var window_width = jQuery(window).width();
2980    if(window_width>767) {
2981        window.location.href = url; 
2982    } 
2983}

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.