{"version":3,"sources":["scripts-1592591688326.js","JS/calendar-availability.js","JS/constants.js","JS/dynsite-functions.js","JS/events.js","JS/google-analytics.events.js","JS/lr.common-polyfills.js","JS/lr.local-storage.js","JS/lr.pubsub.js","JS/lr.typeahead.js","JS/main.js","JS/property-date-ranges.js","JS/property-instant-quote.js","JS/search-results-functions.js","JS/search-results-template.js","JS/vendor/bootstrap-datepicker.js","JS/vendor/echo.js","JS/vendor/lr.strip-calendar.js"],"names":["_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","TypeError","Symbol","iterator","Object","prototype","toString","call","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","length","err","Array","isArray","_typeof","obj","constructor","LIVEREZ","window","$","CALENDAR_DAY_TYPES","Available","Unavailable","CheckIn","CheckOut","EarlyCheckIn","LateCheckOut","EarlyCheckInLateCheckOut","SingleNightRental","TurnOver","TurnOverEarlyCheckIn","TurnOverLateCheckOut","CalendarAvailability","dynsiteId","adminCustDataID","pageDataId","this","adminCustDataId","unavailableTypes","unavailableDateObjs","unavailableDateObjsMobile","queriedYears","getCalendarData","startDate","endDate","callback","_this","xhr","readystate","abort","Date","getFullYear","ajax","type","url","DynsiteFunctions","getServerName","data","AdminCustDataID","DynSiteID","PageDataID","ad","dd","dataType","success","forEach","dateObj","_type","calendarDayTypes","indexOf","earlyCheckIn","lateCheckOut","searchAllowForEarlyCheckIn","searchAllowForLateCheckOut","formattedDateObj","dateStringToObject","startDateString","dateFormatType","fixEuroDatesForAPI","filter","element","index","array","ex","console","error","status","remove","log","findDateConflicts","start","end","tmpDate","lrjQ","constants","MAP_TYPE","google","leaflet","PopUp","URL","Window","w","h","x","y","open","socialSharePage","socialType","image","headline","page","encodeURIComponent","location","href","isEmailAddr","email","result","theStr","String","pindex","validRequired","formField","fieldLabel","alert","focus","allDigits","str","inValidCharSet","charset","substr","validEmail","required","validNum","validInt","num","parseInt","isNaN","validDate","elems","split","month","day","origin","protocol","hostname","port","goPropertyByElem","selectObj","val","options","selectedIndex","parent","goPropertyByID","sendtofriend","propertycontact","AD","DD","viewproperty","strPageDataID","strUnitID","formObj","document","action","WebReferencePageDataID","InventoryUnitDataID","submit","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","clearTimeout","setTimeout","DateShort","DateStr","delimeter","getMonth","getDate","DateNatural","d","nth","includeYear","setHours","getHours","getTimezoneOffset","MONTH_NAMES","DAY_NAMES","final","getDay","handleNavisCookies","NavisKeyword","NavisPhone","Storage","set","DYN_SITE_ID","fix800NumberForNavis","get","NavisHiddenPhoneVal","NavisHiddenKeywordVal","attr","text","NavisHiddenKeyword","NavisHiddenPhone","handleCRMPlusCookies","LeadID","insertLeadCookie","leadCookie","leadIDInput","trimDate","strDate","replace","dateFormat","parts","dateStringToISO8601","dateString","myDate","returnDate","join","dateObjectToString","dateStr","year","truncate","string","elipsisBool","_str","substring","daydiff","first","second","checkValidStartEndDates","date1","date2","now","numSearchedDay","maxDays","maxWebRentalDays","isMobileDevice","check","a","test","navigator","userAgent","vendor","opera","checkForEmailElementToHide","div","getElementById","style","display","fixTextForDisplay","strText","on","events","searchCreateMapImage","searchMapOpen","searchMapClose","searchStart","searchComplete","resultsRenderComplete","instantQuoteFinished","calDataFinished","searchSuggestionsStart","searchSuggestionsComplete","calendarSearchStart","calendarSearchComplete","calendarSearchRenderComplete","propertyDateRangeStart","propertyDateRangeComplete","propertyDateRangeError","propertyDateRangeSuccess","NAMESPACE","ready","LR_ENV","ga","loaded","pathname","$propertyBookItNowButton","$propertySidebarContactManagerButton","$propertySendToFriendLink","$propertyCommunityLearnMoreLink","$propertyChangeDatesLink","$propertyReviewWidgetReviewsAnchor","$propertyAllPhotosButton","$propertyFullScreen","$propertyShowAllAmenitiesExpand","$searchComparePropertiesButton","$searchViewMoreCalendars","$searchChangeDatesButton","e","fun","t","len","res","thisArg","T","k","O","kValue","searchElement","fromIndex","Math","abs","Infinity","Function","bind","oThis","aArgs","slice","fToBind","fNOP","fBound","concat","LocalStorage","localStoreSupport","localStorage","setItem","removeItem","key","days","JSON","stringify","date","setTime","getTime","expires","toGMTString","cookie","nameEQ","ca","c","charAt","parse","exists","getItem","pubsub","topics","subUid","publish","topic","subscribers","subscribe","token","unsubscribe","m","j","splice","Publisher","_timeout","DEFAULTS","timeoutLength","dataSource","query","_sendData","q","onNewData","Plugin","option","each","$this","extend","Typeahead","init","wrapperDiv","css","position","width","addClass","typeaheadDiv","top","outerHeight","left","border","border-top","background","color","max-height","overflow-y","html","wrap","after","getData","insertTypeAheadData","close","typeaheadelem","domTypeAheadElem","is","target","has","off","empty","append","fn","lrtypeahead","Constructor","nowTemp","datepicker","beforeShowDay","valueOf","format","autoclose","orientation","id","newDate","setDate","defaultSearchDepartureDays","newEndDate","message","mobiscroll","calendar","theme","controls","minDate","change","mobileEndInst","closeOnSelect","startDateStr","endDateStr","newEnd","newEndStr","echo","throttle","offsetVertical","getScript","CDN_BASE_URL","popover","placement","trigger","myOptions","ADMIN_CUST_DATA_ID","retHtml","pageDataID","pid","DAYS_OF_WEEK","PropertyDateRanges","getByPageDataID","fakeData","dateRanges","buildDateRangeTable","preferences","container","table","tableBody","_buildHeaderRow","dateRange","_buildDateRangeRow","row","nightlyPricing","pricingPerDayOfWeek","weeklyPricing","monthlyPricing","showMinStayOnProperty","isRowEven","_isEven","available","rangeTitle","trim","strDateRangeL","strDateRangeU","pricingColumns","hasOwnProperty","dateRangeType","_formatPricing","weekly","sunPrice","monPrice","tuePrice","wedPrice","thuPrice","friPrice","satPrice","nightly","nightlyHTML","startingAtNightly","weeklyHTML","startingAtWeekly","monthly","monthlyHTML","startingAtMonthly","cell","minimumNightsStayWebBooking","minimumNightsStay","weekToWeekCheckinDay","price","newPrice","parseFloat","toFixed","currencySymbol","n","cleanPrice","decimalPrice","InstantQuote","getQuote","instantQuoteObj","_checkValidDates","StartDate","EndDate","hideLoading","setError","showDates","showButton","killAjax","adults","Adults","children","Children","checkAvailable","LiveNetID","removeClass","isAvailable","averageDailyRateBeforeSpecials","averageDailyRate","quantityDays","fees","taxTotal","rent","rentBeforeSpecials","total","deposit","hasSpecials","showPricing","OnlineBookings","showHeading","strError","removeError","strButtonType","submitForm","strFormType","showLoading","hideDates","hidePricing","changeDates","SearchResults","cacheObj","mapData","markerObjs","markersArr","isOpen","instance","setSearch","SearchObj","searchOrder","OrderBy","Sort","currentPage","searchRun","Beds","Bedrooms","sleeps","Guests","arrivaldate","ArrivalDate","departuredate","DepartureDate","comparesearch","CompareSearch","Style","categoryid","CategoryID","destinationID","DestinationID","communityid","CommunityID","admincustdataid","dynsiteid","DynsiteID","searchtype","SearchType","searchOrigin","SearchOrigin","advs","AdvancedSearch","pagedataid","pageSize","flexibleDates","searchAmenities","showOnlySpecials","flexibleDatesThreshold","getCalendarSuggestions","_searchProperties","properties","map","property","csxhr","searchedDate","searchEnd","_daysSearched","daysBack","daysForward","stopDate","consecutiveDays","floor","bedrooms","guests","maxProperties","finalProps","CompareProperties","CheckCompare","Search_xml","CompareCheckboxArr","setView","strView","getView","saveResultsData","resultsData","results","renderResultsbyView","addtPropAvailMsgLocation","errorMsg","propertiesDiv","propertiesStr","propData","SearchResultsTemplateGrid","SearchResultsTemplateList","latitude","longitude","currency","lat","lng","returnMessageText","weekToWeek","hasProperties","messageText","prevSuggestions","suggestion","fixedStartDate","fixedEndDate","startingDay","nextSuggestions","showMinNightsStayMessage","prepend","createMap","mapType","markers","mapOptions","zoom","center","maps","LatLng","styles","featureType","elementType","stylers","visibility","Map","infowindow","InfoWindow","scrollWheelZoom","L","deleteAllMapMarkers","tileLayer","attribution","addTo","createMapMarkers","setMap","removeLayer","bounds","LatLngBounds","marker","infoWindowHTML","SearchResultsTemplateMapInfoWindow","markerLatLng","Marker","title","event","addListener","setContent","fitBounds","featureGroup","bindPopup","getBounds","openMap","closeMap","startD","endD","scrollTo","renderAmenities","amenities","cb","list","item","count","checked","amenity","amenityID","label","outerHTML","getCheckedAmenityCount","_formatAvgNightlyRate","preference","displayPrice","averageNightlyRate","preSpecialPrice","averageNightlyRateBeforeSpecials","displayPriceUnit","weeklyPrice","weeklyPriceBeforeSpecials","discountPercentage","round","showTagClass","checkInDates","ret","showRatesOnResults","link","image550","showSleepsOnSearchResults","maxGuests","showBedsOnSearchResults","showBathsOnSearchResults","bathrooms","showPIDNumbers","showMinNightsOnSearchResults","minNightsReq","showPetsOnSearchResults","allowsPets","CalendarSuggestion","prepDataForStrip","normalizeDateTimeZone","actDate","checkIn","CheckInCustDataID","checkOut","CheckOutCustDataID","occupied","dateOBj","calData","CalendarSuggestions","propertyLink","searchForm","SC","StripCalendar","htmlCal","generateHtml","calendarHtml","StartingAtPrice","Heading","Location","Sleeps","Bathrooms","PID","MinimumNightsStay","AllowsPets","FlexDatesInlinePicker","flexibleDatesList","pricingDisplay","handleClick","sorted","sort","b","threshold","$container","daysHTML","formatPrice","$day","active","$topRow","$bottomRow","$priceRow","formatted","_parts","currencySymbolDecoded","startingRate","factory","define","amd","exports","require","jQuery","UTCDate","UTC","UTCToday","today","isUTCEquals","getUTCFullYear","getUTCMonth","getUTCDate","alias","method","deprecationMsg","deprecated","isValidDate","opts_from_el","el","prefix","re_lower","_","toLowerCase","inkey","out","RegExp","opts_from_locale","lang","dates","locale_opts","DateArray","extras","contains","l","new_array","clear","copy","Datepicker","_process_options","viewDate","o","defaultViewDate","focusDate","isInput","inputField","find","component","hasClass","isInline","picker","DPGlobal","template","_check_template","templates","leftArrow","rightArrow","_buildEvents","_attachEvents","appendTo","rtl","calendarWeeks","Number","_o","daysOfWeekDisabled","daysOfWeekHighlighted","datesDisabled","_allow_update","setViewMode","startView","fillDow","fillMonths","update","show","_resolveViewName","view","viewModes","viewMode","inArray","names","_resolveDaysOfWeek","daysOfWeek","tmp","match","jDom","opts","language","defaults","minViewMode","maxViewMode","max","min","multidate","multidateSeparator","weekStart","weekEnd","parseFormat","_local_to_utc","_zero_time","parseDate","assumeNearbyYear","plc","_plc","grep","word","_events","_secondaryEvents","_applyEvents","evs","ch","ev","_unapplyEvents","keyup","proxy","keyCode","keydown","paste","showOnFocus","click","blur","_focused_from","immediateUpdates","changeYear changeMonth","navArrowsClick","dayCellClick","resize","place","mousedown touchstart","hide","_detachEvents","_attachSecondaryEvents","_detachSecondaryEvents","_trigger","altdate","local_date","_utc_to_local","ix","formatDate","prop","enableOnReadonly","msMaxTouchPoints","disableTouchKeyboard","detach","forceParse","setValue","destroy","originalEvent","clipboardData","types","preventDefault","utc","local","_zero_utc_time","getDates","getUTCDates","selected_date","clearDates","setDates","setUTCDates","setUTCDate","getFormattedDate","getStartDate","setStartDate","updateNavArrows","getEndDate","setEndDate","setDaysOfWeekDisabled","setDaysOfWeekHighlighted","setDatesDisabled","calendarWidth","outerWidth","calendarHeight","visualPadding","windowWidth","scrollTop","appendOffset","offset","parentsZindex","parents","itemZIndex","zIndex","zIndexOffset","height","top_overflow","yorient","right","oldDates","fromArgs","dateWithinRange","updateViewDate","fill","showWeekDays","dowCnt","daysMin","focused","localDate","monthsShort","setRange","range","getClassNames","cls","todayHighlight","dateIsDisabled","getUTCDay","_fill_yearsView","selector","cssClass","factor","startYear","endYear","beforeFn","classes","tooltip","before","step","startVal","endVal","focusedVal","selected","currVal","noop","enabled","startMonth","endMonth","todaytxt","cleartxt","titleFormat","todayBtn","clearBtn","prevMonth","nextMonth","setUTCFullYear","weekDay","clsName","ws","th","yth","calWeek","content","isFunction","uniqueSort","unique","monthsTitle","months","eq","beforeShowMonth","that","moDate","beforeShowYear","beforeShowDecade","beforeShowCentury","prevIsDisabled","nextIsDisabled","toggleClass","stopPropagation","_setDate","setUTCMonth","$target","currentTarget","timestamp","dir","navStep","moveMonth","_toggle_multidate","toggleActive","which","moveDay","moveWeek","new_month","new_date","mag","moveYear","moveAvailableDate","weekOfDateIsDisabled","newViewDate","dateChanged","keyboardNavigation","ctrlKey","shiftKey","DateRangePicker","inputs","jquery","keepEmptyValues","datepickerPlugin","dateUpdated","pickers","updateDates","updateRanges","p","updating","dp","keep_empty_values","old","shift","internal_return","elopts","xopts","locopts","toArray","Error","en","daysShort","validParts","nonpunctuation","toValue","toDisplay","separators","assumeNearby","applyNearbyYear","match_part","part","fn_map","dateAliases","yesterday","tomorrow","filtered","parsed","setters_order","setters_map","yyyy","v","fparts","cnt","_date","s","D","M","MM","yy","mm","seps","headTemplate","contTemplate","footTemplate","noConflict","version","msg","warn","root","module","poll","delay","useDebounce","unload","isHidden","offsetParent","inView","box","getBoundingClientRect","bottom","r","debounceOrThrottle","render","offsetAll","offsetHorizontal","optionToInt","opt","fallback","offsetTop","offsetBottom","offsetLeft","offsetRight","addEventListener","attachEvent","src","elem","nodes","querySelectorAll","innerHeight","documentElement","clientHeight","innerWidth","clientWidth","setAttribute","getAttribute","backgroundImage","removeAttribute","removeEventListener","detachEvent","getDateDiff","d1","d2","currentDate","getDaysInEachMonth","datesArr","_month","_year","starDate","self","numberOfDays","startingMonth","stoppingMonth","displayDates","_dates","daysSuperShort","_daysInEachMonth","headingRow","weekdayRow","dateRow","monthIndex","weekday","calendarDay","current"],"mappings":"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","file":"scripts-1592591688326.js","sourcesContent":["\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (LIVEREZ, window, $, undefined) {\n var CALENDAR_DAY_TYPES = {\n Available: 0,\n Unavailable: 1,\n CheckIn: 2,\n CheckOut: 3,\n EarlyCheckIn: 4,\n LateCheckOut: 5,\n EarlyCheckInLateCheckOut: 6,\n SingleNightRental: 7,\n TurnOver: 8,\n TurnOverEarlyCheckIn: 9,\n TurnOverLateCheckOut: 10\n };\n\n var CalendarAvailability = function CalendarAvailability(dynsiteId, adminCustDataID, pageDataId) {\n this.dynsiteId = dynsiteId;\n this.adminCustDataId = adminCustDataID;\n this.pageDataId = pageDataId;\n this.unavailableTypes = [CALENDAR_DAY_TYPES.Unavailable, CALENDAR_DAY_TYPES.EarlyCheckIn, CALENDAR_DAY_TYPES.LateCheckOut, CALENDAR_DAY_TYPES.EarlyCheckInLateCheckOut, CALENDAR_DAY_TYPES.SingleNightRental, CALENDAR_DAY_TYPES.TurnOver, CALENDAR_DAY_TYPES.TurnOverEarlyCheckIn, CALENDAR_DAY_TYPES.TurnOverLateCheckOut];\n this.unavailableDateObjs = [];\n this.unavailableDateObjsMobile = [];\n this.queriedYears = [];\n };\n\n CalendarAvailability.prototype.getCalendarData = function (startDate, endDate, callback) {\n var _this = this;\n\n if (_this.xhr && _this.xhr.readystate != 4) {\n _this.xhr.abort();\n\n _this.xhr = null;\n }\n\n this.queriedYears.push(new Date(startDate).getFullYear());\n _this.xhr = $.ajax({\n type: 'get',\n url: LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=propertycalendardata',\n data: {\n AdminCustDataID: _this.adminCustDataId,\n DynSiteID: _this.dynsiteId,\n PageDataID: _this.pageDataId,\n ad: startDate,\n dd: endDate\n },\n dataType: 'json',\n success: function success(data) {\n try {\n // var offsetHours = ((+(new Date().getTimezoneOffset()) / 60 ) * - 1);\n var addHours = function addHours(d, h) {\n d.setTime(d.getTime() + h * 60 * 60 * 1000);\n return d;\n };\n\n data.forEach(function (dateObj) {\n var _type = +dateObj.calendarDayTypes;\n\n if (_this.unavailableTypes.indexOf(_type) > -1 || _type === CALENDAR_DAY_TYPES.CheckIn && +dateObj.earlyCheckIn === 1 || _type === CALENDAR_DAY_TYPES.CheckOut && +dateObj.lateCheckOut === 1) {\n // dont add early check in or late check out to disavled days if settings allow for turnovers on these\n if (_type === CALENDAR_DAY_TYPES.EarlyCheckIn && searchAllowForEarlyCheckIn === 1 || _type === CALENDAR_DAY_TYPES.LateCheckOut && searchAllowForLateCheckOut === 1) {\n return;\n } // var uDate = new Date(new Date(dateObj.startDate.split('T')[0].replace(/-/g, '\\/')).setHours(0,0,0,0));\n // var uDate = new Date(dateObj.startDate.split('T')[0].replace(/-/g, '\\/'));\n // var uDateMobile = new Date(dateObj.startDate.split('T')[0].replace(/-/g, '\\/'));\n // var uDateOffset = offsetHours;\n // // console.log('=============== ' + dateObj.startDateString + ' ================');\n // // console.log('uDate before', uDate);\n // // console.log('offset hours', offsetHours);\n // // console.log('uDateOffset hours', uDateOffset);\n // // console.log('isDST', isDST(uDate));\n // if(isDST(uDate)){\n // \tuDateOffset = uDateOffset + 1\n // }\n // // console.log('uDateOffset hours', uDateOffset);\n // uDate = addHours(uDate, uDateOffset);\n // // console.log('uDate after', uDate);\n // _this.unavailableDateObjs.push(uDate);\n // _this.unavailableDateObjsMobile.push(uDateMobile);\n // var formatted8601 = LIVEREZ.DynsiteFunctions.dateStringToISO8601(dateObj.startDateString);\n\n\n var formattedDateObj = LIVEREZ.DynsiteFunctions.dateStringToObject(dateObj.startDateString);\n\n if (dateFormatType === 1) {\n dateObj.startDateString = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(dateObj.startDateString, dateFormatType);\n }\n\n _this.unavailableDateObjs.push(dateObj.startDateString);\n\n _this.unavailableDateObjsMobile.push(formattedDateObj);\n }\n });\n _this.unavailableDateObjs = _this.unavailableDateObjs.filter(function (element, index, array) {\n return array.indexOf(element) >= index;\n });\n _this.unavailableDateObjsMobile = _this.unavailableDateObjsMobile.filter(function (element, index, array) {\n return array.indexOf(element) >= index;\n });\n callback();\n } catch (ex) {\n console.error(ex);\n callback();\n }\n },\n error: function error(data, status, _error) {\n $('.datepicker-overlay').remove();\n console.log(data);\n console.log(status);\n console.log(_error);\n }\n });\n }; // function isDST(t) { //t is the date object to check, returns true if daylight saving time is in effect.\n // \tvar jan = new Date(t.getFullYear(),0,1);\n // \tvar jul = new Date(t.getFullYear(),6,1);\n // \treturn Math.min(jan.getTimezoneOffset(),jul.getTimezoneOffset()) == t.getTimezoneOffset();\n // }\n\n\n CalendarAvailability.prototype.findDateConflicts = function (start, end) {\n var error = false;\n var start = new Date(LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(start, dateFormatType));\n var end = new Date(LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(end, dateFormatType));\n\n for (var i = 0; i < this.unavailableDateObjs.length; i++) {\n var tmpDate = this.unavailableDateObjs[i];\n\n if (tmpDate >= start && tmpDate <= end) {\n error = true;\n }\n }\n\n return error;\n };\n\n LIVEREZ.CalendarAvailability = CalendarAvailability;\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\n(function (LIVEREZ, window) {\n LIVEREZ.constants = {\n MAP_TYPE: {\n google: 1,\n leaflet: 2\n }\n };\n})(window.LIVEREZ = window.LIVEREZ || {}, void 0);\n/*\n * @author Joshua Hurst\n * @date 5/27/2014\n *\n * @description A set of functions to be used with LiveRez Dynsites\n */\n\n\n(function (LIVEREZ, window, $, undefined) {\n var DynsiteFunctions = {};\n\n DynsiteFunctions.PopUp = function (URL, Window, w, h, x, y) {\n var popupwin = window.open(URL, Window, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' + w + ',height=' + h + ',left=' + x + ',top=' + y);\n };\n\n DynsiteFunctions.socialSharePage = function (socialType, image, headline) {\n var url;\n var page = encodeURIComponent(window.location.href).toString();\n image = encodeURIComponent(image);\n headline = encodeURIComponent(headline);\n\n switch (socialType) {\n case 'facebook':\n url = 'https://www.facebook.com/sharer.php?u=' + page;\n break;\n\n case 'twitter':\n url = 'https://twitter.com/intent/tweet?source=tweetbutton&text=' + headline + '&url=' + page;\n break;\n\n case 'pinterest':\n url = 'https://www.pinterest.com/pin/create/button/?url=' + page + '&media=' + image + '&description=' + headline;\n break;\n\n case 'googlePlus':\n url = 'https://plus.google.com/share?url=' + page;\n break;\n }\n\n this.PopUp(url, window, 400, 350);\n };\n\n DynsiteFunctions.isEmailAddr = function (email) {\n var result = false;\n var theStr = new String(email);\n var index = theStr.indexOf('@');\n\n if (index > 0) {\n var pindex = theStr.indexOf('.', index);\n if (pindex > index + 1 && theStr.length > pindex + 1) result = true;\n }\n\n return result;\n };\n\n DynsiteFunctions.validRequired = function (formField, fieldLabel) {\n var result = true;\n\n if (formField.value == '') {\n alert('Please enter a value for the \"' + fieldLabel + '\" field.');\n formField.focus();\n result = false;\n }\n\n return result;\n };\n\n DynsiteFunctions.allDigits = function (str) {\n return this.inValidCharSet(str, '0123456789');\n };\n\n DynsiteFunctions.inValidCharSet = function (str, charset) {\n var result = true; // Doesn't use regular expressions to avoid early Mac browser bugs\n\n for (var i = 0; i < str.length; i++) {\n if (charset.indexOf(str.substr(i, 1)) < 0) {\n result = false;\n break;\n }\n }\n\n return result;\n };\n\n DynsiteFunctions.validEmail = function (formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n\n if (result && (formField.value.length < 3 || !this.isEmailAddr(formField.value))) {\n alert('Please enter a complete email address in the form: yourname@yourdomain.com');\n formField.focus();\n result = false;\n }\n\n return result;\n };\n\n DynsiteFunctions.validNum = function (formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n\n if (result) {\n if (!this.allDigits(formField.value)) {\n alert('Please enter a number for the \"' + fieldLabel + '\" field.');\n formField.focus();\n result = false;\n }\n }\n\n return result;\n };\n\n DynsiteFunctions.validInt = function (formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n\n if (result) {\n var num = parseInt(formField.value, 10);\n\n if (isNaN(num)) {\n alert('Please enter a number for the \"' + fieldLabel + '\" field.');\n formField.focus();\n result = false;\n }\n }\n\n return result;\n };\n\n DynsiteFunctions.validDate = function (formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n\n if (result) {\n var elems = formField.value.split('/');\n result = elems.length == 3; // should be three components\n\n if (result) {\n var month = parseInt(elems[0], 10);\n var day = parseInt(elems[1], 10);\n var year = parseInt(elems[2], 10);\n result = allDigits(elems[0]) && month > 0 && month < 13 && allDigits(elems[1]) && day > 0 && day < 32 && allDigits(elems[2]) && (elems[2].length == 2 || elems[2].length == 4);\n }\n\n if (!result) {\n alert('Please enter a date in the format MM/DD/YYYY for the \"' + fieldLabel + '\" field.');\n formField.focus();\n }\n }\n\n return result;\n };\n\n DynsiteFunctions.getServerName = function () {\n if (!window.location.origin) {\n return window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n } else {\n return window.location.origin;\n }\n };\n\n DynsiteFunctions.goPropertyByElem = function (selectObj) {\n var val = selectObj.options[selectObj.selectedIndex].value;\n\n if (val != '') {\n window.parent.location.href = val;\n }\n };\n\n DynsiteFunctions.goPropertyByID = function (PageDataID) {\n if (PageDataID) {\n window.parent.location.href = '/vacation-rental-home.asp?PageDataID=' + PageDataID;\n }\n };\n\n DynsiteFunctions.sendtofriend = function (PageDataID) {\n window.parent.location.href = '/vacation-rental-home-stf.asp?PageDataID=' + PageDataID;\n };\n\n DynsiteFunctions.propertycontact = function (PageDataID, AD, DD) {\n window.parent.location.href = '/vacation-rental-home-contact.asp?PageDataID=' + PageDataID + '&ad=' + AD + '&dd=' + DD;\n };\n\n DynsiteFunctions.viewproperty = function (strPageDataID, strUnitID) {\n var formObj = document.viewproperty;\n formObj.action = '/vacation-rental-home.asp?PageDataID=' + strPageDataID;\n formObj.PageDataID.value = strPageDataID;\n formObj.WebReferencePageDataID.value = strPageDataID;\n formObj.InventoryUnitDataID.value = strUnitID;\n formObj.submit();\n };\n\n DynsiteFunctions.debounce = function (func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n };\n\n DynsiteFunctions.DateShort = function (DateStr, delimeter) {\n var tmpDate = new Date(DateStr);\n delimeter = delimeter || '/', tmpDate = tmpDate.getMonth() + 1 + delimeter + tmpDate.getDate() + delimeter + tmpDate.getFullYear();\n return tmpDate;\n };\n\n DynsiteFunctions.DateNatural = function (d) {\n var includeYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (typeof d === 'string') {\n if (d.indexOf('-') > 0) {\n d = new Date(d);\n d.setHours(d.getHours() + new Date().getTimezoneOffset() / 60);\n } else {\n d = new Date(d);\n }\n }\n\n var MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n function nth(d) {\n if (d > 3 && d < 21) return 'th'; // thanks kennebec\n\n switch (d % 10) {\n case 1:\n return 'st';\n\n case 2:\n return 'nd';\n\n case 3:\n return 'rd';\n\n default:\n return 'th';\n }\n }\n\n var _final = DAY_NAMES[d.getDay()] + ' ' + MONTH_NAMES[d.getMonth()] + ' ' + d.getDate() + nth(d.getDate());\n\n if (includeYear) {\n _final += ', ' + d.getFullYear();\n }\n\n return _final;\n };\n /***** NAVIS 800 Number and Keyword Tracking *****/\n\n\n DynsiteFunctions.handleNavisCookies = function (NavisKeyword, NavisPhone) {\n if (NavisKeyword !== '' && NavisPhone !== '') {\n LIVEREZ.Storage.set(DYN_SITE_ID + 'navis800Num', NavisPhone);\n LIVEREZ.Storage.set(DYN_SITE_ID + 'NavisHiddenKeywordVal', NavisKeyword);\n this.fix800NumberForNavis();\n }\n\n if (LIVEREZ.Storage.get(DYN_SITE_ID + 'navis800Num')) {\n this.fix800NumberForNavis();\n }\n };\n\n DynsiteFunctions.fix800NumberForNavis = function () {\n // get the cookies\n var NavisHiddenPhoneVal = LIVEREZ.Storage.get(DYN_SITE_ID + 'navis800Num');\n var NavisHiddenKeywordVal = LIVEREZ.Storage.get(DYN_SITE_ID + 'NavisHiddenKeywordVal'); // insert phone number into holder span\n\n $('.phone-link').attr('href', 'tel: ' + NavisHiddenPhoneVal);\n $('.800PhoneHolder').text(NavisHiddenPhoneVal);\n var NavisHiddenKeyword = $('#NavisHiddenKeyword');\n\n if (NavisHiddenKeywordVal && NavisHiddenKeyword) {\n NavisHiddenKeyword.val(NavisHiddenKeywordVal);\n }\n\n var NavisHiddenPhone = $('#NavisCode');\n\n if (NavisHiddenPhone && NavisHiddenPhoneVal) {\n NavisHiddenPhone.val(NavisHiddenPhoneVal);\n }\n };\n /***** END NAVIS 800 Number and Keyword Tracking *****/\n\n /***** CRM PLUS LEAD Tracking ************************/\n\n\n DynsiteFunctions.handleCRMPlusCookies = function (LeadID) {\n if (LIVEREZ.Storage.get(DYN_SITE_ID + 'LeadID')) {\n this.insertLeadCookie();\n } else {\n if (LeadID !== '') {\n LIVEREZ.Storage.set(DYN_SITE_ID + 'LeadID', LeadID);\n this.insertLeadCookie();\n }\n }\n };\n\n DynsiteFunctions.insertLeadCookie = function () {\n var leadCookie = LIVEREZ.Storage.get(DYN_SITE_ID + 'LeadID');\n var leadIDInput = $('.hiddenLeadID');\n\n if (leadCookie && leadIDInput) {\n leadIDInput.val(leadCookie);\n }\n };\n /***** END CRM PLUS LEAD Tracking *******************/\n\n\n DynsiteFunctions.trimDate = function (strDate) {\n if (strDate && typeof strDate === 'string') {\n strDate = strDate.replace(/^0+/, '');\n strDate = strDate.replace(/\\/0/, '/');\n }\n\n return strDate;\n };\n\n DynsiteFunctions.fixEuroDatesForAPI = function (strDate, dateFormat) {\n if (dateFormat === 1) {\n var parts = strDate.split('/');\n return parts[1] + '/' + parts[0] + '/' + parts[2];\n } else {\n return strDate;\n }\n };\n\n DynsiteFunctions.dateStringToISO8601 = function (dateString) {\n var myDate = dateString.split('/');\n var returnDate = [myDate[2], myDate[0], myDate[1]].join('-');\n return returnDate;\n };\n\n DynsiteFunctions.dateObjectToString = function (dateObj) {\n return dateObj.getMonth() + 1 + '/' + dateObj.getDate() + '/' + dateObj.getFullYear();\n };\n\n DynsiteFunctions.dateStringToObject = function (dateStr) {\n var year, month, day;\n\n if (dateStr.indexOf('-') > -1) {\n var parts = dateStr.split('-');\n\n if (parts[0].length === 4) {\n year = parts[0];\n month = parts[1];\n day = parts[2];\n } else {\n year = parts[2];\n month = parts[0];\n day = parts[1];\n }\n } else {\n var parts = dateStr.split('/');\n year = parts[2];\n month = parts[0];\n day = parts[1];\n }\n\n return new Date(year, month - 1, day);\n };\n\n DynsiteFunctions.truncate = function (string, length, elipsisBool) {\n var _str = string.substring(0, length);\n\n if (string.length > length && elipsisBool) {\n _str += '...';\n }\n\n return _str;\n };\n\n DynsiteFunctions.daydiff = function (first, second) {\n return (second - first) / (1000 * 60 * 60 * 24);\n };\n\n DynsiteFunctions.checkValidStartEndDates = function (date1, date2) {\n var now = new Date().setHours(0, 0, 0, 0);\n date1 = new Date(date1).setHours(0, 0, 0, 0);\n date2 = new Date(date2).setHours(0, 0, 0, 0);\n var numSearchedDay = this.daydiff(date1, date2);\n var maxDays = maxWebRentalDays || 365;\n\n if (date1 === date2) {\n return 'Arrival and Departure dates cannot be the same.';\n }\n\n if (now > date1) {\n return 'Arrival date must be in the future.';\n }\n\n if (now > date2) {\n return 'Departure date must be in the future.';\n }\n\n if (date2 <= date1) {\n return 'Departure date must come after arrival date.';\n }\n\n if (numSearchedDay > maxDays) {\n return 'Travel Dates cannot span more than ' + maxDays + ' days. Please contact us for additional booking options.';\n }\n };\n\n DynsiteFunctions.isMobileDevice = function () {\n var check = false;\n\n (function (a) {\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n\n return check;\n };\n\n DynsiteFunctions.checkForEmailElementToHide = function () {\n var div = document.getElementById('email-div');\n\n if (div) {\n div.style.display = 'none';\n }\n };\n\n DynsiteFunctions.fixTextForDisplay = function (strText) {\n if (strText) {\n strText = strText.replace(/`/g, \"'\");\n }\n\n return strText;\n };\n\n LIVEREZ.DynsiteFunctions = DynsiteFunctions;\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\n$(window).on('load', function () {\n // check for inputs to hide on load\n LIVEREZ.DynsiteFunctions.checkForEmailElementToHide();\n});\n\n(function (LIVEREZ, window, $) {\n LIVEREZ.events = {\n searchCreateMapImage: 'search-map-image',\n searchMapOpen: 'search-map-open',\n searchMapClose: 'search-map-close',\n searchStart: 'search-start',\n searchComplete: 'search-complete',\n resultsRenderComplete: 'results-render-complete',\n instantQuoteFinished: 'instant-quote-finished',\n calDataFinished: 'cal-data-finished',\n searchSuggestionsStart: 'search-suggesttions-start',\n searchSuggestionsComplete: 'search-suggesttions-complete',\n calendarSearchStart: 'calendar-search-start',\n calendarSearchComplete: 'calendar-search-complete',\n calendarSearchRenderComplete: 'calendar-search-render-complete',\n propertyDateRangeStart: 'property-date-range-start',\n propertyDateRangeComplete: 'property-date-range-complete',\n propertyDateRangeError: 'property-date-range-error',\n propertyDateRangeSuccess: 'property-date-range-success'\n };\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\n(function (NAMESPACE, window, $) {\n try {\n $(window.document).ready(function () {\n if (LR_ENV === 'PROD' && window.ga && window.ga.loaded) {\n var page = window.location.pathname;\n var $propertyBookItNowButton = $('div.property-instant-quote-action > a.property-instant-quote-button-book');\n var $propertySidebarContactManagerButton = $('#content2Left > div.row.property-side-contact-manager > div > a');\n var $propertySendToFriendLink = $('a.property-send-to-friend-link');\n var $propertyCommunityLearnMoreLink = $('a.property-community-learn-more-link');\n var $propertyChangeDatesLink = $('#propertyInstantQuote > div.panel-footer > a.property-instant-quote-change-dates');\n var $propertyReviewWidgetReviewsAnchor = $('#property-rating-panel > div > div.lr-info-block-property-rating-property-panel > div.lr-info-block-property-rating-show-reviews > a');\n var $propertyAllPhotosButton = $('#Photos > div.row > div > ul > li > a[data-target=\"#propGalleryModal\"]');\n var $propertyFullScreen = $('#photo-gallery > div.rsOverflow > div.rsFullscreenBtn > div');\n var $propertyShowAllAmenitiesExpand = $('.standard-amenities-section--show-more > a');\n var $searchComparePropertiesButton = $('.search-compare-button');\n var $searchViewMoreCalendars = $('.search-results-calendar-suggestions--view-more');\n var $searchChangeDatesButton = $('.search-update-dates');\n\n if ($propertyBookItNowButton.length) {\n $propertyBookItNowButton.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Book It Now Button');\n });\n }\n\n if ($propertySidebarContactManagerButton.length) {\n $propertySidebarContactManagerButton.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Sidebar Contact Manager Button');\n });\n }\n\n if ($propertySendToFriendLink.length) {\n $propertySendToFriendLink.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Send to Friend Link');\n });\n }\n\n if ($propertyCommunityLearnMoreLink.length) {\n $propertyCommunityLearnMoreLink.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Community Learn More Link');\n });\n }\n\n if ($propertyChangeDatesLink.length) {\n $propertyChangeDatesLink.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Change Dates Link');\n });\n }\n\n if ($propertyReviewWidgetReviewsAnchor.length) {\n $propertyReviewWidgetReviewsAnchor.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Reviews Widget Review Anchor');\n });\n }\n\n if ($propertyAllPhotosButton.length) {\n $propertyAllPhotosButton.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'All Photos Button');\n });\n }\n\n if ($propertyFullScreen.length) {\n $propertyFullScreen.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Slideshow Fullscreen Button');\n });\n }\n\n if ($searchComparePropertiesButton.length) {\n $searchComparePropertiesButton.on('click', function () {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Compare Properties Button');\n });\n }\n\n if ($searchViewMoreCalendars.length) {\n $searchViewMoreCalendars.on('click', function () {\n ga('lrTracker.send', 'event', 'Search', 'click', 'View More Property Calendars button');\n });\n }\n\n if ($propertyShowAllAmenitiesExpand.length) {\n $propertyShowAllAmenitiesExpand.on('click', function () {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Show All Amenities Expand Link');\n });\n } // search page\n\n\n if (page === 'vacation-rentals-homes-search.asp') {\n $searchComparePropertiesButton.on('click', function () {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Compare Properties Button');\n });\n $searchViewMoreCalendars.on('click', function () {\n ga('lrTracker.send', 'event', 'Search', 'click', 'View More Property Calendars button');\n });\n $searchChangeDatesButton.on('click', function () {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Change Dates button');\n });\n $(document).on('click', '.search-pagination a', function (e) {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Paging Anchor', $(this).data('page'));\n });\n }\n }\n });\n } catch (error) {\n console.error(error);\n }\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\nif (!Array.prototype.filter) {\n Array.prototype.filter = function (fun\n /*, thisArg*/\n ) {\n 'use strict';\n\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n}\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T, k;\n\n if (this == null) {\n throw new TypeError(' this is null or not defined');\n } // 1. Let O be the result of calling ToObject passing the |this| value as the argument.\n\n\n var O = Object(this); // 2. Let lenValue be the result of calling the Get internal method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n\n var len = O.length >>> 0; // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n } // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n if (arguments.length > 1) {\n T = thisArg;\n } // 6. Let k be 0\n\n\n k = 0; // 7. Repeat, while k < len\n\n while (k < len) {\n var kValue; // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with argument Pk.\n kValue = O[k]; // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n\n callback.call(T, kValue, k, O);\n } // d. Increase k by 1.\n\n\n k++;\n } // 8. return undefined\n\n };\n}\n\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement, fromIndex) {\n if (this === undefined || this === null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var length = this.length >>> 0; // Hack to convert object.length to a UInt32\n\n fromIndex = +fromIndex || 0;\n\n if (Math.abs(fromIndex) === Infinity) {\n fromIndex = 0;\n }\n\n if (fromIndex < 0) {\n fromIndex += length;\n\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n }\n\n for (; fromIndex < length; fromIndex++) {\n if (this[fromIndex] === searchElement) {\n return fromIndex;\n }\n }\n\n return -1;\n };\n}\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5 internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function fNOP() {},\n fBound = function fBound() {\n return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n return fBound;\n };\n}\n/*\n * @author Joshua Hurst\n * @date 6/19/2015\n *\n * @description A Vanilla JS Wrapper for Local Storage\n */\n\n\n(function (LIVEREZ, window, $, undefined) {\n 'use strict';\n\n var LocalStorage = {}; // test if local storage is supported\n\n LocalStorage.localStoreSupport = function () {\n try {\n localStorage.setItem('localstoragesupporttest', 1);\n localStorage.removeItem('localstoragesupporttest');\n return 'localStorage' in window && window['localStorage'];\n } catch (e) {\n return false;\n }\n }; // save the data\n\n\n LocalStorage.set = function (key, value, days) {\n value = JSON.stringify(value);\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n var expires = '; expires=' + date.toGMTString();\n } else {\n var expires = '';\n }\n\n if (this.localStoreSupport()) {\n localStorage.setItem(key, value);\n } else {\n document.cookie = key + '=' + value + expires + '; path=/';\n }\n }; // retrieve the stored data by key if it exists\n\n\n LocalStorage.get = function (key) {\n if (this.localStoreSupport()) {\n if (this.exists(key)) {\n return JSON.parse(localStorage.getItem(key));\n }\n } else {\n var nameEQ = key + '=';\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) == 0) return JSON.parse(c.substring(nameEQ.length, c.length));\n }\n\n return null;\n }\n }; // remove stored data by key if it exists\n\n\n LocalStorage.remove = function (key) {\n if (this.localStoreSupport()) {\n if (this.exists(key)) {\n localStorage.removeItem(key);\n }\n } else {\n this.set(key, '', -1);\n }\n };\n\n LocalStorage.exists = function (key) {\n return localStorage.getItem(key) !== null;\n };\n\n LIVEREZ.Storage = LocalStorage;\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n/*\n * @author Joshua Hurst & Frank Linehan\n * @date 6/16/2015\n *\n * @description A Pub/Sub Pattern Module for Handling JS Events\n */\n\n\n(function (LIVEREZ, window, $, undefined) {\n var pubsub = {};\n var topics = {}; // An topic identifier\n\n var subUid = -1;\n\n pubsub.publish = function (topic, args) {\n if (!topics[topic]) {\n return false;\n }\n\n var subscribers = topics[topic],\n len = subscribers ? subscribers.length : 0;\n\n while (len--) {\n subscribers[len].func(topic, args);\n }\n\n return this;\n };\n\n pubsub.subscribe = function (topic, func) {\n if (!topics[topic]) {\n topics[topic] = [];\n }\n\n var token = (++subUid).toString();\n topics[topic].push({\n token: token,\n func: func\n });\n return token;\n };\n\n pubsub.unsubscribe = function (token) {\n for (var m in topics) {\n if (topics[m]) {\n for (var i = 0, j = topics[m].length; i < j; i++) {\n if (topics[m][i].token === token) {\n topics[m].splice(i, 1);\n return token;\n }\n }\n }\n }\n\n return this;\n };\n\n LIVEREZ.Publisher = pubsub;\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n/* =========================================================\n * lr.typeahead.js\n * Repo: http://stash.liverez.com:7990/scm/bow/lr.typeahead.git\n * =========================================================\n * Authored by LIVEREZ.COM\n * Contributors: Joshua Hurst, Frank Linehan, Jeremy Lotz\n * ========================================================= */\n\n\n(function ($, undefined) {\n 'use strict';\n\n var _timeout;\n\n var DEFAULTS = {\n timeoutLength: 500,\n dataSource: function dataSource(callback, query) {\n var _sendData = {\n q: encodeURIComponent(query)\n };\n $.ajax({\n type: 'GET',\n url: 'data/properties.json',\n data: _sendData,\n dataType: 'json',\n success: function success(data) {\n callback(null, data);\n },\n error: function error(data, status, _error2) {\n callback({\n data: data,\n status: status,\n error: _error2\n });\n }\n });\n },\n onNewData: function onNewData(data) {\n console.log(data);\n }\n }; // the actual plugin\n\n var Plugin = function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var options = _typeof(option) == 'object' && option;\n options = $.extend(DEFAULTS, options);\n new Typeahead($this, options);\n });\n }; // the constructor\n\n\n var Typeahead = function Typeahead(element, options) {\n var _this = this;\n\n this.element = element;\n this.options = options;\n this.init(this.element, this.options);\n };\n\n Typeahead.prototype.init = function (element, options) {\n var _this = this;\n\n var wrapperDiv = $('
').css({\n position: 'relative',\n width: this.element.width() + 2\n }).addClass('lr-typeahead-wrapper');\n var typeaheadDiv = $('
');\n typeaheadDiv.css({\n position: 'absolute',\n top: this.element.outerHeight(),\n left: '0',\n width: '100%',\n display: 'none',\n border: '1px solid #ccc',\n 'border-top': 'none',\n background: 'white',\n color: '#444',\n 'max-height': '50vh',\n 'overflow-y': 'scroll'\n }).html('Loading Data...').addClass('lr-typeahead');\n this.element.wrap(wrapperDiv);\n this.element.after(typeaheadDiv);\n element.on('keydown', function () {\n _this.open('keydown', typeaheadDiv, _this.element);\n });\n element.on('keyup', function () {\n if (_this.element.val()) {\n if (_timeout) {\n clearTimeout(_timeout);\n }\n\n _timeout = setTimeout(function () {\n _this.getData('keyup', function (error, data) {\n if (error) {\n typeaheadDiv.html('No Results');\n } else {\n _this.insertTypeAheadData(typeaheadDiv, data);\n }\n });\n }, _this.options.timeoutLength);\n } else {\n _this.close('keyup', typeaheadDiv);\n }\n });\n };\n\n Typeahead.prototype.open = function (type, typeaheadelem, element) {\n var domTypeAheadElem = typeaheadelem.get(0);\n typeaheadelem.html('Loading Data...');\n\n if (domTypeAheadElem.style.display === 'none') {\n $('body').on('click', function (e) {\n if (!typeaheadelem.is(e.target) && typeaheadelem.has(e.target).length === 0) {\n domTypeAheadElem.style.display = 'none';\n element.val('');\n }\n\n $('body').off('click');\n });\n domTypeAheadElem.style.display = 'block';\n }\n };\n\n Typeahead.prototype.close = function (type, typeaheadelem) {\n var _this = this;\n\n var domTypeAheadElem = typeaheadelem.get(0);\n\n if (domTypeAheadElem.style.display === 'block') {\n domTypeAheadElem.style.display = 'none';\n }\n\n return this;\n };\n\n Typeahead.prototype.insertTypeAheadData = function (typeaheadelem, data) {\n var _this = this;\n\n typeaheadelem.empty();\n typeaheadelem.append(_this.options.onNewData(data));\n return this;\n };\n\n Typeahead.prototype.getData = function (type, callback) {\n var _this = this;\n\n _this.options.dataSource(callback, _this.element.val());\n\n return this;\n };\n\n var old = $.fn.lrtypeahead;\n $.fn.lrtypeahead = Plugin;\n $.fn.lrtypeahead.Constructor = Typeahead;\n})(lrjQ);\n\n(function (LIVEREZ, window, $) {\n $(document).ready(function () {\n /****************** secondary search box desktop date pickers ******************/\n var nowTemp = new Date();\n var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);\n $('.datepicker-range').datepicker({\n beforeShowDay: function beforeShowDay(date) {\n return date.valueOf() < now.valueOf() ? 'disabled' : '';\n },\n format: dateFormat,\n autoclose: true,\n orientation: 'auto'\n }).on('changeDate', function (e) {\n if (e.target.id == 'txtStartDate') {\n var startDate = new Date(e.date);\n var newDate = new Date(e.date);\n newDate.setDate(newDate.getDate() + defaultSearchDepartureDays);\n $('#txtEndDate').datepicker('setDate', newDate);\n $('#txtEndDate').focus();\n $('#compareStartDate').val(startDate.getMonth() + 1 + '/' + startDate.getDate() + '/' + startDate.getFullYear());\n }\n\n if (e.target.id == 'txtEndDate') {\n var newEndDate = new Date(e.date);\n $('#compareEndDate').val(newEndDate.getMonth() + 1 + '/' + newEndDate.getDate() + '/' + newEndDate.getFullYear());\n }\n }).data('datepicker');\n /****************** end desktop date pickers ******************/\n\n /****************** calendar page date picker ******************/\n\n $('.lr-calendar-search-desktop-datepicker').datepicker({\n beforeShowDay: function beforeShowDay(date) {\n return date.valueOf() < now.valueOf() ? 'disabled' : '';\n },\n format: dateFormat,\n autoclose: true,\n orientation: 'auto'\n });\n LIVEREZ.Publisher.subscribe('mobiscroll-loaded', function (message) {\n $('.lr-calendar-search-mobile-datepicker').mobiscroll().calendar({\n theme: 'bootstrap',\n display: 'modal',\n controls: ['calendar'],\n minDate: now,\n dateFormat: dateFormat\n });\n $('.lr-calendar-search-mobile-datepicker').change(function () {\n $('.lr-calendar-search-desktop-datepicker').val(this.value);\n });\n });\n /****************** end calendar page date picker ******************/\n\n LIVEREZ.Publisher.subscribe('mobiscroll-loaded', function (message) {\n /****************** secondary search box mobile date pickers ******************/\n var mobileStartInst = $('#txtStartDate-mobile').mobiscroll().calendar({\n theme: 'bootstrap',\n display: 'modal',\n controls: ['calendar'],\n minDate: now,\n closeOnSelect: true,\n dateFormat: dateFormat\n }).mobiscroll('getInst');\n var mobileEndInst = $('#txtEndDate-mobile').mobiscroll().calendar({\n theme: 'bootstrap',\n display: 'modal',\n controls: ['calendar'],\n minDate: now,\n closeOnSelect: true,\n dateFormat: dateFormat\n }).mobiscroll('getInst');\n $('#txtStartDate-mobile').change(function () {\n $('#txtStartDate').val(this.value);\n $('#compareStartDate').val(this.value);\n var startDateStr = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI($('#txtStartDate-mobile').val(), dateFormatType);\n var startDate = new Date(startDateStr);\n var endDateStr = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI($('#txtEndDate-mobile').val(), dateFormatType);\n var endDate = new Date(endDateStr); //console.log('startDateStr', startDateStr);\n //console.log('endDateStr', endDateStr);\n //console.log('startDate', startDate);\n //console.log('endDate', endDate);\n\n var diff = startDate - endDate;\n var days = diff / 1000 / 60 / 60 / 24; //console.log('diff', diff);\n //console.log('days', days);\n\n var newEnd = new Date(startDate);\n newEnd.setDate(startDate.getDate() + defaultSearchDepartureDays); //console.log('newEnd', newEnd);\n\n var newEndStr = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(LIVEREZ.DynsiteFunctions.DateShort(newEnd), dateFormatType); //console.log('newEndStr', newEndStr);\n\n if (startDate > endDate) {\n mobileEndInst.setDate(newEnd);\n $('#txtEndDate-mobile').val(newEndStr);\n $('#txtEndDate').val(newEndStr);\n $('#compareEndDate').val(newEndStr);\n }\n });\n $('#txtEndDate-mobile').change(function () {\n $('#txtEndDate').val(this.value);\n $('#compareEndDate').val(this.value);\n });\n }); // lazy load echo images\n\n echo.init({\n throttle: 50,\n offsetVertical: 750\n });\n\n if ($('.index-features-carousel').length) {\n $('.index-features-carousel').on('slid.bs.carousel', function (e) {\n echo.init();\n });\n }\n\n if ($('.alternative-properties-carousel').length) {\n $('.alternative-properties-carousel').on('slid.bs.carousel', function (e) {\n echo.init();\n });\n } // only load mobiscroll if mobile to because its not neccesary on desktop\n\n\n if (LIVEREZ.DynsiteFunctions.isMobileDevice()) {\n $.getScript(CDN_BASE_URL + '/3/common/js/mobiscroll.custom-2.10.1.min.js', function () {\n $('head').append($('').attr('href', CDN_BASE_URL + '/3/common/css/mobiscroll.custom-2.10.1.min.css'));\n LIVEREZ.Publisher.publish('mobiscroll-loaded', 'ready');\n });\n }\n\n $('.popover-icon').popover({\n placement: 'top',\n trigger: 'hover'\n });\n\n if ($('.lr-typeahead').length) {\n var myOptions = {\n timeoutLength: 600,\n dataSource: function dataSource(callback, query) {\n $.ajax({\n type: 'GET',\n url: '/inc/api/webservices.aspx?method=propertysearch',\n data: {\n AdminCustDataID: ADMIN_CUST_DATA_ID,\n DynSiteID: DYN_SITE_ID,\n q: encodeURIComponent(query)\n },\n dataType: 'json',\n success: function success(data) {\n callback(null, data);\n },\n error: function error(data, status, _error3) {\n console({\n data: data,\n status: status,\n error: _error3\n });\n callback(null, []);\n }\n });\n },\n onNewData: function onNewData(data, element) {\n if (data.length) {\n var retHtml = '';\n\n for (var i = 0; i < data.length; i++) {\n retHtml += '
' + data[i].pid + '
';\n }\n\n return retHtml;\n } else {\n return '
No Results
';\n }\n }\n };\n $('.lr-typeahead').lrtypeahead(myOptions);\n }\n });\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\n(function (LIVEREZ, window, $, undefined) {\n 'use strict';\n\n var DAYS_OF_WEEK = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n var PropertyDateRanges = {};\n\n PropertyDateRanges.getByPageDataID = function (pageDataId, callback) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeStart);\n $.ajax({\n type: 'get',\n url: LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=dateranges',\n data: {\n AdminCustDataID: ADMIN_CUST_DATA_ID,\n DynSiteID: DYN_SITE_ID,\n PageDataID: pageDataId\n },\n dataType: 'json',\n success: function success(data) {\n // publish the data to all subscribers\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeComplete);\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeSuccess, data);\n callback(null, data);\n },\n error: function error(data, status, _error4) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeComplete);\n\n if (_error4 !== 'abort') {\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeError, _error4);\n callback(_error4);\n } else {\n var fakeData = {\n dateRanges: []\n };\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeSuccess, fakeData);\n callback(null, fakeData);\n }\n }\n });\n };\n\n PropertyDateRanges.buildDateRangeTable = function (preferences, dateRanges) {\n var container = $('
').addClass('table-responsive');\n var table = $(' ').addClass('table table-striped responsive-rate-table');\n var tableBody = $('\t');\n table.append(tableBody);\n tableBody.append(_buildHeaderRow(preferences));\n dateRanges.forEach(function (dateRange, i) {\n table.append(_buildDateRangeRow(preferences, dateRange, i));\n });\n container.append(table);\n return container;\n };\n\n var _buildHeaderRow = function _buildHeaderRow(preferences) {\n var row = $('');\n row.append($('').addClass('property-date-range-row');\n\n var isRowEven = _isEven(index);\n\n row.addClass(isRowEven ? 'property-rate-tr-wt' : 'property-rate-tr-gr');\n row.addClass(dateRange.available ? 'available' : 'unavailable');\n row.append($('';\n\n if (this.o.calendarWeeks) {\n html += '';\n }\n\n while (dowCnt < this.o.weekStart + 7) {\n html += '';\n this.picker.find('.datepicker-days thead').append(html);\n }\n },\n fillMonths: function fillMonths() {\n var localDate = this._utc_to_local(this.viewDate);\n\n var html = '';\n var focused;\n\n for (var i = 0; i < 12; i++) {\n focused = localDate && localDate.getMonth() === i ? ' focused' : '';\n html += '' + dates[this.o.language].monthsShort[i] + '';\n }\n\n this.picker.find('.datepicker-months td').html(html);\n },\n setRange: function setRange(range) {\n if (!range || !range.length) delete this.range;else this.range = $.map(range, function (d) {\n return d.valueOf();\n });\n this.fill();\n },\n getClassNames: function getClassNames(date) {\n var cls = [],\n year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n today = UTCToday();\n\n if (date.getUTCFullYear() < year || date.getUTCFullYear() === year && date.getUTCMonth() < month) {\n cls.push('old');\n } else if (date.getUTCFullYear() > year || date.getUTCFullYear() === year && date.getUTCMonth() > month) {\n cls.push('new');\n }\n\n if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) cls.push('focused'); // Compare internal UTC date with UTC today, not local today\n\n if (this.o.todayHighlight && isUTCEquals(date, today)) {\n cls.push('today');\n }\n\n if (this.dates.contains(date) !== -1) cls.push('active');\n\n if (!this.dateWithinRange(date)) {\n cls.push('disabled');\n }\n\n if (this.dateIsDisabled(date)) {\n cls.push('disabled', 'disabled-date');\n }\n\n if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1) {\n cls.push('highlighted');\n }\n\n if (this.range) {\n if (date > this.range[0] && date < this.range[this.range.length - 1]) {\n cls.push('range');\n }\n\n if ($.inArray(date.valueOf(), this.range) !== -1) {\n cls.push('selected');\n }\n\n if (date.valueOf() === this.range[0]) {\n cls.push('range-start');\n }\n\n if (date.valueOf() === this.range[this.range.length - 1]) {\n cls.push('range-end');\n }\n }\n\n return cls;\n },\n _fill_yearsView: function _fill_yearsView(selector, cssClass, factor, year, startYear, endYear, beforeFn) {\n var html = '';\n var step = factor / 10;\n var view = this.picker.find(selector);\n var startVal = Math.floor(year / factor) * factor;\n var endVal = startVal + step * 9;\n var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n var selected = $.map(this.dates, function (d) {\n return Math.floor(d.getUTCFullYear() / step) * step;\n });\n var classes, tooltip, before;\n\n for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n classes = [cssClass];\n tooltip = null;\n\n if (currVal === startVal - step) {\n classes.push('old');\n } else if (currVal === endVal + step) {\n classes.push('new');\n }\n\n if ($.inArray(currVal, selected) !== -1) {\n classes.push('active');\n }\n\n if (currVal < startYear || currVal > endYear) {\n classes.push('disabled');\n }\n\n if (currVal === focusedVal) {\n classes.push('focused');\n }\n\n if (beforeFn !== $.noop) {\n before = beforeFn(new Date(currVal, 0, 1));\n\n if (before === undefined) {\n before = {};\n } else if (typeof before === 'boolean') {\n before = {\n enabled: before\n };\n } else if (typeof before === 'string') {\n before = {\n classes: before\n };\n }\n\n if (before.enabled === false) {\n classes.push('disabled');\n }\n\n if (before.classes) {\n classes = classes.concat(before.classes.split(/\\s+/));\n }\n\n if (before.tooltip) {\n tooltip = before.tooltip;\n }\n }\n\n html += '' + currVal + '';\n }\n\n view.find('.datepicker-switch').text(startVal + '-' + endVal);\n view.find('td').html(html);\n },\n fill: function fill() {\n var d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n todaytxt = dates[this.o.language].today || dates['en'].today || '',\n cleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n tooltip,\n before;\n if (isNaN(year) || isNaN(month)) return;\n this.picker.find('.datepicker-days .datepicker-switch').text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n this.picker.find('tfoot .today').text(todaytxt).css('display', this.o.todayBtn === true || this.o.todayBtn === 'linked' ? 'table-cell' : 'none');\n this.picker.find('tfoot .clear').text(cleartxt).css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n this.picker.find('thead .datepicker-title').text(this.o.title).css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n this.updateNavArrows();\n this.fillMonths();\n var prevMonth = UTCDate(year, month, 0),\n day = prevMonth.getUTCDate();\n prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7) % 7);\n var nextMonth = new Date(prevMonth);\n\n if (prevMonth.getUTCFullYear() < 100) {\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n nextMonth = nextMonth.valueOf();\n var html = [];\n var weekDay, clsName;\n\n while (prevMonth.valueOf() < nextMonth) {\n weekDay = prevMonth.getUTCDay();\n\n if (weekDay === this.o.weekStart) {\n html.push('');\n\n if (this.o.calendarWeeks) {\n // ISO 8601: First week contains first thursday.\n // ISO also states week starts on Monday, but we can be more abstract here.\n var // Start of current week: based on weekstart/current date\n ws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n // Thursday of this week\n th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n // First Thursday of year, year from thursday\n yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n // Calendar week: ms between thursdays, div ms per day, div 7 days\n calWeek = (th - yth) / 864e5 / 7 + 1;\n html.push('');\n }\n }\n\n clsName = this.getClassNames(prevMonth);\n clsName.push('day');\n var content = prevMonth.getUTCDate();\n\n if (this.o.beforeShowDay !== $.noop) {\n before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n if (before === undefined) before = {};else if (typeof before === 'boolean') before = {\n enabled: before\n };else if (typeof before === 'string') before = {\n classes: before\n };\n if (before.enabled === false) clsName.push('disabled');\n if (before.classes) clsName = clsName.concat(before.classes.split(/\\s+/));\n if (before.tooltip) tooltip = before.tooltip;\n if (before.content) content = before.content;\n } //Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n //Fallback to unique function for older jquery versions\n\n\n if ($.isFunction($.uniqueSort)) {\n clsName = $.uniqueSort(clsName);\n } else {\n clsName = $.unique(clsName);\n }\n\n html.push('');\n tooltip = null;\n\n if (weekDay === this.o.weekEnd) {\n html.push('');\n }\n\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n }\n\n this.picker.find('.datepicker-days tbody').html(html.join(''));\n var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n var months = this.picker.find('.datepicker-months').find('.datepicker-switch').text(this.o.maxViewMode < 2 ? monthsTitle : year).end().find('tbody span').removeClass('active');\n $.each(this.dates, function (i, d) {\n if (d.getUTCFullYear() === year) months.eq(d.getUTCMonth()).addClass('active');\n });\n\n if (year < startYear || year > endYear) {\n months.addClass('disabled');\n }\n\n if (year === startYear) {\n months.slice(0, startMonth).addClass('disabled');\n }\n\n if (year === endYear) {\n months.slice(endMonth + 1).addClass('disabled');\n }\n\n if (this.o.beforeShowMonth !== $.noop) {\n var that = this;\n $.each(months, function (i, month) {\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n if (before === undefined) before = {};else if (typeof before === 'boolean') before = {\n enabled: before\n };else if (typeof before === 'string') before = {\n classes: before\n };\n if (before.enabled === false && !$(month).hasClass('disabled')) $(month).addClass('disabled');\n if (before.classes) $(month).addClass(before.classes);\n if (before.tooltip) $(month).prop('title', before.tooltip);\n });\n } // Generating decade/years picker\n\n\n this._fill_yearsView('.datepicker-years', 'year', 10, year, startYear, endYear, this.o.beforeShowYear); // Generating century/decades picker\n\n\n this._fill_yearsView('.datepicker-decades', 'decade', 100, year, startYear, endYear, this.o.beforeShowDecade); // Generating millennium/centuries picker\n\n\n this._fill_yearsView('.datepicker-centuries', 'century', 1000, year, startYear, endYear, this.o.beforeShowCentury);\n },\n updateNavArrows: function updateNavArrows() {\n if (!this._allow_update) return;\n var d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n prevIsDisabled,\n nextIsDisabled,\n factor = 1;\n\n switch (this.viewMode) {\n case 0:\n prevIsDisabled = year <= startYear && month <= startMonth;\n nextIsDisabled = year >= endYear && month >= endMonth;\n break;\n\n case 4:\n factor *= 10;\n\n /* falls through */\n\n case 3:\n factor *= 10;\n\n /* falls through */\n\n case 2:\n factor *= 10;\n\n /* falls through */\n\n case 1:\n prevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n nextIsDisabled = Math.floor(year / factor) * factor + factor >= endYear;\n break;\n }\n\n this.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n this.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n },\n click: function click(e) {\n e.preventDefault();\n e.stopPropagation();\n var target, dir, day, year, month;\n target = $(e.target); // Clicked on the switch\n\n if (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode) {\n this.setViewMode(this.viewMode + 1);\n } // Clicked on today button\n\n\n if (target.hasClass('today') && !target.hasClass('day')) {\n this.setViewMode(0);\n\n this._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n } // Clicked on clear button\n\n\n if (target.hasClass('clear')) {\n this.clearDates();\n }\n\n if (!target.hasClass('disabled')) {\n // Clicked on a month, year, decade, century\n if (target.hasClass('month') || target.hasClass('year') || target.hasClass('decade') || target.hasClass('century')) {\n this.viewDate.setUTCDate(1);\n day = 1;\n\n if (this.viewMode === 1) {\n month = target.parent().find('span').index(target);\n year = this.viewDate.getUTCFullYear();\n this.viewDate.setUTCMonth(month);\n } else {\n month = 0;\n year = Number(target.text());\n this.viewDate.setUTCFullYear(year);\n }\n\n this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n if (this.viewMode === this.o.minViewMode) {\n this._setDate(UTCDate(year, month, day));\n } else {\n this.setViewMode(this.viewMode - 1);\n this.fill();\n }\n }\n }\n\n if (this.picker.is(':visible') && this._focused_from) {\n this._focused_from.focus();\n }\n\n delete this._focused_from;\n },\n dayCellClick: function dayCellClick(e) {\n var $target = $(e.currentTarget);\n var timestamp = $target.data('date');\n var date = new Date(timestamp);\n\n if (this.o.updateViewDate) {\n if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n this._trigger('changeYear', this.viewDate);\n }\n\n if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n this._trigger('changeMonth', this.viewDate);\n }\n }\n\n this._setDate(date);\n },\n // Clicked on prev or next\n navArrowsClick: function navArrowsClick(e) {\n var $target = $(e.currentTarget);\n var dir = $target.hasClass('prev') ? -1 : 1;\n\n if (this.viewMode !== 0) {\n dir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n }\n\n this.viewDate = this.moveMonth(this.viewDate, dir);\n\n this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\n this.fill();\n },\n _toggle_multidate: function _toggle_multidate(date) {\n var ix = this.dates.contains(date);\n\n if (!date) {\n this.dates.clear();\n }\n\n if (ix !== -1) {\n if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive) {\n this.dates.remove(ix);\n }\n } else if (this.o.multidate === false) {\n this.dates.clear();\n this.dates.push(date);\n } else {\n this.dates.push(date);\n }\n\n if (typeof this.o.multidate === 'number') while (this.dates.length > this.o.multidate) {\n this.dates.remove(0);\n }\n },\n _setDate: function _setDate(date, which) {\n if (!which || which === 'date') this._toggle_multidate(date && new Date(date));\n if (!which && this.o.updateViewDate || which === 'view') this.viewDate = date && new Date(date);\n this.fill();\n this.setValue();\n\n if (!which || which !== 'view') {\n this._trigger('changeDate');\n }\n\n this.inputField.trigger('change');\n\n if (this.o.autoclose && (!which || which === 'date')) {\n this.hide();\n }\n },\n moveDay: function moveDay(date, dir) {\n var newDate = new Date(date);\n newDate.setUTCDate(date.getUTCDate() + dir);\n return newDate;\n },\n moveWeek: function moveWeek(date, dir) {\n return this.moveDay(date, dir * 7);\n },\n moveMonth: function moveMonth(date, dir) {\n if (!isValidDate(date)) return this.o.defaultViewDate;\n if (!dir) return date;\n var new_date = new Date(date.valueOf()),\n day = new_date.getUTCDate(),\n month = new_date.getUTCMonth(),\n mag = Math.abs(dir),\n new_month,\n test;\n dir = dir > 0 ? 1 : -1;\n\n if (mag === 1) {\n test = dir === -1 ? // If going back one month, make sure month is not current month\n // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n function () {\n return new_date.getUTCMonth() === month;\n } : // If going forward one month, make sure month is as expected\n // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n function () {\n return new_date.getUTCMonth() !== new_month;\n };\n new_month = month + dir;\n new_date.setUTCMonth(new_month); // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\n new_month = (new_month + 12) % 12;\n } else {\n // For magnitudes >1, move one month at a time...\n for (var i = 0; i < mag; i++) {\n // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n new_date = this.moveMonth(new_date, dir);\n } // ...then reset the day, keeping it in the new month\n\n\n new_month = new_date.getUTCMonth();\n new_date.setUTCDate(day);\n\n test = function test() {\n return new_month !== new_date.getUTCMonth();\n };\n } // Common date-resetting loop -- if date is beyond end of month, make it\n // end of month\n\n\n while (test()) {\n new_date.setUTCDate(--day);\n new_date.setUTCMonth(new_month);\n }\n\n return new_date;\n },\n moveYear: function moveYear(date, dir) {\n return this.moveMonth(date, dir * 12);\n },\n moveAvailableDate: function moveAvailableDate(date, dir, fn) {\n do {\n date = this[fn](date, dir);\n if (!this.dateWithinRange(date)) return false;\n fn = 'moveDay';\n } while (this.dateIsDisabled(date));\n\n return date;\n },\n weekOfDateIsDisabled: function weekOfDateIsDisabled(date) {\n return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n },\n dateIsDisabled: function dateIsDisabled(date) {\n return this.weekOfDateIsDisabled(date) || $.grep(this.o.datesDisabled, function (d) {\n return isUTCEquals(date, d);\n }).length > 0;\n },\n dateWithinRange: function dateWithinRange(date) {\n return date >= this.o.startDate && date <= this.o.endDate;\n },\n keydown: function keydown(e) {\n if (!this.picker.is(':visible')) {\n if (e.keyCode === 40 || e.keyCode === 27) {\n // allow down to re-show picker\n this.show();\n e.stopPropagation();\n }\n\n return;\n }\n\n var dateChanged = false,\n dir,\n newViewDate,\n focusDate = this.focusDate || this.viewDate;\n\n switch (e.keyCode) {\n case 27:\n // escape\n if (this.focusDate) {\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.fill();\n } else this.hide();\n\n e.preventDefault();\n e.stopPropagation();\n break;\n\n case 37: // left\n\n case 38: // up\n\n case 39: // right\n\n case 40:\n // down\n if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7) break;\n dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n\n if (this.viewMode === 0) {\n if (e.ctrlKey) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n if (newViewDate) this._trigger('changeYear', this.viewDate);\n } else if (e.shiftKey) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n if (newViewDate) this._trigger('changeMonth', this.viewDate);\n } else if (e.keyCode === 37 || e.keyCode === 39) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n } else if (!this.weekOfDateIsDisabled(focusDate)) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n }\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\n if (newViewDate) {\n this.focusDate = this.viewDate = newViewDate;\n this.setValue();\n this.fill();\n e.preventDefault();\n }\n\n break;\n\n case 13:\n // enter\n if (!this.o.forceParse) break;\n focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\n if (this.o.keyboardNavigation) {\n this._toggle_multidate(focusDate);\n\n dateChanged = true;\n }\n\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.setValue();\n this.fill();\n\n if (this.picker.is(':visible')) {\n e.preventDefault();\n e.stopPropagation();\n if (this.o.autoclose) this.hide();\n }\n\n break;\n\n case 9:\n // tab\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.fill();\n this.hide();\n break;\n }\n\n if (dateChanged) {\n if (this.dates.length) this._trigger('changeDate');else this._trigger('clearDate');\n this.inputField.trigger('change');\n }\n },\n setViewMode: function setViewMode(viewMode) {\n this.viewMode = viewMode;\n this.picker.children('div').hide().filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName).show();\n this.updateNavArrows();\n\n this._trigger('changeViewMode', new Date(this.viewDate));\n }\n };\n\n var DateRangePicker = function DateRangePicker(element, options) {\n $.data(element, 'datepicker', this);\n this.element = $(element);\n this.inputs = $.map(options.inputs, function (i) {\n return i.jquery ? i[0] : i;\n });\n delete options.inputs;\n this.keepEmptyValues = options.keepEmptyValues;\n delete options.keepEmptyValues;\n datepickerPlugin.call($(this.inputs), options).on('changeDate', $.proxy(this.dateUpdated, this));\n this.pickers = $.map(this.inputs, function (i) {\n return $.data(i, 'datepicker');\n });\n this.updateDates();\n };\n\n DateRangePicker.prototype = {\n updateDates: function updateDates() {\n this.dates = $.map(this.pickers, function (i) {\n return i.getUTCDate();\n });\n this.updateRanges();\n },\n updateRanges: function updateRanges() {\n var range = $.map(this.dates, function (d) {\n return d.valueOf();\n });\n $.each(this.pickers, function (i, p) {\n p.setRange(range);\n });\n },\n dateUpdated: function dateUpdated(e) {\n // `this.updating` is a workaround for preventing infinite recursion\n // between `changeDate` triggering and `setUTCDate` calling. Until\n // there is a better mechanism.\n if (this.updating) return;\n this.updating = true;\n var dp = $.data(e.target, 'datepicker');\n\n if (dp === undefined) {\n return;\n }\n\n var new_date = dp.getUTCDate(),\n keep_empty_values = this.keepEmptyValues,\n i = $.inArray(e.target, this.inputs),\n j = i - 1,\n k = i + 1,\n l = this.inputs.length;\n if (i === -1) return;\n $.each(this.pickers, function (i, p) {\n if (!p.getUTCDate() && (p === dp || !keep_empty_values)) p.setUTCDate(new_date);\n });\n\n if (new_date < this.dates[j]) {\n // Date being moved earlier/left\n while (j >= 0 && new_date < this.dates[j]) {\n this.pickers[j--].setUTCDate(new_date);\n }\n } else if (new_date > this.dates[k]) {\n // Date being moved later/right\n while (k < l && new_date > this.dates[k]) {\n this.pickers[k++].setUTCDate(new_date);\n }\n }\n\n this.updateDates();\n delete this.updating;\n },\n destroy: function destroy() {\n $.map(this.pickers, function (p) {\n p.destroy();\n });\n $(this.inputs).off('changeDate', this.dateUpdated);\n delete this.element.data().datepicker;\n },\n remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n };\n\n function opts_from_el(el, prefix) {\n // Derive options from element data-attrs\n var data = $(el).data(),\n out = {},\n inkey,\n replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n prefix = new RegExp('^' + prefix.toLowerCase());\n\n function re_lower(_, a) {\n return a.toLowerCase();\n }\n\n for (var key in data) {\n if (prefix.test(key)) {\n inkey = key.replace(replace, re_lower);\n out[inkey] = data[key];\n }\n }\n\n return out;\n }\n\n function opts_from_locale(lang) {\n // Derive options from locale plugins\n var out = {}; // Check if \"de-DE\" style date is available, if not language should\n // fallback to 2 letter code eg \"de\"\n\n if (!dates[lang]) {\n lang = lang.split('-')[0];\n if (!dates[lang]) return;\n }\n\n var d = dates[lang];\n $.each(locale_opts, function (i, k) {\n if (k in d) out[k] = d[k];\n });\n return out;\n }\n\n var old = $.fn.datepicker;\n\n var datepickerPlugin = function datepickerPlugin(option) {\n var args = Array.apply(null, arguments);\n args.shift();\n var internal_return;\n this.each(function () {\n var $this = $(this),\n data = $this.data('datepicker'),\n options = _typeof(option) === 'object' && option;\n\n if (!data) {\n var elopts = opts_from_el(this, 'date'),\n // Preliminary otions\n xopts = $.extend({}, defaults, elopts, options),\n locopts = opts_from_locale(xopts.language),\n // Options priority: js args, data-attrs, locales, defaults\n opts = $.extend({}, defaults, locopts, elopts, options);\n\n if ($this.hasClass('input-daterange') || opts.inputs) {\n $.extend(opts, {\n inputs: opts.inputs || $this.find('input').toArray()\n });\n data = new DateRangePicker(this, opts);\n } else {\n data = new Datepicker(this, opts);\n }\n\n $this.data('datepicker', data);\n }\n\n if (typeof option === 'string' && typeof data[option] === 'function') {\n internal_return = data[option].apply(data, args);\n }\n });\n if (internal_return === undefined || internal_return instanceof Datepicker || internal_return instanceof DateRangePicker) return this;\n if (this.length > 1) throw new Error('Using only allowed for the collection of a single element (' + option + ' function)');else return internal_return;\n };\n\n $.fn.datepicker = datepickerPlugin;\n var defaults = $.fn.datepicker.defaults = {\n assumeNearbyYear: false,\n autoclose: false,\n beforeShowDay: $.noop,\n beforeShowMonth: $.noop,\n beforeShowYear: $.noop,\n beforeShowDecade: $.noop,\n beforeShowCentury: $.noop,\n calendarWeeks: false,\n clearBtn: false,\n toggleActive: false,\n daysOfWeekDisabled: [],\n daysOfWeekHighlighted: [],\n datesDisabled: [],\n endDate: Infinity,\n forceParse: true,\n format: 'mm/dd/yyyy',\n keepEmptyValues: false,\n keyboardNavigation: true,\n language: 'en',\n minViewMode: 0,\n maxViewMode: 4,\n multidate: false,\n multidateSeparator: ',',\n orientation: 'auto',\n rtl: false,\n startDate: -Infinity,\n startView: 0,\n todayBtn: false,\n todayHighlight: false,\n updateViewDate: true,\n weekStart: 0,\n disableTouchKeyboard: false,\n enableOnReadonly: true,\n showOnFocus: true,\n zIndexOffset: 10,\n container: 'body',\n immediateUpdates: false,\n title: '',\n templates: {\n leftArrow: '«',\n rightArrow: '»'\n },\n showWeekDays: true\n };\n var locale_opts = $.fn.datepicker.locale_opts = ['format', 'rtl', 'weekStart'];\n $.fn.datepicker.Constructor = Datepicker;\n var dates = $.fn.datepicker.dates = {\n en: {\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n today: 'Today',\n clear: 'Clear',\n titleFormat: 'MM yyyy'\n }\n };\n var DPGlobal = {\n viewModes: [{\n names: ['days', 'month'],\n clsName: 'days',\n e: 'changeMonth'\n }, {\n names: ['months', 'year'],\n clsName: 'months',\n e: 'changeYear',\n navStep: 1\n }, {\n names: ['years', 'decade'],\n clsName: 'years',\n e: 'changeDecade',\n navStep: 10\n }, {\n names: ['decades', 'century'],\n clsName: 'decades',\n e: 'changeCentury',\n navStep: 100\n }, {\n names: ['centuries', 'millennium'],\n clsName: 'centuries',\n e: 'changeMillennium',\n navStep: 1000\n }],\n validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n nonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n parseFormat: function parseFormat(format) {\n if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function') return format; // IE treats \\0 as a string end in inputs (truncating the value),\n // so it's a bad format delimiter, anyway\n\n var separators = format.replace(this.validParts, '\\0').split('\\0'),\n parts = format.match(this.validParts);\n\n if (!separators || !separators.length || !parts || parts.length === 0) {\n throw new Error('Invalid date format.');\n }\n\n return {\n separators: separators,\n parts: parts\n };\n },\n parseDate: function parseDate(date, format, language, assumeNearby) {\n if (!date) return undefined;\n if (date instanceof Date) return date;\n if (typeof format === 'string') format = DPGlobal.parseFormat(format);\n if (format.toValue) return format.toValue(date, format, language);\n var fn_map = {\n d: 'moveDay',\n m: 'moveMonth',\n w: 'moveWeek',\n y: 'moveYear'\n },\n dateAliases = {\n yesterday: '-1d',\n today: '+0d',\n tomorrow: '+1d'\n },\n parts,\n part,\n dir,\n i,\n fn;\n\n if (date in dateAliases) {\n date = dateAliases[date];\n }\n\n if (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)) {\n parts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n date = new Date();\n\n for (i = 0; i < parts.length; i++) {\n part = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n dir = Number(part[1]);\n fn = fn_map[part[2].toLowerCase()];\n date = Datepicker.prototype[fn](date, dir);\n }\n\n return Datepicker.prototype._zero_utc_time(date);\n }\n\n parts = date && date.match(this.nonpunctuation) || [];\n\n function applyNearbyYear(year, threshold) {\n if (threshold === true) threshold = 10; // if year is 2 digits or less, than the user most likely is trying to get a recent century\n\n if (year < 100) {\n year += 2000; // if the new year is more than threshold years in advance, use last century\n\n if (year > new Date().getFullYear() + threshold) {\n year -= 100;\n }\n }\n\n return year;\n }\n\n var parsed = {},\n setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n setters_map = {\n yyyy: function yyyy(d, v) {\n return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n },\n m: function m(d, v) {\n if (isNaN(d)) return d;\n v -= 1;\n\n while (v < 0) {\n v += 12;\n }\n\n v %= 12;\n d.setUTCMonth(v);\n\n while (d.getUTCMonth() !== v) {\n d.setUTCDate(d.getUTCDate() - 1);\n }\n\n return d;\n },\n d: function d(_d2, v) {\n return _d2.setUTCDate(v);\n }\n },\n val,\n filtered;\n setters_map['yy'] = setters_map['yyyy'];\n setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n setters_map['dd'] = setters_map['d'];\n date = UTCToday();\n var fparts = format.parts.slice(); // Remove noop parts\n\n if (parts.length !== fparts.length) {\n fparts = $(fparts).filter(function (i, p) {\n return $.inArray(p, setters_order) !== -1;\n }).toArray();\n } // Process remainder\n\n\n function match_part() {\n var m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m.toLowerCase() === p.toLowerCase();\n }\n\n if (parts.length === fparts.length) {\n var cnt;\n\n for (i = 0, cnt = fparts.length; i < cnt; i++) {\n val = parseInt(parts[i], 10);\n part = fparts[i];\n\n if (isNaN(val)) {\n switch (part) {\n case 'MM':\n filtered = $(dates[language].months).filter(match_part);\n val = $.inArray(filtered[0], dates[language].months) + 1;\n break;\n\n case 'M':\n filtered = $(dates[language].monthsShort).filter(match_part);\n val = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n break;\n }\n }\n\n parsed[part] = val;\n }\n\n var _date, s;\n\n for (i = 0; i < setters_order.length; i++) {\n s = setters_order[i];\n\n if (s in parsed && !isNaN(parsed[s])) {\n _date = new Date(date);\n setters_map[s](_date, parsed[s]);\n if (!isNaN(_date)) date = _date;\n }\n }\n }\n\n return date;\n },\n formatDate: function formatDate(date, format, language) {\n if (!date) return '';\n if (typeof format === 'string') format = DPGlobal.parseFormat(format);\n if (format.toDisplay) return format.toDisplay(date, format, language);\n var val = {\n d: date.getUTCDate(),\n D: dates[language].daysShort[date.getUTCDay()],\n DD: dates[language].days[date.getUTCDay()],\n m: date.getUTCMonth() + 1,\n M: dates[language].monthsShort[date.getUTCMonth()],\n MM: dates[language].months[date.getUTCMonth()],\n yy: date.getUTCFullYear().toString().substring(2),\n yyyy: date.getUTCFullYear()\n };\n val.dd = (val.d < 10 ? '0' : '') + val.d;\n val.mm = (val.m < 10 ? '0' : '') + val.m;\n date = [];\n var seps = $.extend([], format.separators);\n\n for (var i = 0, cnt = format.parts.length; i <= cnt; i++) {\n if (seps.length) date.push(seps.shift());\n date.push(val[format.parts[i]]);\n }\n\n return date.join('');\n },\n headTemplate: '' + '' + '' + '' + '' + '' + '' + '' + '' + '',\n contTemplate: '',\n footTemplate: '' + '' + '' + '' + '' + '' + '' + ''\n };\n DPGlobal.template = '
' + '
' + '
').addClass('property-rate-titles').html('Season'));\n row.append($('').addClass('property-rate-titles').html('Start'));\n row.append($('').addClass('property-rate-titles').html('End'));\n\n if (preferences.nightlyPricing) {\n if (preferences.pricingPerDayOfWeek) {\n row.append($('').addClass('property-rate-titles').html('Sun'));\n row.append($('').addClass('property-rate-titles').html('Mon'));\n row.append($('').addClass('property-rate-titles').html('Tue'));\n row.append($('').addClass('property-rate-titles').html('Wed'));\n row.append($('').addClass('property-rate-titles').html('Thu'));\n row.append($('').addClass('property-rate-titles').html('Fri'));\n row.append($('').addClass('property-rate-titles').html('Sat'));\n } else {\n row.append($('').addClass('property-rate-titles property-rate-title-night').html('Nightly'));\n }\n }\n\n if (preferences.weeklyPricing) {\n row.append($('').addClass('property-rate-titles property-rate-title-week').html('Weekly'));\n }\n\n if (preferences.monthlyPricing) {\n row.append($('').addClass('property-rate-titles property-rate-title-month').html('Monthly'));\n }\n\n if (preferences.showMinStayOnProperty) {\n row.append($('').addClass('property-rate-titles property-rate-title-min-night').html('Min Nights'));\n }\n\n return row;\n };\n\n var _buildDateRangeRow = function _buildDateRangeRow(preferences, dateRange, index) {\n var row = $('
').html(dateRange.rangeTitle.trim()));\n row.append($('').html(dateRange.strDateRangeL));\n row.append($('').html(dateRange.strDateRangeU));\n var pricingColumns = 0;\n\n if (preferences.nightlyPricing) {\n if (preferences.pricingPerDayOfWeek) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 7;\n } else if (dateRange.dateRangeType === 2) {\n // week to week\n row.append($('').attr('colspan', 7).addClass('text-center').html(_formatPricing(preferences, dateRange.weekly) + ' Per Week'));\n } else {\n row.append($('').html(_formatPricing(preferences, dateRange.sunPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.monPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.tuePrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.wedPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.thuPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.friPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.satPrice)));\n }\n } else {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else if (dateRange.nightly && dateRange.dateRangeType !== 2) {\n // week to week\n var nightlyHTML = _formatPricing(preferences, dateRange.nightly);\n\n if (dateRange.startingAtNightly) {\n nightlyHTML = '
' + _formatPricing(preferences, dateRange.startingAtNightly) + '
' + nightlyHTML;\n }\n\n row.append($('
').addClass('property-rate-night').html(nightlyHTML));\n } else {\n row.append($('').addClass('property-rate-week-none').html('-'));\n }\n }\n }\n\n if (preferences.weeklyPricing) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else if (dateRange.weekly) {\n var weeklyHTML = _formatPricing(preferences, dateRange.weekly);\n\n if (dateRange.startingAtWeekly) {\n weeklyHTML = '
' + _formatPricing(preferences, dateRange.startingAtWeekly) + '
' + weeklyHTML;\n }\n\n row.append($('
').addClass('property-rate-week').html(weeklyHTML));\n } else {\n row.append($('').addClass('property-rate-week-none').html('-'));\n }\n }\n\n if (preferences.monthlyPricing) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else if (dateRange.monthly && dateRange.dateRangeType !== 2) {\n // week to week\n var monthlyHTML = _formatPricing(preferences, dateRange.monthly);\n\n if (dateRange.startingAtMonthly) {\n monthlyHTML = '
' + _formatPricing(preferences, dateRange.startingAtMonthly) + '
' + monthlyHTML;\n }\n\n row.append($('
').addClass('property-rate-month').html(monthlyHTML));\n } else {\n row.append($('').addClass('property-rate-week-none').html('-'));\n }\n }\n\n if (preferences.showMinStayOnProperty) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else {\n var cell = $('').addClass('property-rate-min-night-days').html(dateRange.minimumNightsStayWebBooking || dateRange.minimumNightsStay || '-');\n\n if (dateRange.dateRangeType === 2) {\n // week to week\n cell.append(' (' + DAYS_OF_WEEK[dateRange.weekToWeekCheckinDay - 1] + ' - ' + DAYS_OF_WEEK[dateRange.weekToWeekCheckinDay - 1] + ')');\n }\n\n row.append(cell);\n }\n }\n\n if (pricingColumns) {\n row.append($('').attr('colspan', pricingColumns).addClass('text-left').html('Reserved'));\n }\n\n return row;\n };\n\n var _formatPricing = function _formatPricing(preferences, price) {\n var newPrice = parseFloat(price).toFixed(2);\n return preferences.currencySymbol + newPrice.replace('.00', '').replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n };\n\n var _isEven = function _isEven(n) {\n return n === 0 || !!(n && !(n % 2));\n };\n\n var _isOdd = function _isOdd(n) {\n return _isEven(Number(n) + 1);\n };\n\n LIVEREZ.PropertyDateRanges = PropertyDateRanges;\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\n(function (LIVEREZ, window, $, undefined) {\n var InstantQuote = {};\n\n InstantQuote.getQuote = function (instantQuoteObj) {\n var _this = this;\n\n var _checkValidDates = LIVEREZ.DynsiteFunctions.checkValidStartEndDates(instantQuoteObj.StartDate, instantQuoteObj.EndDate);\n\n if (_checkValidDates) {\n _this.hideLoading();\n\n _this.setError(_checkValidDates);\n\n _this.showDates();\n\n _this.showButton('contact');\n\n return;\n } // if we already have an ajax request, abort it and use the new one\n\n\n if (_this.xhr) {\n _this.killAjax();\n }\n\n this.xhr = $.ajax({\n type: 'get',\n url: LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=instantquote',\n data: {\n AdminCustDataID: ADMIN_CUST_DATA_ID,\n DynSiteID: DYN_SITE_ID,\n PageDataID: instantQuoteObj.PageDataID,\n ad: instantQuoteObj.StartDate,\n dd: instantQuoteObj.EndDate,\n adults: instantQuoteObj.Adults,\n children: instantQuoteObj.Children,\n checkAvailable: true,\n LiveNetID: instantQuoteObj.LiveNetID || 0\n },\n dataType: 'json',\n success: function success(data) {\n // publish the data to all subscribers\n LIVEREZ.Publisher.publish(LIVEREZ.events.instantQuoteFinished, data);\n },\n error: function error(data, status, _error5) {\n if (_error5 !== 'abort') {\n _this.hideLoading();\n\n _this.setError('There was an issue with the quote. Please try new travel dates or try again later.');\n\n _this.showDates();\n\n _this.showButton('contact');\n }\n }\n });\n }; // subscribe to the instant quote finished event\n\n\n LIVEREZ.Publisher.subscribe(LIVEREZ.events.instantQuoteFinished, function (topic, data) {\n // reset\n $('.has-specials').addClass('hidden');\n $('.quote-fee-row').addClass('hidden');\n $('.discounted-rent').removeClass('on-sale'); // property is available without errors\n\n if (!data.error && data.isAvailable === 1) {\n $('.property-instant-quote-nightly-rate-before-specials').text(cleanPrice(data.averageDailyRateBeforeSpecials));\n $('.property-instant-quote-nightly-rate').text(cleanPrice(data.averageDailyRate));\n $('.property-instant-quote-num-nights').text(data.quantityDays);\n $('.property-instant-quote-fees').text(cleanPrice(data.fees));\n\n if (data.fees !== '0.00') {\n $('.quote-fee-row').removeClass('hidden');\n }\n\n $('.property-instant-quote-tax').text(cleanPrice(data.taxTotal));\n $('.property-instant-quote-rent').text(cleanPrice(data.rent));\n $('.property-instant-quote-rent-before-specials').text(cleanPrice(data.rentBeforeSpecials));\n $('.property-instant-quote-start-date').text(LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI($('#property-instant-quote-start-date').val(), dateFormatType));\n $('.property-instant-quote-end-date').text(LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI($('#property-instant-quote-end-date').val(), dateFormatType));\n $('.property-instant-quote-total-price').text(cleanPrice(data.total));\n $('.property-instant-quote-deposit-due').text(cleanPrice(data.deposit));\n\n if (data.hasSpecials) {\n $('.has-specials').removeClass('hidden').wrap('');\n $('.discounted-rent').addClass('on-sale');\n }\n\n LIVEREZ.InstantQuote.showPricing();\n\n if (OnlineBookings) {\n LIVEREZ.InstantQuote.showButton('book');\n } else {\n LIVEREZ.InstantQuote.showButton('contact');\n }\n\n $('.property-instant-quote-change-dates').removeClass('hidden');\n } // error or not available\n else {\n LIVEREZ.InstantQuote.showButton('contact');\n LIVEREZ.InstantQuote.setError(data.message.split('.').join('.
'));\n LIVEREZ.InstantQuote.showDates();\n }\n\n LIVEREZ.InstantQuote.showHeading(data.isAvailable);\n LIVEREZ.InstantQuote.hideLoading();\n });\n\n InstantQuote.killAjax = function (strError) {\n if (this.xhr.readystate != 4) {\n this.xhr.abort();\n this.xhr = null;\n }\n };\n\n InstantQuote.setError = function (strError) {\n $('.property-instant-quote-message').html(strError).removeClass('hidden');\n };\n\n InstantQuote.removeError = function (strButtonType) {\n $('.property-instant-quote-message').empty().addClass('hidden');\n };\n\n InstantQuote.showButton = function (strButtonType) {\n $('.property-instant-quote-action-button').addClass('hidden');\n\n if (strButtonType !== '') {\n $('.property-instant-quote-button-' + strButtonType).removeClass('hidden');\n }\n };\n\n InstantQuote.submitForm = function (strFormType) {\n $('#property-quote-form-' + strFormType).submit();\n };\n\n InstantQuote.showLoading = function () {\n $('.property-instant-quote-loading').removeClass('hidden');\n };\n\n InstantQuote.hideLoading = function () {\n $('.property-instant-quote-loading').addClass('hidden');\n };\n\n InstantQuote.showDates = function () {\n $('.property-instant-quote-dates').removeClass('hidden');\n };\n\n InstantQuote.hideDates = function () {\n $('.property-instant-quote-dates').addClass('hidden');\n };\n\n InstantQuote.showPricing = function () {\n $('.property-instant-quote-available').removeClass('hidden');\n };\n\n InstantQuote.hidePricing = function () {\n $('.property-instant-quote-available').addClass('hidden');\n $('.property-instant-quote-available').addClass('hidden');\n };\n\n InstantQuote.changeDates = function () {\n $('.property-instant-quote-change-dates').addClass('hidden');\n this.killAjax();\n this.showHeading(0);\n this.removeError();\n this.hideLoading();\n this.hidePricing();\n this.showDates();\n this.showButton('');\n };\n\n InstantQuote.showHeading = function (isAvailable) {\n $('.property-instant-quote-heading').addClass('hidden');\n\n if (isAvailable === 1) {\n $('.property-instant-quote-heading-available').removeClass('hidden');\n } else {\n $('.property-instant-quote-heading-default').removeClass('hidden');\n }\n };\n\n LIVEREZ.InstantQuote = InstantQuote;\n\n function cleanPrice(decimalPrice) {\n var parts = decimalPrice.split('.');\n\n if (parts[1] === '00') {\n decimalPrice = parts[0];\n }\n\n return decimalPrice;\n }\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);\n\n(function (LIVEREZ, window, $, undefined) {\n var SearchResults = {}; // set up empty object to be used for caching data, settings while on the page\n\n SearchResults.cacheObj = {};\n SearchResults.cacheObj.mapData = {\n markerObjs: [],\n markersArr: [],\n isOpen: false,\n instance: null\n };\n\n SearchResults.setSearch = function (SearchObj) {\n this.cacheObj.SearchObj = SearchObj;\n return this;\n };\n\n SearchResults.searchOrder = function (OrderBy) {\n this.cacheObj.SearchObj.Sort = OrderBy;\n this.cacheObj.SearchObj.currentPage = 1;\n return this;\n };\n\n SearchResults.searchRun = function () {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchStart);\n\n var _this = this; // if we already have an ajax request, abort it and use the new one\n\n\n if (_this.xhr) {\n _this.xhr.abort();\n\n _this.xhr = null;\n }\n\n var _sendData = {\n Beds: _this.cacheObj.SearchObj.Bedrooms,\n sleeps: _this.cacheObj.SearchObj.Guests,\n arrivaldate: _this.cacheObj.SearchObj.ArrivalDate,\n departuredate: _this.cacheObj.SearchObj.DepartureDate,\n comparesearch: _this.cacheObj.SearchObj.CompareSearch,\n style: _this.cacheObj.SearchObj.Style,\n categoryid: Array.isArray(_this.cacheObj.SearchObj.CategoryID) ? _this.cacheObj.SearchObj.CategoryID.join(',') : _this.cacheObj.SearchObj.CategoryID,\n destinationID: Array.isArray(_this.cacheObj.SearchObj.DestinationID) ? _this.cacheObj.SearchObj.DestinationID.join(',') : _this.cacheObj.SearchObj.DestinationID,\n communityid: Array.isArray(_this.cacheObj.SearchObj.CommunityID) ? _this.cacheObj.SearchObj.CommunityID.join(',') : _this.cacheObj.SearchObj.CommunityID,\n admincustdataid: _this.cacheObj.SearchObj.AdminCustDataID,\n dynsiteid: _this.cacheObj.SearchObj.DynsiteID,\n searchtype: _this.cacheObj.SearchObj.SearchType,\n searchOrigin: _this.cacheObj.SearchObj.SearchOrigin,\n advs: _this.cacheObj.SearchObj.AdvancedSearch,\n pagedataid: _this.cacheObj.SearchObj.pagedataid,\n pageSize: _this.cacheObj.SearchObj.pageSize,\n currentPage: _this.cacheObj.SearchObj.currentPage,\n flexibleDates: _this.cacheObj.SearchObj.flexibleDates,\n searchAmenities: _this.cacheObj.SearchObj.searchAmenities,\n showOnlySpecials: _this.cacheObj.SearchObj.showOnlySpecials,\n flexibleDatesThreshold: _this.cacheObj.SearchObj.flexibleDatesThreshold\n }; // console.log(_sendData);\n\n if (_this.cacheObj.SearchObj.Sort > 0) {\n _sendData.O = this.cacheObj.SearchObj.Sort;\n }\n\n _this.xhr = $.ajax({\n type: 'get',\n url: LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=searchresults',\n data: _sendData,\n dataType: 'json',\n success: function success(data, status, error) {\n data.comparesearch = _sendData.comparesearch;\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchComplete, data);\n },\n error: function error(data, status, _error6) {\n if (!status === 'abort') {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchComplete, {\n error: _error6\n });\n }\n }\n });\n };\n\n SearchResults.getCalendarSuggestions = function (preferences) {\n var _searchProperties = [];\n\n if (preferences.hasOwnProperty('properties') && Array.isArray(preferences.properties) && preferences.properties.length) {\n _searchProperties = preferences.properties.map(function (property) {\n return property.pageDataID;\n });\n }\n\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsStart);\n\n var _this = this; // if we already have an ajax request, abort it and use the new one\n\n\n if (_this.csxhr) {\n _this.csxhr.abort();\n\n _this.csxhr = null;\n }\n\n var searchedDate = new Date(_this.cacheObj.SearchObj.ArrivalDate);\n var searchEnd = new Date(_this.cacheObj.SearchObj.DepartureDate);\n\n var _daysSearched = (searchEnd - searchedDate) / (1000 * 60 * 60 * 24);\n\n _this.daysBack = 5;\n _this.daysForward = _daysSearched > 15 ? _daysSearched + 5 : 15;\n var startDate = LIVEREZ.DynsiteFunctions.dateObjectToString(new Date(new Date(searchedDate).setDate(searchedDate.getDate() - _this.daysBack)));\n var stopDate = LIVEREZ.DynsiteFunctions.dateObjectToString(new Date(new Date(searchedDate).setDate(searchedDate.getDate() + _this.daysForward)));\n var consecutiveDays = Math.floor(_daysSearched * 0.8);\n\n if (consecutiveDays < 2) {\n consecutiveDays = 2;\n }\n\n var _sendData = {\n bedrooms: _this.cacheObj.SearchObj.Bedrooms,\n guests: _this.cacheObj.SearchObj.Guests,\n startDate: startDate,\n endDate: stopDate,\n categoryid: Array.isArray(_this.cacheObj.SearchObj.CategoryID) ? _this.cacheObj.SearchObj.CategoryID.join(',') : _this.cacheObj.SearchObj.CategoryID,\n destinationID: Array.isArray(_this.cacheObj.SearchObj.DestinationID) ? _this.cacheObj.SearchObj.DestinationID.join(',') : _this.cacheObj.SearchObj.DestinationID,\n communityid: Array.isArray(_this.cacheObj.SearchObj.CommunityID) ? _this.cacheObj.SearchObj.CommunityID.join(',') : _this.cacheObj.SearchObj.CommunityID,\n admincustdataid: _this.cacheObj.SearchObj.AdminCustDataID,\n dynsiteid: _this.cacheObj.SearchObj.DynsiteID,\n consecutiveDays: consecutiveDays,\n maxProperties: 3,\n searchOrigin: _this.cacheObj.SearchObj.SearchOrigin\n };\n _this.csxhr = $.ajax({\n type: 'get',\n url: LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=calendarsuggestions',\n data: _sendData,\n dataType: 'json',\n success: function success(data, status, error) {\n var finalProps = [];\n\n if (data.length) {\n finalProps = data.filter(function (property) {\n return _searchProperties.indexOf(property.PageDataID) === -1;\n });\n }\n\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsComplete, {\n preferences: preferences,\n data: finalProps\n });\n },\n error: function error(data, status, _error7) {\n if (!status === 'abort') {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsComplete, {\n error: _error7\n });\n } else {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsComplete, {\n error: 'error fetching results'\n });\n }\n }\n });\n };\n\n SearchResults.CompareProperties = function () {\n var _this = this;\n\n if (_this.CheckCompare()) {\n document.Search_xml.PageDataID.value = _this.CompareCheckboxArr.join(',');\n document.Search_xml.submit();\n }\n };\n\n SearchResults.CheckCompare = function () {\n var _this = this;\n\n _this.CompareCheckboxArr = [];\n $('input:checkbox[name=PageDataID]:checked').each(function () {\n _this.CompareCheckboxArr.push($(this).val());\n });\n\n if (this.CompareCheckboxArr.length == 0) {\n alert('No Properties were selected. Please select up to 3 properties to compare.');\n return false;\n } else if (this.CompareCheckboxArr.length == 1) {\n alert('You must select more than 1 property to compare homes.');\n return false;\n } else if (this.CompareCheckboxArr.length > 3) {\n alert('To compare homes, You can only select 3 homes at a time.');\n return false;\n }\n\n return true;\n };\n\n SearchResults.setView = function (strView) {\n LIVEREZ.Storage.set('SearchResultsView', strView);\n return this;\n };\n\n SearchResults.getView = function (strView) {\n return LIVEREZ.Storage.get('SearchResultsView');\n };\n\n SearchResults.saveResultsData = function (resultsData) {\n this.cacheObj.results = resultsData;\n return this;\n };\n\n SearchResults.renderResultsbyView = function (callback, addtPropAvailMsgLocation) {\n if (this.cacheObj.results) {\n var data = this.cacheObj.results;\n\n var _this = this;\n\n var errorMsg = '';\n var propertiesDiv = $('
');\n _this.cacheObj.mapData.markerObjs.length = 0;\n\n if (data.properties && data.properties.length) {\n var propertiesStr = '';\n\n if (_this.getView() === 'grid') {\n propertiesStr += '
    ';\n }\n\n data.properties.forEach(function (propData, index) {\n if (_this.getView() === 'grid') {\n if (index > 0 && index % 3 === 0) {\n propertiesStr += '
    ';\n }\n\n propertiesStr += _this.SearchResultsTemplateGrid(data, propData);\n } else {\n propertiesStr += _this.SearchResultsTemplateList(data, propData);\n } // add the property data to the markers object array for use later signifying this property has a lat and long\n\n\n if (propData.latitude && propData.longitude) {\n propData.currencySymbol = propData.currencySymbol || data.currencySymbol;\n propData.currency = propData.currency || data.currency;\n\n _this.cacheObj.mapData.markerObjs.push(propData);\n }\n });\n\n if (_this.getView() === 'grid') {\n propertiesStr += '
';\n }\n\n propertiesDiv.append(propertiesStr); // create a map button for users to click\n\n if (_this.cacheObj.mapData.markerObjs.length > 0) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchCreateMapImage, {\n lat: _this.cacheObj.mapData.markerObjs[0].latitude,\n lng: _this.cacheObj.mapData.markerObjs[0].longitude\n });\n }\n } else {\n if (data.returnMessageText) {\n errorMsg += data.returnMessageText;\n } else {\n errorMsg += 'We couldn’t find any results that matched your criteria.
Try adjusting your dates or removing some search filters to show more properties.';\n }\n } // create a week to week message if week to week are present\n\n\n if (data.weekToWeek && data.weekToWeek.hasProperties) {\n errorMsg += '
';\n\n if (data.properties && data.properties.length) {\n errorMsg += '

Additional Properties Available

';\n }\n\n errorMsg += '
' + data.weekToWeek.messageText + '
';\n errorMsg += '
';\n\n if (data.weekToWeek.prevSuggestions.length) {\n errorMsg += '
';\n errorMsg += '
Try Previous Week
';\n data.weekToWeek.prevSuggestions.forEach(function (suggestion) {\n //mutation is bad :(\n suggestion.fixedStartDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(suggestion.startDate, dateFormatType);\n suggestion.fixedEndDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(suggestion.endDate, dateFormatType);\n errorMsg += '';\n });\n errorMsg += '
';\n }\n\n if (data.weekToWeek.nextSuggestions.length) {\n errorMsg += '
';\n errorMsg += '
Try Next Week
';\n data.weekToWeek.nextSuggestions.forEach(function (suggestion) {\n //mutation is bad :(\n suggestion.fixedStartDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(suggestion.startDate, dateFormatType);\n suggestion.fixedEndDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(suggestion.endDate, dateFormatType);\n errorMsg += '';\n });\n errorMsg += '
';\n }\n\n errorMsg += '
';\n errorMsg += '
';\n } else if (data.minimumNightsStay && data.minimumNightsStay.hasProperties && data.minimumNightsStay.showMinNightsStayMessage !== false) {\n if (data.properties && data.properties.length) {\n errorMsg += '

Additional Properties Available

';\n }\n\n errorMsg += '
' + data.minimumNightsStay.messageText + '
';\n } // if error message exists, add it to the results\n\n\n if (errorMsg !== '') {\n if (addtPropAvailMsgLocation === 'top') {\n propertiesDiv.prepend('
' + errorMsg + '
');\n } else {\n propertiesDiv.append('
' + errorMsg + '
');\n }\n }\n\n try {\n setTimeout(function () {\n LIVEREZ.Publisher.publish(LIVEREZ.events.resultsRenderComplete);\n });\n } catch (error) {\n console.log(error);\n }\n\n callback(propertiesDiv);\n } // no data stored, go get some data\n else {\n SearchResults.searchRun();\n }\n };\n\n SearchResults.createMap = function (mapType) {\n var _this = this;\n\n var markers = this.cacheObj.mapData.markerObjs;\n $('.search-results-map-view-header-span').text('Viewing Map for ' + markers.length + ' Vacation Rentals');\n\n if (mapType === LIVEREZ.constants.MAP_TYPE.google) {\n var mapOptions = {\n zoom: 10,\n center: new google.maps.LatLng(markers[0].latitude, markers[0].longitude),\n styles: [{\n featureType: 'poi.business',\n elementType: 'labels',\n stylers: [{\n visibility: 'off'\n }]\n }]\n };\n var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);\n _this.cacheObj.mapData.instance = map; // create a single infowindow so that only 1 can be open at a time\n\n this.infowindow = new google.maps.InfoWindow();\n } else if (mapType === LIVEREZ.constants.MAP_TYPE.leaflet) {\n if (_this.cacheObj.mapData.instance) {\n _this.cacheObj.mapData.instance.off();\n\n _this.cacheObj.mapData.instance.remove();\n }\n\n var mapOptions = {\n scrollWheelZoom: false\n };\n var map = L.map('map_canvas', mapOptions);\n _this.cacheObj.mapData.instance = map; //delete all the current markers from the map before we proceed to create / add new ones\n\n _this.deleteAllMapMarkers(mapType);\n\n if (Array.isArray(markers) && markers.length) {\n map.setView([markers[0].latitude, markers[0].longitude], 10);\n } else {\n map.setView([43.68131, -116.362402], 10);\n }\n\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution: '© OpenStreetMap contributors'\n }).addTo(map);\n }\n\n this.createMapMarkers(map, markers, mapType);\n };\n\n SearchResults.deleteAllMapMarkers = function (mapType) {\n var _this = this;\n\n for (var i = 0; i < this.cacheObj.mapData.markersArr.length; i++) {\n if (mapType === LIVEREZ.constants.MAP_TYPE.google) {\n _this.cacheObj.mapData.markersArr[i].setMap(null);\n } else if (mapType === LIVEREZ.constants.MAP_TYPE.leaflet) {\n if (_this.cacheObj.mapData.instance) {\n _this.cacheObj.mapData.instance.removeLayer(_this.cacheObj.mapData.markersArr[i]);\n }\n }\n }\n\n this.cacheObj.mapData.markersArr.length = 0;\n };\n\n SearchResults.createMapMarkers = function (map, markers, mapType) {\n var _this = this;\n\n if (Array.isArray(markers) && markers.length) {\n if (mapType === LIVEREZ.constants.MAP_TYPE.google) {\n var bounds = new google.maps.LatLngBounds();\n markers.forEach(function (marker) {\n var infoWindowHTML = LIVEREZ.SearchResults.SearchResultsTemplateMapInfoWindow(marker);\n var markerLatLng = new google.maps.LatLng(marker.latitude, marker.longitude);\n var marker = new google.maps.Marker({\n position: markerLatLng,\n map: map,\n title: marker.pid\n }); // put the marker in an array so we can remove it from the map later if the results change\n\n _this.cacheObj.mapData.markersArr.push(marker);\n\n google.maps.event.addListener(marker, 'click', function () {\n _this.infowindow.setContent(infoWindowHTML);\n\n _this.infowindow.open(map, this);\n }); // extend the map bounds with this markers position\n\n bounds.extend(markerLatLng);\n }); // set the map to fit the bounds\n\n map.fitBounds(bounds);\n } else if (mapType === LIVEREZ.constants.MAP_TYPE.leaflet) {\n var featureGroup = L.featureGroup().addTo(map);\n markers.forEach(function (marker) {\n var infoWindowHTML = LIVEREZ.SearchResults.SearchResultsTemplateMapInfoWindow(marker);\n L.marker([marker.latitude, marker.longitude]).addTo(featureGroup).bindPopup(infoWindowHTML); // put the marker in an array so we can remove it from the map later if the results change\n\n _this.cacheObj.mapData.markersArr.push(marker);\n });\n featureGroup.addTo(map);\n map.fitBounds(featureGroup.getBounds());\n }\n }\n };\n\n SearchResults.openMap = function (mapType) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchMapOpen);\n this.cacheObj.mapData.isOpen = true;\n this.createMap(mapType);\n };\n\n SearchResults.closeMap = function () {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchMapClose);\n this.cacheObj.mapData.isOpen = false;\n };\n\n SearchResults.changeDates = function (startD, endD) {\n $('#txtStartDate').val(startD);\n $('#txtStartDate-mobile').val(startD);\n $('#AD').val(startD);\n $('#txtEndDate').val(endD);\n $('#txtEndDate-mobile').val(endD);\n $('#DD').val(endD);\n $('#FlexibleDatesThreshold').val('');\n window.scrollTo(0, 0); //$('.start-date').val(startD);\n //$('.end-date').val(endD);\n\n return this;\n };\n\n SearchResults.renderAmenities = function (amenities, cb) {\n var str = '';\n\n for (var key in amenities) {\n var list = amenities[key].filter(function (item) {\n return item.hasOwnProperty('count') && item.count > 0 || item.checked;\n });\n\n if (Array.isArray(list) && list.length) {\n list.forEach(function (amenity, i) {\n var item = $('
').addClass('search-amenities-item checkbox secondary-advanced-checkbox');\n var check = $('').attr('type', 'checkbox').attr('id', 'search-amenitiy-' + amenity.amenityID).attr('name', 'searchAmenities').attr('checked', amenity.checked).val(amenity.amenityID);\n var label = $('
 ';\n }\n\n html += '
' + calWeek + '' + content + '
' + defaults.templates.leftArrow + '' + defaults.templates.rightArrow + '
' + DPGlobal.headTemplate + '' + DPGlobal.footTemplate + '
' + '
' + '
' + '' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '
' + '
' + '
' + '' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '
' + '
' + '
' + '' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '
' + '
' + '
' + '' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '
' + '
' + '
';\n $.fn.datepicker.DPGlobal = DPGlobal;\n /* DATEPICKER NO CONFLICT\n * =================== */\n\n $.fn.datepicker.noConflict = function () {\n $.fn.datepicker = old;\n return this;\n };\n /* DATEPICKER VERSION\n * =================== */\n\n\n $.fn.datepicker.version = '1.7.1';\n\n $.fn.datepicker.deprecated = function (msg) {\n var console = window.console;\n\n if (console && console.warn) {\n console.warn('DEPRECATED: ' + msg);\n }\n };\n /* DATEPICKER DATA-API\n * ================== */\n\n\n $(document).on('focus.datepicker.data-api click.datepicker.data-api', '[data-provide=\"datepicker\"]', function (e) {\n var $this = $(this);\n if ($this.data('datepicker')) return;\n e.preventDefault(); // component click requires us to explicitly show it\n\n datepickerPlugin.call($this, 'show');\n });\n $(function () {\n datepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n });\n});\n/*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */\n\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return factory(root);\n });\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n module.exports = factory;\n } else {\n root.echo = factory(root);\n }\n})(window, function (root) {\n 'use strict';\n\n var echo = {};\n\n var callback = function callback() {};\n\n var offset, poll, delay, useDebounce, unload;\n\n var isHidden = function isHidden(element) {\n return element.offsetParent === null;\n };\n\n var inView = function inView(element, view) {\n if (isHidden(element)) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n return box.right >= view.l && box.bottom >= view.t && box.left <= view.r && box.top <= view.b;\n };\n\n var debounceOrThrottle = function debounceOrThrottle() {\n if (!useDebounce && !!poll) {\n return;\n }\n\n clearTimeout(poll);\n poll = setTimeout(function () {\n echo.render();\n poll = null;\n }, delay);\n };\n\n echo.init = function (opts) {\n opts = opts || {};\n var offsetAll = opts.offset || 0;\n var offsetVertical = opts.offsetVertical || offsetAll;\n var offsetHorizontal = opts.offsetHorizontal || offsetAll;\n\n var optionToInt = function optionToInt(opt, fallback) {\n return parseInt(opt || fallback, 10);\n };\n\n offset = {\n t: optionToInt(opts.offsetTop, offsetVertical),\n b: optionToInt(opts.offsetBottom, offsetVertical),\n l: optionToInt(opts.offsetLeft, offsetHorizontal),\n r: optionToInt(opts.offsetRight, offsetHorizontal)\n };\n delay = optionToInt(opts.throttle, 250);\n useDebounce = opts.debounce !== false;\n unload = !!opts.unload;\n callback = opts.callback || callback;\n echo.render();\n\n if (document.addEventListener) {\n root.addEventListener('scroll', debounceOrThrottle, false);\n root.addEventListener('load', debounceOrThrottle, false);\n } else {\n root.attachEvent('onscroll', debounceOrThrottle);\n root.attachEvent('onload', debounceOrThrottle);\n }\n };\n\n echo.render = function (context) {\n var nodes = (context || document).querySelectorAll('[data-echo], [data-echo-background]');\n var length = nodes.length;\n var src, elem;\n var view = {\n l: 0 - offset.l,\n t: 0 - offset.t,\n b: (root.innerHeight || document.documentElement.clientHeight) + offset.b,\n r: (root.innerWidth || document.documentElement.clientWidth) + offset.r\n };\n\n for (var i = 0; i < length; i++) {\n elem = nodes[i];\n\n if (inView(elem, view)) {\n if (unload) {\n elem.setAttribute('data-echo-placeholder', elem.src);\n }\n\n if (elem.getAttribute('data-echo-background') !== null) {\n elem.style.backgroundImage = 'url(' + elem.getAttribute('data-echo-background') + ')';\n } else if (elem.src !== (src = elem.getAttribute('data-echo'))) {\n elem.src = src;\n }\n\n if (!unload) {\n elem.removeAttribute('data-echo');\n elem.removeAttribute('data-echo-background');\n }\n\n callback(elem, 'load');\n } else if (unload && !!(src = elem.getAttribute('data-echo-placeholder'))) {\n if (elem.getAttribute('data-echo-background') !== null) {\n elem.style.backgroundImage = 'url(' + src + ')';\n } else {\n elem.src = src;\n }\n\n elem.removeAttribute('data-echo-placeholder');\n callback(elem, 'unload');\n }\n }\n\n if (!length) {\n echo.detach();\n }\n };\n\n echo.detach = function () {\n if (document.removeEventListener) {\n root.removeEventListener('scroll', debounceOrThrottle);\n } else {\n root.detachEvent('onscroll', debounceOrThrottle);\n }\n\n clearTimeout(poll);\n };\n\n return echo;\n});\n\n(function (LIVEREZ, window, $, undefined) {\n var StripCalendar = function StripCalendar(starDate, endDate, datesArr) {\n var self = this;\n this.startDate = new Date(starDate);\n this.endDate = new Date(endDate);\n this.numberOfDays = getDateDiff(self.startDate, self.endDate);\n this.data = datesArr;\n this.startingMonth = this.startDate.getMonth();\n this.stoppingMonth = this.endDate.getMonth();\n this.displayDates = getDates(self.startDate, self.endDate);\n };\n\n var _isLeapYear = function _isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n };\n\n var _getDaysInMonth = function _getDaysInMonth(year, month) {\n return [31, _isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n };\n\n var _dates = {\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n daysSuperShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n };\n\n StripCalendar.prototype.generateHtml = function (callback) {\n var container = $('
').addClass('table-responsive');\n var table = $('').addClass('lr-strip-calendar');\n\n var _daysInEachMonth = getDaysInEachMonth(this.displayDates);\n\n var headingRow = $('').addClass('lr-strip-calendar--heading-row');\n var weekdayRow = $('').addClass('lr-strip-calendar--weekday-row');\n var dateRow = $('').addClass('lr-strip-calendar--date-row'); // add months to heading row\n\n for (var key in _daysInEachMonth) {\n var monthIndex = key.split('_')[1];\n var month = $('
').text(_dates.monthsShort[monthIndex]).attr('colspan', _daysInEachMonth[key]);\n headingRow.append(month);\n } // add days to the date row\n\n\n this.displayDates.forEach(function (item) {\n var weekday = $('').text(_dates.daysSuperShort[item.getDay()]);\n weekday.addClass('lr-strip-calendar--weekday');\n weekdayRow.append(weekday);\n var day = $('').text(item.getDate());\n day.addClass('lr-strip-calendar--day ' + formatDate(item));\n dateRow.append(day);\n }); // paint the days with the correct classes\n\n this.data.forEach(function (calendarDay) {\n var current = dateRow.children('.' + formatDate(calendarDay.date));\n\n if (calendarDay.checkIn) {\n current.addClass('checkin');\n }\n\n if (calendarDay.checkOut) {\n current.addClass('checkout');\n }\n\n if (calendarDay.occupied) {\n current.addClass('occupied');\n }\n });\n table.append(headingRow);\n table.append(weekdayRow);\n table.append(dateRow);\n container.append(table);\n callback(container.html());\n };\n\n return LIVEREZ.StripCalendar = StripCalendar;\n\n function formatDate(date) {\n return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();\n }\n\n function getDateDiff(date1, date2) {\n return Math.abs((date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24));\n }\n\n function getDates(d1, d2) {\n var dates = [];\n var currentDate = new Date(d1);\n var endDate = new Date(d2);\n\n while (currentDate <= endDate) {\n dates.push(new Date(currentDate));\n currentDate.setDate(currentDate.getDate() + 1);\n }\n\n return dates;\n }\n\n function getDaysInEachMonth(datesArr) {\n var obj = {};\n datesArr.forEach(function (item) {\n var _month = item.getMonth();\n\n var _year = item.getFullYear();\n\n var key = _year + '_' + _month;\n\n if (!obj.hasOwnProperty(key)) {\n obj[key] = 1;\n } else {\n obj[key] = obj[key] + 1;\n }\n });\n return obj;\n }\n})(window.LIVEREZ = window.LIVEREZ || {}, window, lrjQ);","(function(LIVEREZ, window, $, undefined) {\n var CALENDAR_DAY_TYPES = {\n Available: 0,\n Unavailable: 1,\n CheckIn: 2,\n CheckOut: 3,\n EarlyCheckIn: 4,\n LateCheckOut: 5,\n EarlyCheckInLateCheckOut: 6,\n SingleNightRental: 7,\n TurnOver: 8,\n TurnOverEarlyCheckIn: 9,\n TurnOverLateCheckOut: 10,\n };\n\n var CalendarAvailability = function(dynsiteId, adminCustDataID, pageDataId) {\n this.dynsiteId = dynsiteId;\n this.adminCustDataId = adminCustDataID;\n this.pageDataId = pageDataId;\n\n this.unavailableTypes = [\n CALENDAR_DAY_TYPES.Unavailable,\n CALENDAR_DAY_TYPES.EarlyCheckIn,\n CALENDAR_DAY_TYPES.LateCheckOut,\n CALENDAR_DAY_TYPES.EarlyCheckInLateCheckOut,\n CALENDAR_DAY_TYPES.SingleNightRental,\n CALENDAR_DAY_TYPES.TurnOver,\n CALENDAR_DAY_TYPES.TurnOverEarlyCheckIn,\n CALENDAR_DAY_TYPES.TurnOverLateCheckOut,\n ];\n\n this.unavailableDateObjs = [];\n this.unavailableDateObjsMobile = [];\n this.queriedYears = [];\n };\n\n CalendarAvailability.prototype.getCalendarData = function(startDate, endDate, callback) {\n var _this = this;\n\n if (_this.xhr && _this.xhr.readystate != 4) {\n _this.xhr.abort();\n _this.xhr = null;\n }\n\n this.queriedYears.push(new Date(startDate).getFullYear());\n\n _this.xhr = $.ajax({\n type: 'get',\n url:\n LIVEREZ.DynsiteFunctions.getServerName() +\n '/inc/api/webservices.aspx?method=propertycalendardata',\n data: {\n AdminCustDataID: _this.adminCustDataId,\n DynSiteID: _this.dynsiteId,\n PageDataID: _this.pageDataId,\n ad: startDate,\n dd: endDate,\n },\n dataType: 'json',\n success: function(data) {\n try {\n // var offsetHours = ((+(new Date().getTimezoneOffset()) / 60 ) * - 1);\n\n var addHours = function(d, h) {\n d.setTime(d.getTime() + h * 60 * 60 * 1000);\n return d;\n };\n\n data.forEach(function(dateObj) {\n var _type = +dateObj.calendarDayTypes;\n\n if (\n _this.unavailableTypes.indexOf(_type) > -1 ||\n (_type === CALENDAR_DAY_TYPES.CheckIn && +dateObj.earlyCheckIn === 1) ||\n (_type === CALENDAR_DAY_TYPES.CheckOut && +dateObj.lateCheckOut === 1)\n ) {\n // dont add early check in or late check out to disavled days if settings allow for turnovers on these\n if (\n (_type === CALENDAR_DAY_TYPES.EarlyCheckIn && searchAllowForEarlyCheckIn === 1) ||\n (_type === CALENDAR_DAY_TYPES.LateCheckOut && searchAllowForLateCheckOut === 1)\n ) {\n return;\n }\n\n // var uDate = new Date(new Date(dateObj.startDate.split('T')[0].replace(/-/g, '\\/')).setHours(0,0,0,0));\n // var uDate = new Date(dateObj.startDate.split('T')[0].replace(/-/g, '\\/'));\n // var uDateMobile = new Date(dateObj.startDate.split('T')[0].replace(/-/g, '\\/'));\n // var uDateOffset = offsetHours;\n\n // // console.log('=============== ' + dateObj.startDateString + ' ================');\n // // console.log('uDate before', uDate);\n // // console.log('offset hours', offsetHours);\n // // console.log('uDateOffset hours', uDateOffset);\n // // console.log('isDST', isDST(uDate));\n\n // if(isDST(uDate)){\n // \tuDateOffset = uDateOffset + 1\n // }\n\n // // console.log('uDateOffset hours', uDateOffset);\n\n // uDate = addHours(uDate, uDateOffset);\n\n // // console.log('uDate after', uDate);\n\n // _this.unavailableDateObjs.push(uDate);\n // _this.unavailableDateObjsMobile.push(uDateMobile);\n\n // var formatted8601 = LIVEREZ.DynsiteFunctions.dateStringToISO8601(dateObj.startDateString);\n var formattedDateObj = LIVEREZ.DynsiteFunctions.dateStringToObject(\n dateObj.startDateString\n );\n\n if (dateFormatType === 1) {\n dateObj.startDateString = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n dateObj.startDateString,\n dateFormatType\n );\n }\n\n _this.unavailableDateObjs.push(dateObj.startDateString);\n _this.unavailableDateObjsMobile.push(formattedDateObj);\n }\n });\n\n _this.unavailableDateObjs = _this.unavailableDateObjs.filter(function(\n element,\n index,\n array\n ) {\n return array.indexOf(element) >= index;\n });\n\n _this.unavailableDateObjsMobile = _this.unavailableDateObjsMobile.filter(function(\n element,\n index,\n array\n ) {\n return array.indexOf(element) >= index;\n });\n\n callback();\n } catch (ex) {\n console.error(ex);\n callback();\n }\n },\n error: function(data, status, error) {\n $('.datepicker-overlay').remove();\n\n console.log(data);\n console.log(status);\n console.log(error);\n },\n });\n };\n\n // function isDST(t) { //t is the date object to check, returns true if daylight saving time is in effect.\n // \tvar jan = new Date(t.getFullYear(),0,1);\n // \tvar jul = new Date(t.getFullYear(),6,1);\n // \treturn Math.min(jan.getTimezoneOffset(),jul.getTimezoneOffset()) == t.getTimezoneOffset();\n // }\n\n CalendarAvailability.prototype.findDateConflicts = function(start, end) {\n var error = false;\n\n var start = new Date(LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(start, dateFormatType));\n var end = new Date(LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(end, dateFormatType));\n\n for (var i = 0; i < this.unavailableDateObjs.length; i++) {\n var tmpDate = this.unavailableDateObjs[i];\n if (tmpDate >= start && tmpDate <= end) {\n error = true;\n }\n }\n\n return error;\n };\n\n LIVEREZ.CalendarAvailability = CalendarAvailability;\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","(function(LIVEREZ, window) {\n LIVEREZ.constants = {\n MAP_TYPE: {\n google: 1,\n leaflet: 2,\n },\n };\n})((window.LIVEREZ = window.LIVEREZ || {}), this);\n","/*\n * @author Joshua Hurst\n * @date 5/27/2014\n *\n * @description A set of functions to be used with LiveRez Dynsites\n */\n\n(function(LIVEREZ, window, $, undefined) {\n var DynsiteFunctions = {};\n\n DynsiteFunctions.PopUp = function(URL, Window, w, h, x, y) {\n var popupwin = window.open(\n URL,\n Window,\n 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' +\n w +\n ',height=' +\n h +\n ',left=' +\n x +\n ',top=' +\n y\n );\n };\n\n DynsiteFunctions.socialSharePage = function(socialType, image, headline) {\n var url;\n var page = encodeURIComponent(window.location.href).toString();\n image = encodeURIComponent(image);\n headline = encodeURIComponent(headline);\n\n switch (socialType) {\n case 'facebook':\n url = 'https://www.facebook.com/sharer.php?u=' + page;\n break;\n\n case 'twitter':\n url =\n 'https://twitter.com/intent/tweet?source=tweetbutton&text=' + headline + '&url=' + page;\n break;\n\n case 'pinterest':\n url =\n 'https://www.pinterest.com/pin/create/button/?url=' +\n page +\n '&media=' +\n image +\n '&description=' +\n headline;\n break;\n\n case 'googlePlus':\n url = 'https://plus.google.com/share?url=' + page;\n break;\n }\n\n this.PopUp(url, window, 400, 350);\n };\n\n DynsiteFunctions.isEmailAddr = function(email) {\n var result = false;\n var theStr = new String(email);\n var index = theStr.indexOf('@');\n if (index > 0) {\n var pindex = theStr.indexOf('.', index);\n if (pindex > index + 1 && theStr.length > pindex + 1) result = true;\n }\n return result;\n };\n\n DynsiteFunctions.validRequired = function(formField, fieldLabel) {\n var result = true;\n if (formField.value == '') {\n alert('Please enter a value for the \"' + fieldLabel + '\" field.');\n formField.focus();\n result = false;\n }\n return result;\n };\n\n DynsiteFunctions.allDigits = function(str) {\n return this.inValidCharSet(str, '0123456789');\n };\n\n DynsiteFunctions.inValidCharSet = function(str, charset) {\n var result = true;\n // Doesn't use regular expressions to avoid early Mac browser bugs\n for (var i = 0; i < str.length; i++) {\n if (charset.indexOf(str.substr(i, 1)) < 0) {\n result = false;\n break;\n }\n }\n return result;\n };\n\n DynsiteFunctions.validEmail = function(formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n if (result && (formField.value.length < 3 || !this.isEmailAddr(formField.value))) {\n alert('Please enter a complete email address in the form: yourname@yourdomain.com');\n formField.focus();\n result = false;\n }\n return result;\n };\n\n DynsiteFunctions.validNum = function(formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n if (result) {\n if (!this.allDigits(formField.value)) {\n alert('Please enter a number for the \"' + fieldLabel + '\" field.');\n formField.focus();\n result = false;\n }\n }\n return result;\n };\n\n DynsiteFunctions.validInt = function(formField, fieldLabel, required) {\n var result = true;\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n if (result) {\n var num = parseInt(formField.value, 10);\n if (isNaN(num)) {\n alert('Please enter a number for the \"' + fieldLabel + '\" field.');\n formField.focus();\n result = false;\n }\n }\n return result;\n };\n\n DynsiteFunctions.validDate = function(formField, fieldLabel, required) {\n var result = true;\n\n if (required && !this.validRequired(formField, fieldLabel)) result = false;\n if (result) {\n var elems = formField.value.split('/');\n result = elems.length == 3; // should be three components\n if (result) {\n var month = parseInt(elems[0], 10);\n var day = parseInt(elems[1], 10);\n var year = parseInt(elems[2], 10);\n result =\n allDigits(elems[0]) &&\n month > 0 &&\n month < 13 &&\n allDigits(elems[1]) &&\n day > 0 &&\n day < 32 &&\n allDigits(elems[2]) &&\n (elems[2].length == 2 || elems[2].length == 4);\n }\n if (!result) {\n alert('Please enter a date in the format MM/DD/YYYY for the \"' + fieldLabel + '\" field.');\n formField.focus();\n }\n }\n return result;\n };\n\n DynsiteFunctions.getServerName = function() {\n if (!window.location.origin) {\n return (\n window.location.protocol +\n '//' +\n window.location.hostname +\n (window.location.port ? ':' + window.location.port : '')\n );\n } else {\n return window.location.origin;\n }\n };\n\n DynsiteFunctions.goPropertyByElem = function(selectObj) {\n var val = selectObj.options[selectObj.selectedIndex].value;\n if (val != '') {\n window.parent.location.href = val;\n }\n };\n\n DynsiteFunctions.goPropertyByID = function(PageDataID) {\n if (PageDataID) {\n window.parent.location.href = '/vacation-rental-home.asp?PageDataID=' + PageDataID;\n }\n };\n\n DynsiteFunctions.sendtofriend = function(PageDataID) {\n window.parent.location.href = '/vacation-rental-home-stf.asp?PageDataID=' + PageDataID;\n };\n\n DynsiteFunctions.propertycontact = function(PageDataID, AD, DD) {\n window.parent.location.href =\n '/vacation-rental-home-contact.asp?PageDataID=' + PageDataID + '&ad=' + AD + '&dd=' + DD;\n };\n\n DynsiteFunctions.viewproperty = function(strPageDataID, strUnitID) {\n var formObj = document.viewproperty;\n formObj.action = '/vacation-rental-home.asp?PageDataID=' + strPageDataID;\n formObj.PageDataID.value = strPageDataID;\n formObj.WebReferencePageDataID.value = strPageDataID;\n formObj.InventoryUnitDataID.value = strUnitID;\n formObj.submit();\n };\n\n DynsiteFunctions.debounce = function(func, wait, immediate) {\n var timeout;\n return function() {\n var context = this,\n args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n };\n\n DynsiteFunctions.DateShort = function(DateStr, delimeter) {\n var tmpDate = new Date(DateStr);\n (delimeter = delimeter || '/'),\n (tmpDate =\n tmpDate.getMonth() + 1 + delimeter + tmpDate.getDate() + delimeter + tmpDate.getFullYear());\n return tmpDate;\n };\n\n DynsiteFunctions.DateNatural = (d, includeYear = true) => {\n if (typeof d === 'string') {\n if (d.indexOf('-') > 0) {\n d = new Date(d);\n d.setHours(d.getHours() + new Date().getTimezoneOffset() / 60);\n } else {\n d = new Date(d);\n }\n }\n\n var MONTH_NAMES = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ];\n var DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n function nth(d) {\n if (d > 3 && d < 21) return 'th'; // thanks kennebec\n switch (d % 10) {\n case 1:\n return 'st';\n case 2:\n return 'nd';\n case 3:\n return 'rd';\n default:\n return 'th';\n }\n }\n\n let final =\n DAY_NAMES[d.getDay()] +\n ' ' +\n MONTH_NAMES[d.getMonth()] +\n ' ' +\n d.getDate() +\n nth(d.getDate());\n\n if (includeYear) {\n final += ', ' + d.getFullYear();\n }\n\n return final;\n };\n\n /***** NAVIS 800 Number and Keyword Tracking *****/\n DynsiteFunctions.handleNavisCookies = function(NavisKeyword, NavisPhone) {\n if (NavisKeyword !== '' && NavisPhone !== '') {\n LIVEREZ.Storage.set(DYN_SITE_ID + 'navis800Num', NavisPhone);\n LIVEREZ.Storage.set(DYN_SITE_ID + 'NavisHiddenKeywordVal', NavisKeyword);\n this.fix800NumberForNavis();\n }\n\n if (LIVEREZ.Storage.get(DYN_SITE_ID + 'navis800Num')) {\n this.fix800NumberForNavis();\n }\n };\n\n DynsiteFunctions.fix800NumberForNavis = function() {\n // get the cookies\n var NavisHiddenPhoneVal = LIVEREZ.Storage.get(DYN_SITE_ID + 'navis800Num');\n var NavisHiddenKeywordVal = LIVEREZ.Storage.get(DYN_SITE_ID + 'NavisHiddenKeywordVal');\n\n // insert phone number into holder span\n $('.phone-link').attr('href', 'tel: ' + NavisHiddenPhoneVal);\n $('.800PhoneHolder').text(NavisHiddenPhoneVal);\n\n var NavisHiddenKeyword = $('#NavisHiddenKeyword');\n if (NavisHiddenKeywordVal && NavisHiddenKeyword) {\n NavisHiddenKeyword.val(NavisHiddenKeywordVal);\n }\n\n var NavisHiddenPhone = $('#NavisCode');\n if (NavisHiddenPhone && NavisHiddenPhoneVal) {\n NavisHiddenPhone.val(NavisHiddenPhoneVal);\n }\n };\n /***** END NAVIS 800 Number and Keyword Tracking *****/\n\n /***** CRM PLUS LEAD Tracking ************************/\n DynsiteFunctions.handleCRMPlusCookies = function(LeadID) {\n if (LIVEREZ.Storage.get(DYN_SITE_ID + 'LeadID')) {\n this.insertLeadCookie();\n } else {\n if (LeadID !== '') {\n LIVEREZ.Storage.set(DYN_SITE_ID + 'LeadID', LeadID);\n this.insertLeadCookie();\n }\n }\n };\n\n DynsiteFunctions.insertLeadCookie = function() {\n var leadCookie = LIVEREZ.Storage.get(DYN_SITE_ID + 'LeadID');\n var leadIDInput = $('.hiddenLeadID');\n if (leadCookie && leadIDInput) {\n leadIDInput.val(leadCookie);\n }\n };\n /***** END CRM PLUS LEAD Tracking *******************/\n\n DynsiteFunctions.trimDate = function(strDate) {\n if (strDate && typeof strDate === 'string') {\n strDate = strDate.replace(/^0+/, '');\n strDate = strDate.replace(/\\/0/, '/');\n }\n\n return strDate;\n };\n\n DynsiteFunctions.fixEuroDatesForAPI = function(strDate, dateFormat) {\n if (dateFormat === 1) {\n var parts = strDate.split('/');\n return parts[1] + '/' + parts[0] + '/' + parts[2];\n } else {\n return strDate;\n }\n };\n\n DynsiteFunctions.dateStringToISO8601 = function(dateString) {\n var myDate = dateString.split('/');\n var returnDate = [myDate[2], myDate[0], myDate[1]].join('-');\n return returnDate;\n };\n\n DynsiteFunctions.dateObjectToString = function(dateObj) {\n return dateObj.getMonth() + 1 + '/' + dateObj.getDate() + '/' + dateObj.getFullYear();\n };\n\n DynsiteFunctions.dateStringToObject = function(dateStr) {\n var year, month, day;\n if (dateStr.indexOf('-') > -1) {\n var parts = dateStr.split('-');\n if (parts[0].length === 4) {\n year = parts[0];\n month = parts[1];\n day = parts[2];\n } else {\n year = parts[2];\n month = parts[0];\n day = parts[1];\n }\n } else {\n var parts = dateStr.split('/');\n year = parts[2];\n month = parts[0];\n day = parts[1];\n }\n\n return new Date(year, month - 1, day);\n };\n\n DynsiteFunctions.truncate = function(string, length, elipsisBool) {\n var _str = string.substring(0, length);\n if (string.length > length && elipsisBool) {\n _str += '...';\n }\n return _str;\n };\n\n DynsiteFunctions.daydiff = function(first, second) {\n return (second - first) / (1000 * 60 * 60 * 24);\n };\n\n DynsiteFunctions.checkValidStartEndDates = function(date1, date2) {\n var now = new Date().setHours(0, 0, 0, 0);\n date1 = new Date(date1).setHours(0, 0, 0, 0);\n date2 = new Date(date2).setHours(0, 0, 0, 0);\n\n var numSearchedDay = this.daydiff(date1, date2);\n var maxDays = maxWebRentalDays || 365;\n\n if (date1 === date2) {\n return 'Arrival and Departure dates cannot be the same.';\n }\n\n if (now > date1) {\n return 'Arrival date must be in the future.';\n }\n\n if (now > date2) {\n return 'Departure date must be in the future.';\n }\n\n if (date2 <= date1) {\n return 'Departure date must come after arrival date.';\n }\n\n if (numSearchedDay > maxDays) {\n return (\n 'Travel Dates cannot span more than ' +\n maxDays +\n ' days. Please contact us for additional booking options.'\n );\n }\n };\n\n DynsiteFunctions.isMobileDevice = function() {\n var check = false;\n (function(a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n };\n\n DynsiteFunctions.checkForEmailElementToHide = function() {\n var div = document.getElementById('email-div');\n if (div) {\n div.style.display = 'none';\n }\n };\n\n DynsiteFunctions.fixTextForDisplay = function(strText) {\n if (strText) {\n strText = strText.replace(/`/g, \"'\");\n }\n\n return strText;\n };\n\n LIVEREZ.DynsiteFunctions = DynsiteFunctions;\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n\n$(window).on('load', function() {\n // check for inputs to hide on load\n LIVEREZ.DynsiteFunctions.checkForEmailElementToHide();\n});\n","(function(LIVEREZ, window, $) {\n LIVEREZ.events = {\n searchCreateMapImage: 'search-map-image',\n searchMapOpen: 'search-map-open',\n searchMapClose: 'search-map-close',\n searchStart: 'search-start',\n searchComplete: 'search-complete',\n resultsRenderComplete: 'results-render-complete',\n instantQuoteFinished: 'instant-quote-finished',\n calDataFinished: 'cal-data-finished',\n searchSuggestionsStart: 'search-suggesttions-start',\n searchSuggestionsComplete: 'search-suggesttions-complete',\n calendarSearchStart: 'calendar-search-start',\n calendarSearchComplete: 'calendar-search-complete',\n calendarSearchRenderComplete: 'calendar-search-render-complete',\n propertyDateRangeStart: 'property-date-range-start',\n propertyDateRangeComplete: 'property-date-range-complete',\n propertyDateRangeError: 'property-date-range-error',\n propertyDateRangeSuccess: 'property-date-range-success',\n };\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","(function(NAMESPACE, window, $) {\n try {\n $(window.document).ready(function() {\n if (LR_ENV === 'PROD' && window.ga && window.ga.loaded) {\n const page = window.location.pathname;\n\n const $propertyBookItNowButton = $(\n 'div.property-instant-quote-action > a.property-instant-quote-button-book'\n );\n const $propertySidebarContactManagerButton = $(\n '#content2Left > div.row.property-side-contact-manager > div > a'\n );\n const $propertySendToFriendLink = $('a.property-send-to-friend-link');\n const $propertyCommunityLearnMoreLink = $('a.property-community-learn-more-link');\n const $propertyChangeDatesLink = $(\n '#propertyInstantQuote > div.panel-footer > a.property-instant-quote-change-dates'\n );\n const $propertyReviewWidgetReviewsAnchor = $(\n '#property-rating-panel > div > div.lr-info-block-property-rating-property-panel > div.lr-info-block-property-rating-show-reviews > a'\n );\n const $propertyAllPhotosButton = $(\n '#Photos > div.row > div > ul > li > a[data-target=\"#propGalleryModal\"]'\n );\n const $propertyFullScreen = $(\n '#photo-gallery > div.rsOverflow > div.rsFullscreenBtn > div'\n );\n const $propertyShowAllAmenitiesExpand = $('.standard-amenities-section--show-more > a');\n const $searchComparePropertiesButton = $('.search-compare-button');\n const $searchViewMoreCalendars = $('.search-results-calendar-suggestions--view-more');\n const $searchChangeDatesButton = $('.search-update-dates');\n\n if ($propertyBookItNowButton.length) {\n $propertyBookItNowButton.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Book It Now Button');\n });\n }\n\n if ($propertySidebarContactManagerButton.length) {\n $propertySidebarContactManagerButton.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Sidebar Contact Manager Button');\n });\n }\n\n if ($propertySendToFriendLink.length) {\n $propertySendToFriendLink.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Send to Friend Link');\n });\n }\n\n if ($propertyCommunityLearnMoreLink.length) {\n $propertyCommunityLearnMoreLink.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Community Learn More Link');\n });\n }\n\n if ($propertyChangeDatesLink.length) {\n $propertyChangeDatesLink.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Change Dates Link');\n });\n }\n\n if ($propertyReviewWidgetReviewsAnchor.length) {\n $propertyReviewWidgetReviewsAnchor.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Reviews Widget Review Anchor');\n });\n }\n\n if ($propertyAllPhotosButton.length) {\n $propertyAllPhotosButton.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'All Photos Button');\n });\n }\n\n if ($propertyFullScreen.length) {\n $propertyFullScreen.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Slideshow Fullscreen Button');\n });\n }\n\n if ($searchComparePropertiesButton.length) {\n $searchComparePropertiesButton.on('click', function() {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Compare Properties Button');\n });\n }\n\n if ($searchViewMoreCalendars.length) {\n $searchViewMoreCalendars.on('click', function() {\n ga('lrTracker.send', 'event', 'Search', 'click', 'View More Property Calendars button');\n });\n }\n\n if ($propertyShowAllAmenitiesExpand.length) {\n $propertyShowAllAmenitiesExpand.on('click', function() {\n ga('lrTracker.send', 'event', 'Property', 'click', 'Show All Amenities Expand Link');\n });\n }\n\n // search page\n if (page === 'vacation-rentals-homes-search.asp') {\n $searchComparePropertiesButton.on('click', function() {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Compare Properties Button');\n });\n\n $searchViewMoreCalendars.on('click', function() {\n ga('lrTracker.send', 'event', 'Search', 'click', 'View More Property Calendars button');\n });\n\n $searchChangeDatesButton.on('click', function() {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Change Dates button');\n });\n\n $(document).on('click', '.search-pagination a', function(e) {\n ga('lrTracker.send', 'event', 'Search', 'click', 'Paging Anchor', $(this).data('page'));\n });\n }\n }\n });\n } catch (error) {\n console.error(error);\n }\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","if (!Array.prototype.filter) {\n Array.prototype.filter = function(fun /*, thisArg*/) {\n 'use strict';\n\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n}\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function(callback, thisArg) {\n var T, k;\n\n if (this == null) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this| value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with argument Pk.\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n}\n\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function(searchElement, fromIndex) {\n if (this === undefined || this === null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var length = this.length >>> 0; // Hack to convert object.length to a UInt32\n\n fromIndex = +fromIndex || 0;\n\n if (Math.abs(fromIndex) === Infinity) {\n fromIndex = 0;\n }\n\n if (fromIndex < 0) {\n fromIndex += length;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n }\n\n for (; fromIndex < length; fromIndex++) {\n if (this[fromIndex] === searchElement) {\n return fromIndex;\n }\n }\n\n return -1;\n };\n}\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5 internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(\n this instanceof fNOP && oThis ? this : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments))\n );\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n","/*\n * @author Joshua Hurst\n * @date 6/19/2015\n *\n * @description A Vanilla JS Wrapper for Local Storage\n */\n\n(function(LIVEREZ, window, $, undefined) {\n 'use strict';\n\n var LocalStorage = {};\n\n // test if local storage is supported\n LocalStorage.localStoreSupport = function() {\n try {\n localStorage.setItem('localstoragesupporttest', 1);\n localStorage.removeItem('localstoragesupporttest');\n return 'localStorage' in window && window['localStorage'];\n } catch (e) {\n return false;\n }\n };\n\n // save the data\n LocalStorage.set = function(key, value, days) {\n value = JSON.stringify(value);\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n var expires = '; expires=' + date.toGMTString();\n } else {\n var expires = '';\n }\n\n if (this.localStoreSupport()) {\n localStorage.setItem(key, value);\n } else {\n document.cookie = key + '=' + value + expires + '; path=/';\n }\n };\n\n // retrieve the stored data by key if it exists\n LocalStorage.get = function(key) {\n if (this.localStoreSupport()) {\n if (this.exists(key)) {\n return JSON.parse(localStorage.getItem(key));\n }\n } else {\n var nameEQ = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return JSON.parse(c.substring(nameEQ.length, c.length));\n }\n return null;\n }\n };\n\n // remove stored data by key if it exists\n LocalStorage.remove = function(key) {\n if (this.localStoreSupport()) {\n if (this.exists(key)) {\n localStorage.removeItem(key);\n }\n } else {\n this.set(key, '', -1);\n }\n };\n\n LocalStorage.exists = function(key) {\n return localStorage.getItem(key) !== null;\n };\n\n LIVEREZ.Storage = LocalStorage;\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","/*\n * @author Joshua Hurst & Frank Linehan\n * @date 6/16/2015\n *\n * @description A Pub/Sub Pattern Module for Handling JS Events\n */\n\n(function(LIVEREZ, window, $, undefined) {\n var pubsub = {};\n var topics = {};\n\n // An topic identifier\n var subUid = -1;\n\n pubsub.publish = function(topic, args) {\n if (!topics[topic]) {\n return false;\n }\n\n var subscribers = topics[topic],\n len = subscribers ? subscribers.length : 0;\n\n while (len--) {\n subscribers[len].func(topic, args);\n }\n\n return this;\n };\n\n pubsub.subscribe = function(topic, func) {\n if (!topics[topic]) {\n topics[topic] = [];\n }\n\n var token = (++subUid).toString();\n topics[topic].push({\n token: token,\n func: func,\n });\n return token;\n };\n\n pubsub.unsubscribe = function(token) {\n for (var m in topics) {\n if (topics[m]) {\n for (var i = 0, j = topics[m].length; i < j; i++) {\n if (topics[m][i].token === token) {\n topics[m].splice(i, 1);\n return token;\n }\n }\n }\n }\n return this;\n };\n\n LIVEREZ.Publisher = pubsub;\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","/* =========================================================\n * lr.typeahead.js\n * Repo: http://stash.liverez.com:7990/scm/bow/lr.typeahead.git\n * =========================================================\n * Authored by LIVEREZ.COM\n * Contributors: Joshua Hurst, Frank Linehan, Jeremy Lotz\n * ========================================================= */\n\n(function($, undefined) {\n 'use strict';\n\n var _timeout;\n\n var DEFAULTS = {\n timeoutLength: 500,\n dataSource: function(callback, query) {\n var _sendData = {\n q: encodeURIComponent(query),\n };\n\n $.ajax({\n type: 'GET',\n url: 'data/properties.json',\n data: _sendData,\n dataType: 'json',\n success: function(data) {\n callback(null, data);\n },\n error: function(data, status, error) {\n callback({\n data: data,\n status: status,\n error: error,\n });\n },\n });\n },\n onNewData: function(data) {\n console.log(data);\n },\n };\n\n // the actual plugin\n var Plugin = function(option) {\n return this.each(function() {\n var $this = $(this);\n var options = typeof option == 'object' && option;\n\n options = $.extend(DEFAULTS, options);\n\n new Typeahead($this, options);\n });\n };\n\n // the constructor\n var Typeahead = function(element, options) {\n var _this = this;\n\n this.element = element;\n this.options = options;\n this.init(this.element, this.options);\n };\n\n Typeahead.prototype.init = function(element, options) {\n var _this = this;\n\n var wrapperDiv = $('
')\n .css({\n position: 'relative',\n width: this.element.width() + 2,\n })\n .addClass('lr-typeahead-wrapper');\n\n var typeaheadDiv = $('
');\n\n typeaheadDiv\n .css({\n position: 'absolute',\n top: this.element.outerHeight(),\n left: '0',\n width: '100%',\n display: 'none',\n border: '1px solid #ccc',\n 'border-top': 'none',\n background: 'white',\n color: '#444',\n 'max-height': '50vh',\n 'overflow-y': 'scroll',\n })\n .html('Loading Data...')\n .addClass('lr-typeahead');\n\n this.element.wrap(wrapperDiv);\n this.element.after(typeaheadDiv);\n\n element.on('keydown', function() {\n _this.open('keydown', typeaheadDiv, _this.element);\n });\n\n element.on('keyup', function() {\n if (_this.element.val()) {\n if (_timeout) {\n clearTimeout(_timeout);\n }\n\n _timeout = setTimeout(function() {\n _this.getData('keyup', function(error, data) {\n if (error) {\n typeaheadDiv.html('No Results');\n } else {\n _this.insertTypeAheadData(typeaheadDiv, data);\n }\n });\n }, _this.options.timeoutLength);\n } else {\n _this.close('keyup', typeaheadDiv);\n }\n });\n };\n\n Typeahead.prototype.open = function(type, typeaheadelem, element) {\n var domTypeAheadElem = typeaheadelem.get(0);\n\n typeaheadelem.html('Loading Data...');\n\n if (domTypeAheadElem.style.display === 'none') {\n $('body').on('click', function(e) {\n if (!typeaheadelem.is(e.target) && typeaheadelem.has(e.target).length === 0) {\n domTypeAheadElem.style.display = 'none';\n element.val('');\n }\n $('body').off('click');\n });\n\n domTypeAheadElem.style.display = 'block';\n }\n };\n\n Typeahead.prototype.close = function(type, typeaheadelem) {\n var _this = this;\n\n var domTypeAheadElem = typeaheadelem.get(0);\n\n if (domTypeAheadElem.style.display === 'block') {\n domTypeAheadElem.style.display = 'none';\n }\n\n return this;\n };\n\n Typeahead.prototype.insertTypeAheadData = function(typeaheadelem, data) {\n var _this = this;\n\n typeaheadelem.empty();\n typeaheadelem.append(_this.options.onNewData(data));\n\n return this;\n };\n\n Typeahead.prototype.getData = function(type, callback) {\n var _this = this;\n _this.options.dataSource(callback, _this.element.val());\n\n return this;\n };\n\n var old = $.fn.lrtypeahead;\n\n $.fn.lrtypeahead = Plugin;\n $.fn.lrtypeahead.Constructor = Typeahead;\n})(lrjQ);\n","(function(LIVEREZ, window, $) {\n $(document).ready(function() {\n /****************** secondary search box desktop date pickers ******************/\n var nowTemp = new Date();\n var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);\n\n $('.datepicker-range')\n .datepicker({\n beforeShowDay: function(date) {\n return date.valueOf() < now.valueOf() ? 'disabled' : '';\n },\n format: dateFormat,\n autoclose: true,\n orientation: 'auto',\n })\n .on('changeDate', function(e) {\n if (e.target.id == 'txtStartDate') {\n var startDate = new Date(e.date);\n var newDate = new Date(e.date);\n newDate.setDate(newDate.getDate() + defaultSearchDepartureDays);\n $('#txtEndDate').datepicker('setDate', newDate);\n $('#txtEndDate').focus();\n\n $('#compareStartDate').val(\n startDate.getMonth() + 1 + '/' + startDate.getDate() + '/' + startDate.getFullYear()\n );\n }\n\n if (e.target.id == 'txtEndDate') {\n var newEndDate = new Date(e.date);\n $('#compareEndDate').val(\n newEndDate.getMonth() + 1 + '/' + newEndDate.getDate() + '/' + newEndDate.getFullYear()\n );\n }\n })\n .data('datepicker');\n\n /****************** end desktop date pickers ******************/\n\n /****************** calendar page date picker ******************/\n $('.lr-calendar-search-desktop-datepicker').datepicker({\n beforeShowDay: function(date) {\n return date.valueOf() < now.valueOf() ? 'disabled' : '';\n },\n format: dateFormat,\n autoclose: true,\n orientation: 'auto',\n });\n\n LIVEREZ.Publisher.subscribe('mobiscroll-loaded', function(message) {\n $('.lr-calendar-search-mobile-datepicker')\n .mobiscroll()\n .calendar({\n theme: 'bootstrap',\n display: 'modal',\n controls: ['calendar'],\n minDate: now,\n dateFormat: dateFormat,\n });\n\n $('.lr-calendar-search-mobile-datepicker').change(function() {\n $('.lr-calendar-search-desktop-datepicker').val(this.value);\n });\n });\n\n /****************** end calendar page date picker ******************/\n\n LIVEREZ.Publisher.subscribe('mobiscroll-loaded', function(message) {\n /****************** secondary search box mobile date pickers ******************/\n var mobileStartInst = $('#txtStartDate-mobile')\n .mobiscroll()\n .calendar({\n theme: 'bootstrap',\n display: 'modal',\n controls: ['calendar'],\n minDate: now,\n closeOnSelect: true,\n dateFormat: dateFormat,\n })\n .mobiscroll('getInst');\n\n var mobileEndInst = $('#txtEndDate-mobile')\n .mobiscroll()\n .calendar({\n theme: 'bootstrap',\n display: 'modal',\n controls: ['calendar'],\n minDate: now,\n closeOnSelect: true,\n dateFormat: dateFormat,\n })\n .mobiscroll('getInst');\n\n $('#txtStartDate-mobile').change(function() {\n $('#txtStartDate').val(this.value);\n $('#compareStartDate').val(this.value);\n\n var startDateStr = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n $('#txtStartDate-mobile').val(),\n dateFormatType\n );\n var startDate = new Date(startDateStr);\n var endDateStr = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n $('#txtEndDate-mobile').val(),\n dateFormatType\n );\n var endDate = new Date(endDateStr);\n\n //console.log('startDateStr', startDateStr);\n //console.log('endDateStr', endDateStr);\n //console.log('startDate', startDate);\n //console.log('endDate', endDate);\n\n var diff = startDate - endDate;\n var days = diff / 1000 / 60 / 60 / 24;\n\n //console.log('diff', diff);\n //console.log('days', days);\n\n var newEnd = new Date(startDate);\n newEnd.setDate(startDate.getDate() + defaultSearchDepartureDays);\n //console.log('newEnd', newEnd);\n var newEndStr = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n LIVEREZ.DynsiteFunctions.DateShort(newEnd),\n dateFormatType\n );\n //console.log('newEndStr', newEndStr);\n\n if (startDate > endDate) {\n mobileEndInst.setDate(newEnd);\n $('#txtEndDate-mobile').val(newEndStr);\n $('#txtEndDate').val(newEndStr);\n $('#compareEndDate').val(newEndStr);\n }\n });\n\n $('#txtEndDate-mobile').change(function() {\n $('#txtEndDate').val(this.value);\n $('#compareEndDate').val(this.value);\n });\n });\n\n // lazy load echo images\n echo.init({\n throttle: 50,\n offsetVertical: 750,\n });\n\n if ($('.index-features-carousel').length) {\n $('.index-features-carousel').on('slid.bs.carousel', function(e) {\n echo.init();\n });\n }\n\n if ($('.alternative-properties-carousel').length) {\n $('.alternative-properties-carousel').on('slid.bs.carousel', function(e) {\n echo.init();\n });\n }\n\n // only load mobiscroll if mobile to because its not neccesary on desktop\n if (LIVEREZ.DynsiteFunctions.isMobileDevice()) {\n $.getScript(CDN_BASE_URL + '/3/common/js/mobiscroll.custom-2.10.1.min.js', function() {\n $('head').append(\n $('').attr(\n 'href',\n CDN_BASE_URL + '/3/common/css/mobiscroll.custom-2.10.1.min.css'\n )\n );\n LIVEREZ.Publisher.publish('mobiscroll-loaded', 'ready');\n });\n }\n\n $('.popover-icon').popover({\n placement: 'top',\n trigger: 'hover',\n });\n\n if ($('.lr-typeahead').length) {\n var myOptions = {\n timeoutLength: 600,\n dataSource: function(callback, query) {\n $.ajax({\n type: 'GET',\n url: '/inc/api/webservices.aspx?method=propertysearch',\n data: {\n AdminCustDataID: ADMIN_CUST_DATA_ID,\n DynSiteID: DYN_SITE_ID,\n q: encodeURIComponent(query),\n },\n dataType: 'json',\n success: function(data) {\n callback(null, data);\n },\n error: function(data, status, error) {\n console({\n data: data,\n status: status,\n error: error,\n });\n callback(null, []);\n },\n });\n },\n onNewData: function(data, element) {\n if (data.length) {\n var retHtml = '';\n for (var i = 0; i < data.length; i++) {\n retHtml +=\n '';\n }\n return retHtml;\n } else {\n return '';\n }\n },\n };\n\n $('.lr-typeahead').lrtypeahead(myOptions);\n }\n });\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","(function(LIVEREZ, window, $, undefined) {\n 'use strict';\n\n var DAYS_OF_WEEK = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n var PropertyDateRanges = {};\n\n PropertyDateRanges.getByPageDataID = function(pageDataId, callback) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeStart);\n\n $.ajax({\n type: 'get',\n url: LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=dateranges',\n data: {\n AdminCustDataID: ADMIN_CUST_DATA_ID,\n DynSiteID: DYN_SITE_ID,\n PageDataID: pageDataId,\n },\n dataType: 'json',\n success: function(data) {\n // publish the data to all subscribers\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeComplete);\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeSuccess, data);\n callback(null, data);\n },\n error: function(data, status, error) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeComplete);\n\n if (error !== 'abort') {\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeError, error);\n callback(error);\n } else {\n var fakeData = { dateRanges: [] };\n LIVEREZ.Publisher.publish(LIVEREZ.events.propertyDateRangeSuccess, fakeData);\n callback(null, fakeData);\n }\n },\n });\n };\n\n PropertyDateRanges.buildDateRangeTable = function(preferences, dateRanges) {\n var container = $('
').addClass('table-responsive');\n var table = $(' ').addClass('table table-striped responsive-rate-table');\n var tableBody = $('\t');\n\n table.append(tableBody);\n\n tableBody.append(_buildHeaderRow(preferences));\n\n dateRanges.forEach(function(dateRange, i) {\n table.append(_buildDateRangeRow(preferences, dateRange, i));\n });\n\n container.append(table);\n\n return container;\n };\n\n var _buildHeaderRow = function(preferences) {\n var row = $('');\n\n row.append(\n $('').addClass('property-date-range-row');\n\n var isRowEven = _isEven(index);\n row.addClass(isRowEven ? 'property-rate-tr-wt' : 'property-rate-tr-gr');\n row.addClass(dateRange.available ? 'available' : 'unavailable');\n\n row.append($('';\n if (this.o.calendarWeeks) {\n html += '';\n }\n while (dowCnt < this.o.weekStart + 7) {\n html += '';\n this.picker.find('.datepicker-days thead').append(html);\n }\n },\n\n fillMonths: function() {\n var localDate = this._utc_to_local(this.viewDate);\n var html = '';\n var focused;\n for (var i = 0; i < 12; i++) {\n focused = localDate && localDate.getMonth() === i ? ' focused' : '';\n html +=\n '' + dates[this.o.language].monthsShort[i] + '';\n }\n this.picker.find('.datepicker-months td').html(html);\n },\n\n setRange: function(range) {\n if (!range || !range.length) delete this.range;\n else\n this.range = $.map(range, function(d) {\n return d.valueOf();\n });\n this.fill();\n },\n\n getClassNames: function(date) {\n var cls = [],\n year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n today = UTCToday();\n if (\n date.getUTCFullYear() < year ||\n (date.getUTCFullYear() === year && date.getUTCMonth() < month)\n ) {\n cls.push('old');\n } else if (\n date.getUTCFullYear() > year ||\n (date.getUTCFullYear() === year && date.getUTCMonth() > month)\n ) {\n cls.push('new');\n }\n if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) cls.push('focused');\n // Compare internal UTC date with UTC today, not local today\n if (this.o.todayHighlight && isUTCEquals(date, today)) {\n cls.push('today');\n }\n if (this.dates.contains(date) !== -1) cls.push('active');\n if (!this.dateWithinRange(date)) {\n cls.push('disabled');\n }\n if (this.dateIsDisabled(date)) {\n cls.push('disabled', 'disabled-date');\n }\n if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1) {\n cls.push('highlighted');\n }\n\n if (this.range) {\n if (date > this.range[0] && date < this.range[this.range.length - 1]) {\n cls.push('range');\n }\n if ($.inArray(date.valueOf(), this.range) !== -1) {\n cls.push('selected');\n }\n if (date.valueOf() === this.range[0]) {\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length - 1]) {\n cls.push('range-end');\n }\n }\n return cls;\n },\n\n _fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn) {\n var html = '';\n var step = factor / 10;\n var view = this.picker.find(selector);\n var startVal = Math.floor(year / factor) * factor;\n var endVal = startVal + step * 9;\n var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n var selected = $.map(this.dates, function(d) {\n return Math.floor(d.getUTCFullYear() / step) * step;\n });\n\n var classes, tooltip, before;\n for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n classes = [cssClass];\n tooltip = null;\n\n if (currVal === startVal - step) {\n classes.push('old');\n } else if (currVal === endVal + step) {\n classes.push('new');\n }\n if ($.inArray(currVal, selected) !== -1) {\n classes.push('active');\n }\n if (currVal < startYear || currVal > endYear) {\n classes.push('disabled');\n }\n if (currVal === focusedVal) {\n classes.push('focused');\n }\n\n if (beforeFn !== $.noop) {\n before = beforeFn(new Date(currVal, 0, 1));\n if (before === undefined) {\n before = {};\n } else if (typeof before === 'boolean') {\n before = { enabled: before };\n } else if (typeof before === 'string') {\n before = { classes: before };\n }\n if (before.enabled === false) {\n classes.push('disabled');\n }\n if (before.classes) {\n classes = classes.concat(before.classes.split(/\\s+/));\n }\n if (before.tooltip) {\n tooltip = before.tooltip;\n }\n }\n\n html +=\n '' +\n currVal +\n '';\n }\n\n view.find('.datepicker-switch').text(startVal + '-' + endVal);\n view.find('td').html(html);\n },\n\n fill: function() {\n var d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n todaytxt = dates[this.o.language].today || dates['en'].today || '',\n cleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n tooltip,\n before;\n if (isNaN(year) || isNaN(month)) return;\n this.picker\n .find('.datepicker-days .datepicker-switch')\n .text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n this.picker\n .find('tfoot .today')\n .text(todaytxt)\n .css(\n 'display',\n this.o.todayBtn === true || this.o.todayBtn === 'linked' ? 'table-cell' : 'none'\n );\n this.picker\n .find('tfoot .clear')\n .text(cleartxt)\n .css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n this.picker\n .find('thead .datepicker-title')\n .text(this.o.title)\n .css(\n 'display',\n typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none'\n );\n this.updateNavArrows();\n this.fillMonths();\n var prevMonth = UTCDate(year, month, 0),\n day = prevMonth.getUTCDate();\n prevMonth.setUTCDate(day - ((prevMonth.getUTCDay() - this.o.weekStart + 7) % 7));\n var nextMonth = new Date(prevMonth);\n if (prevMonth.getUTCFullYear() < 100) {\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n nextMonth = nextMonth.valueOf();\n var html = [];\n var weekDay, clsName;\n while (prevMonth.valueOf() < nextMonth) {\n weekDay = prevMonth.getUTCDay();\n if (weekDay === this.o.weekStart) {\n html.push('');\n if (this.o.calendarWeeks) {\n // ISO 8601: First week contains first thursday.\n // ISO also states week starts on Monday, but we can be more abstract here.\n var // Start of current week: based on weekstart/current date\n ws = new Date(+prevMonth + ((this.o.weekStart - weekDay - 7) % 7) * 864e5),\n // Thursday of this week\n th = new Date(Number(ws) + ((7 + 4 - ws.getUTCDay()) % 7) * 864e5),\n // First Thursday of year, year from thursday\n yth = new Date(\n Number((yth = UTCDate(th.getUTCFullYear(), 0, 1))) +\n ((7 + 4 - yth.getUTCDay()) % 7) * 864e5\n ),\n // Calendar week: ms between thursdays, div ms per day, div 7 days\n calWeek = (th - yth) / 864e5 / 7 + 1;\n html.push('');\n }\n }\n clsName = this.getClassNames(prevMonth);\n clsName.push('day');\n\n var content = prevMonth.getUTCDate();\n\n if (this.o.beforeShowDay !== $.noop) {\n before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n if (before === undefined) before = {};\n else if (typeof before === 'boolean') before = { enabled: before };\n else if (typeof before === 'string') before = { classes: before };\n if (before.enabled === false) clsName.push('disabled');\n if (before.classes) clsName = clsName.concat(before.classes.split(/\\s+/));\n if (before.tooltip) tooltip = before.tooltip;\n if (before.content) content = before.content;\n }\n\n //Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n //Fallback to unique function for older jquery versions\n if ($.isFunction($.uniqueSort)) {\n clsName = $.uniqueSort(clsName);\n } else {\n clsName = $.unique(clsName);\n }\n\n html.push(\n ''\n );\n tooltip = null;\n if (weekDay === this.o.weekEnd) {\n html.push('');\n }\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n }\n this.picker.find('.datepicker-days tbody').html(html.join(''));\n\n var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n var months = this.picker\n .find('.datepicker-months')\n .find('.datepicker-switch')\n .text(this.o.maxViewMode < 2 ? monthsTitle : year)\n .end()\n .find('tbody span')\n .removeClass('active');\n\n $.each(this.dates, function(i, d) {\n if (d.getUTCFullYear() === year) months.eq(d.getUTCMonth()).addClass('active');\n });\n\n if (year < startYear || year > endYear) {\n months.addClass('disabled');\n }\n if (year === startYear) {\n months.slice(0, startMonth).addClass('disabled');\n }\n if (year === endYear) {\n months.slice(endMonth + 1).addClass('disabled');\n }\n\n if (this.o.beforeShowMonth !== $.noop) {\n var that = this;\n $.each(months, function(i, month) {\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n if (before === undefined) before = {};\n else if (typeof before === 'boolean') before = { enabled: before };\n else if (typeof before === 'string') before = { classes: before };\n if (before.enabled === false && !$(month).hasClass('disabled'))\n $(month).addClass('disabled');\n if (before.classes) $(month).addClass(before.classes);\n if (before.tooltip) $(month).prop('title', before.tooltip);\n });\n }\n\n // Generating decade/years picker\n this._fill_yearsView(\n '.datepicker-years',\n 'year',\n 10,\n year,\n startYear,\n endYear,\n this.o.beforeShowYear\n );\n\n // Generating century/decades picker\n this._fill_yearsView(\n '.datepicker-decades',\n 'decade',\n 100,\n year,\n startYear,\n endYear,\n this.o.beforeShowDecade\n );\n\n // Generating millennium/centuries picker\n this._fill_yearsView(\n '.datepicker-centuries',\n 'century',\n 1000,\n year,\n startYear,\n endYear,\n this.o.beforeShowCentury\n );\n },\n\n updateNavArrows: function() {\n if (!this._allow_update) return;\n\n var d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n prevIsDisabled,\n nextIsDisabled,\n factor = 1;\n switch (this.viewMode) {\n case 0:\n prevIsDisabled = year <= startYear && month <= startMonth;\n nextIsDisabled = year >= endYear && month >= endMonth;\n break;\n case 4:\n factor *= 10;\n /* falls through */\n case 3:\n factor *= 10;\n /* falls through */\n case 2:\n factor *= 10;\n /* falls through */\n case 1:\n prevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n nextIsDisabled = Math.floor(year / factor) * factor + factor >= endYear;\n break;\n }\n\n this.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n this.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n },\n\n click: function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var target, dir, day, year, month;\n target = $(e.target);\n\n // Clicked on the switch\n if (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode) {\n this.setViewMode(this.viewMode + 1);\n }\n\n // Clicked on today button\n if (target.hasClass('today') && !target.hasClass('day')) {\n this.setViewMode(0);\n this._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n }\n\n // Clicked on clear button\n if (target.hasClass('clear')) {\n this.clearDates();\n }\n\n if (!target.hasClass('disabled')) {\n // Clicked on a month, year, decade, century\n if (\n target.hasClass('month') ||\n target.hasClass('year') ||\n target.hasClass('decade') ||\n target.hasClass('century')\n ) {\n this.viewDate.setUTCDate(1);\n\n day = 1;\n if (this.viewMode === 1) {\n month = target\n .parent()\n .find('span')\n .index(target);\n year = this.viewDate.getUTCFullYear();\n this.viewDate.setUTCMonth(month);\n } else {\n month = 0;\n year = Number(target.text());\n this.viewDate.setUTCFullYear(year);\n }\n\n this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n if (this.viewMode === this.o.minViewMode) {\n this._setDate(UTCDate(year, month, day));\n } else {\n this.setViewMode(this.viewMode - 1);\n this.fill();\n }\n }\n }\n\n if (this.picker.is(':visible') && this._focused_from) {\n this._focused_from.focus();\n }\n delete this._focused_from;\n },\n\n dayCellClick: function(e) {\n var $target = $(e.currentTarget);\n var timestamp = $target.data('date');\n var date = new Date(timestamp);\n\n if (this.o.updateViewDate) {\n if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n this._trigger('changeYear', this.viewDate);\n }\n\n if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n this._trigger('changeMonth', this.viewDate);\n }\n }\n this._setDate(date);\n },\n\n // Clicked on prev or next\n navArrowsClick: function(e) {\n var $target = $(e.currentTarget);\n var dir = $target.hasClass('prev') ? -1 : 1;\n if (this.viewMode !== 0) {\n dir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n }\n this.viewDate = this.moveMonth(this.viewDate, dir);\n this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n this.fill();\n },\n\n _toggle_multidate: function(date) {\n var ix = this.dates.contains(date);\n if (!date) {\n this.dates.clear();\n }\n\n if (ix !== -1) {\n if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive) {\n this.dates.remove(ix);\n }\n } else if (this.o.multidate === false) {\n this.dates.clear();\n this.dates.push(date);\n } else {\n this.dates.push(date);\n }\n\n if (typeof this.o.multidate === 'number')\n while (this.dates.length > this.o.multidate) this.dates.remove(0);\n },\n\n _setDate: function(date, which) {\n if (!which || which === 'date') this._toggle_multidate(date && new Date(date));\n if ((!which && this.o.updateViewDate) || which === 'view')\n this.viewDate = date && new Date(date);\n\n this.fill();\n this.setValue();\n if (!which || which !== 'view') {\n this._trigger('changeDate');\n }\n this.inputField.trigger('change');\n if (this.o.autoclose && (!which || which === 'date')) {\n this.hide();\n }\n },\n\n moveDay: function(date, dir) {\n var newDate = new Date(date);\n newDate.setUTCDate(date.getUTCDate() + dir);\n\n return newDate;\n },\n\n moveWeek: function(date, dir) {\n return this.moveDay(date, dir * 7);\n },\n\n moveMonth: function(date, dir) {\n if (!isValidDate(date)) return this.o.defaultViewDate;\n if (!dir) return date;\n var new_date = new Date(date.valueOf()),\n day = new_date.getUTCDate(),\n month = new_date.getUTCMonth(),\n mag = Math.abs(dir),\n new_month,\n test;\n dir = dir > 0 ? 1 : -1;\n if (mag === 1) {\n test =\n dir === -1\n ? // If going back one month, make sure month is not current month\n // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n function() {\n return new_date.getUTCMonth() === month;\n }\n : // If going forward one month, make sure month is as expected\n // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n function() {\n return new_date.getUTCMonth() !== new_month;\n };\n new_month = month + dir;\n new_date.setUTCMonth(new_month);\n // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n new_month = (new_month + 12) % 12;\n } else {\n // For magnitudes >1, move one month at a time...\n for (var i = 0; i < mag; i++)\n // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n new_date = this.moveMonth(new_date, dir);\n // ...then reset the day, keeping it in the new month\n new_month = new_date.getUTCMonth();\n new_date.setUTCDate(day);\n test = function() {\n return new_month !== new_date.getUTCMonth();\n };\n }\n // Common date-resetting loop -- if date is beyond end of month, make it\n // end of month\n while (test()) {\n new_date.setUTCDate(--day);\n new_date.setUTCMonth(new_month);\n }\n return new_date;\n },\n\n moveYear: function(date, dir) {\n return this.moveMonth(date, dir * 12);\n },\n\n moveAvailableDate: function(date, dir, fn) {\n do {\n date = this[fn](date, dir);\n\n if (!this.dateWithinRange(date)) return false;\n\n fn = 'moveDay';\n } while (this.dateIsDisabled(date));\n\n return date;\n },\n\n weekOfDateIsDisabled: function(date) {\n return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n },\n\n dateIsDisabled: function(date) {\n return (\n this.weekOfDateIsDisabled(date) ||\n $.grep(this.o.datesDisabled, function(d) {\n return isUTCEquals(date, d);\n }).length > 0\n );\n },\n\n dateWithinRange: function(date) {\n return date >= this.o.startDate && date <= this.o.endDate;\n },\n\n keydown: function(e) {\n if (!this.picker.is(':visible')) {\n if (e.keyCode === 40 || e.keyCode === 27) {\n // allow down to re-show picker\n this.show();\n e.stopPropagation();\n }\n return;\n }\n var dateChanged = false,\n dir,\n newViewDate,\n focusDate = this.focusDate || this.viewDate;\n switch (e.keyCode) {\n case 27: // escape\n if (this.focusDate) {\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.fill();\n } else this.hide();\n e.preventDefault();\n e.stopPropagation();\n break;\n case 37: // left\n case 38: // up\n case 39: // right\n case 40: // down\n if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7) break;\n dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n if (e.ctrlKey) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n if (newViewDate) this._trigger('changeYear', this.viewDate);\n } else if (e.shiftKey) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n if (newViewDate) this._trigger('changeMonth', this.viewDate);\n } else if (e.keyCode === 37 || e.keyCode === 39) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n } else if (!this.weekOfDateIsDisabled(focusDate)) {\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n }\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n if (newViewDate) {\n this.focusDate = this.viewDate = newViewDate;\n this.setValue();\n this.fill();\n e.preventDefault();\n }\n break;\n case 13: // enter\n if (!this.o.forceParse) break;\n focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n if (this.o.keyboardNavigation) {\n this._toggle_multidate(focusDate);\n dateChanged = true;\n }\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.setValue();\n this.fill();\n if (this.picker.is(':visible')) {\n e.preventDefault();\n e.stopPropagation();\n if (this.o.autoclose) this.hide();\n }\n break;\n case 9: // tab\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.fill();\n this.hide();\n break;\n }\n if (dateChanged) {\n if (this.dates.length) this._trigger('changeDate');\n else this._trigger('clearDate');\n this.inputField.trigger('change');\n }\n },\n\n setViewMode: function(viewMode) {\n this.viewMode = viewMode;\n this.picker\n .children('div')\n .hide()\n .filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n .show();\n this.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n },\n };\n\n var DateRangePicker = function(element, options) {\n $.data(element, 'datepicker', this);\n this.element = $(element);\n this.inputs = $.map(options.inputs, function(i) {\n return i.jquery ? i[0] : i;\n });\n delete options.inputs;\n\n this.keepEmptyValues = options.keepEmptyValues;\n delete options.keepEmptyValues;\n\n datepickerPlugin\n .call($(this.inputs), options)\n .on('changeDate', $.proxy(this.dateUpdated, this));\n\n this.pickers = $.map(this.inputs, function(i) {\n return $.data(i, 'datepicker');\n });\n this.updateDates();\n };\n DateRangePicker.prototype = {\n updateDates: function() {\n this.dates = $.map(this.pickers, function(i) {\n return i.getUTCDate();\n });\n this.updateRanges();\n },\n updateRanges: function() {\n var range = $.map(this.dates, function(d) {\n return d.valueOf();\n });\n $.each(this.pickers, function(i, p) {\n p.setRange(range);\n });\n },\n dateUpdated: function(e) {\n // `this.updating` is a workaround for preventing infinite recursion\n // between `changeDate` triggering and `setUTCDate` calling. Until\n // there is a better mechanism.\n if (this.updating) return;\n this.updating = true;\n\n var dp = $.data(e.target, 'datepicker');\n\n if (dp === undefined) {\n return;\n }\n\n var new_date = dp.getUTCDate(),\n keep_empty_values = this.keepEmptyValues,\n i = $.inArray(e.target, this.inputs),\n j = i - 1,\n k = i + 1,\n l = this.inputs.length;\n if (i === -1) return;\n\n $.each(this.pickers, function(i, p) {\n if (!p.getUTCDate() && (p === dp || !keep_empty_values)) p.setUTCDate(new_date);\n });\n\n if (new_date < this.dates[j]) {\n // Date being moved earlier/left\n while (j >= 0 && new_date < this.dates[j]) {\n this.pickers[j--].setUTCDate(new_date);\n }\n } else if (new_date > this.dates[k]) {\n // Date being moved later/right\n while (k < l && new_date > this.dates[k]) {\n this.pickers[k++].setUTCDate(new_date);\n }\n }\n this.updateDates();\n\n delete this.updating;\n },\n destroy: function() {\n $.map(this.pickers, function(p) {\n p.destroy();\n });\n $(this.inputs).off('changeDate', this.dateUpdated);\n delete this.element.data().datepicker;\n },\n remove: alias(\n 'destroy',\n 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'\n ),\n };\n\n function opts_from_el(el, prefix) {\n // Derive options from element data-attrs\n var data = $(el).data(),\n out = {},\n inkey,\n replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n prefix = new RegExp('^' + prefix.toLowerCase());\n function re_lower(_, a) {\n return a.toLowerCase();\n }\n for (var key in data)\n if (prefix.test(key)) {\n inkey = key.replace(replace, re_lower);\n out[inkey] = data[key];\n }\n return out;\n }\n\n function opts_from_locale(lang) {\n // Derive options from locale plugins\n var out = {};\n // Check if \"de-DE\" style date is available, if not language should\n // fallback to 2 letter code eg \"de\"\n if (!dates[lang]) {\n lang = lang.split('-')[0];\n if (!dates[lang]) return;\n }\n var d = dates[lang];\n $.each(locale_opts, function(i, k) {\n if (k in d) out[k] = d[k];\n });\n return out;\n }\n\n var old = $.fn.datepicker;\n var datepickerPlugin = function(option) {\n var args = Array.apply(null, arguments);\n args.shift();\n var internal_return;\n this.each(function() {\n var $this = $(this),\n data = $this.data('datepicker'),\n options = typeof option === 'object' && option;\n if (!data) {\n var elopts = opts_from_el(this, 'date'),\n // Preliminary otions\n xopts = $.extend({}, defaults, elopts, options),\n locopts = opts_from_locale(xopts.language),\n // Options priority: js args, data-attrs, locales, defaults\n opts = $.extend({}, defaults, locopts, elopts, options);\n if ($this.hasClass('input-daterange') || opts.inputs) {\n $.extend(opts, {\n inputs: opts.inputs || $this.find('input').toArray(),\n });\n data = new DateRangePicker(this, opts);\n } else {\n data = new Datepicker(this, opts);\n }\n $this.data('datepicker', data);\n }\n if (typeof option === 'string' && typeof data[option] === 'function') {\n internal_return = data[option].apply(data, args);\n }\n });\n\n if (\n internal_return === undefined ||\n internal_return instanceof Datepicker ||\n internal_return instanceof DateRangePicker\n )\n return this;\n\n if (this.length > 1)\n throw new Error(\n 'Using only allowed for the collection of a single element (' + option + ' function)'\n );\n else return internal_return;\n };\n $.fn.datepicker = datepickerPlugin;\n\n var defaults = ($.fn.datepicker.defaults = {\n assumeNearbyYear: false,\n autoclose: false,\n beforeShowDay: $.noop,\n beforeShowMonth: $.noop,\n beforeShowYear: $.noop,\n beforeShowDecade: $.noop,\n beforeShowCentury: $.noop,\n calendarWeeks: false,\n clearBtn: false,\n toggleActive: false,\n daysOfWeekDisabled: [],\n daysOfWeekHighlighted: [],\n datesDisabled: [],\n endDate: Infinity,\n forceParse: true,\n format: 'mm/dd/yyyy',\n keepEmptyValues: false,\n keyboardNavigation: true,\n language: 'en',\n minViewMode: 0,\n maxViewMode: 4,\n multidate: false,\n multidateSeparator: ',',\n orientation: 'auto',\n rtl: false,\n startDate: -Infinity,\n startView: 0,\n todayBtn: false,\n todayHighlight: false,\n updateViewDate: true,\n weekStart: 0,\n disableTouchKeyboard: false,\n enableOnReadonly: true,\n showOnFocus: true,\n zIndexOffset: 10,\n container: 'body',\n immediateUpdates: false,\n title: '',\n templates: {\n leftArrow: '«',\n rightArrow: '»',\n },\n showWeekDays: true,\n });\n var locale_opts = ($.fn.datepicker.locale_opts = ['format', 'rtl', 'weekStart']);\n $.fn.datepicker.Constructor = Datepicker;\n var dates = ($.fn.datepicker.dates = {\n en: {\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthsShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n today: 'Today',\n clear: 'Clear',\n titleFormat: 'MM yyyy',\n },\n });\n\n var DPGlobal = {\n viewModes: [\n {\n names: ['days', 'month'],\n clsName: 'days',\n e: 'changeMonth',\n },\n {\n names: ['months', 'year'],\n clsName: 'months',\n e: 'changeYear',\n navStep: 1,\n },\n {\n names: ['years', 'decade'],\n clsName: 'years',\n e: 'changeDecade',\n navStep: 10,\n },\n {\n names: ['decades', 'century'],\n clsName: 'decades',\n e: 'changeCentury',\n navStep: 100,\n },\n {\n names: ['centuries', 'millennium'],\n clsName: 'centuries',\n e: 'changeMillennium',\n navStep: 1000,\n },\n ],\n validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n nonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n parseFormat: function(format) {\n if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n // so it's a bad format delimiter, anyway\n var separators = format.replace(this.validParts, '\\0').split('\\0'),\n parts = format.match(this.validParts);\n if (!separators || !separators.length || !parts || parts.length === 0) {\n throw new Error('Invalid date format.');\n }\n return { separators: separators, parts: parts };\n },\n parseDate: function(date, format, language, assumeNearby) {\n if (!date) return undefined;\n if (date instanceof Date) return date;\n if (typeof format === 'string') format = DPGlobal.parseFormat(format);\n if (format.toValue) return format.toValue(date, format, language);\n var fn_map = {\n d: 'moveDay',\n m: 'moveMonth',\n w: 'moveWeek',\n y: 'moveYear',\n },\n dateAliases = {\n yesterday: '-1d',\n today: '+0d',\n tomorrow: '+1d',\n },\n parts,\n part,\n dir,\n i,\n fn;\n if (date in dateAliases) {\n date = dateAliases[date];\n }\n if (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)) {\n parts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n date = new Date();\n for (i = 0; i < parts.length; i++) {\n part = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n dir = Number(part[1]);\n fn = fn_map[part[2].toLowerCase()];\n date = Datepicker.prototype[fn](date, dir);\n }\n return Datepicker.prototype._zero_utc_time(date);\n }\n\n parts = (date && date.match(this.nonpunctuation)) || [];\n\n function applyNearbyYear(year, threshold) {\n if (threshold === true) threshold = 10;\n\n // if year is 2 digits or less, than the user most likely is trying to get a recent century\n if (year < 100) {\n year += 2000;\n // if the new year is more than threshold years in advance, use last century\n if (year > new Date().getFullYear() + threshold) {\n year -= 100;\n }\n }\n\n return year;\n }\n\n var parsed = {},\n setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n setters_map = {\n yyyy: function(d, v) {\n return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n },\n m: function(d, v) {\n if (isNaN(d)) return d;\n v -= 1;\n while (v < 0) v += 12;\n v %= 12;\n d.setUTCMonth(v);\n while (d.getUTCMonth() !== v) d.setUTCDate(d.getUTCDate() - 1);\n return d;\n },\n d: function(d, v) {\n return d.setUTCDate(v);\n },\n },\n val,\n filtered;\n setters_map['yy'] = setters_map['yyyy'];\n setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n setters_map['dd'] = setters_map['d'];\n date = UTCToday();\n var fparts = format.parts.slice();\n // Remove noop parts\n if (parts.length !== fparts.length) {\n fparts = $(fparts)\n .filter(function(i, p) {\n return $.inArray(p, setters_order) !== -1;\n })\n .toArray();\n }\n // Process remainder\n function match_part() {\n var m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m.toLowerCase() === p.toLowerCase();\n }\n if (parts.length === fparts.length) {\n var cnt;\n for (i = 0, cnt = fparts.length; i < cnt; i++) {\n val = parseInt(parts[i], 10);\n part = fparts[i];\n if (isNaN(val)) {\n switch (part) {\n case 'MM':\n filtered = $(dates[language].months).filter(match_part);\n val = $.inArray(filtered[0], dates[language].months) + 1;\n break;\n case 'M':\n filtered = $(dates[language].monthsShort).filter(match_part);\n val = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n break;\n }\n }\n parsed[part] = val;\n }\n var _date, s;\n for (i = 0; i < setters_order.length; i++) {\n s = setters_order[i];\n if (s in parsed && !isNaN(parsed[s])) {\n _date = new Date(date);\n setters_map[s](_date, parsed[s]);\n if (!isNaN(_date)) date = _date;\n }\n }\n }\n return date;\n },\n formatDate: function(date, format, language) {\n if (!date) return '';\n if (typeof format === 'string') format = DPGlobal.parseFormat(format);\n if (format.toDisplay) return format.toDisplay(date, format, language);\n var val = {\n d: date.getUTCDate(),\n D: dates[language].daysShort[date.getUTCDay()],\n DD: dates[language].days[date.getUTCDay()],\n m: date.getUTCMonth() + 1,\n M: dates[language].monthsShort[date.getUTCMonth()],\n MM: dates[language].months[date.getUTCMonth()],\n yy: date\n .getUTCFullYear()\n .toString()\n .substring(2),\n yyyy: date.getUTCFullYear(),\n };\n val.dd = (val.d < 10 ? '0' : '') + val.d;\n val.mm = (val.m < 10 ? '0' : '') + val.m;\n date = [];\n var seps = $.extend([], format.separators);\n for (var i = 0, cnt = format.parts.length; i <= cnt; i++) {\n if (seps.length) date.push(seps.shift());\n date.push(val[format.parts[i]]);\n }\n return date.join('');\n },\n headTemplate:\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '',\n contTemplate: '',\n footTemplate:\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '',\n };\n DPGlobal.template =\n '
' +\n '
' +\n '
')\n .addClass('property-rate-titles')\n .html('Season')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Start')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('End')\n );\n\n if (preferences.nightlyPricing) {\n if (preferences.pricingPerDayOfWeek) {\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Sun')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Mon')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Tue')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Wed')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Thu')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Fri')\n );\n row.append(\n $('')\n .addClass('property-rate-titles')\n .html('Sat')\n );\n } else {\n row.append(\n $('')\n .addClass('property-rate-titles property-rate-title-night')\n .html('Nightly')\n );\n }\n }\n\n if (preferences.weeklyPricing) {\n row.append(\n $('')\n .addClass('property-rate-titles property-rate-title-week')\n .html('Weekly')\n );\n }\n\n if (preferences.monthlyPricing) {\n row.append(\n $('')\n .addClass('property-rate-titles property-rate-title-month')\n .html('Monthly')\n );\n }\n\n if (preferences.showMinStayOnProperty) {\n row.append(\n $('')\n .addClass('property-rate-titles property-rate-title-min-night')\n .html('Min Nights')\n );\n }\n\n return row;\n };\n\n var _buildDateRangeRow = function(preferences, dateRange, index) {\n var row = $('
').html(dateRange.rangeTitle.trim()));\n row.append($('').html(dateRange.strDateRangeL));\n row.append($('').html(dateRange.strDateRangeU));\n\n var pricingColumns = 0;\n\n if (preferences.nightlyPricing) {\n if (preferences.pricingPerDayOfWeek) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 7;\n } else if (dateRange.dateRangeType === 2) {\n // week to week\n row.append(\n $('')\n .attr('colspan', 7)\n .addClass('text-center')\n .html(_formatPricing(preferences, dateRange.weekly) + ' Per Week')\n );\n } else {\n row.append($('').html(_formatPricing(preferences, dateRange.sunPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.monPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.tuePrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.wedPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.thuPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.friPrice)));\n row.append($('').html(_formatPricing(preferences, dateRange.satPrice)));\n }\n } else {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else if (dateRange.nightly && dateRange.dateRangeType !== 2) {\n // week to week\n var nightlyHTML = _formatPricing(preferences, dateRange.nightly);\n if (dateRange.startingAtNightly) {\n nightlyHTML =\n '
' +\n _formatPricing(preferences, dateRange.startingAtNightly) +\n '
' +\n nightlyHTML;\n }\n row.append(\n $('
')\n .addClass('property-rate-night')\n .html(nightlyHTML)\n );\n } else {\n row.append(\n $('')\n .addClass('property-rate-week-none')\n .html('-')\n );\n }\n }\n }\n\n if (preferences.weeklyPricing) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else if (dateRange.weekly) {\n var weeklyHTML = _formatPricing(preferences, dateRange.weekly);\n if (dateRange.startingAtWeekly) {\n weeklyHTML =\n '
' +\n _formatPricing(preferences, dateRange.startingAtWeekly) +\n '
' +\n weeklyHTML;\n }\n row.append(\n $('
')\n .addClass('property-rate-week')\n .html(weeklyHTML)\n );\n } else {\n row.append(\n $('')\n .addClass('property-rate-week-none')\n .html('-')\n );\n }\n }\n\n if (preferences.monthlyPricing) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else if (dateRange.monthly && dateRange.dateRangeType !== 2) {\n // week to week\n var monthlyHTML = _formatPricing(preferences, dateRange.monthly);\n if (dateRange.startingAtMonthly) {\n monthlyHTML =\n '
' +\n _formatPricing(preferences, dateRange.startingAtMonthly) +\n '
' +\n monthlyHTML;\n }\n row.append(\n $('
')\n .addClass('property-rate-month')\n .html(monthlyHTML)\n );\n } else {\n row.append(\n $('')\n .addClass('property-rate-week-none')\n .html('-')\n );\n }\n }\n\n if (preferences.showMinStayOnProperty) {\n if (dateRange.hasOwnProperty('available') && !dateRange.available) {\n pricingColumns += 1;\n } else {\n var cell = $('')\n .addClass('property-rate-min-night-days')\n .html(dateRange.minimumNightsStayWebBooking || dateRange.minimumNightsStay || '-');\n if (dateRange.dateRangeType === 2) {\n // week to week\n cell.append(\n ' (' +\n DAYS_OF_WEEK[dateRange.weekToWeekCheckinDay - 1] +\n ' - ' +\n DAYS_OF_WEEK[dateRange.weekToWeekCheckinDay - 1] +\n ')'\n );\n }\n row.append(cell);\n }\n }\n\n if (pricingColumns) {\n row.append(\n $('')\n .attr('colspan', pricingColumns)\n .addClass('text-left')\n .html('Reserved')\n );\n }\n\n return row;\n };\n\n var _formatPricing = function(preferences, price) {\n var newPrice = parseFloat(price).toFixed(2);\n return (\n preferences.currencySymbol + newPrice.replace('.00', '').replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n );\n };\n\n var _isEven = function(n) {\n return n === 0 || !!(n && !(n % 2));\n };\n\n var _isOdd = function(n) {\n return _isEven(Number(n) + 1);\n };\n\n LIVEREZ.PropertyDateRanges = PropertyDateRanges;\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","(function(LIVEREZ, window, $, undefined) {\n var InstantQuote = {};\n\n InstantQuote.getQuote = function(instantQuoteObj) {\n var _this = this;\n\n var _checkValidDates = LIVEREZ.DynsiteFunctions.checkValidStartEndDates(\n instantQuoteObj.StartDate,\n instantQuoteObj.EndDate\n );\n if (_checkValidDates) {\n _this.hideLoading();\n _this.setError(_checkValidDates);\n _this.showDates();\n _this.showButton('contact');\n return;\n }\n\n // if we already have an ajax request, abort it and use the new one\n if (_this.xhr) {\n _this.killAjax();\n }\n\n this.xhr = $.ajax({\n type: 'get',\n url:\n LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=instantquote',\n data: {\n AdminCustDataID: ADMIN_CUST_DATA_ID,\n DynSiteID: DYN_SITE_ID,\n PageDataID: instantQuoteObj.PageDataID,\n ad: instantQuoteObj.StartDate,\n dd: instantQuoteObj.EndDate,\n adults: instantQuoteObj.Adults,\n children: instantQuoteObj.Children,\n checkAvailable: true,\n LiveNetID: instantQuoteObj.LiveNetID || 0,\n },\n dataType: 'json',\n success: function(data) {\n // publish the data to all subscribers\n LIVEREZ.Publisher.publish(LIVEREZ.events.instantQuoteFinished, data);\n },\n error: function(data, status, error) {\n if (error !== 'abort') {\n _this.hideLoading();\n _this.setError(\n 'There was an issue with the quote. Please try new travel dates or try again later.'\n );\n _this.showDates();\n _this.showButton('contact');\n }\n },\n });\n };\n\n // subscribe to the instant quote finished event\n LIVEREZ.Publisher.subscribe(LIVEREZ.events.instantQuoteFinished, function(topic, data) {\n // reset\n $('.has-specials').addClass('hidden');\n $('.quote-fee-row').addClass('hidden');\n $('.discounted-rent').removeClass('on-sale');\n\n // property is available without errors\n if (!data.error && data.isAvailable === 1) {\n $('.property-instant-quote-nightly-rate-before-specials').text(\n cleanPrice(data.averageDailyRateBeforeSpecials)\n );\n $('.property-instant-quote-nightly-rate').text(cleanPrice(data.averageDailyRate));\n\n $('.property-instant-quote-num-nights').text(data.quantityDays);\n\n $('.property-instant-quote-fees').text(cleanPrice(data.fees));\n if (data.fees !== '0.00') {\n $('.quote-fee-row').removeClass('hidden');\n }\n\n $('.property-instant-quote-tax').text(cleanPrice(data.taxTotal));\n\n $('.property-instant-quote-rent').text(cleanPrice(data.rent));\n $('.property-instant-quote-rent-before-specials').text(cleanPrice(data.rentBeforeSpecials));\n\n $('.property-instant-quote-start-date').text(\n LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n $('#property-instant-quote-start-date').val(),\n dateFormatType\n )\n );\n $('.property-instant-quote-end-date').text(\n LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n $('#property-instant-quote-end-date').val(),\n dateFormatType\n )\n );\n\n $('.property-instant-quote-total-price').text(cleanPrice(data.total));\n\n $('.property-instant-quote-deposit-due').text(cleanPrice(data.deposit));\n\n if (data.hasSpecials) {\n $('.has-specials')\n .removeClass('hidden')\n .wrap('');\n $('.discounted-rent').addClass('on-sale');\n }\n\n LIVEREZ.InstantQuote.showPricing();\n\n if (OnlineBookings) {\n LIVEREZ.InstantQuote.showButton('book');\n } else {\n LIVEREZ.InstantQuote.showButton('contact');\n }\n\n $('.property-instant-quote-change-dates').removeClass('hidden');\n }\n // error or not available\n else {\n LIVEREZ.InstantQuote.showButton('contact');\n LIVEREZ.InstantQuote.setError(data.message.split('.').join('.
'));\n LIVEREZ.InstantQuote.showDates();\n }\n\n LIVEREZ.InstantQuote.showHeading(data.isAvailable);\n LIVEREZ.InstantQuote.hideLoading();\n });\n\n InstantQuote.killAjax = function(strError) {\n if (this.xhr.readystate != 4) {\n this.xhr.abort();\n this.xhr = null;\n }\n };\n\n InstantQuote.setError = function(strError) {\n $('.property-instant-quote-message')\n .html(strError)\n .removeClass('hidden');\n };\n\n InstantQuote.removeError = function(strButtonType) {\n $('.property-instant-quote-message')\n .empty()\n .addClass('hidden');\n };\n\n InstantQuote.showButton = function(strButtonType) {\n $('.property-instant-quote-action-button').addClass('hidden');\n if (strButtonType !== '') {\n $('.property-instant-quote-button-' + strButtonType).removeClass('hidden');\n }\n };\n\n InstantQuote.submitForm = function(strFormType) {\n $('#property-quote-form-' + strFormType).submit();\n };\n\n InstantQuote.showLoading = function() {\n $('.property-instant-quote-loading').removeClass('hidden');\n };\n\n InstantQuote.hideLoading = function() {\n $('.property-instant-quote-loading').addClass('hidden');\n };\n\n InstantQuote.showDates = function() {\n $('.property-instant-quote-dates').removeClass('hidden');\n };\n\n InstantQuote.hideDates = function() {\n $('.property-instant-quote-dates').addClass('hidden');\n };\n\n InstantQuote.showPricing = function() {\n $('.property-instant-quote-available').removeClass('hidden');\n };\n\n InstantQuote.hidePricing = function() {\n $('.property-instant-quote-available').addClass('hidden');\n $('.property-instant-quote-available').addClass('hidden');\n };\n\n InstantQuote.changeDates = function() {\n $('.property-instant-quote-change-dates').addClass('hidden');\n this.killAjax();\n this.showHeading(0);\n this.removeError();\n this.hideLoading();\n this.hidePricing();\n this.showDates();\n this.showButton('');\n };\n\n InstantQuote.showHeading = function(isAvailable) {\n $('.property-instant-quote-heading').addClass('hidden');\n\n if (isAvailable === 1) {\n $('.property-instant-quote-heading-available').removeClass('hidden');\n } else {\n $('.property-instant-quote-heading-default').removeClass('hidden');\n }\n };\n\n LIVEREZ.InstantQuote = InstantQuote;\n\n function cleanPrice(decimalPrice) {\n var parts = decimalPrice.split('.');\n if (parts[1] === '00') {\n decimalPrice = parts[0];\n }\n return decimalPrice;\n }\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n","(function(LIVEREZ, window, $, undefined) {\n var SearchResults = {};\n\n // set up empty object to be used for caching data, settings while on the page\n SearchResults.cacheObj = {};\n\n SearchResults.cacheObj.mapData = {\n markerObjs: [],\n markersArr: [],\n isOpen: false,\n instance: null,\n };\n\n SearchResults.setSearch = function(SearchObj) {\n this.cacheObj.SearchObj = SearchObj;\n return this;\n };\n\n SearchResults.searchOrder = function(OrderBy) {\n this.cacheObj.SearchObj.Sort = OrderBy;\n this.cacheObj.SearchObj.currentPage = 1;\n return this;\n };\n\n SearchResults.searchRun = function() {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchStart);\n\n var _this = this;\n\n // if we already have an ajax request, abort it and use the new one\n if (_this.xhr) {\n _this.xhr.abort();\n _this.xhr = null;\n }\n\n var _sendData = {\n Beds: _this.cacheObj.SearchObj.Bedrooms,\n sleeps: _this.cacheObj.SearchObj.Guests,\n arrivaldate: _this.cacheObj.SearchObj.ArrivalDate,\n departuredate: _this.cacheObj.SearchObj.DepartureDate,\n comparesearch: _this.cacheObj.SearchObj.CompareSearch,\n style: _this.cacheObj.SearchObj.Style,\n categoryid: Array.isArray(_this.cacheObj.SearchObj.CategoryID)\n ? _this.cacheObj.SearchObj.CategoryID.join(',')\n : _this.cacheObj.SearchObj.CategoryID,\n destinationID: Array.isArray(_this.cacheObj.SearchObj.DestinationID)\n ? _this.cacheObj.SearchObj.DestinationID.join(',')\n : _this.cacheObj.SearchObj.DestinationID,\n communityid: Array.isArray(_this.cacheObj.SearchObj.CommunityID)\n ? _this.cacheObj.SearchObj.CommunityID.join(',')\n : _this.cacheObj.SearchObj.CommunityID,\n admincustdataid: _this.cacheObj.SearchObj.AdminCustDataID,\n dynsiteid: _this.cacheObj.SearchObj.DynsiteID,\n searchtype: _this.cacheObj.SearchObj.SearchType,\n searchOrigin: _this.cacheObj.SearchObj.SearchOrigin,\n advs: _this.cacheObj.SearchObj.AdvancedSearch,\n pagedataid: _this.cacheObj.SearchObj.pagedataid,\n pageSize: _this.cacheObj.SearchObj.pageSize,\n currentPage: _this.cacheObj.SearchObj.currentPage,\n flexibleDates: _this.cacheObj.SearchObj.flexibleDates,\n searchAmenities: _this.cacheObj.SearchObj.searchAmenities,\n showOnlySpecials: _this.cacheObj.SearchObj.showOnlySpecials,\n flexibleDatesThreshold: _this.cacheObj.SearchObj.flexibleDatesThreshold,\n };\n\n // console.log(_sendData);\n\n if (_this.cacheObj.SearchObj.Sort > 0) {\n _sendData.O = this.cacheObj.SearchObj.Sort;\n }\n\n _this.xhr = $.ajax({\n type: 'get',\n url:\n LIVEREZ.DynsiteFunctions.getServerName() + '/inc/api/webservices.aspx?method=searchresults',\n data: _sendData,\n dataType: 'json',\n success: function(data, status, error) {\n data.comparesearch = _sendData.comparesearch;\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchComplete, data);\n },\n error: function(data, status, error) {\n if (!status === 'abort') {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchComplete, { error: error });\n }\n },\n });\n };\n\n SearchResults.getCalendarSuggestions = function(preferences) {\n var _searchProperties = [];\n\n if (\n preferences.hasOwnProperty('properties') &&\n Array.isArray(preferences.properties) &&\n preferences.properties.length\n ) {\n _searchProperties = preferences.properties.map(function(property) {\n return property.pageDataID;\n });\n }\n\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsStart);\n\n var _this = this;\n\n // if we already have an ajax request, abort it and use the new one\n if (_this.csxhr) {\n _this.csxhr.abort();\n _this.csxhr = null;\n }\n\n var searchedDate = new Date(_this.cacheObj.SearchObj.ArrivalDate);\n var searchEnd = new Date(_this.cacheObj.SearchObj.DepartureDate);\n\n var _daysSearched = (searchEnd - searchedDate) / (1000 * 60 * 60 * 24);\n\n _this.daysBack = 5;\n _this.daysForward = _daysSearched > 15 ? _daysSearched + 5 : 15;\n\n var startDate = LIVEREZ.DynsiteFunctions.dateObjectToString(\n new Date(new Date(searchedDate).setDate(searchedDate.getDate() - _this.daysBack))\n );\n var stopDate = LIVEREZ.DynsiteFunctions.dateObjectToString(\n new Date(new Date(searchedDate).setDate(searchedDate.getDate() + _this.daysForward))\n );\n\n var consecutiveDays = Math.floor(_daysSearched * 0.8);\n\n if (consecutiveDays < 2) {\n consecutiveDays = 2;\n }\n\n var _sendData = {\n bedrooms: _this.cacheObj.SearchObj.Bedrooms,\n guests: _this.cacheObj.SearchObj.Guests,\n startDate: startDate,\n endDate: stopDate,\n categoryid: Array.isArray(_this.cacheObj.SearchObj.CategoryID)\n ? _this.cacheObj.SearchObj.CategoryID.join(',')\n : _this.cacheObj.SearchObj.CategoryID,\n destinationID: Array.isArray(_this.cacheObj.SearchObj.DestinationID)\n ? _this.cacheObj.SearchObj.DestinationID.join(',')\n : _this.cacheObj.SearchObj.DestinationID,\n communityid: Array.isArray(_this.cacheObj.SearchObj.CommunityID)\n ? _this.cacheObj.SearchObj.CommunityID.join(',')\n : _this.cacheObj.SearchObj.CommunityID,\n admincustdataid: _this.cacheObj.SearchObj.AdminCustDataID,\n dynsiteid: _this.cacheObj.SearchObj.DynsiteID,\n consecutiveDays: consecutiveDays,\n maxProperties: 3,\n searchOrigin: _this.cacheObj.SearchObj.SearchOrigin,\n };\n\n _this.csxhr = $.ajax({\n type: 'get',\n url:\n LIVEREZ.DynsiteFunctions.getServerName() +\n '/inc/api/webservices.aspx?method=calendarsuggestions',\n data: _sendData,\n dataType: 'json',\n success: function(data, status, error) {\n var finalProps = [];\n\n if (data.length) {\n finalProps = data.filter(function(property) {\n return _searchProperties.indexOf(property.PageDataID) === -1;\n });\n }\n\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsComplete, {\n preferences: preferences,\n data: finalProps,\n });\n },\n error: function(data, status, error) {\n if (!status === 'abort') {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsComplete, { error: error });\n } else {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchSuggestionsComplete, {\n error: 'error fetching results',\n });\n }\n },\n });\n };\n\n SearchResults.CompareProperties = function() {\n var _this = this;\n if (_this.CheckCompare()) {\n document.Search_xml.PageDataID.value = _this.CompareCheckboxArr.join(',');\n document.Search_xml.submit();\n }\n };\n\n SearchResults.CheckCompare = function() {\n var _this = this;\n _this.CompareCheckboxArr = [];\n\n $('input:checkbox[name=PageDataID]:checked').each(function() {\n _this.CompareCheckboxArr.push($(this).val());\n });\n\n if (this.CompareCheckboxArr.length == 0) {\n alert('No Properties were selected. Please select up to 3 properties to compare.');\n return false;\n } else if (this.CompareCheckboxArr.length == 1) {\n alert('You must select more than 1 property to compare homes.');\n return false;\n } else if (this.CompareCheckboxArr.length > 3) {\n alert('To compare homes, You can only select 3 homes at a time.');\n return false;\n }\n\n return true;\n };\n\n SearchResults.setView = function(strView) {\n LIVEREZ.Storage.set('SearchResultsView', strView);\n return this;\n };\n\n SearchResults.getView = function(strView) {\n return LIVEREZ.Storage.get('SearchResultsView');\n };\n\n SearchResults.saveResultsData = function(resultsData) {\n this.cacheObj.results = resultsData;\n return this;\n };\n\n SearchResults.renderResultsbyView = function(callback, addtPropAvailMsgLocation) {\n if (this.cacheObj.results) {\n var data = this.cacheObj.results;\n var _this = this;\n var errorMsg = '';\n var propertiesDiv = $('
');\n\n _this.cacheObj.mapData.markerObjs.length = 0;\n\n if (data.properties && data.properties.length) {\n var propertiesStr = '';\n\n if (_this.getView() === 'grid') {\n propertiesStr +=\n '
    ';\n }\n\n data.properties.forEach(function(propData, index) {\n if (_this.getView() === 'grid') {\n if (index > 0 && index % 3 === 0) {\n propertiesStr +=\n '
    ';\n }\n\n propertiesStr += _this.SearchResultsTemplateGrid(data, propData);\n } else {\n propertiesStr += _this.SearchResultsTemplateList(data, propData);\n }\n\n // add the property data to the markers object array for use later signifying this property has a lat and long\n if (propData.latitude && propData.longitude) {\n propData.currencySymbol = propData.currencySymbol || data.currencySymbol;\n propData.currency = propData.currency || data.currency;\n _this.cacheObj.mapData.markerObjs.push(propData);\n }\n });\n\n if (_this.getView() === 'grid') {\n propertiesStr += '
';\n }\n\n propertiesDiv.append(propertiesStr);\n\n // create a map button for users to click\n if (_this.cacheObj.mapData.markerObjs.length > 0) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchCreateMapImage, {\n lat: _this.cacheObj.mapData.markerObjs[0].latitude,\n lng: _this.cacheObj.mapData.markerObjs[0].longitude,\n });\n }\n } else {\n if (data.returnMessageText) {\n errorMsg += data.returnMessageText;\n } else {\n errorMsg +=\n 'We couldn’t find any results that matched your criteria.
Try adjusting your dates or removing some search filters to show more properties.';\n }\n }\n\n // create a week to week message if week to week are present\n if (data.weekToWeek && data.weekToWeek.hasProperties) {\n errorMsg += '
';\n\n if (data.properties && data.properties.length) {\n errorMsg += '

Additional Properties Available

';\n }\n\n errorMsg += '
' + data.weekToWeek.messageText + '
';\n\n errorMsg += '
';\n if (data.weekToWeek.prevSuggestions.length) {\n errorMsg += '
';\n errorMsg += '
Try Previous Week
';\n data.weekToWeek.prevSuggestions.forEach(function(suggestion) {\n //mutation is bad :(\n suggestion.fixedStartDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n suggestion.startDate,\n dateFormatType\n );\n suggestion.fixedEndDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n suggestion.endDate,\n dateFormatType\n );\n\n errorMsg +=\n '';\n });\n errorMsg += '
';\n }\n\n if (data.weekToWeek.nextSuggestions.length) {\n errorMsg += '
';\n errorMsg += '
Try Next Week
';\n data.weekToWeek.nextSuggestions.forEach(function(suggestion) {\n //mutation is bad :(\n suggestion.fixedStartDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n suggestion.startDate,\n dateFormatType\n );\n suggestion.fixedEndDate = LIVEREZ.DynsiteFunctions.fixEuroDatesForAPI(\n suggestion.endDate,\n dateFormatType\n );\n\n errorMsg +=\n '';\n });\n errorMsg += '
';\n }\n\n errorMsg += '
';\n errorMsg += '
';\n } else if (\n data.minimumNightsStay &&\n data.minimumNightsStay.hasProperties &&\n data.minimumNightsStay.showMinNightsStayMessage !== false\n ) {\n if (data.properties && data.properties.length) {\n errorMsg += '

Additional Properties Available

';\n }\n\n errorMsg +=\n '
' + data.minimumNightsStay.messageText + '
';\n }\n\n // if error message exists, add it to the results\n if (errorMsg !== '') {\n if (addtPropAvailMsgLocation === 'top') {\n propertiesDiv.prepend('
' + errorMsg + '
');\n } else {\n propertiesDiv.append('
' + errorMsg + '
');\n }\n }\n\n try {\n setTimeout(function() {\n LIVEREZ.Publisher.publish(LIVEREZ.events.resultsRenderComplete);\n });\n } catch (error) {\n console.log(error);\n }\n\n callback(propertiesDiv);\n }\n // no data stored, go get some data\n else {\n SearchResults.searchRun();\n }\n };\n\n SearchResults.createMap = function(mapType) {\n var _this = this;\n var markers = this.cacheObj.mapData.markerObjs;\n\n $('.search-results-map-view-header-span').text(\n 'Viewing Map for ' + markers.length + ' Vacation Rentals'\n );\n\n if (mapType === LIVEREZ.constants.MAP_TYPE.google) {\n var mapOptions = {\n zoom: 10,\n center: new google.maps.LatLng(markers[0].latitude, markers[0].longitude),\n styles: [\n {\n featureType: 'poi.business',\n elementType: 'labels',\n stylers: [{ visibility: 'off' }],\n },\n ],\n };\n\n var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);\n\n _this.cacheObj.mapData.instance = map;\n\n // create a single infowindow so that only 1 can be open at a time\n this.infowindow = new google.maps.InfoWindow();\n } else if (mapType === LIVEREZ.constants.MAP_TYPE.leaflet) {\n if (_this.cacheObj.mapData.instance) {\n _this.cacheObj.mapData.instance.off();\n _this.cacheObj.mapData.instance.remove();\n }\n\n var mapOptions = {\n scrollWheelZoom: false,\n };\n\n var map = L.map('map_canvas', mapOptions);\n\n _this.cacheObj.mapData.instance = map;\n\n //delete all the current markers from the map before we proceed to create / add new ones\n _this.deleteAllMapMarkers(mapType);\n\n if (Array.isArray(markers) && markers.length) {\n map.setView([markers[0].latitude, markers[0].longitude], 10);\n } else {\n map.setView([43.68131, -116.362402], 10);\n }\n\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution:\n '© OpenStreetMap contributors',\n }).addTo(map);\n }\n\n this.createMapMarkers(map, markers, mapType);\n };\n\n SearchResults.deleteAllMapMarkers = function(mapType) {\n var _this = this;\n\n for (var i = 0; i < this.cacheObj.mapData.markersArr.length; i++) {\n if (mapType === LIVEREZ.constants.MAP_TYPE.google) {\n _this.cacheObj.mapData.markersArr[i].setMap(null);\n } else if (mapType === LIVEREZ.constants.MAP_TYPE.leaflet) {\n if (_this.cacheObj.mapData.instance) {\n _this.cacheObj.mapData.instance.removeLayer(_this.cacheObj.mapData.markersArr[i]);\n }\n }\n }\n\n this.cacheObj.mapData.markersArr.length = 0;\n };\n\n SearchResults.createMapMarkers = function(map, markers, mapType) {\n var _this = this;\n\n if (Array.isArray(markers) && markers.length) {\n if (mapType === LIVEREZ.constants.MAP_TYPE.google) {\n var bounds = new google.maps.LatLngBounds();\n\n markers.forEach(function(marker) {\n var infoWindowHTML = LIVEREZ.SearchResults.SearchResultsTemplateMapInfoWindow(marker);\n var markerLatLng = new google.maps.LatLng(marker.latitude, marker.longitude);\n\n var marker = new google.maps.Marker({\n position: markerLatLng,\n map: map,\n title: marker.pid,\n });\n\n // put the marker in an array so we can remove it from the map later if the results change\n _this.cacheObj.mapData.markersArr.push(marker);\n\n google.maps.event.addListener(marker, 'click', function() {\n _this.infowindow.setContent(infoWindowHTML);\n _this.infowindow.open(map, this);\n });\n\n // extend the map bounds with this markers position\n bounds.extend(markerLatLng);\n });\n\n // set the map to fit the bounds\n map.fitBounds(bounds);\n } else if (mapType === LIVEREZ.constants.MAP_TYPE.leaflet) {\n var featureGroup = L.featureGroup().addTo(map);\n\n markers.forEach(function(marker) {\n var infoWindowHTML = LIVEREZ.SearchResults.SearchResultsTemplateMapInfoWindow(marker);\n L.marker([marker.latitude, marker.longitude])\n .addTo(featureGroup)\n .bindPopup(infoWindowHTML);\n\n // put the marker in an array so we can remove it from the map later if the results change\n _this.cacheObj.mapData.markersArr.push(marker);\n });\n\n featureGroup.addTo(map);\n map.fitBounds(featureGroup.getBounds());\n }\n }\n };\n\n SearchResults.openMap = function(mapType) {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchMapOpen);\n this.cacheObj.mapData.isOpen = true;\n this.createMap(mapType);\n };\n\n SearchResults.closeMap = function() {\n LIVEREZ.Publisher.publish(LIVEREZ.events.searchMapClose);\n this.cacheObj.mapData.isOpen = false;\n };\n\n SearchResults.changeDates = function(startD, endD) {\n $('#txtStartDate').val(startD);\n $('#txtStartDate-mobile').val(startD);\n $('#AD').val(startD);\n\n $('#txtEndDate').val(endD);\n $('#txtEndDate-mobile').val(endD);\n $('#DD').val(endD);\n\n $('#FlexibleDatesThreshold').val('');\n\n window.scrollTo(0, 0);\n\n //$('.start-date').val(startD);\n //$('.end-date').val(endD);\n\n return this;\n };\n\n SearchResults.renderAmenities = function(amenities, cb) {\n var str = '';\n\n for (var key in amenities) {\n var list = amenities[key].filter(function(item) {\n return (item.hasOwnProperty('count') && item.count > 0) || item.checked;\n });\n\n if (Array.isArray(list) && list.length) {\n list.forEach(function(amenity, i) {\n var item = $('
').addClass(\n 'search-amenities-item checkbox secondary-advanced-checkbox'\n );\n\n var check = $('')\n .attr('type', 'checkbox')\n .attr('id', 'search-amenitiy-' + amenity.amenityID)\n .attr('name', 'searchAmenities')\n .attr('checked', amenity.checked)\n .val(amenity.amenityID);\n\n var label = $('
 ';\n }\n html += '
' + calWeek + '' +\n content +\n '
' +\n defaults.templates.leftArrow +\n '' +\n defaults.templates.rightArrow +\n '
' +\n DPGlobal.headTemplate +\n '' +\n DPGlobal.footTemplate +\n '
' +\n '
' +\n '
' +\n '' +\n DPGlobal.headTemplate +\n DPGlobal.contTemplate +\n DPGlobal.footTemplate +\n '
' +\n '
' +\n '
' +\n '' +\n DPGlobal.headTemplate +\n DPGlobal.contTemplate +\n DPGlobal.footTemplate +\n '
' +\n '
' +\n '
' +\n '' +\n DPGlobal.headTemplate +\n DPGlobal.contTemplate +\n DPGlobal.footTemplate +\n '
' +\n '
' +\n '
' +\n '' +\n DPGlobal.headTemplate +\n DPGlobal.contTemplate +\n DPGlobal.footTemplate +\n '
' +\n '
' +\n '
';\n\n $.fn.datepicker.DPGlobal = DPGlobal;\n\n /* DATEPICKER NO CONFLICT\n * =================== */\n\n $.fn.datepicker.noConflict = function() {\n $.fn.datepicker = old;\n return this;\n };\n\n /* DATEPICKER VERSION\n * =================== */\n $.fn.datepicker.version = '1.7.1';\n\n $.fn.datepicker.deprecated = function(msg) {\n var console = window.console;\n if (console && console.warn) {\n console.warn('DEPRECATED: ' + msg);\n }\n };\n\n /* DATEPICKER DATA-API\n * ================== */\n\n $(document).on(\n 'focus.datepicker.data-api click.datepicker.data-api',\n '[data-provide=\"datepicker\"]',\n function(e) {\n var $this = $(this);\n if ($this.data('datepicker')) return;\n e.preventDefault();\n // component click requires us to explicitly show it\n datepickerPlugin.call($this, 'show');\n }\n );\n $(function() {\n datepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n });\n});\n","/*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof exports === 'object') {\n module.exports = factory;\n } else {\n root.echo = factory(root);\n }\n})(window, function(root) {\n 'use strict';\n\n var echo = {};\n\n var callback = function() {};\n\n var offset, poll, delay, useDebounce, unload;\n\n var isHidden = function(element) {\n return element.offsetParent === null;\n };\n\n var inView = function(element, view) {\n if (isHidden(element)) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n return box.right >= view.l && box.bottom >= view.t && box.left <= view.r && box.top <= view.b;\n };\n\n var debounceOrThrottle = function() {\n if (!useDebounce && !!poll) {\n return;\n }\n clearTimeout(poll);\n poll = setTimeout(function() {\n echo.render();\n poll = null;\n }, delay);\n };\n\n echo.init = function(opts) {\n opts = opts || {};\n var offsetAll = opts.offset || 0;\n var offsetVertical = opts.offsetVertical || offsetAll;\n var offsetHorizontal = opts.offsetHorizontal || offsetAll;\n var optionToInt = function(opt, fallback) {\n return parseInt(opt || fallback, 10);\n };\n offset = {\n t: optionToInt(opts.offsetTop, offsetVertical),\n b: optionToInt(opts.offsetBottom, offsetVertical),\n l: optionToInt(opts.offsetLeft, offsetHorizontal),\n r: optionToInt(opts.offsetRight, offsetHorizontal),\n };\n delay = optionToInt(opts.throttle, 250);\n useDebounce = opts.debounce !== false;\n unload = !!opts.unload;\n callback = opts.callback || callback;\n echo.render();\n if (document.addEventListener) {\n root.addEventListener('scroll', debounceOrThrottle, false);\n root.addEventListener('load', debounceOrThrottle, false);\n } else {\n root.attachEvent('onscroll', debounceOrThrottle);\n root.attachEvent('onload', debounceOrThrottle);\n }\n };\n\n echo.render = function(context) {\n var nodes = (context || document).querySelectorAll('[data-echo], [data-echo-background]');\n var length = nodes.length;\n var src, elem;\n var view = {\n l: 0 - offset.l,\n t: 0 - offset.t,\n b: (root.innerHeight || document.documentElement.clientHeight) + offset.b,\n r: (root.innerWidth || document.documentElement.clientWidth) + offset.r,\n };\n for (var i = 0; i < length; i++) {\n elem = nodes[i];\n if (inView(elem, view)) {\n if (unload) {\n elem.setAttribute('data-echo-placeholder', elem.src);\n }\n\n if (elem.getAttribute('data-echo-background') !== null) {\n elem.style.backgroundImage = 'url(' + elem.getAttribute('data-echo-background') + ')';\n } else if (elem.src !== (src = elem.getAttribute('data-echo'))) {\n elem.src = src;\n }\n\n if (!unload) {\n elem.removeAttribute('data-echo');\n elem.removeAttribute('data-echo-background');\n }\n\n callback(elem, 'load');\n } else if (unload && !!(src = elem.getAttribute('data-echo-placeholder'))) {\n if (elem.getAttribute('data-echo-background') !== null) {\n elem.style.backgroundImage = 'url(' + src + ')';\n } else {\n elem.src = src;\n }\n\n elem.removeAttribute('data-echo-placeholder');\n callback(elem, 'unload');\n }\n }\n if (!length) {\n echo.detach();\n }\n };\n\n echo.detach = function() {\n if (document.removeEventListener) {\n root.removeEventListener('scroll', debounceOrThrottle);\n } else {\n root.detachEvent('onscroll', debounceOrThrottle);\n }\n clearTimeout(poll);\n };\n\n return echo;\n});\n","(function(LIVEREZ, window, $, undefined) {\n const StripCalendar = function(starDate, endDate, datesArr) {\n var self = this;\n\n this.startDate = new Date(starDate);\n this.endDate = new Date(endDate);\n this.numberOfDays = getDateDiff(self.startDate, self.endDate);\n this.data = datesArr;\n\n this.startingMonth = this.startDate.getMonth();\n this.stoppingMonth = this.endDate.getMonth();\n\n this.displayDates = getDates(self.startDate, self.endDate);\n };\n\n var _isLeapYear = function(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n };\n\n var _getDaysInMonth = function(year, month) {\n return [31, _isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n };\n\n var _dates = {\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n daysSuperShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthsShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n };\n\n StripCalendar.prototype.generateHtml = function(callback) {\n var container = $('
').addClass('table-responsive');\n var table = $('').addClass('lr-strip-calendar');\n\n var _daysInEachMonth = getDaysInEachMonth(this.displayDates);\n\n var headingRow = $('').addClass('lr-strip-calendar--heading-row');\n var weekdayRow = $('').addClass('lr-strip-calendar--weekday-row');\n var dateRow = $('').addClass('lr-strip-calendar--date-row');\n\n // add months to heading row\n for (var key in _daysInEachMonth) {\n var monthIndex = key.split('_')[1];\n var month = $('
')\n .text(_dates.monthsShort[monthIndex])\n .attr('colspan', _daysInEachMonth[key]);\n headingRow.append(month);\n }\n\n // add days to the date row\n this.displayDates.forEach(function(item) {\n var weekday = $('').text(_dates.daysSuperShort[item.getDay()]);\n weekday.addClass('lr-strip-calendar--weekday');\n\n weekdayRow.append(weekday);\n\n var day = $('').text(item.getDate());\n day.addClass('lr-strip-calendar--day ' + formatDate(item));\n\n dateRow.append(day);\n });\n\n // paint the days with the correct classes\n this.data.forEach(function(calendarDay) {\n var current = dateRow.children('.' + formatDate(calendarDay.date));\n\n if (calendarDay.checkIn) {\n current.addClass('checkin');\n }\n if (calendarDay.checkOut) {\n current.addClass('checkout');\n }\n if (calendarDay.occupied) {\n current.addClass('occupied');\n }\n });\n\n table.append(headingRow);\n table.append(weekdayRow);\n table.append(dateRow);\n\n container.append(table);\n\n callback(container.html());\n };\n\n return (LIVEREZ.StripCalendar = StripCalendar);\n\n function formatDate(date) {\n return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();\n }\n\n function getDateDiff(date1, date2) {\n return Math.abs((date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24));\n }\n\n function getDates(d1, d2) {\n var dates = [];\n var currentDate = new Date(d1);\n var endDate = new Date(d2);\n\n while (currentDate <= endDate) {\n dates.push(new Date(currentDate));\n currentDate.setDate(currentDate.getDate() + 1);\n }\n return dates;\n }\n\n function getDaysInEachMonth(datesArr) {\n var obj = {};\n\n datesArr.forEach(function(item) {\n var _month = item.getMonth();\n var _year = item.getFullYear();\n\n var key = _year + '_' + _month;\n\n if (!obj.hasOwnProperty(key)) {\n obj[key] = 1;\n } else {\n obj[key] = obj[key] + 1;\n }\n });\n\n return obj;\n }\n})((window.LIVEREZ = window.LIVEREZ || {}), window, lrjQ);\n"],"sourceRoot":"/source/"}