{"version":3,"file":"js_knockout-models_common-models_js.build.js","mappings":"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","sources":["webpack:///./js/knockout-models/common-models.js"],"sourcesContent":["var PriceValueType = {\r\n withoutFlight: \"withoutFlight\",\r\n withFlight: \"withFlight\",\r\n withDirectFlight: \"withDirectFlight\",\r\n totalFees: \"totalFees\",\r\n discount: \"discount\",\r\n};\r\nvar HotelSortingField = {\r\n Name: \"name\",\r\n Price: \"price\",\r\n Stars: \"stars\",\r\n OurClassification: \"OurClassification\",\r\n PriorityScore: \"PriorityScore\",\r\n MetaScore: \"MetaScore\",\r\n TrustYouRating: \"TrustYouRating\"\r\n};\r\nvar PaymentMethodType = {\r\n None: \"\",\r\n Full: \"full\",\r\n Deposit: \"deposit\",\r\n NoDeposit: \"noDeposit\",\r\n BankTransfer: \"bankTransfer\"\r\n};\r\n\r\nvar FilterPricingMode = {\r\n PricePerPerson: \"PricePerPerson\",\r\n TotalPrice: \"TotalPrice\"\r\n};\r\n\r\nvar SearchResultType = {\r\n None: \"\",\r\n Hotel: \"HotelResult\",\r\n Banner: \"Banner\",\r\n};\r\n\r\nvar ConceptCode = {\r\n None: \"N/A\",\r\n Hideaways: \"HW\",\r\n InItalia: \"IN\"\r\n};\r\n\r\nvar SearchDatesOptions = {\r\n DepartureDay: {\r\n // 2019-08-14 Update min DepartureDate: \r\n // * before it was 1day (tomorrow);\r\n // * after this is 2days (day after tomorrow);\r\n Min: 2,\r\n\r\n // 2023-01-03: set \"allow search tomorrow\" if curren time < 15:00 (CET)\r\n getMinDays: function() {\r\n let maxTime = null;\r\n if (AppData && AppData.SearchSettings && AppData.SearchSettings.MaxCurrentTimeUTCToAllowSearchTomorrow) {\r\n let txtMaxTime = AppData.SearchSettings.MaxCurrentTimeUTCToAllowSearchTomorrow;\r\n if (txtMaxTime && txtMaxTime != \"\" && txtMaxTime.toLowerCase() != \"n/a\") {\r\n maxTime = moment.utc(txtMaxTime, [\"H:mm\", \"HH:mm\"]);\r\n }\r\n }\r\n\r\n //let getTime = function (dateTime) {\r\n // return moment({h: dateTime.hours(), m: dateTime.minutes()});\r\n //};\r\n //if (maxTime && getTime(moment().utc()).isBefore(getTime(maxTime), 'minutes')) {\r\n if (maxTime && maxTime.isValid() && moment().utc().isBefore(maxTime, 'minutes')) {\r\n return 1;\r\n } else {\r\n return 2;\r\n }\r\n }\r\n },\r\n TravelDays: {\r\n Min: 1,\r\n Max: 21\r\n }\r\n};\r\n\r\nvar SearchModelType = {\r\n Default: \"Default\",\r\n MultipleResults: \"MultipleResults\",\r\n SingleResults: \"SingleResults\"\r\n};\r\n\r\nvar Child = function (age) {\r\n var self = this;\r\n self.Age = ko.observable(age)/*.extend({ parseInt: false })*/;\r\n};\r\n\r\nvar Room = function (adults, childages, psRoomType, psBoard, psRefundable, priceHash) {\r\n var self = this;\r\n self.Owner = ko.observable(null);\r\n self.RoomIndex = ko.observable(null);\r\n\r\n self.Adults = ko.observable(adults)/*.extend({ parseInt: false })*/;\r\n self.InfantsAndChildrenCount = ko.observable(0);\r\n self.Children = ko.observableArray();\r\n self.PriceHash = ko.observable(priceHash);\r\n //self.Children.subscribe(function (newValue) {\r\n // console.log(\"self.Children: \" + newValue);\r\n //});\r\n\r\n self.Explanation = ko.computed(function () {\r\n var adult = \"a\";\r\n var adults = \"as\";\r\n var child = \"c\";\r\n var children = \"cs\";\r\n if (typeof AppData != \"undefined\") {\r\n adult = AppData.Translations[\"adult\"];\r\n adults = AppData.Translations[\"adults\"];\r\n child = AppData.Translations[\"child\"];\r\n children = AppData.Translations[\"children\"];\r\n }\r\n\r\n var str = \"\";\r\n if (self.Adults() == 1) {\r\n str += \"1 \" + adult;\r\n } else {\r\n str += self.Adults() + \" \" + adults;\r\n }\r\n\r\n if (self.Children().length > 0) {\r\n str += \", \";\r\n if (self.Children().length == 1) {\r\n str += \"1 \" + child;\r\n } else {\r\n str += self.Children().length + \" \" + children;\r\n }\r\n str += \" (\";\r\n str += $.map(self.Children(), function (c) {\r\n return c.Age();\r\n }).join(', ');\r\n\r\n str += ' ' + AppData.Translations[\"years\"] + ')';\r\n }\r\n return str;\r\n });\r\n\r\n self.ChildAges = ko.computed(function () {\r\n if (!self.Children())\r\n return [];\r\n var ages = $.map(self.Children(), function (c) { return c.Age(); });\r\n return ages;\r\n });\r\n\r\n self.InfantCount = ko.computed(function () {\r\n return $.grep(self.ChildAges(), function (ca) { if (ca <= 1 || isNaN(ca)) return true; }).length;\r\n });\r\n\r\n self.ChildrenCount = ko.computed(function () {\r\n return $.grep(self.ChildAges(), function (ca) { if (ca > 1) return true; }).length;\r\n });\r\n\r\n self.ChildAgesString = ko.computed(function () {\r\n var ages = $.map(self.Children(), function (c) { return c.Age(); });\r\n return ages.join(\",\");\r\n });\r\n\r\n self.PersonsCount = ko.computed(function () {\r\n return parseInt(self.Adults()) + self.ChildrenCount() + self.InfantCount();\r\n });\r\n\r\n self.UpdateChildren = function () {\r\n if (self.Children().length > self.InfantsAndChildrenCount()) {\r\n while (self.Children().length > self.InfantsAndChildrenCount()) {\r\n self.Children.pop();\r\n }\r\n } else if (self.Children().length < self.InfantsAndChildrenCount()) {\r\n while (self.Children().length < self.InfantsAndChildrenCount()) {\r\n self.Children.push(new Child());\r\n }\r\n }\r\n };\r\n\r\n self.SetChildrenFromChildAgesArray = function (childages) {\r\n //self.Children([]);\r\n self.Children.removeAll();\r\n $.each(childages, function (i, a) {\r\n //self.Children().push(new Child(a))\r\n self.Children.push(new Child(a))\r\n });\r\n }\r\n self.SetChildrenFromChildAgesArray(childages);\r\n\r\n\r\n // MyTrip only attributes\r\n self.SelectedRoomType = ko.observable(null);\r\n self.AvailableRoomTypes = ko.observableArray(null);\r\n self.Fees = ko.observableArray(null);\r\n self.BasePrice = ko.observableArray(null);\r\n self.BasePricePerPerson = ko.observableArray(null);\r\n self.SelectedBoard = ko.observable(null);\r\n\r\n self.PreSelectedRoomType = ko.observable(psRoomType);\r\n self.PreSelectedBoard = ko.observable(psBoard);\r\n self.PreSelectedRefundable = ko.observable(psRefundable);\r\n self.PreSelectedMeta = ko.observable(false);\r\n\r\n // values of FoundPreSelectedRTBoard: \r\n // * true - found;\r\n // * false - nofound;\r\n // * null - noinfo;\r\n self.FoundPreSelectedRTBoard = ko.observable(null);\r\n\r\n self.HasPreSelectedRTBoard = ko.deferredComputed(function () {\r\n let psrt = self.PreSelectedRoomType();\r\n let psb = self.PreSelectedBoard();\r\n return !!((psrt && psrt >= 0) || (psb && psb != ''));\r\n }); \r\n\r\n self.HasSelectedBoardCancellationPolicyInfo = ko.computed(function () {\r\n if (!self.SelectedBoard())\r\n return false;\r\n\r\n var cpi = self.SelectedBoard().CancellationPolicyInfo;\r\n if (cpi == null)\r\n return false;\r\n\r\n return (cpi.IsRefundable() || cpi.IsDeposit()) && cpi.CancellationDetails() && cpi.CancellationDetails().length > 0\r\n });\r\n\r\n self.SelectDefaultRoomTypeBoard = function (roomOption, onlyFullMatch) {\r\n if (!roomOption)\r\n return -2;\r\n\r\n var flgFoundAllRTB = true;\r\n self.AvailableRoomTypes(roomOption.Rooms());\r\n var defaultRoomType = roomOption.Rooms()[0];\r\n var flgFoundRT = false;\r\n var roomTypeIndex = -1;\r\n if (self.PreSelectedRoomType()) {\r\n $.each(roomOption.Rooms(), function (j, roomType) {\r\n if (roomType.RoomTypeId() == self.PreSelectedRoomType()) {\r\n defaultRoomType = roomType;\r\n flgFoundRT = true;\r\n roomTypeIndex = j;\r\n return false;\r\n }\r\n });\r\n flgFoundAllRTB &= flgFoundRT;\r\n }\r\n //self.SelectedRoomType(defaultRoomType);\r\n\r\n var defaultBoard = defaultRoomType.Boards()[0];\r\n var flgFoundB = false;\r\n if (self.PreSelectedBoard() && flgFoundRT) {\r\n $.each(defaultRoomType.Boards(), function (j, board) {\r\n //if (board.Code().toLowerCase() == self.PreSelectedBoard().toLowerCase() && board.CancellationPolicyInfo.IsRefundable() == self.PreSelectedRefundable()) {\r\n if (board.Code().toLowerCase() == self.PreSelectedBoard().toLowerCase()) {\r\n if (board.CancellationPolicyInfo && board.CancellationPolicyInfo.IsDefined()) {\r\n if (board.CancellationPolicyInfo.IsRefundable() == self.PreSelectedRefundable()) {\r\n defaultBoard = board;\r\n flgFoundB = true;\r\n return false; // break loop\r\n }\r\n } else {\r\n if (self.PreSelectedRefundable()) {\r\n // Refundable choice is required \r\n // but there is not info about CancellationPolicyInfo\r\n return; // continue loop\r\n } else {\r\n // Refundable choice is not required \r\n // and if there is no-info about CancellationPolicyInfo\r\n defaultBoard = board;\r\n flgFoundB = true;\r\n return false; // break loop\r\n }\r\n }\r\n }\r\n });\r\n flgFoundAllRTB &= flgFoundB;\r\n }\r\n //self.SelectedBoard(defaultBoard);\r\n\r\n if (onlyFullMatch && !(flgFoundRT && flgFoundB)) {\r\n // reset selection if something is not found (for example: found PreSelectedBoard and nofound PreSelectedRefundable\r\n roomTypeIndex = -1;\r\n defaultRoomType = roomOption.Rooms()[0];\r\n defaultBoard = defaultRoomType.Boards()[0];\r\n }\r\n self.SelectedRoomType(defaultRoomType);\r\n self.SelectedBoard(defaultBoard);\r\n \r\n if(self.HasPreSelectedRTBoard()) {\r\n self.FoundPreSelectedRTBoard(flgFoundB);\r\n } else {\r\n self.FoundPreSelectedRTBoard(null);\r\n }\r\n\r\n if (!flgFoundB)\r\n roomTypeIndex = -1;\r\n\r\n return roomTypeIndex;\r\n };\r\n\r\n self.SelectedBoardIndex = function () {\r\n var found = null;\r\n if (self.SelectedRoomType()) {\r\n $.each(self.SelectedRoomType().Boards(), function (i, board) {\r\n if (board.Name() == self.SelectedBoard().Name()) {\r\n found = i;\r\n }\r\n\r\n });\r\n }\r\n return found;\r\n };\r\n\r\n self.SelectedBoardToken = function () {\r\n var found = \"\";\r\n if (self.SelectedRoomType()) {\r\n //$.each(self.SelectedRoomType().Boards(), function (i, board) {\r\n // if (board.Name() == self.SelectedBoard().Name()) {\r\n // found = board.ProductToken();\r\n // }\r\n //});\r\n\r\n if (self.SelectedBoard() != null)\r\n found = self.SelectedBoard().ProductToken();\r\n }\r\n return found;\r\n };\r\n\r\n self.SelectedBoardPriceHash = function () {\r\n var found = \"\";\r\n if (self.SelectedRoomType()) {\r\n if (self.SelectedBoard() != null) {\r\n // ??? IsDirectFlight ???\r\n // ??? PriceHashDirect ???\r\n //found = self.SelectedBoard().PriceHash();\r\n if (self.IsDirectFlight()) {\r\n found = self.SelectedBoard().PriceHashDirect();\r\n } else {\r\n found = self.SelectedBoard().PriceHash();\r\n }\r\n }\r\n }\r\n return found;\r\n };\r\n\r\n self.SelectedFees = ko.pureComputed(function () {\r\n var list = [];\r\n\r\n var hotelFees = ko.unwrap(self.Fees);\r\n if (hotelFees && hotelFees.length > 0) {\r\n $.each(hotelFees, function (i, fee) {\r\n list.push(fee);\r\n });\r\n }\r\n\r\n var roomType = self.SelectedRoomType();\r\n if (roomType) {\r\n var roomFees = ko.unwrap(roomType.Fees);\r\n if (roomFees && roomFees.length > 0) {\r\n $.each(roomFees, function (i, fee) {\r\n list.push(fee);\r\n });\r\n }\r\n }\r\n\r\n return list;\r\n });\r\n\r\n\r\n self.RoomTypeUpgradesAvailable = ko.computed(function () {\r\n return $.grep(self.AvailableRoomTypes(), function (roomType) { if (roomType != self.SelectedRoomType()) return roomType });\r\n });\r\n\r\n self.UpdateBasePrices = function (roomOption) {\r\n self.UpdateFees(roomOption);\r\n\r\n if (!roomOption) {\r\n self.BasePrice(null);\r\n self.BasePricePerPerson(null);\r\n return\r\n }\r\n self.BasePrice(roomOption.BasePrice);\r\n self.BasePricePerPerson(roomOption.BasePricePerPerson);\r\n }\r\n self.UpdateFees = function (roomOption) {\r\n if (!roomOption) {\r\n self.Fees(null);\r\n return;\r\n }\r\n self.Fees(ko.unwrap(roomOption.Fees));\r\n }\r\n\r\n self.RoomActualPrice = function (roomType) {\r\n //return round5(roomType.Price.Value());\r\n return roomType.Price.Value();\r\n }\r\n\r\n self.RoomActualPerPersonPrice = function (roomType) {\r\n if (self.RoomActualPrice(roomType) == 0) return 0;\r\n if (typeof myTripSearchViewModel != \"undefined\")\r\n return self.RoomActualPrice(roomType) / myTripSearchViewModel.TotalPersons();\r\n else\r\n return self.RoomActualPrice(roomType) / searchViewModel.TotalPersons();\r\n\r\n }\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.RoomActualPerPersonInRoomPrice = function (roomType) {\r\n // //if (self.RoomActualPrice(roomType) == 0) return 0;\r\n // //if (typeof myTripSearchViewModel != \"undefined\")\r\n // // return self.RoomActualPrice(roomType) / (self.Adults() + self.Children().length);\r\n // //else\r\n // // return self.RoomActualPrice(roomType) / (self.Adults() + self.Children().length);\r\n // if (!roomType.PricePerPerson) return 0;\r\n // return roomType.PricePerPerson.Value();\r\n //}\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.RoomAbsoluteFormattedPrice = function (roomType) {\r\n // var thisPrice = self.RoomActualPrice(roomType);\r\n //\r\n // if (self.SelectedRoomType()) {\r\n // var currentPrice = self.RoomActualPrice(self.SelectedRoomType());\r\n // return FormatPrice(thisPrice - currentPrice);\r\n // } else {\r\n // return FormatPrice(thisPrice);\r\n // }\r\n //};\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.RoomAbsoluteFormattedPerPersonPrice = function (roomType) {\r\n // var thisPrice = self.RoomActualPerPersonInRoomPrice(roomType);\r\n //\r\n // if (self.SelectedRoomType()) {\r\n // var currentPrice = self.RoomActualPerPersonInRoomPrice(self.SelectedRoomType());\r\n // return FormatPrice(thisPrice - currentPrice, true);\r\n // } else {\r\n // return FormatPrice(thisPrice, true);\r\n // }\r\n //}\r\n\r\n self.SelectRoomType = function (roomType) {\r\n self.SelectedRoomType(roomType);\r\n self.SelectBoard(roomType.Boards()[0]);\r\n }\r\n\r\n self.SelectBoard = function (roomType, board) {\r\n self.SelectedRoomType(roomType);\r\n self.SelectedBoard(board);\r\n }\r\n\r\n //--------------\r\n self.getSelectedCombination = function() {\r\n let owner = self.Owner();\r\n if (owner && typeof owner.SelectedCombination != \"undefined\") {\r\n return ko.unwrap(owner.SelectedCombination);\r\n }\r\n\r\n // FIXME !!! fix legacy script :: myTripSearchViewModel.SelectedCombination\r\n if (typeof myTripSearchViewModel != \"undefined\")\r\n return ko.unwrap(myTripSearchViewModel.SelectedCombination);\r\n \r\n if (typeof searchViewModel != \"undefined\")\r\n return ko.unwrap(searchViewModel.SelectedCombination);\r\n \r\n return null;\r\n };\r\n\r\n self.IsDirectFlight = function () {\r\n let owner = self.Owner();\r\n if (!owner) {\r\n return false;\r\n }\r\n\r\n if (owner.HotelOnly()) {\r\n return false;\r\n }\r\n\r\n let selectedCombination = self.getSelectedCombination();\r\n if (!selectedCombination) {\r\n return false;\r\n }\r\n\r\n // version of searchViewModel\r\n if (typeof owner.IsDirectFlight != \"undefined\") {\r\n let isDirectFlight = owner.IsDirectFlight();\r\n return isDirectFlight;\r\n }\r\n //myTripSearchViewModel\r\n // since 2024-05-13 - fix choice PriceHash or PriceHashDirect by selected DirectFlight on SearchPage\r\n if (typeof owner.PriceHashFlightStops != \"undefined\") {\r\n var selectedFlightStops = owner.PriceHashFlightStops().map(Number);\r\n return selectedFlightStops.indexOf(0) != -1;\r\n }\r\n return false;\r\n\r\n // before 2024-05-13\r\n //if (typeof owner.SelectedMaxNoOfStops != \"undefined\") {\r\n // var selectedFlightStops = owner.SelectedMaxNoOfStops().map(Number);\r\n // return selectedFlightStops.indexOf(0) != -1;\r\n //}\r\n //\r\n //// defined by selected combination\r\n //let numberOfStops = selectedCombination.NumberOfStops();\r\n //return numberOfStops == 0;\r\n }\r\n\r\n self.RoomPriceBreakdown = ko.deferredComputed(function(){\r\n let owner = self.Owner();\r\n if (!owner) {\r\n return 0;\r\n }\r\n\r\n if (owner.HotelOnly()) {\r\n return 0;\r\n }\r\n\r\n let selectedCombination = self.getSelectedCombination();\r\n if (!selectedCombination) {\r\n return 0;\r\n }\r\n\r\n let roomIndex = parseInt(ko.unwrap(self.RoomIndex));\r\n if (isNaN(roomIndex) || roomIndex < 0) {\r\n return 0;\r\n }\r\n\r\n let priceBreakdown = selectedCombination.getHotelRoomPriceBreakdown(self.RoomIndex());\r\n //console.log('>>> Room['+roomIndex+'].priceBreakdown: ', priceBreakdown);\r\n return priceBreakdown;\r\n });\r\n\r\n self.RoomFeesActualPrice = function (roomType) {\r\n var totalFees = 0;\r\n var hotelFees = ko.unwrap(self.Fees);\r\n if (hotelFees && hotelFees.length > 0) {\r\n var arr = $.map(hotelFees, function (fee) {\r\n return fee.Price.Value();\r\n });\r\n totalFees += $.sum(arr);\r\n }\r\n if (roomType) {\r\n var roomFees = ko.unwrap(roomType.Fees);\r\n if (roomFees && roomFees.length > 0) {\r\n var arr = $.map(roomFees, function (fee) {\r\n return fee.Price.Value();\r\n });\r\n totalFees += $.sum(arr);\r\n }\r\n }\r\n return totalFees;\r\n }\r\n\r\n self.RTBoardActualPrice = function (roomType, board) {\r\n //RoomTypeWithBoard Price\r\n //2017-03-03 Simple price calculation (not relative)\r\n //return roomType.Price.Value() + board.Price.Value();\r\n var price = 0;\r\n if (self.BasePrice() && roomType.Price && board.Price) {\r\n price = self.BasePrice().Value() + roomType.Price.Value() + board.Price.Value() + self.RoomFeesActualPrice(roomType);\r\n }\r\n\r\n // let selectedCombination = self.getSelectedCombination();\r\n // let roomIndex = parseInt(ko.unwrap(self.RoomIndex));\r\n // if (selectedCombination && !isNaN(roomIndex) && roomIndex >= 0) {\r\n // let priceBreakdown = selectedCombination.getHotelRoomPriceBreakdown(self.RoomIndex());\r\n // console.log('>>> Room['+roomIndex+'].priceBreakdown: ', priceBreakdown);\r\n // price += priceBreakdown;\r\n // }\r\n price += self.RoomPriceBreakdown();\r\n\r\n return price;\r\n }\r\n\r\n self.RTBoardActualPerPersonPrice = function (roomType, board) {\r\n //RoomTypeWithBoard Price\r\n //2017-03-03 Simple price calculation (not relative)\r\n //if (self.RTBoardActualPrice(roomType, board) == 0) return 0;\r\n //if (typeof myTripSearchViewModel != \"undefined\")\r\n // return self.RTBoardActualPrice(roomType, board) / myTripSearchViewModel.TotalPersons();\r\n //else\r\n // return self.RTBoardActualPrice(roomType, board) / searchViewModel.TotalPersons();\r\n\r\n var persons = self.PersonsCount();\r\n if (persons == 0)\r\n return 0;\r\n\r\n var price = self.RTBoardActualPrice(roomType, board);\r\n price = price / persons;\r\n return price;\r\n }\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.RTBoardActualPerPersonInRoomPrice = function (roomType, board) {\r\n // var price = 0;\r\n //\r\n // if (roomType && roomType.PricePerPerson)\r\n // price += roomType.PricePerPerson.Value();\r\n //\r\n // if (board && board.PricePerPerson)\r\n // price += board.PricePerPerson.Value();\r\n //\r\n // return price;\r\n //}\r\n\r\n self.RTBoardAbsoluteFormattedPrice = function (roomType, board) {\r\n var thisPrice = self.RTBoardActualPrice(roomType, board);\r\n //2017-03-03 Simple price calculation (not relative)\r\n //if (self.SelectedRoomType() && self.SelectedBoard()) {\r\n // var currentPrice = self.RTBoardActualPrice(self.SelectedRoomType(), self.SelectedBoard());\r\n // return FormatPrice(thisPrice - currentPrice);\r\n //} else {\r\n // return FormatPrice(thisPrice);\r\n //}\r\n return FormatTotalPrice(thisPrice, AppData.FormatPrice.WithoutCurrency);\r\n }\r\n\r\n self.RTBoardAbsoluteFormattedPerPersonPrice = function (roomType, board) {\r\n //2017-03-03 Simple price calculation (not relative)\r\n //var thisPrice = self.RTBoardActualPerPersonInRoomPrice(roomType, board);\r\n //if (self.SelectedRoomType() && self.SelectedBoard()) {\r\n // var currentPrice = self.RTBoardActualPerPersonInRoomPrice(self.SelectedRoomType(), self.SelectedBoard());\r\n // return FormatPrice(thisPrice - currentPrice, true);\r\n //} else {\r\n // return FormatPrice(thisPrice, true);\r\n //}\r\n var thisPrice = self.RTBoardActualPerPersonPrice(roomType, board);\r\n return FormatTotalPrice(thisPrice, AppData.FormatPrice.WithoutCurrency);\r\n }\r\n\r\n //------------\r\n\r\n\r\n self.BoardActualPrice = function (board) {\r\n //return round5(board.Price.Value());\r\n return board.Price.Value();\r\n }\r\n\r\n self.BoardActualPerPersonPrice = function (board) {\r\n if (self.BoardActualPrice(board) == 0) return 0;\r\n if (typeof myTripSearchViewModel != \"undefined\")\r\n return self.BoardActualPrice(board) / myTripSearchViewModel.TotalPersons();\r\n else\r\n return self.BoardActualPrice(board) / searchViewModel.TotalPersons();\r\n }\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.BoardActualPerPersonInRoomPrice = function (board) {\r\n // //if (self.BoardActualPrice(board) == 0) return 0;\r\n // //if (typeof myTripSearchViewModel != \"undefined\")\r\n // // return self.BoardActualPrice(board) / (self.Adults() + self.Children().length);\r\n // //else\r\n // // return self.BoardActualPrice(board) / (self.Adults() + self.Children().length);\r\n // if (!board.PricePerPerson) return 0;\r\n // return board.PricePerPerson.Value();\r\n //}\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.BoardAbsoluteFormattedPrice = function (board) {\r\n // var thisPrice = self.BoardActualPrice(board);\r\n // if (self.SelectedBoard()) {\r\n // var currentPrice = self.BoardActualPrice(self.SelectedBoard());\r\n // return FormatPrice(thisPrice - currentPrice);\r\n // } else {\r\n // return FormatPrice(thisPrice);\r\n // }\r\n //}\r\n\r\n //2017-03-03 Simple price calculation (not relative)\r\n //self.BoardAbsoluteFormattedPerPersonPrice = function (board) {\r\n // var thisPrice = self.BoardActualPerPersonInRoomPrice(board);\r\n // if (self.SelectedBoard()) {\r\n // var currentPrice = self.BoardActualPerPersonInRoomPrice(self.SelectedBoard());\r\n // return FormatPrice(thisPrice - currentPrice, true);\r\n // } else {\r\n // return FormatPrice(thisPrice, true);\r\n // }\r\n //}\r\n\r\n self.ToggleRoomTypeDetails = function (roomType, event) {\r\n if (!roomType) return;\r\n if (!roomType.ImageURL() && !roomType.Description()) return;\r\n\r\n var parent = $(event.target).parents('.room:first').find('.roomdetails').slideToggle(500);\r\n }\r\n\r\n self.HasRoomTypeDetails = function (roomType) {\r\n if (!roomType)\r\n return false;\r\n\r\n var img = ko.unwrap(roomType.ImageURL);\r\n var desc = ko.unwrap(roomType.Description);\r\n var hasImage = img && img != '' && img.length > 0;\r\n var hasDescription = desc && desc != '' && desc.length > 0;\r\n return hasImage || hasDescription;\r\n };\r\n\r\n self.IsFromTrivago = function (board, boardType) {\r\n if (self.PreSelectedRoomType() == boardType && board) {\r\n\r\n //if (self.SelectedBoard() == board && self.PreSelectedBoard() == board.Code()) {\r\n if (board.Code().toLowerCase() == self.PreSelectedBoard().toLowerCase()) {\r\n if (board.CancellationPolicyInfo && board.CancellationPolicyInfo.IsDefined()) {\r\n if (board.CancellationPolicyInfo.IsRefundable() == self.PreSelectedRefundable()) {\r\n if (self.PreSelectedMeta()) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n \r\n //}\r\n }\r\n };\r\n \r\n\r\n self.SelectedBoardCSS = function (index, board) {\r\n var css = (index + 1) % 2 == 0 ? 'even' : 'odd';\r\n if (index != 0) {\r\n css += \" with-top-divider\";\r\n }\r\n if (board) {\r\n if (board.OnRequestOnly()) {\r\n css += ' onrequest-only';\r\n }\r\n\r\n if (self.SelectedBoard()) {\r\n if (self.SelectedBoard() == board) {\r\n css += ' current';\r\n }\r\n }\r\n }\r\n return css;\r\n }\r\n\r\n //self.IsFromTrivago = function () {\r\n // var isTrivago = false;\r\n // var selectedBoardCss = self.SelectedBoardCSS();\r\n // if (selectedBoardCss.indexOf(\"current\")) {\r\n // isTrivago = true;\r\n // }\r\n // return self.SelectedBoardCSS();\r\n //}\r\n\r\n //self.RoomFromTrivago = ko.computed(function () {\r\n // if (self.IsFromTrivago) {\r\n // var arr = JSON.parse($.cookie(\"ttfc\"));\r\n // var selfElement = { \"rt\": self.SelectedRoomType., \"rb\": self.SelectedBoard, \"ref\": self. };\r\n // for (var i = 0; i < arr.length; i++) {\r\n // if(arr[i] == )\r\n // }\r\n // return \r\n // }\r\n //})\r\n\r\n self.SelectedRoomTypeCSS = function (index, roomType) {\r\n //var css = (index + 1) % 2 == 0 ? 'even' : 'odd';\r\n var css = \"\";\r\n if (self.SelectedRoomType() && roomType) {\r\n if (self.SelectedRoomType() == roomType) {\r\n css += ' current';\r\n }\r\n }\r\n return css;\r\n }\r\n\r\n self.InitSubscribers = function () {\r\n self.InfantsAndChildrenCount.subscribe(function () {\r\n self.UpdateChildren();\r\n }, self);\r\n };\r\n self.InitSubscribers();\r\n};\r\n\r\nvar WeekDayViewModel = function (data) {\r\n var self = this;\r\n\r\n self.Id = ko.observable(-1);\r\n self.Name = ko.observable(\"\");\r\n\r\n self.UpdateWithData = function (data) {\r\n ko.mapping.fromJS(data, {}, self);\r\n };\r\n\r\n if (typeof data != \"undefined\") {\r\n self.UpdateWithData(data);\r\n }\r\n};\r\nWeekDayViewModel.mapping = {\r\n key: function (data) {\r\n return ko.unwrap(data.Id);\r\n },\r\n create: function (options) {\r\n var item = new WeekDayViewModel(options.data);\r\n return item;\r\n },\r\n update: function (options) {\r\n options.target.UpdateWithData(options.data);\r\n return options.target;\r\n }\r\n};\r\n\r\n\r\nvar SearchResultBannerViewModel = function (data) {\r\n var self = this;\r\n\r\n self.Id = ko.observable(-1);\r\n self.Name = ko.observable('');\r\n self.BreakpointMin = ko.observable(-1);\r\n self.BreakpointMax = ko.observable(-1);\r\n self.ImageUrl = ko.observable('');\r\n self.ClickAction = ko.observable('');\r\n self.LinkUrl = ko.observable('');\r\n self.Position = ko.observable(0);\r\n\r\n self.UpdateWithData = function (data) {\r\n ko.mapping.fromJS(data, {}, self);\r\n };\r\n\r\n if (typeof data != \"undefined\") {\r\n self.UpdateWithData(data);\r\n }\r\n\r\n self.BannerLabel = ko.computed(function () {\r\n return 'Position ' + self.Position();\r\n });\r\n self.BannerAction = ko.computed(function () {\r\n return self.Name();\r\n });\r\n\r\n self.TemplateName = ko.computed(function () {\r\n let templateName = '';\r\n let clickAction = self.ClickAction();\r\n switch (clickAction) {\r\n case 'link':\r\n templateName = 'search-result-banner-link-template';\r\n break;\r\n case 'selectflight':\r\n templateName = 'search-result-banner-selectflight-template';\r\n break;\r\n default:\r\n //templateName = '';\r\n break;\r\n }\r\n return templateName;\r\n });\r\n}\r\nexport { PriceValueType, HotelSortingField, PaymentMethodType, FilterPricingMode, ConceptCode, Child, Room, WeekDayViewModel, SearchDatesOptions, SearchModelType, SearchResultBannerViewModel }"],"names":["PriceValueType","withoutFlight","withFlight","withDirectFlight","totalFees","discount","HotelSortingField","Name","Price","Stars","OurClassification","PriorityScore","MetaScore","TrustYouRating","PaymentMethodType","None","Full","Deposit","NoDeposit","BankTransfer","FilterPricingMode","PricePerPerson","TotalPrice","ConceptCode","Hideaways","InItalia","SearchDatesOptions","DepartureDay","Min","getMinDays","maxTime","AppData","SearchSettings","MaxCurrentTimeUTCToAllowSearchTomorrow","txtMaxTime","toLowerCase","moment","utc","isValid","isBefore","TravelDays","Max","SearchModelType","Default","MultipleResults","SingleResults","Child","age","this","Age","ko","observable","Room","adults","childages","psRoomType","psBoard","psRefundable","priceHash","self","Owner","RoomIndex","Adults","InfantsAndChildrenCount","Children","observableArray","PriceHash","Explanation","computed","adult","child","children","Translations","str","length","_mapInstanceProperty","$","call","c","join","ChildAges","InfantCount","grep","ca","isNaN","ChildrenCount","ChildAgesString","PersonsCount","_parseInt","UpdateChildren","pop","push","SetChildrenFromChildAgesArray","removeAll","each","i","a","SelectedRoomType","AvailableRoomTypes","Fees","BasePrice","BasePricePerPerson","SelectedBoard","PreSelectedRoomType","PreSelectedBoard","PreSelectedRefundable","PreSelectedMeta","FoundPreSelectedRTBoard","HasPreSelectedRTBoard","deferredComputed","psrt","psb","HasSelectedBoardCancellationPolicyInfo","cpi","CancellationPolicyInfo","IsRefundable","IsDeposit","CancellationDetails","SelectDefaultRoomTypeBoard","roomOption","onlyFullMatch","Rooms","defaultRoomType","flgFoundRT","roomTypeIndex","j","roomType","RoomTypeId","defaultBoard","Boards","flgFoundB","board","Code","IsDefined","SelectedBoardIndex","found","SelectedBoardToken","ProductToken","SelectedBoardPriceHash","IsDirectFlight","PriceHashDirect","SelectedFees","pureComputed","list","hotelFees","unwrap","fee","roomFees","RoomTypeUpgradesAvailable","UpdateBasePrices","UpdateFees","RoomActualPrice","Value","RoomActualPerPersonPrice","myTripSearchViewModel","TotalPersons","searchViewModel","SelectRoomType","SelectBoard","getSelectedCombination","owner","SelectedCombination","HotelOnly","PriceHashFlightStops","_context","selectedFlightStops","Number","_indexOfInstanceProperty","RoomPriceBreakdown","selectedCombination","roomIndex","getHotelRoomPriceBreakdown","RoomFeesActualPrice","arr","sum","RTBoardActualPrice","price","RTBoardActualPerPersonPrice","persons","RTBoardAbsoluteFormattedPrice","thisPrice","FormatTotalPrice","FormatPrice","WithoutCurrency","RTBoardAbsoluteFormattedPerPersonPrice","BoardActualPrice","BoardActualPerPersonPrice","ToggleRoomTypeDetails","event","_context2","ImageURL","Description","_findInstanceProperty","target","parents","slideToggle","HasRoomTypeDetails","img","desc","hasImage","hasDescription","IsFromTrivago","boardType","SelectedBoardCSS","index","css","OnRequestOnly","SelectedRoomTypeCSS","InitSubscribers","subscribe","WeekDayViewModel","data","Id","UpdateWithData","mapping","fromJS","key","create","options","update","SearchResultBannerViewModel","BreakpointMin","BreakpointMax","ImageUrl","ClickAction","LinkUrl","Position","BannerLabel","BannerAction","TemplateName","templateName"],"sourceRoot":""}