!function(){"use strict";function propertySearchApi(api,util){var _getSearchIdFromSearchCriteria_SearchCriteria,_getSearchIdFromSearchCriteria_SearchId;return{getSearchCriteriaFromSearchId:function(searchId){if((searchId=parseInt(searchId))==_getSearchIdFromSearchCriteria_SearchId)return util.promiseResolvedWith(_getSearchIdFromSearchCriteria_SearchCriteria);return api.get("/api/propertysearch/criteria/get",{searchid:searchId}).then((function(result){return function(searchCriteria){searchCriteria&&(searchCriteria.dateFrom=api.mapResponseDate(searchCriteria.dateFrom),searchCriteria.dateTo=api.mapResponseDate(searchCriteria.dateTo));return searchCriteria}(result)}))},getSearchIdFromSearchCriteria:function(searchCriteria){var criteria=_getSearchIdFromSearchCriteria_SearchCriteria=mapSearchCriteriaRequest(searchCriteria);return api.get("/api/propertysearch/searchid/get",criteria).then((function(result){return _getSearchIdFromSearchCriteria_SearchId=parseInt(result)}))},getSearchUrlFromSearchCriteria:function(searchCriteria){return api.get("/api/propertysearch/url/get",mapSearchCriteriaRequest(searchCriteria))},getPropertyCountFromSearchId:function(locationId,searchId){return locationId=parseInt(locationId),searchId=parseInt(searchId),api.get("/api/propertysearch/count/get",{locationId:locationId,searchId:searchId})},getPropertyCountFromSearchCriteria:function(searchCriteria){var criteria=angular.copy(searchCriteria);return criteria.pageNumber=1,criteria.sortType=1,api.get("/api/propertysearch/result/count",mapSearchCriteriaRequest(criteria))},getPropertyResultFromSearchCriteria:function(searchCriteria){return api.get("/api/propertysearch/result/get",mapSearchCriteriaRequest(searchCriteria))},getChildLocationsFromSearchCriteria:function(searchCriteria){var criteria=angular.copy(searchCriteria);return criteria.pageNumber=1,criteria.sortType=1,api.get("/api/propertysearch/childlocations/get",mapSearchCriteriaRequest(criteria))},getThemeLinksFromSearchCriteria:function(searchCriteria){var criteria=angular.copy(searchCriteria);return criteria.pageNumber=1,criteria.sortType=1,api.get("/api/propertysearch/themelinks/get",mapSearchCriteriaRequest(criteria))},getFrontPageSearchIdFromSearchId:function(searchId){return searchId=parseInt(searchId),api.get("/api/propertysearch/defaultfrontpagesearchid/convert",{searchid:searchId}).then((function(result){return parseInt(result)}))},getPropertiesId:function(criteria){var url=function(url){url.startsWith("/")||(url=`/${url}`);return`${window.location.protocol}//${window.location.host}${url}`}(`/api/holidayhomesearch/searchpropertyidbylocation?locationFromUrl=''&locationId=${criteria.locationId}`);if(criteria.dateFrom){var from=moment(criteria.dateFrom).format("YYYY-MM-DD");url+=`&dateFrom=${from}`}if(criteria.dateTo){var to=moment(criteria.dateTo).format("YYYY-MM-DD");url+=`&dateTo=${to}`}return api.get(url,{})},MakeSearch:function(criteria){return criteria.dateFrom=moment(criteria.dateFrom).format("YYYY-MM-DD"),criteria.dateTo=moment(criteria.dateTo).format("YYYY-MM-DD"),api.post("https://search.sh-crp.com/api/v1/search",JSON.stringify(criteria))}};function mapSearchCriteriaRequest(searchCriteria){var d={};return angular.copy(searchCriteria,d),d.dateFrom=api.mapRequestDate(d.dateFrom),d.dateTo=api.mapRequestDate(d.dateTo),d}}angular.module("app").factory("propertySearchApi",propertySearchApi),propertySearchApi.$inject=["cshApi","util"]}(),function(){"use strict";function propertySearchPersistence(locationHash,localStorage,propertySearchApi){return{init:function(searchService,isSearchPage,isFrontPage){"onhashchange"in window&&(window.onhashchange=function(){isSearchPage&&getSearchIdFromUrl()!==searchService.result.searchId&&searchService.executeSearchFromSearchId(getSearchIdFromUrl())});var searchId=getSearchIdFromUrl()||localStorage.get("search.searchid")||0,criteriaOverload=getSearchIdFromUrl()?{}:{pageNumber:1};0!==searchId&&(isSearchPage?searchService.executeSearchFromSearchId(searchId,criteriaOverload):isFrontPage?propertySearchApi.getFrontPageSearchIdFromSearchId(searchId).then((function(data){saveSearchId(0),saveSearchId(data);searchService.loadSearchCriteriaFromSearchId(data,{locationId:null})})):searchService.loadSearchCriteriaFromSearchId(searchId))},saveSearchId:saveSearchId};function getSearchIdFromUrl(){return parseInt(locationHash.get("searchid"))||0}function saveSearchId(searchId){localStorage.set("search.searchid",searchId),localStorage.set("search.time",(new Date).getTime())}}angular.module("app").factory("propertySearchPersistence",propertySearchPersistence),propertySearchPersistence.$inject=["locationHash","cshLocalStorage","propertySearchApi"]}(),function(){"use strict";function propertySearch($q,api,hitsApi,util,siteCurrency){var service={criteria:{},result:{criteriaPropertyCount:0,properties:[],childLocations:[],themeLinks:{}},init:function(criteria,isSearchPage,isFrontPage){angular.copy(criteria,_.initialCriteria),angular.copy(criteria,service.criteria),_.isSearchPage=isSearchPage,_.isFrontPage=isFrontPage},executeSearch:function(){var typeCheck=(service.criteria.locationId||"").toString();if("p"===typeCheck[0]){for(var arrayForCheck=typeCheck.split("").splice(1),newId="",i=0;i0?data:(searchCriteria.pageNumber=1,doGetPropertyResultFromSearchCriteria(searchCriteria))}))}function doGetPropertyResultFromSearchCriteria(searchCriteria){return api.getPropertyResultFromSearchCriteria(searchCriteria).then((function(data){return function(properties,searchCriteria){for(var ids=[],i=0;i0?criteria.sleepsFrom:2,term=localStorage.get("newSearchPath");let args=`${term}?adults=${guests}`;!dateFrom&&dateTo&&(args=`${term}?checkin=${dateTo}&adults=${guests}`);dateFrom&&!dateTo&&(args=`${term}?checkin=${dateFrom}&adults=${guests}`);dateFrom&&dateTo&&dateFrom&&(args=`${term}?checkin=${dateFrom}&checkout=${dateTo}&adults=${guests}`);window.location.href="https://"+document.location.host+`${args}`},executeSearchFromSearchId:function(searchId,criteriaOverload){return criteriaOverload=criteriaOverload||{},propertySearch.loadSearchCriteriaFromSearchId(searchId).then((function(criteria){angular.copy(criteria,service.criteria),$.extend(service.criteria,criteriaOverload)}))},loadSearchCriteriaFromSearchId:function(searchId,criteriaOverload){return criteriaOverload=criteriaOverload||{},propertySearch.loadSearchCriteriaFromSearchId(searchId).then((function(criteria){return angular.copy(criteria,service.criteria),$.extend(service.criteria,criteriaOverload),criteria}))},clear:function(){propertySearch.clear(),angular.copy(propertySearch.criteria,service.criteria),propertySearchPersistence.saveSearchId(0)},canClearCriteria:function(){var criteria=$.extend({},service.criteria,_.initialCriteria);return criteria.sortType=service.criteria.sortType,criteria.pageNumber=service.criteria.pageNumber,JSON.stringify(criteria)!==JSON.stringify(service.criteria)},minDateFrom:minDateFrom,minDateTo:minDateTo,isFrontPage:!1},_={ignoreHashChange:!1,isSearchPage:!1,initialCriteria:{},isFrontPage:!1},_minDateFromTo=util.createMinDateFromTo(0,0);function minDateFrom(){return _minDateFromTo.getMinDateFrom()}function minDateTo(){return _minDateFromTo.getMinDateTo(service.criteria.dateFrom)}return service;function executeSearch(){}};angular.module("app").factory("propertySearchUI",propertySearchUI),propertySearchUI.$inject=["$rootScope","propertySearch","propertySearchPersistence","util","cshLocalStorage"]}(),function(){"use strict";var PropertySearchCtrl=function($scope,$rootScope,$timeout,propertySearchUI,siteCurrency,shortlist,cookie,util,localStorage){var vm=this;vm.init=function(initialCriteria,propertyCount,isSearchPage,isFrontPage,expandable){initialCriteria.propertyTypes=-1,$rootScope.$watch((function(){return siteCurrency.id}),(function(){vm.criteria.currencyId=siteCurrency.id})),shortlist.canAdd=!0,shortlist.canRemove=!1,shortlist.canView=!0,vm.isSearchPage=isSearchPage,vm.expandable=expandable,propertySearchUI.init(initialCriteria,isSearchPage,isFrontPage)},vm.currency=siteCurrency,vm.search=function(pageNumber){$("#locationinputidforblink").val()||(vm.destinationError=!0,vm.criteria.locationId=null);vm.criteria.locationId&&$("#locationinputidforblink").val()&&(vm.criteria.locationId=null,localStorage.set("newSearchPath",`/s/${$("#locationinputidforblink").val()}`));validateSearch(),vm.destinationError||vm.dateError||(vm.criteria.pageNumber=pageNumber,executeSearch(!0))},vm.paginationChange=function(){!0,$(document).scrollTop($("#FilterBox").offset().top),executeSearch(!1)},vm.clear=function(){propertySearchUI.clear()},vm.simpleClear=function(){propertySearchUI.clear()},vm.canClearCriteria=propertySearchUI.canClearCriteria,vm.shortlist=shortlist,vm.criteria=propertySearchUI.criteria,vm.propertySearchUI=propertySearchUI,vm.result=propertySearchUI.result,vm.status=propertySearchUI.status,vm.closeErrorTooltip=function(){vm.destinationError=!1},vm.validateSearch=validateSearch,vm.buttonType="button",vm.oldController=!1,vm.locationIdForShowHolidu="";function executeSearch(showSearching){return showSearching&&(vm.advancedFilter=!1),propertySearchUI.getPropertiesId(vm.criteria)}function validateSearch(){$("#locationinputidforblink").val().length<=1?vm.destinationError=!0:vm.destinationError=!1}vm.expandable=!0,vm.advancedFilter=!1,vm.toggleAdvancedFilter=function(){vm.advancedFilter=!vm.advancedFilter},vm.minDateFrom=propertySearchUI.minDateFrom,vm.minDateTo=propertySearchUI.minDateTo,vm.destinationError=!1,vm.dateError=!1,vm.dateRender=!1,vm.filterRender=!1,vm.dateFromAsISO8601=function(){return vm.criteria.dateFrom?moment(vm.criteria.dateFrom).format("YYYY-MM-DD"):""},vm.dateToAsISO8601=function(){return vm.criteria.dateTo?moment(vm.criteria.dateTo).format("YYYY-MM-DD"):""},vm.clearLocationId=function(){vm.criteria.locationId=null},$('#DateFrom, input[name="DateTo"], input[name="DateFrom_submit"]').on("click",(function(){validateSearch()}))};angular.module("app").controller("PropertySearchCtrl",PropertySearchCtrl),PropertySearchCtrl.$inject=["$scope","$rootScope","$timeout","propertySearchUI","siteCurrency","shortlist","cookie","util","cshLocalStorage"]}();