var MIXIN_MEMBERSHIP={data:function(){return{membershipState:window.LoginStore.state,logos:{vipPerks:"/icons/viperks.svg",perksPlus:"/icons/perks-plus.svg",holidayPerks:"/icons/perks.svg"},membershipGuids:{holidayPerks:"5a9ff008-fcb5-48a0-a15b-2c891831ba5b",perksPlus:"7bc380a1-ecb2-4ee6-8bcd-52a3f19fec20",vipPerks:"5caa5f7e-88ca-4745-aeb5-b5a58f794b64",big4staff:"7d744ef7-bc99-4407-a79e-64c18c5aa832",big4stafftest:"0cb0eb1b-153b-426d-97b1-8048b409c46f"}}},computed:{membership:function(){return this.membershipState.membership},isLoggedIn:function(){return this.membershipState.membership!=null&&typeof this.membershipState.membership!="undefined"&&this.membershipState.membership.Type_MemberTypeID!=null&&typeof this.membershipState.membership.Type_MemberTypeID!="undefined"},isHolidayPerksMember:function(){return this.isLoggedIn?this.membership.Type_MemberTypeID==this.membershipGuids.holidayPerks:!1},isPerksPlusMember:function(){return this.isLoggedIn?this.membership.Type_MemberTypeID==this.membershipGuids.perksPlus:!1},isVipPerksMember:function(){return this.isLoggedIn?this.membership.Type_MemberTypeID==this.membershipGuids.vipPerks:!1},isExpiredMember:function(){return this.isLoggedIn?this.membership.Type_MemberTypeID==this.membershipGuids.holidayPerks&&this.membership.PreviousExpiry!=null:!1},isBig4StaffMember:function(){return this.isLoggedIn?this.membership.Type_MemberTypeID==this.membershipGuids.big4stafftest||this.membership.Type_MemberTypeID==this.membershipGuids.big4staff:!1},membershipLogo:function(){return this.isHolidayPerksMember?this.logos.perksPlus:this.isPerksPlusMember?this.logos.perksPlus:this.isVipPerksMember?this.logos.vipPerks:this.logos.perksPlus},canRenew:function(){var n=moment(this.membership.Expiry).diff(moment(),"month");return n<12},getLogoForMembership:function(n){return n==this.membershipGuids.holidayPerks?this.logos.holidayPerks:n==this.membershipGuids.perksPlus?this.logos.perksPlus:n==this.membershipGuids.vipPerks?this.logos.vipPerks:void 0},getCurrentMembershipTextColorClass:function(){return this.isHolidayPerksMember?"text-secondary":this.isPerksPlusMember?"text-secondary":this.isVipPerksMember?"text-tertiary":void 0},membershipLevel:function(){if(this.isLoggedIn){if(this.isHolidayPerksMember)return"Holiday Perks";if(this.isPerksPlusMember)return"Holiday Perks+";if(this.isVipPerksMember)return"VIPerks"}else return"";return""},isPerksPlusOrHigher:function(){return this.isPerksPlusMember||this.isVipPerksMember||this.isBig4StaffMember?!0:!1}},methods:{getLogoByMembershipLevel:function(n){switch(n){case 9:case 11:return this.logos.perksPlus;case 8:return this.logos.holidayPerks;case 10:case 2:return this.logos.vipPerks}},getMembershipTextColorClass:function(n){if(window.featureFlags.BAPI_3432_create_new_renewal_state_in_checkout_for_soon_to_expire_members)switch(n){case 9:return"text-secondary";case 8:return"text-primary";case 10:return"";case 2:return"text-tertiary";case 11:return"text-quaternary";default:return""}else switch(n){case 9:return"text-secondary";case 8:return"text-primary";case 10:case 2:return"text-tertiary"}},getMembershipBackgroundColorClass:function(n){switch(n){case 11:return"bg-quaternary";default:return""}}}},MIXIN_PASSWORD_CHECKER={methods:{passwordMeetsRequirements:function(n){return n.length>=8&&n.search(/\d/g)>-1?!0:!1}}},MIXIN_PRISTINE_VALIDATE={data:function(){return{pristine:null}},methods:{validate:function(){if(this.pristine=new Pristine(this.$el,{classTo:"c-field",errorClass:"has-error",successClass:"is-success",errorTextParent:"c-field",errorTextClass:"c-field__error"}),typeof this.addCustomValidators!="undefined"&&this.addCustomValidators(),typeof this.validationName!="undefined"){var n=document.querySelectorAll("."+this.validationName);return this.pristine.validate(n)}return this.pristine.validate()}}},MIXIN_TOGGLE={props:[],data:function(){return{active:!1}},methods:{toggle:function(){this.active=!this.active}}},MIXIN_CART={data:function(){return{MIXIN_CART_STATE:window.CartStore.state,availableDateResult:[]}},computed:{cartLoaded:function(){return this.MIXIN_CART_STATE.cartState!=window.CartState.LOADING},zipPaySelected:function(){return window.CheckoutStore.state.paymentType=="zipPay"},cartTotal:function(){var n=0;return _.each(this.cartAccommodationItems,function(t){n+=t.TransactionLineItem.ExtendedPrice}),n+=this.extrasAmount,n+=Math.abs(this.reductionAmount)*-1},paymentRequired:function(){return this.accommodationFullCost+this.extrasAmount+this.depositAmount+this.reductionAmount},accommodationFullCost:function(){var i=0,n,t;if(this.zipPaySelected)for(n=0;n<this.cartAccommodationItems.length;n++)i+=this.cartAccommodationItems[n].TransactionLineItem.ExtendedPrice;else for(n=0;n<this.cartAccommodationItems.length;n++)t=this.cartAccommodationItems[n],t.TransactionLineItem.AmountPaid==t.TransactionLineItem.ExtendedPrice&&(i+=t.TransactionLineItem.AmountPaid);return i},extrasAmount:function(){for(var n,i=0,t=0;t<this.cartExtraItems.length;t++)n=this.cartExtraItems[t],n.TransactionLineItem.AmountPaid==n.TransactionLineItem.ExtendedPrice&&(i+=n.TransactionLineItem.AmountPaid);return i},reductionAmount:function(){var n=0;return _.each(this.cartReductionItems,function(t){n+=t.CartItemTypeID===window.CartItemType.GIFTCARD_REDEMPTION?t.TransactionLineItem.AmountPaid:t.TransactionLineItem.ExtendedPrice}),n},hasExtras:function(){return this.cartExtraItems.length>0},hasFullAccommodationCost:function(){var n,t;if(this.zipPaySelected)return!0;for(n=0;n<this.cartAccommodationItems.length;n++)if(t=this.cartAccommodationItems[n],t.TransactionLineItem.AmountPaid==t.TransactionLineItem.ExtendedPrice)return!0;return!1},cartHasMembership:function(){var n=_.findIndex(this.MIXIN_CART_STATE.cartItems,{CartItemTypeID:window.CartItemType.MEMBERSHIP});return n>-1},cartHasGiftcard:function(){var n=_.findIndex(this.MIXIN_CART_STATE.cartItems,{CartItemTypeID:window.CartItemType.GIFTCARD});return n>-1},cartHasGiftcardRedemption:function(){var n=_.findIndex(this.MIXIN_CART_STATE.cartItems,{CartItemTypeID:window.CartItemType.GIFTCARD_REDEMPTION});return n>-1},cartHasPromocode:function(){var n=_.findIndex(this.MIXIN_CART_STATE.cartItems,{CartItemTypeID:window.CartItemType.PROMOTION});return n>-1},cartAccommodationItems:function(){return _.filter(this.MIXIN_CART_STATE.cartItems,function(n){return n.CartItemTypeID==window.CartItemType.ACCOMMODATION})},cartExtraItems:function(){return _.filter(this.MIXIN_CART_STATE.cartItems,function(n){return n.CartItemTypeID==window.CartItemType.MEMBERSHIP||n.CartItemTypeID==window.CartItemType.GIFTCARD||n.CartItemTypeID==window.CartItemType.PRODUCT||n.CartItemTypeID==window.CartItemType.GIFTCARD_POSTAGE_FEE})},cartReductionItems:function(){return _.filter(this.MIXIN_CART_STATE.cartItems,function(n){return n.CartItemTypeID==window.CartItemType.PROMOTION||n.CartItemTypeID==window.CartItemType.GIFTCARD_REDEMPTION})},hasDeposit:function(){var n,t;if(this.zipPaySelected)return!1;for(n=0;n<this.MIXIN_CART_STATE.cartItems.length;n++)if(t=this.MIXIN_CART_STATE.cartItems[n],t.TransactionLineItem.AmountPaid!=t.TransactionLineItem.ExtendedPrice&&t.TransactionLineItem.AmountPaid>0)return!0;return!1},depositAmount:function(){var i=0,t,n;if(this.zipPaySelected)return 0;for(t=0;t<this.MIXIN_CART_STATE.cartItems.length;t++)n=this.MIXIN_CART_STATE.cartItems[t],n.TransactionLineItem.AmountPaid!=n.TransactionLineItem.ExtendedPrice&&n.TransactionLineItem.AmountPaid>0&&(i+=n.TransactionLineItem.AmountPaid);return i}}},MIXIN_BOOKING_WIDGET={data:function(){return{store:window.BookingStore,allotmentNumberForPricingDisplay:"",dateClicked:"31",dateForCheckout:""}},mixins:[MIXIN_CART],methods:{getAvailableRangesForDateRange:function(n,t){for(var r=[],i=0;i<this.availableDatesRanges.length;i++)moment(this.availableDatesRanges[i].start).isSameOrAfter(n)&&moment(this.availableDatesRanges[i].start).isSameOrBefore(t)&&r.push(this.availableDatesRanges[i]),moment(n).isSameOrAfter(this.availableDatesRanges[i].start)&&moment(n).isSameOrBefore(this.availableDatesRanges[i].end)&&r.push(this.availableDatesRanges[i]);return r}},computed:{currentAccommodation:function(){var n=_.find(this.store.state.accommodation,{AccommodationID:this.store.state.accommodationId});return(n||(n=_.find(this.store.state.accommodation,{AccommodationId:this.store.state.accommodationId})),n!=null)?n:(console.debug("Unable to resolve price for accommodation selection."),null)},availableDatesRanges:function(){var r=[],t,u,i,f,n;if(this.availableDates.length>0)for(t=moment(this.availableDates[0]),u=moment(t),n=0;n<this.availableDates.length;n++)_.some(this.availableDates,function(n){return moment(n).isSame(t)})||(r.push({start:u.toDate(),end:moment(t).add(-1,"days")}),t=moment(this.availableDates[n]),u=moment(t)),n===this.availableDates.length-1?r.push({start:u.toDate(),end:moment(t)}):t.add(1,"day");if(this.state.startDate!=null&&this.state.endDate!=null&&(i=r,i.length>0)){for(f=!1,n=0;n<i.length;n++)moment(this.state.startDate).toDate()<i[n].start||moment(this.state.endDate).toDate()>i[n].end||(f=!0);f||window.BookingEventBus.$emit("range-contains-unavailable")}return r},availableDates:function(){var u=moment().add(5,"years"),e=moment().subtract(5,"years"),a=moment().subtract(1,"day").endOf("day"),n=[],o,i,f,r,h,c,s,l,t;if(window.BookingStore.state.adjustmentDate==null||window.BookingStore.state.rangeSelected||(o=moment(window.BookingStore.state.adjustmentDate),u=o,e=o,u=moment(u).add(28,"days"),e=moment(e).subtract(28,"days")),this.currentAccommodation&&this.currentAccommodation.AvailabilityCacheData&&this.currentAccommodation.AvailabilityCacheData.Rates&&(i=null,i=this.store.state.currentOfferCode!==null&&this.isOnDealPage?_.find(this.currentAccommodation.AvailabilityCacheData.Rates,{RateID:parseInt(this.store.state.currentOfferCode)}):this.currentAccommodation.AvailabilityCacheData.Rates[0],typeof i!="undefined"&&i!==null))for(t=0;t<i.Dates.length;t++)i.Dates[t].IsAvailable&&(f=moment(i.Dates[t].Date),f.isAfter(a)&&(f.isSame(u)||f.isSame(e)||n.push(moment(f))));if(n=_.uniqBy(n,function(n){return n.format()}),window.BookingStore.state.adjustmentDate!=null&&!window.BookingStore.state.rangeSelected)for(r=moment(o);!r.isSame(u);){if(!_.some(n,function(n){return n.isSame(r)})){n.push(moment(r));h=moment(r).add(1,"days");c=_.findIndex(n,function(n){return n.isSame(h)});c>-1&&n.splice(c,1);break}r.add(1,"days")}for(window.BookingStore.state.endDate!=null&&(s=moment(window.BookingStore.state.endDate),_.some(n,function(n){return n.isSame(r)})||n.push(moment(s)),s.add(1,"days"),l=_.findIndex(n,function(n){return n.isSame(s)}),h>-1&&n.splice(l,1)),n=n.filter(function(n){return typeof n!="undefined"&&n!==null}),t=0;t<n.length;t++)n[t]=n[t].toDate();return n=_.uniqBy(n,function(n){return n.toDateString()}),n.sort(function(n,t){var i=new Date(n),r=new Date(t);return i-r}),this.$data.availableDateResult=n,n},allUnavailable:function(){for(var n=0;n<this.currentAccommodation.CurrentPMSResult.length;n++)if(this.currentAccommodation.CurrentPMSResult[n].IsAvailable)return!1;return!0},isSite:function(){return this.currentAccommodation!=undefined?window.BookingStore.state.quickBooking.AccommodationType=="Site"?!0:this.currentAccommodation.IsCabin===!1||this.currentAccommodation.AccommodationType&&this.currentAccommodation.AccommodationType.toUpperCase()=="SITES":window.BookingStore!=undefined?window.BookingStore.state.quickBooking.AccommodationType=="Site"?!0:window.BookingStore.state.quickBooking.AccommodationType.toUpperCase()=="SITE":!1},isOnDealPage:function(){return this.store.state.isOnDealPage},canAddToCart:function(){return this.cartLoaded?this.store.state.canAddToCart?this.store.state.startDate==null?!1:this.store.state.endDate==null?!1:this.store.state.adults==0&&this.store.state.children==0&&this.store.state.infants==0?!1:this.isSite&&(!this.store.state.equipment.Width||!this.store.state.equipment.Length||!this.store.state.equipment.EquipmentTypeID)?!1:!this.selectedAllotment||!this.selectedAllotment.IsAvailable?!1:!0:!1:!1},selectedAllotment:function(){var n=this,t;if(n.currentAccommodation!=undefined)return t=_.find(n.currentAccommodation.CurrentPMSResult,function(t){return t.Offercode==n.store.state.currentOfferCode}),window.BookingEventBus.$emit("deposit-amount-update",t),t},priceLoading:function(){return this.store.state.priceLoading},datesSelected:function(){return this.store.state.startDate!=null&&this.store.state.endDate!=null}}},MIXIN_CHECK_OVERLAPPING_BOOKINGS={data:function(){return{MIXIN_CHECK_OVERLAPPING_BOOKINGS_STORE:window.CartStore}},methods:{datesOverlap:function(n,t,i,r){return i.isSameOrAfter(n,"day")&&i.isBefore(t,"day")?!0:r.isAfter(n,"day")&&r.isSameOrBefore(t,"day")?!0:!1}},computed:{hasOverlappingBookings:function(){for(var t,n=this.cartAccommodationItems,i=0;i<n.length;i++)for(t=0;t<n.length;t++)if(n[i].index!=n[t].index&&this.datesOverlap(moment(n[i].TransactionLineItem.ArrivalDate),moment(n[i].TransactionLineItem.DepartureDate),moment(n[t].TransactionLineItem.ArrivalDate),moment(n[t].TransactionLineItem.DepartureDate)))return!0;return!1},cartHasAccommodationItems:function(){return this.cartAccommodationItems.length>0},cartAccommodationItems:function(){var n=window.CartStore.state.cartItems;return _.filter(n,function(n){return n.CartItemTypeID==window.CartItemType.ACCOMMODATION})},overlappingBookings:function(){for(var t,r=[],n=this.cartAccommodationItems,i=0;i<n.length;i++)for(t=0;t<n.length;t++)n[i].index!=n[t].index&&this.datesOverlap(moment(n[i].TransactionLineItem.ArrivalDate),moment(n[i].TransactionLineItem.DepartureDate),moment(n[t].TransactionLineItem.ArrivalDate),moment(n[t].TransactionLineItem.DepartureDate))&&(_.some(r,{index:n[i].index})||r.push(n[i]),_.some(r,{index:n[t].index})||r.push(n[t]));return r},cartHasGiftcards:function(){var n=this.MIXIN_CHECK_OVERLAPPING_BOOKINGS_STORE.state.cartItems,t=_.filter(n,function(n){return n.CartItemTypeID==window.CartItemType.GIFTCARD});return t.length>0}}},MIXIN_CHECKOUT_DEALS={computed:{cartAccommodationItems:function(){return _.filter(this.state.cartState.cartItems,function(n){return n.CartItemTypeID==window.CartItemType.ACCOMMODATION})},hasMemberOnlyDeal:function(){for(var n=0;n<this.cartAccommodationItems.length;n++)if(this.cartAccommodationItems[n].IsMemberOnlyDeal)return!0;return!1},hasDeals:function(){for(var n=0;n<this.cartAccommodationItems.length;n++)if(this.cartAccommodationItems[n].TransactionLineItem.Booking.SpecialOfferID>0)return!0;return!1}}},MIXIN_PETS_AGREEMENT={methods:{},computed:{showPetsAgreement:function(){return this.dogAccommodation.length>0},dogAccommodation:function(){for(var t=[],n=0;n<this.cartAccommodationItems.length;n++)this.cartAccommodationItems[n].PetFriendly&&t.push(this.cartAccommodationItems[n]);return t},cartAccommodationItems:function(){return _.filter(this.state.cartState.cartItems,function(n){return n.CartItemTypeID==window.CartItemType.ACCOMMODATION})}}},MIXIN_SEARCH_SAVED_SEARCHES;Vue.mixin({data:function(){return{Common:{CdnAssetUrl:function(n){return!!CDN_DOMAIN&&!n.startsWith(CDN_DOMAIN)?CDN_DOMAIN+n:n}}}},methods:{URIDecode:function(n){return decodeURIComponent(n).replace(/[+]/g," ")},RoundPrice:function(n){return Math.ceil(n)},RoundDiscountPrice:function(n){return Math.floor(n)},DisplayPriceWithDecimals:function(n){var t=n.toFixed(2).toString();return t.endsWith(".00")?t.replace(".00",""):t},GetRichtextString:function(n){var t=new RegExp("<ul>","g");return n.replace(t,"<ul class='ticks'>")}}});MIXIN_SEARCH_SAVED_SEARCHES={methods:{UpdateCookie:function(n){var t=CookieHelper.GetCookieValue(".BIG4_SAVED_SEARCHES"),r=5,i;t!=""?(t=JSON.parse(t),!t.Searches||(i=_.findIndex(t.Searches,{url:n.url}),i>-1&&t.Searches.splice(i,1),t.Searches.push(n),t.Searches.length>r&&t.Searches.splice(0,t.Searches.length-r))):t={Searches:[n]};CookieHelper.SetCookieValue(".BIG4_SAVED_SEARCHES",JSON.stringify(t))}}}