CXN.createNS("CXN.ViewModels");CXN.ViewModels.Airport=function(){return VM=function(n,t,i,r,u,f){var e,o,s;for(Model=CXN.Model.CartItemObservable(n),Pickup={name:ko.observable(null),source:ko.observable(null)},Dest={name:ko.observable(null),source:ko.observable(null)},BookingsAirportUrl=t?t:"/Bookings/Airport-Transfers",HostUrl=window.location.hostname,GroupAfterNumber=r?r:40,DomainID=u?u:n.DomainID,Zone=ko.observable(f?f:n.DefaultZone),PaxNumbers=ko.observableArray([]),ReturnDialog=ko.observable(),AlternateStopsDialog=ko.observable(),ProcessingDialog=ko.observable(),ChkFlightNumberDialog=ko.observable(),ShowFormInValidMsg=ko.observable(!1),ShowAOR=ko.observable(!1),VoucherShowMsg=ko.observable(!1),ChkFlightInfo=ko.observable(),ShowLugMsg=ko.observable(!1),ShowLugOptionsMsg=ko.observable(!1),PriceDialog=ko.observable(),Error=ko.observable(""),RtnTerminals=ko.observableArray([]),RtnTerminalHeader=ko.observable(""),FlightTimeShowMsg=ko.observable(!1),FlightNoShowMsg=ko.observable(!1),RtnFlightTimeShowMsg=ko.observable(!1),RtnFlightNoShowMsg=ko.observable(!1),ServiceShowMsg=ko.observable(!1),RtnServiceShowMsg=ko.observable(!1),PaxShowMsg=ko.observable(!1),ProductSelectMsg=ko.observable(!1),ShowRtnTerminals=function(){Model.Message("");Model.IsReturn()===!0&&Model.RtnTerminalHeader()==="Returning to:"&&ReturnDialog({})},SetReturnTerminal=function(n){Model.RtnTerminal(n.Stop);Model.RtnTerminalID(n.ID);ReturnDialog(null)},Nett=ko.computed({read:function(){return"$"+Model.Nett().toFixed(2)},owner:this}),Retail=ko.computed({read:function(){return"$"+Model.Retail().toFixed(2)},owner:this}),IsOneway=ko.computed({read:function(){return!Model.IsReturn()},write:function(n){Model.IsReturn(!n)},owner:this}),GetLabel=function(n){return n},ToMoney=function(n){return"$"+n.toFixed(2)},SetProduct=function(n,t){Model.Message("");ProductSelectMsg(!1);Model.ProductItemID(t.ID);IsOneway(t.Name=="Return"?!1:!0);Model.TravelClass(n.TravelClass);Model.ProductGTM=t.GTM;CXN.GTM.ProductSelection(Model)},IsProductSelected=function(n){return IsOneway()==n?"selected":""},IsWithinLuggage=ko.computed({read:function(){return Model.IamWithinLuggageAllowance()},write:function(n){ShowLugMsg(!1);ShowLugOptionsMsg(!1);Model.IamWithinLuggageAllowance(n)},owner:this}),SetWithinLuggage=function(){Model.ExLug(0);Model.LargeLuggage(0);IsWithinLuggage(!0)},SetNotWithinLuggage=function(){IsWithinLuggage(!1)},GetHostUrl=function(){var n=location.protocol,t=n.concat("//");return t.concat(window.location.hostname+(location.port.toString()!==""?":"+location.port:""))},IsReturnDraft=ko.computed({read:function(){return Model.IsReturnDraft()},write:function(n){Model.IsReturnDraft(n)},owner:this}),ProceedFromTravel=function(){IsTravelValid(function(){ProcessingDialog({});Model.UserFirstSelectedOneway(!Model.IsReturn());IsWithinLuggage(null);ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"widgit"})})},IsTravelValid=function(t){Error("");Model.Message("");PaxShowMsg(!1);ShowFormInValidMsg(!1);FlightTimeShowMsg(!1);FlightNoShowMsg(!1);RtnFlightTimeShowMsg(!1);RtnFlightNoShowMsg(!1);VoucherShowMsg(!1);var i=!0;Model.PickupDetails=Pickup.data;Model.DestinationDetails=Dest.data;i=Pickup.IsValid()&&Dest.IsValid();Model.Adults()+Model.Children()+Model.Cons()<=0&&(PaxShowMsg(!0),i=!1);Model.Adults()+Model.Cons()==0&Model.Children()>0&&(PaxShowMsg(!0),alert("Children must be accompanied by an adult"),i=!1);i||ShowFormInValidMsg(!0);Model.DomainID==3&&Model.Voucher()===""&&(i=!1,VoucherShowMsg(!0));i&&(n={PickupDetails:Pickup.data,DestinationDetails:Dest.data,GUID:Model.Guid(),Adults:Model.Adults(),Children:Model.Children(),Cons:Model.Cons(),TravelClass:Model.TravelClass(),DomainID:Model.DomainID},ProcessingDialog({}),$.ajax({type:"POST",dataType:"json",async:!1,url:GetHostUrl()+"/Umbraco/Surface/AirportSurface/CheckServices",data:ko.toJS(n),success:function(n){if(n!==null){ProcessingDialog(null);switch(n.type){case"OK":t();break;case"pickup":Pickup.ShowAlts(n.stops,n.display_note|"");break;case"dest":Dest.ShowAlts(n.stops,n.display_note|"");break;default:Model.Message("Sorry, that Pickup/Destination combination is not available.")}}else ProcessingDialog(null),Model.Message("Sorry, that Pickup/Destination combination is not available.")},error:function(){ProcessingDialog(null);Model.Message("Sorry, that Pickup/Destination combination is not available.")}}))},ProceedFromFlight=function(){Error("");Model.Message("");FlightTimeShowMsg(!1);FlightNoShowMsg(!1);RtnFlightTimeShowMsg(!1);RtnFlightNoShowMsg(!1);ShowLugMsg(!1);ShowLugOptionsMsg(!1);ProductSelectMsg(!1);var n=!0;Model.IsMulti()||TerminalTypeID()===4||(Model.ProductItemID()==null&&(ProductSelectMsg(!0),n=!1),(Model.FTHours()==="hour"||Model.FTMins()==="min")&&(n=!1,FlightTimeShowMsg(!0)),IsWharf()||Model.FlightInfo()!==""||(n=!1,FlightNoShowMsg(!0)),Model.IsReturn()&&!Model.IsReturnDraft()&&((Model.RtnFTHours()==="hour"||Model.RtnFTMins()==="min")&&(n=!1,RtnFlightTimeShowMsg(!0)),IsRtnWharf()||Model.RtnFlightInfo()!==""||(n=!1,RtnFlightNoShowMsg(!0))));Model.IamWithinLuggageAllowance()==null&&(ShowLugOptionsMsg(!0),n=!1);!Model.IamWithinLuggageAllowance()&Model.ExLug()+Model.LargeLuggage()<=0&&(ShowLugMsg(!0),n=!1);n==!0&&(ProcessingDialog({}),CXN.GTM.ProductDetail(Model),ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"Services"}))},Back=function(n){n<Model.PageIndex()&&(n==0&&BackToTravel(),n==1&&BackToFlight())},BackToTravel=function(){window.location.hash="0";Model.TravelClass(0);Model.ProductItemID(null);Model.Note("");Model.Message("");Model.PageIndex(0);$("html, body").animate({scrollTop:0},"slow")},BackToFlight=function(){Model.Note("");Model.Message("");Model.ServiceID(0);Model.RtnServiceID(0);Model.PageIndex(1);$("html, body").animate({scrollTop:0},"slow")},SetAlternate=function(n){for(ii in Model.Products()){var t=Model.Products()[ii];t.ID==1&&(t.AlternateStop(n),t.Title(n.Stop),t.Options(n.Options),Model.ProductItemID(null),Model.TravelClass(0),CXN.GTM.ProductOptionImpressions(n.Options))}AlternateStopsDialog(null)},ShowMap=function(n){MapEmbed.Name(n.Stop);MapEmbed.Url(n.MapUrl);MapEmbed.Show({})},ShowAlternateStops=function(){AlternateStopsDialog({})},LuggageAllowanceDescription=ko.computed({read:function(){var n=Model.Adults()+Model.Children()+Model.Cons(),t=n>1?"s":"";return"This transfer includes "+n.toString()+" suitcase"+t+" and "+n.toString()+" carry on item"+t+"."},owner:this}),ServiceInfo_Pickup=ko.computed({read:function(){return Model.IsMulti?"Services for "+Model.FlightDate():"Services for "+(VM.IsWharf?"boat ":"flight ")+(Model.PickupTypeID()===0?"arriving: ":"departing: ")+Model.FlightDate()+"&nbsp;"+Model.FTHours().toString()+":"+Model.FTMins().toString()},owner:VM}),ServiceInfo_Return=ko.computed({read:function(){return"Services for "+(VM.IsWharf?"boat ":"flight ")+" returning: "+Model.RtnFlightDate()+"&nbsp;"+Model.RtnFTHours().toString()+":"+Model.RtnFTMins().toString()},owner:VM}),TerminalTypeID=function(){return Model.PickupTypeID()===4&&Model.DestTypeID()!==0?4:Model.DestTypeID()===4&&Model.PickupTypeID()!==0?4:0},MultiTypeID=function(){return Model.PickupTypeID()===0||Model.DestTypeID()===0?"flight":""},GetFlightHeaderLabel=function(){return Model.PickupTypeID()===0?"Arriving: ":"Departing: "},GetFlightHeader=function(){return Model.PickupTypeID()===0?Pickup.Name():Dest.Name()},GetRtnFlightHeader=function(){return(Model.PickupTypeID()===0?"Departing: ":"Arriving: ")+Model.RtnTerminal()},GetFlightLabel=function(){return IsWharf()?"Boarding date: ":"Flight date:"},GetRtnFlightLabel=function(){return IsRtnWharf()?"Boarding date: ":"Flight date:"},IsWharf=function(){return(Pickup.Name()+Dest.Name()).indexOf("Wharf")===-1?!1:!0},IsRtnWharf=function(){return Model.RtnTerminal().indexOf("Wharf")===-1?!1:!0},SetService=function(n){Model.ServiceID(n.ID)},SetRtnService=function(n){Model.RtnServiceID(n.ID)},ShowDatePicker=function(n){$("#"+n).datepicker().focus()},Save=function(){var n=!1;Model.ServiceID()>0?n=!0:(ServiceShowMsg(!0),n=!1);Model.IsReturn()&&(Model.RtnServiceID()>0|Model.IsReturnDraft()==!0?n=!0:(RtnServiceShowMsg(!0),n=!1));n&&(IsServiceAtRisk()?ShowAOR({}):SaveToCart())},SaveToCart=function(){ShowAOR(null);ProcessingDialog({});CXN.GTM.AddToCart(Model);ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"AddItem"})},IsServiceAtRisk=function(){var t=ko.utils.arrayFilter(Model.FirstServices(),function(n){return n.ID===Model.ServiceID()}),n;return t[0]!=null&&t[0].AOR==!0?!0:Model.IsReturn()==!0&&(n=ko.utils.arrayFilter(Model.ReturnServices(),function(n){return n.ID===Model.RtnServiceID()}),n[0]!=null&&n[0].AOR==!0)?!0:!1},ToggleIsReturn=function(){Model.IsReturn(!Model.IsReturn())},ServicesGroupByDate=function(n){return CXN.groupBy(n(),function(n){return n.GroupName})},GetGroupID=function(n){return"#"+n.replace(" ","_").replace(" / ","_")},GetSourceItem=function(n){return n==null?"fas fa-map-marker-alt":n.indexOf("terminal")>-1?"fas fa-plane":n.indexOf("transit")>-1?"fas fa-exchange-alt":n.indexOf("hotel")>-1?"fas fa-hotel":"fas fa-map-marker-alt"},MapEmbed={Show:ko.observable(null),Name:ko.observable(null),Url:ko.observable(null)},AltModal=function(){var n=this;n.Title=ko.observable(null);n.Modal=ko.observable(null);n.Results=ko.observableArray([]);n.SetItem=function(t){n._setItem(t);n.Modal(null)};n.Close=function(){n._setItem(null);n.Modal(null)};n.Show=function(t,i,r,u){n.Title(u!=null&&u!=""?u:t);n.Results(i);n.Modal({});n._setItem=r;n.View("")};n.View=ko.observable("");n.MapUrl=ko.observable("");n.MapDescription=ko.observable("");n.ShowMap=function(t){n.MapDescription(t.description);n.MapUrl(t.url);n.View("map")};n.HideMap=function(){n.View("")}},MobileModal=function(){var n=this;n.Modal=ko.observable();n.Title=ko.observable("");n.Search=ko.observable("");n.SearchComputed=ko.pureComputed(n.Search).extend({rateLimit:{method:"notifyWhenChangesStop",timeout:500}});n.Clear=function(){n.Search("");n.Focus(!0)};n.Results=ko.observableArray([]);n.Message=ko.observable(null);n.View=ko.observable("");n.Busy=ko.observable(!1);n.Focus=ko.observable(!1);n.SetItem=function(t){n.Message(null);n.Busy(!0);CXN.Model.GetDetails(t,{success:function(t){if(t.result==null){n.Message("Error: Please try again soon.");return}n.Close();n._setItem(t.result.placeDetail[0])},error:function(t,i,r){n.Message(r)},complete:function(){n.Busy(!1)}})};n.Show=function(t,i,r){n._setItem=r;n.Results([]);n.Title(t);n.Search(i);n.Modal({});n.Message(null);n.Busy(!1);n.Focus(!0)};n.Close=function(){n.Results([]);n.Search("");n.Modal(null)};n.Search.subscribe(function(t){t!==""&&n.Busy(!0)},this);n.SearchComputed.subscribe(function(t){t!==""?(n.Message(null),n.Busy(!0),CXN.Model.AutoComplete(t,{success:function(t){if(t.result==null){n.Message("Error: Please try again soon.");return}n.Results(t.result.searchResults)},error:function(t,i,r){n.Results([]);n.Message(r)},complete:function(){n.Busy(!1)}})):n.Results([])},this);n.Results.subscribe(function(t){n.View(null);t.length>0?n.View("items"):n.Search().length>0&&n.View("noItems")},this)},StopVM=function(n,t,i,r){var u=this;u.Name=ko.observable(n==null?null:n.description);u.Label=r;u.Source=ko.observable(n==null?null:n.source);u.PlaceHolder=i;u.DelayTime=400;u.ValidMessage=ko.observable(null);u.data=n||{};u.SourceComputed=ko.computed({read:function(){return GetSourceItem(u.Source())},owner:VM});u.MS_Show=function(n,t){($(window).width()<500||$(window).height()<500)&&(MS.Show(u.Label,u.Name()||"",u.SetItem),t.stopPropagation())};u.Valid=ko.observable(null);u.IsValid=function(){return u.Valid(!1),u.ValidMessage(null),u.data==null?u.ValidMessage("Please enter a location"):u.data.precision!=="point"&&(u.ValidMessage("Please include Street number in your search. For assistance, call 1300 952 281"),CXN.GTM.Error(u.data.description)),u.Valid(u.ValidMessage()==null),u.Valid()};u.ShowMap=function(){MapEmbed.Show(null);u.IsValid()&&(MapEmbed.Name(u.Name()),MapEmbed.Url(u.data.url),MapEmbed.Show({}))};u.SetItem=function(n){if(n==null){ALT.Modal(null);u.Name(null);u.Source(null);u.data=null;return}if(n.alt_stops!=null&&n.alt_stops.length>0){var t=u.Label==="Pick-up"?"pick-ups":"destinations",i="These are the available "+t+" for: <\/br> <strong>"+n.description+"<\/strong>",r=n.display_note!=null?n.display_note:"";ALT.Show(i,n.alt_stops,u.SetItem,r)}else ALT.Modal(null),u.Name(n==null?null:n.description),u.Source(n==null?null:n.source),u.data=n,u.IsValid()};u.ShowAlts=function(n,t){var i=u.Label==="Pick-up"?"pick-up from":"drop-off at",r="We currently don't "+i+":<\/br><strong>"+u.data.description+".<\/strong><\/br/> Here are some locations we can "+i;ALT.Show(r,n,u.SetItem,t)};u.Status=ko.observable(!1);u.GetDetails=function(n,t){if(u.ValidMessage(null),u.Status("busy"),t.item.data.source=="noresults"){setTimeout(function(){u.SetItem(null)},0);return}CXN.Model.GetDetails(t.item.data,{success:function(n){if(n.result==null){u.ValidMessage("Error: Please try again shortly");return}u.SetItem(n.result.placeDetail[0])},error:function(){u.ValidMessage("Error: Please try again shortly")},complete:function(){u.Status(null)}})};u.AutoComplete=function(n,t){Model.Note("");Model.Message("");u.ValidMessage(null);u.Status("busy");CXN.Model.AutoComplete(n,{success:function(i){if(i.result==null){u.ValidMessage("Error: Please try again shortly");return}if(i.result.searchResults.length>0)t(i.result.searchResults);else{CXN.GTM.Error(n);t([{description:"Sorry, no results found.",source:"noresults"}])}},error:function(){u.ValidMessage("Error: Please try again shortly")},complete:function(){u.Status(null)}})}},ALT=new AltModal,MS=new MobileModal,Pickup=new StopVM(Model.PickupDetails,"Please Enter Pick-up","Search Airport, hotel, Place or address","Pick-up"),Dest=new StopVM(Model.DestinationDetails,"Please Enter Destination","Search Airport, hotel, Place or address","Destination"),CXN.Model.getLocation(),e=0;e<21;e++)PaxNumbers.push(e);o=getParameterByName("m");o!=""&&Model.Note(o);s=0;$(".cxn-post-load").show();$(".cxn-pre-load").hide();$(".tooltips").tooltip();Model.LargeLuggage()>0|Model.ExLug()>0&&IsWithinLuggage(!1);CXN.GTM.ProductImpressions(Model)},ko.bindingHandlers.datepicker={init:function(n,t,i){var r=i().datepickerOptions||{},u=function(){var u=t(),i=$.datepicker.formatDate("dd/mm/yy",$(n).datepicker("getDate")),r;u(i);r=$(n).attr("id");r==="FlightDate"&&$.datepicker.parseDate("dd/mm/yy",i)>$.datepicker.parseDate("dd/mm/yy",Model.RtnFlightDate())&&Model.RtnFlightDate(i);r==="RtnflightDate"&&$.datepicker.parseDate("dd/mm/yy",i)<$.datepicker.parseDate("dd/mm/yy",Model.FlightDate())&&Model.FlightDate(i)};r.onSelect=u;$(n).datepicker(r);ko.utils.registerEventHandler(n,"change",u);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).datepicker("destroy")})},update:function(n,t){var i=ko.utils.unwrapObservable(t());current=$(n).datepicker("getDate");$.datepicker.parseDate("dd/mm/yy",i)-current!=0&&$(n).datepicker("setDate",$.datepicker.parseDate("dd/mm/yy",i))}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.RedeemVM=function(n){var t=this;return t.UseCookie=n,t.CookieToken="cxnRedeemVoucher",t.Model=null,t.View=ko.observable("init"),t.Status=ko.observable(""),t.StatusClass=ko.observable(""),t.RedeemCode=ko.observable(""),t.Summary=ko.observable(""),t.Price=ko.observable(""),t.GetOrder=function(){if(t.StatusClass(""),t.Status(""),t.RedeemCode().length<3){t.Status("Please Enter Redeem Code");t.StatusClass("error");return}$.ajax({type:"POST",dataType:"json",async:!1,url:CXN.GetHostUrl()+"/umbraco/surface/Redeem/GetOrder?code="+t.RedeemCode(),success:function(n){n!==null?n.Status=="order"?(t.Model=n,t.Set(n),window.location.hash=t.RedeemCode()):t.ShowMessage(n.Message,"error"):t.ShowMessage("Error, please try again or contact Con-x-ion on 1300 266 946","error")},error:function(){t.View("init");t.Status("Error, please try again or contact Con-x-ion on 1300 266 946")}})},t.ShowMessage=function(n,i){t.Status(n);t.StatusClass(i);t.View("init")},t.Complete=function(){t.SetCookie();setCookie("cxn-cart",{},-10);ko.utils.postJson(CXN.GetHostUrl()+"/bookings/airport-transfers",{Model:{},ActionName:"redeem-edit"})},t.SetCookie=function(){setCookie(t.CookieToken,t.Model,600)},t.Set=function(n){t.View("active");t.RedeemCode(n.RedeemCode);t.Summary(n.Summary);t.Price(n.Price)},t.Cancel=function(){deleteCookie(t.CookieToken);t.RedeemCode("");t.Summary("");t.Price("");t.View("init")},t.Change=function(){window.location.href=CXN.GetHostUrl()+"/Redeem"},Init=function(){if(t.UseCookie==!1&&deleteCookie(t.CookieToken),window.location.hash)t.RedeemCode(window.location.hash.substring(1)),t.GetOrder();else if(t.UseCookie==!0){var n=getCookie(t.CookieToken);n!=undefined&&n!=null&&t.Set(n)}},Init(),t};CXN.createNS("CXN.ViewModels");CXN.ViewModels.ThemePark=function(){return VM=function(n){Model=CXN.Model.CartItemObservable(n);PaxNumbers=ko.observableArray([]),function(){for(var n=0;n<100;n++)PaxNumbers.push(n)}();DestDialog=ko.observable();HotelDialog=ko.observable();ProcessingDialog=ko.observable();VoucherShowMsg=ko.observable(!1);Dest={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Hotel={CssClass:ko.observable(""),ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Nett=ko.computed({read:function(){return"$"+Model.Nett().toFixed(2)},owner:this});Retail=ko.computed({read:function(){return"$"+Model.Retail().toFixed(2)},owner:this});Error=ko.observable("");ServiceShowMsg=ko.observable(!1);PaxShowMsg=ko.observable(!1);TravelDateShowMsg=ko.observable(!1);Hotels=ko.observableArray([]);HotelFilter=ko.observable("");HotelSearchResults=ko.observable("");SearchHotels=function(){HotelFilter().length>1?(Hotel.Loading("tmplLoading"),$.ajax({dataType:"json",url:"../../api/Data/GetHotelsThemeParks?searchText="+HotelFilter()}).then(function(n){var t=[];ko.utils.arrayForEach(n,function(n){t.push({HotelID:n.HotelID,HotelName:n.HotelName})});HotelSearchResults(t.length.toString()+" Hotels found. "+(t.length>0?"Please Select.":""));Hotels(t);Hotel.Loading("none")})):(HotelSearchResults("Please enter at least the first 2 characters of the hotel name or address"),Hotels([]),Hotel.Loading("none"))};ShowRoute=ko.computed({read:function(){return Model.DestID()==529&&Model.ReturnOptions().length>0},owner:this});ShowDests=function(){Hotel.ShowMsg(!1);Model.PickupHotelID()>0?(Hotel.ShowMsg(!1),Dest.ShowMsg(!1),Error(""),DestDialog({})):Hotel.ShowMsg(!0)};SetDest=function(n){n.ID>-1&&(Model.DestID(n.ID),Model.DestTypeID(-1),Model.Dest(n.Stop),DestDialog(null),Dest.ShowMsg(!1))};ShowHotels=function(){HotelSearchResults("");Hotel.ShowMsg(!1);HotelDialog({});$("#inputHotelFilter").focus();Hotels([]);HotelFilter("")};SetHotel=function(n){n.HotelID>0&&(HotelDialog(null),Model.PickupHotelID(n.HotelID),Model.PickupHotel(n.HotelName),Hotel.ShowMsg(!1),Model.DestID(0),Model.Dest("Select Destination..."),Error(""),Model.Destinations([]),Dest.Loading("tmplLoading"),$.ajax({type:"GET",dataType:"json",async:!1,url:"../../api/Data/GetThemeParks?hotelID="+Model.PickupHotelID()+"&domainID="+Model.DomainID.toString()+"&accountID="+Model.AccountID,success:function(n){Dest.Loading("none");Model.Destinations(n);ShowDests()},error:function(n){Dest.Loading("none");alert("Unable to load Destinations: "+n)}}),HotelDialog(null))};Proceed=function(){IsProceedValid()&&(ProcessingDialog({}),ko.utils.postJson(document.location.href,{Model:ko.toJS(Model),ActionName:"Services"}))};IsProceedValid=function(){Error("");Hotel.ShowMsg(!1);Dest.ShowMsg(!1);PaxShowMsg(!1);TravelDateShowMsg(!1);VoucherShowMsg(!1);var n=!0;return Model.PickupHotelID()<=0&&(n=!1,Hotel.ShowMsg(!0)),Model.DestID()<=0&&(n=!1,Dest.ShowMsg(!0)),Model.Adults()+Model.Children()+Model.Cons()<=0&&(PaxShowMsg(!0),n=!1),Model.Adults()+Model.Cons()==0&Model.Children()>0&&(PaxShowMsg(!0),alert("Children must be accompanied by an adult"),n=!1),Model.DomainID==3&&Model.Voucher()===""&&(n=!1,VoucherShowMsg(!0)),n};SetService=function(n){Model.ServiceID(n.ID)};Save=function(){ProcessingDialog({});var n=!1;Model.ServiceID()>0?n=!0:(ServiceShowMsg(!0),n=!1);n&&ko.utils.postJson(location.href,{Model:ko.toJS(Model),ActionName:"AddItem"});ProcessingDialog(null)};Cancel=function(){ko.utils.postJson(location.href,{Model:ko.toJS(Model),ActionName:"Cancel"})};Edit=function(){Model.Message("");Model.ServiceID(0);Model.RtnServiceID(0);Model.PageIndex(0)};ShowDatePicker=function(n){$("#"+n).datepicker().focus()}},ko.bindingHandlers.datepicker={init:function(n,t,i){var r=i().datepickerOptions||{},u=function(){var i=t(),r=$.datepicker.formatDate("dd/mm/yy",$(n).datepicker("getDate"));i(r)};r.onSelect=u;$(n).datepicker(r);ko.utils.registerEventHandler(n,"change",u);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).datepicker("destroy")})},update:function(n,t){var i=ko.utils.unwrapObservable(t());current=$(n).datepicker("getDate");$.datepicker.parseDate("dd/mm/yy",i)-current!=0&&$(n).datepicker("setDate",$.datepicker.parseDate("dd/mm/yy",i))}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.ThemeParkSC=function(){return VM=function(n,t,i,r,u,f){Model=CXN.Model.CartItemObservable(n);BookingsAirportUrl=t?t:"/Bookings/ThemePark-TransfersSC";HostUrl=i?i:"../../api/";GroupAfterNumber=r?r:30;DomainID=u?u:0;Zone=f;SelectedGroup=ko.observable("");PaxNumbers=ko.observableArray([]);PickupDialog=ko.observable();DestDialog=ko.observable();ReturnDialog=ko.observable();HotelDialog=ko.observable();SuburbDialog=ko.observable();ProcessingDialog=ko.observable();ShowFormInValidMsg=ko.observable(!1);ShowAOR=ko.observable(!1);HasReturnTerminalOptions=ko.observable(!1);VoucherShowMsg=ko.observable(!1);Pickup={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Dest={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Addr={SearchValue:ko.observable(""),AddressShowMsg:ko.observable(!1),SuburbShowMsg:ko.observable(!1),Loading:ko.observable("none")};Hotel={CssClass:ko.observable(""),ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Nett=ko.computed({read:function(){return"$"+Model.Nett().toFixed(2)},owner:this});Retail=ko.computed({read:function(){return"$"+Model.Retail().toFixed(2)},owner:this});IsOneway=ko.computed({read:function(){return!Model.IsReturn()},write:function(n){Model.IsReturn(!n)},owner:this});ErrorMessage=ko.observable("");Pickups=ko.observableArray([]);Dests=ko.observableArray([]);DestsGroups=ko.observableArray([]);RtnTerminals=ko.observableArray([]);RtnTerminalHeader=ko.observable("");FlightTimeShowMsg=ko.observable(!1);FlightNoShowMsg=ko.observable(!1);RtnFlightTimeShowMsg=ko.observable(!1);RtnFlightNoShowMsg=ko.observable(!1);ServiceShowMsg=ko.observable(!1);RtnServiceShowMsg=ko.observable(!1);PaxShowMsg=ko.observable(!1);StopMenu=ko.observable("All");LoadSuburbs=function(){Addr.AddressShowMsg(!1);Addr.SuburbShowMsg(!1);Addr.Loading("tmplLoading");$.ajax({dataType:"json",async:!0,url:HostUrl+"Data/GetSuburbs?pickupID="+Model.PickupID()+"&destID="+Model.DestID()}).then(function(n){var t=[];ko.utils.arrayForEach(n,function(n){t.push({ID:n.ID,Name:n.Name})});Model.Suburbs(t);Addr.Loading("none")})};Hotels=ko.observableArray([]);HotelFilter=ko.observable("");HotelSearchResults=ko.observable("");SearchHotels=function(){HotelFilter().length>1?(Hotel.Loading("tmplLoading"),$.ajax({dataType:"json",url:HostUrl+"Data/GetHotels?searchText="+HotelFilter()+"&pickupID="+Model.PickupID()+"&destID="+Model.DestID()}).then(function(n){var t=[];ko.utils.arrayForEach(n,function(n){t.push({HotelID:n.HotelID,HotelName:n.HotelName})});HotelSearchResults(t.length.toString()+" Hotels found. "+(t.length>0?"Please Select.":""));Hotels(t);Hotel.Loading("none")})):(HotelSearchResults("Please enter at least the first 2 characters of the hotel name or address"),Hotels([]),Hotel.Loading("none"))};SelectRecent=function(n){ko.utils.postJson(BookingsAirportUrl,{RecentValue:n})};ShowPickups=function(){Model.Message("");SelectedGroup("");Pickup.ShowMsg(!1);Dest.ShowMsg(!1);IsPickupGrouped(Model.Pickups.length>GroupAfterNumber);Pickups(LocationsGrouped(Model.Pickups));ErrorMessage("");PickupDialog({})};LocationsGrouped=function(n){var t=[],i=ko.utils.arrayFilter(n,function(n){return n.TypeID===0}),r=ko.utils.arrayFilter(n,function(n){return n.TypeID===4}),u=ko.utils.arrayFilter(n,function(n){return n.TypeID===2||n.TypeID===1}),f=ko.utils.arrayFilter(n,function(n){return n.TypeID===3});return i.length>0&&t.push({Group:"Airports",GroupItems:i}),r.length>0&&t.push({Group:"Theme Parks",GroupItems:r}),u.length>0&&t.push({Group:"Hotels",GroupItems:u}),f.length>0&&t.push({Group:"Transit Stops",GroupItems:f}),t};SetGroup=function(n){SelectedGroup()===n?SelectedGroup(""):SelectedGroup(n)};IsPickupGrouped=ko.observable(!1);IsDestGrouped=ko.observable(!1);ShowDests=function(){Model.Message("");Pickup.ShowMsg(!1);SelectedGroup("");Model.PickupID()>0?(Pickup.ShowMsg(!1),Dest.ShowMsg(!1),ErrorMessage(""),DestDialog({})):Pickup.ShowMsg(!0)};SetPickup=function(n){Pickup.ShowMsg(!1);Model.PickupID(n.ID);Model.Pickup(n.Stop);n.TypeID===1||n.TypeID===2||n.TypeID===0||n.TypeID===4?Model.PickupTypeID(n.TypeID):Model.PickupTypeID(-1);Model.PickupHotel("Select Hotel");Model.PickupHotelID(0);Model.DestID(0);Model.DestTypeID(-1);Model.Dest("Select Destination...");ErrorMessage("");SelectedGroup("");IsDestGrouped(!1);Model.Destinations([]);Dest.Loading("tmplLoading");$.ajax({type:"GET",dataType:"json",async:!0,url:HostUrl+"Data/GetLocations?locationID="+Model.PickupID()+"&domainID="+DomainID+"&zone="+Zone,success:function(n){Dest.Loading("none");Dests(n);Model.Destinations(n);SetDestinations()},error:function(n){Dest.Loading("none");alert("Unable to load Destinations: "+n)}});PickupDialog(null);switch(Model.PickupTypeID()){case 2:ShowHotels();break;case 1:LoadSuburbs()}};SetDestinations=function(){DestsGroups([]);var n=LocationsGrouped(Model.Destinations().sort(CompareValues));IsDestGrouped(n.length>1);DestsGroups(n)};GetGroupHeader=function(n){return n};CompareValues=function(n,t){var i=n.Stop,r=t.Stop;return i==r?0:i>r?1:-1};SetDest=function(n){if(n.ID>-1){Model.DestID(n.ID);Model.DestTypeID(-1);Model.Dest(n.Stop);DestDialog(null);Dest.ShowMsg(!1);switch(n.TypeID){case 1:LoadSuburbs();break;case 2:ShowHotels()}$.support.cors=!0;$.ajax({type:"GET",dataType:"json",async:!0,url:HostUrl+"Data/GetServiceInfo?pickupID="+Model.PickupID()+"&destID="+Model.DestID(),success:function(n){if(n!==null)if(Model.PickupTypeID(n.PickupTypeID),Model.DestTypeID(n.DestTypeID),n.RtnTerminals!==null){var t=[];ko.utils.arrayForEach(n.RtnTerminals,function(n){t.push(n)});HasReturnTerminalOptions(t.length>0);Model.RtnTerminalID(0);Model.RtnTerminal("");Model.RtnTerminalHeader("Return:");Model.RtnTerminals(t);n.Direction==="outbound"?(Model.RtnTerminalID(Model.DestID()),Model.RtnTerminal(Model.Dest()),Model.RtnTerminalHeader("Returning from:")):(Model.RtnTerminalID(Model.PickupID()),Model.RtnTerminal(Model.Pickup()),Model.RtnTerminalHeader("Returning to:"))}else HasReturnTerminalOptions(!1);else ErrorMessage("Sorry, that Pickup/Destination combination is not available."),Model.DestID(0),Model.DestTypeID(-1),Model.Dest("Select Destination...")},error:function(){ErrorMessage("Sorry, that Pickup/Destination combination is not available.");Model.DestID(0);Model.DestTypeID(-1);Model.Dest("Select Destination...");Model.RtnTerminalHeader("Return:");Model.RtnTerminal("");Model.RtnTerminalID(0)}})}};ShowRtnTerminals=function(){Model.Message("");Model.IsReturn()===!0&&Model.RtnTerminalHeader()==="Returning to:"&&ReturnDialog({})};SetReturnTerminal=function(n){Model.RtnTerminal(n.Stop);Model.RtnTerminalID(n.StopID);ReturnDialog(null)};ShowHotels=function(){Model.Message("");HotelSearchResults("");Hotel.ShowMsg(!1);HotelDialog({});$("#inputHotelFilter").focus();Hotels([]);HotelFilter("")};SetHotel=function(n){n.HotelID>0&&(HotelDialog(null),Model.PickupHotelID(n.HotelID),Model.PickupHotel(n.HotelName));Model.PickupTypeID()===2&&(Model.DestID(0),Model.DestTypeID(-1),Model.Dest("Select Destination..."))};ProceedFromTravel=function(){IsTravelValid()==!0&&(ProcessingDialog({}),ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"Services"}))};IsTravelValid=function(){var n,t,i;return ErrorMessage(""),Model.Message(""),Addr.AddressShowMsg(!1),Addr.SuburbShowMsg(!1),Hotel.ShowMsg(!1),PaxShowMsg(!1),ShowFormInValidMsg(!1),VoucherShowMsg(!1),n=!0,Model.PickupID()>0&&Model.DestID()>0?(t=IsTravelValidHelper(Model.PickupTypeID()),i=IsTravelValidHelper(Model.DestTypeID()),t&&i||(n=!1)):(Pickup.ShowMsg(Model.PickupID()===0),Dest.ShowMsg(Model.DestID()===0),n=!1),Model.Adults()+Model.Children()+Model.Cons()<=0&&(PaxShowMsg(!0),n=!1),Model.Adults()+Model.Cons()==0&Model.Children()>0&&(PaxShowMsg(!0),alert("Children must be accompanied by an adult"),n=!1),n||ShowFormInValidMsg(!0),Model.DomainID==3&&Model.Voucher()===""&&(n=!1,VoucherShowMsg(!0)),n};IsTravelValidHelper=function(n){switch(n){case 1:var t=!0;return Model.Address()===""&&(Addr.AddressShowMsg(!0),t=!1),(Model.AddressStopID()==null||Model.AddressStopID()<=0)&&(Addr.SuburbShowMsg(!0),t=!1),t;case 2:if(Model.PickupHotelID()<=0)return Hotel.ShowMsg(!0),!1;break;case 3:case 4:case 0:return!0;default:return!1}return!0};BackToTravel=function(){Model.Message("");Model.PageIndex(0);SetDestinations();$("html, body").animate({scrollTop:0},"slow")};SetService=function(n){Model.ServiceID(n.ID)};SetRtnService=function(n){Model.RtnServiceID(n.ID)};ShowDatePicker=function(n){$("#"+n).datepicker().focus()};Save=function(){var n=!1;Model.ServiceID()>0?n=!0:(ServiceShowMsg(!0),n=!1);Model.IsReturn()&&(Model.RtnServiceID()>0?n=!0:(RtnServiceShowMsg(!0),n=!1));n&&(IsServiceAtRisk()?ShowAOR({}):SaveToCart())};SaveToCart=function(){ShowAOR(null);ProcessingDialog({});ko.utils.postJson(location.href,{Model:ko.toJS(Model),ActionName:"AddItem"})};IsServiceAtRisk=function(){var t=ko.utils.arrayFilter(Model.FirstServices(),function(n){return n.ID===Model.ServiceID()}),n;return t[0]!=null&&t[0].AOR==!0?!0:Model.IsReturn()==!0&&(n=ko.utils.arrayFilter(Model.ReturnServices(),function(n){return n.ID===Model.RtnServiceID()}),n[0]!=null&&n[0].AOR==!0)?!0:!1};ToggleIsReturn=function(){Model.IsReturn(!Model.IsReturn())};GetGroupID=function(n){return"#"+n.replace(" ","_").replace(" / ","_")},function(){for(var n=0;n<21;n++)PaxNumbers.push(n);Model.Destinations()!=null&&Model.Destinations().length>0&&SetDestinations()}()},ko.bindingHandlers.datepicker={init:function(n,t,i){var r=i().datepickerOptions||{},u=function(){var i=t(),r=$.datepicker.formatDate("dd/mm/yy",$(n).datepicker("getDate"));i(r)};r.onSelect=u;$(n).datepicker(r);ko.utils.registerEventHandler(n,"change",u);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).datepicker("destroy")})},update:function(n,t){var i=ko.utils.unwrapObservable(t());current=$(n).datepicker("getDate");$.datepicker.parseDate("dd/mm/yy",i)-current!=0&&$(n).datepicker("setDate",$.datepicker.parseDate("dd/mm/yy",i))}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.RooPass=function(){return VM=function(n){Model=CXN.Model.CartItemObservable(n);PaxNumbers=ko.observableArray([]),function(){for(var n=0;n<100;n++)PaxNumbers.push(n)}();PassDialog=ko.observable();ProcessingDialog=ko.observable();VoucherShowMsg=ko.observable(!1);Pass={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Nett=ko.computed({read:function(){return"$"+Model.Nett().toFixed(2)},owner:this});Retail=ko.computed({read:function(){return"$"+Model.Retail().toFixed(2)},owner:this});Error=ko.observable("");PaxShowMsg=ko.observable(!1);ShowPasses=function(){PassDialog({})};SetPass=function(n){n.ID>0&&(Model.Pickup(n.Pass),Model.PickupID(n.PickupID),Model.DestID(n.DestID),Model.ServiceID(n.ID),PassDialog(null),Pass.ShowMsg(!1),Error(""))};Proceed=function(){IsProceedValid()&&(ProcessingDialog({}),ko.utils.postJson(document.location.href,{Model:ko.toJS(Model),ActionName:"Services"}))};IsProceedValid=function(){Error("");Pass.ShowMsg(!1);PaxShowMsg(!1);var n=!0;return Model.ServiceID()<=0&&(n=!1,Pass.ShowMsg(!0)),Model.Adults()+Model.Children()<=0&&(PaxShowMsg(!0),n=!1),Model.DomainID==3&&Model.Voucher()===""&&(n=!1,VoucherShowMsg(!0)),n};Save=function(){ProcessingDialog({});ko.utils.postJson(location.href,{Model:ko.toJS(Model),ActionName:"AddItem"})};Edit=function(){Model.Message("");Model.PageIndex(0)}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.Luggage=function(){return VM=function(n,t,i,r,u,f){Model=CXN.Model.CartItemObservable(n);BookingsUrl=t?t:"Luggage";HostUrl=window.location.hostname;GroupAfterNumber=r?r:40;DomainID=u?u:n.DomainID;Zone=ko.observable(f?f:n.DefaultZone);SelectedGroup=ko.observable("");PickupDialog=ko.observable();DestDialog=ko.observable();HotelDialog=ko.observable();SuburbDialog=ko.observable();ProcessingDialog=ko.observable();ShowFormInValidMsg=ko.observable(!1);VoucherShowMsg=ko.observable(!1);ShowLugMsg=ko.observable(!1);SelectedSuburb=ko.observable(null);AlternateStopsDialog=ko.observable();ReturnDialog=ko.observable();ShowAOR=ko.observable(!1);SaveToCart=function(){ShowAOR(null);ProcessingDialog({});CXN.GTM.AddToCart(Model);ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"AddItem"})};Pickup={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Dest={name:ko.observable(null),source:ko.observable(null)};Nett=ko.computed({read:function(){return"$"+Model.Nett().toFixed(2)},owner:this});Retail=ko.computed({read:function(){return"$"+Model.Retail().toFixed(2)},owner:this});Error=ko.observable("");Pickups=ko.observableArray([]);FlightTimeShowMsg=ko.observable(!1);FlightNoShowMsg=ko.observable(!1);ServiceShowMsg=ko.observable(!1);PaxShowMsg=ko.observable(!1);StopMenu=ko.observable("All");GetHostUrl=function(){var n=location.protocol,t=n.concat("//");return t.concat(window.location.hostname+(location.port.toString()!==""?":"+location.port:""))};ServicesGroupByDate=function(n){return CXN.groupBy(n(),function(n){return n.GroupName})};ShowPickups=function(){Model.Message("");Pickup.ShowMsg(!1);Pickups(Model.Pickups);Error("");PickupDialog({})};SetPickup=function(n){Model.Note("");Pickup.ShowMsg(!1);Model.PickupID(n.ID);Model.Pickup(n.Stop);Model.PickupTypeID(n.TypeID);Error("");PickupDialog(null)};ProceedFromTravel=function(){IsTravelValid()==!0&&(ProcessingDialog({}),ko.utils.postJson(BookingsUrl,{Model:ko.toJS(Model),ActionName:"Services"}))};IsTravelValid=function(){Error("");Model.Message("");ShowFormInValidMsg(!1);FlightTimeShowMsg(!1);FlightNoShowMsg(!1);VoucherShowMsg(!1);ShowLugMsg(!1);var n=!0;return Model.DestinationDetails=Dest.data,Model.PickupID()>0&&Dest.IsValid()||(Pickup.ShowMsg(Model.PickupID()===0),n=!1),Model.ExLug()<=0&&(ShowLugMsg(!0),n=!1),(Model.FTHours()==="hour"||Model.FTMins()==="min")&&(n=!1,FlightTimeShowMsg(!0)),n||ShowFormInValidMsg(!0),Model.Voucher()===""&&(n=!1,VoucherShowMsg(!0)),n};IsTravelValidHelper=function(n){switch(n){case 1:var t=!0;return Model.Dest()===""&&(Addr.AddressShowMsg(!0),t=!1),SelectedSuburb()==null?(Addr.SuburbShowMsg(!0),t=!1):(Model.DestStop(SelectedSuburb().Name),Model.DestStopID(SelectedSuburb().ID)),t;case 2:if(Model.DestHotelID()<=0)return Hotel.ShowMsg(!0),!1;break;case 3:case 0:return!0;default:return!1}return!0};Back=function(){Model.Note("");Model.Message("");Model.ServiceID(0);Model.PageIndex(0);$("html, body").animate({scrollTop:0},"slow")};ServiceInfo_Pickup=ko.computed({read:function(){return"Services for "+(VM.IsWharf?"boat ":"flight ")+(Model.PickupTypeID()===0?"arriving: ":"departing: ")+Model.FlightDate()+"&nbsp;"+Model.FTHours().toString()+":"+Model.FTMins().toString()},owner:VM});ServiceInfo_Return=ko.computed({read:function(){return"Services for "+(VM.IsWharf?"boat ":"flight ")+" returning: "+Model.RtnFlightDate()+"&nbsp;"+Model.RtnFTHours().toString()+":"+Model.RtnFTMins().toString()},owner:VM});SetService=function(n){Model.ServiceID(n.ID)};ShowDatePicker=function(n){$("#"+n).datepicker().focus()};Save=function(){var n=!1;Model.ServiceID()>0?n=!0:(ServiceShowMsg(!0),n=!1);n&&(ProcessingDialog({}),ko.utils.postJson(location.href,{Model:ko.toJS(Model),ActionName:"AddItem"}))};GetGroupID=function(n){return"#"+n.replace(" ","_").replace(" / ","_")};GetSourceItem=function(n){return n==null?"fas fa-map-marker-alt":n.indexOf("terminal")>-1?"fas fa-plane":n.indexOf("transit")>-1?"fas fa-exchange-alt":n.indexOf("hotel")>-1?"fas fa-hotel":"fas fa-map-marker-alt"};MapEmbed={Show:ko.observable(null),Name:ko.observable(null),Url:ko.observable(null)};AltModal=function(){var n=this;n.Title=ko.observable(null);n.Modal=ko.observable(null);n.Results=ko.observableArray([]);n.SetItem=function(t){n._setItem(t);n.Modal(null)};n.Close=function(){n._setItem(null);n.Modal(null)};n.Show=function(t,i,r){n.Title(t);n.Results(i);n.Modal({});n._setItem=r;n.View("")};n.View=ko.observable("");n.MapUrl=ko.observable("");n.MapDescription=ko.observable("");n.ShowMap=function(t){n.MapDescription(t.description);n.MapUrl(t.url);n.View("map")};n.HideMap=function(){n.View("")}};MobileModal=function(){var n=this;n.Modal=ko.observable();n.Title=ko.observable("");n.Search=ko.observable("");n.SearchComputed=ko.pureComputed(n.Search).extend({rateLimit:{method:"notifyWhenChangesStop",timeout:500}});n.Clear=function(){n.Search("");n.Focus(!0)};n.Results=ko.observableArray([]);n.Message=ko.observable(null);n.View=ko.observable("");n.Busy=ko.observable(!1);n.Focus=ko.observable(!1);n.SetItem=function(t){n.Message(null);n.Busy(!0);CXN.Model.GetDetails(t,{success:function(t){if(t.result==null){n.Message("Unknown error");return}n.Close();n._setItem(t.result.placeDetail[0])},error:function(t,i,r){n.Message(r)},complete:function(){n.Busy(!1)}})};n.Show=function(t,i,r){n._setItem=r;n.Results([]);n.Title(t);n.Search(i);n.Modal({});n.Message(null);n.Busy(!1);n.Focus(!0)};n.Close=function(){n.Results([]);n.Search("");n.Modal(null)};n.Search.subscribe(function(t){t!==""&&n.Busy(!0)},this);n.SearchComputed.subscribe(function(t){t!==""?(n.Message(null),n.Busy(!0),CXN.Model.AutoComplete(t,{success:function(t){n.Results(t.result.searchResults)},error:function(t,i,r){n.Results([]);n.Message(r)},complete:function(){n.Busy(!1)}})):n.Results([])},this);n.Results.subscribe(function(t){n.View(null);t.length>0?n.View("items"):n.Search().length>0&&n.View("noItems")},this)};StopVM=function(n,t,i,r){var u=this;u.Name=ko.observable(n==null?null:n.description);u.Label=r;u.Source=ko.observable(n==null?null:n.source);u.PlaceHolder=i;u.DelayTime=400;u.ValidMessage=ko.observable(null);u.data=n||{};u.SourceComputed=ko.computed({read:function(){return GetSourceItem(u.Source())},owner:VM});u.MS_Show=function(n,t){($(window).width()<500||$(window).height()<600)&&(MS.Show(u.Label,u.Name()||"",u.SetItem),t.stopPropagation())};u.Valid=ko.observable(null);u.IsValid=function(){return u.Valid(!1),u.ValidMessage(null),u.data==null?u.ValidMessage("Please enter a location"):u.data.precision!=="point"&&(u.ValidMessage("Please include Street number in your search. For assistance, call 1300 952 281"),CXN.GTM.Error(u.data.description)),u.Valid(u.ValidMessage()==null),u.Valid()};u.ShowMap=function(){MapEmbed.Show(null);u.IsValid()&&(MapEmbed.Name(u.Name()),MapEmbed.Url(u.data.url),MapEmbed.Show({}))};u.SetItem=function(n){if(n==null){ALT.Modal(null);u.Name(null);u.Source(null);u.data=null;return}if(n.alt_stops!=null&&n.alt_stops.length>0){var t=u.Label==="Pick-up"?"pick-ups":"destinations",i="These are the available "+t+" for: <\/br> <strong>"+n.description+"<\/strong>";ALT.Show(i,n.alt_stops,u.SetItem)}else ALT.Modal(null),u.Name(n==null?null:n.description),u.Source(n==null?null:n.source),u.data=n,u.IsValid()};u.ShowAlts=function(n){var t=u.Label==="Pick-up"?"pick-up from":"drop-off at",i="We currently don't "+t+":<\/br><strong>"+u.data.description+".<\/strong><\/br/> Here are some locations we can "+t;ALT.Show(i,n,u.SetItem)};u.Status=ko.observable(!1);u.GetDetails=function(n,t){if(u.ValidMessage(null),u.Status("busy"),t.item.data.source=="noresults"){setTimeout(function(){u.SetItem(null)},0);return}CXN.Model.GetDetails(t.item.data,{success:function(n){if(n.result==null){u.ValidMessage("Unknown error");return}u.SetItem(n.result.placeDetail[0])},error:function(){u.ValidMessage("Error: Please try again shortly")},complete:function(){u.Status(null)}})};u.AutoComplete=function(n,t){Model.Note("");Model.Message("");u.ValidMessage(null);u.Status("busy");CXN.Model.AutoComplete(n,{success:function(i){if(i.result==null){u.ValidMessage(i.error);return}if(i.result.searchResults.length>0)t(i.result.searchResults);else{CXN.GTM.Error(n);t([{description:"Sorry, no results found.",source:"noresults"}])}},error:function(){u.ValidMessage("Error: Please try again shortly")},complete:function(){u.Status(null)}})}};ALT=new AltModal;MS=new MobileModal;Dest=new StopVM(Model.DestinationDetails,"Please Enter Destination","Search Airport, hotel, Place or address","Destination")},ko.bindingHandlers.datepicker={init:function(n,t,i){var r=i().datepickerOptions||{},u=function(){var u=t(),i=$.datepicker.formatDate("dd/mm/yy",$(n).datepicker("getDate")),r;u(i);r=$(n).attr("id");r==="FlightDate"&&$.datepicker.parseDate("dd/mm/yy",i)>$.datepicker.parseDate("dd/mm/yy",Model.RtnFlightDate())&&Model.RtnFlightDate(i);r==="RtnflightDate"&&$.datepicker.parseDate("dd/mm/yy",i)<$.datepicker.parseDate("dd/mm/yy",Model.FlightDate())&&Model.FlightDate(i)};r.onSelect=u;$(n).datepicker(r);ko.utils.registerEventHandler(n,"change",u);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).datepicker("destroy")})},update:function(n,t){var i=ko.utils.unwrapObservable(t());current=$(n).datepicker("getDate");$.datepicker.parseDate("dd/mm/yy",i)-current!=0&&$(n).datepicker("setDate",$.datepicker.parseDate("dd/mm/yy",i))}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.CheckoutVM=function(){return VM=function(n,t){Model={Name:ko.observable(n.Name),Phone:ko.observable(n.Phone),Email:ko.observable(n.Email),CCName:ko.observable(n.CCName),CCNumber:"",CCNumberSaved:n.CCNumberSaved,CCExpiryMonth:ko.observable(n.CCExpiryMonth),CCExpiryYear:ko.observable(n.CCExpiryYear),CCType:ko.observable(n.CCType),CVN:ko.observable(n.CVN),SourceID:ko.observable(n.SourceID),Status:ko.observable(n.Status),Message:ko.observable(n.Message),Items:ko.observableArray(n.Items),CCYears:ko.observableArray(n.CCYears),MemberID:ko.observable(n.MemberID),MemberName:ko.observable(n.MemberName),MemberPointsInfo:ko.observable(n.MemberPointsInfo),MemberPointsAsMoney:ko.observable(n.MemberPointsAsMoney),PromoCode:ko.observable(n.PromoCode),HasPromo:ko.observable(n.HasPromo),HasitemsOutsidePass:ko.observable(n.HasitemsOutsidePass),HasPoints:ko.observable(n.HasPoints),UsePoints:ko.observable(n.UsePoints),Sources:ko.observableArray(n.Sources),PaymentOptions:ko.observableArray(n.PaymentOptions),PaymentOption:ko.observable(n.PaymentOption),MemberHasValidCC:ko.observable(n.MemberHasValidCC),UseMemberCC:ko.observable(n.UseMemberCC),DomainID:n.DomainID,XID:"",XType:"",UpSells:ko.observableArray(n.UpSells),UpSellType:n.UpSellType,GTMProducts:n.GTMProducts,NoSurcharge:ko.observable(n.NoSurcharge)};HostUrl=t;Valid={Name:ko.observable(!1),Phone:ko.observable(!1),Email:ko.observable(!1),CCName:ko.observable(!1),CCNumber:ko.observable(!1),CVN:ko.observable(!1),CCExpiryMonth:ko.observable(!1),SourceID:ko.observable(!1),AgreeWithTerms:ko.observable(!1)};CCNumber=ko.observable("");ShowFormInValidMsg=ko.observable(!1);PromoMessage=ko.observable("");UsePoints=ko.computed({read:function(){return Model.UsePoints()},write:function(n){Model.UsePoints(!n)},owner:this});ProcessingDialog=ko.observable();NewCartDialog=ko.observable();MemberDialog=ko.observable();RemoveDialog=ko.observable();CancelDialog=ko.observable();PromoDialog=ko.observable();AddItemDialog=ko.observable();UpSellDialog=ko.observable();AgreeWithTerms=ko.observable(!1);ShowAddItemDialog=function(){AddItemDialog({})};ShowMemberLogin=function(){MemberDialog({})},function(){Model.UpSells().length>0&&UpSellDialog({})}();GetSurcharge=function(){if(Model.NoSurcharge()==!0)return 0;var n=0;if(s=0,ko.utils.arrayForEach(Model.Items(),function(t){n+=t.Nett}),Model.UsePoints())return 0;switch(Model.CCType()){case"Visa":case"Mastercard":case"Amex":return n*.015;case"Diners":return n*.03;case"UNION PAY":return n*.0176;default:return Model.CCType("Visa"),n*.015}return 0};UpSellsPass=ko.computed({read:function(){return ko.utils.arrayFilter(Model.UpSells(),function(n){return n.ProductID==1})},owner:this});UpSellsStandard=ko.computed({read:function(){return ko.utils.arrayFilter(Model.UpSells(),function(n){return n.ProductID!=1})},owner:this});NettTotals=ko.computed({read:function(){var n=0,t;return ko.utils.arrayForEach(Model.Items(),function(t){n+=t.Nett}),t=parseFloat(GetSurcharge()),"$"+(n+t).toFixed(2)},owner:this});SubTotal=ko.computed({read:function(){var n=0;return ko.utils.arrayForEach(Model.Items(),function(t){n+=t.Nett}),"$"+n.toFixed(2)},owner:this});UpdateHasPoints=function(){var n=0,t;ko.utils.arrayForEach(Model.Items(),function(t){n+=t.Nett});t=$("#XMemberPointsAsMoney").length!=0?$("#XMemberPointsAsMoney").val():0;Model.HasPoints(t>=n)};SurchargePriceDisplay=ko.computed({read:function(){var n=parseFloat(GetSurcharge());return"$"+n.toFixed(2)},owner:this});SurchargeDetails=ko.computed({read:function(){switch(Model.CCType()){case"Visa":return"Visa Card Surcharge 1.5%:";case"Mastercard":return"Mastercard Surcharge 1.5%:";case"Amex":return"Amex Card Surcharge 1.5%:";case"Diners":return"Diners Card Surcharge 3%:";case"UNION PAY":return"Union Pay Card Surcharge 1.76%:"}},owner:this});ShowPromo=function(){PromoMessage("");PromoDialog({})};UpSellDecline=function(){UpSellDialog(null);$.ajax({async:!0,url:HostUrl+"CheckoutSurface/DeclineUpSell",type:"POST",headers:{"Content-Type":"application/json","X-HTTP-Method-Override":"POST"},success:function(n){console.log(n)},error:function(){console.log("error")}})};ShowNewCartDialog=function(){NewCartDialog({})};NewCart=function(){NewCartDialog(null);$.ajax({async:!0,url:HostUrl+"CheckoutSurface/NewCart",type:"POST",headers:{"Content-Type":"application/json","X-HTTP-Method-Override":"POST"},success:function(){location.reload()},error:function(){console.log("error")}})};AddPromo=function(){PromoMessage("");Model.PromoCode().length>0?$.ajax({type:"POST",dataType:"json",url:HostUrl+"CheckoutSurface/AddPromo",data:ko.toJS(Model),success:function(n){n.HasPromo&&(Model.HasPromo(n.HasPromo),Model.Items(n.Items),Model.Message(n.Message),Model.NoSurcharge(n.NoSurcharge),PromoDialog(null));PromoMessage(n.Message)},error:function(){alert("Unable apply promo, please refresh the page.")}}):PromoMessage("Please enter a promo code")};Logout=function(){$.ajax({type:"POST",dataType:"json",url:HostUrl+"CheckoutSurface/Logout",success:function(){Model.MemberID();Model.MemberName("");Model.MemberPointsAsMoney(0);Model.MemberPointsInfo("")},error:function(){alert("Error")}})};ShowRemoveItem=function(n){Model.XID=n.Guid;Model.XType=n.Type;RemoveDialog({})};CloseRemoveItem=function(){Model.XID="";Model.XType=""};RemoveItem=function(){$.ajax({type:"POST",dataType:"json",url:HostUrl+"CheckoutSurface/RemoveItem",data:ko.toJS(Model),success:function(n){Model.HasPromo(n.HasPromo);Model.Message(n.Message);Model.Items(n.Items);Model.HasitemsOutsidePass(n.HasitemsOutsidePass);RemoveDialog(null);UpdateHasPoints();Model.NoSurcharge(n.NoSurcharge);Model.PaymentOption(n.PaymentOption)},error:function(){alert("Unable to remove item, please refresh the page.")}})};IsPaxValid=function(){var n=0,t;return(Valid.Name(!1),Valid.Phone(!1),Valid.Email(!1),isEmpty(Model.Name())&&(n++,Valid.Name(!0)),isEmpty(Model.Phone())&&(n++,Valid.Phone(!0)),t=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,isEmpty(Model.Email()))?(n++,Valid.Email(!0),n==0?!0:!1):(Model.Email()==""||t.test(Model.Email())||(n++,Valid.Email(!0)),n==0?!0:(ShowFormInValidMsg(!0),!1))};IsCCValid=function(){var n=0;if(Model.PaymentOption()=="Voucher")return!0;if(Valid.CCName(!1),Valid.CCNumber(!1),Valid.CCExpiryMonth(!1),Valid.CVN(!1),Model.UseMemberCC()!==!0){if(isEmpty(Model.CCName())&&(n++,Valid.CCName(!0)),isEmpty(Model.CVN())&&(n++,Valid.CVN(!0)),Model.CCExpiryMonth()==="0"&&(n++,Valid.CCExpiryMonth(!0)),isEmpty(CCNumber()))return n++,Valid.CCNumber(!0),!1;Model.CCNumber=eCrypt.encryptValue(CCNumber().replace(" ",""))}return n===0?!0:(ShowFormInValidMsg(!0),!1)};isEmpty=function(n){return!n||0===n.length};Cancel=function(){$.ajax({type:"POST",dataType:"json",url:HostUrl+"CheckoutSurface/CancelCart",success:function(){location.reload()},error:function(){}})};GetSavingItemAmount=function(n){return n>0?"Save: $"+n.toFixed(2):""};ShowCancel=function(){CancelDialog({})};Save=function(){ShowFormInValidMsg(!1);Valid.AgreeWithTerms(!1);Model.UsePoints()==!0?IsPaxValid()&&(AgreeWithTerms()!=!0?Valid.AgreeWithTerms(!0):(ProcessingDialog({}),Model.UsePoints=!0,Model.GTMProducts.length>0&&CXN.GTM.Checkout(Model.GTMProducts),ko.utils.postJson(document.location.href,{model:ko.toJS(Model)}))):IsPaxValid()&&IsCCValid()&&(AgreeWithTerms()!=!0?Valid.AgreeWithTerms(!0):(ProcessingDialog({}),Model.GTMProducts.length>0&&CXN.GTM.Checkout(Model.GTMProducts),ko.utils.postJson(document.location.href,{model:ko.toJS(Model)})))};HitUpSellPass=function(n){Model.XID=n.ID;$.ajax({type:"POST",dataType:"json",url:HostUrl+"CheckoutSurface/ConfirmUpsell",data:ko.toJS(Model),success:function(n){Model.Message(n.Message);Model.Items(n.Items);UpSellDialog(null);UpdateHasPoints()},error:function(){alert("Unable apply upsell, please refresh the page.")}})};HitUpSellItem=function(n,t){var i;CXN.UpsellLog("../../api/",n.UpsellID,!0,Model.DomainID);i=insertParam(n.RedirectUrl,"upsellViewID",t.ID);n.DefaultPickupID!=null&&n.DefaultPickupID>0&&(i=insertParam(i,"pickupID",n.DefaultPickupID));location.href=i};HitTPUpsell=function(n){CXN.UpsellLog("../../api/",n,!0,Model.DomainID);var t=insertParam("themepark-transfers?m=Enter your Theme park  transfer details","upsellViewID",d.ID);location.href=t}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.Groupon=function(){return VM=function(){pageview=ko.observable(0);code=ko.observable("");message=ko.observable("");valid=ko.observable(!0);$("#PromoCode").attr({onfocus:"onFocus()"});onFocus=function(){valid(!0);message("")};CheckCode=function(){if(code().length==0){valid(!1);return}$.ajax({type:"POST",contentType:"application/json",dataType:"json",data:ko.toJSON({PromoCode:code()}),url:$("#GroupUrl").val()+"/ConferencesSurface/SubmitPromoJson",success:function(n){n.Status=="OK"&&pageview(1);message(n.Message)},error:function(n,t,i){alert(t+": "+i)}})}},{VM:VM}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.EventsVM=function(){return VM=function(n){Model=CXN.Model.CartItemObservable(n);PaxNumbers=ko.observableArray([]),function(){for(var n=0;n<100;n++)PaxNumbers.push(n)}();EventsDialog=ko.observable();PickupDialog=ko.observable();DestDialog=ko.observable();ProcessingDialog=ko.observable();Event={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Pickup={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Dest={ShowMsg:ko.observable(!1),Loading:ko.observable("none")};Nett=ko.computed({read:function(){return"$"+Model.Nett().toFixed(2)},owner:this});IsOneway=ko.computed({read:function(){return!Model.IsReturn()},write:function(n){Model.IsReturn(!n)},owner:this});Error=ko.observable("");ServiceShowMsg=ko.observable(!1);RtnServiceShowMsg=ko.observable(!1);PaxShowMsg=ko.observable(!1);ClearErrors=function(){Event.ShowMsg(!1);Pickup.ShowMsg(!1);Dest.ShowMsg(!1);Error("");PaxShowMsg(!1);ServiceShowMsg(!1);RtnServiceShowMsg(!1)};ShowEvents=function(){ClearErrors();EventsDialog({})};ShowPickups=function(){ClearErrors();Model.EventID()>0?PickupDialog({}):Event.ShowMsg(!0)};ShowDests=function(){ClearErrors();Model.PickupID()>0?DestDialog({}):Pickup.ShowMsg(!0)};SetEvent=function(n){n.ID>0&&(EventsDialog(null),Model.EventID(n.ID),Model.EventName(n.Stop),ClearErrors(),Model.PickupID(0),Model.Pickup("Select Pick up ..."),Model.EventPickups([]),Pickup.Loading("tmplLoading"),$.ajax({type:"GET",dataType:"json",async:!1,url:"../../api/Data/GetEventPickups?eventID="+Model.EventID(),success:function(n){Pickup.Loading("none");Model.EventPickups(n);ShowPickups()},error:function(n){Pickup.Loading("none");alert("Unable to load Pickups: "+n)}}),EventsDialog(null))};SetPickup=function(n){n.ID>0&&(PickupDialog(null),Model.PickupID(n.ID),Model.Pickup(n.Stop),ClearErrors(),Model.DestID(0),Model.Dest("Select destination..."),Model.Destinations([]),Dest.Loading("tmplLoading"),$.ajax({type:"GET",dataType:"json",async:!1,url:"../../api/Data/GetEventDestinations?eventID="+Model.EventID()+"&pickupID="+Model.PickupID(),success:function(n){Pickup.Loading("none");Model.Destinations(n);ShowDests()},error:function(n){Dest.Loading("none");alert("Unable to load Destinations: "+n)}}),PickupDialog(null))};SetDest=function(n){n.ID>-1&&(Model.DestID(n.ID),Model.DestTypeID(-1),Model.Dest(n.Stop),DestDialog(null),Dest.ShowMsg(!1))};Proceed=function(){IsProceedValid()&&(ProcessingDialog({}),ko.utils.postJson(removeLastSlash(document.location.href),{Model:ko.toJS(Model),ActionName:"Services"}))};IsProceedValid=function(){ClearErrors();var n=!0;return Model.EventID()<=0&&(n=!1,Event.ShowMsg(!0)),Model.PickupID()<=0&&(n=!1,Pickup.ShowMsg(!0)),Model.DestID()<=0&&(n=!1,Dest.ShowMsg(!0)),Model.Adults()<=0&&(PaxShowMsg(!0),n=!1),n};SetService=function(n){Model.ServiceID(n.ID)};SetRtnService=function(n){Model.RtnServiceID(n.ID)};Save=function(){ClearErrors();var n=!1;Model.ServiceID()>0?n=!0:(ServiceShowMsg(!0),n=!1);Model.IsReturn()==!0&&(Model.RtnServiceID()>0?n=!0:(RtnServiceShowMsg(!0),n=!1));n&&(ProcessingDialog({}),ko.utils.postJson(removeLastSlash(document.location.href),{Model:ko.toJS(Model),ActionName:"AddItem"}))};Edit=function(){Model.Message("");Model.ServiceID(0);Model.RtnServiceID(0);Model.PageIndex(0)}},{VM:VM}}