capoverdecase.com
Open in
urlscan Pro
194.39.124.142
Public Scan
URL:
https://capoverdecase.com/wp-content/themes/houzez/js/custom.js?ver=3.3.0
Submission: On November 02 via api from US — Scanned from PT
Submission: On November 02 via api from US — Scanned from PT
Form analysis
0 forms found in the DOMText Content
/* Theme Name: houzez Description: houzez Author: Favethemes Version: 1.0 */ var houzezThemeGlobal = {}; (function ($) { "use strict"; /* ------------------------------------------------------------------------ */ /* global variables /* ------------------------------------------------------------------------ */ var $win = $(window); var popupSliderLoaded = false; var houzezStickyTop = 0; var adminBarHeight = 0; var ajaxurl = houzez_vars.admin_url+ 'admin-ajax.php'; var compare_url = houzez_vars.compare_url; var houzez_rtl = houzez_vars.houzez_rtl; var userID = houzez_vars.user_id; var wp_is_mobile = houzez_vars.wp_is_mobile; var houzez_is_splash = houzez_vars.houzez_is_splash; var prop_detail_nav = houzez_vars.prop_detail_nav; var search_position = houzez_vars.search_position; var is_singular_property = houzez_vars.is_singular_property; var transparent_logo = houzez_vars.transparent_logo; var is_transparent = houzez_vars.is_transparent; var is_top_header = houzez_vars.is_top_header; var houzez_date_language = houzez_vars.houzez_date_language; var compare_add_icon = houzez_vars.compare_add_icon; var add_compare_text = houzez_vars.add_compare_text; var compare_remove_icon = houzez_vars.compare_remove_icon; var remove_compare_text = houzez_vars.remove_compare_text; var compare_limit = houzez_vars.compare_limit; var compare_page_not_found = houzez_vars.compare_page_not_found; var g_recaptha_version = houzez_vars.g_recaptha_version; var for_rent = houzez_vars.for_rent; var for_rent_price_slider = houzez_vars.for_rent_price_slider; var search_price_range_min = parseInt( houzez_vars.search_min_price_range ); var search_price_range_max = parseInt( houzez_vars.search_max_price_range ); var search_price_range_min_rent = parseInt( houzez_vars.search_min_price_range_for_rent ); var search_price_range_max_rent = parseInt( houzez_vars.search_max_price_range_for_rent ); var get_min_price = parseInt( houzez_vars.get_min_price ); var get_max_price = parseInt( houzez_vars.get_max_price ); var currency_position = houzez_vars.currency_position; var decimals = houzez_vars.decimals; var decimal_point_separator = houzez_vars.decimal_point_separator; var thousands_separator = houzez_vars.thousands_separator; var currency_symb = houzez_vars.currency_symbol; var is_halfmap = parseInt(houzez_vars.is_halfmap); var houzez_reCaptcha = parseInt(houzez_vars.houzez_reCaptcha); var prev_text = houzez_vars.prev_text var next_text = houzez_vars.next_text var keyword_search_field = houzez_vars.keyword_search_field; var keyword_autocomplete = houzez_vars.keyword_autocomplete; var autosearch_text = houzez_vars.autosearch_text; var login_redirect_type = houzez_vars.redirect_type var login_redirect = houzez_vars.login_redirect var login_loading = houzez_vars.login_loading var paypal_connecting = houzez_vars.paypal_connecting; var processing_text = houzez_vars.processing_text; var is_edit_property = houzez_vars.is_edit_property; var property_gallery_popup_type = houzez_vars.property_gallery_popup_type; var simple_logo = houzez_vars.simple_logo; var retina_logo = houzez_vars.retina_logo; var mobile_logo = houzez_vars.mobile_logo; var retina_logo_mobile = houzez_vars.retina_logo_mobile; var retina_logo_mobile_splash = houzez_vars.retina_logo_mobile_splash; var custom_logo_splash = houzez_vars.custom_logo_splash; var retina_logo_splash = houzez_vars.retina_logo_splash; var calDoughnutChart; var is_listing_gallery_slider = false; var top_banner_wrap_height = 0; var top_banner_wrap = $('.top-banner-wrap '); var header_area = $('.header-main-wrap'); var advanced_search_nav = $('.advanced-search-nav'); var desktop_header_search_enabled = advanced_search_nav.data('sticky'); var elementor_location_header = $('.elementor-location-header'); var header_area_height = header_area.innerHeight(); var elementor_location_header_height = elementor_location_header.innerHeight(); var advanced_search_nav_height = advanced_search_nav.innerHeight(); var header_nav = $('#header-section'); var houzez_nav_sticky_height = header_nav.innerHeight(); var only_nav_sticky = header_nav.data('sticky'); houzezThemeGlobal.$body = $('body'); houzezThemeGlobal.$document = $(document); houzezThemeGlobal.$window = $(window); houzezThemeGlobal.houzezEleAddAction = function(name, callback) { houzezThemeGlobal.$window.on('elementor/frontend/init', function() { if ( !elementorFrontend.isEditMode() ) { return; } elementorFrontend.hooks.addAction(name, callback); }); } var houzez_is_mobile = /ipad|iphone|ipod|android|blackberry|webos|iemobile|windows phone/i.test(navigator.userAgent.toLowerCase()); if( prop_detail_nav == 'yes' && is_singular_property) { only_nav_sticky = 0; } if(elementor_location_header_height == null) { elementor_location_header_height = 0; } if(header_area_height == null) { header_area_height = 0; } if(advanced_search_nav_height == null) { advanced_search_nav_height = 0; } if( houzez_rtl == 'yes' ) { houzez_rtl = true; } else { houzez_rtl = false; } if(only_nav_sticky === 1) { houzezStickyTop = houzez_nav_sticky_height; if( !wp_is_mobile ) { desktop_header_search_enabled = 0; } } var make_search_sticky_position = header_area_height + advanced_search_nav_height; var searchStickyPlus = 100; var search_under_navigation = true; if( wp_is_mobile ) { make_search_sticky_position = make_search_sticky_position + 40; } $(document).ready(function() { top_banner_wrap_height = top_banner_wrap.innerHeight(); if(search_position == 'under_banner') { make_search_sticky_position = header_area_height + top_banner_wrap_height; searchStickyPlus = 0; if( wp_is_mobile ) { searchStickyPlus = 60; } if( is_transparent ) { searchStickyPlus = 60; } search_under_navigation = false; } adminBarHeight = $('#wpadminbar').innerHeight(); if(adminBarHeight != null) { houzezStickyTop = houzezStickyTop + adminBarHeight; } }); function HouzezDebounce(func, delay) { let debounceTimer; return function() { const context = this; const args = arguments; clearTimeout(debounceTimer); debounceTimer = setTimeout(() => func.apply(context, args), delay); }; } function parseBool(str) { if( str == 'true' ) { return true; } else { return false; } } /* ------------------------------------------------------------------------ */ /* force video background to play on safari 11 /* ------------------------------------------------------------------------ */ $(document).ready(function() { if( $('#video-background').length > 0 ) { $('#video-background').data('vide').getVideoObject().play(); } }); function adjustMegaMenu(megaMenuSelector, containerSelector, fullwidthClass, customWidthClass, customWidthPx) { jQuery(megaMenuSelector).each(function() { var windowWidth = jQuery(window).width(); var isRTL = jQuery('html').attr('dir') === 'rtl'; // Check if the page is RTL if (jQuery(this).closest(fullwidthClass).length > 0) { // Full viewport width jQuery(this).css('width', '100vw'); var position = jQuery(this).offset().left * -1; //jQuery(this).css(isRTL ? 'right' : 'left', position + 'px'); if (isRTL) { jQuery(this).css('right', position * -1 + 'px'); } else { jQuery(this).css('left', position + 'px'); } } else if (jQuery(this).closest(customWidthClass).length > 0) { // Set custom width jQuery(this).css('width', customWidthPx + 'px'); var menuItem = jQuery(this).closest('.nav-item'); var menuItemOffset = menuItem.offset().left; var position = menuItemOffset - jQuery(this).parent().offset().left; // Check if the dropdown goes outside the window if (menuItemOffset + customWidthPx > windowWidth) { // Open towards the left (or right in RTL) side of the menu item position -= (customWidthPx - menuItem.width()); } if (isRTL) { jQuery(this).css('right', position * -1 + 'px'); } else { jQuery(this).css('left', position + 'px'); } } else { // Width of the nearest container var containerWidth = jQuery(this).closest(containerSelector).width(); jQuery(this).css('width', containerWidth); // Positioning relative to container var containerOffset = jQuery(this).closest(containerSelector).offset().left; var megamenuOffset = jQuery(this).closest('.nav-item').offset().left; var position = containerOffset - megamenuOffset; //jQuery(this).css(isRTL ? 'right' : 'left', position + 'px'); if (isRTL) { jQuery(this).css('right', position * -1 + 'px'); } else { jQuery(this).css('left', position + 'px'); } } }); } function setMenuFullWidthEle() { if ($('#houzez_toggle').length > 0) { var isRTL = $('html').attr('dir') === 'rtl'; // Check if the page is RTL var leftDistance; leftDistance = $('#houzez_toggle').offset().left; //alert(leftDistance); $('.houzez-nav-mobile-menu-fullwidth .main-mobile-nav').css('left', 'calc(50vw - ' + leftDistance + 'px)'); console.log('Distance from the left:', leftDistance); } } // Call the function with specific class names $(window).on('load', function () { adjustMegaMenu('.houzez-elementor-menu .dropdown-menu.megamenu', '.e-con-inner', '.menu-item-design-full-width', '.menu-item-design-custom-size', 200); setTimeout(setMenuFullWidthEle, 500); // Delay of 1000 milliseconds (1 second) }); // Re-adjust the megamenu on window resize $(window).resize(function() { adjustMegaMenu('.houzez-elementor-menu .dropdown-menu.megamenu', '.e-con-inner', '.menu-item-design-full-width', '.menu-item-design-custom-size', 200); setMenuFullWidthEle(); }); /* ------------------------------------------------------------------------ */ /* Property Images Gallery /* ------------------------------------------------------------------------ */ if( $('.hs-gallery-v3-wrap').length > 0 || $('.hs-gallery-v2-wrap .top-gallery-section').length > 0 ) { function adjustTabContentHeight() { var galleryHeight = $('.hs-property-gallery-wrap .top-gallery-section').height(); $('.tab-content').css('height', galleryHeight); } function checkAndAdjustLayout() { adjustTabContentHeight(); } // Recalculate the height on window load and resize $(window).on('load resize', function() { checkAndAdjustLayout(); }); // Initial calculation checkAndAdjustLayout(); } /* ------------------------------------------------------------------------ */ /* lazy load /* ------------------------------------------------------------------------ */ document.addEventListener("DOMContentLoaded", function() { var lazyImages = [].slice.call(document.querySelectorAll(".houzez-lazyload")); if ("IntersectionObserver" in window) { let lazyImageObserver = new IntersectionObserver(function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { let lazyImage = entry.target; lazyImage.src = lazyImage.dataset.src; if(lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; } lazyImage.classList.remove("houzez-lazyload"); lazyImageObserver.unobserve(lazyImage); } }); }); lazyImages.forEach(function(lazyImage) { lazyImageObserver.observe(lazyImage); }); } else { // Possibly fall back to a more compatible method here } }); /* ------------------------------------------------------------------------ */ /* Retina logo /* ------------------------------------------------------------------------ */ if ( retina_logo !== '' || retina_logo_splash != '' || retina_logo_mobile != '' || retina_logo_mobile_splash != '' ) { if (window.devicePixelRatio == 2) { if( retina_logo != '' ) { $(".logo-desktop img").attr("src", retina_logo); } if( retina_logo_splash != '' ) { $(".logo-splash img").attr("src", retina_logo_splash); } if( retina_logo_mobile != '' ) { $(".logo-mobile img").attr("src", retina_logo_mobile); } } } $('.all-reviews').on('click', function(e) { $('.hz-review-tab').trigger('click'); }); /*-----------------------------------------------------------------------------------*/ /* Scroll to Top /*-----------------------------------------------------------------------------------*/ $(function () { var scroll_anchor = $('#scroll-top'); $(window).on('scroll', function () { if ($(this).scrollTop() > 300) { scroll_anchor.fadeIn('fast').css("display","block"); return; } // } scroll_anchor.fadeOut('fast'); }); scroll_anchor.on('click', function (event) { event.preventDefault(); $('html, body').animate({ scrollTop: 0 }, 'slow'); }); }); /* ------------------------------------------------------------------------ */ /* Schedule tour v2 /* ------------------------------------------------------------------------ */ /*$('.tour-day-form-slide-arrow.next').click(function (e) { $('.property-schedule-tour-day-form-slide').addClass("end"); $('.property-schedule-tour-day-form-slide').removeClass("start"); }); $('.tour-day-form-slide-arrow.prev').click(function (e) { $('.property-schedule-tour-day-form-slide').addClass("start"); $('.property-schedule-tour-day-form-slide').removeClass("end"); });*/ /*------------------------------------------------------------------- * Properties ajax tabs *-------------------------------------------------------------------*/ /*$.each([ 'frontend/element_ready/houzez_properties_tabs.default', ], function(index, value) { houzezThemeGlobal.houzezEleAddAction(value, function() { alert('1111'); houzezThemeGlobal.houzezProductsTabs(); }); });*/ //houzezThemeGlobal.houzezProductsTabs(); var houzezProductsTabs = function() { var alreadyProcessed = false; $('.houzez-products-tabs-js').each(function() { var $this = $(this); var $html_container = $this.find('.houzez-tab-content'); var $products_cache = []; $this.find('ul.property-nav-tabs li').on('click', function(e) { e.preventDefault(); var $this = $(this); var settings = $this.data('json'); var data_index = $this.index(); if ( alreadyProcessed || $this.find('a').hasClass('active') ) { return; } alreadyProcessed = true; if ($products_cache[data_index]) { setTimeout(function() { $html_container.html($products_cache[data_index].html); alreadyProcessed = false; }, 300); return; } $.ajax({ url : ajaxurl, data : { action: 'houzez_get_properties_tab_content', settings : settings }, dataType: 'json', method : 'POST', beforeSend: function( ) { $html_container.empty().append('' +'<div id="houzez-map-loading">' +'<div class="mapPlaceholder">' +'<div class="loader-ripple spinner">' +'<div class="bounce1"></div>' +'<div class="bounce2"></div>' +'<div class="bounce3"></div>' +'</div>' +'</div>' +'</div>' ); }, success : function(data) { $products_cache[data_index] = data; $html_container.html(data.html); houzez_init_add_favorite(ajaxurl, userID); houzez_init_remove_favorite(ajaxurl, userID); houzez_listing_lightbox(ajaxurl, processing_text, houzez_rtl, userID); houzez_grid_image_gallery(); houzez_grid_call_to_action(); compare_for_ajax(); $('[data-toggle="tooltip"]').tooltip(); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function() { alreadyProcessed = false; } }); }); }); }; houzezProductsTabs(); /*------------------------------------------------------------------- * Photo Swipe *-------------------------------------------------------------------*/ var initPhotoSwipeFromDOM = function(gallerySelector) { // parse slide data (url, title, size ...) from DOM elements // (children of gallerySelector) var parseThumbnailElements = function(el) { var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item; for(var i = 0; i < numNodes; i++) { figureEl = thumbElements[i]; // <figure> element // include only element nodes if(figureEl.nodeType !== 1) { continue; } linkEl = figureEl.children[0]; // <a> element size = linkEl.getAttribute('data-size').split('x'); // create slide object item = { src: linkEl.getAttribute('href'), w: parseInt(size[0], 10), h: parseInt(size[1], 10) }; if(figureEl.children.length > 1) { // <figcaption> content item.title = figureEl.children[1].innerHTML; } if(linkEl.children.length > 0) { // <img> thumbnail element, retrieving thumbnail url item.msrc = linkEl.children[0].getAttribute('src'); } item.el = figureEl; // save link to element for getThumbBoundsFn items.push(item); } return items; }; // find nearest parent element var closest = function closest(el, fn) { return el && ( fn(el) ? el : closest(el.parentNode, fn) ); }; // triggers when user clicks on thumbnail var onThumbnailsClick = function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false; var eTarget = e.target || e.srcElement; // find root element of slide var clickedListItem = closest(eTarget, function(el) { return (el.tagName && ( el.tagName.toUpperCase() === 'FIGURE' || el.tagName.toUpperCase() === 'DIV' ) ); }); if(!clickedListItem) { return; } // find index of clicked item by looping through all child nodes // alternatively, you may define index via data- attribute var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index; for (var i = 0; i < numChildNodes; i++) { if(childNodes[i].nodeType !== 1) { continue; } if(childNodes[i] === clickedListItem) { index = nodeIndex; break; } nodeIndex++; } if(index >= 0) { // open PhotoSwipe if valid index found openPhotoSwipe( index, clickedGallery ); } return false; }; // parse picture index and gallery index from URL (#&pid=1&gid=2) var photoswipeParseHash = function() { var hash = window.location.hash.substring(1), params = {}; if(hash.length < 5) { return params; } var vars = hash.split('&'); for (var i = 0; i < vars.length; i++) { if(!vars[i]) { continue; } var pair = vars[i].split('='); if(pair.length < 2) { continue; } params[pair[0]] = pair[1]; } if(params.gid) { params.gid = parseInt(params.gid, 10); } return params; }; var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { var pswpElement = document.querySelectorAll('.pswp')[0], gallery, options, items; items = parseThumbnailElements(galleryElement); // define options (if needed) options = { // define gallery index (for URL) galleryUID: galleryElement.getAttribute('data-pswp-uid'), getThumbBoundsFn: function(index) { // See Options -> getThumbBoundsFn section of documentation for more info var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect(); return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; } }; options.closeOnScroll = false; options.bgOpacity = 0.95; options.showHideOpacity = false; options.history = false // PhotoSwipe opened from URL if(fromURL) { if(options.galleryPIDs) { // parse real index when custom PIDs are used // http://photoswipe.com/documentation/faq.html#custom-pid-in-url for(var j = 0; j < items.length; j++) { if(items[j].pid == index) { options.index = j; break; } } } else { // in URL indexes start from 1 options.index = parseInt(index, 10) - 1; } } else { options.index = parseInt(index, 10); } // exit if index not found if( isNaN(options.index) ) { return; } if(disableAnimation) { options.showAnimationDuration = 0; } // Pass data to PhotoSwipe and initialize it gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); }; // loop through all gallery elements and bind events var galleryElements = document.querySelectorAll( gallerySelector ); for(var i = 0, l = galleryElements.length; i < l; i++) { galleryElements[i].setAttribute('data-pswp-uid', i+1); galleryElements[i].onclick = onThumbnailsClick; } // Parse URL and open gallery if it contains #&pid=3&gid=1 var hashData = photoswipeParseHash(); if(hashData.pid && hashData.gid) { openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); } }; // execute above function if( property_gallery_popup_type == 'photoswipe' && is_singular_property ) { initPhotoSwipeFromDOM('.houzez-photoswipe'); } /* ------------------------------------------------------------------------ */ /* STICKY HEADER /* ------------------------------------------------------------------------ */ if (window.devicePixelRatio == 2) { if(transparent_logo) { if(retina_logo_splash != '') { custom_logo_splash = retina_logo_splash; } if(retina_logo != '') { simple_logo = retina_logo; } } } if( only_nav_sticky && !wp_is_mobile ) { houzez_sticky_nav(); if( $('.compare-table').length > 0 ) { var compare_top_margin = advanced_search_nav.outerHeight(); $('.compare-table thead th').css('top', compare_top_margin + 25); } } function houzez_sticky_nav() { $(window).scroll(function() { var scroll = $(window).scrollTop(); var admin_nav = $('#wpadminbar').height(); var top_banner_margin = 0; var thisHeight = header_nav.outerHeight(); top_banner_margin = thisHeight; if(is_top_header != 0) { var top_bar_wrap = $('.top-bar-wrap').height(); top_banner_margin = top_banner_margin + top_bar_wrap; } if(only_nav_sticky === 0) { return; } if(transparent_logo) { $('.logo-splash img').attr('src', simple_logo); } if( admin_nav == 'null' ) { admin_nav = 0; } if (scroll > header_area_height ) { header_nav.addClass('sticky-nav-area'); header_nav.css('top', admin_nav); if(transparent_logo){ header_area.removeClass('header-transparent-wrap'); $('.top-banner-wrap').css('margin-top', "-"+top_banner_margin+"px"); $('body.houzez-header-elementor .content-wrap').css('margin-top', "-"+top_banner_margin+"px"); $('#main-wrap > div.elementor').css('margin-top', "-"+top_banner_margin+"px"); } if (scroll >= header_area_height + 20 ) { header_nav.addClass('houzez-in-view'); $('#main-wrap').css('margin-top', thisHeight); } } else { header_nav.removeClass('sticky-nav-area'); header_nav.removeAttr("style"); if(transparent_logo){ header_area.addClass('header-transparent-wrap'); $('.top-banner-wrap').css('margin-top', 0); $('body.houzez-header-elementor .content-wrap').css('margin-top', 0); $('#main-wrap > div.elementor').css('margin-top', 0); $('.logo-splash img').attr('src', custom_logo_splash); } if (scroll <= header_area_height + 20 ) { header_nav.removeClass('houzez-in-view'); } $('#main-wrap').css('margin-top', 0); } }); } /* ------------------------------------------------------------------------ */ /* STICKY Header Search /* ------------------------------------------------------------------------ */ if( desktop_header_search_enabled ) { houzez_sticky_search(); } function houzez_sticky_search() { $(window).scroll(function() { var scroll = $(window).scrollTop(); var admin_nav = $('#wpadminbar').height(); var thisHeight = advanced_search_nav.outerHeight(); var hidden_data = advanced_search_nav.data('hidden'); if( admin_nav == 'null' ) { admin_nav = 0; } if (scroll >= make_search_sticky_position ) { advanced_search_nav.addClass('sticky-search-area'); if(hidden_data) { advanced_search_nav.removeClass('search-hidden'); } if( !wp_is_mobile ) { advanced_search_nav.css('top', admin_nav); } if (scroll >= make_search_sticky_position + searchStickyPlus ) { advanced_search_nav.addClass('houzez-in-view'); if( !hidden_data ) { $('#main-wrap').css('padding-top',thisHeight); } } } else { advanced_search_nav.removeClass('sticky-search-area'); advanced_search_nav.removeAttr("style"); if (scroll <= make_search_sticky_position + 20 ) { advanced_search_nav.removeClass('houzez-in-view'); } if(hidden_data) { advanced_search_nav.addClass('search-hidden'); } if( !hidden_data ) { $('#main-wrap').css('padding-top', 0); } } }); } /*var header_mobile = $('#header-mobile'); var mobile_sticky_nav = header_mobile.data('sticky'); if( mobile_sticky_nav && wp_is_mobile ) { houzez_mobile_sticky_nav(); }*/ function houzez_mobile_sticky_nav() { $(window).scroll(function() { var scroll = $(window).scrollTop(); var admin_nav = 0;//$('#wpadminbar').height(); var top_banner_margin = 0; var thisHeight = header_mobile.outerHeight(); top_banner_margin = thisHeight; if(is_top_header) { var top_bar_wrap = $('.top-bar-wrap').height(); top_banner_margin = top_banner_margin + top_bar_wrap; } if(mobile_sticky_nav === 0) { return; } if( admin_nav == 'null' ) { admin_nav = 0; } if (scroll > header_area_height ) { header_mobile.addClass('sticky-nav-area'); //header_mobile.css('top', admin_nav); if (scroll >= header_area_height + 20 ) { header_mobile.addClass('houzez-in-view'); $('#main-wrap').css('margin-top', thisHeight); } } else { header_mobile.removeClass('sticky-nav-area'); header_mobile.removeAttr("style"); if (scroll <= header_area_height + 20 ) { header_mobile.removeClass('houzez-in-view'); } $('#main-wrap').css('margin-top', 0); } }); } /* ------------------------------------------------------------------------ */ /* Add Comma to value /* ------------------------------------------------------------------------ */ var addCommas = function (nStr) { nStr += ''; var x = nStr.split('.'); var x1 = x[0]; var x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } var thousandSeparator = (n) => { if (typeof n === 'number') { n += ''; var x = n.split('.'); var x1 = x[0]; var x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + thousands_separator + '$2'); } return x1 + x2; } else { return n; } } /* ------------------------------------------------------------------------ */ /* Number format /* ------------------------------------------------------------------------ */ function number_format( number ) { var decimals, dec_point, thousands_sep; dec_point = decimal_point_separator; thousands_sep = thousands_separator; var i, j, kw, kd, km; // input sanitation & defaults if( isNaN( decimals = Math.abs( decimals ) ) ) { decimals = 2; } dec_point = dec_point || ","; thousands_sep = thousands_sep || "."; i = parseInt(number = (+number || 0).toFixed(decimals)) + ""; j = ( j = i.length ) > 3 ? j % 3 : 0; km = (j ? i.substr(0, j) + thousands_sep : ""); kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep); kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : ""); return km + kw + kd; } if( $('#houzez-calculator-form').length > 0 ) { $('#houzez-calculator-form input').on('input', () => { mortgage_calucaltion_section(); }); mortgage_calucaltion_section(); } function calculateMonthlyPayment(principal, annualInterestRate, loanTermInYears) { const monthlyInterestRate = annualInterestRate / 12 / 100; const numberOfMonths = loanTermInYears * 12; if (monthlyInterestRate === 0) { return principal / numberOfMonths; } return principal * (monthlyInterestRate * Math.pow((1 + monthlyInterestRate), numberOfMonths)) / (Math.pow((1 + monthlyInterestRate), numberOfMonths) - 1); } // Define a helper function to parse and validate our inputs function parseInput(selector) { const rawValue = $(selector).val(); if (!rawValue) return 0; // if value is empty or undefined, return 0 // Remove any non-digit character except the decimal point const cleanedValue = rawValue.replace(/[^0-9.]/g, ''); // Parsing to number const parsedValue = parseFloat(cleanedValue); // if parsedValue is NaN, return 0, otherwise return the parsed number return isNaN(parsedValue) ? 0 : parsedValue; } function mortgage_calucaltion_section() { const homePrice = parseInput('#homePrice'); const downPaymentPercentage = parseInput('#downPaymentPercentage'); const annualInterestRate = parseInput('#annualInterestRate'); const loanTermInYears = parseInput('#loanTermInYears'); const annualPropertyTaxRate = parseInput('#annualPropertyTaxRate'); const annualHomeInsurance = parseInput('#annualHomeInsurance'); const monthlyHOAFees = parseInput('#monthlyHOAFees'); const pmi = parseInput('#pmi'); const downPayment = homePrice * (downPaymentPercentage / 100); const principal = homePrice - downPayment; const monthlyPayment = calculateMonthlyPayment(principal, annualInterestRate, loanTermInYears); const monthlyPropertyTax = (homePrice * (annualPropertyTaxRate / 100)) / 12; const monthlyHomeInsurance = annualHomeInsurance / 12; const pmiRequired = (downPayment / homePrice) < 0.2; const monthlyPMI = pmiRequired ? (principal * (pmi / 100)) / 12 : 0; const totalMonthlyPayment = monthlyPayment + monthlyPropertyTax + monthlyHomeInsurance + monthlyHOAFees + monthlyPMI; const loanAmount = homePrice - downPayment; const formattedDownPayment = number_format(downPayment); const formattedLoanAmount = number_format(loanAmount); const formattedMonthlyPayment = number_format(monthlyPayment); const formattedPropertyTax = number_format(monthlyPropertyTax); const formattedHomeInsurance = number_format(monthlyHomeInsurance); const formattedPMI = pmiRequired ? number_format(monthlyPMI) : ''; const formattedHOAFees = number_format(monthlyHOAFees); const formattedTotalMonthlyPayment = number_format(totalMonthlyPayment); $('#downPaymentResult').html( currencyFormate(formattedDownPayment) ); $('#loadAmountResult').html( currencyFormate(formattedLoanAmount) ); $('#monthlyMortgagePaymentResult').html( currencyFormate(formattedMonthlyPayment) ); $('#monthlyPropertyTaxResult').html( currencyFormate(formattedPropertyTax) ); $('#monthlyHomeInsuranceResult').html( currencyFormate(formattedHomeInsurance) ); if (pmiRequired) { $('.rslt-pmi').show(); $('#monthlyPMIResult').html( currencyFormate(formattedPMI) ); } else { $('.rslt-pmi').hide(); } $('#monthlyHOAResult').html( currencyFormate(formattedHOAFees) ); $('#m_monthly_val').html( currencyFormate(formattedTotalMonthlyPayment) ); const chartData = [ { label: 'Monthly Mortgage Payment', value: monthlyPayment, color: '#ff6384' }, { label: 'Property Tax', value: monthlyPropertyTax, color: '#36a2eb' }, { label: 'Home Insurance', value: monthlyHomeInsurance, color: '#ffce56' }, { label: 'HOA', value: monthlyHOAFees, color: '#c2d500' }, ]; if (pmiRequired) { chartData.push({ label: 'PMI', value: monthlyPMI, color: '#4bc0c0' }); } updateChart(chartData); } const inputElements = document.querySelectorAll('#calculator-form input'); inputElements.forEach(input => { input.addEventListener('input', () => { formatInputValue(input); updateResults(); }); }); function updateChart(chartData) { const ctx = $('#mortgage-calculator-chart')[0].getContext('2d'); if (window.myChart) { window.myChart.destroy(); } window.myChart = new Chart(ctx, { type: 'doughnut', data: { //labels: chartData.map(item => item.label), datasets: [{ data: chartData.map(item => item.value), backgroundColor: chartData.map(item => item.color), }], }, options: { cutoutPercentage: 85, responsive: false, tooltips: false, }, }); } function currencyFormate(price_value) { var value; if( currency_position == '' || currency_symb == '' ) { return price_value; } value = 'after' === currency_position ? price_value + '' + currency_symb : currency_symb + '' + price_value; return value; } /* ------------------------------------------------------------------------ */ /* Listing Preview /* ------------------------------------------------------------------------ */ houzez_listing_lightbox(ajaxurl, processing_text, houzez_rtl, userID); /* ------------------------------------------------------------------------ */ /* Listing Gallery /* ------------------------------------------------------------------------ */ $(window).on('load', function() { houzez_grid_image_gallery(); houzez_grid_call_to_action(); }); /* ------------------------------------------------------------------------ */ /* Cities chart for agent and agency /* ------------------------------------------------------------------------ */ if( $('#stats-property-cities').length > 0 ) { var chartData = $('#stats-property-cities').data('chart'); var ctx = document.getElementById('stats-property-cities').getContext('2d'); var myDoughnutChart = new Chart(ctx, { type: 'doughnut', data: { datasets: [{ data: chartData, backgroundColor: [ 'rgba(255, 99, 132, 0.5)', 'rgba(54, 162, 235, 0.5)', 'rgba(255, 206, 86, 0.5)', 'rgba(75, 192, 192, 0.5)' ], borderColor: [ 'rgba(255 ,99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)' ], borderWidth: 1 }] }, options: { cutoutPercentage: 60, responsive: false, tooltips: false, } }); } /* ------------------------------------------------------------------------ */ /* Status chart for agent and agency /* ------------------------------------------------------------------------ */ if( $('#stats-property-status').length > 0 ) { var chartData = $('#stats-property-status').data('chart'); var ctx = document.getElementById('stats-property-status').getContext('2d'); var myDoughnutChart = new Chart(ctx, { type: 'doughnut', data: { datasets: [{ data: chartData, backgroundColor: [ 'rgba(255, 99, 132, 0.5)', 'rgba(54, 162, 235, 0.5)', 'rgba(255, 206, 86, 0.5)', 'rgba(75, 192, 192, 0.5)' ], borderColor: [ 'rgba(255 ,99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)' ], borderWidth: 1 }] }, options: { cutoutPercentage: 60, responsive: false, tooltips: false, } }); } /* ------------------------------------------------------------------------ */ /* Types chart for agent and agency /* ------------------------------------------------------------------------ */ $('.houzez-realtor-stats-js[id^="stats-property-"]').each(function() { var $div = $(this); var token = $div.data('token'); var statsID = 'stats-property-' + token; if ($('#' + statsID).length > 0) { var chartData = $('#' + statsID).data('chart'); var ctx = document.getElementById(statsID).getContext('2d'); var myDoughnutChart = new Chart(ctx, { type: 'doughnut', data: { datasets: [{ data: chartData, backgroundColor: [ 'rgba(255, 99, 132, 0.5)', 'rgba(54, 162, 235, 0.5)', 'rgba(255, 206, 86, 0.5)', 'rgba(75, 192, 192, 0.5)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)' ], borderWidth: 1 }] }, options: { cutoutPercentage: 60, responsive: false, tooltips: false } }); } }); if( $('#stats-property-types').length > 0 ) { var chartData = $('#stats-property-types').data('chart'); var ctx = document.getElementById('stats-property-types').getContext('2d'); var myDoughnutChart = new Chart(ctx, { type: 'doughnut', data: { datasets: [{ data: chartData, backgroundColor: [ 'rgba(255, 99, 132, 0.5)', 'rgba(54, 162, 235, 0.5)', 'rgba(255, 206, 86, 0.5)', 'rgba(75, 192, 192, 0.5)' ], borderColor: [ 'rgba(255 ,99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)' ], borderWidth: 1 }] }, options: { cutoutPercentage: 60, responsive: false, tooltips: false, } }); } /* ------------------------------------------------------------------------ */ /* Types chart for agent and agency /* ------------------------------------------------------------------------ */ if( $('#stats-property-types').length > 0 ) { var chartData = $('#stats-property-types').data('chart'); var ctx = document.getElementById('stats-property-types').getContext('2d'); var myDoughnutChart = new Chart(ctx, { type: 'doughnut', data: { datasets: [{ data: chartData, backgroundColor: [ 'rgba(255, 99, 132, 0.5)', 'rgba(54, 162, 235, 0.5)', 'rgba(255, 206, 86, 0.5)', 'rgba(75, 192, 192, 0.5)' ], borderColor: [ 'rgba(255 ,99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)' ], borderWidth: 1 }] }, options: { cutoutPercentage: 60, responsive: false, tooltips: false, } }); } /* ------------------------------------------------------------------------ */ /* Fave login and regsiter /* ------------------------------------------------------------------------ */ var houzez_login_modal = function() { jQuery('#login-register-form').modal('show'); jQuery('.login-form-tab').addClass('active show'); jQuery('.modal-toggle-1.nav-link').addClass('active'); } $('#houzez-login-btn').on('click', function(e){ e.preventDefault(); var currnt = $(this); houzez_login( currnt ); }); $('#houzez-register-btn').on('click', function(e){ e.preventDefault(); var currnt = $(this); houzez_register( currnt ); }); $('#houzez-create-account-btn').on('click', function(e){ e.preventDefault(); var currnt = $(this); houzez_social_create_account( currnt ); }); var houzez_login = function( currnt ) { var $form = currnt.parents('form'); var $messages = $('#hz-login-messages'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: $form.serialize(), beforeSend: function( ) { currnt.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ currnt.find('.houzez-loader-js').removeClass('loader-show'); }, success: function( response ) { if( response.success ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); window.location.replace( response.redirect_to ); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } currnt.find('.houzez-loader-js').removeClass('loader-show'); if(houzez_reCaptcha == 1) { $form.find('.g-recaptcha-response').remove(); if( g_recaptha_version == 'v3' ) { houzezReCaptchaLoad(); } else { houzezReCaptchaReset(); } } }, error: function(xhr, status, error) { console.log("Error Status: " + status); console.log("Error Thrown: " + error); console.log("Response Text: " + xhr.responseText); } }) } // end houzez_login var houzez_register = function ( currnt ) { var $form = currnt.parents('form'); var $messages = $('#hz-register-messages'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: $form.serialize(), beforeSend: function( ) { currnt.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ currnt.find('.houzez-loader-js').removeClass('loader-show'); }, success: function( response ) { if( response.success ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); setTimeout(function() { $('a[href="#login-form-tab"]').tab('show'); }, 2000); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } currnt.find('.houzez-loader-js').removeClass('loader-show'); if(houzez_reCaptcha == 1) { $form.find('.g-recaptcha-response').remove(); if( g_recaptha_version == 'v3' ) { houzezReCaptchaLoad(); } else { houzezReCaptchaReset(); } } }, error: function(xhr, status, error) { console.log("Error Status: " + status); console.log("Error Thrown: " + error); console.log("Response Text: " + xhr.responseText); } }); } var houzez_social_create_account = function ( currnt ) { var $form = currnt.parents('form'); var $messages = $('#hz-create-messages'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: $form.serialize(), beforeSend: function( ) { currnt.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ currnt.find('.houzez-loader-js').removeClass('loader-show'); }, success: function( response ) { if( response.success ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); window.location.replace( response.redirect_to ); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } currnt.find('.houzez-loader-js').removeClass('loader-show'); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } $('#houzez-link-account').on('click', function(e){ e.preventDefault(); var currnt = $(this); houzez_link_account( currnt ); }); var houzez_link_account = function ( currnt ) { var $form = currnt.parents('form'); var $messages = $('#hz-link-messages'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: $form.serialize(), beforeSend: function( ) { currnt.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ currnt.find('.houzez-loader-js').removeClass('loader-show'); }, success: function( response ) { if( response.success ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); window.location.replace( response.redirect_to ); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } currnt.find('.houzez-loader-js').removeClass('loader-show'); if(houzez_reCaptcha == 1) { $form.find('.g-recaptcha-response').remove(); if( g_recaptha_version == 'v3' ) { houzezReCaptchaLoad(); } else { houzezReCaptchaReset(); } } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } function houzez_social_login_panel() { var $mainStepWrap = $('.main-step-wrap'); var $newAccountWrap = $('.new-account-wrap'); var $linkAccountWrap = $('.link-account-wrap'); function toggleVisibility(hide1, hide2, show) { hide1.hide(); hide2.hide(); show.show(); } $(document).on('click', '.btn-link-account', function(event) { event.preventDefault(); toggleVisibility($mainStepWrap, $newAccountWrap, $linkAccountWrap); }); $(document).on('click', '.btn-create-account', function(event) { event.preventDefault(); toggleVisibility($mainStepWrap, $linkAccountWrap, $newAccountWrap); }); $(document).on('click', '.hz-fb-cancel', function(event) { event.preventDefault(); toggleVisibility($linkAccountWrap, $newAccountWrap, $mainStepWrap); }); } houzez_social_login_panel(); $( '#houzez_forgetpass').on('click', function(){ var user_login = $('#user_login_forgot').val(), security = $('#fave_resetpassword_security').val(); var $this = $(this); var $messages = $('#reset_pass_msg'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { 'action': 'houzez_reset_password', 'user_login': user_login, 'security': security }, beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); }, success: function( response ) { if( response.success ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); }); if( $('#houzez_reset_password').length > 0 ) { $('#houzez_reset_password').click( function(e) { e.preventDefault(); var $this = $(this); var rg_login = $('input[name="rp_login"]').val(); var rp_key = $('input[name="rp_key"]').val(); var pass1 = $('input[name="pass1"]').val(); var pass2 = $('input[name="pass2"]').val(); var security = $('input[name="fave_resetpassword_security"]').val(); var $messages = $('#reset_pass_msg_2'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { 'action': 'houzez_reset_password_2', 'rq_login': rg_login, 'password': pass1, 'confirm_pass': pass2, 'rp_key': rp_key, 'security': security }, beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); }, success: function(response) { if( response.success ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); jQuery('#oldpass, #newpass, #confirmpass').val(''); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.msg +'</div>'); } }, error: function(errorThrown) { } }); } ); } $('.hz-facebook-login').on('click', function () { var current = $(this); houzez_login_via_facebook( current ); }); var houzez_login_via_facebook = function ( current ) { var $messages = $('.hz-social-messages'); $.ajax({ type: 'POST', url: ajaxurl, dataType: 'json', data: { 'action' : 'houzez_facebook_login_oauth' }, beforeSend: function( ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ login_loading +'</div>'); current.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ current.find('.houzez-loader-js').removeClass('loader-show'); }, success: function (response) { if(response.success) { window.location.replace( response.url ); } else { $messages.empty().append('<div class="alert alert-danger" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ response.message +'</div>'); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } $('.hz-google-login').on('click', function () { var current = $(this); houzez_login_via_google( current ); }); var houzez_login_via_google = function ( current ) { var $form = current.parents('form'); var $messages = $('#hz-login-messages'); $.ajax({ type: 'POST', url: ajaxurl, data: { 'action' : 'houzez_google_login_oauth' }, beforeSend: function( ) { $messages.empty().append('<div class="alert alert-success" role="alert"><i class="houzez-icon icon-check-circle-1 mr-1"></i>'+ login_loading +'</div>'); current.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ current.find('.houzez-loader-js').removeClass('loader-show'); }, success: function (data) { window.location.replace( data ); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } /*-------------------------------------------------------------------------- * Property Module Ajax Pagination * -------------------------------------------------------------------------*/ var properties_module_section = $('#properties_module_section'); if( properties_module_section.length > 0 ) { $("body").on('click', '.fave-load-more a', function(e) { e.preventDefault(); var $this = $(this); var $wrap = $this.closest('#properties_module_section').find('#module_properties'); var prop_limit = $this.data('prop-limit'); var paged = $this.data('paged'); var card_version = $this.data('card'); var type = $this.data('type'); var status = $this.data('status'); var state = $this.data('state'); var city = $this.data('city'); var country = $this.data('country'); var area = $this.data('area'); var label = $this.data('label'); var user_role = $this.data('user-role'); var featured_prop = $this.data('featured-prop'); var offset = $this.data('offset'); var sortby = $this.data('sortby'); var property_ids = $this.data('property_ids'); var min_price = $this.data('min_price'); var max_price = $this.data('max_price'); var min_beds = $this.data('min_beds'); var max_beds = $this.data('max_beds'); var min_baths = $this.data('min_baths'); var max_baths = $this.data('max_baths'); var agents = $this.data('agents'); var agencies = $this.data('agencies'); var post_status = $this.data('post_status'); $.ajax({ type: 'POST', url: ajaxurl, data: { 'action': 'houzez_loadmore_properties', 'prop_limit': prop_limit, 'paged': paged, 'card_version': card_version, 'type': type, 'status': status, 'state': state, 'city': city, 'country': country, 'area': area, 'label': label, 'property_ids': property_ids, 'min_price': min_price, 'max_price': max_price, 'min_beds': min_beds, 'max_beds': max_beds, 'min_baths': min_baths, 'max_baths': max_baths, 'user_role': user_role, 'agents': agents, 'agencies': agencies, 'featured_prop': featured_prop, 'sort_by': sortby, 'offset': offset, 'post_status': post_status }, beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); }, success: function (data) { if(data == 'no_result') { $this.closest('#properties_module_section').find('.fave-load-more').fadeOut('fast').remove(); return; } var $wrap = $this.closest('#properties_module_section').find('#module_properties'); $wrap.append(data); $this.data("paged", paged+1); $this.find('i').remove(); houzez_init_add_favorite(ajaxurl, userID); houzez_init_remove_favorite(ajaxurl, userID); houzez_listing_lightbox(ajaxurl, processing_text, houzez_rtl, userID); houzez_grid_image_gallery(); houzez_grid_call_to_action(); compare_for_ajax(); $('[data-toggle="tooltip"]').tooltip(); }, error: function (xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); }); } /*-------------------------------------------------------------------------- * Property Infinite load * -------------------------------------------------------------------------*/ /*$('.houzez-infinite-load').on('click', function(e) { e.preventDefault(); //$(window).scroll(function() { var $nextPageLink = $('.btn-load-more').attr('href'); var nextPageUrl = $nextPageLink; if (nextPageUrl) { //if ($(window).scrollTop() == $(document).height() - $(window).height()) { alert('dg'); window.history.pushState({HouzezTheme: true}, '', nextPageUrl); self.filterAjax = $.ajax({ url: nextPageUrl, data: { load_type: 'items' }, dataType: 'html', cache: false, headers: {'cache-control': 'no-cache'}, method: 'GET', error: function(XMLHttpRequest, textStatus, errorThrown) { console.log('Houzez: AJAX error - houzezAjaxPagination() - ' + errorThrown); }, complete: function() { }, success: function(response) { var $response = $('<div>' + response + '</div>'); // Wrap the returned HTML string in a dummy 'div' element we can get the elements $('.listing-view').append(response); console.log($response); // Get the 'next page' URL nextPageUrl = $response.find('.page-id').attr('data-page'); alert(nextPageUrl); if (nextPageUrl) { $('.btn-load-more').attr('href', nextPageUrl); } else { $('#fave-pagination-loadmore').remove(); } } }); //} } });*/ /*-------------------------------------------------------------------------- * Change search price on status change * -------------------------------------------------------------------------*/ var property_status_changed = function(prop_status, $form) { if( prop_status == for_rent ) { $form.find('.prices-for-all').addClass('hide'); $form.find('.prices-for-all select').attr('disabled','disabled'); $form.find('.prices-only-for-rent').removeClass('hide'); $form.find('.prices-only-for-rent select').removeAttr('disabled','disabled'); $form.find('.prices-only-for-rent select').selectpicker('refresh'); } else { $form.find('.prices-only-for-rent').addClass('hide'); $form.find('.prices-only-for-rent select').attr('disabled','disabled'); $form.find('.prices-for-all').removeClass('hide'); $form.find('.prices-for-all select').removeAttr('disabled','disabled'); $form.find('.prices-for-all select').selectpicker('refresh'); } } $('.status-js').on('change', function(e) { var selected_status = $(this).val(); var $form = $(this).parents('form'); property_status_changed(selected_status, $form); }); $('.status-tab-js').on('click', function() { var tab_selected_status = $(this).data('val'); var $form = $(this).parents('form'); property_status_changed(tab_selected_status, $form); }); /* On page load*/ var selected_status = $('.status-js').val(); if( selected_status == for_rent ) { var $form = $('.houzez-search-form-js'); property_status_changed(selected_status, $form); } else { var $form = $('.houzez-search-form-js'); property_status_changed('dummy', $form); } /* On page load status tab */ var selected_status_tab = $('.status-tab-js').val(); if( selected_status_tab == for_rent ) { var $tab_form = $('.houzez-search-builder-form-js'); property_status_changed(selected_status_tab, $tab_form); } else { var $tab_form = $('.houzez-search-builder-form-js'); property_status_changed( selected_status_tab, $tab_form ); } /* ------------------------------------------------------------------------ */ /* Price Range Slider /* ------------------------------------------------------------------------ */ var price_range_search = function( min_price, max_price ) { $(".price-range").slider({ range: true, min: min_price, max: max_price, values: [min_price, max_price], slide: function (event, ui) { if( currency_position == 'after' ) { var min_price_range = thousandSeparator(ui.values[0]) + currency_symb; var max_price_range = thousandSeparator(ui.values[1]) + currency_symb; } else { var min_price_range = currency_symb + thousandSeparator(ui.values[0]); var max_price_range = currency_symb + thousandSeparator(ui.values[1]); } $(".min-price-range-hidden").val( ui.values[0] ); $(".max-price-range-hidden").val( ui.values[1] ); $(".min-price-range").text( min_price_range ); $(".max-price-range").text( max_price_range ); }, stop: function( event, ui ) { }, change: function( event, ui ) { } }); if( currency_position == 'after' ) { var min_price_range = thousandSeparator($(".price-range").slider("values", 0)) + currency_symb; var max_price_range = thousandSeparator($(".price-range").slider("values", 1)) + currency_symb; } else { var min_price_range = currency_symb + thousandSeparator($(".price-range").slider("values", 0)); var max_price_range = currency_symb + thousandSeparator($(".price-range").slider("values", 1)); } $(".min-price-range").text(min_price_range); $(".max-price-range").text(max_price_range); $(".min-price-range-hidden").val($(".price-range").slider("values", 0)); $(".max-price-range-hidden").val($(".price-range").slider("values", 1)); } if($( ".price-range").length > 0 && is_halfmap != 1) { var selected_status_adv_search = $('.status-js').val(); if( selected_status_adv_search == for_rent_price_slider ){ price_range_search(search_price_range_min_rent, search_price_range_max_rent); } else { price_range_search( search_price_range_min, search_price_range_max ); } $('.status-js').on('change', function(){ var search_status = $(this).val(); if( search_status == for_rent_price_slider ) { price_range_search(search_price_range_min_rent, search_price_range_max_rent); } else { price_range_search( search_price_range_min, search_price_range_max ); } }); $('.status-tab-js').on('click', function() { var tab_status = $(this).data('val'); if( tab_status == for_rent_price_slider ) { price_range_search(search_price_range_min_rent, search_price_range_max_rent); } else { price_range_search( search_price_range_min, search_price_range_max ); } }); } /*-----------------------------------------------------------------------------------*/ /* Search Status tabs /*-----------------------------------------------------------------------------------*/ $('.houzez-status-tabs li a').on('click', function(e) { e.preventDefault(); var $this = $(this); var status = $this.data('val'); $('#search-tabs').val(status); var $form = $('.houzez-search-form-js'); property_status_changed(status, $form); }); /*-----------------------------------------------------------------------------------*/ /* PROPERTIES SORTING /*-----------------------------------------------------------------------------------*/ function insertParam(key, value) { key = encodeURI(key); value = encodeURI(value); // get querystring , remove (?) and covernt into array var qrp = document.location.search.substr(1).split('&'); // get qrp array length var i = qrp.length; var j; while (i--) { //covert query strings into array for check key and value j = qrp[i].split('='); // if find key and value then join if (j[0] == key) { j[1] = value; qrp[i] = j.join('='); break; } } if (i < 0) { qrp[qrp.length] = [key, value].join('='); } // reload the page document.location.search = qrp.join('&'); } $('#sort_properties').on('change', function() { var key = 'sortby'; var value = $(this).val(); insertParam( key, value ); }); $('#insights_filter').on('change', function() { var key = 'listing_id'; var value = $(this).val(); insertParam( key, value ); }); $('#houzez-gmap-full').on('click', function() { var $this = $(this); if($this.hasClass('active')) { $this.removeClass('active'); $this.parents('.map-wrap').removeClass('houzez-fullscreen-map'); } else { $this.parents('.map-wrap').addClass('houzez-fullscreen-map'); $this.addClass('active'); } }); /*-------------------------------------------------------------------------- * Property Agent Contact Form * -------------------------------------------------------------------------*/ $( '.houzez_agent_property_form').on('click', function(e) { e.preventDefault(); var $result; var $this = $(this); var $form = $this.parents( 'form' ); var $form_wrap = $this.parents( '.property-form-wrap' ); $result = $form_wrap.find('.form_messages'); var $is_bottom = $('.is_bottom').val(); if($is_bottom == 'bottom') { $result = $form.find('.form_messages'); } $result.empty(); $.ajax({ url: ajaxurl, data: $form.serialize(), method: $form.attr('method'), dataType: "JSON", beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function(response) { if( response.success ) { $form.find('input[name="name"], input[name="mobile"], input[name="email"]').val(''); $form.find('textarea').val(''); if($is_bottom == 'bottom') { $result.empty().append('<div class="alert alert-success alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } else { $result.empty().append('<p class="success text-success"><i class="fa fa-check"></i> '+ response.msg +'</p>'); } } else { if($is_bottom == 'bottom') { $result.empty().append('<div class="alert alert-danger alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } else { $result.empty().append('<p class="error text-danger"><i class="fas fa-times"></i> '+ response.msg +'</p>'); } } $this.find('.houzez-loader-js').removeClass('loader-show'); if(houzez_reCaptcha == 1) { $form.find('.g-recaptcha-response').remove(); if( g_recaptha_version == 'v3' ) { houzezReCaptchaLoad(); } else { houzezReCaptchaReset(); } } if( houzez_vars.agent_redirection != '' && response.success ) { setTimeout(function(){ window.location.replace(houzez_vars.agent_redirection); }, 500); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); } }); }); /*-------------------------------------------------------------------------- * Direct message * -------------------------------------------------------------------------*/ $('.msg-login-required').on('click', function() { $('.modal-toggle-1').addClass("active"); jQuery('.login-form-tab').addClass('active show'); }); $( '.houzez-send-message').on('click', function(e) { e.preventDefault(); var $result; var $this = $(this); var $form = $this.parents( 'form' ); var $form_wrap = $this.parents( '.property-form-wrap' ); $result = $form_wrap.find('.form_messages'); var $is_bottom = $('.is_bottom').val(); if($is_bottom == 'bottom') { $result = $form.find('.form_messages'); } $result.empty(); var property_id = $('input[name="listing_id"]').val(); var message = $form.find('.hz-form-message').val(); var security = $('input[name="property_agent_contact_security"]').val(); $.ajax({ url: ajaxurl, data: { 'action' : 'houzez_start_thread', 'property_id' : property_id, 'message' : message, 'start_thread_form_ajax' : security, }, method: $form.attr('method'), dataType: "JSON", beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function(response) { if( response.success ) { $form.find('input[name="name"], input[name="mobile"], input[name="email"]').val(''); $form.find('textarea').val(''); if($is_bottom == 'bottom') { $result.empty().append('<div class="alert alert-success alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } else { $result.empty().append('<p class="success text-success"><i class="fa fa-check"></i> '+ response.msg +'</p>'); } } else { if($is_bottom == 'bottom') { $result.empty().append('<div class="alert alert-danger alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } else { $result.empty().append('<p class="error text-danger"><i class="fas fa-times"></i> '+ response.msg +'</p>'); } } $this.find('.houzez-loader-js').removeClass('loader-show'); if(houzez_reCaptcha == 1) { $form.find('.g-recaptcha-response').remove(); if( g_recaptha_version == 'v3' ) { houzezReCaptchaLoad(); } else { houzezReCaptchaReset(); } } if( houzez_vars.agent_redirection != '' ) { setTimeout(function(){ window.location.replace(houzez_vars.agent_redirection); }, 500); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); } }); }); /* * Property Thread Message Form * -----------------------------*/ $( '.start_thread_message_form').on('click', function(e) { e.preventDefault(); var $this = $(this); var $form = $this.parents( 'form' ); var $result = $form.find('.form_messages'); $.ajax({ url: ajaxurl, data: $form.serialize(), method: $form.attr('method'), dataType: "JSON", beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function( response ) { $this.find('.houzez-loader-js').removeClass('loader-show'); window.location.replace( response.url ); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); } }); }); /*-------------------------------------------------------------------------- * Contact agent form on agent detail page * -------------------------------------------------------------------------*/ $('#contact_realtor_btn').on('click', function(e) { e.preventDefault(); var current_element = $(this); var $this = $(this); var $form = $this.parents( 'form' ); jQuery.ajax({ type: 'post', url: ajaxurl, data: $form.serialize(), method: $form.attr('method'), dataType: "JSON", beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function( res ) { if( res.success ) { $('.form_messages').empty().append('<div class="alert alert-success alert-dismissible fade show" role="alert">'+res.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } else { $('.form_messages').empty().append('<div class="alert alert-danger alert-dismissible fade show" role="alert">'+res.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } $this.find('.houzez-loader-js').removeClass('loader-show'); if(houzez_reCaptcha == 1) { $form.find('.g-recaptcha-response').remove(); if( g_recaptha_version == 'v3' ) { houzezReCaptchaLoad(); } else { houzezReCaptchaReset(); } } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); } }); }); /*-------------------------------------------------------------------------- * AutoComplete Search * -------------------------------------------------------------------------*/ if( keyword_autocomplete != 0 ) { var houzezAutoComplete = function () { var ajaxCount = 0; var auto_complete_container = $('.auto-complete'); var lastLenght = 0; $( 'body' ).on('keyup', '.houzez-keyword-autocomplete', HouzezDebounce(function() { var $this = $( this ); var $dataType = $this.data('type'); var $form = $this.parents( 'form'); if( $dataType == 'banner' ) { var auto_complete_container = $( '#houzez-auto-complete-banner' ); } else { var auto_complete_container = $form.find( '.auto-complete' ); } var keyword = $( this ).val(); keyword = $.trim( keyword ); var currentLenght = keyword.length; if ( currentLenght >= 2 && currentLenght != lastLenght ) { lastLenght = currentLenght; auto_complete_container.fadeIn(); $.ajax({ type: 'POST', url: ajaxurl, data: { 'action': 'houzez_get_auto_complete_search', 'key': keyword, }, beforeSend: function( ) { ajaxCount++; if ( ajaxCount == 1 ) { auto_complete_container.html('<ul class="list-group"><li class="list-group-item"><i class="fa fa-spinner fa-spin fa-fw"></i> '+autosearch_text+ '</li></ul>'); } }, success: function(data) { ajaxCount--; if ( ajaxCount == 0 ) { auto_complete_container.show(); if( data != '' ) { auto_complete_container.empty().html(data).bind(); } } }, error: function(errorThrown) { ajaxCount--; if ( ajaxCount == 0 ) { auto_complete_container.html('<ul class="list-group"><li class="list-group-item"><i class="fa fa-spinner fa-spin fa-fw"></i> '+autosearch_text+ '</li></ul>'); } } }); } else { if ( currentLenght != lastLenght ) { auto_complete_container.fadeOut(); } } }, 400)); // 500 milliseconds as the delay auto_complete_container.on( 'click', 'li', function (){ $('.houzez-keyword-autocomplete').val( $( this ).data( 'text' ) ); auto_complete_container.fadeOut(); }).bind(); } houzezAutoComplete(); } /*-------------------------------------------------------------------------- * Save Search * -------------------------------------------------------------------------*/ $(".save_search_click").on('click', function(e) { e.preventDefault(); var $this = $(this); var search_args = $('input[name="search_args"]').val(); var security = $('input[name="houzez_save_search_ajax"]').val(); var search_URI = $('input[name="search_URI"]').val(); if( parseInt( userID, 10 ) === 0 ) { houzez_login_modal(); } else { $.ajax({ url: ajaxurl, data: { 'action': 'houzez_save_search', 'search_args': search_args, 'search_URI': search_URI, 'houzez_save_search_ajax': security, }, method: 'POST', dataType: 'JSON', beforeSend: function () { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function (response) { if (response.success) { $('.save_search_click').attr('disabled', true); } }, error: function (xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function () { $this.find('.houzez-loader-js').removeClass('loader-show'); } }); } }); /*-------------------------------------------------------------------------- * Property Schedule Contact Form * -------------------------------------------------------------------------*/ $( '.schedule_contact_form').on('click', function(e) { e.preventDefault(); var $this = $(this); var $form = $this.parents( 'form' ); var $result = $form.find('.form_messages'); $.ajax({ url: ajaxurl, data: $form.serialize(), method: $form.attr('method'), dataType: "JSON", beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function(response) { if( response.success ) { $form.find('input[name="name"], input[name="phone"], input[name="email"]').val(''); $form.find('textarea').val(''); $result.empty().append('<div class="alert alert-success alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); if( typeof response.redirect_to !=='undefined' && response.redirect_to != '' ) { setTimeout(function(){ window.location.replace(response.redirect_to); }, 500); } } else { $result.empty().append('<div class="alert alert-danger alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function(){ $this.find('.houzez-loader-js').removeClass('loader-show'); } }); }); /* ------------------------------------------------------------------------ */ /* autocomplete result position /* ------------------------------------------------------------------------ */ function setAutoCompleteResultPosition() { var parallax_banner_inner_height = $('.top-banner-wrap').innerHeight(); var banner_caption_inner_height = $('.banner-caption').innerHeight(); var autocomplete_search_position = (parallax_banner_inner_height - (parallax_banner_inner_height - banner_caption_inner_height) / 2); $('#houzez-auto-complete-banner').css('top', autocomplete_search_position); } /* ------------------------------------------------------------------------ */ /* Elementor Mobile menu trigger /* ------------------------------------------------------------------------ */ $('.houzez-nav-menu-main-mobile-wrap .houzez-menu-toggle').click(function (e) { $('.houzez-nav-menu-main-mobile-wrap .navbar-nav, .houzez-nav-menu-main-mobile-wrap .houzez-menu-toggle').toggleClass('houzez-nav-menu-active'); }); $(window).on('load', function(){ setAutoCompleteResultPosition(); }); $win.on('resize', function () { setAutoCompleteResultPosition(); }); /*-----------------------------------------------------------------------------------*/ /* Print Property /*-----------------------------------------------------------------------------------*/ if( $('.houzez-print').length > 0 ) { $('.houzez-print').on('click', function (e) { e.preventDefault(); var propID, printWindow; propID = $(this).attr('data-propid'); printWindow = window.open('', 'Print Me', 'width=800 ,height=842'); $.ajax({ type: 'POST', url: ajaxurl, data: { 'action': 'houzez_create_print', 'propid': propID, }, success: function (data) { printWindow.document.write(data); printWindow.document.close(); printWindow.focus(); }, error: function (xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); }); } /*-----------------------------------------------------------------------------------*/ /* Reviews like dislike /*-----------------------------------------------------------------------------------*/ var review_likes = function() { $('.hz-like-dislike-js').on('click', function(e) { e.preventDefault(); var $this = jQuery(this); var $parent = $this.parents('.likes-container-js'); if($this.hasClass('already-voted')){ $parent.find( '.vote-msg' ).text($this.data('msg')).show(); var hideMessage = function(){ $parent.find( '.vote-msg' ).hide(); }; setTimeout(hideMessage, 3000); } else { var review_id = $this.data('id'); var type = $this.data('type'); $.ajax({ type: 'post', url: ajaxurl, dataType: "JSON", data: { 'action': 'reviews_likes_dislikes', 'type': type, 'review_id': review_id, }, beforeSend: function( ) { $parent.find('.vote-msg').empty(); $parent.find('.houzez-loader-js').addClass('loader-show'); if(type == 'likes') { $('.review-dislike-button a').removeClass('already-voted'); } else if(type == 'dislikes') { $('.review-like-button a').removeClass('already-voted'); } }, success: function(res) { if(res.success) { $parent.find('.likes-count').text(res.likes); $parent.find('.dislikes-count').text(res.dislikes); $parent.find('.vote-msg').text(res.msg).show(); } else { $parent.find('.vote-msg').text(res.msg).show(); } var hideMessage = function(){ $parent.find( '.vote-msg' ).hide(); }; setTimeout(hideMessage, 3000); $this.addClass('already-voted'); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function(){ $parent.find('.houzez-loader-js').removeClass('loader-show'); } }); } }); } review_likes(); /*-----------------------------------------------------------------------------------*/ /* Reviews /*-----------------------------------------------------------------------------------*/ $('#submit-review').on('click', function(e) { e.preventDefault(); var $this = $(this); var $form = $this.parents( 'form' ); var $result = $form.find('.form_messages'); $.ajax({ url: ajaxurl, data: $form.serialize(), method: $form.attr('method'), dataType: "JSON", beforeSend: function( ) { $this.find('.houzez-loader-js').addClass('loader-show'); }, success: function(response) { if( response.success ) { $result.empty().append('<div class="alert alert-success alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); window.location.replace( response.review_link ); } else { $result.empty().append('<div class="alert alert-danger alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function() { $this.find('.houzez-loader-js').removeClass('loader-show'); } }); }); var listing_review_ajax = function(sortby, listing_id, paged) { var review_container = $('#houzez_reviews_container'); var review_post_type = $('input[name="review_post_type"]').val(); $.ajax({ type: 'post', url: ajaxurl, data: { 'action': 'houzez_ajax_review', 'sortby': sortby, 'listing_id': listing_id, 'review_post_type': review_post_type, 'paged': paged }, beforeSend: function( ) { review_container.empty().append('' +'<div id="houzez-map-loading">' +'<div class="mapPlaceholder">' +'<div class="loader-ripple spinner">' +'<div class="bounce1"></div>' +'<div class="bounce2"></div>' +'<div class="bounce3"></div>' +'</div>' +'</div>' +'</div>' ); $('html, body').animate({ scrollTop: $("#property-review-wrap").offset().top-50 }, 'slow'); }, success: function(data) { review_container.empty(); review_container.html(data); review_likes(); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); }, complete: function(){ } }); } if($('#sort_review').length > 0) { $('#sort_review').on('change', function() { var sortby = $(this).val(); var listing_id = $('input[name="listing_id"]').val(); var paged = 1; $('#review_paged').val(paged); $('#review_prev').attr('disabled', true); $('#review_next').attr('disabled', false); listing_review_ajax(sortby, listing_id, paged); return; }); } if($('#review_next').length > 0) { $('#review_next').on('click', function(e) { e.preventDefault(); $('#review_prev').removeAttr('disabled'); var sortby = $('#sort_review').val(); var total_pages = $('#total_pages').val(); var listing_id = $('input[name="listing_id"]').val(); var paged = $('#review_paged').val(); paged = Number(paged)+1; $('#review_paged').val(paged); if(paged == total_pages) { $(this).attr('disabled', true); } listing_review_ajax(sortby, listing_id, paged); return; }); } if($('#review_prev').length > 0) { $('#review_prev').on('click', function(e) { e.preventDefault(); $('#review_next').removeAttr('disabled'); var sortby = $('#sort_review').val(); var listing_id = $('input[name="listing_id"]').val(); var paged = $('#review_paged').val(); paged = Number(paged)-1; $('#review_paged').val(paged); if(paged <= 1) { $(this).attr('disabled', true); } listing_review_ajax(sortby, listing_id, paged); return; }); } /* ------------------------------------------------------------------------ */ /* Houzez Select Filter /* ------------------------------------------------------------------------ */ function houzezSelectFilter($this, $dataRef, $list_num = '', is_on_load = '') { var e = $this.data("target"), i = $this.find(":selected").data("ref"); if( is_on_load == 'yes' ) { e = $list_num; i = $dataRef; } $("select." + e).val(""), null == i ? $("select." + e) .find("option") .each(function () { console.log("inside undefined"), $(this).removeAttr("disabled hidden"); }) : $("select." + e) .find("option") .each(function () { var e = $(this).data("belong"), t = $(this).val(); i != e && t != '' ? ($(this).prop("disabled", !0), $(this).prop("hidden", !0)) : ($(this).prop("disabled", !1), $(this).prop("hidden", !1)); //i != e && -1 != t ? ($(this).prop("disabled", !0), $(this).prop("hidden", !0)) : ($(this).prop("disabled", !1), $(this).prop("hidden", !1)); }); $("select." + e).selectpicker('refresh'); } $(".houzezSelectFilter").on("change", function () { var $this = $(this); houzezSelectFilter($this); }); if( $('.houzez-search-form-js').length > 0 || $('#location').length > 0 ) { var countryRef, stateRef, cityRef, areasRef; if( is_edit_property ) { countryRef = $('#country').data("country"); stateRef = $('#countyState').data("state"); cityRef = $('#city').data("city"); areasRef = $('#neighborhood').data("area"); } else { countryRef = houzez_vars.s_country; stateRef = houzez_vars.s_state; cityRef = houzez_vars.s_city; areasRef = houzez_vars.s_areas; } if( ( $('.houzez-country-js').length > 0 || $('#country').length > 0 ) && countryRef != "" ) { var countryFilter = $('.houzezCountryFilter'); houzezSelectFilter(countryFilter, countryRef, 'houzezSecondList', 'yes'); $( window ).load(function() { $('.houzezSecondList').val(stateRef); $("select.houzezSecondList").selectpicker('refresh'); }); } if( ( $('.houzez-state-js').length > 0 || $('#countyState').length > 0 ) && stateRef != "" ) { var stateFilter = $('.houzezStateFilter'); houzezSelectFilter(stateFilter, stateRef, 'houzezThirdList', 'yes'); $( window ).load(function() { $('.houzezThirdList').val(cityRef); $("select.houzezThirdList").selectpicker('refresh'); }); } if( ( $('.houzez-city-js').length > 0 || $('#city').length > 0 ) && cityRef != "" ) { var cityFilter = $('.houzezCityFilter'); houzezSelectFilter(cityFilter, cityRef, 'houzezFourthList', 'yes'); $( window ).load(function() { $('.houzezFourthList').val(areasRef); $("select.houzezFourthList").selectpicker('refresh'); }); } } /*-----------------------------------------------------------------------------------*/ /* mortgage calculate by waqas /*-----------------------------------------------------------------------------------*/ if( $('#houzez_mortgage_calculate').length > 0 ) { $('#houzez_mortgage_calculate').click(function(e) { e.preventDefault(); var monthly_payment = houzez_vars.monthly_payment; var weekly_payment = houzez_vars.weekly_payment; var bi_weekly_payment = houzez_vars.bi_weekly_payment; var currency_symb = houzez_vars.currency_symbol; var totalPrice = 0; var down_payment = 0; var term_years = 0; var interest_rate = 0; var amount_financed = 0; var monthInterest = 0; var intVal = 0; var mortgage_pay = 0; var annualCost = 0; var payment_period; var mortgage_pay_text; var total_years = $('#mc_term_years').val(); payment_period = $('#mc_payment_period').val(); totalPrice = $('#mc_total_amount').val().replace(/,/g, ''); down_payment = $('#mc_down_payment').val().replace(/,/g, ''); amount_financed = totalPrice - down_payment; term_years = parseInt ($('#mc_term_years').val(),10) * payment_period; interest_rate = parseFloat ($('#mc_interest_rate').val(),10); monthInterest = interest_rate / (payment_period * 100); intVal = Math.pow( 1 + monthInterest, -term_years ); mortgage_pay = amount_financed * (monthInterest / (1 - intVal)); annualCost = mortgage_pay * payment_period; if( $('#mc_term_years').val() == '' || $('#mc_total_amount') == '' || $('#mc_down_payment') == '' || $('#mc_interest_rate') == '' ) { return; } var total_mortgage_with_interest = mortgage_pay * total_years * payment_period; var total_with_down_payment = total_mortgage_with_interest + parseInt(down_payment); if( payment_period == '12' ) { mortgage_pay_text = monthly_payment; } else if ( payment_period == '26' ) { mortgage_pay_text = bi_weekly_payment; } else if ( payment_period == '52' ) { mortgage_pay_text = weekly_payment; } if(currency_position == 'after') { $('#mortgage_mwbi').html("<strong>"+mortgage_pay_text+ "</strong>: <span>"+(Math.round(mortgage_pay * 100)) / 100 + currency_symb + "</span>"); $('#amount_financed').html(((Math.round(amount_financed * 100)) / 100)+currency_symb); $('#mortgage_pay').html(((Math.round(mortgage_pay * 100)) / 100)+currency_symb); $('#annual_cost').html(( (Math.round(annualCost * 100)) / 100)+currency_symb); $('#balance_payable_with_interest').html(( (Math.round(total_mortgage_with_interest * 100)) / 100)+currency_symb); $('#total_with_down_payment').html(( (Math.round(total_with_down_payment * 100)) / 100)+currency_symb); } else { $('#mortgage_mwbi').html("<strong>"+mortgage_pay_text+ "</strong>: <span>" +currency_symb+ (Math.round(mortgage_pay * 100)) / 100 + "</span>"); $('#amount_financed').html(currency_symb+(Math.round(amount_financed * 100)) / 100); $('#mortgage_pay').html(currency_symb+(Math.round(mortgage_pay * 100)) / 100); $('#annual_cost').html(currency_symb+(Math.round(annualCost * 100)) / 100); $('#balance_payable_with_interest').html(currency_symb+(Math.round(total_mortgage_with_interest * 100)) / 100); $('#total_with_down_payment').html(currency_symb+(Math.round(total_with_down_payment * 100)) / 100); } $('#cal_years').html(total_years); $('.mortgage-details').show(); }); } /* ------------------------------------------------------------------------ */ /* Beds and baths /* ------------------------------------------------------------------------ */ var beds_baths = function(btn_action, btn_count, btn_val) { $('.'+btn_action).on('click', function(e) { e.preventDefault(); var current_val = parseInt($('.'+btn_val).val()) || 0; if(btn_action == 'btn_count_plus' || btn_action == 'btn_beds_plus') { current_val++; } else { if(current_val == 0) return; current_val--; } $('.'+btn_count).text(current_val); $('.'+btn_val).val(current_val); }); } beds_baths('btn_count_plus', 'baths_count', 'bathrooms'); beds_baths('btn_count_minus', 'baths_count', 'bathrooms'); beds_baths('btn_beds_plus', 'beds_count', 'bedrooms'); beds_baths('btn_beds_minus', 'beds_count', 'bedrooms'); $('.btn-apply').on('click', function(e) { e.preventDefault(); $('.advanced-search-v3 .btn-group .dropdown-menu').removeClass('show'); }); $('.clear-baths').on('click', function(e) { e.preventDefault(); $('.baths_count').text('0'); $('.bathrooms').val(''); }); $('.clear-beds').on('click', function(e) { e.preventDefault(); $('.beds_count').text('0'); $('.bedrooms').val(''); }); $('.clear-checkboxes').on('click', function(e) { e.preventDefault(); $(this).parents('.btn-group').find('input[type="checkbox"]').prop("checked", false).attr('checked', false); }); /* ------------------------------------------------------------------------ */ /* PAYPAL & Stripe OPTIONS /* ------------------------------------------------------------------------ */ $('.method-select input').on('change',function () { if($(this).is(':checked')) { $('.recurring-payment-wrap').slideUp(); $(this).parents('.payment-method-block').next('.recurring-payment-wrap').slideDown(); }else{ $('.recurring-payment-wrap').slideUp(); } }); function paypal_option(ele){ if($(ele).attr('checked')) { $(ele).parents('.payment-method-block').next('.recurring-payment-wrap').slideDown(); }else{ $(ele).parents('.payment-method-block').next('.recurring-payment-wrap').slideUp(); } } paypal_option('.paypal-method'); paypal_option('.stripe-method'); $('button.stripe-button-el span').prepend('<i class="fa fa-credit-card"></i>'); $('#stripe_package_recurring').click(function () { if( $(this).attr('checked') ) { $('.houzez_payment_form').append('<input type="hidden" name="houzez_stripe_recurring" id="houzez_stripe_recurring" value="1">'); }else{ $('#houzez_stripe_recurring').remove(); } }); /* ------------------------------------------------------------------------ */ /* Change listing fee for featured /* ------------------------------------------------------------------------ */ $('.prop_featured').on('change', function() { var currency_symbol = houzez_vars.currency_symbol; var currency_position = houzez_vars.currency_position; var total_price, total_price_with_currency, price_regular_with_currency; var price_regular = parseFloat( $('#submission_price').text() ); var price_featured = parseFloat( $('#submission_featured_price').text() ); total_price = price_regular+price_featured; if ( currency_position === 'after'){ price_regular_with_currency = price_regular +''+currency_symbol; total_price_with_currency = total_price +''+currency_symbol; }else{ price_regular_with_currency = currency_symbol +''+price_regular; total_price_with_currency = currency_symbol+''+total_price; } if( $(this).is(':checked') ) { $('#submission_total_price').text(total_price_with_currency); $('#featured_pay').val(1); $('input[name="pay_ammout"]').val(total_price * 100); $('#houzez_listing_price').val(total_price); } else { $('#submission_total_price').text(price_regular_with_currency); $('#featured_pay').val(0); $('input[name="pay_ammout"]').val(price_regular * 100); $('#houzez_listing_price').val(price_regular); } return false; }); /* ------------------------------------------------------------------------ */ /* Paypal single listing payment /* ------------------------------------------------------------------------ */ $('#houzez_complete_order').on('click', function(e) { e.preventDefault(); var hform, relist_mode, payment_gateway, houzez_listing_price, property_id, is_prop_featured, is_prop_upgrade; payment_gateway = $("input[name='houzez_payment_type']:checked").val(); is_prop_featured = $("input[name='featured_pay']").val(); is_prop_upgrade = $("input[name='is_upgrade']").val(); relist_mode = $("input[name='relist_mode']").val(); property_id = $('#houzez_property_id').val(); houzez_listing_price = $('#houzez_listing_price').val(); if( payment_gateway == 'paypal' ) { fave_processing_modal( paypal_connecting ); paypal_per_listing_payment( property_id, is_prop_featured, is_prop_upgrade, relist_mode); } else if ( payment_gateway == 'stripe' ) { fave_processing_modal( processing_text ); stripe_per_listing_payment( property_id, is_prop_featured, is_prop_upgrade, relist_mode); } else if ( payment_gateway == 'direct_pay' ) { fave_processing_modal( processing_text ); bank_transfer_per_listing(property_id, houzez_listing_price); } return; }); /* ------------------------------------------------------------------------ */ /* Paypal payment for per listing /* ------------------------------------------------------------------------ */ var paypal_per_listing_payment = function( property_id, is_prop_featured, is_prop_upgrade, relist_mode ) { $.ajax({ type: 'post', url: ajaxurl, data: { 'action': 'houzez_property_paypal_payment', 'prop_id': property_id, 'is_prop_featured': is_prop_featured, 'is_prop_upgrade': is_prop_upgrade, 'relist_mode': relist_mode, }, success: function( response ) { window.location.href = response; }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } /* ------------------------------------------------------------------------ */ /* Stripe payment for per listing /* ------------------------------------------------------------------------ */ var stripe_per_listing_payment = function( property_id, is_prop_featured, is_prop_upgrade, relist_mode ) { $.ajax({ type: 'post', url: ajaxurl, dataType: 'JSON', data: { 'action': 'houzez_property_stripe_payment', 'prop_id': property_id, 'is_prop_featured': is_prop_featured, 'is_prop_upgrade': is_prop_upgrade, 'relist_mode': relist_mode, }, success: function( response ) { if( response.status ) { window.location.href = response.paymeny_link; } else { alert(response.message); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } /* ------------------------------------------------------------------------ */ /* Wire Transfer per listing payment /* ------------------------------------------------------------------------ */ var bank_transfer_per_listing = function( prop_id, listing_price ) { var is_featured = $('input[name="featured_pay"]').val(); var is_upgrade = $('input[name="is_upgrade"]').val(); jQuery.ajax({ type: 'POST', url: ajaxurl, data: { 'action' : 'houzez_direct_pay_per_listing', 'prop_id' : prop_id, 'is_featured' : is_featured, 'is_upgrade' : is_upgrade }, success: function (data) { window.location.href = data; }, error: function (errorThrown) {} }); } /* ------------------------------------------------------------------------ */ /* Select Membership payment /* ------------------------------------------------------------------------ */ var houzez_stripe_package_payment = function( houzez_package_id, is_stripe_recurring ) { $.ajax({ type: 'POST', url: ajaxurl, dataType: 'JSON', data: { 'action' : 'houzez_stripe_package_payment', 'package_id' : houzez_package_id, 'is_stripe_recurring' : is_stripe_recurring }, success: function (response) { if( response.status ) { window.location.href = response.paymeny_link; } else { alert(response.message); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } var houzez_paypal_package_payment = function( houzez_package_price, houzez_package_name, houzez_package_id ) { $.ajax({ type: 'POST', url: ajaxurl, data: { 'action' : 'houzez_paypal_package_payment', 'houzez_package_price' : houzez_package_price, 'houzez_package_name' : houzez_package_name, 'houzez_package_id' : houzez_package_id }, success: function (data) { window.location.href = data; }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } var houzez_recuring_paypal_package_payment = function( houzez_package_price, houzez_package_name, houzez_package_id ) { jQuery.ajax({ type: 'POST', url: ajaxurl, data: { 'action' : 'houzez_recuring_paypal_package_payment', 'houzez_package_name' : houzez_package_name, 'houzez_package_id' : houzez_package_id, 'houzez_package_price' : houzez_package_price }, success: function (data) { //alert(data); return false; window.location.href = data; }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } var direct_bank_transfer_package = function( houzez_package_id, houzez_package_price, houzez_package_name ) { jQuery.ajax({ type: 'POST', url: ajaxurl, data: { 'action' : 'houzez_direct_pay_package', 'selected_package' : houzez_package_id, }, success: function (data) { window.location.href = data; }, error: function (errorThrown) {} }); } var houzez_free_membership_package = function ( houzez_package_id ) { jQuery.ajax({ type: 'POST', url: ajaxurl, data: { 'action' : 'houzez_free_membership_package', 'selected_package' : houzez_package_id, }, success: function (data) { window.location.href = data; }, error: function (errorThrown) {} }); } var houzez_membership_data = function(currnt) { var payment_gateway = $("input[name='houzez_payment_type']:checked").val(); var houzez_package_price = $("input[name='houzez_package_price']").val(); var houzez_package_id = $("input[name='houzez_package_id']").val(); var houzez_package_name = $("#houzez_package_name").text(); if( payment_gateway == 'paypal' ) { fave_processing_modal( paypal_connecting ); if ($('#paypal_package_recurring').is(':checked')) { houzez_recuring_paypal_package_payment( houzez_package_price, houzez_package_name, houzez_package_id ); } else { houzez_paypal_package_payment( houzez_package_price, houzez_package_name, houzez_package_id ); } } else if ( payment_gateway == 'stripe' ) { fave_processing_modal( processing_text ); var is_stripe_recurring = $('#houzez_stripe_recurring').is(':checked'); houzez_stripe_package_payment( houzez_package_id, is_stripe_recurring ); } else if ( payment_gateway == 'direct_pay' ) { fave_processing_modal( processing_text ); direct_bank_transfer_package( houzez_package_id, houzez_package_price, houzez_package_name ); } else { fave_processing_modal( processing_text ); houzez_free_membership_package( houzez_package_id ); } return false; } var houzez_register_user_with_membership = function ( currnt ) { var $form = currnt.parents('form'); var $messages = $('#packmem-msgs'); $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: $form.serialize(), beforeSend: function( ) { currnt.find('.houzez-loader-js').addClass('loader-show'); }, complete: function(){ currnt.find('.houzez-loader-js').removeClass('loader-show'); }, success: function( response ) { if( response.success ) { houzez_membership_data(currnt); } else { $('html, body').animate({ scrollTop: $(".frontend-submission-page").offset().top }, 'slow'); $messages.empty().append('<div class="alert alert-danger alert-dismissible fade show" role="alert">'+response.msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>'); } }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } $('#houzez_complete_membership').on('click', function(e) { e.preventDefault(); var currnt = $(this); if( parseInt( userID, 10 ) === 0 || userID == undefined) { houzez_register_user_with_membership( currnt ); return; } houzez_membership_data(currnt); } ); /*-------------------------------------------------------------------------- * Area Switcher * -------------------------------------------------------------------------*/ var areaSwitcherList = $('#area-switcher-list-js'); if( areaSwitcherList.length > 0 ) { $('#area-switcher-list-js > li').on('click', function(e) { //e.stopPropagation(); var selectedAreaCode = $(this).data( 'area-code' ); if ( selectedAreaCode ) { $('#houzez-switch-to-area').val( selectedAreaCode ); var houzez_switch_to_area = $('#houzez-switch-to-area').val(); fave_processing_modal(processing_text); $.ajax({ url: ajaxurl, dataType: 'JSON', method: 'POST', data: { 'action' : 'houzez_switch_area', 'switch_to_area' : houzez_switch_to_area, }, success: function (res) { if( res.success ) { window.location.reload( true ); } else { console.log( res ); } }, error: function (xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } }); } /*-------------------------------------------------------------------------- * Currency Switcher * -------------------------------------------------------------------------*/ var currencySwitcherList = $('#hz-currency-switcher-list'); if( currencySwitcherList.length > 0 ) { $('#hz-currency-switcher-list > li').on('click', function(e) { var selectedCurrencyCode = $(this).data( 'currency-code' ); if ( selectedCurrencyCode ) { $('#houzez-switch-to-currency').val( selectedCurrencyCode ); var houzez_switch_to_currency = $('#houzez-switch-to-currency').val(); fave_processing_modal(processing_text); $.ajax({ url: ajaxurl, dataType: 'JSON', method: 'POST', data: { 'action' : 'houzez_currency_converter', 'currency_converter' : selectedCurrencyCode }, success: function (res) { if( res.success ) { window.location.reload( true ); } else { console.log( res ); } }, error: function (xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } }); } /* ------------------------------------------------------------------------ */ /* tooltip /* ------------------------------------------------------------------------ */ $('[data-toggle="tooltip"]').tooltip() /* ------------------------------------------------------------------------ */ /* prevent advanced search dropdowns from closing on clicks /* ------------------------------------------------------------------------ */ $('.advanced-search-dropdown').on('click', function (e) { e.stopPropagation(); }); /* ------------------------------------------------------------------------ */ /* agent phone number /* ------------------------------------------------------------------------ */ $('.agent-show-onClick').on('click', function (e) { $(this).toggleClass('agent-phone-hidden'); }); /* ------------------------------------------------------------------------ */ /* drop down menus /* ------------------------------------------------------------------------ */ $('.dropdown-menu span.dropdown-toggle').on('click', function(e) { if (!$(this).next().hasClass('show')) { $(this).parents('.dropdown-menu').first().find('.show').removeClass('show'); } var $subMenu = $(this).next('.dropdown-menu'); $subMenu.toggleClass('show'); $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function(e) { $('.dropdown-submenu .show').removeClass('show'); }); return false; }); /* ------------------------------------------------------------------------ */ /* avoid zoom when double click on mobile devices /* ------------------------------------------------------------------------ */ $.fn.nodoubletapzoom = function () { $(this).bind('touchstart', function preventZoom(e) { var t2 = e.timeStamp, t1 = $(this).data('lastTouch') || t2, dt = t2 - t1, fingers = e.originalEvent.touches.length; $(this).data('lastTouch', t2); if (!dt || dt > 500 || fingers > 1) return; e.preventDefault(); $(this).trigger('click').trigger('click'); }); }; /* ------------------------------------------------------------------------ */ /* mobile menu /* ------------------------------------------------------------------------ */ // disable touch if($('.nav-mobile-js').length > 0 ) { var smm_transform = 256; if ( houzez_rtl ) { smm_transform = -256; } var slideout_left = new Slideout({ 'panel': document.getElementById('main-wrap'), 'menu': document.getElementById('nav-mobile'), 'padding': smm_transform, 'tolerance': 70, 'side': 'left', 'easing': 'cubic-bezier(.32,2,.55,.27)' }); slideout_left.disableTouch(); } if($('.main-wrap-js').length > 0 ) { var smd_transform = 256; if ( houzez_rtl ) { smd_transform = -256; } var slideout_right = new Slideout({ 'panel': document.getElementById('main-wrap'), 'menu': document.getElementById('navi-user'), 'padding': smd_transform, 'tolerance': 70, 'side': 'right', 'easing': 'cubic-bezier(.32,2,.55,.27)' }); slideout_right.disableTouch(); } // Toggle button $('.toggle-button-left, #nav-mobile .nav-link:not(.dropdown-toggle)').on('click', function () { slideout_left.toggle(); $('.slideout-menu-left').toggleClass('open'); }); $('.toggle-button-right').on('click', function () { slideout_right.toggle(); $('.slideout-menu-right').toggleClass('open'); }); /* ---------------------------------------------------- */ /* Close Menu when click outside /* ---------------------------------------------------- */ $(document).on('mouseup', function (e) { var mobileNavcontainer = $(".nav-mobile"); var toggleBtnCloseW = $(".toggle-button-left"); var mobileMenuDiv = $('#nav-mobile'); var toggleBtnCloseL = $(".toggle-button-right"); var mobileMenuDivL = $('#navi-user'); if (!mobileNavcontainer.is(e.target) && mobileNavcontainer.has(e.target).length === 0 && mobileMenuDiv.hasClass('open') && !toggleBtnCloseW.is(e.target) && toggleBtnCloseW.has(e.target).length === 0 ) { slideout_left.toggle(); $('.slideout-menu-left').toggleClass('open'); } if (!mobileNavcontainer.is(e.target) && mobileNavcontainer.has(e.target).length === 0 && mobileMenuDivL.hasClass('open') && !toggleBtnCloseL.is(e.target) && toggleBtnCloseL.has(e.target).length === 0 ) { slideout_right.toggle(); $('.slideout-menu-right').toggleClass('open'); } }); /* ------------------------------------------------------------------------ */ /* search distance slider /* ------------------------------------------------------------------------ */ $(function () { if($('.distance-range').length > 0) { $(".distance-range").slider(); } }); /* ------------------------------------------------------------------------ */ /* parallax /* ------------------------------------------------------------------------ */ var header_parallax = $('.parallax'); if( header_parallax.length > 0 ) { header_parallax.parallaxBackground({ parallaxBgPosition: "center center", parallaxBgRepeat: "no-repeat", parallaxBgSize: "cover", parallaxSpeed: "0.25", }); } /* ------------------------------------------------------------------------ */ /* mobile search form overlay /* ------------------------------------------------------------------------ */ $(document).ready(function () { $(".mobile-search-nav").click(function () { $("#overlay-search-advanced-module").toggleClass("open"); }); }); $(document).ready(function () { $(".overlay-search-module-close, .overly_is_halfmap .half-map-search-js-btn").click(function () { $("#overlay-search-advanced-module").toggleClass("open"); }); }); /* ------------------------------------------------------------------------ */ /* half map elements size /* ------------------------------------------------------------------------ */ function setSectionHeight() { var window_height = $(window).innerHeight(); var sections_height = window_height - header_area_height; sections_height = sections_height - advanced_search_nav_height; sections_height = sections_height - elementor_location_header_height; if ($(window).width() >= 767) { $('.half-map-left-wrap, .half-map-right-wrap').css('height', sections_height); } else { $('.map-on-right .half-map-right-wrap').css('height', sections_height); $('.map-on-right .half-map-left-wrap').css('height', '100vh'); $('.map-on-left .half-map-right-wrap').css('height', sections_height); $('.map-on-left .half-map-left-wrap').css('height', '100vh'); } } setSectionHeight(); $win.on('resize', function () { setSectionHeight(); }); /* ------------------------------------------------------------------------ */ /* listing switch view /* ------------------------------------------------------------------------ */ $('.switch-btn').on("click", function () { $('.switch-btn').removeClass('active'); $(this).addClass('active'); if ($(this).hasClass('btn-list')) { $('.listing-view').removeClass('grid-view').addClass('list-view'); } else if ($(this).hasClass('btn-grid')) { $('.listing-view').removeClass('list-view').addClass('grid-view'); } }); /* ------------------------------------------------------------------------ */ /* compare properties /* ------------------------------------------------------------------------ */ $(document).ready(function () { $('.show-compare-panel').click(function () { $(this).toggleClass('active'); $('.compare-property-active').addClass('compare-property-active-push-toleft'); $('#compare-property-panel').addClass('compare-property-panel-open'); //disableOther( 'show-compare-panel' ); }); $('.close-compare-panel').click(function () { $(this).toggleClass('active'); $('.compare-property-active').removeClass('compare-property-active-push-toleft'); $('#compare-property-panel').removeClass('compare-property-panel-open'); //disableOther( 'show-compare-panel' ); }); }); /* ------------------------------------------------------------------------ */ /* property slider /* ------------------------------------------------------------------------ */ var property_banner_slider = $('.property-slider'); if( property_banner_slider.length > 0 ) { var autoplay = property_banner_slider.data('autoplay'); var slider_loop = property_banner_slider.data('loop'); var slider_speed = property_banner_slider.data('speed'); var s_loop = false; if(slider_loop == 1) { s_loop = true; } property_banner_slider.slick({ rtl: houzez_rtl, autoplay: autoplay, autoplaySpeed: slider_speed, lazyLoad: 'ondemand', infinite: s_loop, speed: 300, slidesToShow: 1, arrows: true, adaptiveHeight: true }); } var property_detail_gallery = $('#property-gallery-js'); if( property_detail_gallery.length > 0 ) { property_detail_gallery.lightSlider({ rtl: houzez_rtl, gallery:true, item:1, thumbItem:8, slideMargin: 0, speed:500, adaptiveHeight: true, auto:false, loop:false, prevHtml: '<button type="button" class="slick-prev slick-arrow"></button>', nextHtml: '<button type="button" class="slick-next slick-arrow"></button>', onSliderLoad: function() { property_detail_gallery.removeClass('cS-hidden'); } }); } var lightbox_slider_js = $('#lightbox-slider-js'); if( lightbox_slider_js.length > 0 ) { lightbox_slider_js.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, speed: 300, slidesToShow: 1, arrows: true, adaptiveHeight: true, }); $('.houzez-trigger-popup-slider-js').on('click', function (e) { e.preventDefault(); var slider_num = parseInt( $(this).data('slider-no') ); setTimeout(function(){ lightbox_slider_js.slick('slickGoTo', slider_num - 1); }, 200); }); } var listing_slider_variable_width = $('.listing-slider-variable-width'); if( listing_slider_variable_width.length > 0 ) { listing_slider_variable_width.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, speed: 300, slidesToShow: 1, centerMode: true, variableWidth: true, arrows: true, adaptiveHeight: true }); $('.property-detail-v5 #pills-gallery-tab').on('click', function() { if (!listing_slider_variable_width.hasClass('hz-slick-refreshed')) { setTimeout(function() { listing_slider_variable_width.slick('setPosition'); listing_slider_variable_width.slick('refresh'); listing_slider_variable_width.addClass('hz-slick-refreshed'); }, 0); } }); } /* ------------------------------------------------------------------------ */ /* testimonial slider /* ------------------------------------------------------------------------ */ var testimonials_slider_v1 = $('.testimonials-slider-wrap-v1'); if( testimonials_slider_v1.length > 0 ) { testimonials_slider_v1.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, autoplay: true, speed: 300, slidesToShow: 1, arrows: true, adaptiveHeight: true, dots: true, appendArrows: '.testimonials-module-slider-v1', prevArrow: '<button type="button" class="slick-prev btn-primary-outlined">'+prev_text+'</button>', nextArrow: '<button type="button" class="slick-next btn-primary-outlined">'+next_text+'</button>', }); } var testimonials_slider_v2 = $('.testimonials-slider-wrap-v2'); if( testimonials_slider_v2.length > 0 ) { testimonials_slider_v2.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, autoplay: true, speed: 300, slidesToShow: 3, arrows: true, adaptiveHeight: true, dots: true, appendArrows: '.testimonials-module-slider-v2', prevArrow: '<button type="button" class="slick-prev btn-primary-outlined">'+prev_text+'</button>', nextArrow: '<button type="button" class="slick-next btn-primary-outlined">'+next_text+'</button>', responsive: [{ breakpoint: 992, settings: { slidesToShow: 2, slidesToScroll: 2 } }, { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1 } } ] }); } var testimonials_slider_v3 = $('.testimonials-slider-wrap-v3'); if( testimonials_slider_v3.length > 0 ) { testimonials_slider_v3.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, fade: true, autoplay: true, speed: 300, slidesToShow: 1, arrows: true, adaptiveHeight: true, dots: false, appendArrows: '.testimonials-module-slider-v3', prevArrow: $('.slick-prev'), nextArrow: $('.slick-next'), }); } /* ------------------------------------------------------------------------ */ /* Custom slider /* ------------------------------------------------------------------------ */ var houzez_custom_carousel = $('.custom-carousel'); if( houzez_custom_carousel.length > 0 ) { $('.custom-carousel').each(function(){ var token = $(this).data('token'); $('.custom-carousel-js-'+token).slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', autoplay: false, infinite: true, speed: 500, slidesToShow: 3, arrows: true, adaptiveHeight: true, dots: true, appendArrows: '.custom-carousel-js-wrap-'+token, prevArrow: $('.slick-prev-js-'+token), nextArrow: $('.slick-next-js-'+token), responsive: [{ breakpoint: 992, settings: { slidesToShow: 2, slidesToScroll: 1 } }, { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1 } } ] }); }); } /* ------------------------------------------------------------------------ */ /* partners slider /* ------------------------------------------------------------------------ */ var partners_carousel = $('.partners-slider-wrap'); if( partners_carousel.length > 0 ) { partners_carousel.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, speed: 300, slidesToShow: 4, arrows: true, adaptiveHeight: true, dots: true, appendArrows: '.partners-module-slider', prevArrow: $('.partner-prev-js'), nextArrow: $('.partner-next-js'), responsive: [{ breakpoint: 992, settings: { slidesToShow: 2, slidesToScroll: 2 } }, { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1 } } ] }); } /* ------------------------------------------------------------------------ */ /* Schedule your dates /* ------------------------------------------------------------------------ */ var schedule_tour_day = $('.property-schedule-tour-day-form-slide-v2'); if( schedule_tour_day.length > 0 ) { schedule_tour_day.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: false, speed: 300, slidesToShow: 3, slidesToScroll: 3, arrows: true, adaptiveHeight: false, dots: false, prevArrow: $('.tour-day-form-slide-arrow.sche-tabs-prev-js'), nextArrow: $('.tour-day-form-slide-arrow.sche-tabs-next-js'), responsive: [{ breakpoint: 992, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 769, settings: { slidesToShow: 3, slidesToScroll: 3 } } ] }); } var schedule_tour_day2 = $('.property-schedule-tour-day-form-slide-v2-bottom'); if( schedule_tour_day2.length > 0 ) { schedule_tour_day2.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: false, speed: 300, slidesToShow: 4, slidesToScroll: 4, arrows: true, adaptiveHeight: false, dots: false, prevArrow: $('.tour-day-form-slide-arrow.sche-prev-js'), nextArrow: $('.tour-day-form-slide-arrow.sche-next-js'), responsive: [{ breakpoint: 992, settings: { slidesToShow: 4, slidesToScroll: 4 } }, { breakpoint: 769, settings: { slidesToShow: 3, slidesToScroll: 3 } } ] }); } /* ------------------------------------------------------------------------ */ /* featured property widget /* ------------------------------------------------------------------------ */ var widget_featured_carousel = $('.widget-featured-property-slider'); if( widget_featured_carousel.length > 0 ) { widget_featured_carousel.slick({ rtl: houzez_rtl, speed: 300, slidesToShow: 1, arrows: true, adaptiveHeight: true, dots: true, responsive: [{ breakpoint: 992, settings: { slidesToShow: 1, slidesToScroll: 1 } }, { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1 } } ] }); } /* ------------------------------------------------------------------------ */ /* half maps listing layout /* ------------------------------------------------------------------------ */ // function homy_half_map_switch_listing_layout() { // if ($(window).width() < 1200) { // $('.half-map-wrap .listing-view').removeClass('list-view').addClass('grid-view'); // } else if ($(window).width() > 1200) { // $('.half-map-wrap .listing-view').removeClass('grid-view').addClass('list-view'); // } // } // if(houzez_vars.halfmap_layout == 'list-view') { // homy_half_map_switch_listing_layout(); // $win.on('resize', function () { // homy_half_map_switch_listing_layout(); // }); // $win.bind('load', function () { // homy_half_map_switch_listing_layout(); // }); // } /* ------------------------------------------------------------------------ */ /* property lightbox /* ------------------------------------------------------------------------ */ $(document).ready(function () { $('.btn-expand').click(function () { $('.lightbox-gallery-wrap').toggleClass("lightbox-gallery-full-wrap"); $('#lightbox-slider-js').slick('refresh'); }); $('.btn-email').click(function () { $('.lightbox-form-wrap').toggleClass("lightbox-form-wrap-show"); }); }); /* ------------------------------------------------------------------------ */ /* property navigation /* ------------------------------------------------------------------------ */ var houzez_listing_nav = $('.property-navigation-wrap'); if( houzez_listing_nav.length > 0 ) { $(document).scroll(function() { var y = $(this).scrollTop(); houzez_listing_nav.css('top', houzezStickyTop); if (y > 300) { houzez_listing_nav.fadeIn(250); } else { houzez_listing_nav.fadeOut(0); } }); $(".property-navigation-item a.target").click(function (event) { event.preventDefault(); $("html, body").animate({ scrollTop: $($(this).attr("href")).offset().top - 84 }, 500); }); $(window).on('scroll', function () { $('.property-section-wrap').each(function () { if ($(window).scrollTop() >= $(this).offset().top - 86) { var id = $(this).attr('id'); $('.target').removeClass('active'); $('.target[href="#' + id + '"]').addClass('active'); } else if ($(window).scrollTop() <= 0) { $('.target').removeClass('active'); } }); }); } /* ------------------------------------------------------------------------ */ /* availability calendar cells height /* ------------------------------------------------------------------------ */ function setCalendarCellHeight() { var calendarCellWidth = $('.block-availability-calendars .search-calendar li').innerWidth(); $('.block-availability-calendars .search-calendar li').css('height', calendarCellWidth); $('.block-availability-calendars .search-calendar li').css('line-height', calendarCellWidth + 'px'); } setCalendarCellHeight(); $win.on('resize', function () { setCalendarCellHeight(); }); /* ------------------------------------------------------------------------ */ /* login and register links /* ------------------------------------------------------------------------ */ $('.login-link a').on('click', function () { $('.modal-toggle-1').addClass("active"); $('.modal-toggle-2').removeClass("active"); $('.register-form-tab').removeClass("active").removeClass("show"); $('.login-form-tab').addClass("active").addClass("show"); }); $('.register-link a').click(function () { $('.modal-toggle-2').addClass("active"); $('.modal-toggle-1').removeClass("active"); $('.register-form-tab').addClass("active").addClass("show"); $('.login-form-tab').removeClass("active").removeClass("show"); }); /* ------------------------------------------------------------------------ */ /* datepicker /* ------------------------------------------------------------------------ */ if($('.db_input_date').length > 0) { $('.db_input_date').datepicker({ format : "yyyy-mm-dd", clearBtn: true, autoclose: true, language: houzez_date_language }); } /* ------------------------------------------------------------------------ */ /* custom scroll bars /* ------------------------------------------------------------------------ */ if (houzez_is_mobile) { //console.log('You are using a mobile device!'); } else { if( $('.deals-table-wrap').length > 0 ) { $('.deals-table-wrap').overlayScrollbars({ overflowBehavior: { x: "scroll", y: "scroll" }, }); } } /* ------------------------------------------------------------------------ */ /* sticky search bar /* ------------------------------------------------------------------------ */ var listing_nav_area_height = $('.property-navigation-wrap').innerHeight(); if( listing_nav_area_height == null ) { listing_nav_area_height = 0; } if( $('.houzez_sticky').length > 0 ) { $('.houzez_sticky').theiaStickySidebar({ additionalMarginTop: houzezStickyTop + advanced_search_nav_height + listing_nav_area_height, minWidth: 768, updateSidebarHeight: false }); } /* ------------------------------------------------------------------------ */ /* masonry blog /* ------------------------------------------------------------------------ */ /** * Set appropriate spanning to any masonry item * * Get different properties we already set for the masonry, calculate * height or spanning for any cell of the masonry grid based on its * content-wrapper's height, the (row) gap of the grid, and the size * of the implicit row tracks. * * @param item Object A brick/tile/cell inside the masonry */ function resizeMasonryItem(item) { /* Get the grid object, its row-gap, and the size of its implicit rows */ var grid = document.getElementsByClassName('masonry')[0], rowGap = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-row-gap')), rowHeight = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-auto-rows')); /* * Spanning for any brick = S * Grid's row-gap = G * Size of grid's implicitly create row-track = R * Height of item content = H * Net height of the item = H1 = H + G * Net height of the implicit row-track = T = G + R * S = H1 / T */ var rowSpan = Math.ceil((item.querySelector('.masonry-content').getBoundingClientRect().height + rowGap) / (rowHeight + rowGap)); /* Set the spanning as calculated above (S) */ item.style.gridRowEnd = 'span ' + rowSpan; } /** * Apply spanning to all the masonry items * * Loop through all the items and apply the spanning to them using * `resizeMasonryItem()` function. * * @uses resizeMasonryItem */ function resizeAllMasonryItems() { // Get all item class objects in one list var allItems = document.getElementsByClassName('masonry-brick'); /* * Loop through the above list and execute the spanning function to * each list-item (i.e. each masonry item) */ for (var i = 0; i > allItems.length; i++) { resizeMasonryItem(allItems[i]); } } /** * Resize the items when all the images inside the masonry grid * finish loading. This will ensure that all the content inside our * masonry items is visible. * * @uses ImagesLoaded * @uses resizeMasonryItem */ if( $('.page-template-blog-masonry').length > 0 ) { var waitForImages = function() { var allItems = document.getElementsByClassName('masonry-brick'); for (var i = 0; i < allItems.length; i++) { imagesLoaded(allItems[i], function (instance) { var item = instance.elements[0]; resizeMasonryItem(item); }); } } /* Resize all the grid items on the load and resize events */ var masonryEvents = ['load', 'resize']; masonryEvents.forEach(function (event) { window.addEventListener(event, resizeAllMasonryItems); }); /* Do a resize once more when all the images finish loading */ waitForImages(); } /* ------------------------------------------------------------------------ */ /* splash page slider /* ------------------------------------------------------------------------ */ var splash_slider_wrap = $('.splash-slider-wrap'); if(splash_slider_wrap.length > 0) { splash_slider_wrap.slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', adaptiveHeight: true, autoplay: true, infinite: true, speed: 300, fade: true, slidesToShow: 1, arrows: false, }); } /*-------------------------------------------------------------------------- * Add or remove favorites * -------------------------------------------------------------------------*/ houzez_init_add_favorite(ajaxurl, userID); houzez_init_remove_favorite(ajaxurl, userID); houzez_check_favourites(userID); /* ------------------------------------------------------------------------ */ /* GET WINDOWS WIDTH HEIGHT /* ------------------------------------------------------------------------ */ function getWindowWidth() { return Math.max( $(window).width(), window.innerWidth); } function getWindowHeight() { return Math.max( $(window).height(), window.innerHeight); } /* ------------------------------------------------------------------------ */ /* WooCommerce Pay /* ------------------------------------------------------------------------ */ $('.houzez-woocommerce-pay').on('click', function(e) { e.preventDefault(); let listID = $(this).data('listid'); let is_featured = $(this).data('featured'); fave_processing_modal( processing_text ); $.ajax({ type: 'POST', url: ajaxurl, data: { 'action': 'houzez_perlist_woo_pay', 'listing_id': listID, 'is_featured': is_featured, }, success: function(data) { if ( data.success != false ) { window.location.href= houzez_vars.woo_checkout_url; } else { jQuery('#fave_modal').modal('hide'); } }, error: function(errorThrown) { } }); // $.ajax }); /* ------------------------------------------------------------------------ */ /* WooCommerce Pay Package /* ------------------------------------------------------------------------ */ $('.houzez-woocommerce-package').on('click', function(e) { e.preventDefault(); if( parseInt( userID, 10 ) === 0 || userID == undefined) { jQuery('#login-register-form').modal('show'); jQuery('.login-form-tab').addClass('active show'); jQuery('.modal-toggle-1.nav-link').addClass('active'); } else { let packid = $(this).data('packid'); fave_processing_modal( processing_text ); $.ajax({ type: 'POST', url: ajaxurl, data: { 'action': 'houzez_woo_pay_package', 'package_id': packid }, success: function(data) { if ( data.success != false ) { window.location.href= houzez_vars.woo_checkout_url; } else { jQuery('#fave_modal').modal('hide'); } }, error: function(errorThrown) { } }); // $.ajax } // login }); /* ------------------------------------------------------------------------ */ /* Top Banner Full Screen /* ------------------------------------------------------------------------ */ var setTopBannerFullScreen = function() { var totalTopBarsHeight = 0; var searchH = 0; var topBarH = 0; var totalBannerHeight = 0; var window_height = $(window).innerHeight(); var admin_bar = $('#wpadminbar'); var topBarB = $('.top-bar-wrap'); var admin_bar_height = admin_bar.outerHeight(); searchH = (window_height-header_area_height); if( header_area.hasClass('header-transparent-wrap') ) { if( topBarB.length ) { topBarH = topBarB.outerHeight(); } totalBannerHeight = getWindowHeight() - (topBarH + admin_bar_height); } else { if( header_area.length && advanced_search_nav.length && !advanced_search_nav.hasClass('search-hidden')) { totalTopBarsHeight = parseInt(header_area_height) + parseInt(advanced_search_nav_height); } else if(header_area.length) { totalTopBarsHeight = parseInt(header_area_height); } totalBannerHeight = getWindowHeight() - (totalTopBarsHeight + admin_bar_height); } $('.top-banner-wrap-fullscreen').css( 'height', totalBannerHeight ); } if( !houzez_is_splash && $('.top-banner-wrap-fullscreen').length > 0 ) { $(document).ready(function() { setTopBannerFullScreen(); }); $(window).on('resize', function () { setTopBannerFullScreen(); }); } /* ------------------------------------------------------------------------ */ /* compare Listings /* ------------------------------------------------------------------------ */ $(document).ready(function() { $('.compare-property-label').on('click', function() { $(this).toggleClass('active'); $('.compare-property-active').addClass('compare-property-active-push-toleft' ); $('#compare-property-panel').addClass('compare-property-panel-open'); }); $('.close-compare-panel').on('click', function() { $(this).toggleClass('active'); $('.compare-property-active').removeClass('compare-property-active-push-toleft' ); $('#compare-property-panel').removeClass('compare-property-panel-open'); }); var listings_compare = houzezGetCookie('houzez_compare_listings'); var limit_item_compare = 4; add_to_compare(compare_url, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text, compare_limit, listings_compare, limit_item_compare ); remove_from_compare(listings_compare, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text); }); /*-------------------------------------------------------------------------- * Compare for ajax * -------------------------------------------------------------------------*/ function compare_for_ajax() { var listings_compare = houzezGetCookie('houzez_compare_listings'); var limit_item_compare = 4; add_to_compare(compare_url, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text, compare_limit, listings_compare, limit_item_compare ); remove_from_compare(listings_compare, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text); } /*--------------------------------------------------------------------------- * One Page push state * -------------------------------------------------------------------------*/ $('.houzez-onepage-mode .header-main-wrap .main-nav li.nav-item a.nav-link').on( 'click', function(e) { var currentUrl = $(this).attr('href'); window.history.pushState({houzezTheme: true}, '', currentUrl); } ); /*--------------------------------------------------------------------------- * Render compare data on page load * -------------------------------------------------------------------------*/ houzez_render_compare_properties_data(); function houzez_render_compare_properties_data() { let compare_listings = JSON.parse(localStorage.getItem('houzez_compare_listings')); // Check if 'compare_listings' is not null and not empty before processing if (compare_listings && compare_listings.length > 0) { let properties_array = ''; compare_listings.forEach(function(item) { let img = item.image; // Image URL from the local storage array let listingId = item.id; // Listing ID from the local storage array properties_array += '<div class="compare-item remove-' + listingId + '">' + '<a href="#" class="remove-compare remove-icon" data-listing_id="' + listingId + '">' + '<i class="houzez-icon icon-remove-circle"></i></a>' + '<img class="img-fluid" src="' + img + '" width="200" height="150" alt="Thumb">' + '</div>'; }); jQuery('.compare-wrap').html(properties_array); } } })(jQuery); /* ------------------------------------------------------------------------ */ /* houzez Cookie /* ------------------------------------------------------------------------ */ function houzezSetCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; }; function houzezGetCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }; function fave_processing_modal( msg ) { var process_modal ='<div class="modal fade" id="fave_modal" tabindex="-1" role="dialog" aria-labelledby="faveModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-body houzez_messages_modal">'+msg+'</div></div></div></div></div>'; jQuery('body').append(process_modal); jQuery('#fave_modal').modal(); } function fave_processing_modal_close( ) { jQuery('#fave_modal').modal('hide'); } /*-------------------------------------------------------------------------- * Listing Gallery * -------------------------------------------------------------------------*/ function houzez_grid_image_gallery() { if( houzez_vars.disable_property_gallery == 1 ) { var gallery_behaviour = houzez_vars.grid_gallery_behaviour; var houzez_rtl = houzez_vars.houzez_rtl; if( houzez_rtl == 'yes' ) { houzez_rtl = true; } else { houzez_rtl = false; } jQuery('.hz-item-gallery-js').each( function() { if ( !jQuery(this).hasClass('houzez-gallery-loaded') && jQuery(this).data('images') ) { var $this = jQuery(this); var href = jQuery(this).find('a.listing-featured-thumb').attr('href'); var link_target = jQuery(this).find('a.listing-featured-thumb').attr('target'); var images = jQuery(this).data('images'); var html = '<div class="listing-gallery-wrap '+gallery_behaviour+'"><div class="houzez-listing-carousel">'; images.forEach(function(image, index){ html += '<div class="item"><a class="hover-effect" target="'+ link_target +'" href="'+ href +'"><img src="'+image.image+'" alt="'+image.alt+'" width="'+image.width+'" height="'+image.height+'" class="img-fluid"></a></div>'; }); html += '</div></div>'; jQuery(this).find('.listing-image-wrap').html(html); jQuery('.item-wrap-v6 .listing-gallery-wrap .item a').removeClass('hover-effect'); var listing_slider = $this.find('.houzez-listing-carousel'); listing_slider.slick({ rtl: houzez_rtl, autoplay: false, lazyLoad: 'ondemand', infinite: false, speed: 300, slidesToShow: 1, arrows: true, prevArrow: '<button type="button" class="slick-prev slick-arrow"></button>', nextArrow: '<button type="button" class="slick-next slick-arrow"></button>', adaptiveHeight: false }); is_listing_gallery_slider = true; jQuery(this).addClass('houzez-gallery-loaded'); } }); } jQuery('.switch-btn').on("click", function () { jQuery('.hz-item-gallery-js .houzez-listing-carousel').slick('refresh'); }); } /*-------------------------------------------------------------------------- * Listing Preview * -------------------------------------------------------------------------*/ function houzez_listing_lightbox(ajaxurl, processing_text, houzez_rtl, userID) { jQuery('.hz-show-lightbox-js').on('click', function() { var listing_id = jQuery(this).data('listid'); var $parents = jQuery(this).parents('.item-wrap'); var preview_loader = $parents.find('.preview_loader'); jQuery.ajax({ type: 'post', url: ajaxurl, data: { 'action': 'load_lightbox_content', 'listing_id': listing_id }, beforeSend: function( ) { preview_loader.empty().append('' +'<div class="houzez-overlay-loading">' +'<div class="overlay-placeholder">' +'<div class="loader-ripple spinner">' +'<div class="bounce1"></div>' +'<div class="bounce2"></div>' +'<div class="bounce3"></div>' +'</div>' +'</div>' +'</div>' ); }, complete: function(){ preview_loader.empty(); }, success: function( response ) { jQuery('#hz-listing-model-content').html(response); jQuery('#houzez-listing-lightbox').modal('show'); jQuery('.lightbox-slider').not('.slick-initialized').slick({ rtl: houzez_rtl, lazyLoad: 'ondemand', infinite: true, speed: 300, slidesToShow: 1, arrows: true, adaptiveHeight: true, }); jQuery('#houzez-listing-lightbox').on('shown.bs.modal', function (e) { jQuery('.lightbox-slider').slick('setPosition'); jQuery('.lightbox-slider').slick('refresh'); }); jQuery('.btn-expand').on('click', function () { jQuery('.lightbox-gallery-wrap').toggleClass("lightbox-gallery-full-wrap"); jQuery('.lightbox-slider').slick('setPosition'); }); jQuery('.btn-email').on('click', function () { jQuery('.lightbox-form-wrap').toggleClass("lightbox-form-wrap-show"); }); houzez_init_add_favorite(ajaxurl, userID); houzez_init_remove_favorite(ajaxurl, userID); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }) }); } /*-------------------------------------------------------------------------- * Add or remove favorites * -------------------------------------------------------------------------*/ function houzez_init_add_favorite(ajaxurl, userID) { jQuery(".add-favorite-js").on('click', function (e) { e.preventDefault(); var curnt = jQuery(this); var listID = jQuery(this).attr('data-listid'); add_to_favorite( ajaxurl, listID, curnt, userID ); return false; }); } function houzez_init_remove_favorite(ajaxurl, userID) { jQuery(".remove_fav").on('click', function () { var curnt = jQuery(this); var listID = jQuery(this).attr('data-listid'); add_to_favorite( ajaxurl, listID, curnt, userID ); var itemWrap = curnt.parents('tr').remove(); }); } function add_to_favorite( ajaxurl, listID, curnt, userID ) { if( parseInt( userID, 10 ) === 0 || userID == undefined) { var add_to_favorite_login_required = houzez_vars.add_to_favorite_login_required; if ( add_to_favorite_login_required != 0 ) { jQuery('.register-form-tab').removeClass('active show'); jQuery('.modal-toggle-2.nav-link').removeClass('active'); jQuery('#login-register-form').modal('show'); jQuery('.login-form-tab').addClass('active show'); jQuery('.modal-toggle-1.nav-link').addClass('active'); } else { add_to_favorite_without_login(curnt); } } else { var $parents = curnt.parents('.item-wrap'); var preview_loader = $parents.find('.preview_loader'); jQuery.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { 'action': 'houzez_add_to_favorite', 'listing_id': listID }, beforeSend: function( ) { preview_loader.empty().append('' +'<div class="houzez-overlay-loading">' +'<div class="overlay-placeholder">' +'<div class="loader-ripple spinner">' +'<div class="bounce1"></div>' +'<div class="bounce2"></div>' +'<div class="bounce3"></div>' +'</div>' +'</div>' +'</div>' ); }, complete: function(){ preview_loader.empty(); }, success: function( data ) { if( data.added ) { curnt.children('i').addClass('text-danger'); } else { curnt.children('i').removeClass('text-danger'); } preview_loader.empty(); }, complete: function(){ }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); console.log(err.Message); } }); } // End else } // Add to Favourite without login function add_to_favorite_without_login(curnt) { var listings_favorite = houzezGetCookie('houzez_favorite_listings'); if ( listings_favorite && listings_favorite.length ) { listings_favorite = listings_favorite.split(','); } else { listings_favorite = []; } var listing_id = curnt.data('listid'); var index = listings_favorite.indexOf( listing_id.toString() ); if ( index == -1 ) { listings_favorite.push(listing_id.toString()); houzezSetCookie('houzez_favorite_listings', listings_favorite.join(','), 30); jQuery("span.frvt-count").html(""); jQuery("span.frvt-count").html(listings_favorite.length); for (var i = 0 ; i < listings_favorite.length; i++) { jQuery('.add-favorite-js[data-listid="' + listings_favorite[i] + '"] i').addClass("text-danger"); jQuery('.add-favorite-js[data-listid="' + listings_favorite[i] + '"]').addClass('remove-favorite'); } } else { listings_favorite.splice(index, 1); houzezSetCookie('houzez_favorite_listings', listings_favorite.join(','), 30); jQuery("span.frvt-count").html("") jQuery("span.frvt-count").html(listings_favorite.length); jQuery('.add-favorite-js[data-listid="' + listing_id.toString() + '"] i').removeClass("text-danger"); jQuery('.add-favorite-js[data-listid="' + listing_id.toString() + '"]').removeClass("remove-favorite"); } jQuery('a.favorite-btn').attr('href', houzez_vars.favorite_url + '?ids=' + listings_favorite); return false; } function houzez_check_favourites( userID ) { if( parseInt( userID, 10 ) === 0 || userID == undefined) { var listings_favorite = houzezGetCookie('houzez_favorite_listings'); jQuery('a.favorite-btn').attr('href', houzez_vars.favorite_url + '?ids=' + listings_favorite); if ( listings_favorite && listings_favorite.length ) { listings_favorite = listings_favorite.split(','); if ( listings_favorite.length ) { for (var i = 0 ; i < listings_favorite.length; i++) { jQuery('.add-favorite-js[data-listid="' + listings_favorite[i] + '"] i').addClass("text-danger"); jQuery('.add-favorite-js[data-listid="' + listings_favorite[i] + '"]').addClass('remove-favorite'); } jQuery("span.frvt-count").html(""); jQuery("span.frvt-count").html(listings_favorite.length); } } else { listings_favorite = []; } } } function add_to_compare(compare_url, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text, compare_limit, listings_compare, limit_item_compare) { var storedData = localStorage.getItem('houzez_compare_listings'); var listings_compare = storedData ? JSON.parse(storedData) : []; jQuery('a.compare-btn').attr('href', compare_url + '?ids=' + listings_compare.map(item => item.id).join(',')); if (listings_compare.length > 0) { jQuery('.compare-property-label').fadeIn(1000); } if(listings_compare.length){ for(var i = 0 ; i < listings_compare.length; i++) { jQuery( '.houzez_compare[data-listing_id="'+listings_compare[i].id+'"] i').removeClass('icon-add-circle').addClass('icon-subtract-circle'); jQuery( '.houzez_compare[data-listing_id="'+listings_compare[i].id+'"]').attr('title', remove_compare_text); jQuery( '.houzez_compare[data-listing_id="'+listings_compare[i].id+'"]').tooltip('hide').attr('data-original-title', remove_compare_text); } jQuery('.compare-property-label').find('.compare-count').html(listings_compare.length); } jQuery('.houzez_compare').on('click', function(e) { e.preventDefault(); var storedData = localStorage.getItem('houzez_compare_listings'); var listings_compare = storedData ? JSON.parse(storedData) : []; var listing_id = jQuery(this).data('listing_id'); var index = listings_compare.findIndex(item => item.id === listing_id.toString()); var image_div = jQuery(this).parents('.item-wrap'); var thumb_url = image_div.find('img').attr('src'); if(index == -1){ if(listings_compare.length >= limit_item_compare){ alert(compare_limit); }else{ jQuery('.compare-wrap').append('<div class="compare-item remove-'+listing_id+'"><a href="" class="remove-compare remove-icon" data-listing_id="'+listing_id+'"><i class="houzez-icon icon-remove-circle"></i></a><img class="img-fluid" src="'+thumb_url+'" width="200" height="150" alt="Thumb"></div>'); listings_compare.push({id: listing_id.toString(), image: thumb_url}); localStorage.setItem('houzez_compare_listings', JSON.stringify(listings_compare)); jQuery(this).attr('title', remove_compare_text); jQuery(this).find('i').removeClass('icon-add-circle').addClass('icon-subtract-circle'); jQuery('.compare-property-label').find('.compare-count').html(listings_compare.length); jQuery('a.compare-btn').attr('href', compare_url + '?ids=' + listings_compare.map(item => item.id).join(',')); jQuery('.compare-property-label').fadeIn(1000); jQuery(this).toggleClass('active'); jQuery('.compare-property-active').addClass('compare-property-active-push-toleft'); jQuery('#compare-property-panel').addClass('compare-property-panel-open'); jQuery(this).tooltip('dispose').tooltip('show'); remove_from_compare(listings_compare, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text); } } else { jQuery('div.remove-'+listing_id).remove(); jQuery(this).attr('title', add_compare_text); jQuery(this).find('i').removeClass('icon-subtract-circle').addClass('icon-add-circle'); listings_compare.splice(index, 1); localStorage.setItem('houzez_compare_listings', JSON.stringify(listings_compare)); jQuery('.compare-property-label').find('.compare-count').html(listings_compare.length); jQuery('a.compare-btn').attr('href', compare_url + '?ids=' + listings_compare.map(item => item.id).join(',')); jQuery(this).tooltip('dispose').tooltip('show'); if (listings_compare.length > 0) { jQuery('.compare-property-label').fadeIn(1000); jQuery(this).toggleClass('active'); jQuery('.compare-property-active').addClass('compare-property-active-push-toleft'); jQuery('#compare-property-panel').addClass('compare-property-panel-open'); } else { jQuery('.compare-property-label').fadeOut(1000); } } return false; }); } function remove_from_compare(listings_compare, compare_add_icon, compare_remove_icon, add_compare_text, remove_compare_text) { // Moved the event binding outside of this function to prevent multiple bindings // This should be called once, outside and independently from this function jQuery('.remove-compare').off('click').on('click', function(e) { e.preventDefault(); var compare_url = houzez_vars.compare_url; // Ensure houzez_vars is globally available var storedData = localStorage.getItem('houzez_compare_listings'); listings_compare = storedData ? JSON.parse(storedData) : []; var listing_id = jQuery(this).data('listing_id'); var index = listings_compare.findIndex(item => item.id === listing_id.toString()); if (index !== -1) { // Only proceed if the item was found listings_compare.splice(index, 1); localStorage.setItem('houzez_compare_listings', JSON.stringify(listings_compare)); jQuery('.compare-property-label').find('.compare-count').html(listings_compare.length); // Update UI elements if they exist var compareElement = jQuery('.compare-' + listing_id); if (compareElement.length) { compareElement.attr('title', add_compare_text); compareElement.tooltip('hide').attr('data-original-title', add_compare_text); compareElement.find('i').removeClass('icon-subtract-circle').addClass('icon-add-circle'); } jQuery(this).parents('.compare-item').remove(); // Update the compare URL jQuery('a.compare-btn').attr('href', compare_url + '?ids=' + listings_compare.map(item => item.id).join(',')); } }); } /* ------------------------------------------------------------------------ */ /* mobile popup js /* ------------------------------------------------------------------------ */ function houzez_grid_call_to_action() { jQuery('.hz-call-popup-js').on('click', function() { var call_model_id = jQuery(this).data('model-id'); jQuery('#'+call_model_id).appendTo("body"); jQuery('#'+call_model_id).modal("show"); }); jQuery('.hz-email-popup-js').on('click', function() { var email_model_id = jQuery(this).data('model-id'); jQuery('#'+email_model_id).appendTo("body"); jQuery('#'+email_model_id).modal("show"); }); }