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.