CXN.createNS("CXN.ViewModels");CXN.ViewModels.StopSelectorVM=function(n,t,i,r){function f(t,i){var r=this;r.Title=ko.observable(t);r.ID=0;r.Items=ko.observable([]);r.Zones=ko.observable([]);r.Zone=ko.observable(i);r.ZoneLocation=ko.observable(null);r.ShowZones=ko.observable(!0);r.StopItems=ko.observable([]);r.Stop=ko.observable("");r.SelectedItem=ko.observable(null);r.Loading=ko.observable("none");r.ShowManualAddress=ko.observable(!1);r.StopItemsGroup=ko.observable("");r.SetStopItemsGroup=function(n){setTimeout(function(){if(n.Items.length==1){var t=n.Items[0];if(t.TypeID==1||t.TypeID==2){r.SetItem(t);return}}r.StopItemsGroup(r.StopItemsGroup()===n.GroupName?"":n.GroupName)},0)};r.AddItems=function(n){var u,t,i;if(n!==undefined){for(u=0;u<n.length;u++)t=n[u],i="Transit Stops / Wharfs",t.TypeID===1&&(i="Private Address"),t.TypeID===2&&(i="Hotels"),t.TypeID===0&&(i="Airports"),t.StopType=i;r.Items(n);r.Zones(CXN.groupBy(n,function(n){return n.Zone}));r.Zones().length===1&&r.SetZone(r.Zones()[0].GroupName)}};r.SetZoneByUrlID=function(n){var t=ko.utils.arrayFilter(Model.Zones(),function(t){return t.UrlID.toString().toLowerCase()===n.toString().toLowerCase()});t.length>0?r.SetZone(t[0].ZoneName):r.ShowZones(!0)};r.SetZone=function(t){var u=ko.utils.arrayFilter(r.Zones(),function(n){return n.GroupName===t}),i;u.length>0?(r.Zone(t),i=ko.utils.arrayFilter(n.Zones(),function(n){return n.ZoneName===t}),i.length>0&&(r.ZoneLocation({lat:i[0].lat,lng:i[0].lng,accuracy:500,state:i[0].state}),r.State(i[0].state),r.manualGPS=i[0].manualGPS),r.ShowZones(!1),r.SelectedItem(null),r.UpdateItems()):r.ShowZones(!0)};r.UpdateItems=function(){var n=r.Items();r.Zone()!==undefined&&r.Zone()!==null&&(n=ko.utils.arrayFilter(n,function(n){return n.Zone===r.Zone()}));n.length==1&&r.SetItem(n[0]);r.StopItemsGroup(null);n=CXN.groupBy(n,function(n){return n.StopType});n.length==1&&r.StopItemsGroup(n[0].GroupName);r.StopItems(n)};r.SetItem=function(n){return r.ID=n.ID,r.SelectedItem({ID:ko.observable(n.ID),Stop:ko.observable(n.Stop),TypeID:ko.observable(n.TypeID)}),n.TypeID===1?(Model.AlternateStops=[],ko.utils.arrayForEach(r.Items(),function(n){n.Zone==r.Zone()&n.StopType.indexOf("Transit")>-1&&Model.AlternateStops.push(n)}),r.LoadSuburbs()):n.TypeID!==2?(r.Stop(n.Stop),r.Next()):(r.Hotels([]),r.HotelFilter(""),r.HotelSearchResults("")),!1};r.Next=function(){u.View()==="pickup"?(u.Error(""),r.IsLoading(!0),$.ajax({type:"GET",dataType:"json",async:!0,url:GetHostUrl()+"/api/Data/GetLocations?locationID="+u.Pickup.ID+"&domainID="+u.domainID,success:function(n){r.IsLoading(!1);u.Dest.Reset();u.Dest.AddItems(n);u.View("dest")},error:function(n){r.IsLoading(!1);alert("Unable to load Destinations: "+n)}})):u.View("pax")};r.Reset=function(){r.ID=0;r.Stop("");r.Address("");r.Suburbs([]);r.AddressStop("Select Suburb...");r.AddressStopID(0);r.AddressLocation(null);r.AddressMsg(null);r.AddressRequiredMsg(null);r.CityMsg(null);r.StateMsg(null);r.SuburbShowMsg(!1);r.ShowManualAddress(!1);r.Hotel("");r.HotelID(0);r.Hotels([]);r.HotelFilter("");r.HotelSearchResults("");r.ShowZones(!0);r.Zone(null);r.SelectedItem(null);r.UpdateItems()};r.UnitNo=ko.observable("");r.Suburbs=ko.observableArray([]);r.SelectedSuburb=ko.observable(null);r.AddressLocation=ko.observable(null);r.AddressStop=ko.observable("Select Suburb...");r.AddressStopID=ko.observable(0);r.AddressMsg=ko.observable(null);r.AddressRequiredMsg=ko.observable(null);r.CityMsg=ko.observable(null);r.StateMsg=ko.observable(null);r.SuburbShowMsg=ko.observable(!1);r.EnableSuburb=ko.computed({read:function(){return r.AddressLocation()==null},owner:this});r.mAddress=ko.observable("");r.Hotel=ko.observable("");r.HotelID=ko.observable(0);r.Hotels=ko.observableArray([]);r.HotelFilter=ko.observable("");r.HotelSearchResults=ko.observable("");r.SearchHotels=function(){r.HotelFilter().length>1?(r.IsLoading(!0),$.ajax({dataType:"json",url:GetHostUrl()+"/api/Data/GetHotels?searchText="+r.HotelFilter()+"&pickupID="+u.Pickup.ID+"&destID="+u.Dest.ID}).then(function(n){var t=[];ko.utils.arrayForEach(n,function(n){t.push({HotelID:n.HotelID,HotelName:n.HotelName})});r.HotelSearchResults(t.length.toString()+" Hotels found. "+(t.length>0?"Please Select.":""));r.Hotels(t);r.IsLoading(!1)})):(HotelSearchResults("Please enter at least the first 2 characters of the hotel name or address"),Hotels([]),r.IsLoading(!1))};r.IsLoading=function(n){r.Loading(n?"tmplLoading":"none")};r.SelectAddress=function(n,t){var i,s,f,o,h,e;if(r.AddressMsg(null),r.AddressRequiredMsg(null),r.CityMsg(null),r.StateMsg(null),r.AddressLocation(null),r.AddressStopID(0),i={},s={subpremise:"short_name",premise:"short_name",street_number:"short_name",route:"long_name",locality:"long_name",administrative_area_level_1:"short_name"},n.address_components&&n.address_components!==null){for(f=0;f<n.address_components.length;f++)o=n.address_components[f].types[0],i[o]=n.address_components[f][s[o]];if(i.locality!==undefined){if(h=function(){var t=ko.utils.arrayFilter(["lodging"],function(t){return n.types.indexOf(t)!=-1}).length>0,r=ko.utils.arrayFilter(["subpremise","premise","street_address"],function(t){return n.types.indexOf(t)!=-1}).length>0,u=ko.utils.arrayFilter(["establishment","bus_station","train_station ","school","airport","park","transit_station","point_of_interest"],function(t){return n.types.indexOf(t)!=-1}).length>0,f;if(t||r||u){if(t)return i.street_number!==undefined?n.name+" , "+i.street_number+" "+i.route:n.name;if(r)return f=i.subpremise!==undefined?i.subpremise+"/":"",f+i.street_number+" "+i.route;if(u)return n.name}return""},i.address=h(),i.address!=="")i.name=i.address+", "+i.locality;else{r.AddressMsg("Please enter a valid street address.");return}e=n.geometry.location;r.AddressLocation({lat:e.lat(),lng:e.lng()});$.ajax({dataType:"json",url:GetHostUrl()+"/api/Data/GetServicableSuburb?lat="+e.lat()+"&lng="+e.lng()+"&pickupID="+u.Pickup.ID+"&destID="+u.Dest.ID+"&address="+i.name+"&domainID="+u.domainID+"&manual="+r.ShowManualAddress()}).then(function(u){if(r.IsLoading(!1),u.ID>0){r.Address(i.address);r.City(i.locality);r.Address(i.address);r.AddressStop(u.Stop);r.AddressStopID(u.ID);r.mAddress(n.formatted_address);r.Stop(n.formatted_address);var f=n.geometry.location;r.AddressLocation({lat:f.lat(),lng:f.lng()});t!==undefined&&t!==null&&r.Next()}else r.AddressMsg(u.Stop)})}else{r.AddressMsg("Valid street address required. If your having trouble entering your address please contact Con-x-ion on 1300 266 946");return}}else r.AddressMsg("Error: Please try again")};r.Address=ko.observable("");r.City=ko.observable("");r.State=ko.observable("");r.SetAddress=function(){if(r.AddressMsg(null),r.AddressRequiredMsg(null),r.CityMsg(null),r.StateMsg(null),r.SuburbShowMsg(null),r.ShowManualAddress()){if(r.AddressLocation(null),r.Address().length<=0){r.AddressRequiredMsg("Please Enter Address");return}if(r.manualGPS==1){if(r.City().length<=0){r.CityMsg("Please Enter City");return}if(r.State().length<=0){r.StateMsg("Please Enter State");return}r.IsLoading(!0);var n=r.Address()+", "+r.City()+", "+r.State(),t=new google.maps.Geocoder;t.geocode({address:n,componentRestrictions:{country:"AU"}},function(t,i){i==="OK"&&t.length>0?r.SelectAddress(t[0],!0):(r.IsLoading(!1),r.AddressMsg("Sorry, we could not find that address. If your having trouble entering your address please contact Con-x-ion on 1300 266 946"),$.ajax({dataType:"json",url:GetHostUrl()+"/api/Data/GetServicableSuburb?lat=0&lng=0&pickupID="+u.Pickup.ID+"&destID="+u.Dest.ID+"&address="+n+"&domainID="+u.domainID+"&manual="+r.ShowManualAddress()}))})}else{if(r.SelectedSuburb()==null){r.SuburbShowMsg("Please select suburb");return}r.AddressStop(r.SelectedSuburb().Name);r.AddressStopID(r.SelectedSuburb().ID);r.Stop(r.Address()+", "+r.SelectedSuburb().Name);r.Next()}}else{if(r.AddressStopID()<=0){r.SuburbShowMsg("Please enter a valid address");return}r.Next()}};r.SetHotel=function(n){n.HotelID>0&&(r.AddressLocation(null),r.Stop(n.HotelName),r.Hotel(n.HotelName),r.HotelID(n.HotelID),r.Next())};r.LoadSuburbs=function(){r.AddressMsg(null);r.AddressRequiredMsg(null);r.CityMsg(null);r.StateMsg(null);r.SuburbShowMsg(!1);r.Address("");r.IsLoading(!0);r.Suburbs([]);$.ajax({dataType:"json",async:!0,url:GetHostUrl()+"/api/Data/GetSuburbs?pickupID="+u.Pickup.ID+"&destID="+u.Dest.ID}).then(function(n){var t=[];ko.utils.arrayForEach(n,function(n){t.push({ID:n.ID,Name:n.Name})});r.Suburbs(t);r.IsLoading(!1)})}}var u=this;Model=n;u.onComplete=r;u.Error=t;u.Dialog=ko.observable(null);u.View=ko.observable("");u.PickupShowMsg=ko.observable(!1);u.DestShowMsg=ko.observable(!1);u.Pickup=new f("Select Pick-up...",Model.DefaultZone||null);u.Dest=new f("Select Destination...",null);u.ShowPickup=function(){if(u.PickupShowMsg(!1),u.DestShowMsg(!1),u.Dialog({}),Model.Message(""),u.View("pickup"),u.Error(""),u.Pickup.AddItems(Model.Pickups),u.Pickup.Reset(),u.Dest.Reset(),Model.PickupID()>0){u.Pickup.Stop(Model.Pickup());u.Pickup.ID=Model.PickupID();u.Pickup.Address(Model.Address());u.Pickup.AddressStop(Model.AddressStop());u.Pickup.AddressStopID(Model.AddressStopID());u.Pickup.AddressLocation(Model.AddressLocation());u.Pickup.Hotel(Model.Hotel());u.Pickup.HotelID(Model.HotelID());switch(Model.PickupTypeID()){case 1:u.Pickup.Stop(u.Pickup.Address()+", "+u.Pickup.AddressStop());break;case 2:u.Pickup.Stop(Model.Hotel())}}Model.DefaultZone!==undefined&&Model.DefaultZone!=null&&Model.DefaultZone.length>0&&u.Pickup.SetZoneByUrlID(Model.DefaultZone);u.SetModal()};u.ShowDest=function(){if(Model.PickupID()<=0){u.PickupShowMsg(!0);return}u.ShowPickup();u.Pickup.Next()};u.SetModal=function(){$(window).width()>769?$(".modal-dialog").css({height:"auto"}):$(".modal-dialog").css({height:"100%"})};u.ReSelectPickup=function(){u.View("pickup");u.Dest.Reset();u.Pickup.Reset()};u.ReSelectDest=function(){u.View("dest");u.Dest.Reset()};u.GetGroupHeader=function(n){return n};u.SaveAndClose=function(){$.ajax({type:"GET",dataType:"json",async:!1,url:GetHostUrl()+"/api/Data/GetServiceInfo?pickupID="+u.Pickup.ID+"&destID="+u.Dest.ID,success:function(n){if(n!==null)if(Model.IsMulti(!1),Model.Note(""),Model.Pickup(u.Pickup.Stop()),Model.PickupID(u.Pickup.ID),Model.PickupTypeID(n.PickupTypeID),Model.Dest(u.Dest.Stop()),Model.DestID(u.Dest.ID),Model.DestTypeID(n.DestTypeID),n.RouteStopID>0)Model.IsMulti(!0),Model.IsReturn(!1),Model.RouteStopID(n.RouteStopID),Model.Address(u.Pickup.Address()),Model.AddressLocation=u.Pickup.AddressLocation(),Model.AddressStop(u.Pickup.AddressStop()),Model.AddressStopID(u.Pickup.AddressStopID()),Model.Hotel(u.Pickup.Hotel()),Model.HotelID(u.Pickup.HotelID()),Model.Address2(u.Dest.Address()),Model.Address2Location(u.Dest.AddressLocation()),Model.Address2Stop(u.Dest.AddressStop()),Model.Address2StopID(u.Dest.AddressStopID()),Model.Hotel2(u.Dest.Hotel()),Model.Hotel2ID(u.Dest.HotelID());else{switch(n.PickupTypeID){case 1:case 2:Model.Address(u.Pickup.Address());Model.AddressStop(u.Pickup.AddressStop());Model.AddressStopID(u.Pickup.AddressStopID());Model.Hotel(u.Pickup.Hotel());Model.HotelID(u.Pickup.HotelID());Model.AddressLocation=u.Pickup.AddressLocation()}switch(n.DestTypeID){case 1:case 2:Model.Address(u.Dest.Address());Model.AddressStop(u.Dest.AddressStop());Model.AddressStopID(u.Dest.AddressStopID());Model.Hotel(u.Dest.Hotel());Model.HotelID(u.Dest.HotelID());Model.AddressLocation=u.Dest.AddressLocation()}if(n.RtnTerminals!==null){var t=[];ko.utils.arrayForEach(n.RtnTerminals,function(n){t.push({ID:n.StopID,Stop:n.Stop})});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:"))}}},error:function(){u.View("pickup");u.Error("Sorry, that Pickup/Destination combination is not available.")}});u.Dialog(null);u.onComplete()}};CXN.createNS("CXN.ViewModels");CXN.ViewModels.Airport=function(){return VM=function(n,t,i,r,u,f){Model=CXN.Model.CartItemObservable(n);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);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});ToMoney=function(n){return"$"+n.toFixed(2)};SetProduct=function(n,t){n!==null&&IsOneway(n);Model.TravelClass(t)};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(){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:""))};ChkFlightNumber=function(n){Addr.AddressShowMsg(!1);Addr.SuburbShowMsg(!1);Addr.Loading("tmplLoading");ProcessingDialog({});$.ajax({dataType:"json",async:!0,url:GetHostUrl()+"/api/Data/ChkFlightNumber?flightNumber="+n,success:function(n){n!==null&&(ChkFlightInfo(n),ChkFlightNumberDialog({}))},complete:function(){ProcessingDialog(null)}})};ProceedFromWidget=function(){IsTravelValid()==!0&&(ProcessingDialog({}),Model.UserFirstSelectedOneway(!Model.IsReturn()),ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"widgit"}))};ProceedFromPriceCalc=function(){IsTravelValid()==!0&&(ProcessingDialog({}),Model.UserFirstSelectedOneway(!Model.IsReturn()),ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"priceCalculator"}))};ProceedFromTravel=function(){IsTravelValid()==!0&&(ko.toJS(Model),Model.UserFirstSelectedOneway(!Model.IsReturn()),IsWithinLuggage(null),GetRate())};GetRate=function(){ProcessingDialog({});ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"widgit"})};IsTravelValid=function(){Error("");Model.Message("");PaxShowMsg(!1);StopSelector.PickupShowMsg(!1);StopSelector.DestShowMsg(!1);ShowFormInValidMsg(!1);FlightTimeShowMsg(!1);FlightNoShowMsg(!1);RtnFlightTimeShowMsg(!1);RtnFlightNoShowMsg(!1);VoucherShowMsg(!1);var n=!0;return Model.PickupID()>0&&Model.DestID()>0?n=!0:(StopSelector.PickupShowMsg(Model.PickupID()===0),StopSelector.DestShowMsg(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};ProceedFromFlight=function(){Error("");Model.Message("");FlightTimeShowMsg(!1);FlightNoShowMsg(!1);RtnFlightTimeShowMsg(!1);RtnFlightNoShowMsg(!1);ShowLugMsg(!1);ShowLugOptionsMsg(!1);var n=!0;Model.IsMulti()||TerminalTypeID()===4||((Model.FTHours()==="hour"||Model.FTMins()==="min")&&(n=!1,FlightTimeShowMsg(!0)),IsWharf()||Model.FlightInfo()!==""||(n=!1,FlightNoShowMsg(!0)),Model.IsReturn()&&((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.ProductSelectionStep2(Model),ko.utils.postJson(BookingsAirportUrl,{Model:ko.toJS(Model),ActionName:"Services"}))};BackToTravel=function(){window.location.hash="0";Model.TravelClass(0);Model.Note("");Model.Message("");Model.PageIndex(0);$("html, body").animate({scrollTop:0},"slow")};SetAlternate=function(n){AlternateStopsDialog(null);Model.PickupTypeID()==1?(Model.Pickup(n.Stop),Model.PickupID(n.ID),Model.PickupTypeID(n.TypeID)):(Model.Dest(n.Stop),Model.DestID(n.ID),Model.DestTypeID(n.TypeID));ProceedFromTravel()};AlternateStops=ko.observableArray([]);ShowAlternateStops=function(n){AlternateStopsDialog(null);AlternateStops(n);AlternateStopsDialog(!0)};BackToFlight=function(){Model.Note("");Model.Message("");Model.ServiceID(0);Model.RtnServiceID(0);Model.PageIndex(1);$("html, body").animate({scrollTop:0},"slow")};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?Model.Pickup():Model.Dest()};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(Model.Pickup()+Model.Dest()).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?n=!0:(RtnServiceShowMsg(!0),n=!1));n&&(IsServiceAtRisk()?ShowAOR({}):SaveToCart())};SaveToCart=function(){ShowAOR(null);ProcessingDialog({});Model.GTM_Product=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(" / ","_")};StopSelector=new CXN.ViewModels.StopSelectorVM(Model,Error,DomainID,ProceedFromTravel),function(){for(var t,i,r,u,n=0;n<21;n++)PaxNumbers.push(n);t=getParameterByName("pickupID");t!=""&&(i=ko.utils.arrayFilter(Model.Pickups,function(n){return n.ID.toString()===t}),i[0]!=null&&SetPickup(i[0]));r=getParameterByName("m");r!=""&&Model.Note(r);u=0;CXN.GTM.ProductImpressionsStep2(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}}