{"version":3,"sources":["../Modules/module.jump-menu.js","../Modules/module.hero-slider.js","../Modules/module.accessibility.js","../Modules/module.contrast-theme.js","../Modules/module.font-size.js","../Modules/module.gallery-slider.js","../Modules/module.internal-nav.js","../Modules/module.json-map.js","../Modules/module.panic-button.js","../Modules/module.data-slider.js","../Modules/module.selectric.js","../Modules/module.listing-toggle.js","../Modules/module.site-search.js","../Modules/module.interactive-map.js","../Modules/module.search-property.js","../Modules/module.news-filter.js","../Modules/module.autocomplete-location-search.js","../Modules/module.property-request-information.js","../Modules/module.interchange-fade.js","../Modules/module.accessible-mega-menu.js","../Modules/module.embed.js","../Modules/module.rss-feed.js","../Modules/module.kpi-dashboard.js"],"names":["$","Site","Prodo_JumpMenu","siteJump_trigger","siteJump_list","siteJump_current","siteJump_close","close_jump_menu","slideUp","removeClass","hover","slideDown","addClass","click","e","stopPropagation","document","on","this","toggleClass","find","slideToggle","RegisterModule","jQuery","Prodo_Site","Prodo_HeroSlider","HeroSlider","HeroSliderBg","length","slick","arrows","prevArrow","nextArrow","dots","appendDots","dotsClass","asNavFor","Prodo_Accessibility","accessibility_menu","accessibility_menu_handle","event","TriggerEvent","which","trigger","openAccessibilityMenu","closeAccessibilityMenu","createCookie","hasClass","focus","Prodo_ContrastChange","usersCookie","getCookie","attr","newTheme","data","removeAttr","deleteCookie","Prodo_Font_Size","usersCookieFont","newSize","index","css","match","join","Prodo_GallerySlider","slidesToShow","slidesToScroll","fade","appendArrows","centerMode","focusOnSelect","Prodo_InternalNav","$internalNav","$internalNav_trigger","$internalNav_toggle","$internalNav_subnav","$internalNav_linkgroup","parent","siblings","Prodo_Json_Map","markers","$maps","initMaps","each","mapElement","$map","map","ProdoMapHelpers","InitializeMap","locationsJson","AddMarkersFromJson","BindDefaultMapEvents","google","maps","addDomListener","window","setTimeout","off","id","markerToClick","filter","marker","dispatchEvent","Event","RegisterEvent","Prodo_PanicButton","$panicButton","headroom","panicButtonUrl","preventDefault","body","innerHTML","redirectUrl","history","replaceState","location","replace","Prodo_DataSlider","getParameterByName","name","url","href","regex","RegExp","results","exec","decodeURIComponent","getElementById","priceSliderSale","priceMinSale","parseInt","getAttribute","priceMaxSale","priceSliderSaleMin","priceSliderSaleMax","priceSliderSaleValMin","priceSliderSaleValMax","noUiSlider","create","start","connect","step","range","min","max","format","wNumb","decimals","thousand","prefix","handleAttributes","aria-label","value","values","handle","price_valMin","price_valMax","search","QSpriceMinSale","QSpriceMaxSale","updateOptions","priceSliderRent","priceMinRent","priceMaxRent","priceSliderRentMin","priceSliderRentMax","priceSliderRentValMin","priceSliderRentValMax","QSpriceMinRent","QSpriceMaxRent","roomSlider","roomMin","roomMax","roomSliderMin","roomSliderMax","roomSliderValMin","roomSliderValMax","Math","round","room_valMin","room_valMax","QSroomMin","QSroomMax","distanceMax","distanceSlider","distanceSliderMax","distanceSliderVal","behaviour","distance_val","QSdistance","Prodo_Selectric","selectric","ready","wrap","Prodo_ListingToggle","toggleViewType","mapView","listingsView","pagination","target","hide","show","Prodo_SiteSearch","search_trigger","search_bar","search_label_inactive","search_label_active","search_input","search_clear","toggle","val","Prodo_InteractiveMap","processTooltipFromId","areaId","path","getAreaJson","type","getRawType","getRawAreaFormattedName","areaDataLabel1","getRawAreaDataLabel1","areaDataInfo1","getRawAreaDataInfo1","areaDataLabel2","getRawAreaDataLabel2","areaDataInfo2","getRawAreaDataInfo2","areaDataLabel3","areaDataInfo3","areaDataLabel4","areaDataInfo4","empty","officeName","getRawOfficeName","officeAddress","getRawOfficeAddress","officeTel","getRawOfficeTel","html","console","log","pathBbox","getBoundingClientRect","pathCenterX","offset","left","width","pathCenterY","top","height","tooltipCenterX","outerWidth","tooltipCenterY","outerHeight","mainWidth","newLeftPosition","tooltipFinalX","tooltipFinalY","tooltipClose","Type","Name","AreaDataLabel1","AreaDataInfo1","AreaDataLabel2","AreaDataInfo2","i","GlobalNetworkLocations","NameFormatted","SVGElement","prototype","className","test","setAttribute","removedClass","change","Prodo_PropertySearch","buildUrl","u","split","propertyTypeForm","obj","push","salePriceMin","salePriceMax","rentPriceMin","rentPriceMax","typeOfCare","distance","order","submitForm","checkLocation","propertySearchForm","submit","lon","lat","clearFilters","prop","salesPriceTop","scrollToResults","animate","scrollTop","performSearchButton","forRentBtn","propertyTypeBtn","currentSize","Foundation","MediaQuery","current","keydown","foundation","Prodo_NewsFilter","filterNews","brandName","Google_Location_Lookup","$propertySearchInput","autocompleteOptions","types","componentRestrictions","country","wrapper","$wrapper","$placeNameInput","wrapperSelector","$longitudeInput","$latitudeInput","autocomplete","places","Autocomplete","addListener","place","getPlace","geometry","lng","debounce","keyCode","enterKeyPress","keycode","Prodo_PropertyRequestInformation","propertyName","Prodo_InterchangeFade","Prodo_AccessibleMegaMenu","is","accessibleMegaMenu","Prodo_Embed","Prodo_RSSFeed","params","URLSearchParams","$filterOptions","set","queryStringFilter","get","Prodo_KPI_Dashboard","overlayContent","kpiID","kpiData","status","keyFigure","title","details","trendText","trend","sampleSize","date","$overlayContent","append","closeOverlay","$body","$overlay","kpiCard","remove","overlayOpen","openOverlay","isInViewport","element","rect","documentElement","elementHeight","elementWidth","bottom","innerHeight","clientHeight","right","innerWidth","clientWidth","showCardsOnScroll","$card","$overlayOpen","$overlayClose","parents"],"mappings":"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","file":"modules.js","sourcesContent":["!function ($, Site) {\r\n var Prodo_JumpMenu = function () {\r\n\r\n var siteJump_trigger = $('.js-site-jump__trigger'),\r\n siteJump_list = $('.js-site-jump__list'),\r\n siteJump_current = $('.js-site-jump__current'),\r\n siteJump_close = $('.js-site-jump__close');\r\n\r\n var close_jump_menu = function () {\r\n siteJump_list.slideUp();\r\n siteJump_current.removeClass('active');\r\n }\r\n\r\n siteJump_trigger.hover(function () {\r\n siteJump_list.slideDown();\r\n siteJump_current.addClass('active');\r\n\r\n });\r\n\r\n siteJump_list.hover(function () { }, function () {\r\n });\r\n\r\n siteJump_trigger.click(function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n $(document).click(function () {\r\n close_jump_menu();\r\n });\r\n\r\n $('.m-site-nav__item').hover(function () {\r\n close_jump_menu();\r\n });\r\n\r\n siteJump_close.on('click', function () {\r\n close_jump_menu();\r\n });\r\n\r\n\r\n\r\n $('.st-menu__toggle').click(function () {\r\n $(this).toggleClass('active');\r\n $(this).find('+ .st-menu__sub-menu').slideToggle();\r\n });\r\n }\r\n\r\n Site.RegisterModule(Prodo_JumpMenu);\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_HeroSlider = function () {\r\n\r\n var HeroSlider = $('.js-hero-slider:not(.slick-slider)'),\r\n HeroSliderBg = $('.js-hero-slider-bg:not(.slick-slider)'),\r\n arrows = false;\r\n\r\n var prevArrowHtml = '',\r\n nextArrowHtml = '';\r\n\r\n\r\n if (HeroSlider.length)\r\n {\r\n\r\n HeroSlider.slick({\r\n arrows: true,\r\n prevArrow: prevArrowHtml,\r\n nextArrow: nextArrowHtml,\r\n dots: true,\r\n appendDots: '.o-slider__paging-inner',\r\n dotsClass: 'm-paging',\r\n asNavFor: HeroSliderBg\r\n });\r\n\r\n HeroSliderBg.slick({\r\n asNavFor: HeroSlider,\r\n arrows: arrows\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n Site.RegisterModule(Prodo_HeroSlider);\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n\r\n var Prodo_Accessibility = function () {\r\n\r\n var accessibility_menu = $('.js-accessibility-toolbar'),\r\n accessibility_menu_handle = $('.js-accessibility-toolbar--handle');\r\n\r\n $('[data-task=\"js-show_accessibility\"]').on('click', function(event) {\r\n\r\n \t$('body').toggleClass('js-prevent_scroll');\r\n \t$('.m-accessibility_menu').toggleClass('m-accessibility_menu--active');\r\n \tSite.TriggerEvent('reinitRotators');\r\n\r\n \t// heights changed\r\n \r\n });\r\n\r\n //Enter key event for accessibility\r\n $('.m-accessibility_toolbar__button').on('keydown', function (event) {\r\n if (event.which == 13) {\r\n $(this).trigger(\"click\");\r\n }\r\n });\r\n\r\n\r\n var openAccessibilityMenu = function () {\r\n accessibility_menu.addClass('open');\r\n }\r\n\r\n var closeAccessibilityMenu = function () {\r\n accessibility_menu.removeClass('open');\r\n accessibility_menu_handle.removeClass('active');\r\n createCookie(\"hideAccessibilityMenu\", 'true', 0, 0, 182);\r\n }\r\n\r\n accessibility_menu_handle.on('click', function () {\r\n\r\n if ($(this).hasClass('active')) {\r\n closeAccessibilityMenu();\r\n } else {\r\n accessibility_menu_handle.addClass('active');\r\n openAccessibilityMenu();\r\n //Give tab focus\r\n $('[data-task=\"js-show_accessibility\"]').focus();\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_Accessibility);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_ContrastChange = function () {\r\n\r\n \t// setup contrast on pageload\r\n\r\n \tvar usersCookie = getCookie('contrast-theme');\r\n\r\n\t if (usersCookie) {\r\n\t $('body').attr('id', usersCookie);\r\n\t }\r\n\r\n\t // change contrast on user input\r\n\r\n\t var $contrastBtn = $('.js-themechange');\r\n\r\n\t $contrastBtn.on('click', function () {\r\n\r\n\t\t var themeName = \"contrast_theme\",\r\n\t\t \tcurrentTheme = $('body').attr('id'),\r\n\t\t \tnewTheme = $(this).data('theme');\r\n\r\n\t\t if (newTheme === 'default') {\r\n\r\n\t\t \t$('body').removeAttr('id');\r\n\t\t deleteCookie(\"contrast-theme\");\r\n\r\n\t\t } else {\r\n\r\n\t\t \t// update theme\r\n\t\t \t$('body').removeAttr('id').attr('id', newTheme);\r\n\r\n\t\t //Create font cookie\r\n\t\t createCookie(\"contrast-theme\", newTheme, 0, 0, 182);\r\n\t\t }\r\n\r\n\t });\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_ContrastChange);\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n var Prodo_Font_Size = function () {\r\n\r\n\t var usersCookieFont = getCookie('font-size');\r\n\r\n\t if (usersCookieFont) {\r\n\t $('html').addClass(usersCookieFont);\r\n\t Site.TriggerEvent('reinitRotators');\r\n\r\n \t// heights changed \r\n\r\n\t }\r\n\r\n\t $('.js-text_size').on('click', function () {\r\n\r\n\t\t // make sure everythings layed out correctly\r\n\t\t \r\n\t\t var newSize,\r\n\t\t \tnewTheme = $(this).data('text_size'),\r\n\t\t \tusersCookieFont = getCookie('font-size');\r\n\r\n\t\t if (newTheme === 'up') {\r\n\t\t switch (usersCookieFont) {\r\n\t\t case \"font_0\":\r\n\t\t newSize = \"font_1\";\r\n\t\t break;\r\n\t\t case \"font_1\":\r\n\t\t newSize = \"font_2\";\r\n\t\t break;\r\n\t\t case \"font_2\":\r\n\t\t newSize = usersCookieFont;\r\n\t\t break;\r\n\t\t default:\r\n\t\t newSize = \"font_1\";\r\n\t\t }\r\n\t\t }\r\n\t\t else if (newTheme === 'down') {\r\n\t\t switch (usersCookieFont) {\r\n\t\t case \"font_1\":\r\n\t\t newSize = \"font_0\";\r\n\t\t break;\r\n\t\t case \"font_2\":\r\n\t\t newSize = \"font_1\";\r\n\t\t break;\r\n\t\t default:\r\n\t\t newSize = \"font_0\";\r\n\t\t }\r\n\t\t } else {\r\n\t\t \tswitch (usersCookieFont) {\r\n\t\t default:\r\n\t\t newSize = \"font_0\";\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t //Remove old font classes and add new one\r\n\r\n\t\t $('html').removeClass(function (index, css) {\r\n\t\t return (css.match(/\\bfont_\\S+/g) || []).join(' ');\r\n\t\t }).addClass(newSize);\r\n\r\n\t\t //Create font cookie\r\n\r\n\t\t createCookie(\"font-size\", newSize, 0, 0, 182);\r\n\r\n\t //setTimeout(function () { $(document).foundation('reflow'); }, 200);\r\n\r\n\t });\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_Font_Size);\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n\r\n var Prodo_GallerySlider = function () {\r\n\r\n // depends on /vendor/slick/slick.js\r\n\r\n var prevArrowHtml = '',\r\n nextArrowHtml = '';\r\n\r\n var ssg_slides_to_show = 3;\r\n\r\n // if (Foundation.MediaQuery.atLeast('large')) {\r\n // ssg_slides_to_show = 5;\r\n // }\r\n\r\n $('.js-gallery__slides').slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n arrows: true,\r\n prevArrow: prevArrowHtml,\r\n nextArrow: nextArrowHtml,\r\n fade: true,\r\n asNavFor: '.js-gallery__thumbs',\r\n appendArrows: '.m-gallery__controls'\r\n });\r\n $('.js-gallery__thumbs').slick({\r\n slidesToShow: ssg_slides_to_show,\r\n slidesToScroll: 1,\r\n arrows: false,\r\n asNavFor: '.js-gallery__slides',\r\n centerMode: true,\r\n focusOnSelect: true\r\n });\r\n\r\n\t};\r\n\r\n Site.RegisterModule(Prodo_GallerySlider);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_InternalNav = function () {\r\n\r\n var $internalNav = $('.js-internal-nav'),\r\n $internalNav_trigger = $('[data-internal-nav=\"trigger\"]'),\r\n $internalNav_toggle = $('.js-internal-nav__toggle'),\r\n $internalNav_subnav = $('[data-internal-nav=\"sub-nav\"]'),\r\n $internalNav_linkgroup = $('[data-internal-nav=\"sub-nav\"]');\r\n\r\n\r\n if ($internalNav.length) {\r\n\r\n $internalNav_trigger.click(function () {\r\n $(this).parent($internalNav_linkgroup).toggleClass('active');\r\n $(this).parent().siblings($internalNav_subnav).slideToggle();\r\n $(this).parent().parent().toggleClass('active');\r\n });\r\n\r\n $internalNav_toggle.on('click', function(){\r\n\r\n $(this).toggleClass('');\r\n $internalNav.slideToggle();\r\n\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_InternalNav);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_Json_Map = function () {\r\n\r\n // constant variables\r\n\r\n var markers;\r\n\r\n // element variables\r\n\r\n var $maps = $('.js-map-canvas');\r\n\r\n if ($maps.length) {\r\n // initializes the map\r\n var initMaps = function ($maps) {\r\n $maps.each(function (index, mapElement) {\r\n var $map = $(mapElement),\r\n map = ProdoMapHelpers.InitializeMap(mapElement),\r\n locationsJson = $map.data('locations-json');\r\n\r\n markers = ProdoMapHelpers.AddMarkersFromJson(map, locationsJson, false);\r\n ProdoMapHelpers.BindDefaultMapEvents(map);\r\n });\r\n };\r\n\r\n // ui bindings\r\n\r\n google.maps.event.addDomListener(window, 'load', function () {\r\n initMaps($maps);\r\n });\r\n\r\n //Trigger maps in tab content\r\n $('.js-toggle-list-view').on('click.json-map', function(){\r\n\r\n setTimeout(function(){\r\n initMaps($maps);\r\n }, 100);\r\n\r\n });\r\n\r\n $('[data-task=\"map_interact\"]').each(function(){\r\n $(this).off('click.json-map').on('click.json-map', function () {\r\n\r\n var id = $(this).attr('id');\r\n\r\n var markerToClick = markers.filter(function(marker) {\r\n return marker.id === id;\r\n })[0];\r\n\r\n google.maps.event.trigger(markerToClick, 'click');\r\n\r\n });\r\n });\r\n\r\n $('.tabs-title, .accordion-title').click(function () {\r\n\r\n setTimeout(function() {\r\n\r\n window.dispatchEvent(new Event('resize'));\r\n\r\n if ($maps.length) {\r\n initMaps($maps);\r\n }\r\n\r\n }, 100);\r\n\r\n });\r\n\r\n }\r\n };\r\n\r\n Site.RegisterModule(Prodo_Json_Map);\r\n Site.RegisterEvent('Reload_Prodo_Json_Map', Prodo_Json_Map);\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n\r\n\tvar Prodo_PanicButton = function() {\r\n\r\n\t\t\r\n\r\n var $panicButton = $(\".js-panic-button\");\r\n\r\n $panicButton.headroom();\r\n\t\t\r\n\r\n $panicButton.click(function (event) {\r\n\t var panicButtonUrl = $(this).attr(\"href\");\r\n\r\n\t event.preventDefault();\r\n\r\n\t document.body.innerHTML = '';\r\n\r\n\t var url = \"/\";\r\n\r\n if (panicButtonUrl) {\r\n\t var redirectUrl = panicButtonUrl;\r\n } else {\r\n\t var redirectUrl = url;\r\n }\r\n\r\n\t if (history.replaceState) {\r\n\t\t //alert('supported');\r\n\t\t window.history.replaceState(\"\", \"\", url); //replace current history entry\r\n\t }\r\n\r\n\t window.location.replace(redirectUrl);\r\n });\r\n\r\n\t};\r\n\r\n\tSite.RegisterModule(Prodo_PanicButton);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_DataSlider = function () {\r\n\r\n function getParameterByName(name, url) {\r\n if (!url) url = window.location.href;\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n }\r\n\r\n if (document.getElementById('priceSliderSale')) {\r\n\r\n var priceSliderSale = document.getElementById('priceSliderSale'),\r\n priceMinSale = parseInt(priceSliderSale.getAttribute('data-price-min')),\r\n priceMaxSale = parseInt(priceSliderSale.getAttribute('data-price-max')),\r\n priceSliderSaleMin = document.getElementById('priceSliderSale-value-min'),\r\n priceSliderSaleMax = document.getElementById('priceSliderSale-value-max'),\r\n priceSliderSaleValMin = document.getElementById('priceSliderSaleValMin'),\r\n priceSliderSaleValMax = document.getElementById('priceSliderSaleValMax');\r\n\r\n noUiSlider.create(priceSliderSale, {\r\n start: [priceMinSale, priceMaxSale],\r\n connect: true,\r\n step: 5000,\r\n range: {\r\n 'min': priceMinSale,\r\n 'max': priceMaxSale\r\n },\r\n format: wNumb({\r\n decimals: 0,\r\n thousand: ',',\r\n prefix: '£'\r\n }),\r\n handleAttributes: [\r\n { 'aria-label': 'Lower range value handle' },\r\n { 'aria-label': 'Upper range value handle' },\r\n ]\r\n });\r\n\r\n priceSliderSaleValMin.value = priceMinSale;\r\n priceSliderSaleValMax.value = priceMaxSale;\r\n\r\n priceSliderSale.noUiSlider.on('update', function (values, handle) {\r\n if (handle) {\r\n priceSliderSaleMax.innerHTML = values[1];\r\n } else {\r\n priceSliderSaleMin.innerHTML = values[0];\r\n }\r\n });\r\n\r\n priceSliderSale.noUiSlider.on('change', function (values, handle) {\r\n\r\n var price_valMin = values[0],\r\n price_valMax = values[1];\r\n\r\n price_valMin = price_valMin.replace(\"£\", \"\").replace(\",\", \"\");\r\n priceSliderSaleValMin.value = price_valMin;\r\n\r\n price_valMax = price_valMax.replace(\"£\", \"\").replace(\",\", \"\");\r\n priceSliderSaleValMax.value = price_valMax;\r\n\r\n Prodo_Site.TriggerEvent('Reload_Prodo_PropertySearch_Form_Submit');\r\n\r\n });\r\n\r\n if(document.location.search.length) {\r\n\r\n var QSpriceMinSale = getParameterByName('SalePriceMin');\r\n var QSpriceMaxSale = getParameterByName('SalePriceMax');\r\n\r\n if(QSpriceMinSale != null || QSpriceMaxSale != null) {\r\n\r\n if (QSpriceMinSale == null) {\r\n QSpriceMinSale = priceMinSale;\r\n }\r\n\r\n if (QSpriceMaxSale == null) {\r\n QSpriceMaxSale = priceMaxSale;\r\n }\r\n\r\n priceMinSale = parseInt(QSpriceMinSale);\r\n priceMaxSale = parseInt(QSpriceMaxSale);\r\n\r\n priceSliderSale.noUiSlider.updateOptions({\r\n start: [QSpriceMinSale, QSpriceMaxSale]\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (document.getElementById('priceSliderRent')) {\r\n\r\n var priceSliderRent = document.getElementById('priceSliderRent'),\r\n priceMinRent = parseInt(priceSliderRent.getAttribute('data-price-min')),\r\n priceMaxRent = parseInt(priceSliderRent.getAttribute('data-price-max')),\r\n priceSliderRentMin = document.getElementById('priceSliderRent-value-min'),\r\n priceSliderRentMax = document.getElementById('priceSliderRent-value-max'),\r\n priceSliderRentValMin = document.getElementById('priceSliderRentValMin'),\r\n priceSliderRentValMax = document.getElementById('priceSliderRentValMax');\r\n\r\n noUiSlider.create(priceSliderRent, {\r\n start: [priceMinRent, priceMaxRent],\r\n connect: true,\r\n step: 50,\r\n range: {\r\n 'min': priceMinRent,\r\n 'max': priceMaxRent\r\n },\r\n format: wNumb({\r\n decimals: 0,\r\n thousand: ',',\r\n prefix: '£'\r\n }),\r\n handleAttributes: [\r\n { 'aria-label': 'Lower range value handle' },\r\n { 'aria-label': 'Upper range value handle' },\r\n ]\r\n });\r\n\r\n priceSliderRentValMin.value = priceMinRent;\r\n priceSliderRentValMax.value = priceMaxRent;\r\n\r\n priceSliderRent.noUiSlider.on('update', function (values, handle) {\r\n if (handle) {\r\n priceSliderRentMax.innerHTML = values[1];\r\n } else {\r\n priceSliderRentMin.innerHTML = values[0];\r\n }\r\n });\r\n\r\n priceSliderRent.noUiSlider.on('change', function (values, handle) {\r\n\r\n var price_valMin = values[0],\r\n price_valMax = values[1];\r\n\r\n price_valMin = price_valMin.replace(\"£\", \"\").replace(\",\", \"\");\r\n priceSliderRentValMin.value = price_valMin;\r\n\r\n price_valMax = price_valMax.replace(\"£\", \"\").replace(\",\", \"\");\r\n priceSliderRentValMax.value = price_valMax;\r\n\r\n Prodo_Site.TriggerEvent('Reload_Prodo_PropertySearch_Form_Submit');\r\n });\r\n\r\n if(document.location.search.length) {\r\n\r\n var QSpriceMinRent = getParameterByName('RentPriceMin');\r\n var QSpriceMaxRent = getParameterByName('RentPriceMax');\r\n\r\n if(QSpriceMinRent != null || QSpriceMaxRent != null) {\r\n\r\n if (QSpriceMinRent == null) {\r\n QSpriceMinRent = priceMinRent;\r\n }\r\n\r\n if (QSpriceMaxRent == null) {\r\n QSpriceMaxRent = priceMaxRent;\r\n }\r\n\r\n priceMinRent = parseInt(QSpriceMinRent);\r\n priceMaxRent = parseInt(QSpriceMaxRent);\r\n\r\n priceSliderRent.noUiSlider.updateOptions({\r\n start: [QSpriceMinRent, QSpriceMaxRent]\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (document.getElementById('roomSlider')) {\r\n\r\n var roomSlider = document.getElementById('roomSlider'),\r\n roomMin = parseInt(roomSlider.getAttribute('data-room-min')),\r\n roomMax = parseInt(roomSlider.getAttribute('data-room-max')),\r\n roomSliderMin = document.getElementById('roomSlider-value-min'),\r\n roomSliderMax = document.getElementById('roomSlider-value-max'),\r\n roomSliderValMin = document.getElementById('roomSliderValMin'),\r\n roomSliderValMax = document.getElementById('roomSliderValMax');\r\n \r\n if (roomSliderValMin && roomSliderValMin.value === \"\") {\r\n roomSliderValMin.value = roomMin;\r\n }\r\n if (roomSliderValMax && roomSliderValMax.value === \"\") {\r\n roomSliderValMax.value = roomMax;\r\n }\r\n\r\n noUiSlider.create(roomSlider, {\r\n start: [roomMin, roomMax],\r\n connect: true,\r\n step: 1,\r\n range: {\r\n 'min': roomMin,\r\n 'max': roomMax\r\n },\r\n format: wNumb({\r\n decimals: 0\r\n }),\r\n handleAttributes: [\r\n { 'aria-label': 'Lower range value handle' },\r\n { 'aria-label': 'Upper range value handle' },\r\n ]\r\n });\r\n\r\n roomSliderValMin.value = roomMin;\r\n roomSliderValMax.value = roomMax;\r\n\r\n roomSlider.noUiSlider.on('update', function (values, handle) {\r\n if (handle) {\r\n\r\n roomSliderMax.innerHTML = Math.round(values[handle]);\r\n\r\n if (handle == 0) {\r\n roomSliderMax.innerHTML = 'Studio';\r\n }\r\n\r\n } else {\r\n roomSliderMin.innerHTML = Math.round(values[handle]);\r\n }\r\n });\r\n\r\n roomSlider.noUiSlider.on('change', function (values, handle) {\r\n\r\n var room_valMin = values[0],\r\n room_valMax = values[1];\r\n\r\n roomSliderValMin.value = room_valMin;\r\n roomSliderValMax.value = room_valMax;\r\n\r\n Prodo_Site.TriggerEvent('Reload_Prodo_PropertySearch_Form_Submit');\r\n\r\n });\r\n\r\n if(document.location.search.length) {\r\n\r\n var QSroomMin = getParameterByName('BedroomMin');\r\n var QSroomMax = getParameterByName('BedroomMax'); \r\n\r\n if (QSroomMin != null || QSroomMax != null) {\r\n\r\n if (QSroomMin == null) {\r\n QSroomMin = roomMin\r\n }\r\n\r\n if (QSroomMax == null) {\r\n QSroomMin = roomMax\r\n }\r\n\r\n roomMin = parseInt(QSroomMin);\r\n roomMax = parseInt(QSroomMax);\r\n\r\n roomSlider.noUiSlider.updateOptions({\r\n start: [QSroomMin, QSroomMax]\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (document.getElementById('distanceSlider')) {\r\n\r\n var priceSlider = document.getElementById('distanceSlider'),\r\n //distanceMin = parseInt(distanceSlider.getAttribute('data-distance-min')),\r\n distanceMax = parseInt(distanceSlider.getAttribute('data-distance-max')),\r\n distanceSliderMin = document.getElementById('distanceSlider-value-min'),\r\n distanceSliderMax = document.getElementById('distanceSlider-value-max'),\r\n distanceSliderVal = document.getElementById('distanceSliderVal');\r\n\r\n noUiSlider.create(distanceSlider, {\r\n start: 5,\r\n behaviour: 'snap',\r\n connect: [true, false],\r\n step: 1,\r\n range: {\r\n 'min': 1,\r\n 'max': distanceMax\r\n },\r\n format: wNumb({\r\n decimals: 0\r\n }),\r\n handleAttributes: [\r\n { 'aria-label': 'Handle for distance slider control' },\r\n ]\r\n\r\n });\r\n\r\n //distanceSliderVal.value = distanceMax;\r\n\r\n distanceSlider.noUiSlider.on('update', function (values, handle) {\r\n distanceSliderMax.innerHTML = values[handle] + ' miles';\r\n });\r\n\r\n distanceSlider.noUiSlider.on('change', function (values, handle) {\r\n\r\n var distance_val = values[0];\r\n\r\n distanceSliderVal.value = distance_val;\r\n\r\n Prodo_Site.TriggerEvent('Reload_Prodo_PropertySearch_Form_Submit');\r\n\r\n });\r\n\r\n if(document.location.search.length) {\r\n\r\n var QSdistance = getParameterByName('Distance');\r\n\r\n if(QSdistance != null) {\r\n\r\n distanceMax = parseInt(QSdistance);\r\n\r\n distanceSlider.noUiSlider.updateOptions({\r\n start: [QSdistance]\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n Site.RegisterModule(Prodo_DataSlider);\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n\r\n var Prodo_Selectric = function () {\r\n\r\n $('.js-select, .umbraco-forms-field-wrapper select').selectric();\r\n\r\n $(document).ready(function () {\r\n $(\".selectric-input\").wrap(\"\");\r\n });\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_Selectric);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_ListingToggle = function () {\r\n var toggleViewType = $('.js-toggle-list-view'),\r\n mapView = $('.js-toggle-list-view__map'),\r\n listingsView = $('.js-toggle-list-view__listings'),\r\n pagination = $('.js-toggle-list-view__pagination')\r\n\r\n toggleViewType.on('click', function () {\r\n toggleViewType.attr('aria-selected', 'false');\r\n\r\n toggleViewType.removeClass('active');\r\n $(this).addClass('active').attr('aria-selected', 'true');\r\n\r\n var target = $(this).data('list-mode');\r\n\r\n if (target == 'map') {\r\n listingsView.hide().attr('tabindex', '-1');\r\n mapView.show().attr('tabindex', '0');\r\n pagination.hide();\r\n } else if (target == 'grid') {\r\n mapView.hide();\r\n listingsView.show().removeClass('list-view').addClass('grid-view').attr('tabindex', '0');\r\n pagination.show();\r\n } else {\r\n mapView.hide().attr('tabindex', '-1');\r\n listingsView.show().removeClass('grid-view').addClass('list-view');\r\n pagination.show();\r\n }\r\n });\r\n };\r\n\r\n Site.RegisterModule(Prodo_ListingToggle);\r\n Site.RegisterEvent('Reload_Prodo_Toggler', Prodo_ListingToggle);\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n var Prodo_SiteSearch = function () {\r\n\r\n var search_trigger = $('[data-site-search]'),\r\n search_bar = $('[data-site-search-bar]'),\r\n search_label_inactive = $('[data-site-search-label=\"inactive\"]'),\r\n search_label_active = $('[data-site-search-label=\"active\"]'),\r\n search_input = $('[data-site-search-input]'),\r\n search_clear = $('[data-site-search-clear]');\r\n\r\n search_trigger.on('click', function () {\r\n\r\n if ($(this).hasClass('active')) {\r\n search_label_active.hide();\r\n search_label_inactive.show();\r\n } else {\r\n search_label_active.show();\r\n search_label_inactive.hide();\r\n }\r\n\r\n $(this).toggleClass('active');\r\n search_bar.toggle();\r\n search_input.focus();\r\n });\r\n\r\n search_clear.on('click', function () {\r\n search_input.val('');\r\n });\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_SiteSearch);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_InteractiveMap = function () {\r\n\r\n /* add some functions for adding/removing CSS classes - https://toddmotto.com/hacking-svg-traversing-with-ease-addclass-removeclass-toggleclass-functions/ */\r\n SVGElement.prototype.hasClass = function (className) {\r\n return new RegExp('(\\\\s|^)' + className + '(\\\\s|$)').test(this.getAttribute('class'));\r\n };\r\n\r\n SVGElement.prototype.addClass = function (className) {\r\n if (!this.hasClass(className)) {\r\n this.setAttribute('class', this.getAttribute('class') + ' ' + className);\r\n }\r\n };\r\n\r\n SVGElement.prototype.removeClass = function (className) {\r\n var removedClass = this.getAttribute('class').replace(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)', 'g'), '$2');\r\n if (this.hasClass(className)) {\r\n this.setAttribute('class', removedClass);\r\n }\r\n };\r\n\r\n $('#interactivemap [data-element]').hover(function()\r\n {\r\n this.addClass('hover');\r\n $(this).click();\r\n\r\n }, function()\r\n {\r\n this.removeClass('hover');\r\n });\r\n\r\n $('[data-tooltip-close]').click(function()\r\n {\r\n //Removes the grey hover and the tooltip\r\n tooltipClose();\r\n });\r\n\r\n function isAreaSet(id)\r\n {\r\n return getAreaJson(id) != null;\r\n }\r\n\r\n $('#interactivemap [data-element]').click(function(e)\r\n {\r\n tooltipClose();\r\n\r\n var areaId = $(this).attr('id');\r\n this.addClass('active');\r\n processTooltipFromId(areaId, e, this);\r\n\r\n });\r\n\r\n\r\n $('#interactivemapselect').change(function(e)\r\n {\r\n tooltipClose();\r\n\r\n var areaId = $(this).val();\r\n\r\n // Map is hidden\r\n if ($(window).width() <= 642)\r\n {\r\n //document.location.href = getAreaLink(areaId);\r\n }\r\n else\r\n {\r\n $('#interactivemap [data-element]').each(function()\r\n {\r\n if ($(this).attr('id') == areaId)\r\n {\r\n $(this).trigger('click');\r\n return;\r\n\r\n }\r\n });\r\n }\r\n\r\n\r\n });\r\n\r\n function processTooltipFromId(areaId, e, path)\r\n {\r\n\r\n if (getAreaJson(areaId) != null)\r\n {\r\n var type = getRawType(areaId);\r\n\r\n var name = getRawAreaFormattedName(areaId);\r\n var areaDataLabel1 = getRawAreaDataLabel1(areaId);\r\n var areaDataInfo1 = getRawAreaDataInfo1(areaId);\r\n var areaDataLabel2 = getRawAreaDataLabel2(areaId);\r\n var areaDataInfo2 = getRawAreaDataInfo2(areaId);\r\n\r\n var areaDataLabel3 = getRawAreaDataLabel1(areaId);\r\n var areaDataInfo3 = getRawAreaDataInfo2(areaId);\r\n var areaDataLabel4 = getRawAreaDataLabel1(areaId);\r\n var areaDataInfo4 = getRawAreaDataInfo2(areaId);\r\n\r\n $('[data-interactive-map-tooltip-info-1]').empty();\r\n $('[data-interactive-map-tooltip-label-1]').empty();\r\n\r\n if (type === 'office') {\r\n\r\n var officeName = getRawOfficeName(areaId);\r\n var officeAddress = getRawOfficeAddress(areaId);\r\n if (officeAddress != null)\r\n {\r\n\r\n officeAddress= officeAddress.replace(/,/g,'
');\r\n\r\n }\r\n\r\n var officeTel = getRawOfficeTel(areaId);\r\n\r\n }\r\n else {\r\n $('[data-interactive-map-tooltip-label-1]').empty().html(areaDataLabel1);\r\n $('[data-interactive-map-tooltip-info-1]').empty().html(areaDataInfo1);\r\n }\r\n\r\n if (name == null) {\r\n console.log(\"Area not found - ensure that the InteractiveMap paths have an ID that matches a field in the JS (GlobalNetworkLocations)\");\r\n }\r\n\r\n $('[data-interactive-map-tooltip-title]').empty().html(name);\r\n\r\n\r\n $('[data-interactive-map-tooltip-label-2]').empty();\r\n\r\n if (areaDataLabel2) {\r\n $('[data-interactive-map-tooltip-label-2]').empty().html(areaDataLabel2);\r\n }\r\n\r\n $('[data-interactive-map-tooltip-info-2]').empty();\r\n\r\n if (areaDataInfo2) {\r\n $('[data-interactive-map-tooltip-info-2]').html(areaDataInfo2);\r\n }\r\n\r\n if (areaDataLabel3) {\r\n $('[data-interactive-map-tooltip-label-3]').empty().html(areaDataLabel3);\r\n }\r\n\r\n $('[data-interactive-map-tooltip-info-3]').empty();\r\n\r\n if (areaDataInfo3) {\r\n $('[data-interactive-map-tooltip-info-3]').html(areaDataInfo3);\r\n }\r\n\r\n if (areaDataLabel4) {\r\n $('[data-interactive-map-tooltip-label-4]').empty().html(areaDataLabel3);\r\n }\r\n\r\n $('[data-interactive-map-tooltip-info-4]').empty();\r\n\r\n if (areaDataInfo4) {\r\n $('[data-interactive-map-tooltip-info-4]').html(areaDataInfo4);\r\n }\r\n\r\n $('[data-interactive-map-tooltip-office-name]').empty();\r\n\r\n if (officeName) {\r\n $('[data-interactive-map-tooltip-office-name]').html(officeName);\r\n }\r\n\r\n $('[data-interactive-map-tooltip-office-address]').empty();\r\n\r\n if (officeAddress) {\r\n $('[data-interactive-map-tooltip-office-address]').html(officeAddress);\r\n }\r\n\r\n $('[data-interactive-map-tooltip-office-tel]').empty();\r\n\r\n if(officeTel){\r\n $('[data-interactive-map-tooltip-office-tel]').html(officeTel);\r\n }\r\n\r\n $('#interactive-tooltip').addClass('active');\r\n\r\n var topOffset = 0; //px\r\n\r\n var pathBbox = path.getBoundingClientRect();\r\n\r\n\r\n // Left calculation\r\n // Center of the svg path\r\n var pathCenterX = $(path).offset().left + (pathBbox.width / 2),\r\n pathCenterY = $(path).offset().top + (pathBbox.height / 2);\r\n\r\n // Get tooltip width and height\r\n var tooltipCenterX = $('#interactive-tooltip').outerWidth();\r\n var tooltipCenterY = $('#interactive-tooltip').outerHeight() + 15;\r\n\r\n var mainWidth = $('.m-map-listings').outerWidth() + $('.m-map-listings').offset().left,\r\n newLeftPosition = pathCenterX - (tooltipCenterX / 2),\r\n tooltipFinalX = newLeftPosition,\r\n tooltipFinalY = pathCenterY - tooltipCenterY;\r\n\r\n if (mainWidth <= pathCenterX + (tooltipCenterX / 2)) {\r\n $('#interactive-tooltip').addClass('arrow-right');\r\n tooltipFinalX = $(path).offset().left - (tooltipCenterX - 30),\r\n tooltipFinalY = pathCenterY - ($('#interactive-tooltip').outerHeight() / 2);\r\n } else {\r\n $('#interactive-tooltip').removeClass('arrow-right');\r\n }\r\n\r\n $('#interactive-tooltip').css('left', tooltipFinalX);\r\n $('#interactive-tooltip').css('top', tooltipFinalY);\r\n }\r\n }\r\n\r\n function tooltipClose()\r\n {\r\n $('#interactive-tooltip').removeClass('active');\r\n $('#interactivemap polygon').each(function()\r\n {\r\n this.removeClass('active');\r\n });\r\n }\r\n\r\n function getRawType(id)\r\n {\r\n return getAreaJson(id).Type;\r\n }\r\n\r\n function getRawAreaFormattedName(id)\r\n {\r\n return getAreaJson(id).Name;\r\n }\r\n\r\n function getRawAreaDataLabel1(id)\r\n {\r\n return getAreaJson(id).AreaDataLabel1;\r\n }\r\n\r\n function getRawAreaDataInfo1(id)\r\n {\r\n return getAreaJson(id).AreaDataInfo1;\r\n }\r\n\r\n function getRawAreaDataLabel2(id)\r\n {\r\n return getAreaJson(id).AreaDataLabel2;\r\n }\r\n\r\n function getRawAreaDataInfo2(id)\r\n {\r\n return getAreaJson(id).AreaDataInfo2;\r\n }\r\n\r\n function getRawAreaDataLabel3(id)\r\n {\r\n return getAreaJson(id).AreaDataLabel3;\r\n }\r\n\r\n function getRawAreaDataInfo3(id)\r\n {\r\n return getAreaJson(id).AreaDataInfo3;\r\n }\r\n\r\n function getRawAreaDataLabel4(id)\r\n {\r\n return getAreaJson(id).AreaDataLabel4;\r\n }\r\n\r\n function getRawAreaDataInfo4(id)\r\n {\r\n return getAreaJson(id).AreaDataInfo4;\r\n }\r\n\r\n function getRawOfficeName(id)\r\n {\r\n return getAreaJson(id).Name;\r\n }\r\n\r\n function getRawOfficeAddress(id)\r\n {\r\n return getAreaJson(id).AreaDataInfo1;\r\n }\r\n\r\n function getRawOfficeTel(id)\r\n {\r\n return getAreaJson(id).officeTel;\r\n }\r\n\r\n function getAreaJson(id)\r\n {\r\n for (var i = 0; i < GlobalNetworkLocations.length; i++) {\r\n var nameFormatted = GlobalNetworkLocations[i].NameFormatted;\r\n if (nameFormatted == id)\r\n {\r\n return GlobalNetworkLocations[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_InteractiveMap);\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_PropertySearch = function () {\r\n var\r\n order = $('#property-order'),\r\n distance = $('#distanceSliderVal'),\r\n eventDate = $('#event-date'),\r\n toRentBtn = $('#to-rent'),\r\n performSearchButton = $('#perform-search'),\r\n forRentBtn = $('#for-rent-button'),\r\n roomSliderMin = $('#roomSliderValMin'),\r\n roomSliderMax = $('#roomSliderValMax'),\r\n rentPriceMin = $('#priceSliderRentValMin'),\r\n rentPriceMax = $('#priceSliderRentValMax'),\r\n salePriceMin = $('#priceSliderSaleValMin'),\r\n salePriceMax = $('#priceSliderSaleValMax'),\r\n typeOfCare = $('#type-of-care'),\r\n propertyTypeBtn = $('.m-toggle-button__input'),\r\n propertyTypeForm = $('#propertyTypeForm'),\r\n propertySearchForm = $('#propertySearchForm'),\r\n currentSize = Foundation.MediaQuery.current;\r\n\r\n function buildUrl() {\r\n Prodo_Site.TriggerEvent('Reload_Prodo_Toggler');\r\n Prodo_Site.TriggerEvent('Reload_Prodo_Json_Map');\r\n\r\n var u = [];\r\n\r\n //get current url\r\n var url = window.location.href.split('?')[0];\r\n\r\n //get property type\r\n propertyTypeForm.find('input[type=\"radio\"]:checked').each(function (i, obj) {\r\n u.push('PropertyType=' + $(obj).val());\r\n })\r\n\r\n //get property location\r\n propertyTypeForm.find('input[type=\"text\"][name=\"Location\"]').each(function (i, obj) {\r\n if ($(obj).val())\r\n u.push('Location=' + $(obj).val());\r\n })\r\n propertyTypeForm.find('input[type=\"hidden\"][name=\"Lat\"]').each(function (i, obj) {\r\n if ($(obj).val())\r\n u.push('Lat=' + $(obj).val());\r\n })\r\n propertyTypeForm.find('input[type=\"hidden\"][name=\"Lon\"]').each(function (i, obj) {\r\n if ($(obj).val())\r\n u.push('Lon=' + $(obj).val());\r\n })\r\n\r\n //get rent price\r\n if ($('input[type=\"radio\"]:checked.m-toggle-button__input').length) {\r\n switch ($('input[type=\"radio\"]:checked.m-toggle-button__input').val()) {\r\n case 'PropertyForSale':\r\n case 'PropertyForRetirement':\r\n if (salePriceMin.length && salePriceMin.val())\r\n u.push('SalePriceMin=' + $(salePriceMin).val());\r\n if (salePriceMax.length && salePriceMax.val())\r\n u.push('SalePriceMax=' + $(salePriceMax).val());\r\n break;\r\n case 'PropertyToRent':\r\n if (rentPriceMin.length && rentPriceMin.val())\r\n u.push('RentPriceMin=' + $(rentPriceMin).val());\r\n if (rentPriceMax.length && rentPriceMax.val())\r\n u.push('RentPriceMax=' + $(rentPriceMax).val());\r\n break;\r\n }\r\n }\r\n\r\n //get sort\r\n if (typeOfCare.find('option:selected').length)\r\n u.push('TypeOfCare=' + typeOfCare.find('option:selected').val());\r\n\r\n //get bedrooms\r\n if (roomSliderMin.length && roomSliderMin.val())\r\n u.push('BedroomMin=' + $(roomSliderMin).val());\r\n if (roomSliderMax.length && roomSliderMax.val())\r\n u.push('BedroomMax=' + $(roomSliderMax).val());\r\n\r\n //get distance\r\n if (distance.length && distance.val())\r\n u.push('Distance=' + $(distance).val());\r\n\r\n //get sort\r\n if (order.find('option:selected').length)\r\n u.push('Order=' + order.find('option:selected').val());\r\n\r\n if (u.length > 0) {\r\n url += '?' + u.join(\"&\");\r\n }\r\n\r\n window.history.replaceState(null, null, url);\r\n }\r\n\r\n function submitForm() {\r\n checkLocation();\r\n propertySearchForm.submit();\r\n }\r\n\r\n function checkLocation() {\r\n //if lon || lat == null throw error\r\n var location = propertyTypeForm.find('.js-location_lookup_placename');\r\n var lon = propertyTypeForm.find('.js-location_lookup_longitude');\r\n var lat = propertyTypeForm.find('.js-location_lookup_latitude');\r\n\r\n if ((!lon.val() || !lat.val()) && (location.length && location.val())) {\r\n $(location).val('');\r\n $(location).attr('placeholder', 'Please select valid location');\r\n }\r\n }\r\n\r\n function clearFilters() {\r\n // set dropdwons to first option and call refresh selectric in order to reflect selected values\r\n if (typeOfCare.length > 0) {\r\n typeOfCare.prop(\"selectedIndex\", 0).selectric('refresh');\r\n }\r\n\r\n if (order.length > 0) {\r\n order.prop(\"selectedIndex\", 0).selectric('refresh');\r\n }\r\n\r\n if (salePriceMin.length && salePriceMax.length) {\r\n var salesPriceTop = $('#salePriceMax').val();\r\n\r\n salePriceMin.val('0');\r\n salePriceMax.val(salesPriceTop);\r\n\r\n priceSliderSale.noUiSlider.updateOptions({\r\n start: [0, salesPriceTop]\r\n });\r\n }\r\n\r\n if (roomSliderMin.length && roomSliderMax.length) {\r\n roomSliderMin.val('0');\r\n roomSliderMax.val('5');\r\n\r\n roomSlider.noUiSlider.updateOptions({\r\n start: [0, 5]\r\n });\r\n }\r\n\r\n if (distance.length) {\r\n distance.val('50');\r\n\r\n distanceSlider.noUiSlider.updateOptions({\r\n start: [50]\r\n });\r\n }\r\n\r\n var location = propertyTypeForm.find('.js-location_lookup_placename');\r\n if (location.length) {\r\n location.val('');\r\n propertyTypeForm.find('.js-location_lookup_longitude').val('');\r\n propertyTypeForm.find('.js-location_lookup_latitude').val('');\r\n }\r\n\r\n submitForm();\r\n }\r\n\r\n //clear lon/lat on key down\r\n propertyTypeForm.find('.js-location_lookup_placename').keydown(function () {\r\n propertyTypeForm.find('.js-location_lookup_longitude').val('');\r\n propertyTypeForm.find('.js-location_lookup_latitude').val('');\r\n })\r\n\r\n $('#priceSliderSaleWrapper').hide();\r\n $('#priceSliderRentWrapper').hide();\r\n\r\n $(document).ready(function () {\r\n if ($('input[type=\"radio\"]:checked.m-toggle-button__input').length) {\r\n switch ($('input[type=\"radio\"]:checked.m-toggle-button__input').val()) {\r\n case 'PropertyForSale':\r\n case 'PropertyForRetirement':\r\n $('#priceSliderSaleWrapper').show();\r\n break;\r\n case 'PropertyToRent':\r\n $('#priceSliderRentWrapper').show();\r\n break;\r\n }\r\n }\r\n });\r\n\r\n $(window).on(\"resize.zf.mediaquery\", function () {\r\n var newSize = Foundation.MediaQuery.current;\r\n if (currentSize != newSize) {\r\n $('[data-equalizer]').foundation('_reflow');\r\n currentSize = newSize;\r\n }\r\n });\r\n\r\n propertyTypeBtn.on('click', function () {\r\n $('#priceSliderSaleWrapper').hide();\r\n $('#priceSliderRentWrapper').hide();\r\n\r\n switch ($(this).val()) {\r\n case 'PropertyForSale':\r\n case 'PropertyForRetirement':\r\n $('#priceSliderSaleWrapper').show();\r\n break;\r\n case 'PropertyToRent':\r\n $('#priceSliderRentWrapper').show();\r\n break;\r\n }\r\n });\r\n\r\n function scrollToResults() {\r\n $('html, body').animate({\r\n scrollTop: ($('#content-start').offset().top)\r\n }, 500);\r\n }\r\n\r\n\r\n\r\n performSearchButton.on('click', function () {\r\n scrollToResults();\r\n $('#for-sale')[0].click();\r\n });\r\n\r\n forRentBtn.on('click', function () {\r\n scrollToResults();\r\n $('#for-rent')[0].click();\r\n });\r\n\r\n Site.RegisterEvent(\"Reload_Prodo_PropertySearch_Form_Submit\", submitForm);\r\n Site.RegisterEvent(\"Reload_Prodo_Rebuild_PropertySearch_Url\", buildUrl);\r\n Site.RegisterEvent(\"Clear_Prodo_PropertySearch_Form_Submit\", clearFilters);\r\n };\r\n\r\n Site.RegisterModule(Prodo_PropertySearch);\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n var Prodo_NewsFilter = function () {\r\n\r\n var brandName = $('#brand-name');\r\n\r\n function filterNews() {\r\n if (brandName.length > 0) {\r\n\r\n var url = $('#brand-name').val();\r\n\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n Site.RegisterEvent(\"Reload_Prodo_NewsFilter_Brand_Changed\", filterNews);\r\n }\r\n\r\n Site.RegisterModule(Prodo_NewsFilter);\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n var Google_Location_Lookup = function () {\r\n // constant variables\r\n\r\n var wrapperSelector = '.js-location_lookup',\r\n placeNameInputSelector = wrapperSelector + '_placename',\r\n longitudeInputSelector = wrapperSelector + '_longitude',\r\n latitudeInputSelector = wrapperSelector + '_latitude',\r\n propertySearchForm = $('#propertySearchForm'),\r\n $propertySearchInput = $('.js-location_lookup_placename'),\r\n enterKeyCode = 13;\r\n\r\n // autocomplete options\r\n\r\n var autocompleteOptions = {\r\n types: ['geocode'],\r\n componentRestrictions: { country: 'uk' }\r\n };\r\n\r\n // element variables\r\n\r\n var $locationLookupFields = $(wrapperSelector);\r\n\r\n $locationLookupFields.each(function (index, wrapper) {\r\n // element variables\r\n\r\n var $wrapper = $(wrapper),\r\n $placeNameInput = $wrapper.find(placeNameInputSelector),\r\n $longitudeInput = $wrapper.find(longitudeInputSelector),\r\n $latitudeInput = $wrapper.find(latitudeInputSelector);\r\n\r\n // autocompelete variables\r\n\r\n var autocomplete = new google.maps.places.Autocomplete($placeNameInput[0], autocompleteOptions);\r\n\r\n // UI bindings\r\n\r\n google.maps.event.addListener(autocomplete, 'place_changed', function () {\r\n var place = autocomplete.getPlace();\r\n\r\n $latitudeInput.val(place.geometry.location.lat());\r\n $longitudeInput.val(place.geometry.location.lng());\r\n });\r\n\r\n });\r\n\r\n $propertySearchInput.on('keyup', debounce(function (e) {\r\n if (e.keyCode == enterKeyCode) {\r\n enterKeyPress(e.keyCode);\r\n }\r\n }, 300 ))\r\n\r\n var enterKeyPress = function (keycode) {\r\n if (propertyTypeForm.length) {\r\n //check to get around location being set to an empty string further up\r\n if ($('.js-location_lookup_placename').val() != \"\") {\r\n scrollToResults();\r\n propertySearchForm.submit();\r\n }\r\n }\r\n }\r\n function scrollToResults() {\r\n $('html, body').animate({\r\n scrollTop: ($('#content-start').offset().top)\r\n }, 500);\r\n }\r\n };\r\n\r\n Site.RegisterModule(Google_Location_Lookup);\r\n}(jQuery, Prodo_Site);","!function($, Site) {\r\n\r\n var Prodo_PropertyRequestInformation = function() {\r\n\r\n var propertyName = $('.property input');\r\n\r\n if (getParameterByName(\"prop\", null))\r\n propertyName.val(getParameterByName(\"prop\", null));\r\n\r\n function getParameterByName(name, url) {\r\n if (!url) url = window.location.href;\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n }\r\n }\r\n\r\n Site.RegisterModule(Prodo_PropertyRequestInformation);\r\n\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n\r\n var Prodo_InterchangeFade = function () {\r\n\r\n $('[data-interchange]').on('load', function () {\r\n $(this).css('opacity', '1');\r\n });\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_InterchangeFade);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_AccessibleMegaMenu = function () {\r\n \r\n if( Foundation.MediaQuery.is('large') ) {\r\n $('.js-accessible-megamenu').accessibleMegaMenu();\r\n };\r\n \r\n };\r\n\r\n Site.RegisterModule(Prodo_AccessibleMegaMenu);\r\n}(jQuery, Prodo_Site);","!function ($, Site) {\r\n\r\n//Dynamically adds title attribute to videos rendered in grid via Embed module\r\n var Prodo_Embed = function () {\r\n\r\n $(document).ready(function () {\r\n $(\"div.video-wrapper iframe\").attr(\"title\", \"Embedded video from YouTube\");\r\n })\r\n\r\n };\r\n\r\n Site.RegisterModule(Prodo_Embed);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n var Prodo_RSSFeed = function () {\r\n var params = new URLSearchParams(window.location.search);\r\n var $filterOptions = $(\".js-rss-feed__dropdown\");\r\n\r\n $('.js-rss-feed__dropdown.js-select').selectric().on('change', function () {\r\n params.set('division', $(this).val());\r\n });\r\n\r\n $(window).on('load', function () {\r\n var queryStringFilter = params.get('division');\r\n if (queryStringFilter) {\r\n $filterOptions.val(queryStringFilter).selectric('refresh');\r\n } \r\n });\r\n\r\n $(\".js-rss-feed__search\").click(function () {\r\n if (params.get('division') != \"0\") {\r\n window.location.search = params;\r\n }\r\n else {\r\n window.location.search = \"\";\r\n }\r\n });\r\n };\r\n\r\n Site.RegisterModule(Prodo_RSSFeed);\r\n\r\n}(jQuery, Prodo_Site);\r\n","!function ($, Site) {\r\n\r\n var Prodo_KPI_Dashboard = function () {\r\n\r\n // Constant Variables\r\n var overlayOpen = false,\r\n kpiCard = '.js-kpi-card';\r\n\r\n // Elemnet Variables\r\n var $body = $('body'),\r\n $overlay = $('.js-kpi-overlay'),\r\n $overlayContent = $('.js-kpi-overlay-content'),\r\n $card = $('.js-kpi-card'),\r\n $overlayOpen = $('.js-kpi-open-overlay'),\r\n $overlayClose = $('.js-kpi-close-overlay');\r\n\r\n // Functions\r\n function overlayContent(kpiID) {\r\n // Initialize data to null\r\n var data = null;\r\n\r\n // Loop through the kpiData array set in the view\r\n for (var i = 0; i < kpiData.length; i++) {\r\n // If the current object's id matches the kpiID, assign it to data and break the loop\r\n if (kpiData[i].id == kpiID) {\r\n data = kpiData[i];\r\n break;\r\n }\r\n }\r\n \r\n // Check if kpiData is not null\r\n if(data != null) {\r\n\r\n // Declare a variable to store the overlay content\r\n var overlayContent = \"\";\r\n\r\n // Populate the overlay content\r\n overlayContent += '
';\r\n overlayContent += '

' + data.keyFigure + '

';\r\n overlayContent += '
';\r\n overlayContent += '

' + data.title + '

';\r\n overlayContent += '
';\r\n overlayContent += data.details;\r\n overlayContent += '
';\r\n overlayContent += '
';\r\n if(data.trendText != \"\") {\r\n overlayContent += '
';\r\n overlayContent += '';\r\n overlayContent += '' + data.trendText + '';\r\n overlayContent += '
';\r\n }\r\n if(data.target != \"\") {\r\n overlayContent += '

';\r\n overlayContent += '';\r\n overlayContent += 'Target: ' + data.target + '';\r\n overlayContent += '

';\r\n }\r\n if(data.sampleSize != 0) {\r\n overlayContent += '

';\r\n overlayContent += '';\r\n overlayContent += 'Sample: ' + data.sampleSize + '';\r\n overlayContent +='

';\r\n }\r\n if(data.date != \"\") {\r\n overlayContent += '

';\r\n overlayContent += '';\r\n overlayContent += ' ' + data.date + '';\r\n overlayContent +='

';\r\n }\r\n overlayContent += '
';\r\n overlayContent += '
';\r\n\r\n // Replace the existing content of Overlay\r\n $overlayContent.append(overlayContent);\r\n\r\n }\r\n }\r\n\r\n function closeOverlay() {\r\n $body.removeClass('is-locked');\r\n $overlay.removeClass('is-open');\r\n $overlayContent.find(kpiCard).remove();\r\n overlayOpen = false;\r\n }\r\n\r\n function openOverlay(kpiID ) {\r\n $body.addClass('is-locked');\r\n $overlay.addClass('is-open');\r\n overlayOpen = true;\r\n overlayContent(kpiID);\r\n }\r\n\r\n function isInViewport(element) {\r\n var rect = element.getBoundingClientRect();\r\n var html = document.documentElement;\r\n \r\n // Calculate the height and width of the element\r\n var elementHeight = rect.height;\r\n var elementWidth = rect.width;\r\n \r\n // Check if at least 50% of the element is in the viewport\r\n return (\r\n rect.top + elementHeight * 0.5 >= 0 &&\r\n rect.left + elementWidth * 0.5 >= 0 &&\r\n rect.bottom - elementHeight * 0.5 <= (window.innerHeight || html.clientHeight) &&\r\n rect.right - elementWidth * 0.5 <= (window.innerWidth || html.clientWidth)\r\n );\r\n }\r\n\r\n function showCardsOnScroll() {\r\n $card.each(function() {\r\n if (isInViewport(this)) {\r\n $(this).addClass('is-visible');\r\n }\r\n });\r\n }\r\n\r\n // UI Bindings\r\n $overlayOpen.on('click', function () {\r\n var kpiID = $(this).parents(kpiCard).data('id');\r\n openOverlay(kpiID);\r\n });\r\n\r\n $overlayClose.on('click', function () {\r\n closeOverlay();\r\n });\r\n\r\n $(window).on('load', function() {\r\n showCardsOnScroll();\r\n });\r\n \r\n $(window).on('scroll', showCardsOnScroll);\r\n\r\n\t};\r\n\r\n Site.RegisterModule(Prodo_KPI_Dashboard);\r\n\r\n}(jQuery, Prodo_Site);\r\n"]}