function newsletterSubscriptionFormController(){var n=this;n.newsletterSubscriptionTitle}function tripRequestQuoteForm(n){function i(n){t.tripCode=n.TripCode;t.tripName=n.Name}var t=this;t.tripCode="";t.tripName="";t.init=function(n,t){i({TripCode:n,Name:t})};n.$on("broadcast.tripFinderController.updateTripData",function(n,t){if(!(t&&t.TripCode&&t.Name)){console.error("Error updating trip data in tripRequestQuoteForm controller");return}i(t)})}function tripRequestQuoteFormInitialiseModel(n,t){var i=this;i.requestQuote=function(n){var i=$("[data-trip-request-quote-form] .js-form-section");i.show().next().hide();t.$broadcast("broadcast.tripFinderController.updateTripData",n)}}function eventSignupController(n){function i(){n.$broadcast("broadcast.eventSignupController.doSubmit")}function r(n){t.form.eventId=n}function u(){return!t.form.isValid&&t.form.isSubmitted}function f(){var i="",r,u,n;if(!t.form.eventSessionIds)return i;for(r=Object.keys(t.form.eventSessionIds).map(function(n){return t.form.eventSessionIds[n]}),u="",n=0;n<r.length;n++)r[n]&&(i+=u+r[n],u===""&&(u=","));return i!==""&&(t.form.isValid=!0),i}var t=this;t.form={eventId:"",eventSessionIds:{},eventSessionIdsInvalid:u,eventSessionIdsString:f,isSubscribeNewsletter:!1,isValid:!1,isSubmitted:!1,doSubmit:i,setEventId:r}}function phoenixFormController(n,t){function r(){n.$broadcast("broadcast.phoenixFormController.doSubmit")}function u(i,r,u,f){t(function(){n.$broadcast("broadcast.phoenixFormController.init",{hideTitle:i,hideSubtitle:r,reCaptchaId:u,cryptographicNonce:f})})}var i=this;i.form={isSubmitted:!1,doSubmit:r};i.init=u}function stickyNavController(n){var t=this,i;t.navItems=[];t.hasAnchorLinks=!1;t.init=function(){for(var n=0;n<arguments.length;n++)t.navItems.push({id:arguments[n],isActive:n==0?!0:!1})};t.isActive=function(n){for(var i=0;i<t.navItems.length;i++)if(t.navItems[i].id==n)return t.navItems[i].isActive;return!1};t.scrollTo=function(t){i(t);n.$broadcast("broadcast.stickyNavLinkClicked",{id:t})};t.anchorExists=function(n){var i=angular.element("#"+n).length>0;return i&&(t.hasAnchorLinks=!0),i};i=function(n){for(var i=0;i<t.navItems.length;i++)t.navItems[i].isActive=t.navItems[i].id==n?!0:!1}}(function(){"use strict";function t(t,i,r,u,f,e,o){function s(n,s,h,c){var v={},a={},l={};v.scrollTo=function(n){angular.element("html, body").animate({scrollTop:n},100)};l.$details=angular.element("#booking-steps--passenger-details form");l.$detailsDependentFields=$("[data-parent-sitecore-id]",l.$details);l.unbindedInputs=[];l.$payment=angular.element(".booking-form__payment__card form");l.$paypalPayment=angular.element(".booking-form__paypal__card form");l.$paymentSubmitButton=angular.element("#booking-steps--payment-details .booking-form__payment__process");l.$paymentHostedFields=l.$payment.find(".braintree__hosted-field");l.$cardNumberField=angular.element("#payment-gateway--card-number");l.$cardIcon=$("<div/>",{id:"payment-gateway--card-icon"});l.$termsAndConditionsControl=angular.element(".booking-form__payment__tnc");l.$paypalTermsAndConditionsControl=angular.element(".booking-form__paypal__tnc");l.isHostedFieldsValid=!1;l.hostedFieldInstance={};l.hostedFields={number:{selector:"#payment-gateway--card-number"},cvv:{selector:"#payment-gateway--card-security",placeholder:"CVV"},expirationDate:{selector:"#payment-gateway--card-expiry",placeholder:"MM/YY"}};l.hostedFieldsStyles={input:{"font-size":"16px","font-family":"helvetica, tahoma, calibri, sans-serif",color:"#04183b","font-weight":"bold"},":focus":{color:"black"},"::-ms-clear":{display:"none",width:"0",height:"0",opacity:"0"},".invalid":{color:"#db301a"}};l.resetSurcharges=function(){l.$cardIcon.removeClass();c.payment.selectedCardBrand="";c.payment.selectedCardBrandKey="";c.payment.selectedCardType="";c.booking.selectedSurchargePct="";c.booking.totalAmountInclusive=c.booking.totalAmount};l.getSurchargesDetails=function(){var n,f=c.booking.surchargeDetails,e=c.payment.selectedMethod==="paypal"?c.payment.selectedMethod:c.payment.selectedCardType,t=c.payment.selectedMethod==="paypal"?"creditSurcharge":c.payment.selectedMethod+"Surcharge",r=i("filter")(f,{cardKey:e},!0);return r.length?(n=r[0],{surchargeAmount:u.calculateSurcharge(c.booking.totalAmount,n[t]),selectedSurchargePct:n[t],cardBrand:n.cardBrand,cardKey:n.cardKey}):!1};l.setSurcharges=function(){t(function(){var t=l.getSurchargesDetails();if(!t)return l.resetSurcharges();l.$cardIcon[0].className=c.payment.selectedCardType;c.payment.selectedCardBrand=t.cardBrand;c.payment.selectedCardBrandKey=t.cardKey;c.booking.surchargeAmount=t.surchargeAmount;c.booking.totalAmountInclusive=c.booking.totalAmount+t.surchargeAmount;c.booking.selectedSurchargePct=t.selectedSurchargePct;n.$apply()})};l.validateHostedFields=function(n,t){var r,u,i;if(n.fields)for(r in n.fields){if(u=l.hostedFields[r],!u)return;(i=$(u.selector),i.length)&&(n.fields[r].isEmpty?i.setValidity(i.data("empty-message")):r==="number"&&!c.payment.selectedCardBrand&&n.cards.length===1&&(n.fields[r].isValid||n.fields[r].isPotentiallyValid)?(i.attr("dirty","true"),i.setValidity(i.data("error-message"))):n.fields[r].isValid||!n.fields[r].isPotentiallyValid||r!==n.emittedBy||t?n.fields[r].isValid?(i.attr("dirty","true"),i.setValidity("")):(i.attr("dirty","true"),i.setValidity(i.data("error-message"))):i.resetValidity())}};l.tokenizeHostedFields=function(n){l.hostedFieldsInstance&&l.hostedFieldsInstance.tokenize(function(t,i){var e,f,u,r;if(l.$paymentHostedFields.each(function(){$(this).setValidity("")}),e=c.payment.selectedCardType.length>0,t||!e){if(t)switch(t.code){case"HOSTED_FIELDS_FIELDS_EMPTY":l.$paymentHostedFields.attr("dirty","true");l.$paymentHostedFields.each(function(){$(this).setValidity($(this).data("empty-message"))});break;case"HOSTED_FIELDS_FIELDS_INVALID":if(t.details&&t.details.invalidFieldKeys&&t.details.invalidFieldKeys.length)for(f=0;f<t.details.invalidFieldKeys.length;f++)u=l.hostedFields[t.details.invalidFieldKeys[f]],u&&(r=$(u.selector),r.attr("dirty","true"),r.setValidity(r.data("error-message")));break;default:console.error("Unknown payment error",t)}e||(u=l.hostedFields.number,u&&(r=$(u.selector),r.attr("dirty","true"),r.setValidity(r.data("error-message"))));l.$paymentSubmitButton.removeClass(l.btnLoadingClass);l.isHostedFieldsValid=!1}else c.payment.nonce=i.nonce,l.isHostedFieldsValid=!0;typeof n=="function"&&n()})};l.setupPaymentGateway=function(){var t=c.booking.token;t&&(l.$cardNumberField.append(l.$cardIcon),braintree.client.create({authorization:t},function(t,i){if(t){console.error(t);return}braintree.hostedFields.create({client:i,styles:l.hostedFieldsStyles,fields:l.hostedFields},function(n,t){if(l.hostedFieldsInstance=t,n){console.error(n);return}l.hostedFieldsInstance.on("validityChange",function(n){l.validateHostedFields(n)});l.hostedFieldsInstance.on("empty",function(n){l.validateHostedFields(n)});l.hostedFieldsInstance.on("notEmpty",function(n){l.validateHostedFields(n)});l.hostedFieldsInstance.on("blur",function(n){l.validateHostedFields(n,!0)});l.hostedFieldsInstance.on("cardTypeChange",function(n){c.payment.selectedCardType=n.cards.length===1?n.cards[0].type:"";l.setSurcharges();l.validateHostedFields(n)})});braintree.paypalCheckout.create({client:i},function(t,i){if(t){console.error("Error creating PayPal Checkout:",t);return}var r=e.environment==="live"?"production":"sandbox";paypal.Button.render({env:r,commit:!0,style:{label:"pay",size:"responsive",shape:"rect",color:"gold"},payment:function(){var n=c.booking.totalAmount;return i.createPayment({flow:"checkout",amount:n,currency:c.booking.currencyCode})},onAuthorize:function(t){return c.payment.isProcessing=!0,n.$apply(),i.tokenizePayment(t).then(function(n){c.payment.nonce=n.nonce;c.payment.selectedCardBrand="Paypal";c.payment.selectedCardBrandKey="paypal";c.payment.cardName=n.details.firstName+" "+n.details.lastName;l.makePayment()})},onCancel:function(){c.payment.isProcessing=!1;n.$apply()},onError:function(){c.payment.isError=!0;c.payment.isProcessing=!1;n.$apply()}},"#paypal-button").then(function(){})})}))};l.getDefaultCountry=function(n){r.GetLocation().then(function(i){c.forms.passengerOne.country=i.data[0]||"";t(function(){n()})})};l.updateScope=function(n,t){var i=n.split(".");c[i[1]][i[2]][i[3]]=t};l.initUnbindedInputs=function(){l.unbindedInputs.map(function(n){l.$details.trigger("form.masterfield.change",n.parentSelector)})};l.doBookingModelMapping=function(){c.booking.noOfPassengers>=1&&(c.booking.passengers[0].title=c.forms.passengerOne.title,c.booking.passengers[0].firstName=c.forms.passengerOne.firstName,c.booking.passengers[0].lastName=c.forms.passengerOne.lastName,c.booking.passengers[0].dateOfBirth=c.forms.passengerOne.dateOfBirth,c.booking.passengers[0].email=c.forms.passengerOne.email,c.booking.passengers[0].phoneNumber=c.forms.passengerOne.phoneNumber,c.booking.passengers[0].country=c.forms.passengerOne.country,c.booking.passengers[0].address=c.forms.passengerOne.address,c.booking.passengers[0].suburb=c.forms.passengerOne.suburb,c.booking.passengers[0].state=c.forms.passengerOne.state,c.booking.passengers[0].postCode=c.forms.passengerOne.postCode,c.booking.passengers[0].howDidYouKnow=c.forms.passengerOne.howDidYouKnow,c.booking.passengers[0].howDidYouKnowDetail=c.forms.passengerOne.howDidYouKnowDetail,c.forms.passengerOne.optional!=null&&(c.booking.passengers[0].specialRequests=c.forms.passengerOne.optional.specialRequests));c.booking.noOfPassengers>=2&&(c.booking.passengers[1].title=c.forms.passengerTwo.title,c.booking.passengers[1].firstName=c.forms.passengerTwo.firstName,c.booking.passengers[1].lastName=c.forms.passengerTwo.lastName,c.booking.passengers[1].dateOfBirth=c.forms.passengerTwo.dateOfBirth,c.booking.passengers[1].email=c.forms.passengerTwo.email,c.forms.passengerTwo.optional!=null&&(c.booking.passengers[1].phoneNumber=c.forms.passengerTwo.optional.phoneNumber,c.booking.passengers[1].specialRequests=c.forms.passengerTwo.optional.specialRequests));c.booking.noOfPassengers>=3&&(c.booking.passengers[2].title=c.forms.passengerThree.title,c.booking.passengers[2].firstName=c.forms.passengerThree.firstName,c.booking.passengers[2].lastName=c.forms.passengerThree.lastName,c.booking.passengers[2].dateOfBirth=c.forms.passengerThree.dateOfBirth,c.booking.passengers[2].email=c.forms.passengerThree.email,c.forms.passengerThree.optional!=null&&(c.booking.passengers[2].phoneNumber=c.forms.passengerThree.optional.phoneNumber,c.booking.passengers[2].specialRequests=c.forms.passengerThree.optional.specialRequests));c.booking.noOfPassengers>=4&&(c.booking.passengers[3].title=c.forms.passengerFour.title,c.booking.passengers[3].firstName=c.forms.passengerFour.firstName,c.booking.passengers[3].lastName=c.forms.passengerFour.lastName,c.booking.passengers[3].dateOfBirth=c.forms.passengerFour.dateOfBirth,c.booking.passengers[3].email=c.forms.passengerFour.email,c.forms.passengerFour.optional!=null&&(c.booking.passengers[3].phoneNumber=c.forms.passengerFour.optional.phoneNumber,c.booking.passengers[3].specialRequests=c.forms.passengerFour.optional.specialRequests));c.booking.noOfPassengers>=5&&(c.booking.passengers[4].title=c.forms.passengerFive.title,c.booking.passengers[4].firstName=c.forms.passengerFive.firstName,c.booking.passengers[4].lastName=c.forms.passengerFive.lastName,c.booking.passengers[4].dateOfBirth=c.forms.passengerFive.dateOfBirth,c.booking.passengers[4].email=c.forms.passengerFive.email,c.forms.passengerFive.optional!=null&&(c.booking.passengers[4].phoneNumber=c.forms.passengerFive.optional.phoneNumber,c.booking.passengers[4].specialRequests=c.forms.passengerFive.optional.specialRequests));c.booking.noOfPassengers>=6&&(c.booking.passengers[5].title=c.forms.passengerSix.title,c.booking.passengers[5].firstName=c.forms.passengerSix.firstName,c.booking.passengers[5].lastName=c.forms.passengerSix.lastName,c.booking.passengers[5].dateOfBirth=c.forms.passengerSix.dateOfBirth,c.booking.passengers[5].email=c.forms.passengerSix.email,c.forms.passengerSix.optional!=null&&(c.booking.passengers[5].phoneNumber=c.forms.passengerSix.optional.phoneNumber,c.booking.passengers[5].specialRequests=c.forms.passengerSix.optional.specialRequests));c.booking.noOfPassengers>=7&&(c.booking.passengers[6].title=c.forms.passengerSeven.title,c.booking.passengers[6].firstName=c.forms.passengerSeven.firstName,c.booking.passengers[6].lastName=c.forms.passengerSeven.lastName,c.booking.passengers[6].dateOfBirth=c.forms.passengerSeven.dateOfBirth,c.booking.passengers[6].email=c.forms.passengerSeven.email,c.forms.passengerSeven.optional!=null&&(c.booking.passengers[6].phoneNumber=c.forms.passengerSeven.optional.phoneNumber,c.booking.passengers[6].specialRequests=c.forms.passengerSeven.optional.specialRequests));c.booking.noOfPassengers>=8&&(c.booking.passengers[7].title=c.forms.passengerEight.title,c.booking.passengers[7].firstName=c.forms.passengerEight.firstName,c.booking.passengers[7].lastName=c.forms.passengerEight.lastName,c.booking.passengers[7].dateOfBirth=c.forms.passengerEight.dateOfBirth,c.booking.passengers[7].email=c.forms.passengerEight.email,c.forms.passengerEight.optional!=null&&(c.booking.passengers[7].phoneNumber=c.forms.passengerEight.optional.phoneNumber,c.booking.passengers[7].specialRequests=c.forms.passengerEight.optional.specialRequests))};l.registerUnbindedInputs=function(){l.$detailsDependentFields.each(function(n,t){var i=$(t).find("input, select")[0],r=$("[data-field-configuration-sitecore-id="+t.dataset.parentSitecoreId+"]")[0];l.unbindedInputs.push({id:t.dataset.fieldSitecoreId,model:i.dataset.ngModel,parentSelector:"."+r.className.replace(/ /g,".")})})};l.collectUnbindedInputs=function(){l.unbindedInputs.map(function(n){var t=$("[name^="+n.id.replace(/-/g,"")+"]"),i=t.length?t[0].value:undefined;n&&n.model&&l.updateScope(n.model,i)})};l.makePayment=function(){l.$payment.find("input:focus").blur();c.payment.isProcessing=!0;l.doBookingModelMapping();var n={};n.noOfPassengers=c.booking.noOfPassengers;n.selectedTourPrice=c.booking.selectedTourPrice;n.selectedMethod=c.payment.selectedMethod;n.selectedAmount=c.booking.totalAmount;n.surchargeAmount=c.booking.surchargeAmount;n.totalAmountInclusive=c.booking.totalAmountInclusive;n.selectedCardBrandKey=c.payment.selectedCardBrandKey;n.selectedSurchargePct=c.booking.selectedSurchargePct;n.passengers=c.booking.passengers;n.nonce=c.payment.nonce;n.currencyCode=c.booking.currencyCode;n.tripCode=c.booking.tripCode;n.tourStartDate=c.booking.tourStartDate;n.tourEndDate=c.booking.tourEndDate;f.FinalizeBooking(n).then(function(n){if(n&&n.length>0){c.payment.success=!0;c.payment.bookingReference=n[0].bookingConfirmationId;var t=o.buildBookingModel(c.booking.selectedTourPrice.price,c.booking.tripCode,angular.element("h5.trip-priceandbooking__book__summary__trip-name")[0].innerText+" "+angular.element("h4.trip-priceandbooking__book__summary__package-title")[0].innerText,n[0].bookingConfirmationId,c.booking.totalAmountInclusive-c.booking.surchargeAmount,c.payment.selectedMethod,c.booking.noOfPassengers);o.pushTransaction(t);c.carousel.next();c.payment.isProcessing=!1}else c.payment.isError=!0,c.payment.isProcessing=!1},function(n){return console.log("There was an error in retrieving booking. Error: "+n.statusText),!1})};l.assignHasOptional=function(n){var t=!1;typeof n.optional=="object"&&Object.keys(n.optional).forEach(function(i){n.optional[i]!==""&&(t=!0)});n.hasOptional=t};l.checkOptionalData=function(){Object.keys(c.forms).forEach(function(n){l.assignHasOptional(c.forms[n])})};l.init=function(){l.registerUnbindedInputs();l.getDefaultCountry(l.initUnbindedInputs);l.setupPaymentGateway();l.$details.on("form.validation.fail",function(){var n=l.$details.find(".has-error").first().offset().top-50;v.scrollTo(n)});l.$details.on("form.submit.success",function(){l.collectUnbindedInputs();l.checkOptionalData();c.carousel.next()});l.$payment.on("form.submit.success",function(){l.isHostedFieldsValid&&l.makePayment()});l.$payment.on("form.validation.fail",function(){l.$paymentSubmitButton.removeClass(l.btnLoadingClass);var n=l.$payment.find(".has-error").first().offset().top-50;v.scrollTo(n)});c.payment.hasTermsAndConditions||l.$termsAndConditionsControl.remove();n.$on("broadcast.tripBookingAndPaymentController.submitPaymentForm",function(){var n=l.$payment.find("input[type=submit], button[type=submit]");l.$paymentSubmitButton.addClass(l.btnLoadingClass);l.tokenizeHostedFields(function(){n.length&&n.click()})});n.$watch("tbapc.payment.selectedMethod",function(){l.setSurcharges();n.tbapc.payment.isError=!1})};a.$carousel=angular.element(".booking-carousel__inner");a.prev=function(){t(function(){a.$carousel.find("input:focus").blur();a.$carousel.trigger("prev.owl.carousel")})};a.next=function(){t(function(){a.$carousel.find("input:focus").blur();a.$carousel.trigger("next.owl.carousel")})};a.init=function(t){if(typeof(t==="function"))a.$carousel.on("initialized.owl.carousel",function(){t()});a.$carousel.owlCarousel({loop:!1,items:1,mouseDrag:!1,touchDrag:!1,pullDrag:!1,freeDrag:!1,margin:100,smartSpeed:500,customAutoHeight:!0});a.$carousel.on("translate.owl.carousel",function(){v.scrollTo(a.$carousel.offset().top)});a.$carousel.on("translated.owl.carousel",function(){a.$carousel.trigger("refresh.owl.carousel")});n.$on("broadcast.tripBookingAndPaymentController.prev",a.prev);n.$on("broadcast.tripBookingAndPaymentController.next",a.next)};t(function(){a.init(l.init)})}return{restrict:"A",scope:!0,controller:n,controllerAs:"tbapc",bindToController:!0,link:s}}function n(n){function i(){t.carousel.currentIndex--;n.$broadcast("broadcast.tripBookingAndPaymentController.prev")}function r(){t.carousel.currentIndex++;n.$broadcast("broadcast.tripBookingAndPaymentController.next")}function u(n){t.booking.noOfPassengers=n.noOfPassengers;t.booking.selectedTourPrice=n.selectedTourPrice;t.booking.surchargeDetails=n.surchargeDetails;t.booking.token=n.token;t.booking.totalAmount=n.totalAmount;t.booking.totalAmountInclusive=n.totalAmount;t.booking.currencyCode=n.currencyCode;t.booking.tripCode=n.tripCode;t.booking.tourStartDate=n.tourStartDate;t.booking.tourEndDate=n.tourEndDate;t.booking.passengers=n.passengers;t.payment.hasTermsAndConditions=n.hasTermsAndConditions}function f(){n.$broadcast("broadcast.tripBookingAndPaymentController.submitPaymentForm")}var t=this;t.forms={passengerOne:{}};t.carousel={currentIndex:1,prev:i,next:r};t.booking={noOfPassengers:1,selectedTourPrice:{},surchargeDetails:{},token:"",totalAmount:0,currencyCode:"AUD",surchargeAmount:0,totalAmountInclusive:0,selectedSurchargePct:0,passengers:{},tripCode:"",tourStartDate:"",tourEndDate:"",extendWith:u};t.payment={success:!1,cardName:"",nonce:"",selectedMethod:"Credit",hasTermsAndConditions:!1,selectedAmount:undefined,selectedCardType:"",selectedCardBrand:"",selectedCardBrandKey:"",selectedSurchargePct:"",submit:f,isError:!1,isProcessing:!1,bookingReference:""}}angular.module("AF.directives").directive("tripBookingAndPayment",["$timeout","$filter","locationService","priceService","finalizeBookingService","configurationConstant","dataLayerService",t]);n.$inject=["$scope"]})(),function(){"use strict";function t(t,i){function r(n,t,r,u){n.$on("broadcast.tripPriceAndAvailabilityController.selectTourPrice",function(){f()});n.$on("broadcast.tripPriceAndAvailabilityController.setBooking",function(){e()});var f=function(){u.previousPrice=u.price;u.tourPrice!=null&&(u.price=u.tourPrice.price)},e=function(){var n={};n.noOfPassengers=u.selectedNoOfPassenger;n.selectedTourPrice=u.tourPrice;n.trip=u.trip;u.isLoading=!0;i.SetBooking(n).then(function(n){n&&n.length>0&&(window.location=u.bookingPageUrl)})}}return{restrict:"A",scope:!0,controller:n,controllerAs:"tpac",bindToController:!0,link:r}}function n(n,t){function u(n){var t=JSON.parse(n);i.trip.tripCode=t.tripCode;i.trip.tourPrices=t.tourPrices;i.trip.tourDate=t.tourDate;i.trip.departingFrom=t.departingFrom;i.trip.departing=t.departing;i.trip.checkin=t.checkin;i.trip.returning=t.returning;i.trip.tripUrl=t.tripUrl;i.trip.tourStartDate=t.tourStartDate;i.trip.tourEndDate=t.tourEndDate;t.tourPrices!=null&&t.tourPrices.length>0&&r(t.tourPrices)}function r(n){var f=t.GetQueryStringParameters("np"),e=t.GetQueryStringParameters("tp"),r,u;if(f&&e){for(i.selectedNoOfPassenger=i.passengers[f-1],r=0,u=n.length;r<u;r++)if(n[r].priceType.title==e){i.tourPrice=n[r];i.price=n[r].price;break}}else for(r=0,u=n.length;r<u;r++)if(n[r].price>0&&n[r].availableSeats>=0&&n[r].availableSeats>=i.selectedNoOfPassenger){i.tourPrice=n[r];i.price=n[r].price;break}}function f(t){i.tourPrice=t;t.price>0&&n.$broadcast("broadcast.tripPriceAndAvailabilityController.selectTourPrice")}function e(n){var t=i.price-n;return t<0&&(t=t*-1),t}function o(){i.tourPrice.availableSeats<i.selectedNoOfPassenger&&r(i.trip.tourPrices)}function s(t){t!="#"&&(i.bookingPageUrl=t,n.$broadcast("broadcast.tripPriceAndAvailabilityController.setBooking"))}var i=this;i.setTrip=u;i.tourPrice={};i.price=0;i.previousPrice=0;i.selectTourPrice=f;i.calculatePrice=e;i.passengers=[1,2,3,4,5,6,7,8];i.selectedNoOfPassenger=i.passengers[0];i.changePassenger=o;i.bookingPageUrl="#";i.setBooking=s;i.trip={tripCode:"",tourDate:"",departingFrom:"",departing:"",checkin:"",returning:"",tripUrl:"",tourPrices:[]}}angular.module("AF.directives").directive("tripPriceAndAvailability",["$timeout","tripPriceAndAvailabilityService",t]);n.$inject=["$scope","utilityService"]}(),function(){"use strict";angular.module("Phoenix.Shared.directives").directive("accordionPanel",["$timeout","$window",function(n){return{restrict:"A",scope:!0,link:function(t,i,r){var u=angular.element(i),f=u.find('[data-toggle="collapse"]'),e=u.closest(".nav-menu.nav-mobile").length>0;f.on("click",function(t){if(t.preventDefault(),r.accordionPanelScroll!=="disabled"&&r.accordionPanelScroll!=="false"){var i=this;n(function(){var n=$("html,body"),t=$(i).offset().top;e?(n=$(".nav-menu.nav-mobile"),t=$(i).offset().top-n.offset().top+n.scrollTop()):r.accordionPanelScroll&&(n=$(r.accordionPanelScroll));n.animate({scrollTop:t},300)},350)}})}}}])}(),function(){"use strict";angular.module("Phoenix.Shared.directives").directive("affix",["$window",function(n){return function(t,i,r){function y(n){var t=n.getBoundingClientRect(),i=window.pageXOffset||document.documentElement.scrollLeft,r=window.pageYOffset||document.documentElement.scrollTop;return{top:t.top+r,left:t.left+i}}function f(){u.css("top",b.innerHeight()-a.innerWidth()/2)}function c(){return w.innerHeight()-e.innerHeight()-y(e[0]).top+u.innerWidth()*1.5}function l(){return parseInt(r.affixOffsetTop)||0}var p=angular.element(n),a=angular.element(i),u=$(a),w=$("body"),b=$(".site-hero"),e=$(r.affixOffsetContainer),o=c(),s=l(),h,v;f();p.on("resize",function(){f();h()});u.affix({offset:{top:s,bottom:o}});u.on("affixed.bs.affix",function(){f()});h=function(){s=l();o=c();u.data("bs.affix").options.offset.top=s;u.data("bs.affix").options.offset.bottom=o;u.affix("checkPosition")};v=new MutationObserver(h);v.observe(e[0],{attributes:!0,childList:!0})}}])}();angular.module("Phoenix.Shared.directives").directive("backToTop",["$window",function(n){return function(t){var i=angular.element(n);i.on("scroll",function(){t.isVisible=this.pageYOffset>=100?!0:!1;t.$apply()})}}]).directive("scrollToTop",function(){return function(n){n.gotoTop=function(){$("html, body").animate({scrollTop:0},"slow")}}}),function(){"use strict";function i(t,i,r){function u(n){if(t.search().brochureId){var u=t.search().brochureId,f=i("filter")(n.bc.brochures.model,{Id:u});n.$on("broadcast.multistepCarousel.initialized",function(){n.bc.brochures.model.forEach(function(n){n.Id===u&&(n.selected=!0,r.$broadcast("broadcast.multistepCarouselControllers.goToIndex",{index:1}))})})}}return{restrict:"A",scope:!0,link:u,controller:n,controllerAs:"bc",bindToController:!0}}function r(n,t,i){function r(r,u,f,e){var o=function(n){var t=$(u).has(n.target).length>0,i=u[0]===n.target,f=t||i;f||r.$apply(function(){r.bc.search.hideSearch()})},s=function(){r.bc.search.filters.destinations=h(i.GetArrayFromCommaString(i.GetQueryStringParameters("destination")),".js-section-destination")},h=function(n,t){for(var r,u=[],i=0;i<n.length;i++)r=$(t+'  [data-key="'+n[i]+'"]'),r.length&&u.push(n[i]);return u};r.$watch("bc.search.open",function(n,i){n!==i&&n===!0?t.bind("tap click",o):n!==i&&n===!1&&t.unbind("tap click",o)});r.$on("broadcast.multistepCarouselControllers.indexChanged",function(n,t){e.search.hideFilters=t.index>0});r.$on("broadcast.brochureController.tripFinderOverlay",function(n,t){var u=angular.element("html body"),i=angular.element(".site-overlay-secondary"),r=angular.element(".site-hero");t?(i.addClass("is-visible"),r.addClass("z-stack-order-50")):(i.removeClass("is-visible"),r.removeClass("z-stack-order-50"));u.animate({scrollTop:$("#brochure-filters").offset().top-60},500)});n(function(){s()})}return{restrict:"A",scope:!0,link:r,require:"^brochurePage"}}function u(){function n(){}return{restrict:"A",scope:!0,link:n,require:"^brochurePage"}}function n(n,t,i,r){function e(){u.search.filterCount=u.search.filters.destinations.length||u.search.filters.travelStyles.length||u.search.filters.years.length?1:0}function l(){u.search.open=!u.search.open;n.$broadcast("broadcast.brochureController.tripFinderOverlay",u.search.open)}function a(){u.search.open=!1;n.$broadcast("broadcast.brochureController.tripFinderOverlay",u.search.open)}function v(n){u.displayPostBrochureForm=n}function y(t,i,r){for(var f=!1,u=0;u<i.length;u++)if(i[u]===t){f=!0;i.splice(u,1);break}f||i.push(t);n.$broadcast("broadcast.brochureController.searchFiltersUpdated",{disableRedirect:r});o()}function o(){u.brochures.model.forEach(function(n){n.isHidden=!c(n.TagKey)});k()}function p(){u.brochures.model.forEach(function(n){(n.selected&&u.displayWhichForm=="post"||u.displayWhichForm=="download")&&(n.canDownload=!0)});u.submittedForm=!0}function w(){u.displayWhichForm="download";n.$emit("broadcast.multistepCarouselControllers.goToIndex",{index:0});s(!0)}function b(){u.displayWhichForm="post";n.$emit("broadcast.multistepCarouselControllers.goToIndex",{index:1});s(!1)}function s(n){u.brochures.model.forEach(function(t){t.selected=n})}function c(n){if(!u.search.filters.destinations.length&&!u.search.filters.travelStyles.length&&!u.search.filters.years.length)return!0;var f=String(n).split("|"),t,i,r=!1;return f.forEach(function(n){(!u.search.filters.destinations.length||u.search.filters.destinations.indexOf(n)>=0)&&(t=!0);(!u.search.filters.travelStyles.length||u.search.filters.travelStyles.indexOf(n)>=0)&&(i=!0);(!u.search.filters.years.length||u.search.filters.years.indexOf(n)>=0)&&(r=!0)}),t&&i&&r}function k(){u.results.count=t("filter")(u.brochures.model,{isHidden:!1}).length}function d(){return u.selection.brochures().length}function g(){return u.selection.count()>0}function nt(n){return u.search.filters.destinations.indexOf(n)>=0||u.search.filters.travelStyles.indexOf(n)>=0||u.search.filters.years.indexOf(n)>=0}function tt(t){t.length&&(t.splice(0,t.length),n.$broadcast("broadcast.brochureController.searchFiltersUpdated"))}function it(){u.search.filters.destinations=[];u.search.filters.travelStyles=[];u.search.filters.years=[];n.$broadcast("broadcast.brochureController.searchFiltersUpdated")}function rt(n){u.selection.maxSelectCount=n}function ut(){return u.selection.count()>=u.selection.maxSelectCount}function ft(n){u.brochures.model=n;u.brochures.filteredBrochures=n;o()}function f(){return t("filter")(u.brochures.model,{selected:!0})}function et(){return f().map(function(n){return n.Id}).join("|")}function ot(){return f().map(function(n){return n.Title}).join("|")}function st(){return f().map(function(n){return n.EBrochure.Url}).join("|")}function ht(n,t){return t.indexOf(n)===-1?"Deselect":"Select"}var h,u=this;u.brochures={model:[]};u.downloadBrochure=w;u.postBrochure=b;u.setAllowBrochureMail=v;u.selectAllBrochures=s;u.displayWhichForm="download";u.displayPostBrochureForm=!1;u.search={open:!1,filters:{destinations:[],travelStyles:[],years:[]},hideFilters:!1,filterCount:0,toggleOpen:l,hideSearch:a,toggleSelection:y,isOptionSelected:nt,isVisible:c,clearSectionSelections:tt,clearSelections:it,getCheckboxAnalyticsLabel:ht};u.selection={showSticky:g,isSticky:!1,maxSelectCount:1,setMaxSelectCount:rt,isSelectionMaxed:ut,count:d,brochures:f,brochureIds:et,brochureTitles:ot,brochureUrls:st,recentlyUpdated:!1};u.results={count:0};u.setModel=ft;n.$watch("bc.brochures.model",function(){h&&(r.cancel(h),u.selection.recentlyUpdated=!1);r(function(){u.selection.recentlyUpdated=!0}).then(function(){return h=r(function(){u.selection.recentlyUpdated=!1},1500)})},!0);n.$watch("bc.search.filters.destinations",function(){e()},!0);n.$watch("bc.search.filters.travelStyles",function(){e()},!0);n.$watch("bc.search.filters.years",function(){e()},!0);n.$on("broadcast.brochureController.searchFiltersUpdated",function(){o()},!0);n.$on("broadcast.brochureRequestController.formSubmitSuccess",function(){p()},!0)}function f(n,i,r){function u(t,i,u,f){var o=angular.element(i),e=o.find("form"),c=document.getElementsByClassName("brochure-listing"),s=angular.element(c),h;if(e.length){e.on("form.submit.initialised",function(){n(function(){f.form.isSubmitButtonDisabled=!0})});e.on("form.submit.success",function(){h();f.form.isSubmitButtonDisabled=!1;f.form.isSubmitted=!0;t.$apply();r.$broadcast("broadcast.multistepCarouselControllers.goToIndex",{index:2});r.$broadcast("broadcast.brochureRequestController.formSubmitSuccess")});e.on("form.submit.error",function(){f.form.isSubmitButtonDisabled=!1;t.$apply()});e.on("form.submit.invalid",function(){f.form.isSubmitButtonDisabled=!1;t.$apply()});t.$on("broadcast.brochureRequestController.submitBrochureForm",function(){var n=e.find("input[type=submit], button[type=submit]");n.length&&n.click()})}h=function(){var n=s.length!==0?s:o;angular.element("html, body").stop().animate({scrollTop:n.offset().top},0)}}return{restrict:"A",scope:!0,link:u,controller:t,controllerAs:"brc",bindToController:!0}}function t(n){function i(n,i){t.form.brochureId=n;t.form.brochureTitle=i}function r(){n.$broadcast("broadcast.brochureRequestController.submitBrochureForm")}var t=this;t.form={brochureId:"",brochureTitle:"",includeDvd:!1,country:"",isSubmitButtonDisabled:!1,isSubscribeNewsletter:!1,isSubmitted:!1};t.submitBrochureForm=r;t.init=i}function e(n,t){function i(i,r){var u=angular.element(r).find("[data-brochure-sticky-top-bar-panel]"),f=angular.element(t),e,h,o=function(){var n=u.offset();e=n.top;h=n.height},s=function(){f.scrollTop()>=e?u.addClass("sticky"):u.removeClass("sticky")};n(function(){o()});f.on("resize",function(){Modernizr.touchevents||(o(),s())});f.on("scroll touchmove",s)}return{scope:!0,restrict:"AE",link:i,require:"^brochurePage"}}angular.module("Phoenix.Shared.directives").directive("brochurePage",["$location","$filter","$rootScope",i]).directive("brochureFilters",["$timeout","$document","utilityService",r]).directive("brochureListing",["$timeout",u]).directive("brochureRequest",["$timeout","$document","$rootScope",f]).directive("brochureStickyTopBar",["$timeout","$window",e]);n.$inject=["$scope","$filter","$analytics","$timeout"];t.$inject=["$scope"]}(),function(){"use strict";function n(){function n(n,t,i,r){function e(n){n=n||500;setTimeout(function(){f.trigger("play.owl.autoplay",[1e3]);f.trigger("stop.owl.autoplay")},n)}var o=angular.element(t),f=o.find(".owl-carousel"),s=f.children("div"),h=s.length>1,c=r.enableAutoplay&&s.length>1,l={baseClass:"owl-carousel",navContainerClass:"owl-nav",items:1,nav:!0,navText:"",dots:!0,animateIn:"fadeIn",animateOut:"fadeOut",autoplay:c,autoplayTimeout:r.transitionTime,loop:h,lazyLoad:!0,mouseDrag:!1,onDragged:e},u;f.owlCarousel(l);$(".owl-next, .owl-prev, .owl-dot").on("click",function(){e()});u=o.find(".camera-tooltip");Modernizr.touchevents?u.bind("click",function(){u.toggleClass("is-active")}):(u.bind("mouseenter",function(){u.addClass("is-active")}),u.bind("mouseleave",function(){u.removeClass("is-active")}));f.on("change.owl.carousel",function(){u.removeClass("is-active")})}return{restrict:"A",scope:!0,controller:t,controllerAs:"shcc",bindToController:!0,link:n}}function t(){var n=this;n.transitionTime=5e3;n.enableAutoplay=!0;n.init=function(t,i){n.transitionTime=t;t||(n.transitionTime=5e3);i===!1&&(n.enableAutoplay=!1)}}function i(){function n(n,t){function i(n){n.matches?r.addClass(u).owlCarousel(o):r.owlCarousel("destroy").removeClass(u)}function e(){i(f);f.addListener(i)}var r=$(t),u="owl-carousel owl-carousel--has-nav grid-component__carousel",f=window.matchMedia("(max-width: 800px)"),o={items:1,loop:!0,nav:!0,navText:!1,dots:!0,lazyLoad:!0,lazyContent:!0,autoHeight:!0};e()}return{restrict:"A",link:n}}function r(n){function t(t,i){function u(n){n?r.owlCarousel("destroy").removeClass(o):r.addClass(o).owlCarousel(v)}function f(n){n.matches?u(t.disableXs):u(t.disableSm)}function s(){f(e);e.addListener(f)}var e=window.matchMedia("(max-width: 800px)"),r=$(i),h=t.stagePaddingXs?t.stagePaddingXs:15,c=t.itemsXs?t.itemsXs:1,l=t.itemsSm?t.itemsSm:3,a=t.itemsMd?t.itemsXs:3,y=t.disableXs===!0?t.disableXs:!1,p=t.disableSm===!0?t.disableSm:!1,o="owl-carousel owl-carousel--has-nav grid-component__carousel grid-component__carousel--no-margins trip-cards__carousel",v={baseClass:"trip-card-carousel",navContainerClass:"owl-nav",items:3,dots:!0,nav:!0,navText:"",margin:30,freeDrag:!1,mouseDrag:!1,loop:!0,dotsEach:!0,responsive:{0:{items:c,slideBy:1,stagePadding:h},800:{items:l,slideBy:1},992:{items:a,slideBy:1}}};r.on("initialized.owl.carousel",function(){n.$broadcast("tripCardCarousel.carousel.afterInit")});s()}return{restrict:"A",scope:{stagePaddingXs:"=",itemsXs:"=",itemsSm:"=",itemsMd:"=",disableXs:"=",disableSm:"="},link:t}}function u(){function n(n,t){var i=$(t);i.owlCarousel({items:1,loop:!0,nav:!0,navText:!1,dots:!0,lazyLoad:!0,lazyContent:!0,autoHeight:!0,navSpeed:1100})}return{restrict:"A",link:n}}function f(){function n(n,t){var i=$(t);i.owlCarousel({items:1,loop:!0,nav:!0,navText:!1,dots:!0,lazyLoad:!0,lazyContent:!0,autoHeight:!0,navSpeed:1100})}return{restrict:"A",link:n}}angular.module("Phoenix.Shared.directives").directive("siteHeroCarousel",n).directive("carousel",i).directive("tripCardCarousel",r).directive("lifestyleCarousel",u).directive("tourManagerCarousel",f);n.$inject=["$window"];t.$inject=["$scope"];i.$inject=["$window"];r.$inject=["$rootScope"]}(),function(){"use strict";function n(n,t){function i(){var i=n.location.hash,r=angular.element(i)[0];i&&typeof r!="undefined"&&t(function(){angular.element("html, body").stop().animate({scrollTop:r.offsetTop-20},600)},1e3)}return{scope:!0,restrict:"AE",link:i}}function t(){function n(n,t){var e=angular.element(t),i=angular.element("#"+n.scrollToId),r=angular.element("#"+n.scrollToIdSecondary),u=n.scrollToIdExcludeBuffer?10:80,f;u=n.scrollToIdBufferSize?n.scrollToIdBufferSize:u;e.on("click",function(){i.length&&i.is(":visible")?f(i,n.scrollIntoView):r.length&&r.is(":visible")&&f(r,n.scrollIntoViewSecondary)});f=function(t,i){var f,r,e;n.scrollDisabled||(f=angular.element("html, body"),n.addHashToUrl==!0&&(r=$(document).scrollTop(),window.location.hash=n.scrollToId,$(document).scrollTop(r)),i!=!0?f.stop().animate({scrollTop:t.offset().top-u},600):(r=$(document).scrollTop()+30,e=t.offset().top-($(window).height()-t.outerHeight()+10)+30,r<e&&f.stop().animate({scrollTop:e},600)))}}return{scope:{scrollToId:"@",scrollIntoView:"=",scrollToIdSecondary:"@",scrollIntoViewSecondary:"=",scrollDisabled:"=",scrollToIdExcludeBuffer:"@",addHashToUrl:"=",scrollToIdBufferSize:"@"},restrict:"A",link:n}}function i(n,t){function i(i,r,u){var c=r[0],f,o,l,s,h,e,a,p=function(){o=30;h=0;i.timoutId=null;e=parseInt(u.countTo)||0;i.value=parseInt(u.value,10)||0;l=parseFloat(u.duration)*1e3||0;s=Math.ceil(l/o);a=(e-i.value)/s;f=i.value},v=function(){i.timoutId=n(function(){f+=a;h++;h>=s?(n.cancel(i.timoutId),f=e,c.textContent=t("number")(e)):(c.textContent=t("number")(Math.round(f)),v())},o)},y=function(){i.timoutId&&n.cancel(i.timoutId);p();v()};return u.$observe("countTo",function(n){n&&y()}),u.$observe("value",function(){y()}),!0}return{replace:!0,scope:!0,restrict:"AE",link:i}}function r(n){function t(t,i){n(function(){var n=angular.element(i);n.parents(".container").length&&n.removeClass("container")})}return{replace:!0,scope:!0,restrict:"AE",link:t}}function u(n,t){function i(n,i){var r=angular.element(i).find(".dropdown-hover-target"),u="dropdown-open",f;r.on("mouseover mouseenter click",function(){r.addClass(u)});r.on("mouseleave",function(){r.removeClass(u)});f=r.find("a");f.on("touchstart click tap",function(n){n.preventDefault();r.removeClass(u);t.open(n.target.href)})}return{replace:!0,scope:!0,restrict:"AE",link:i}}function f(n){function t(t,i,r,u){function h(){var t=e(),n;return f.height("auto"),n=e(),f.height(t),e(),n}function e(){return f.height()}var o,c=angular.element("html body"),s=angular.element(i),f=s.find("[data-dynamic-collapse-panel]"),l=s.find("[data-dynamic-collapse-container]");u.dynamicCollapseAnalyticsCategory=r.dynamicCollapseAnalyticsCategory;u.dynamicCollapseAnalyticsAction=r.dynamicCollapseAnalyticsAction;u.dynamicCollapseAnalyticsLabel=r.dynamicCollapseAnalyticsLabel;t.$watch("dcc.isCollapsed",function(t){var r,i;o&&n.cancel(o);t&&c.animate({scrollTop:0},500);t&&(r=e(),f.height(r));i=t?0:h();f.height(i);i&&(o=n(function(){f.height("auto")},500))})}return{scope:!1,restrict:"A",link:t,controller:e,controllerAs:"dcc",bindToController:!0}}function e(n){function i(){t.isCollapsed=!t.isCollapsed;t.dynamicCollapseAnalyticsCategory&&n.eventTrack(null,{category:t.dynamicCollapseAnalyticsCategory,action:t.dynamicCollapseAnalyticsAction,label:t.dynamicCollapseAnalyticsLabel+" - "+(t.isCollapsed?"Hide":"Show")})}function r(){t.isCollapsed&&i()}function u(){t.isCollapsed=!0}var t=this;t.isCollapsed=!0;t.toggleCollapse=i;t.collapse=u;t.toggleCollapseIfCollapsed=r}function o(){function n(n,t){n.autocompleteTyped=n.autocompleteSelected;n.autocompleteOpen=!1;n.activeIndex=0;var i=angular.element(t);n.autocompleteClear=function(){n.autocompleteSelected="";n.autocompleteTyped=""};n.showAutocomplete=function(t){n.autocompleteOpen=!0;switch(t.keyCode){case 38:n.activeIndex>1&&n.activeIndex--;n.activeIndex&&(n.autocompleteTyped=n.autocompleteData[n.activeIndex-1]);break;case 40:n.activeIndex<n.autocompleteData.length&&n.activeIndex++;n.activeIndex&&(n.autocompleteTyped=n.autocompleteData[n.activeIndex-1]);break;case 13:n.activeIndex&&n.doAutocompleteSearch(n.autocompleteData[n.activeIndex-1],!0);n.autocompleteOpen=!1;break;default:n.autocompleteSelected=n.autocompleteTyped;n.activeIndex=0;n.autocompleteOpen=!0;return}t.preventDefault()};n.hideAutocomplete=function(){n.autocompleteOpen=!1;n.activeIndex=0};n.setActiveIndex=function(t){n.activeIndex=t};n.doAutocompleteSearch=function(t){n.autocompleteSelected=t;n.autocompleteTyped=t;n.autocompleteOpen=!1;n.autocompleteSearch()}}return{replace:!0,scope:{autocompleteSelected:"=",autocompleteSelectedPrevious:"=",autocompleteList:"=",autocompleteSearch:"=",autocompletePlaceholder:"@",autocompleteInputClass:"@"},restrict:"E",link:n,templateUrl:"/assets/js/phoenix/shared/ng/templates/autocomplete.html"}}function s(n){function t(t){t.$on("reloadPageController.reloadPage",function(t,i){i.anchor&&(n.location.href+="#"+i.anchor);n.location.reload()})}return{scope:!0,restrict:"A",link:t,controller:h,controllerAs:"rpc",bindToController:!0}}function h(n){function t(t){n.$broadcast("reloadPageController.reloadPage",{anchor:t})}var i=this;i.reloadPage=t}function c(){function t(t,i){var r=angular.element(i),u=angular.element(".tooltip-container");angular.element(document).ready(function(){u&&u.append("<span class='tooltip-container__arrow'><\/span>")});Modernizr.touchevents?i.bind("click",function(){n(r);r.toggleClass("is-active")}):(i.bind("mouseenter",function(){n(r);r.addClass("is-active")}),i.bind("mouseleave",function(){r.removeClass("is-active")}))}function n(n){if(n){var t=n.position(),i=angular.element(".tooltip-container").position();$(".tooltip-container__arrow").css("left",t.left-i.left)}}return{restrict:"A",scope:!0,link:t}}angular.module("Phoenix.Shared.directives").directive("ontouchstart",function(){return{link:function(){Modernizr.touchevents&&$("html").attr("ontouchstart","")}}}).directive("fitImage",["$timeout","$window",function(n,t){return{restrict:"A",link:function(i,r){function e(){var n=r.find("img"),t,e,o;if(n.length){var s=r.width()/r.height(),h=n.width()/n.height(),i=s>h?u:f,c=i==u?f:u;n.addClass(i);n.removeClass(c);t=angular.element(n);i==u?(e=(n[0].clientHeight-r.height())/2,t.css("top","-"+e+"px"),t.css("left","auto")):i==f&&(o=(n[0].clientWidth-r.width())/2,t.css("left","-"+o+"px"),t.css("top","auto"))}}var u="tall",f="wide";angular.element(t).bind("resize",function(){e()});n(function(){e()},500)}}}]).directive("autoheight",["$timeout","$window",function(n,t){return{restrict:"A",link:function(i,r){n(function(){var f=angular.element(r),u=f.closest(".container"),n=u.find("*[data-autoheight]"),i;u.length&&(i=function(){var i,t;for(n.css("height","auto"),i=0,t=0;t<n.length;t++)$(n[t]).height()>i&&(i=$(n[t]).height());n.height(i)},angular.element(t).bind("resize",i),i())},700)}}}]).directive("clickOutside",["$document",function(n){return{restrict:"A",link:function(t,i,r){var u=function(n){var u=$(i).has(n.target).length>0,f=i[0]==n.target,e=u||f;e||t.$apply(r.clickOutside)};t.$watch(r.isActive,function(t,i){t!==i&&t==!0?n.bind("tap click",u):t!==i&&t==!1&&n.unbind("tap click",u)})}}}]).directive("objectFitPolyfill",["$timeout","$rootScope",function(n,t){return{restrict:"A",link:function(){t.$on("broadcast.dom-manipulation.image",function(){i()});n(function(){i()});var r=function(){return navigator.userAgent.match(/SAMSUNG|SGH-[I|N|T]|GT-[I|P|N]|SM-[N|P|T|Z|G]|SHV-E|SCH-[I|J|R|S]|SPH-L/i)?!1:Modernizr.objectfit},i=function(){r()||$("img").each(function(){var n=$(this),i=n.data("src")?n.data("src"):n.prop("src"),s=n.attr("class"),t=parseFloat(n.attr("data-ratio")),r=!0,u="",f;if((isNaN(t)||t=="undefined")&&(r=!1),n.css("font-family").indexOf("object-fit")>-1&&i){var e=n.attr("data-object-position"),h=e?"background-position: "+e+";":"",o="";n.hasClass("svg")&&(o="; width:"+n.width()+"px; margin: auto; ");r&&(f=n.width()/parseFloat(t),u="; height:"+f+"px; ");n.replaceWith('<div class="compat-object-fit '+s+'" style="background-image: url('+i+");"+u+o+h+'" />')}})}}}}]).directive("countTo",i).directive("scrollToAnchor",n).directive("scrollToId",t).directive("removeNestedContainer",r).directive("dropdownCloseOnNav",u).directive("dynamicCollapse",f).directive("autocomplete",o).directive("reloadPage",s).directive("tooltip",c);n.$inject=["$window","$timeout"];t.$inject=["$window"];i.$inject=["$timeout","$filter"];r.$inject=["$timeout"];u.$inject=["$timeout","$window"];f.$inject=["$timeout","$window"];e.$inject=["$analytics"];o.$inject=["$timeout","$window"];s.$inject=["$window"];h.$inject=["$scope"];c.$inject=["$window"];window.Sitecore||angular.module("Phoenix.Shared.directives").directive("contenteditable",["$timeout","$window",function(n,t){return{require:"ngModel",scope:{placeholder:"@",ngModel:"=",maxlength:"="},link:function(i,r,u,f){var h=i.maxlength?i.maxlength:0,e=angular.element(r),c;n(function(){o()});angular.element(t).bind("resize",function(){o()});r.bind("keyup",function(){var n=s();n?i.$apply(function(){f.$setViewValue(n)}):f.$setViewValue("");n||r.html("&nbsp;")});r.bind("keydown",function(n){var t=a(n);if(!t)return!1;r.html()=="&nbsp;"&&r.html("");l()});r.bind("click",function(n){n.stopPropagation();e.addClass("active");var t=s();t||r.html("&nbsp;")});$(document).click(function(){var t=s();t?n(function(){l()},100):(e.removeClass("active"),r.html(""),o())});f.$render=function(){r.html(f.$viewValue)};f.$render();var o=function(){c=angular.element(r).width();e.css("min-width",c)},l=function(){e.css("min-width","20px")},s=function(){return r.html().replace(/<(?:.|\n)*?>/gm,"").replace("&nbsp;","")},a=function(n){return n.which==13?!1:n.which!=8&&n.which!=46&&n.which!=37&&n.which!=39&&h>0&&r.html().length>=h?!1:(n.which==32||n.which==8||n.which==46||n.which==37||n.which==39)&&(!r.html().length||r.html()==="&nbsp;")?!1:!0}}}}])}();angular.module("Phoenix.Shared.directives").directive("dynamicForm",function(){return{restrict:"A",scope:{displayCaptchaOnValidForm:"@",displaySubmitOnValidForm:"@"},link:function(n,t){if(n.displayCaptchaOnValidForm==="true"||n.displaySubmitOnValidForm==="true"){var i={},r={},u={};i.showDuration=200;i.selector="form";i.$element=$(t).find(i.selector).addBack(i.selector);r.$element=i.$element.find(".form-captcha");u.$element=i.$element.find(".submit");i.init=function(){var t=n.displayCaptchaOnValidForm==="true",f=n.displaySubmitOnValidForm==="true";t&&r.$element.hide();f&&u.$element.hide();i.$element.on("form.validation.valid",function(){t&&r.$element.show(i.showDuration);f&&u.$element.show(i.showDuration)});i.$element.on("form.validation.invalid",function(){t&&r.$element.hide(i.showDuration);f&&u.$element.hide(i.showDuration)})};i.init()}}}}).directive("tripRequestQuoteForm",[function(){return{scope:!0,controller:tripRequestQuoteForm,controllerAs:"rqfc",bindToController:!0,restrict:"A"}}]).directive("tripRequestQuoteFormInitialiseModel",[function(){return{scope:!0,controller:tripRequestQuoteFormInitialiseModel,controllerAs:"rqfimc",bindToController:!0,restrict:"A"}}]).directive("eventSignupForm",["$timeout",function(){return{restrict:"A",scope:!0,controller:eventSignupController,controllerAs:"esc",bindToController:!0,link:function(n,t,i,r){var f=angular.element(t),u=angular.element(t).find("form"),e=function(){r.form.isSubmitted=!0;u.length&&r.form.eventSessionIdsString()===""&&(r.form.isValid=!1)},o=function(){angular.element("html, body").stop().animate({scrollTop:f.offset().top},500)};n.$on("broadcast.eventSignupController.doSubmit",function(){if(o(),e(),r.form.isValid&&u.length){var n=u.find("input[type=submit], button[type=submit]");n.length&&n.click()}})}}}]);newsletterSubscriptionFormController.$inject=["$scope"];tripRequestQuoteForm.$inject=["$scope"];tripRequestQuoteFormInitialiseModel.$inject=["$scope","$rootScope"];eventSignupController.$inject=["$scope"];angular.module("Phoenix.Shared.directives").directive("phoenixFormTwoColumn",[function(){return{restrict:"A",link:function(n,t){var i=angular.element(t).find(".field-set"),o=angular.element(t).find(".phoenix-form__field-set--left"),s=angular.element(t).find(".phoenix-form__field-set--right"),h=angular.element(t).find(".form-field.submit"),c=angular.element(t).find(".form-field"),u=angular.element('<div class="row"><\/div>'),r=angular.element('<div class="row"><\/div>'),f=angular.element('<div class="col-xs-12 col-sm-6"><\/div>'),e=angular.element('<div class="col-xs-12 col-sm-6"><\/div>');f.appendTo(i);e.appendTo(i);u.appendTo(f);r.appendTo(e);c.appendTo(r);o.appendTo(u);s.appendTo(r);h.appendTo(i)}}}]);angular.module("Phoenix.Shared.directives").directive("maxCharacters",["$compile","$timeout",function(n){return{scope:{maxCharacters:"=",ngModel:"=",charCountRemaining:"&"},restrict:"A",link:function(t,i){var u=angular.element(i),r=angular.element('<span class="phoenix-form__char-count">{{charCountRemaining}} characters remaining<\/span>');r.insertAfter(i);n(r)(t);t.$watch("ngModel",function(n){var i=n?n.length:0,r=t.maxCharacters-i;t.charCountRemaining=r>=0?r:0;i>t.maxCharacters&&(t.ngModel=t.ngModel.substring(0,t.maxCharacters))});i.on("keypress",function(){if(t.charCountRemaining<=0)return!1});i.on("paste",function(){if(t.charCountRemaining<=0)return!1})}}}]);angular.module("Phoenix.Shared.directives").directive("phoenixForm",["$timeout","utilityService",function(n){return{controller:phoenixFormController,controllerAs:"pfc",bindToController:!0,restrict:"A",link:function(t,i,r,u){function c(){angular.element("html, body").stop().animate({scrollTop:f.offset().top},500)}var f=angular.element(i),o=f.find("form"),s=f.find(".phoenix-form__title"),l=f.find(".title-wrapper"),h=f.find(".phoenix-form__subtitle"),a=f.find(".subtitle-wrapper"),e=f.find("[name=nonce]"),v=f.find(".g-recaptcha");o.on("form.submit.initialised",function(){n(function(){c();u.form.isSubmitted=!0})});t.$on("broadcast.phoenixFormController.doSubmit",function(){if(c(),o.length){var n=o.find("input[type=submit], button[type=submit]");n.length&&n.click()}});t.$on("broadcast.tripFinderController.updateTripData",function(n,t){e.length>0&&t&&t.CryptographicNonce&&t.CryptographicNonce.length>0&&e.val(t.CryptographicNonce)});t.$on("broadcast.phoenixFormController.init",function(n,t){t.hideTitle===!0?l.remove():s.length&&s.replaceWith($('<h2 class="phoenix-form__title text-center col-xs-12">'+s[0].innerHTML+"<\/h2>"));t.hideSubtitle===!0?a.remove():h.length&&h.replaceWith($('<p class="phoenix-form__subtitle col-xs-12">'+h[0].innerHTML+"<\/p>"));t.cryptographicNonce&&t.cryptographicNonce.length&&e.length&&e.val(t.cryptographicNonce)})}}}]);angular.module("Phoenix.Shared.directives").directive("countrySelect",["$timeout","locationService",function(n,t){return{scope:!0,restrict:"A",link:function(i,r){var u=angular.element(r),f=angular.element(r).closest("form"),e=angular.element(r).closest(".form-group"),o="form-group--country";(e.addClass(o),u.length&&f.length&&e.length)&&t.GetLocation().then(function(t){if(t){var i=t.data[0];u.val(i);n(function(){f.trigger("form.masterfield.change","."+o)})}})}}}]);phoenixFormController.$inject=["$scope","$timeout"];angular.module("Phoenix.Shared.directives").directive("formTracking",["$analytics",function(n){return{scope:!1,restrict:"A",link:function(t,i,r){var u=i.find("form");u.on("form.validation.success",function(){n.eventTrack(null,{category:r.formTrackingCategory,action:"Form Submitted",label:r.formTrackingLabel+" - Validation Success"})});u.on("form.validation.fail",function(){n.eventTrack(null,{category:r.formTrackingCategory,action:"Form Submitted",label:r.formTrackingLabel+" - Validation Failure"})});u.on("form.submit.success",function(){n.eventTrack(null,{category:r.formTrackingCategory,action:"Form Submitted",label:r.formTrackingLabel+" - Submission Success"})});u.on("form.submit.error",function(){n.eventTrack(null,{category:r.formTrackingCategory,action:"Form Submitted",label:r.formTrackingLabel+" - Submission Failure"})});u.on("change","input, textarea",function(){var t=u.find("label[for="+this.id+"]");n.eventTrack(null,{category:r.formTrackingCategory,action:"Form Interaction",label:t.text()})});u.on("change","select",function(){n.eventTrack(null,{category:r.formTrackingCategory,action:"Form Interaction",label:angular.element(this).attr("placeholder")})})}}}]),function(){"use strict";angular.module("Phoenix.Shared.directives").directive("browserWarning",[function(){return{scope:!0,restrict:"A",link:function(n,t){function u(){var i=navigator.userAgent,t=i.match(/MSIE\s?(\d+)(?:\.(\d+))?/i);return t!=null?(n.browserVersion=t[1],{major:t[1],minor:t[2]}):{major:"-1",minor:"-1"}}n.browserVersion="";var i=angular.element(t),r=u();r.major!=-1&&r.major<=10?i.removeClass("hide"):i.remove()}}}]).directive("globalNotification",["$cookies",function(n){return{scope:!0,restrict:"A",link:function(t,i){var u="ATG-Has-Accepted-Notification",o=n.get(u),r=angular.element(i),f=r.find(".notification-message-desktop").text(),e=r.find(".notification-message-mobile").text();o===f+e?r.remove():r.removeClass("is-hidden");t.closeNotification=function(){n.put(u,f+e);r.addClass("is-hidden")}}}}]).directive("cookieDisclaimer",["$timeout","$cookies",function(n,t){return{scope:!0,restrict:"A",link:function(i,r){var f="APT-Has-Accepted-Cookies",e=t.get(f),u=angular.element(r);e==="true"?u.remove():n(function(){u.removeClass("hide")},1e3);i.acceptDisclaimer=function(){t.put(f,"true");u.addClass("hide");n(function(){u.remove()},1e3)}}}}])}(),function(){"use strict";function n(n){n&&n.length&&(t(n),n.appendTo(document.body))}function t(n){var i=n.attr("id"),t;i&&(t=angular.element("[id="+i+"]"),t.length>1&&t.remove())}angular.module("Phoenix.Shared.directives").directive("videoModal",["$timeout",function(t){return{restrict:"A",link:function(i,r){var e=angular.element(r),u=e.find(".video-embed"),f=!1;typeof orientation!="undefined"&&(f=!0);t(function(){n(angular.element(r))});$(document).on("hidden.bs.modal",function(n){if(n.target===u.context){var t=u.attr("src");u.attr("src","");u.attr("src",t)}});$(document).on("shown.bs.modal",function(n){f||n.target!==u.context||t(function(){u.each(function(){this.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*")})},500)})}}}]).directive("tripRequestQuoteModal",["$timeout","$window",function(){return{restrict:"A",templateUrl:"requestQuoteModal.html",link:function(n,t){function r(n){n.find("input[type=radio]").map(function(){$(this).next().andSelf().wrapAll("<div class='radio'>")});n.find(".radio").wrap("<div class='radio-inline'>");n.find(".radio").on("click",function(){$(this).find("input[type=radio]").prop("checked",!0)})}function u(n){var t=n.find("input[type=checkbox]");t.attr("id",t.attr("id")+"_"+Math.floor(Math.random()*1e4+1));n.find(".checkbox").on("click",function(){t.prop("checked",!t.prop("checked"))})}function f(n){var t=n.find("form");t.length&&t.attr("id",t.attr("id")+"_"+Math.floor(Math.random()*1e4+1))}var i=angular.element(t);f(i);r(i);u(i)}}}]).directive("modalScrollFix",["$window","$document","$timeout","$rootScope",function(t,i,r,u){return{restrict:"A",link:function(t,f){function h(){e.hasClass("modal")||(e=e.find(".modal"));e.each(function(){if(n($(this)),Modernizr.touchevents){$(this).on("show.bs.modal",function(){s=document.body.scrollTop;u.$broadcast("broadcast.dynamicScrollApplied");setTimeout(function(){o.addClass("modal-open-scroll-fix");o.css({top:"-"+s+"px"})})});$(this).on("hidden.bs.modal",function(){o.removeClass("modal-open-scroll-fix");o.css({top:""});window.scroll(0,s);u.$broadcast("broadcast.dynamicScrollApplied")})}})}var e=angular.element(f),l=$(window),s=0,o=i.find("body"),c=e.closest(".owl-carousel").length>0;c?t.$on("tripCardCarousel.carousel.afterInit",function(){r(function(){h()})}):r(function(){h()})}}}])}(),function(){"use strict";function n(n){function t(t,i,r,u){var f={};f.element=angular.element(i).find(".owl-carousel").addBack(".owl-carousel");f.init=function(){f.element.on("initialized.owl.carousel",function(){t.$broadcast("broadcast.multistepCarousel.initialized")});f.element.owlCarousel({items:1,loop:!1,nav:!1,navText:!1,dots:!1,mouseDrag:!1,touchDrag:!1,customAutoHeight:!0,smartSpeed:400});t.$watch("mcc.steps.currentIndex",function(n){f.element.trigger("to.owl.carousel",[n])});t.$on("broadcast.multistepCarousel.goToStep",function(n,t){u.steps.goToStep(t.step)})};n(function(){f.init()})}return{restrict:"A",scope:!0,link:t,controller:"multistepCarouselControllers",controllerAs:"mcc",bindToController:!0}}angular.module("Phoenix.Shared.directives").directive("multistepCarousel",["$timeout",n])}();angular.module("Phoenix.Shared.directives").directive("toggleNav",["$timeout",function(){return{restrict:"A",scope:{toggleNav:"@"},link:function(n,t){var i=angular.element(n.toggleNav),r=angular.element(".global-notification"),u,f;t.bind("click",function(){var n=angular.element(".hamburger-animated-icon"),t=angular.element(".site-container");i.hasClass("invisible")?(u(),i.removeClass("invisible"),n.addClass("open"),t.addClass("noscroll-xs"),$("body").addClass("modal-open-xs"),$("body").addClass("hero-modal-open")):(f(),i.addClass("invisible"),n.removeClass("open"),t.removeClass("noscroll-xs"),$("body").removeClass("modal-open-xs"),$("body").removeClass("hero-modal-open"))});u=function(){$(".user-message").addClass("force-hide");r.addClass("force-hide")};f=function(){$(".user-message").removeClass("force-hide");r.removeClass("force-hide")}}}}]).directive("dropdownOpenOnTouchHover",["$document",function(n){return{restrict:"A",scope:!0,link:function(t,i){function f(){i.addClass("open");i.find(".navbar-dropdown-menu").addClass("is-visible");$(".site-overlay").addClass("overlay-visible");$(".site-container").addClass("offset-scrollbar");var t=n.find("body");t.addClass("body-fixed");$(".header.home-page").addClass("scrollable");r=!r}function e(){i.removeClass("open");i.find(".navbar-dropdown-menu").removeClass("is-visible");$(".site-overlay").removeClass("overlay-visible");$(".header.home-page").removeClass("scrollable");$(".site-container").removeClass("offset-scrollbar");var t=n.find("body");t.removeClass("body-fixed");$(".header.home-page").removeClass("scrollable");r=!r}function u(){try{return document.createEvent("TouchEvent"),!0}catch(n){return!1}}var r=!1;i.on("mouseenter",function(){u()||f()});i.on("mouseleave",function(){u()||e()});$("html").on("tap click",function(){if(r&&u()){i.removeClass("open");i.find(".navbar-dropdown-menu").removeClass("is-visible");$(".site-overlay").removeClass("overlay-visible");var t=n.find("body");$(".header.home-page").removeClass("scrollable");t.removeClass("body-fixed");r=!1}});i.on("tap click",function(t){if(r=!0,t.stopPropagation(),u()){$(".navbar-dropdown").removeClass("open");i.addClass("open");i.find(".navbar-dropdown-menu").addClass("is-visible");$(".site-overlay").addClass("overlay-visible");var f=n.find("body");$(".header.home-page").addClass("scrollable");f.addClass("body-fixed")}})}}}]).directive("stickyNav",["$window","$timeout","$rootScope",function(n,t,i){return{restrict:"A",controller:stickyNavController,controllerAs:"snc",bindToController:!0,link:function(r,u,f,e){var p=angular.element(u),c=!1,o=angular.element(n),s,a,w,l=function(){var n,t;if(s=p.outerHeight(),n=angular.element(u).parent(),!e.hasAnchorLinks){n.remove();return}t=$(n).offset();a=t.top;w=t.height},v=function(){var i,r,n,t;if(o.scrollTop()>a?u.addClass("nav-sticky"):u.removeClass("nav-sticky"),!c)for(i=!1,r=0,n=e.navItems.length-1;n>=0;n--)if(i)h(e.navItems[n].id,!1);else if(t=angular.element("#"+e.navItems[n].id),t.length){if(n==0||o.scrollTop()>t.offset().top-s){if(r==0&&t.next().length&&o.scrollTop()>t.next().offset().top-s){h(e.navItems[n].id,!1);i=!1;u.removeClass("is-active");break}h(e.navItems[n].id,!0);i=!0}else h(e.navItems[n].id,!1);r++}},h=function(n,t){for(var i=0;i<e.navItems.length;i++)e.navItems[i].id==n&&(e.navItems[i].isActive=t);t&&u.addClass("is-active");r.$apply()},y=function(n){var t=angular.element("#"+n)[0];if(typeof t=="undefined")return!1;angular.element("html, body").stop().animate({scrollTop:t.offsetTop-(s-5)},"slow",function(){c=!1})},b=function(){var t=n.location.hash.substr(1),i=e.navItems.filter(function(n){return n.id===t});t.length&&i.length&&y(t)};t(function(){l()},700);o.on("resize",function(){l();v()});o.on("scroll touchmove",v);o.on("load",b);i.$on("broadcast.dynamicScrollApplied",function(){l()});r.$on("broadcast.stickyNavLinkClicked",function(n,t){c=!0;y(t.id)})}}}]);stickyNavController.$inject=["$scope"],function(){function n(){var n=this;n.isBrochureBtnVisible=!1;n.modalVisible=!1;n.brochureUrl="";n.site="";var i=angular.element(".btn-quick-view-brochure"),r=angular.element(".btn-back-to-top"),t=angular.element("body");n.showModal=function(){n.modalVisible||(i.hide(),r.hide(),n.modalVisible=!0,t.addClass("has-modal-open"),t.bind("touchmove",!1))};n.hideModal=function(){n.modalVisible=!1;i.show();r.show();t.removeClass("has-modal-open");t.unbind("touchmove")};n.init=function(t,i){n.brochureUrl=t;n.site=i}}angular.module("Phoenix.Shared.directives").directive("quickViewBrochure",["$window",function(t){return{restrict:"E",scope:!0,controllerAs:"qvbc",controller:n,bindToController:!0,link:function(n,i,r,u){var f=angular.element(t),e=angular.element(".trip-tabs"),s=angular.element(i),o=0;f.on("resize",function(){o=0});f.on("scroll",function(){if(u.site==="cc")u.isBrochureBtnVisible=this.pageYOffset>=100?!0:!1;else{var n=angular.element("#trip-priceandbooking"),r=angular.element("#trip-package-selection"),h=e.hasClass("nav-sticky"),t=!1;if(n.length||r.length){var o=$(f).scrollTop(),s=f.height(),i=n.length?n:r;o+s>i.offset().top&&(t=!0);o+s>i.offset().top+$(i).outerHeight()&&(t=!1)}u.isBrochureBtnVisible=h&&!t?!0:!1}})}}}]);n.$inject=["$scope"]}(),function(){"use strict";function t(t,i,r,u,f){function e(n,e,o,s){var h=!1,v=function(n,r,f){return u.GetResults(s.search.filters.keywords,s.search.filters.categories,n,r).then(function(n){if(h=!1,n){if(s.search.loadingMoreResults=!1,s.results.count=n.Total,n.Data&&n.Data.length){if(!f&&n.Total===1&&n.Data[0].TripData){b(n.Data);return}s.results.nextPage=n.Data}t(function(){AptForm.Initialise();CaptchaCallback();i.$broadcast("broadcast.dom-manipulation.image")})}})},y=function(){return u.GetAutocomplete().then(function(n){n&&(s.search.autocomplete.data=n.Data)})},p=function(){s.search.loadingMoreResults=!0;s.results.data=s.results.data.concat(s.results.nextPage);s.results.count>s.results.data.length&&v(s.search.pageSize,s.search.pageIndex+1)},c=function(n){return s.search.loadingResults=!0,s.search.loadingMoreResults=!1,v(s.search.pageSize*2,0,n).then(function(){s.results.data=s.results.nextPage.splice(0,s.search.pageSize)})},w=function(){s.search.filters.categories=k(f.GetArrayFromCommaString(f.GetQueryStringParameters("category")),".js-section-category");s.search.filters.keywords=f.GetQueryStringParameters("search");s.search.previous.keywords=s.search.filters.keywords},b=function(n){h=!0;r.location.href=n[0].Url},k=function(n,t){for(var r,u=[],i=0;i<n.length;i++)r=$(t+'  [data-key="'+n[i]+'"]'),r.length&&u.push(n[i]);return u},l=0,a=0;n.$on("broadcast.searchController.searchFiltersUpdated",function(n,t){l++;s.results.data=[];s.results.nextPage=[];s.search.pageIndex=0;var i=t&&t.disableRedirect?!0:!1;c(i).then(function(){a++;h||a>=l&&(s.search.loadingResults=!1,l=0,a=0)})});n.$on("broadcast.searchController.selectSortOption",function(){s.results.data=[];s.results.nextPage=[];s.search.pageIndex=0;c().then(function(){h||(s.search.loadingResults=!1)})});n.$on("broadcast.searchController.showMoreResults",function(){s.results.count>s.results.data.length&&(s.search.pageIndex++,p())});n.$on("broadcast.searchController.tripFinderOverlay",function(){var t=angular.element("html body"),n=angular.element(".site-overlay-secondary"),i=angular.element(".site-search__hero");s.search.open===!0?n.addClass("is-visible"):s.search.open===!1&&(n.removeClass("is-visible"),t.animate({scrollTop:$("#search-page-hero-carousel").offset().top},500))}),function(){y();w();c().then(function(){h||(s.search.loadingResults=!1)})}()}return{restrict:"A",scope:!0,controller:n,controllerAs:"sc",bindToController:!0,link:e}}function i(n){function t(t,i){t.$on("broadcast.searchController.setKeyword",function(){n(function(){var n=angular.element(i).find("form");n.length&&n.submit()})})}return{restrict:"A",scope:!0,require:"^searchPage",link:t}}function r(){function n(){}return{restrict:"A",scope:!0,require:"^searchPage",link:n}}function n(n){function i(){t.search.filterCount=t.search.filters.categories.length?1:0}function r(){t.search.open=!t.search.open;n.$broadcast("broadcast.searchController.tripFinderOverlay")}function u(){t.search.autocomplete.open=t.search.filters.keywords&&t.search.filters.keywords.length>=1?!0:!1}function f(){t.search.autocomplete.open=!1}function e(){t.search.open=!1;n.$broadcast("broadcast.searchController.tripFinderOverlay")}function o(t,i,r){for(var f=!1,u=0;u<i.length;u++)if(i[u]==t){f=!0;i.splice(u,1);break}f||i.push(t);n.$broadcast("broadcast.searchController.searchFiltersUpdated",{disableRedirect:r})}function s(n,t){for(var i=0;i<t.length;i++)if(t[i]==n)return!0;return!1}function h(t){t.length&&(t.splice(0,t.length),n.$broadcast("broadcast.searchController.searchFiltersUpdated"))}function c(){t.search.filters.categories=[];n.$broadcast("broadcast.searchController.searchFiltersUpdated")}function l(){t.search.filters.keywords=""}function a(){n.$broadcast("broadcast.searchController.setKeyword")}function v(i){t.search.filters.keywords=i;t.search.hideAutocomplete();n.$broadcast("broadcast.searchController.setKeyword")}function y(){n.$broadcast("broadcast.searchController.showMoreResults")}function p(){var n=t.search.pageIndex==0?t.search.pageSize:(t.search.pageIndex+1)*t.search.pageSize;return t.results.count>n?t.results.count-n:0}function w(t,i){var u=$("[data-trip-request-quote-form] .js-form-section"),r;u.show().next().hide();r=Object.assign({},t,{Name:i});n.$broadcast("broadcast.tripFinderController.updateTripData",r)}var t=this;t.search={open:!1,filters:{keywords:"",categories:[]},autocomplete:{data:[],open:!1},previous:{keywords:""},filterCount:0,pageIndex:0,pageSize:10,toggleOpen:r,hideSearch:e,hideAutocomplete:f,showAutocomplete:u,toggleSelection:o,isOptionSelected:s,clearSectionSelections:h,clearSelections:c,clearKeywords:l,setKeyword:v,doSearch:a,showMoreResults:y,loadingResults:!1,loadingMoreResults:!1};t.results={count:0,data:[],nextPage:[],remainingCount:p};t.requestQuote=w;n.$watch("sc.search.filters.categories",function(){i()},!0)}function u(n,t){function i(n,i,r,u){var f=function(t){var r=$(i).has(t.target).length>0,f=i[0]==t.target,e=r||f;e||n.$apply(function(){u.search.hideSearch()})};n.$watch(function(){return u.search.open},function(n,i){n!==i&&n===!0?t.bind("tap click",f):n!==i&&n===!1&&t.unbind("tap click",f)})}return{restrict:"A",scope:!0,require:"^searchPage",link:i}}angular.module("Phoenix.Shared.directives").directive("searchPage",["$timeout","$rootScope","$window","searchService","utilityService",t]).directive("searchHero",["$timeout",i]).directive("searchResults",["$timeout",r]).directive("searchFilters",["$timeout","$document",u]).directive("searchInput",["$analytics",function(n){return{scope:{searchKeyword:"=ngModel",placeholder:"@",inputId:"@",inputClass:"@",buttonClass:"@",iconClass:"@",inputMaxlength:"=",onClear:"&",analyticsEventAction:"@"},restrict:"E",templateUrl:"/assets/js/phoenix/shared/ng/templates/searchReset.html",link:function(t,i){if(t.resetSearch=function(){t.searchKeyword=""},t.analyticsEventAction)i.find("input").on("focus",function(){n.eventTrack(null,{category:"Global Navigation",action:t.analyticsEventAction,label:"Search Opened"})})}}}]).directive("searchForm",["$analytics",function(n){return{scope:!0,restrict:"A",link:function(t,i,r){t.searchFormSubmit=function(t,u){t.$invalid?u.preventDefault():r.analyticsEventAction&&n.eventTrack(null,{category:"Global Navigation",action:r.analyticsEventAction,label:"Query - "+i.find("input").val()})}}}}]);n.$inject=["$scope"]}(),function(){"use strict";function n(){return{restrict:"AE",scope:!0,replace:"true",link:u,controller:t,controllerAs:"tic"}}function u(n,t,i,r){function f(){u.find(".force-hide").length||(r.AllItemsVisible=!0)}function e(){var n=u.find(".force-hide"),t=r.takeCount;n.each(function(i){var r=n.eq(i);return r.removeClass("force-hide"),i===t-1?!1:void 0});f()}function o(){var n=u.find(".force-hide");n.removeClass("force-hide");r.AllItemsVisible=!0}function s(){var n=r.AllDaysExpanded?"hide":"show";u.find(".panel-collapse").collapse(n);r.AllDaysExpanded=!r.AllDaysExpanded}var u=angular.element(t);f();n.$on("broadcast.tripItineraryController.LoadMoreDays",function(){e()});n.$on("broadcast.tripItineraryController.ToggleExpandAllDays",function(){o();s()})}function t(n,t){function r(n){i.takeCount=n}function u(){t.$broadcast("broadcast.tripItineraryController.LoadMoreDays")}function f(){t.$broadcast("broadcast.tripItineraryController.ToggleExpandAllDays")}function e(t,i){return n("currency")(t,i,0)}var i=this;i.AllItemsVisible=!1;i.takeCount=1;i.AllDaysExpanded=!1;i.loadMoreDays=u;i.toggleExpandAllDays=f;i.init=r;i.formatPrice=e}function i(n,t,i,r){return{restrict:"A",scope:!0,replace:"true",link:function(u,f,e){function ht(){i.cancel(ui);ui=i(function(){ni();l!==undefined&&l.css({"background-position":"0 0","background-size":v+"px "+y+"px"});h!==undefined&&(ti(),yt(),ii())},10)}var p=angular.element(f),g=e.src,fi=e.alt||"",ct=parseInt(e.zoomingAnimationTime)||1e3,ei=parseInt(e.zoomingAnimationIntervalDelay)||20,k=1.6,lt=new RegExp(/useCustomFunctions=1&rw=(\d*)&w=(\d*)&h=(\d*)&cropX=(\d*)&cropY=(\d*)/i),at=ct>0,nt,b=0,oi=Math.min(5e3,Math.max(50,ct)),vt=Math.min(5e3,Math.max(1,ei)),si=Math.min(1,Math.max(.0002,1/(oi/vt))),tt={x:0,y:0},v,y,w,d,ut,ft,et,l,h,hi=function(){p.wrap('<div style="position: relative;"><\/div>');l=angular.element("<div><\/div>");l.addClass("zoomable-img-magnifier");l.css({"background-image":"url("+g+")","background-position":"0 0","background-size":v+"px "+y+"px"});var n,t=!1;l.on("mouseenter",function(){n=0;t=!1});l.on("mousemove",function(i){n++;n>3&&!t&&(t=!0,at?pt(1):b=1);dt(i);st()});l.on("mouseout",function(n){dt(n);at?pt(-1):(b=0,st())});l.on("click",function(){li()});p.after(l)},c,s,o,ci=function(){var n=[],f,r,e,u;for(n.push('<div class="modal fade zoomable-img-modal" role="dialog" data-modal-scroll-fix data-modal data-modal-xs>'),n.push('    <div class="modal-dialog">'),n.push('        <div class="modal-content">'),n.push('            <div class="modal-header">'),n.push('                <div class="modal-header__close">'),n.push('                    <button class="close-notification" data-dismiss="modal">'),n.push('                        <span class="close-notification__text">Close<\/span><i class="close-notification__icon icon-cancel"><\/i>'),n.push("                    <\/button>"),n.push("                <\/div>"),n.push("            <\/div>"),n.push('            <div class="modal-body">'),n.push('                <img class="img-responsive" src="'+g+'" alt="'+fi+'" />'),n.push("            <\/div>"),n.push("        <\/div>"),n.push("    <\/div>"),n.push("<\/div>"),f="",r=0;r<n.length;++r)f+=n[r].trim();h=angular.element(f);h.on("shown.bs.modal",function(){yt();ii()});h.on("hidden.bs.modal",function(){s=Object.assign({},c);o=Object.assign({},c);ti()});t.find("body").append(h);var l=h.find("img.img-responsive"),a=h.find(".modal-body"),i=new Hammer.Manager(l[0]);i.add(new Hammer.Pan({pointers:0}));i.add(new Hammer.Pinch);i.add(new Hammer.Tap({taps:2,interval:500}));i.on("pinch",function(n){o.scale=Math.min(w/c.w,Math.max(1,n.scale*s.scale));o.w=c.w*o.scale;o.h=c.h*o.scale;o.pinchCenter===null&&(o.pinchCenter=e(n),o.pinchCenterOffset={x:o.pinchCenter.x*s.scale-(-s.x*s.scale+Math.min(c.w,s.w)/2),y:o.pinchCenter.y*s.scale-(-s.y*s.scale+Math.min(c.h,s.h)/2)});var t={x:(o.pinchCenter.x*o.scale-o.pinchCenterOffset.x)/o.scale,y:(o.pinchCenter.y*o.scale-o.pinchCenterOffset.y)/o.scale},i={x:-o.x+c.w/2/o.scale,y:-o.y+c.h/2/o.scale};u({x:o.x+(i.x-t.x),y:o.y+(i.y-t.y)});ot()});i.on("pinchend",function(){s.w=o.w;s.h=o.h;s.x=o.x;s.y=o.y;s.scale=o.scale;o.pinchCenter=null});i.on("pan",function(n){u({x:s.x+n.deltaX/o.scale,y:s.y+n.deltaY/o.scale});ot()});i.on("panend",function(){s.x=o.x;s.y=o.y});i.on("tap",function(n){o.scale=Math.min(k,w/c.w);o.w=c.w*o.scale;o.h=c.h*o.scale;var t=e(n),i={x:-o.x+c.w/2/o.scale,y:-o.y+c.h/2/o.scale};u({x:o.x+(i.x-t.x),y:o.y+(i.y-t.y)});ot();s.w=o.w;s.h=o.h;s.x=o.x;s.y=o.y;s.scale=o.scale});e=function(n){var t=l[0].getBoundingClientRect();return{x:-s.x+(n.center.x-t.left)/s.scale,y:-s.y+(n.center.y-t.top)/s.scale}};u=function(n){var t=Math.max(a.width(),c.w);o.x=Math.min(0,Math.max(n.x,(t-o.w)/o.scale));o.y=Math.min(0,Math.max(n.y,(c.h-o.h)/o.scale))}},li=function(){h.modal()},yi=function(){h.modal("hide")},ot=function(){var n=h.find("img.img-responsive");n.css({width:Math.ceil(o.w)+"px",height:Math.ceil(o.h)+"px","max-width":"none",transform:"translate( "+Math.ceil(o.x*o.scale)+"px, "+Math.ceil(o.y*o.scale)+"px)"})},yt=function(){var l=h.find(".modal-content"),s=h.find(".modal-dialog"),a=h.find(".modal-header"),v=parseInt(s.css("margin-top").replace(/[^-\d\.]/g,"")),t=parseInt(l.css("padding-left").replace(/[^-\d\.]/g,"")),e=a[0].getBoundingClientRect().height,y=t===0,u,i,r,f,o,c;n.innerHeight<n.innerWidth?(o=n.innerHeight-t*2,f=Math.min(d+(t+e),n.innerHeight-v*2),r=f-(t+e),i=w*(r/d),i>o&&(i=o,r=d*(o/w),f=r+(t+e)),u=i+t*2):(u=Math.min(w+t*2,n.innerWidth),i=u-t*2,r=d*(i/w),f=r+(t+e));y&&(c=h.find("img.img-responsive"),c.css({width:i+"px",height:r+"px",margin:"0 auto"}),u=n.innerWidth);s.css("width",Math.ceil(u)+"px");s.css("height",Math.ceil(f)+"px")},pt=function(n){angular.isDefined(nt)&&wt();var t=1/si,u=n===1?1:0,i=0;nt=r(function(){b=ai("easeInOutQuad",i,b,u-b,t);st();i++;i===t&&(b=u)},vt,t)},wt=function(){angular.isDefined(nt)&&(r.cancel(nt),nt=undefined)},it={x:0,y:0},bt,kt,a={x:0,y:0,w:0,h:0},st=function(){it.x=tt.x/v;it.y=tt.y/y;a.w=v+ut*b;a.h=y+ft*b;var n=k,t=Math.min(w,v*n),i=Math.min(d,y*n);a.w=Math.min(t,Math.round(a.w));a.h=Math.min(i,Math.round(a.h));bt=a.w-v;kt=a.h-y;a.x=Math.round(it.x*bt*-1);a.y=Math.round(it.y*kt*-1);l.css("background-size",a.w+"px "+a.h+"px");l.css("background-position",a.x+"px "+a.y+"px")},dt=function(n){et=l.offset();tt.x=Math.min(v,Math.max(0,n.pageX-et.left));tt.y=Math.min(y,Math.max(0,n.pageY-et.top))},ai=function(n,t,i,r,u){var f;switch(n){case"easeInOutQuad":if(t/=u/2,t<1)return r/2*t*t+i;t--;f=-r/2*(t*(t-2)-1)+i;break;case"linear":f=r*t/u+i}return f},rt=new Image,gt=!1,vi=function(){if(gt){var n=p.data("src").match(lt);v=parseInt(n[2]);y=parseInt(n[3])}else v=p.width(),y=p.height();w=rt.naturalWidth;d=rt.naturalHeight;ut=w-v;ft=d-y},ni=function(){vi();ut>0&&ft>0?(l===undefined&&hi(),h===undefined&&ci()):(l!==undefined&&(wt(),l.remove(),l=undefined),h!==undefined&&(h.remove(),h=undefined))},ti=function(){var n=h.find("img.img-responsive");n.css({width:"auto",height:"auto","max-width":"100%",margin:"0",transform:"translate(0, 0)"})},ii=function(){var n=h.find("img.img-responsive");c={x:0,y:0,w:n.width(),h:n.height(),scale:1,pinchCenter:null,pinchCenterOffset:null};s=Object.assign({},c);o=Object.assign({},s)},ri,ui;p[0].tagName==="IMG"&&g!==undefined&&(rt.onload=ni,(p.hasClass("lazyload")||p.hasClass("lazyloaded"))&&(ri=p.data("src").replace(lt,function(n,t,i,r,u,f){return gt=!0,t=Math.ceil(parseInt(t)*k),i=Math.ceil(parseInt(i)*k),r=Math.ceil(parseInt(r)*k),u=Math.ceil(parseInt(u)*k),f=Math.ceil(parseInt(f)*k),"useCustomFunctions=1&rw="+t+"&w="+i+"&h="+r+"&cropX="+u+"&cropY="+f}),g=ri),rt.src=g);angular.element(n).bind("resize",function(){ht()});angular.element(n).bind("orientationchange",function(){i(function(){ht()},250)})}}}function r(n,t){return{restrict:"AE",scope:!0,replace:"true",link:function(i,r,u){r.click(function(){var f=t.defer(),i=$(this),r="btn--loading dark-font";i.attr("disabled","disabled");i.hasClass(r)||i.addClass(r);n.downloadTripItinerary(u.pdfName).then(function(n){i.removeClass(r);i.removeAttr("disabled");n?f.resolve():f.reject()})})}}}angular.module("Phoenix.Shared.directives").directive("tripItinerary",n).directive("tripOverviewZoomableImg",i).directive("tripPdfDownload",r);n.$inject=["$window","$document"];t.$inject=["$filter","$scope"];i.$inject=["$window","$document","$timeout","$interval"];r.$inject=["tripService","$q"]}(),function(){"use strict";function t(n,t){function i(i,r){function u(){n.location=t.getTripUrl();r.data("forceReload")&&n.location.reload()}r.bind("click",u)}return{restrict:"A",link:i}}function i(t,i,r,u,f){function e(n,e,o,s){var w=function(n,u){var f=s.search.sort.current.Field!==undefined?s.search.sort.current.Field:"",e=s.search.sort.current.Direction!==undefined?s.search.sort.current.Direction:"";return r.GetTrips(s.search.filters.destinations,s.search.filters.travelStyles,s.search.filters.duration,s.search.filters.city,s.search.filters.years,s.search.filters.experiences,n,u,f,e).then(function(n){n&&(s.tripResults.count=n.Total,s.search.sort.options=n.SortOptions,!f&&n.SortOptions&&n.SortOptions.length&&(s.search.sort.current=s.search.sort.options.length?s.search.sort.options[0]:{}),n.Data&&n.Data.length&&(s.tripResults.nextPage=n.Data),s.search.loadingMoreResults=!1,t(function(){AptForm.Initialise();i.$broadcast("broadcast.dom-manipulation.image")}))})},k=function(){s.search.loadingMoreResults=!0;s.tripResults.trips=s.tripResults.trips.concat(s.tripResults.nextPage);b();s.tripResults.count>s.tripResults.trips.length&&w(s.search.pageSize,s.search.pageIndex+1)},p=function(){return s.search.loadingResults=!0,s.search.loadingMoreResults=!1,w(s.search.pageSize*2,1).then(function(){s.tripResults.trips=s.tripResults.nextPage.splice(0,s.search.pageSize);b()})},b=function(){u.GetTripTags(s.search.filters.destinations.join(","),s.search.filters.travelStyles.join(","),s.search.filters.duration.join("_")).then(function(n){s.search.filters.cities=n})},c=f.GetQueryStringParameters("destination"),h=f.GetQueryStringParameters("travelstyle"),l=f.GetQueryStringParameters("duration"),a=f.GetQueryStringParameters("year"),v=f.GetQueryStringParameters("keywords"),d=function(){s.search.filters.destinations=y(f.GetArrayFromCommaString(c),".js-section-destination");s.search.filters.travelStyles=y(f.GetArrayFromCommaString(h),".js-section-travelstyle");s.search.filters.experiences=y(f.GetArrayFromCommaString(h),".js-section-experience");s.search.filters.duration=y(f.GetArrayFromCommaString(l,"_"),".js-section-duration");s.search.filters.years=y(f.GetArrayFromCommaString(a),".js-section-year");s.search.filters.city=s.search.cityInput=v;n.$apply()},g=function(){return c!==null||h!==null||l!==null||a!==null||v!==null},nt=function(){var n=0;return c!==null&&s.search.filters.destinations.length>0&&++n,h!==null&&(s.search.filters.travelStyles.length>0&&++n,s.search.filters.experiences.length>0&&++n),l!==null&&s.search.filters.duration.length>0&&++n,a!==null&&s.search.filters.years.length>0&&++n,v!==null&&s.search.filters.city.length>0&&++n,n>0?!0:!1},tt=function(){var n=!0;return(c!==null&&c!=""||h!==null&&h!=""||l!==null&&l!=""||a!==null&&a!=""||v!==null&&v!="")&&(n=!1),n},it=angular.element(".search-page__filters, .search-page-filters, .trip-finder__filters__options"),y=function(n,t){for(var u,r=[],i=0;i<n.length;i++)it.length?(u=$(t+'  [data-key="'+n[i]+'"]'),u.length&&r.push(n[i])):r.push(n[i]);return r};t(function(){d();p().then(function(){s.tripResults.count===0?s.search.clearSelections():s.search.loadingResults=!1;g()&&(s.showNoTripsFoundMsg=!(nt()||tt()))})});n.$on("broadcast.tripFinderController.searchFiltersUpdated",function(){s.tripResults.trips=[];s.tripResults.nextPage=[];s.search.pageIndex=1;p().then(function(){s.search.loadingResults=!1});angular.element(".trip-card-listing__no-results-msg")[0].classList.remove("display")});n.$on("broadcast.tripFinderController.selectSortOption",function(){s.tripResults.trips=[];s.tripResults.nextPage=[];s.search.pageIndex=1;p().then(function(){s.search.loadingResults=!1})});n.$on("broadcast.tripFinderController.hideSortOptions",function(){var n=angular.element("#tripFinderSortOptionsModal");n.modal("hide")});n.$on("broadcast.tripFinderController.hideCityOptions",function(){var n=angular.element("#tripFinderCitiesModal");n.modal("hide")});n.$on("broadcast.tripFinderController.showMoreResults",function(){s.tripResults.count>s.tripResults.trips.length&&(s.search.pageIndex++,k())});n.$on("broadcast.tripFinderController.tripFinderOverlay",function(){var u=angular.element("html body"),n=angular.element(".site-overlay-secondary"),f=angular.element(".header.home-page"),t=angular.element(".trip-finder-hero"),i=angular.element(".trip-finder__search"),r;s.search.open===!0?(n.addClass("is-visible"),t.addClass("z-stack-order-50"),i.addClass("z-stack-order-50")):s.search.open===!1&&(n.removeClass("is-visible"),t.removeClass("z-stack-order-50"),i.removeClass("z-stack-order-50"),r=$("#search-page-hero-carousel"),r.length&&u.animate({scrollTop:$("#search-page-hero-carousel").offset().top},500))})}return{restrict:"A",scope:!0,controller:n,controllerAs:"tfc",bindToController:!0,link:e}}function r(){function n(){}return{restrict:"A",scope:!0,require:"^tripFinder",link:n}}function u(n,t){function i(i,r,u,f){n(function(){var i=angular.element(r).find("#trip-filter-overlay"),n=t.find("body")[0],u=t.find(".site-container")[0];i.on("click",function(){n.hasAttribute("data-no-scroll")?(n.removeAttribute("data-no-scroll"),$(".site-container").removeClass("noscroll-xs"),$("body").removeClass("modal-open-xs")):(n.setAttribute("data-no-scroll",!0),$(".site-container").addClass("noscroll-xs"),$("body").removeClass("modal-open").addClass("modal-open-xs"));angular.element(".trip-card-listing__no-results-msg")[0].classList.remove("display")})});n(function(){var n=angular.element(r).find(".modal");n.on("hidden.bs.modal",function(){f.search.modalOpen=!1});n.on("show.bs.modal",function(){f.search.modalOpen=!0})});var e=function(n){if(f.search.modalOpen){f.search.open=!0;return}if(!$(n.target).is(".trip-finder__search__popup-menu__listitem a")){var t=$(r).has(n.target).length>0,u=r[0]==n.target,e=t||u;e||i.$apply(function(){f.search.hideSearch()})}};i.$watch(function(){return f.search.open},function(n,i){n!==i&&n===!0?t.bind("tap click",e):n!==i&&n===!1&&t.unbind("tap click",e)})}return{restrict:"A",scope:!0,require:"^tripFinder",link:i}}function f(){function n(){}return{restrict:"A",scope:!0,require:"^tripFinder",link:n}}function n(n){function l(){t.search.filterCount=(t.search.filters.destinations.length?1:0)+(t.search.filters.travelStyles.length?1:0)+(t.search.filters.duration.length?1:0)+(t.search.filters.city?1:0)+(t.search.filters.years.length?1:0)+(t.search.filters.experiences.length?1:0)}function a(n){t.tripResults.count=n}function v(){t.search.open=!t.search.open;n.$broadcast("broadcast.tripFinderController.tripFinderOverlay");t.search.cityInput!=t.search.filters.city&&(t.search.cityInput=t.search.filters.city)}function y(){t.search.open=!1;t.search.cityInput=t.search.filters.city;n.$broadcast("broadcast.tripFinderController.tripFinderOverlay")}function p(t,i){var u,r;if(i){for(u=!1,r=0;r<i.length;r++)if(i[r]==t){u=!0;i.splice(r,1);break}u||i.push(t);n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated")}}function i(n,t){return t.filter(function(t){return t==n}).length>=1}function u(n,t){for(var i=0;i<t.length;i++)if(t[i]==n){t.splice(i,1);break}}function f(n,t){for(var i,r=t.length-1;r>=0;--r)for(i=0;i<n.length;++i)if(t[r]==n[i]){t.splice(r,1);break}}function w(n,t){for(var r=!1,i=0;i<t.length;i++)if(t[i]==n){t.splice(i,1);r=!0;break}r||t.push(n)}function b(t,r,e,s){var c=e.filter(function(n){return n.Parent==t})[0].Children,a=i(t,s),h,l;if(a)for(u(t,s),h=0;h<c.length;++h)c[h]!=r&&s.push(c[h]);else w(r,s),l=o(t,e,s),l&&(f(c,s),s.push(t));n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated")}function k(n,t,r){return i(n,r)||i(t,r)}function d(n,t){if(!t)return!1;for(var i=0;i<t.length;i++)if(t[i]==n)return!0;return!1}function g(t){t.length&&(t.splice(0,t.length),n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated"))}function nt(t,r,o){var s=r.filter(function(n){return n.Parent==t})[0].Children,h=e(t,r,o),c=i(t,o);c?u(t,o):h?f(s,o):o.push(t);n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated")}function e(n,t,i){for(var r,f=t.filter(function(t){return t.Parent==n})[0].Children,u=0;u<i.length;++u)for(r=0;r<f.length;++r)if(i[u]==f[r])return!0;return!1}function o(n,t,i){for(var r,e=t.filter(function(t){return t.Parent==n})[0].Children,u,f=0;f<e.length;++f){for(u=!1,r=0;r<i.length;++r)e[f]==i[r]&&(u=!0);if(!u)return!1}return!0}function tt(n,t){var i=n.length;return i===0||i===t?"(All)":"("+i+")"}function it(n,t,r){for(var s,f,h,e,c=!0,u=0;u<r.length;++u){for(s=!1,f=0;f<n.length;++f)if(r[u]==n[f]){s=!0;break}if(!s){c=!1;break}}for(h=!0,e=n.length,u=0;u<t.length;++u)i(t[u].Parent,n)?e+=t[u].Children.length:o(t[u].Parent,t,n)||(h=!1);return e===0||c&&h?"(All)":"("+e+")"}function rt(n,t,r){var u=t.filter(function(n){return n.Parent==r})[0].Children,e=u.length,o=i(r,n),f=n.filter(function(n){for(var t=0;t<u.length;++t)if(n==u[t])return!0;return!1}).length;return n.length===0?"":f===e||o?"(All)":f===0?"":"("+f+")"}function ut(n,t,i){return n&&t&&i?n.length===0||n.length>=t?i:"("+n.length+")":""}function r(n){var t=$(".tf-search__filters__filter__body__wrapper");t&&t.each(function(){var t=$(this);n(t)})}function ft(){r(function(n){n.collapse("hide")})}function et(){ft();h()}function ot(){var n=$("#tf-search__overlay");n&&n.hasClass("visible")&&n.removeClass("visible")}function s(){var n=$("#tf-search__overlay");n&&!n.hasClass("visible")&&n.addClass("visible")}function h(){var n=!1;r(function(t){(t.hasClass("in")||t.hasClass("collapsing"))&&(n=!0)});n?s():ot()}function st(){t.search.filters.destinations=[];t.search.filters.travelStyles=[];t.search.filters.duration=[];t.search.filters.city="";t.search.cityInput="";t.search.filters.years=[];t.search.filters.experiences=[];n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated")}function ht(){n.$broadcast("broadcast.tripFinderController.showMoreResults")}function ct(){t.search.citiesVisible=!0}function c(){t.search.citiesVisible=!1}function lt(i){t.search.filters.city=i.Title;t.search.cityInput=i.Title;c();n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated")}function at(){t.search.filters.city="";t.search.cityInput="";n.$broadcast("broadcast.tripFinderController.searchFiltersUpdated")}function vt(){t.search.sort.optionsOpen=!0}function yt(){t.search.sort.optionsOpen=!1;n.$broadcast("broadcast.tripFinderController.hideSortOptions")}function pt(i){t.search.sort.current=i;n.$broadcast("broadcast.tripFinderController.selectSortOption")}function wt(i){t.currentTrip=i;var r=$("[data-trip-request-quote-form] .js-form-section");r.show().next().hide();n.$broadcast("broadcast.tripFinderController.updateTripData",i)}function bt(){n.$broadcast("broadcast.tripFinderController.hideCityOptions")}function kt(){return t.tripResults.count>t.tripResults.trips.length&&!t.search.loadingMoreResults&&!t.search.loadingResults}function dt(){return t.tripResults.count==0&&!t.search.loadingResults}function gt(){return t.tripResults.count>t.tripResults.trips.length&&t.search.loadingMoreResults}function ni(){return(t.tripResults.count>0||t.tripResults.trips.length)&&!t.search.loadingResults}function ti(){return t.tripResults.count==0&&!t.tripResults.trips.length&&!t.search.loadingResults}var t=this;t.search={open:!1,filters:{destinations:[],travelStyles:[],duration:[],city:"",cities:[],years:[],secondaryDestinations:[],experiences:[],canShowViewResultsCta:ni,canShowNoResultsCta:ti},sort:{optionsOpen:!1,options:[],current:{Title:"Popularity",Field:"Rank",Direction:"Asc"},hideOptions:yt,showOptions:vt,selectOption:pt},filterCount:0,pageIndex:1,pageSize:12,citiesVisible:!1,cityInput:"",modalOpen:!1,toggleOpen:v,hideSearch:y,toggleSelection:p,isOptionSelected:d,clearSectionSelections:g,clearSelections:st,toggleNestedSelection:nt,isAnyNestedOptionsSelected:e,firstLevelNumberOfFiltersDescription:tt,firstLevelNumberOfFiltersDescriptionDestination:it,nestedNumberOfFiltersDescription:rt,toggleSecondarySearchSelection:b,isSelfOrParentSelected:k,showMoreResults:ht,showCities:ct,hideCities:c,setCity:lt,clearCity:at,loadingResults:!0,loadingMoreResults:!1,hideCityOptions:bt,canShowResults:kt,canShowNoResults:dt,canShowLoading:gt,ccTripFilterDescription:ut,ccOverlayClick:et,showNoTripsFoundMsg:!1};t.tripResults={count:0,trips:[],nextPage:[]};t.setResults=a;t.requestQuote=wt;n.$watch("tfc.search.filters",function(){l()},!0);r(function(n){n.on("show.bs.collapse",s);n.on("hidden.bs.collapse",h)});t.init=function(n){t.search.filters.secondaryDestinations=n}}angular.module("Phoenix.Shared.directives").directive("tripFinder",["$timeout","$rootScope","tripFinderService","tripService","utilityService",i]).directive("tripFinderHero",["$timeout",r]).directive("tripFinderSearch",["$timeout","$document",u]).directive("tripFinderResults",["$timeout",f]).directive("bookingFunnelBackButton",["$window","tripService",t]);n.$inject=["$scope"]}(),function(){"use strict";function n(n){function t(t,i,r,u){function f(i){u.modal={};u.modal.isLoading=!0;t.$apply();o.modal();n.GetPackageInformation(i).then(e)}function e(n){n?u.modal=angular.extend(u.modal,n):(u.modal.title=u.modalError.title,u.modal.description=u.modalError.description);u.modal.isLoading=!1}var o=$("#tpsc-info");i.bind("click",function(){var n=this.dataset.infoId;f(n)})}return{restrict:"A",scope:!0,require:"^tripPackageSelection",link:t}}function t(n,t,i){function r(n,r,u,f){var e={};e.$element=$(r).find("form");e.init=function(){e.$element.on("form.submit.initialised",function(){f.form.isSubmitting=!0;n.$apply()});e.$element.on("form.submit.success",function(){f.form.isSubmitting=!1;t.$broadcast("broadcast.multistepCarousel.goToStep",{step:2});i.eventTrack(null,{Packagesku:f.trip.tripCode,Packagename:f.trip.tripName,Packageprice:f.price,Packagetype:f.package.journeyPackageType,Travelmode:f.roomType.roomConfigurationType,Upgradeoptions:f.buildPackageSelectionArray(),event:"enquiryComplete"})});e.$element.on("form.submit.error",function(){f.form.isSubmitting=!1;n.$apply()});e.$element.on("form.submit.invalid",function(){f.form.isSubmitting=!1;n.$apply()})};e.init()}return{restrict:"A",scope:!0,require:"^tripPackageSelection",link:r}}function i(n,t){function i(i,r,u,f){function e(){t.GetDeparture(f.trip.tripId,f.date).then(function(n){f.setupModel(n)})}var o=$(r);i.$watch("tpsc.date",function(n,t){n!==t&&(e(),i.tpsc.setTripBadge(n))});i.$on("broadcast.multistepCarouselControllers.indexChanged",function(){n.ScrollTo(o,300)});i.$watch("tpsc.package",function(){i.tpsc.calculateTotalPrice()});i.$watch("tpsc.roomType",function(){i.tpsc.isUpdatingRoomType=!0;i.tpsc.setDefaultUpgradeCategories();i.tpsc.calculateTotalPrice()});i.$watch("tpsc.roomType.upgradeCategories",function(){i.tpsc.isUpdatingRoomType||i.tpsc.calculateTotalPrice();i.tpsc.isUpdatingRoomType=!1},!0);i.$on("broadcast.multistepCarouselControllers.goToNext",function(){f.buildPackageDetailsString();f.buildRoomConfigurationString()});e()}return{restrict:"A",scope:!0,controller:"tripPackageSelectionController",controllerAs:"tpsc",bindToController:!0,link:i}}angular.module("Phoenix.Shared.directives").directive("tripPackageSelectionForm",["$timeout","$rootScope","$analytics",t]).directive("tripPackageSelectionInfo",["tripPackageSelectionService",n]).directive("tripPackageSelection",["utilityService","tripPackageSelectionService",i])}(),function(){"use strict";function t(t,i,r,u,f,e,o,s,h,c,l){function a(n,i,a,v){var k,rt,ut=angular.element(i),ft=angular.element(".trip-priceandbooking__booking-steps-container"),d=angular.element(".trip-priceandbooking__booking-steps"),g,b=angular.element("body").prop("clientWidth"),et,y={},ot={};ot.scrollTo=function(n){angular.element("html, body").animate({scrollTop:n},100)};y.isHostedFieldsValid=!1;y.hostedFieldInstance={};y.hostedFields={number:{selector:"#payment-gateway--card-number"},cvv:{selector:"#payment-gateway--card-security",placeholder:"CVV"},expirationDate:{selector:"#payment-gateway--card-expiry",placeholder:"MM/YY"}};y.hostedFieldsStyles={input:{"font-size":"16px","font-family":"helvetica, tahoma, calibri, sans-serif",color:"#04183b","font-weight":"bold"},":focus":{color:"black"},"::-ms-clear":{display:"none",width:"0",height:"0",opacity:"0"},".invalid":{color:"#db301a"}};y.updateScope=function(n,t){var i=n.split(".");v[i[1]][i[2]][i[3]]=t};y.initUnbindedInputs=function(){y.unbindedInputs.map(function(n){y.$details.trigger("form.masterfield.change",n.parentSelector)})};y.doBookingModelMapping=function(){(v.paymentPrice.cartMappingModel.primaryPassenger.firstName=v.forms.passengerOne.firstname,v.paymentPrice.cartMappingModel.primaryPassenger.lastName=v.forms.passengerOne.lastname,v.paymentPrice.cartMappingModel.primaryPassenger.passengerTitleName=v.forms.passengerOne.title,v.paymentPrice.cartMappingModel.primaryPassenger.address="Online",v.paymentPrice.cartMappingModel.primaryPassenger.suburb="Online",v.paymentPrice.cartMappingModel.primaryPassenger.country="Australia",v.paymentPrice.cartMappingModel.primaryPassenger.state="VIC",v.paymentPrice.cartMappingModel.primaryPassenger.postCode="3192",v.paymentPrice.cartMappingModel.primaryPassenger.howDidYouHearAboutUsOptionId=8,v.paymentPrice.cartMappingModel.primaryPassenger.howDidYouHearAboutUsOptionDetailId=40,v.paymentPrice.cartMappingModel.primaryPassenger.email=v.forms.passengerOne.email,v.paymentPrice.cartMappingModel.primaryPassenger.phoneNumber=v.forms.passengerOne.phonenumber,v.paymentPrice.cartMappingModel.primaryPassenger.phoneNumberType="Mobile",v.paymentPrice.cartMappingModel.primaryPassenger.contactMethod="Phone",v.paymentPrice.cartMappingModel.primaryPassenger.frequentFlyerNumber=v.forms.passengerOne.frequentflyernumber,v.paymentPrice.cartMappingModel.paymentDetail.amount=v.payment.isTotalAmountSelected?v.paymentPrice.priceBreakDown.totalAmount:v.paymentPrice.priceBreakDown.minDeposit,v.paymentPrice.cartMappingModel.paymentDetail.surcharge=v.payment.isTotalAmountSelected?v.paymentPrice.priceBreakDown.surchargeAmount:v.paymentPrice.priceBreakDown.minDepositSurchargeAmount,v.paymentPrice.cartMappingModel.paymentDetail.paymentMethodNonce=v.payment.nonce,v.paymentPrice.cartMappingModel.paymentDetail.nameOnCard=v.payment.cardName,v.paymentPrice.cartMappingModel.paymentDetail.cardType=v.payment.selectedMethod,v.paymentPrice.cartMappingModel.paymentDetail.cardBrand=v.payment.selectedCardBrandKey,$.isEmptyObject(v.qantas.authObject)||(v.paymentPrice.cartMappingModel.paymentDetail.qantasPointsBurnRequest.memberNumber=v.qantas.authObject.memberNumber,v.paymentPrice.cartMappingModel.paymentDetail.qantasPointsBurnRequest.quoteReference=v.qantas.authObject.quoteNumber,v.paymentPrice.cartMappingModel.paymentDetail.qantasPointsBurnRequest.pointsToBurn=v.qantas.authObject.pointsBurned,v.paymentPrice.cartMappingModel.paymentDetail.qantasPointsBurnRequest.pointsValueInDollars=v.qantas.authObject.currencyAmount),v.paymentPrice.cartMappingModel.additionalPassenger!=null)&&(v.paymentPrice.cartMappingModel.additionalPassenger.firstName=v.forms.passengerTwo.firstname,v.paymentPrice.cartMappingModel.additionalPassenger.lastName=v.forms.passengerTwo.lastname,v.paymentPrice.cartMappingModel.additionalPassenger.passengerTitleName=v.forms.passengerTwo.title,v.paymentPrice.cartMappingModel.additionalPassenger.frequentFlyerNumber=v.forms.passengerTwo.frequentflyernumber)};y.setupPassengerForms=function(){y.$onePassengerForm=angular.element("#trip_One_Passenger_Form");y.$twoPassengerForm=angular.element("#trip_Two_Passenger_Form");var n;v.roomType!==null&&v.roomType.allowedAdultNumber===2?(y.$onePassengerForm.hide(),y.$twoPassengerForm.show(),n=y.$twoPassengerForm):(y.$onePassengerForm.show(),y.$twoPassengerForm.hide(),n=y.$onePassengerForm);y.$passengerFormsSubmitButtons=n.find(".booking-form__details__submit");y.$passengerFormsSubmitButtons&&y.$passengerFormsSubmitButtons.hide();y.$details=n.find("form");y.$detailsDependentFields=$("[data-parent-sitecore-id]",y.$details)};y.registerUnbindedInputs=function(){y.$detailsDependentFields.each(function(n,t){var i=$(t).find("input, select")[0],r=$("[data-field-configuration-sitecore-id="+t.dataset.parentSitecoreId+"]")[0];y.unbindedInputs.push({id:t.dataset.fieldSitecoreId,model:i.dataset.ngModel,parentSelector:"."+r.className.replace(/ /g,".")})})};y.collectUnbindedInputs=function(){y.unbindedInputs.map(function(n){var t=$("[name^="+n.id.replace(/-/g,"")+"]"),i=t.length?t[0].value:undefined;n&&n.model&&y.updateScope(n.model,i)})};y.resetSurcharges=function(){y.$cardIcon.removeClass();v.payment.selectedCardBrand="";v.payment.selectedCardBrandKey="";v.payment.selectedCardType="";v.paymentPrice.surchargeDetails.selectedSurchargePct="";v.paymentPrice.priceBreakDown.totalAmountInclusive=v.paymentPrice.priceBreakDown.totalAmount;v.paymentPrice.priceBreakDown.minDepositInclusive=v.paymentPrice.priceBreakDown.minDeposit;v.paymentPrice.priceBreakDown.minDepositSurchargeAmount=0;v.paymentPrice.priceBreakDown.surchargeAmount=0};y.getSurchargesDetails=function(){var n,r=v.paymentPrice.surchargeDetails.surchargeDetails,f=v.payment.selectedMethod==="paypal"?v.payment.selectedMethod:v.payment.selectedCardType,t=v.payment.selectedMethod==="paypal"?"creditSurcharge":v.payment.selectedMethod+"Surcharge",i=u("filter")(r,{cardKey:f},!0);return i.length?(n=i[0],{surchargeAmount:h.calculateSurcharge(v.paymentPrice.priceBreakDown.totalAmount,n[t]),minDepositSurchargeAmount:h.calculateSurcharge(v.paymentPrice.priceBreakDown.minDeposit,n[t]),selectedSurchargePct:n[t],cardBrand:n.cardBrand,cardKey:n.cardKey}):!1};y.setSurcharges=function(){t(function(){var t=y.getSurchargesDetails();if(!t)return y.resetSurcharges();y.$cardIcon[0].className=v.payment.selectedCardType;v.payment.selectedCardBrand=t.cardBrand;v.payment.selectedCardBrandKey=t.cardKey;v.paymentPrice.priceBreakDown.surchargeAmount=t.surchargeAmount;v.paymentPrice.priceBreakDown.totalAmountInclusive=v.paymentPrice.priceBreakDown.totalAmount+t.surchargeAmount;v.paymentPrice.priceBreakDown.minDepositSurchargeAmount=t.minDepositSurchargeAmount;v.paymentPrice.priceBreakDown.minDepositInclusive=v.paymentPrice.priceBreakDown.minDeposit+t.minDepositSurchargeAmount;v.paymentPrice.surchargeDetails.selectedSurchargePct=t.selectedSurchargePct;n.$apply()});p()};y.validateHostedFields=function(n,t){var r,u,i;if(n.fields)for(r in n.fields){if(u=y.hostedFields[r],!u)return;(i=$(u.selector),i.length)&&(n.fields[r].isEmpty?i.setValidity(i.data("empty-message")):r==="number"&&!v.payment.selectedCardBrand&&n.cards.length===1&&(n.fields[r].isValid||n.fields[r].isPotentiallyValid)?(i.attr("dirty","true"),i.setValidity(i.data("error-message"))):n.fields[r].isValid||!n.fields[r].isPotentiallyValid||r!==n.emittedBy||t?n.fields[r].isValid?(i.attr("dirty","true"),i.setValidity("")):(i.attr("dirty","true"),i.setValidity(i.data("error-message"))):i.resetValidity())}};y.tokenizeHostedFields=function(n){y.hostedFieldsInstance&&y.hostedFieldsInstance.tokenize(function(t,i){var e,f,u,r;if(y.$paymentHostedFields.each(function(){$(this).setValidity("")}),e=v.payment.selectedCardType.length>0,t||!e){if(t)switch(t.code){case"HOSTED_FIELDS_FIELDS_EMPTY":y.$paymentHostedFields.attr("dirty","true");y.$paymentHostedFields.each(function(){$(this).setValidity($(this).data("empty-message"))});break;case"HOSTED_FIELDS_FIELDS_INVALID":if(t.details&&t.details.invalidFieldKeys&&t.details.invalidFieldKeys.length)for(f=0;f<t.details.invalidFieldKeys.length;f++)u=y.hostedFields[t.details.invalidFieldKeys[f]],u&&(r=$(u.selector),r.attr("dirty","true"),r.setValidity(r.data("error-message")));break;default:console.error("Unknown payment error",t)}e||(u=y.hostedFields.number,u&&(r=$(u.selector),r.attr("dirty","true"),r.setValidity(r.data("error-message"))));y.$paymentSubmitButton.removeClass(y.btnLoadingClass);y.isHostedFieldsValid=!1}else v.payment.nonce=i.nonce,y.isHostedFieldsValid=!0;typeof n=="function"&&n()})};y.setupPaymentGateway=function(){var t=v.payment.token;t&&(y.$cardNumberField.append(y.$cardIcon),braintree.client.create({authorization:t},function(t,i){if(t){console.error(t);return}braintree.hostedFields.create({client:i,styles:y.hostedFieldsStyles,fields:y.hostedFields},function(n,t){if(y.hostedFieldsInstance=t,n){console.error(n);return}y.hostedFieldsInstance.on("validityChange",function(n){y.validateHostedFields(n)});y.hostedFieldsInstance.on("empty",function(n){y.validateHostedFields(n)});y.hostedFieldsInstance.on("notEmpty",function(n){y.validateHostedFields(n)});y.hostedFieldsInstance.on("blur",function(n){y.validateHostedFields(n,!0)});y.hostedFieldsInstance.on("cardTypeChange",function(n){v.payment.selectedCardType=n.cards.length===1?n.cards[0].type:"";y.setSurcharges();y.validateHostedFields(n)})});braintree.paypalCheckout.create({client:i},function(t,i){if(t){console.error("Error creating PayPal Checkout:",t);return}var r=l.environment==="live"?"production":"sandbox";paypal.Button.render({env:r,commit:!0,style:{label:"pay",size:"responsive",shape:"rect",color:"gold"},payment:function(){var n=v.payment.isTotalAmountSelected?v.paymentPrice.priceBreakDown.totalAmountInclusive:v.paymentPrice.priceBreakDown.minDepositInclusive;return i.createPayment({flow:"checkout",amount:n,currency:v.paymentPrice.priceBreakDown.currencyCode})},onAuthorize:function(t){return v.payment.isProcessing=!0,n.$apply(),i.tokenizePayment(t).then(function(n){v.payment.nonce=n.nonce;v.payment.selectedCardBrand="Paypal";v.payment.selectedCardBrandKey="paypal";v.payment.cardName=n.details.firstName+" "+n.details.lastName;y.makePayment()})},onCancel:function(){v.payment.isProcessing=!1;n.$apply()},onError:function(){v.payment.isError=!0;v.payment.isProcessing=!1;n.$apply()}},"#paypal-button").then(function(){})})}))};y.makePayment=function(){v.payment.isQantasFullPointsBurnBooking?y.$qantas.find("input:focus").blur():y.$payment.find("input:focus").blur();y.$paymentHasError||y.$detailsHasError?y.$paymentSubmitButton.removeClass(y.btnLoadingClass):(y.doBookingModelMapping(),c.MakePayment(v.paymentPrice.cartMappingModel).then(function(n){var t,i;y.$paymentSubmitButton.removeClass(y.btnLoadingClass);v.payment.isProcessing=!1;n&&n.data&&n.data.length>0?(t=n.data[0],n.success?(it(),v.payment.success=!0,v.payment.bookingReference=t.bookingReference,v.payment.balanceDueDate=new Date(t.balanceDueDate).toDateString(),v.payment.ErrorType=t.errorType,v.payment.ErrorMessage=t.errorMessage,i=s.buildBookingModel(v.paymentPrice.priceBreakDown.totalAmount,v.trip.code,v.trip.name,t.bookingReference,t.amountPaid,v.payment.selectedMethod),s.pushTransaction(i),v.payment.isPaymentSuccess=!0):(v.payment.isError=!0,v.payment.ErrorType=t.errorType,v.payment.ErrorMessage=t.errorMessage,$.isEmptyObject(v.qantas.authObject)||(t.qantasPointsBurnQuoteRef.length>0?v.qantas.authObject.quoteNumber=t.qantasPointsBurnQuoteRef:y.resetQantasPointsBurn()))):v.payment.isError=!0;p()}))};y.assignHasOptional=function(n){var t=!1;typeof n.optional=="object"&&Object.keys(n.optional).forEach(function(i){n.optional[i]!==""&&(t=!0)});n.hasOptional=t};y.checkOptionalData=function(){Object.keys(v.forms).forEach(function(n){y.assignHasOptional(v.forms[n])})};y.initQantasPointsBurnWidget=function(){if(v.qantas.clientId.length>0&&v.qantas.clientName.length>0)try{qantas.Button.render({Client:{id:v.qantas.clientId,name:v.qantas.clientName},payment:function(n){return n.createQuote(v.payment.isTotalAmountSelected?v.paymentPrice.priceBreakDown.originalTotalAmount:v.paymentPrice.priceBreakDown.originalMinDeposit)},onAuthorize:function(n){if(n){if(n.errorCode){this.onError(n);return}v.qantas.authObject=n;var i=v.payment.isTotalAmountSelected?v.paymentPrice.priceBreakDown.originalTotalAmount:v.paymentPrice.priceBreakDown.originalMinDeposit,t=parseFloat((i-n.currencyAmount).toFixed(2));v.payment.isQantasFullPointsBurnBooking=i===n.currencyAmount&&t===0;v.payment.isTotalAmountSelected?v.paymentPrice.priceBreakDown.totalAmount=t:v.paymentPrice.priceBreakDown.minDeposit=t;y.setSurcharges();this.modalToggle(!1);y.showSnackbar();dataLayer.push({event:"qffBurnModalPointsApplied"})}else{this.onError("There was an error returning the auth object from Qantas");this.modalToggle(!1);return}},onError:function(n){console.log(n.toString());this.modalToggle(!1)},onClicked:function(){var n=!1;typeof orientation!="undefined"&&(n=!0);n||this.modalToggle(!0);dataLayer.push({event:"qffBurnModalOpened"})},onClosed:function(){this.modalToggle(!1);dataLayer.push({event:"qffBurnModalClosed"})},modalToggle:function(n){n?$("#booking-steps--qantas-overlay--modal").modal("show"):$("#booking-steps--qantas-overlay--modal").modal("hide")}},"#qantasBurnWidget")}catch(n){n instanceof ReferenceError||console.log("There was a problem loading the Qantas burn widget")}};y.resetQantasPointsBurn=function(){var n=angular.element(".trip-priceandbooking__snackbar");$(n).fadeOut(500);v.qantas.authObject=null;v.payment.isQantasFullPointsBurnBooking=!1;v.paymentPrice.priceBreakDown.totalAmount=v.paymentPrice.priceBreakDown.originalTotalAmount;v.paymentPrice.priceBreakDown.minDeposit=v.paymentPrice.priceBreakDown.originalMinDeposit;y.setSurcharges()};y.showSnackbar=function(){var n=angular.element(".trip-priceandbooking__snackbar");$(n).fadeIn(500);t(function(){$(n).fadeOut(500)},8e3)};y.init=function(){y.setupPassengerForms();y.btnLoadingClass="btn--loading";y.$detailsHasError=!1;y.unbindedInputs=[];y.$payment=angular.element(".booking-form__payment__card form");y.$paymentHasError=!1;y.$qantas=angular.element(".booking-form__qantas__card form");y.$paypalPayment=angular.element(".booking-form__paypal__card form");y.$paymentSubmitButton=angular.element("#booking-steps--payment-details .booking-form__payment__process");y.$paymentHostedFields=y.$payment.find(".braintree__hosted-field");y.$cardNumberField=angular.element("#payment-gateway--card-number");y.$cardIcon=$("<div/>",{id:"payment-gateway--card-icon"});y.$termsAndConditionsControl=angular.element(".booking-form__payment__tnc");y.$paypalTermsAndConditionsControl=angular.element(".booking-form__paypal__tnc");y.$qantasTermsAndConditionsControl=angular.element(".booking-form__qantas__tnc");y.$formIsInitialized;y.registerUnbindedInputs();y.$details.on("form.validation.fail",function(){y.scrollToFormError(y.$details);y.$detailsHasError=!0});y.$details.on("form.submit.success",function(){y.collectUnbindedInputs();y.checkOptionalData();y.$detailsHasError=!1});if(y.$formIsInitialized!==!0){y.$formIsInitialized=!0;y.setupPaymentGateway();y.initQantasPointsBurnWidget();y.$payment.on("form.submit.success",function(){y.isHostedFieldsValid&&(y.$paymentHasError=!1,y.makePayment())});y.$payment.on("form.validation.fail",function(){y.$paymentSubmitButton.removeClass(y.btnLoadingClass);p();y.$detailsHasError||y.scrollToFormError(y.$payment);y.$paymentHasError=!0});y.$qantas.on("form.submit.success",function(){y.$paymentHasError=!1;y.makePayment()});y.$qantas.on("form.validation.fail",function(){y.$paymentSubmitButton.removeClass(y.btnLoadingClass);p();y.$detailsHasError||y.scrollToFormError(y.$payment);y.$paymentHasError=!0});v.payment.hasTermsAndConditions||(y.$termsAndConditionsControl.remove(),y.$paypalTermsAndConditionsControl.remove(),y.$qantasTermsAndConditionsControl.remove());n.$on("broadcast.tripPriceAndBookingController.submitPaymentForm",function(){var t=v.payment.isQantasFullPointsBurnBooking?y.$qantas:y.$payment,n=t.find("input[type=submit], button[type=submit]");y.$paymentSubmitButton.addClass(y.btnLoadingClass);y.$passengerFormsSubmitButtons&&y.$passengerFormsSubmitButtons[0].click();v.payment.isQantasFullPointsBurnBooking?n.length&&n.click():y.tokenizeHostedFields(function(){n.length&&n.click()});p()});n.$watch("tpbc.payment.selectedMethod",function(){y.setSurcharges();n.tpbc.payment.isError=!1});n.$watch("tpbc.payment.selectedAmount",function(){v.payment.isTotalAmountSelected=v.payment.selectedAmount==="total"?!0:!1;y.resetQantasPointsBurn();y.setSurcharges()});$(angular.element(".form-control")).on("change",function(){p()})}};y.scrollToFormError=function(n){var t=n.find(".has-error").first().offset().top-50;ot.scrollTo(t)};var nt=function(){v.showLoadMoreDates=v.allDatesLoaded?!1:ut.find(".trip-priceandbooking__departures__dates.active").find(".force-hide").length?!0:!1},tt=function(){var n,t;b=angular.element("body").prop("clientWidth");n=g.length*b;g.css("width",b+"px");d.css("width",n+"px");t=b*v.bookingStepIndex*-1;d.css("transform","translateX("+t+"px)");p()},p=function(n){t(function(){var t=rt[v.bookingStepIndex],i=typeof n=="number"?n:0,r=$(t).height()+i;ft.css("height",r)})},ct=function(){v.showPrice=v.bookingStepIndex!==2||!v.isBookingEnabled},w=function(){var n=b*v.bookingStepIndex*-1;d.css("transform","translateX("+n+"px)");v.bookingStep.isBackButtonHidden=v.bookingStepIndex==0||v.bookingStepIndex==k;it();p();ct()},lt=function(){v.bookingStepIndex<k&&v.bookingStepIndex++;w()},at=function(){v.bookingStepIndex>0&&v.bookingStepIndex--;w()},vt=function(){v.bookingStepIndex>=2&&(v.bookingStepIndex=0,v.showProgressBar=!0,v.showBackButton=!1,w(0))},yt=function(){v.bookingStepIndex===1&&(v.bookingStepIndex--,w(1))},pt=function(){v.bookingStepIndex===2&&(v.bookingStepIndex--,w(2))},wt=function(){v.bookingStepIndex>2&&(v.bookingStepIndex=2,v.showProgressBar=!0,v.showBackButton=!1,w(3))},bt=function(n){v.isLoading=!0;f.GetRoomTypes(v.package.packageId,v.date,v.tripCode,v.promoCode,v.hasLastMinuteSpecials).then(function(t){v.roomTypes=t;t&&t.length>0?(v.hasRoomTypes=!0,v.selectRoomType(t[0])):v.hasRoomTypes=!1;typeof n=="function"&&n();v.isLoading=!1})},kt=function(n){var t,r,i;v.isLoading=!0;t={};t.categoryId=v.cabin.categoryId;t.departureDate=v.date;t.duration=v.trip.tripDuration;t.itineraryId=v.trip.itineraryShortId;t.hasLastMinuteSpecials=v.hasLastMinuteSpecials;t.packageId=v.package.packageId;t.packageName=v.package.packageTitle;t.packageDescription=v.package.packageDescription;t.useCruiseService=v.package.useCruiseService;t.packageType="Extended";t.tripId=v.trip.tripShortId;t.roomCost=v.roomCost;t.promoCode=v.promoCode;t.rooms=[];r={};r.roomTypeId=v.roomType.roomTypeId;r.numberOfPassengers=v.roomType.allowedAdultNumber;r.passengerType=v.cabin.passengerUpgrades[0].passengerType;r.totalPrice=0;r.promotionNumber=v.roomType.promotionNumber;r.promotionCode=v.roomType.promotionCode;r.categoryCode=v.roomType.categoryCode;r.fullFarePersonPrice=v.cabin.passengerUpgrades[0].fullFareCabinPrice;r.personPrice=v.cabin.passengerUpgrades[0].cabinPrice;r.upgradePrice=v.currentCabinUpgradePrice(v.cabin);t.rooms.push(r);t.cabinOriginalPrice=v.cabinOriginalPrice;t.cabins=[];i={};i.categoryId=v.cabin.categoryId;i.categoryDescription=v.cabin.categoryDescription;i.categoryName=v.cabin.categoryName;i.categoryType=v.cabin.categoryType;i.isPromotionAvailable=v.cabin.isPromotionAvailable;i.doesContainChild=v.cabin.doesContainChild;i.deckPlan=v.cabin.deckPlan;i.maximumAvailable=v.cabin.maximumAvailable;i.maximumAvailableCollection=v.cabin.maximumAvailableCollection;i.isCabin=v.cabin.isCabin;i.passengerUpgrades=v.cabin.passengerUpgrades;t.cabins.push(i);f.GetMinimumDeposit(t).then(function(t){t&&t.length>0&&t[0].minimumDepositData&&t[0].bookingData?(v.totalPrice=t[0].minimumDepositData.totalPrice,v.minimumDeposit=t[0].minimumDepositData.minimumDeposit,v.paymentDueDate=t[0].minimumDepositData.paymentDueDate,v.hasDepositOption=v.minimumDeposit>0&&v.minimumDeposit!==v.price*v.roomType.allowedAdultNumber,v.bookingInfo=t[0].bookingData,v.payment.token=v.bookingInfo.paymentSection.paymentGatewayToken,v.payment.hasTermsAndConditions=v.bookingInfo.paymentSection.hasValidTermsAndConditions,v.extendWith(v.bookingInfo.stepsJson.priceJsonString),y.init()):(console.log("Minimum deposit or Booking Data are null"),lt());typeof n=="function"&&n();v.isLoading=!1})},st=function(n){o.GetLocation().then(function(t){t&&(v.userLocation.country=t.data[0]);typeof n=="function"&&n()})},it=function(){angular.element("html, body").stop().animate({scrollTop:ut.offset().top-80},0)},ht=function(){var n,t,i;v.previousPrice=v.price;v.cabin&&v.cabin.isCabin?(t=v.cabin.passengerUpgrades&&v.cabin.passengerUpgrades.length?v.cabin.passengerUpgrades[0].cabinPrice:0,i=v.cabin.passengerUpgrades&&v.cabin.passengerUpgrades.length?v.cabin.passengerUpgrades[0].upgradePrice:0,n=t+i):v.roomType&&(n=v.roomType.passengers&&v.roomType.passengers.length?v.roomType.passengers[0].promoPricePerPerson>0?v.roomType.passengers[0].promoPricePerPerson:v.roomType.passengers[0].tripPricePerPerson:0);v.price=n},dt=function(){var n=angular.element(".trip-priceandbooking__departures__dates.active");if(n.length){var i=n.find(".quarterly-view-carousel"),r=n.find(".quarterly-view-carousel-offset"),u=n.find(".season-view-carousel"),f=n.find(".season-view-carousel-offset");t(function(){i.owlCarousel({baseClass:"quarterly-view-carousel",loop:!1,nav:!0,navText:["",""],margin:30,stagePadding:5,freeDrag:!1,startPosition:v.package.startMonthIndex,responsive:{0:{items:1,slideBy:1},800:{items:3,slideBy:1}}});tt();nt();st();r.owlCarousel({baseClass:"quarterly-view-carousel-offset",loop:!1,nav:!0,navText:["",""],margin:30,stagePadding:5,freeDrag:!1,startPosition:v.package.startMonthIndex+1,responsive:{0:{items:1,slideBy:1},800:{items:3,slideBy:1}}});tt();nt();st();u.owlCarousel({baseClass:"season-view-carousel",loop:!1,nav:!0,navText:["",""],margin:30,stagePadding:5,freeDrag:!1,items:1});f.owlCarousel({baseClass:"season-view-carousel-offset",loop:!1,nav:!0,navText:["",""],margin:30,stagePadding:5,freeDrag:!1,items:1,startPosition:1})})}},gt=function(){var n=r.location.origin+r.location.pathname+r.location.search;e.setTripUrl(n)},ni=function(n){var t;t=$(this).height("").height();t=n.type==="show"?t:-1*t;p(t)};$(window).on("resize",function(){tt()});n.$on("broadcast.tripPriceAndBookingController.selectPackage",function(){nt();dt()});n.$on("broadcast.tripPriceAndBookingController.selectDate",function(){v.roomType={};gt();bt(function(){v.bookingStepIndex=1;w()})});n.$on("broadcast.tripPriceAndBookingController.selectRoomType",function(){var i,t,n,r;if(v.cabin={},v.hideCabins=!1,ht(),!v.roomType.cabinCategories||!v.roomType.cabinCategories.length){v.hideCabins=!0;v.roomCost=0;p();return}if(v.roomCost=v.roomType.passengers[0].tripPricePerPerson-v.roomTypes[0].passengers[0].tripPricePerPerson,v.roomType.cabinCategories.length==1&&v.roomType.cabinCategories[0].passengerUpgrades&&v.roomType.cabinCategories[0].passengerUpgrades.length&&v.roomType.cabinCategories[0].passengerUpgrades[0].upgradePrice==0){v.selectCabin(v.roomType.cabinCategories[0]);v.roomType.cabinCategories[0].categoryId||(v.hideCabins=!0);p();return}if(v.roomType.cabinCategories.sort(function(n,t){return n&&n.passengerUpgrades.length&&t&&t.passengerUpgrades.length?n.passengerUpgrades[0].upgradePrice-t.passengerUpgrades[0].upgradePrice:0}),v.roomType.defaultCategoryId){for(i=v.roomType.defaultCategoryId,t=!1,n=0;n<v.roomType.cabinCategories.length;n++)if(v.roomType.cabinCategories[n].categoryId==i){v.selectCabin(v.roomType.cabinCategories[n]);t=!0;break}t||(r=v.sortCabinCategoriesByUpgradePrice(v.roomType),v.selectCabin(r[0]))}p()});n.$on("broadcast.tripPriceAndBookingController.selectCabin",function(){ht()});n.$on("broadcast.tripPriceAndBookingController.getMinimumDeposit",function(){v.minimumDeposit=0;v.paymentDueDate=0;v.showMinimumDepositLoadingMessage=!0;kt(function(){v.bookingStepIndex=2;w();v.showMinimumDepositLoadingMessage=!1})});n.$on("broadcast.tripPriceAndBookingController.goPreviousBookingStep",function(){at()});n.$on("broadcast.tripPriceAndBookingController.goToBookingStep2",function(){pt()});n.$on("broadcast.tripPriceAndBookingController.goToBookingStep3",function(){wt()});n.$on("broadcast.tripPriceAndBookingController.goToBookingStep1",function(){yt()});n.$on("broadcast.tripPriceAndBookingController.goToBookingStep0",function(){vt()});n.$on("broadcast.tripPriceAndBookingController.invokeWebChat",function(){$(".cx-webchat-chat-button").click()});n.$on("broadcast.tripPriceAndBookingController.goToBookingStep",function(){w()});n.$on("broadcast.tripPriceAndBookingController.loadMoreDates",function(){p()});n.$on("broadcast.tripPriceAndBookingController.submitBookingForm",function(){var n=angular.element(".trip-priceandbooking__book__form form"),t;if(n.length){n.on("form.submit.initialised",function(){v.form.isSubmitButtonDisabled=!0});n.on("form.submit.success",function(){v.bookingStepIndex=k;var n=s.buildBookingModel(v.totalPrice,v.trip.tripCode,v.trip.tripName);s.pushEnquiry(n);w();v.form.isSubmitButtonDisabled=!1;v.showProgressBar=v.showBackButton=!1});n.on("form.submit.error",function(){v.form.isSubmitButtonDisabled=!1});n.on("form.submit.invalid",function(){v.form.isSubmitButtonDisabled=!1;it()});if(t=n.find("input[type=submit], button[type=submit]"),t.length){t.click();n.on("submit",p)}}});n.$on("broadcast.bookingFunnelFormController.resetPaymentMethod",function(){y.resetQantasPointsBurn()});t(function(){g=d.find(".trip-priceandbooking__booking-step");rt=angular.element(".trip-priceandbooking__booking-step");k=g.length-1;et=ft.find(".collapse");et.on("show.bs.collapse hide.bs.collapse",ni)})}return{restrict:"A",scope:!0,controller:n,controllerAs:"tpbc",bindToController:!0,link:a}}function i(){function n(n,t){function i(){var n=angular.element(".trip-priceandbooking__snackbar");$(n).fadeOut(500)}t.bind("click",i)}return{restrict:"A",link:n}}function r(n,t,i){return{require:"ngModel",link:function(t,r,u,f){f.$asyncValidators.validateffn=function(t){var e=angular.element(window.document.activeElement),r=e[0],o=r.tagName==="INPUT",u;if(t!==undefined&&f.$isEmpty(t)||!o)return o&&(r.setCustomValidity(""),e.resetValidity()),n.resolve();u=n.defer();$(r.parentElement).hasClass("field--loading")||$(r.parentElement).addClass("field--loading");var s=Array.from(r.form.elements),h=s.map(function(n){return n.name}).indexOf(r.name),c=s.slice(0,h).reverse(),l=c.filter(function(n){return new RegExp("lastname*").test(n.name)})[0].value;return i.ValidateFrequentFlyer(l,t).then(function(n){var t,i;$(r.parentElement).removeClass("field--loading");r.value.length>0?n&&n.length>0?(t=n[0],t.isValid?(r.dataset.errorMessage="",r.setCustomValidity(""),e.setValidity(""),u.resolve()):(r.dataset.errorMessage=t.errorMsg,r.setCustomValidity(t.errorMsg),e.setValidity(t.errorMsg),u.reject())):(i="There was an error validating your frequent flyer number. Please try again later.",r.dataset.errorMessage=i,r.setCustomValidity(i),e.setValidity(i),u.reject()):u.resolve()},function(){u.reject()}),u.promise}}}}function n(n,t){function r(n){var t=JSON.parse(n);t.priceBreakDown.hasDeposit=t.priceBreakDown.minDeposit>0&&t.priceBreakDown.minDeposit!==t.priceBreakDown.totalAmount;i.payment.selectedAmount=t.priceBreakDown.hasDeposit?"deposit":"total";i.payment.isTotalAmountSelected=i.payment.selectedAmount==="total"?!0:!1;i.paymentPrice.priceBreakDown=t.priceBreakDown;i.paymentPrice.priceBreakDown.originalTotalAmount=i.paymentPrice.priceBreakDown.totalAmount;i.paymentPrice.priceBreakDown.totalAmountInclusive=i.paymentPrice.priceBreakDown.totalAmount;i.paymentPrice.priceBreakDown.surchargeAmount=0;i.paymentPrice.priceBreakDown.originalMinDeposit=i.paymentPrice.priceBreakDown.minDeposit;i.paymentPrice.priceBreakDown.minDepositInclusive=i.paymentPrice.priceBreakDown.minDeposit;i.paymentPrice.priceBreakDown.minDepositSurchargeAmount=0;i.paymentPrice.surchargeDetails=t.surchargeDetails;i.paymentPrice.cartMappingModel=t.cartMappingModel;i.paymentPrice.surchargeDetails.selectedSurchargePct=""}function u(n){n.date=new Date(n.dateStr);n.returnDate=new Date(n.returnDateStr);i=angular.extend(i,n)}function f(n,t,r,u,f){i.trip.tripCode=n;i.trip.tripName=t;i.trip.tripShortId=r;i.trip.tripDuration=u;i.trip.itineraryShortId=f}function e(){i.allDatesLoaded=!0;i.showLoadMoreDates=!1;n.$broadcast("broadcast.tripPriceAndBookingController.loadMoreDates")}function o(r,u,f,e,o){i.package.packageId=r;i.package.packageTitle=u;i.package.packageDescription=f;i.package.startMonthIndex=parseInt(e,10)||0;i.package.useCruiseService=o;t(function(){n.$broadcast("broadcast.tripPriceAndBookingController.selectPackage")},700)}function s(t,r,u,f,e){i.dateStr=t;i.returnDateStr=r;i.date=new Date(t);i.returnDate=new Date(r);i.tripCode=u;i.promoCode=f;i.hasLastMinuteSpecials=e;n.$broadcast("broadcast.tripPriceAndBookingController.selectDate")}function h(t){i.roomType=t;n.$broadcast("broadcast.tripPriceAndBookingController.selectRoomType")}function c(t){i.cabin=t;t.categoryId>0&&n.$broadcast("broadcast.tripPriceAndBookingController.selectCabin")}function l(){i.showBackButton=!1;i.showProgressBar=!0;n.$broadcast("broadcast.tripPriceAndBookingController.goPreviousBookingStep")}function a(){n.$broadcast("broadcast.tripPriceAndBookingController.goToBookingStep0")}function v(){n.$broadcast("broadcast.tripPriceAndBookingController.goToBookingStep1")}function y(){n.$broadcast("broadcast.tripPriceAndBookingController.goToBookingStep2")}function p(){n.$broadcast("broadcast.tripPriceAndBookingController.goToBookingStep3")}function w(){n.$broadcast("broadcast.tripPriceAndBookingController.invokeWebChat")}function b(t){t===2&&i.isBookingEnabled?n.$broadcast("broadcast.tripPriceAndBookingController.getMinimumDeposit"):(i.bookingStepIndex=t,n.$broadcast("broadcast.tripPriceAndBookingController.goToBookingStep"),i.showBackButton=!0,i.showProgressBar=!1)}function k(){n.$broadcast("broadcast.tripPriceAndBookingController.submitBookingForm")}function d(n){i.isBookingEnabled||n.splice(2,1);i.bookingStepTitles=n}function g(n){i.bookingMainTitles=n}function nt(n,t,r){i.isBookingEnabled=n;i.qantas.clientId=t;i.qantas.clientName=r}function tt(n){i.currentCabinImage=n}function it(){i.bookingStepIndex=0;i.dateStr="";i.date={};i.promoCode="";i.hasLastMinuteSpecials=!1;i.roomType={};i.cabin={};i.price=0;i.previousPrice=0;n.$broadcast("broadcast.tripPriceAndBookingController.goToBookingStep")}function rt(n){return n.passengers[0].tripPricePerPerson}function ut(n){var t=i.getRoomTypeBasePrice(i.roomType),r=n.passengerUpgrades[0].fullFareCabinPrice,u=n.passengerUpgrades[0].upgradePrice;return r-t+u}function ft(n){var t=n.passengerUpgrades[0].cabinPrice,r=n.passengerUpgrades[0].upgradePrice;return t-i.price+r}function et(){if(!i.roomType||!i.roomType.passengers||!i.roomType.passengers.length||!i.cabin||!i.cabin.passengerUpgrades||!i.cabin.passengerUpgrades.length)return 0;var n=i.roomType.passengers[0].tripPricePerPerson,t=i.cabin.passengerUpgrades[0].upgradePrice;return n+t}function ot(n){var t=i.sortCabinCategoriesB.upgradePrice(n);return t[0].passengerUpgrades[0].upgradePrice}function st(n){return n.cabinCategories.sort(function(n,t){var i=n.passengerUpgrades[0].upgradePrice,r=t.passengerUpgrades[0].upgradePrice;return i-r})}function ht(){n.$broadcast("broadcast.tripPriceAndBookingController.submitPaymentForm")}function ct(){n.$broadcast("broadcast.bookingFunnelFormController.resetPaymentMethod")}var i=this;i.allDatesLoaded=!1;i.bookingStepIndex=0;i.userLocation={country:""};i.trip={tripCode:"",tripName:"",tripShortId:"",tripDuration:0,itineraryShortId:""};i.forms={passengerOne:{}};i.package={packageId:"",packageTitle:"",packageDescription:"",startMonthIndex:0,useCruiseService:!1};i.dateStr="";i.date={};i.returnDate={};i.returnDateStr={};i.promoCode="";i.hasLastMinuteSpecials=!1;i.roomType={};i.roomCost=0;i.cabin={};i.cabinOriginalPrice=0;i.currentCabinImage="";i.hideCabins=!1;i.price=0;i.totalPrice=0;i.previousPrice=0;i.minimumDeposit=0;i.hasDepositOption=!1;i.paymentDueDate={};i.bookingInfo={};i.showMinimumDepositLoadingMessage=!1;i.isLoading=!1;i.form={isSubscribeNewsletter:!1,isSubmitButtonDisabled:!1};i.bookingStep={isBackButtonHidden:!0};i.roomTypes=[];i.bookingStepTitles=[];i.bookingMainTitles=[];i.hasRoomTypes=!1;i.setBookingStepClass=function(){var n="trip-priceandbooking";return i.bookingInfo&&!i.payment.isPaymentSuccess&&i.showProgressBar&&(n="trip-priceandbooking newtrip-priceandbooking"),i.bookingStepIndex===3&&(n="trip-priceandbooking newtrip-priceandbooking"),n};i.setProgressBarClass=function(n){var t="";return n===0&&(i.showStep1()&&(t="active"),i.showStep2()&&(t="complete"),i.showStep3()&&(t="complete")),n===1&&(i.showStep1()&&(t="incomplete"),i.showStep2()&&(t="active"),i.showStep3()&&(t="complete")),n===2&&(i.showStep1()&&(t="incomplete"),i.showStep2()&&(t="incomplete"),i.showStep3()&&(t="active")),t};i.showStep1=function(){return!0};i.showStep2=function(){return i.bookingStepIndex===0?!1:!0};i.showStep3=function(){return i.bookingStepIndex===0||i.bookingStepIndex===1?!1:!0};i.showPrice=!0;i.isBookingEnabled=!0;i.setTrip=f;i.loadMoreDates=e;i.selectPackage=o;i.selectDate=s;i.selectRoomType=h;i.selectCabin=c;i.setCabinImage=tt;i.goPreviousBookingStep=l;i.goToBookingStep0=a;i.goToBookingStep1=v;i.goToBookingStep2=y;i.goToBookingStep3=p;i.goToBookingStep=b;i.invokeWebChat=w;i.setBookingStepTitles=d;i.setBookingMainTitles=g;i.submitBookingForm=k;i.resetBooking=it;i.getRoomTypeBasePrice=rt;i.currentCabinUpgradePrice=ut;i.cabinUpgradePrice=ft;i.setCabinOriginalPrice=et;i.lowestUpgradePrice=ot;i.sortCabinCategoriesByUpgradePrice=st;i.setFinalState=u;i.initBookingSettings=nt;i.extendWith=r;i.resetPaymentMethod=ct;i.showBackButton=!1;i.showProgressBar=!0;i.paymentPrice={priceBreakDown:{},surchargeDetails:{},cartMappingModel:{}};i.payment={success:!1,cardName:"",token:"",nonce:"",selectedMethod:"credit",hasTermsAndConditions:!1,termsAndConditions:!1,selectedAmount:"total",selectedCardType:"",selectedCardBrand:"",selectedCardBrandKey:"",selectedSurchargePct:"",isError:!1,isProcessing:!1,bookingReference:"",balanceDueDate:"",paypalTermsAccepted:!1,isQantasFullPointsBurnBooking:!1,isTotalAmountSelected:!0,isPaymentSuccess:!1,submit:ht};i.qantas={clientId:"",clientName:"",authObject:null}}angular.module("Phoenix.Shared.directives").directive("tripPriceAndBooking",["$timeout","$cookies","$window","$filter","tripPriceAndBookingService","tripService","locationService","dataLayerService","priceService","bookingService","configurationConstant",t]).directive("closeSnackbar",[i]).directive("frequentFlyerValidation",["$q","$timeout","bookingService",r]);n.$inject=["$scope","$timeout"]}(),function(){"use strict";function n(n){function t(t,i,r,u){var f={};f.element=$(i);f.init=function(){var n=f.element.children().length>1;if(!n){f.element.addClass("owl-carousel--single-slide");return}f.element.owlCarousel({items:1,loop:!0,nav:!0,navText:!1,dots:!1,lazyLoad:!0,lazyContent:!0,mouseDrag:n,touchDrag:n});f.leftArrow=f.element.find(".owl-prev");f.rightArrow=f.element.find(".owl-next");f.leftArrow.on("click",function(){u.title.showPrevious();t.$apply()});f.rightArrow.on("click",function(){u.title.showNext();t.$apply()});f.element.on("dragged.owl.carousel",function(n){n.relatedTarget._drag.direction==="left"?u.title.showNext():u.title.showPrevious();t.$apply()})};n(function(){f.init()})}return{restrict:"A",scope:!0,require:"^pageHero",link:t}}function t(){return{restrict:"A",scope:!0,controller:"pageHeroController",controllerAs:"phc",bindToController:!0}}function i(n){function t(t,i,r,u){var f={};f.isSupported=!0;f.PLAY_COUNT=3;f.player={};f.$element=$(i);f.addApiTag=function(){var t=document.createElement("script"),n;t.src="https://www.youtube.com/player_api";n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};f.setupPlayer=function(){function r(){f.player.loadVideoById(u.videoId);f.player.mute();f.resize();t.$apply()}function e(n){n.data===YT.PlayerState.ENDED?(i++,f.player.seekTo(0),i===f.PLAY_COUNT&&(f.player.pauseVideo(),u.isVideoPlaying=!1,t.$apply())):n.data===YT.PlayerState.PLAYING&&(u.isVideoLoaded=!0,u.isVideoPlaying=!0,t.$apply())}function o(){u.displayVideo=!1;u.isVideoLoaded=!1;t.$apply()}var i=0,s={autoplay:1,autohide:1,modestbranding:0,rel:0,showinfo:0,controls:0,disablekb:1,enablejsapi:0,iv_load_policy:3,loop:1,playsinline:1};n.onYouTubePlayerAPIReady=function(){f.player=new YT.Player("video-hero-player",{events:{onReady:r,onStateChange:e,onError:o},playerVars:s})}};f.init=function(){if((f.checkBrowserSupport(),f.isSupported)&&(f.setDisplayFlag(),u.displayVideo)){f.addApiTag();f.setupPlayer();f.setupClickOutside();$(window).on("resize",function(){u.isVideoLoaded&&f.resize()})}};f.setupClickOutside=function(){var s=$(window).width(),h=$(window).height(),n=f.$element.offset(),t=n.left,i=n.top,e=t+f.$element.width(),o=i+f.$element.height(),r=function(n){if(u.isVideoPlaying){var s=n.pageX,h=n.pageY;(s===undefined||h===undefined)&&n.originalEvent.touches.length&&(s=n.originalEvent.touches[0].pageX,h=n.originalEvent.touches[0].pageY);(s<t||h<i||s>e||h>o)&&(f.player.seekTo(0),f.player.pauseVideo(),u.isVideoPlaying=!1,$(document).off("click touchstart",r))}};$(document).on("click touchstart",r)};f.resize=function(){f.$playerEl=$("#video-hero-player");var n=$(window).width()+200,t=$(window).height()+200;n/t>16/9?(f.player.setSize(n,n/16*9),f.$playerEl.css({left:"0"})):(f.player.setSize(t/9*16,t),f.$playerEl.css({left:-(f.$playerEl.outerWidth()-n)/2}))};f.checkBrowserSupport=function(){var n=document.createElement("video");n.canPlayType&&n.canPlayType("video/mp4").replace(/no/,"")||(u.displayVideo=!1,f.isSupported=!1)};f.setDisplayFlag=function(){function n(n){u.displayVideo=n.matches?!1:!0}var t=window.matchMedia("(max-width: 767px)");n(t)};f.init()}return{restrict:"A",scope:!0,controller:"videoPageHeroController",controllerAs:"vphc",bindToController:!0,link:t}}angular.module("Phoenix.Shared.directives").directive("pageHeroCarousel",["$timeout",n]).directive("pageHero",t).directive("videoHero",["$window","$timeout",i])}();angular.module("Phoenix.Shared.services").factory("bookingService",["$http","$q","utilityService",function(n,t,i){var u="/api/booking/makepayment",f="/api/booking/validatefrequentflyer",r;return{MakePayment:function(f){r&&r.resolve();var e=u,o=i.GetQueryStringParameters("ip");return o&&(e+="?ip="+o),r=t.defer(),n({method:"POST",cache:!1,url:e,timeout:r.promise,data:{primaryPassenger:f.primaryPassenger,additionalPassenger:f.additionalPassenger,paymentDetail:f.paymentDetail}}).then(function(n){if(n.status>=200&&n.status<300)return n.data})},ValidateFrequentFlyer:function(u,e){r&&r.resolve();var o=f,s=i.GetQueryStringParameters("ip");return s&&(o+="?ip="+s),r=t.defer(),n({method:"POST",cache:!1,url:o,timeout:r.promise,data:{surname:u,frequentFlyerNumber:e}}).then(function(n){if(n.status>=200&&n.status<300)return n.data.data})}}}]);angular.module("Phoenix.Shared.services").factory("dataLayerService",[function(){return{buildBookingModel:function(n,t,i,r,u,f,e){return(e===null||e==="undefined")&&(e=1),{tripCode:t,tripName:i,tripPrice:n,transactionId:r,transactionTotal:u,transactionPaymentType:f,quantity:e}},pushTransaction:function(n){dataLayer.push({transactionId:n.transactionId,transactionTotal:n.transactionTotal,transactionProducts:[{sku:n.tripCode,name:n.tripName,price:n.tripPrice,quantity:n.quantity}],event:"transactionComplete",transactionPaymentType:n.transactionPaymentType,transactionProductsSku:n.tripCode,transactionProductsName:n.tripName,transactionProductsPrice:n.tripPrice})},pushEnquiry:function(n){dataLayer.push({Bookingsku:n.tripCode,Bookingname:n.tripName,Bookingprice:n.tripPrice,Bookingquantity:n.quantity,event:"enquiryComplete"})}}}]);angular.module("Phoenix.Shared.services").factory("finalizeBookingService",["$http","$timeout","$q","utilityService",function(n,t,i,r){var f="/api/booking/finalizebooking/",u;return{FinalizeBooking:function(t){u&&u.resolve();var e=f,o=r.GetQueryStringParameters("ip");return o&&(e+="&ip="+o),u=i.defer(),n({method:"POST",cache:!0,url:e,timeout:u.promise,data:{noOfPassengers:t.noOfPassengers,selectedTourPrice:t.selectedTourPrice,selectedMethod:t.selectedMethod,selectedAmount:t.selectedAmount,selectedCardBrand:t.selectedCardBrandKey,selectedSurchargePct:t.selectedSurchargePct,passengers:t.passengers,surchargeAmount:t.surchargeAmount,nonce:t.nonce,totalAmountInclusive:t.totalAmountInclusive,tripCode:t.tripCode,tourStartDate:t.tourStartDate,tourEndDate:t.tourEndDate,currencyCode:t.currencyCode}}).then(function(n){if(n.status>=200&&n.status<300)return n.data.data})}}}]);angular.module("Phoenix.Shared.services").factory("locationService",["$http","$timeout",function(n){var t="/api/trip/getUserLocation";return{GetLocation:function(){return n({method:"GET",cache:!0,url:t}).then(function(n){return n.status>=200&&n.status<300?n.data:"Australia"},function(){return"Australia"})}}}]);angular.module("Phoenix.Shared.services").factory("priceService",[function(){return{calculateSurcharge:function(n,t){var i,r;return isNaN(n)||n<=0?0:(i=parseFloat(t),r=isNaN(i)?0:i/100,!r)?0:n*r},convertPriceToNumber:function(n){return Number(n.replace(/[^0-9\.-]+/g,""))}}}]);angular.module("Phoenix.Shared.services").factory("searchService",["$http","$q","utilityService",function(n,t,i){var u="/api/search",f="/api/search/autocomplete",e=function(n){return n?n.join("|"):""},r;return{GetResults:function(f,o,s,h){r&&r.resolve();var c="?keywords="+(f||"")+"&filters="+e(o)+"&pageSize="+s+"&pageIndex="+h,l=i.GetQueryStringParameters("ip");return l&&(c+="&ip="+l),r=t.defer(),n({method:"GET",cache:!0,url:u+c,timeout:r.promise}).then(function(n){return n.status>=200&&n.status<300?n.data:null},function(){return null})},GetAutocomplete:function(){var t="",r=i.GetQueryStringParameters("ip");return r&&(t="?ip="+r),n({method:"GET",cache:!0,url:f+t}).then(function(n){return n.status>=200&&n.status<300?n.data:null},function(){return null})}}}]);angular.module("Phoenix.Shared.services").factory("tripFinderService",["$http","$q","utilityService",function(n,t,i){function f(n){return n=n||[],n.join("_")}var e="/api/trip/search",r=function(n){return n?n.join(","):""},u;return{GetTrips:function(o,s,h,c,l,a,v,y,p,w){u&&u.resolve();var b="?destination="+r(o)+"&travelstyle="+r(s)+"&experience="+r(a)+"&duration="+f(h)+"&year="+r(l)+"&keywords="+(c||"")+"&pageSize="+v+"&pageIndex="+y+"&sort="+p+"&sortOrder="+w,k=i.GetQueryStringParameters("ip");return k&&(b+="&ip="+k),u=t.defer(),n({method:"GET",cache:!0,url:e+b,timeout:u.promise}).then(function(n){if(n.status>=200&&n.status<300)return n.data})}}}]);angular.module("Phoenix.Shared.services").factory("tripPackageSelectionService",["$http","$q","utilityService",function(n,t,i){var u="/api/trip/departures/",f="api/trip/packageinformation/",r;return{GetDeparture:function(f,e){r&&r.resolve();var h=i.GetFormattedDate(new Date(e)),o=u+f+"/"+h,s=i.GetQueryStringParameters("ip");return s&&(o+="?ip="+s),r=t.defer(),n({method:"GET",cache:!0,url:o,timeout:r.promise}).then(function(n){if(n.status>=200&&n.status<300)return n.data.data})},GetPackageInformation:function(i){r&&r.resolve();var u=f+i;return r=t.defer(),n({method:"GET",cache:!1,url:u,timeout:r.promise}).then(function(n){return n.status>=200&&n.status<300?n.data.data[0]:!1})}}}]);angular.module("Phoenix.Shared.services").factory("tripPriceAndBookingService",["$http","$timeout","$q","utilityService",function(n,t,i,r){function f(n){return n.getFullYear()+"/"+("0"+(n.getMonth()+1)).slice(-2)+"/"+("0"+n.getDate()).slice(-2)}var e="/api/trip/roomtypes/",o="/api/trip/minimumdeposit/",u,s=function(n,t){var i=n.roomTypeName.toLowerCase(),r=t.roomTypeName.toLowerCase();return i=="double"?-1:i=="single"?1:i=="twin"&&r=="single"?0:1};return{GetRoomTypes:function(t,f,o,h,c){var a;u&&u.resolve();var y=r.GetFormattedDate(f),l=e+o+"/"+t+"/"+y,v="?";return h&&(l=l+"?promoCode="+encodeURIComponent(h),v="&"),l=l+v+"lastMinuteSpecial="+c,a=r.GetQueryStringParameters("ip"),a&&(l+="&ip="+a),u=i.defer(),n({method:"GET",cache:!0,url:l,timeout:u.promise}).then(function(n){if(n.status>=200&&n.status<300)return n.data.data&&n.data.data.sort(s),n.data.data})},GetMinimumDeposit:function(t){u&&u.resolve();var e=o,s=r.GetQueryStringParameters("ip");return s&&(e+="?ip="+s),u=i.defer(),n({method:"POST",cache:!0,url:e,timeout:u.promise,data:{categoryId:t.categoryId,departureDate:f(t.departureDate),duration:t.duration,itineraryId:t.itineraryId,lastMinuteSpecial:t.LastMinuteSpecial,packageId:t.packageId,packageName:t.packageName,packageDescription:t.packageDescription,packageType:t.packageType,pickupLocation:"",promotionCode:t.promoCode,rooms:t.rooms,tripId:t.tripId,cabinOriginalPrice:t.cabinOriginalPrice,cabins:t.cabins,roomCost:t.roomCost,useCruiseService:t.useCruiseService}}).then(function(n){if(n.status>=200&&n.status<300)return n.data.data})}}}]);angular.module("Phoenix.Shared.services").factory("tripService",["$http","$timeout","$cookies","utilityService","$q","$location",function(n,t,i,r,u,f){var s="/services/tripcharacteristicsservice.svc/ajax/",h="/api/trip/tags",o="APTBookingUrl",c="/api/trip/downloadpdf",e;return{GetTripCharacteristics:function(t,i){return n({method:"POST",cache:!0,url:s+"GetTripCharacteristics",data:{DestinationTopicTags:t,TravelStyleTopicTags:i,DepartureMonths:[],Durations:[],IsRefine:!0}}).then(function(n){if(n.status>=200&&n.status<300)return n.data})},GetTripTags:function(t,i,u){var f="?destination="+t+"&travelstyle="+i+"&duration="+u,e=r.GetQueryStringParameters("ip");return e&&(f+="&ip="+e),n({method:"GET",cache:!0,url:h+f}).then(function(n){if(n.status>=200&&n.status<300)return n.data.Data?n.data.Data:[]})},setTripUrl:function(n){return i.put(o,n)},getTripUrl:function(){return(i.get(o)||document.referrer)+"#trip-priceandbooking"},downloadTripItinerary:function(t){e&&e.resolve();var i=c,o=r.GetQueryStringParameters("ip");return o&&(i+="?ip="+o),e=u.defer(),n({method:"GET",cache:!1,url:i,timeout:e.promise,responseType:"arraybuffer",data:{requestorUrl:f.absUrl()}}).then(function(n){if(n.status>=200&&n.status<300){if(n.data){var r=new Blob([n.data],{type:"application/pdf"}),u=URL.createObjectURL(r),f=t+".pdf",i=document.createElement("a");i.style="display: none";i.href=u;i.download=f;document.body.appendChild(i);navigator.userAgent.indexOf("MSIE")!==-1||navigator.userAgent.indexOf("Edge")!==-1||navigator.appVersion.indexOf("Trident/")>0?navigator.msSaveBlob(r,f):i.click();window.URL.revokeObjectURL(u)}return!0}},function(){return!1})}}}]);angular.module("Phoenix.Shared.services").factory("utilityService",["$timeout",function(n){return{GetFormattedDate:function(n){var t=n.getDate(),i=n.getMonth(),r=n.getFullYear();return t+"-"+["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][i]+"-"+r},GetQueryStringParameters:function(n,t){t||(t=window.location.href);n=n.replace(/[\[\]]/g,"\\$&");var r=new RegExp("[?&]"+n+"(=([^&#]*)|&|#|$)"),i=r.exec(t);return i?i[2]?decodeURIComponent(i[2].replace(/\+/g," ")):"":null},GetArrayFromCommaString:function(n,t){return n?(t||(t=","),n.split(t)):[]},NewGuid:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)})},ScrollTo:function(t,i,r,u){if(t.length){i=i||500;r=r||1;u=u||!1;var f;f=$(".trip-tabs").length?$(".trip-tabs").innerHeight():0;n(function(){$("html, body").stop().animate({scrollTop:t.offset().top-f},i,function(){return typeof u=="function"?u():!0})},r)}}}}]);angular.module("Phoenix.Shared.services").factory("tripPriceAndAvailabilityService",["$http","$timeout","$q","utilityService",function(n,t,i,r){var f="/api/trip/selectedbooking/",u;return{SetBooking:function(t){u&&u.resolve();var e=f,o=r.GetQueryStringParameters("ip");return o&&(e+="&ip="+o),u=i.defer(),n({method:"POST",cache:!0,url:e,timeout:u.promise,data:{noOfPassengers:t.noOfPassengers,selectedTourPrice:t.selectedTourPrice,trip:t.trip}}).then(function(n){if(n.status>=200&&n.status<300)return n.data.data})}}}]),function(){"use strict";angular.module("Phoenix.Shared.filters").filter("logicalSearch",[function(){return function(n,t,i){var u=[],r;if(t){t=t.replace("&nbsp;","");var f=t.toLowerCase().split(/\s+/),e="(?=.*"+f.join(")(?=.*")+")",o=t.toLowerCase().replace(/\s+/g,"|"),s=new RegExp(i=="AND"?e:o,"i");for(r=0;r<n.length;r++)s.test(n[r].Title)&&u.push(n[r])}return u}}]);angular.module("Phoenix.Shared.filters").filter("exactSearch",[function(){return function(n,t){var r=[],i;if(t&&n.length)for(t=t.replace(/&nbsp;/g," "),t=t.replace(/\s\s+/g," "),t=t.toLowerCase(),i=0;i<n.length;i++)n[i].Title&&n[i].Title.toLowerCase().indexOf(t)!==-1&&r.push(n[i]);return r}}]);angular.module("Phoenix.Shared.filters").filter("relevantSearch",[function(){return function(n,t){var f=[],r,u,i;if(t&&n.length){for(r=[],u=[],t=t.replace(/&nbsp;/g," "),t=t.replace(/\s\s+/g," "),t=t.toLowerCase(),i=0;i<n.length;i++)n[i].toLowerCase().indexOf(t)===0?r.push(n[i]):n[i].toLowerCase().indexOf(t)>0&&u.push(n[i]);f=r.sort().concat(u.sort())}return f}}])}(),function(){"use strict";angular.module("Phoenix.Shared.filters").filter("ellipsis",[function(){return function(n,t){var i=n;return t&&n.length>=t&&(i=n.substring(0,t)+"..."),i}}]);angular.module("Phoenix.Shared.filters").filter("textToId",[function(){return function(n){return n.replace(/[^a-z0-9\-_:\.]|^[^a-z]+/gi,"").toLowerCase()}}])}(),function(){"use strict";angular.module("Phoenix.Shared.controllers").controller("multistepCarouselControllers",["$rootScope",function(n){function i(i){i>=0&&i<r&&(t.steps.currentIndex=i,n.$broadcast("broadcast.multistepCarouselControllers.indexChanged",{index:t.steps.currentIndex}))}function u(){t.steps.currentIndex+1<r&&(t.steps.currentIndex++,n.$broadcast("broadcast.multistepCarouselControllers.indexChanged",{index:t.steps.currentIndex}),n.$broadcast("broadcast.multistepCarouselControllers.goToNext"))}function f(){t.steps.currentIndex>0&&(t.steps.currentIndex--,n.$broadcast("broadcast.multistepCarouselControllers.indexChanged",{index:t.steps.currentIndex}))}var r=3,t=this;t.steps={currentIndex:0,goToNext:u,goToPrevious:f,goToStep:i};n.$on("broadcast.multistepCarouselControllers.goToIndex",function(n,t){i(t.index)})}])}(),function(){"use strict";angular.module("Phoenix.Shared.controllers").controller("pageHeroController",[function(){function t(t){n.title.class=t.length?t[0]:"";n.title.classes=t}function i(){n.title.currentIndex=n.title.currentIndex+1>=n.title.classes.length?0:n.title.currentIndex+1;n.title.class=n.title.classes[n.title.currentIndex]}function r(){n.title.currentIndex=n.title.currentIndex<=0?n.title.classes.length-1:n.title.currentIndex-1;n.title.class=n.title.classes[n.title.currentIndex]}var n=this;n.title={currentIndex:0,"class":"",classes:[],showNext:i,showPrevious:r};n.init=t}]).controller("videoPageHeroController",["$scope",function(n){function i(n){t.videoId=n}function r(){n.$broadcast("broadcast.videoPageHeroController.pauseVideo")}var t=this;t.videoId="";t.isVideoLoaded=!1;t.displayVideo=!0;t.isVideoPlaying=!1;t.pauseVideo=r;t.init=i}])}(),function(){"use strict";angular.module("Phoenix.Shared.controllers").controller("styleGuideElementController",[function(){var n=this;n.styles={color:"",backgroundColor:"",letterSpacing:"",fontFamily:"",rem:{fontSize:"",lineHeight:""},desktop:{fontSize:"",lineHeight:""},mobile:{fontSize:"",lineHeight:""}}}])}(),function(){"use strict";angular.module("Phoenix.Shared.controllers").controller("tripPackageSelectionController",["$filter","$scope",function(n){function i(n){return Array.isArray(n)}function u(n,i,u,f,e){t.trip.tripId=n;t.trip.tripCode=i;t.trip.tripName=u;t.date=f;try{t.tripBadgeDict=JSON.parse(e)}catch(o){t.tripBadgeDict={}}r(t.date)}function f(n){n&&i(n)&&i(n[0].journeyPackages)&&i(n[0].roomConfigurations)||(t.packages=[],t.roomTypes=[],t.package={},t.roomType={});var r=n[0];t.packages=r.journeyPackages.filter(function(n){return n.journeyPackageType!==null});t.roomTypes=r.roomConfigurations;t.package=r.journeyPackages[0];t.roomType=r.roomConfigurations[0];t.modalError.title=n.infoApiErrorTitle;t.modalError.description=n.infoApiErrorMsg;t.buildPackageDetailsString=c;t.buildRoomConfigurationString=a;t.buildPackageSelectionArray=l}function r(n){var i=t.tripBadgeDict[n];typeof i!="undefined"&&(t.tripBadgeText=i.text,t.tripBadgeColor=i.colorClass)}function e(){t.roomType&&t.roomType.upgradeCategories&&t.roomType.upgradeCategories.forEach(function(n){n.selectedCategory=n.upgradeOptions[0];n.isUpgraded=!1})}function o(){if(!t.roomType||!t.roomType.upgradeCategories){t.price=0;return}t.previousPrice=t.price;var n=t.package.amount+t.roomType.amount;t.roomType.upgradeCategories.forEach(function(t){t.isUpgraded&&t.selectedCategory!==null&&(n+=t.selectedCategory.amount)});t.price=n}function s(t,i){var r=n("currency")(t,i,0);return t<0?r:"+"+r}function h(n){return n.basePrice||(n.basePrice=n.amount),t.package.amount+n.basePrice}function c(){var n="";t.roomType.upgradeCategories.forEach(function(t){t.isUpgraded&&t.selectedCategory!=null&&(n=n+t.upgradeCategoryTitle+" - "+t.selectedCategory.upgradeOptionTitle+"|")});t.upgradeOptionsString=n}function l(){var n=[];return t.roomType.upgradeCategories.forEach(function(t){t.isUpgraded&&t.selectedCategory!=null&&n.push(t.upgradeCategoryTitle+" - "+t.selectedCategory.upgradeOptionTitle)}),n}function a(){t.roomConfigurationString=t.roomType.roomConfigurationType}var t=this;t.init=u;t.setupModel=f;t.date="";t.package={};t.roomType={};t.price=0;t.previousPrice=0;t.modalError={};t.modal={};t.upgradeOptionsString="";t.isUpdatingRoomType=!1;t.roomConfigurationString="";t.tripBadgeDict={};t.tripBadgeText="";t.tripBadgeColor="";t.packages=[];t.roomTypes=[];t.trip={tripName:"",tripId:"",tripCode:""};t.form={isSubmitting:!1};t.calculateTotalPrice=o;t.formatPriceDifference=s;t.setDefaultUpgradeCategories=e;t.calculateBasePriceForRoomType=h;t.setTripBadge=r}])}(),function(){"use strict";angular.module("Phoenix.Shared.directives").directive("styleGuideElement",["$timeout","$window",function(n,t){return{restrict:"A",scope:!0,controller:"styleGuideElementController",controllerAs:"sgc",bindToController:!0,link:function(n,i,r,u){function a(n){var i,t;return n&&(t=n.split(","),t.length&&(i=t[0].replace(/['"]+/g,""))),i}function c(n){var t=parseFloat(n);return isNaN(t)?n:h>=o?t/e+"rem":t/s+"rem"}function v(n){var t=parseFloat(n);return isNaN(t)?n:h>=o?t/e*s+"px":n}function y(n){var t=parseFloat(n);return isNaN(t)?n:h>=o?n:t/s*e+"px"}function l(n){function t(n){return("0"+parseInt(n).toString(16)).slice(-2)}return n?(n=n.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),n?"#"+t(n[1])+t(n[2])+t(n[3]):""):""}var e=16,o=801,s=14,h=t.innerWidth,p=angular.element(i),f=p.find("[data-style-guide-element-instance]");f.length&&(u.styles.className=f[0].className,u.styles.fontFamily=a(f.css("font-family")),u.styles.color=l(f.css("color")),u.styles.backgroundColor=l(f.css("background-color")),u.styles.letterSpacing=f.css("letter-spacing"),u.styles.rem.fontSize=c(f.css("font-size")),u.styles.rem.lineHeight=c(f.css("line-height")),u.styles.mobile.fontSize=v(f.css("font-size")),u.styles.mobile.lineHeight=f.css("line-height"),u.styles.desktop.fontSize=y(f.css("font-size")),u.styles.desktop.lineHeight=f.css("line-height"))}}}])}()