{"version":3,"file":"widgets-module.chunk.js","mappings":"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","sources":["webpack:///./js/utils/analytics.js","webpack:///./js/widgets/widgetHotelThemesBoxes.js","webpack:///./js/widgets/widgetMoreItems.js","webpack:///./js/widgets/widgetSlickSlider.js"],"sourcesContent":["//import { type } from 'jquery';\r\nimport * as gl from 'Utils/global';\r\nimport { PriceValueType, FilterPricingMode, ConceptCode } from 'KM/common-models';\r\nimport moment from 'moment';\r\nimport CryptoJS from 'crypto-js';\r\n//import sjcl from 'sjcl';\r\n\r\n\r\nlet ItemCategoryType = {\r\n\r\n // AnalyticsBookingItem\r\n Hotel: \"HOTEL\",\r\n Flight: \"FLIGHT\",\r\n Car: \"CAR\",\r\n Transfer: \"TRANSFER\",\r\n CancellationProtection: \"CXL\",\r\n\r\n //Hideaways analytics implementation\r\n HotelOnly: \"HOTEL ONLY\",\r\n HotelWithFlight: \"HOTEL+FLIGHT\"\r\n\r\n};\r\n\r\n// ***********************************************\r\nfunction getPageItemListId() {\r\n if (!AppData.GoogleAnalytics) return undefined;\r\n if (!AppData.GoogleAnalytics.Tracking) return undefined;\r\n if (!AppData.GoogleAnalytics.Tracking.item_list_id) return undefined;\r\n return AppData.GoogleAnalytics.Tracking.item_list_id;\r\n};\r\nfunction getPageItemListName() {\r\n if (!AppData.GoogleAnalytics) return undefined;\r\n if (!AppData.GoogleAnalytics.Tracking) return undefined;\r\n if (!AppData.GoogleAnalytics.Tracking.item_list_name) return undefined;\r\n return AppData.GoogleAnalytics.Tracking.item_list_name;\r\n};\r\n\r\nfunction getItemlistFromQueryString() {\r\n let item_list_id = gl.getParameterByName('dl_ili');\r\n let item_list_name = gl.getParameterByName('dl_iln');\r\n \r\n return {\r\n item_list_id: item_list_id,\r\n item_list_name: item_list_name,\r\n };\r\n};\r\n\r\nfunction getItemList() {\r\n let item_list_id = gl.getCookieItemListId();\r\n let item_list_name = gl.getCookieItemListName();\r\n\r\n if (!item_list_id || item_list_id == '') {\r\n item_list_id = getPageItemListId();\r\n }\r\n\r\n if (!item_list_name || item_list_name == '') {\r\n item_list_name = getPageItemListName();\r\n }\r\n\r\n let itemList = getItemlistFromQueryString();\r\n if (itemList) {\r\n if (itemList.item_list_id && itemList.item_list_id != '') {\r\n item_list_id = itemList.item_list_id;\r\n }\r\n\r\n if (itemList.item_list_name && itemList.item_list_name != '') {\r\n item_list_name = itemList.item_list_name;\r\n }\r\n }\r\n\r\n return {\r\n item_list_id: item_list_id,\r\n item_list_name: item_list_name,\r\n };\r\n};\r\nfunction setItemList(obj) {\r\n let item_list_id = undefined;\r\n let item_list_name = undefined;\r\n\r\n if (obj) {\r\n item_list_id = obj.item_list_id;\r\n item_list_name = obj.item_list_name;\r\n }\r\n\r\n gl.setCookieItemListId(item_list_id);\r\n gl.setCookieItemListName(item_list_name);\r\n};\r\n\r\nfunction updateItemListFromAppData() {\r\n setItemList({\r\n item_list_id: getPageItemListId(),\r\n item_list_name: getPageItemListName(),\r\n });\r\n};\r\n// ***********************************************\r\n\r\nfunction hash(string) {\r\n if (!string || string == '') return '';\r\n /*\r\n // Ups this return Promise. The KO is not ready to use Promise's (or async/await) chains\r\n const utf8 = new TextEncoder().encode(string);\r\n return crypto.subtle.digest('SHA-256', utf8).then((hashBuffer) => {\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n const hashHex = hashArray\r\n .map((bytes) => bytes.toString(16).padStart(2, '0'))\r\n .join('');\r\n return hashHex;\r\n });\r\n */\r\n\r\n // Compute the SHA-256 hash of a string\r\n let hashValue = CryptoJS.SHA256(string);\r\n // Get the hexadecimal hash value\r\n let hashHex = hashValue.toString(CryptoJS.enc.Hex);\r\n\r\n\r\n //// Compute the SHA-256 hash of a string\r\n //let hashValue1 = sjcl.hash.sha256.hash(string);\r\n //// Get the hexadecimal hash value\r\n //let hashHex1 = sjcl.codec.hex.fromBits(hashValue1);\r\n\r\n //console.log('>>> hash result:', {\r\n // text: string,\r\n // hash_CryptoJS: hashHex,\r\n // hash_sjcl: hashHex1\r\n //});\r\n\r\n\r\n return hashHex;\r\n};\r\n\r\nfunction checkDataLayer() {\r\n if (!global.dataLayer) {\r\n global.dataLayer = [];\r\n }\r\n};\r\n\r\nfunction getPriceModel(hotel, isDirectFlight) {\r\n let priceTotal = ko.unwrap(hotel.PriceTotal);\r\n let price = priceTotal ? ko.unwrap(priceTotal.Value) : 0;\r\n let currency = priceTotal ? ko.unwrap(priceTotal.Currency) : '';\r\n\r\n if (isDirectFlight && typeof hotel.PriceTotalByType == 'function') {\r\n priceTotal = hotel.PriceTotalByType(PriceValueType.withDirectFlight);\r\n if (priceTotal) {\r\n price = ko.unwrap(priceTotal.Value);\r\n } else {\r\n price = 0;\r\n }\r\n }\r\n \r\n if ((!currency || currency == '') && AppData.Currency) {\r\n currency = AppData.Currency.Code\r\n }\r\n\r\n return {\r\n value: price,\r\n currency: currency\r\n };\r\n};\r\n\r\nfunction createHotelItem(hotel, itemList) {\r\n let concept = ko.unwrap(hotel.Concept);\r\n let conceptName = (concept && ConceptCode.Hideaways == ko.unwrap(concept.Code)) ? ko.unwrap(concept.Name) : '';\r\n\r\n let price = getPriceModel(hotel, ko.unwrap(itemList.IsDirectFlight)).value;\r\n\r\n let hotelOnly = ko.unwrap(itemList.HotelOnly);\r\n let category = ItemCategoryType.Hotel;\r\n if (!hotelOnly) {\r\n category = ItemCategoryType.HotelWithFlight;\r\n }\r\n\r\n let txtArrivalDate = '';\r\n let arrivalDate = ko.unwrap(hotel.ArrivalDate);\r\n if (arrivalDate) {\r\n txtArrivalDate = moment(arrivalDate).format(\"MMMM YYYY\");\r\n }\r\n \r\n let destinationName = ko.unwrap(itemList.DestinationName);\r\n if (!destinationName || destinationName == '') {\r\n destinationName = ko.unwrap(hotel.DestinationName);\r\n }\r\n\r\n let item = {\r\n item_id: ko.unwrap(hotel.Id),\r\n item_name: ko.unwrap(hotel.Name),\r\n //affiliation: \"Google Merchandise Store\",\r\n //coupon: \"SUMMER_FUN\",\r\n //discount: 2.22,\r\n //index: 0,\r\n item_brand: conceptName,\r\n item_category: category, //same as purchase\r\n item_category2: ko.unwrap(itemList.DepartureAirportCode),\r\n item_category3: txtArrivalDate,\r\n item_category4: destinationName,\r\n item_category5: ko.unwrap(itemList.TotalPersons),\r\n item_list_id: ko.unwrap(itemList.id),\r\n item_list_name: ko.unwrap(itemList.name),\r\n //item_variant: \"green\",\r\n //location_id: \"ChIJIQBpAG2ahYAR_6128GcTUEo\",\r\n price: price,\r\n quantity: 1\r\n };\r\n return item;\r\n};\r\n\r\nfunction createProductItem(product, itemList) {\r\n let id = ko.unwrap(product.Id);\r\n let code = ko.unwrap(product.Code);\r\n if (typeof id == \"undefined\" && typeof code != \"undefined\") {\r\n id = code;\r\n }\r\n let price = ko.unwrap(product.PriceTotal).Value;\r\n let item = {\r\n item_id: id,\r\n item_name: ko.unwrap(product.Name),\r\n //affiliation: \"Google Merchandise Store\",\r\n //coupon: \"SUMMER_FUN\",\r\n //discount: 2.22,\r\n //index: 0,\r\n //item_brand: conceptName,\r\n item_category: ko.unwrap(product.Category), //same as purchase\r\n item_list_id: ko.unwrap(itemList.id),\r\n item_list_name: ko.unwrap(itemList.name),\r\n //item_variant: \"green\",\r\n //location_id: \"ChIJIQBpAG2ahYAR_6128GcTUEo\",\r\n price: price,\r\n quantity: 1\r\n };\r\n return item;\r\n};\r\n\r\nfunction createProductItems(products, itemList) {\r\n let items = products.map(function (product, index) {\r\n let category = ko.unwrap(product.Category);\r\n let arr = [\r\n ItemCategoryType.Hotel,\r\n ItemCategoryType.HotelOnly,\r\n ItemCategoryType.HotelWithFlight\r\n ];\r\n let is_hotel = arr.includes(category);\r\n let item = is_hotel ? createHotelItem(product, itemList) : createProductItem(product, itemList);\r\n if (is_hotel) {\r\n item.index = index;\r\n }\r\n return item;\r\n });\r\n return items;\r\n};\r\n\r\nfunction createAccomodationItem(room, itemList) {\r\n let hotel = ko.unwrap(itemList.Hotel);\r\n let concept = ko.unwrap(hotel.Concept);\r\n let conceptName = (concept && ConceptCode.Hideaways == ko.unwrap(concept.Code)) ? ko.unwrap(concept.Name) : '';\r\n\r\n/* Uses get_selectedAccomodation_item definitions\r\n Hotel: {\r\n Id: hotel.Id(),\r\n Name: hotel.Name(),\r\n Concept: hotel.Concept(),\r\n ArrivalDate: hotel.ArrivalDate(),\r\n DepartureDate: hotel.DepartureDate(),\r\n }\r\n Room: {\r\n // RoomType properties\r\n RoomTypeId: selectedRoomType.RoomTypeId(),\r\n RoomName: selectedRoomType.RoomName(),\r\n RoomToken: selectedRoomType.RoomToken(),\r\n // Board properties\r\n ProductToken: selectedBoard.ProductToken(),\r\n BoardCode: selectedBoard.Code(),\r\n BoardName: selectedBoard.Name(),\r\n RoomCode: selectedBoard.RoomCode(), \r\n // - - -\r\n PriceTotal: {\r\n Value: price,\r\n Currency: AppData.Currency.Code\r\n }\r\n }\r\n*/\r\n let ids = [\r\n ko.unwrap(hotel.Id),\r\n ko.unwrap(room.RoomTypeId),\r\n ko.unwrap(room.BoardCode)\r\n ];\r\n let id = ids.join('~');\r\n\r\n let name = ko.unwrap(room.RoomName) + ' - ' + ko.unwrap(room.BoardName);\r\n\r\n let price = ko.unwrap(room.PriceTotal).Value;\r\n let item = {\r\n item_id: id,\r\n item_name: name,\r\n item_brand: conceptName,\r\n // item_category: ko.unwrap(room.Category),\r\n // item_category2: '',\r\n // item_category3: '',\r\n // item_category4: '',\r\n // item_category5: '',\r\n hotel_id: ko.unwrap(hotel.Id),\r\n hotel_name: ko.unwrap(hotel.Name),\r\n room_type_id: ko.unwrap(room.RoomTypeId),\r\n room_type: ko.unwrap(room.RoomName),\r\n meal_code: ko.unwrap(room.BoardCode),\r\n meal_details: ko.unwrap(room.BoardName),\r\n //item_list_id: ko.unwrap(itemList.id),\r\n //item_list_name: ko.unwrap(itemList.name),\r\n price: price,\r\n quantity: 1\r\n };\r\n return item;\r\n};\r\n\r\nfunction createFlightItem(flight, itemList) {\r\n let hotel = ko.unwrap(itemList.Hotel);\r\n let concept = ko.unwrap(hotel.Concept);\r\n let conceptName = (concept && ConceptCode.Hideaways == ko.unwrap(concept.Code)) ? ko.unwrap(concept.Name) : '';\r\n\r\n/* Uses get_selectedFlight_item definitions\r\n Flight: {\r\n FlightCombinationCode: fc_code,\r\n Legs: legs,\r\n FlightLuggageMode: self.SelectedFlightLuggageMode(),\r\n }\r\n FlightLeg: {\r\n Origin: leg.Origin(),\r\n Destination: leg.Destination(),\r\n Carrier: leg.Carrier(),\r\n FlightStops: leg_flights.length - 1,\r\n Flights: $.map(leg_flights, function (f, fIndex) { return ko.toJS(f) }),\r\n }\r\n FlightItem example: {\r\n ArrivalTime: \"2025-05-12T20:45:00\"\r\n Carrier: \"D8\"\r\n DepartureTime: \"2025-05-12T18:10:00\"\r\n Destination: \"FCO\"\r\n DestinationTerminal: \"FCO\"\r\n FlightNumber: \"D83732\"\r\n FlightTime: 155\r\n Luggage: {Type: '', Measure: '', Quantity: 0, Weight: 0}\r\n Origin: \"CPH\"\r\n OriginTerminal: \"CPH\"\r\n } \r\n*/\r\n\r\n let get_flight_type = function (leg) {\r\n let flightStops = ko.unwrap(leg.FlightStops);\r\n let flightType = 'direct';\r\n if (flightStops === 0) {\r\n flightType = 'direct';\r\n } else if (flightStops == 1) {\r\n flightType = '1_stop';\r\n } else if (flightStops > 1) {\r\n flightType = flightStops + '_stops';\r\n } else {\r\n flightType = 'unknown';\r\n }\r\n return flightType;\r\n };\r\n\r\n let legOutbound = ko.unwrap(flight.Legs[0]);\r\n let legReturn = ko.unwrap(flight.Legs[1]);\r\n let flightLuggageMode = ko.unwrap(flight.FlightLuggageMode);\r\n\r\n let item = {\r\n item_id:'FC_' + ko.unwrap(flight.FlightCombinationCode) + (flightLuggageMode === 1 ? '_FL_true': ''),\r\n item_name: 'Flight combination ' + ko.unwrap(flight.FlightCombinationCode) + (flightLuggageMode === 1 ? ' - with extra luggage': ''),\r\n item_brand: conceptName,\r\n\r\n outbound_flight_type: get_flight_type(legOutbound),\r\n outbound_flight_airline: ko.unwrap(legOutbound.Carrier),\r\n return_flight_type: get_flight_type(legReturn),\r\n return_flight_airline: ko.unwrap(legReturn.Carrier),\r\n extra_luggage: flightLuggageMode === 1,\r\n //price: price,\r\n quantity: 1\r\n };\r\n return item;\r\n};\r\n\r\nfunction createAccomodationItems(rooms, itemList) {\r\n let items = rooms.map(function (room, index) {\r\n //let category = ko.unwrap(room.Category);\r\n let item = createAccomodationItem(room, itemList);\r\n item.index = index;\r\n return item;\r\n });\r\n return items;\r\n};\r\n\r\nfunction createFlightItems(flights, itemList) {\r\n let items = flights.map(function (flight, index) {\r\n //let category = ko.unwrap(flight.Category);\r\n let item = createFlightItem(flight, itemList);\r\n item.index = index;\r\n return item;\r\n });\r\n return items;\r\n};\r\n\r\nfunction trackViewItemList(hotelResults, itemList) {\r\n checkDataLayer();\r\n\r\n let items = hotelResults.map(function (hotel, index) {\r\n let item = createHotelItem(hotel, itemList);\r\n item.index = index;\r\n return item;\r\n });\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"view_item_list\",\r\n ecommerce: {\r\n item_list_id: ko.unwrap(itemList.id),\r\n item_list_name: ko.unwrap(itemList.name),\r\n items: items\r\n }\r\n });\r\n\r\n};\r\n\r\nfunction trackViewItem(hotelResult, itemList) {\r\n checkDataLayer();\r\n\r\n let item = createHotelItem(hotelResult, itemList);\r\n item.index = 0;\r\n //item.price = ko.unwrap(itemList.TotalPrice);\r\n\r\n let base_price = getPriceModel(hotelResult, ko.unwrap(itemList.IsDirectFlight));\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"view_item\",\r\n ecommerce: {\r\n currency: base_price.currency,\r\n value: base_price.value,\r\n items: [ item ]\r\n }\r\n });\r\n\r\n};\r\n\r\n// function trackViewCart(products, itemList) {\r\n// checkDataLayer();\r\n//\r\n// let items = createProductItems(products, itemList);\r\n//\r\n// let currency = AppData.Currency.Code;\r\n// let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n//\r\n// dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n// dataLayer.push({\r\n// event: \"view_cart\",\r\n// ecommerce: {\r\n// currency: currency,\r\n// value: totalPrice,\r\n// items: items\r\n// }\r\n// });\r\n//\r\n// };\r\n\r\nfunction trackAddToCart(products, itemList) {\r\n checkDataLayer();\r\n\r\n let items = createProductItems(products, itemList);\r\n\r\n let currency = AppData.Currency.Code;\r\n let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"add_to_cart\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n //coupon: \"SUMMER_FUN\",\r\n items: items\r\n }\r\n });\r\n\r\n};\r\n\r\nfunction trackRemoveFromCart(products, itemList) {\r\n checkDataLayer();\r\n\r\n let items = createProductItems(products, itemList);\r\n\r\n let currency = AppData.Currency.Code;\r\n let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"remove_from_cart\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n //coupon: \"SUMMER_FUN\",\r\n items: items\r\n }\r\n });\r\n\r\n};\r\n\r\nfunction trackBeginCheckout(products, itemList) {\r\n checkDataLayer();\r\n\r\n let items = createProductItems(products, itemList);\r\n\r\n let currency = AppData.Currency.Code;\r\n let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"begin_checkout\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n //coupon: \"SUMMER_FUN\",\r\n items: items\r\n }\r\n });\r\n\r\n};\r\n\r\n// function trackAddShippingInfo(products, itemList) {\r\n// checkDataLayer();\r\n//\r\n// let items = createProductItems(products, itemList);\r\n//\r\n// let currency = AppData.Currency.Code;\r\n// let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n// let user_data = ko.unwrap(itemList.user_data);\r\n//\r\n// dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n// dataLayer.push({\r\n// event: \"add_shipping_info\",\r\n// ecommerce: {\r\n// currency: currency,\r\n// value: totalPrice,\r\n// //coupon: \"SUMMER_FUN\",\r\n// //shipping_tier: \"Ground\",\r\n// items: items,\r\n// },\r\n// user_data: user_data\r\n// });\r\n//\r\n// };\r\n\r\nfunction trackAddPaymentInfo(products, itemList) {\r\n checkDataLayer();\r\n\r\n let items = createProductItems(products, itemList);\r\n\r\n let currency = AppData.Currency.Code;\r\n let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n let user_data = ko.unwrap(itemList.user_data);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"add_payment_info\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n //coupon: \"SUMMER_FUN\",\r\n payment_type: \"Credit Card\",\r\n items: items\r\n },\r\n user_data: user_data\r\n });\r\n\r\n};\r\n\r\n\r\nfunction trackNewsletterSignup() {\r\n checkDataLayer();\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"newsletter_signup\",\r\n });\r\n\r\n};\r\n\r\nfunction trackChooseAccommodation(rooms, itemList) {\r\n checkDataLayer();\r\n\r\n let items = createAccomodationItems(rooms, itemList);\r\n\r\n //let currency = AppData.Currency.Code;\r\n //let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n //let user_data = ko.unwrap(itemList.user_data);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"choose_accomodation\",\r\n items: items\r\n //user_data: user_data\r\n });\r\n};\r\n\r\nfunction trackChooseFlight(flights, itemList) {\r\n checkDataLayer();\r\n\r\n let items = createFlightItems(flights, itemList);\r\n\r\n //let currency = AppData.Currency.Code;\r\n //let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n //let user_data = ko.unwrap(itemList.user_data);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"choose_flight\",\r\n items: items\r\n //user_data: user_data\r\n });\r\n};\r\n\r\nfunction trackChooseTransport(transport, itemList) {\r\n checkDataLayer();\r\n\r\n let transportMode = ko.unwrap(transport.TransportMode);\r\n let transport_details = '';\r\n switch (transportMode) {\r\n case 1: // Car\r\n transport_details = 'car';\r\n break;\r\n case 2: // Transfer\r\n transport_details = 'transfer';\r\n break;\r\n case 0: // No\r\n transport_details = 'own_transport';\r\n break;\r\n default:\r\n transport_details = 'Unknown';\r\n break;\r\n };\r\n\r\n //let currency = AppData.Currency.Code;\r\n //let totalPrice = ko.unwrap(itemList.TotalPrice);\r\n //let user_data = ko.unwrap(itemList.user_data);\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"choose_transport\",\r\n transport_details: transport_details,\r\n //user_data: user_data\r\n });\r\n};\r\n\r\nfunction trackPersonalInformation() {\r\n checkDataLayer();\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"personal_information\",\r\n });\r\n\r\n};\r\n\r\nfunction trackApprove() {\r\n checkDataLayer();\r\n\r\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n dataLayer.push({\r\n event: \"approve\",\r\n });\r\n\r\n};\r\n\r\nexport {\r\n ItemCategoryType,\r\n getItemList, setItemList, updateItemListFromAppData,\r\n hash,\r\n trackViewItemList, trackViewItem,\r\n //trackViewCart, \r\n trackAddToCart, trackRemoveFromCart,\r\n trackBeginCheckout,\r\n //trackAddShippingInfo,\r\n trackAddPaymentInfo,\r\n trackNewsletterSignup,\r\n trackChooseAccommodation,\r\n trackChooseFlight,\r\n trackChooseTransport,\r\n trackPersonalInformation,\r\n trackApprove,\r\n}","import 'jsrender';\r\nimport { DetectIE } from 'Utils/device-utils';\r\nimport * as analytics from 'Utils/analytics';\r\n\r\n\r\n/* jQuery plugin widgetHotelThemesBoxes\r\n* required: jQuery, jsRender\r\n* \r\n* Documentation of jsRender API: https://www.jsviews.com/#jsrapi\r\n* Examples of jsRender: https://www.jsviews.com/#download/pages-jsr-jq\r\n* \r\n*/\r\n(function ($) {\r\n var slice = Array.prototype.slice; // save ref to original slice()\r\n var splice = Array.prototype.splice; // save ref to original splice()\r\n\r\n //function GetBreakpointWidth() {\r\n // //var bp_Width = $(window).width();\r\n // var bp_Width = window.innerWidth > 0 ? window.innerWidth : window.screen.width;\r\n // return bp_Width;\r\n //}\r\n\r\n //function GetBreakpointHeight() {\r\n // //var bp_Height = $(window).height();\r\n // var bp_Height = window.innerHeight > 0 ? window.innerHeight : window.screen.height;\r\n // return bp_Height;\r\n //}\r\n\r\n function init_slider(actionbox) {\r\n var actionboxElement = actionbox.actionboxElement,\r\n $holder = actionboxElement.find('.' + actionbox.holderClassName),\r\n $slider = actionbox.$slider;\r\n\r\n let $images = $slider.find('img, .lazyload');\r\n if ($images && $images.length > 0) {\r\n $images.each(function (i, el) {\r\n if (el.hasClass('lazydefer')) {\r\n el.removeClass('lazydefer');\r\n }\r\n el.style.removeProperty('visibility');\r\n el.style.removeProperty('display');\r\n });\r\n }\r\n\r\n $holder.hide();\r\n $slider.show();\r\n actionbox.$holder = $holder;\r\n $holder.detach();\r\n\r\n let $moreButton = actionboxElement.find('.' + actionbox.moreButtonClassName);\r\n if (actionbox.countRows > actionbox.limits) {\r\n $moreButton.css(\"display\", \"block\");\r\n } else {\r\n $moreButton.css(\"display\", \"none\");\r\n }\r\n actionbox.$moreButton = $moreButton;\r\n\r\n update_slimmage();\r\n \r\n AppLoader.ready(function () {\r\n track_view_item_list(actionbox);\r\n });\r\n }\r\n function destroy_slider(actionbox) {\r\n var actionboxElement = actionbox.actionboxElement,\r\n $holder = actionboxElement.find('.' + actionbox.holderClassName),\r\n $slider = actionbox.$slider;\r\n if ($holder.length < 1 && actionbox.$holder) {\r\n $holder = actionbox.$holder;\r\n $holder.appendTo(actionboxElement);\r\n }\r\n\r\n let $moreButton = actionboxElement.find('.' + actionbox.moreButtonClassName);\r\n if ($moreButton.length < 1 && actionbox.$moreButton) {\r\n $moreButton = actionbox.$moreButton;\r\n $moreButton.css(\"display\", \"none\");\r\n }\r\n\r\n $slider.hide();\r\n $holder.show();\r\n\r\n $slider.empty();\r\n }\r\n\r\n function get_hotel_item(hotelCard) {\r\n return {\r\n Id: hotelCard.HotelId,\r\n PageId: hotelCard.PageId,\r\n Name: hotelCard.Name,\r\n DestinationName: hotelCard.DestinationName,\r\n Concept: !hotelCard.Concept ? null : {\r\n Id: hotelCard.Concept.Id,\r\n Code: hotelCard.Concept.Code,\r\n Name: hotelCard.Concept.Name,\r\n }\r\n //hotel.ArrivalDate\r\n };\r\n }\r\n\r\n function track_view_item_list(actionbox) {\r\n if (!actionbox.ga_event || actionbox.ga_event == '') {\r\n return;\r\n }\r\n if (actionbox.ga_event != 'view_item_list') {\r\n return;\r\n }\r\n\r\n var $slider = actionbox.$slider,\r\n $items = $slider.find('.actionbox__item');\r\n \r\n //console.log('>>> more-items $items', $items);\r\n var items = actionbox.request.data.Items;\r\n\r\n var hotelList = [];\r\n if ($items && $items.length > 0) {\r\n $items.each(function (i, el) {\r\n var $el = $(el);\r\n if ($el.is(\":visible\")) {\r\n let hotelId = $el.attr('data-hotelId');\r\n if (hotelId && hotelId != '') {\r\n hotelId = parseInt(hotelId);\r\n if (!isNaN(hotelId)) {\r\n let matches = $.grep(items, function (item, i) {\r\n return hotelId == item.HotelId;\r\n });\r\n if (matches && matches.length > 0) {\r\n let ga_item = get_hotel_item(matches[0]);\r\n if (ga_item) {\r\n hotelList.push(ga_item);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n //console.log('>>> more-items hotelList', hotelList);\r\n\r\n let ga_itemList = analytics.getItemList();\r\n let list_id = AppData.CurrentPageId;\r\n let list_name = '';\r\n let destinationName = '';\r\n\r\n if (ga_itemList) {\r\n if (ga_itemList.item_list_id && ga_itemList.item_list_id != '') {\r\n list_id = ga_itemList.item_list_id;\r\n }\r\n\r\n if (ga_itemList.item_list_name && ga_itemList.item_list_name != '') {\r\n list_name = ga_itemList.item_list_name;\r\n }\r\n }\r\n\r\n if (actionbox.ga_list_id && actionbox.ga_list_id != '') {\r\n //if (list_id && list_id != '') {\r\n // list_id += '_' + actionbox.ga_list_id;\r\n //} else {\r\n // list_id = actionbox.ga_list_id;\r\n //}\r\n list_id = actionbox.ga_list_id;\r\n }\r\n\r\n if (actionbox.ga_list_name && actionbox.ga_list_name != '') {\r\n //if (list_name && list_name != '') {\r\n // list_name += '_' + actionbox.ga_list_name;\r\n //} else {\r\n // list_name = actionbox.ga_list_name;\r\n //}\r\n list_name = actionbox.ga_list_name;\r\n }\r\n\r\n let departureAirportCode = '';\r\n let totalPersons = 0;\r\n let hotelOnly = true;\r\n let isDirectFlight = false;\r\n\r\n if (typeof searchViewModel != \"undefined\" && searchViewModel) {\r\n departureAirportCode = searchViewModel.DepartureAirportCode();\r\n totalPersons = searchViewModel.TotalPersons();\r\n hotelOnly = searchViewModel.HotelOnly();\r\n isDirectFlight = searchViewModel.IsDirectFlight();\r\n }\r\n\r\n // let currentPage = searchViewModel ? searchViewModel.CurrentPage() : null;\r\n // if (currentPage) {\r\n // destinationName = currentPage.Title();\r\n // }\r\n\r\n let itemList = {\r\n id: list_id,\r\n name: list_name,\r\n DepartureAirportCode: departureAirportCode,\r\n DestinationName: destinationName,\r\n TotalPersons: totalPersons,\r\n HotelOnly: hotelOnly,\r\n IsDirectFlight: isDirectFlight\r\n };\r\n analytics.trackViewItemList(hotelList, itemList);\r\n }\r\n\r\n function update_slimmage() {\r\n if (window.slimmage.checkResponsiveImages) {\r\n window.slimmage.checkResponsiveImages();\r\n }\r\n\r\n if (typeof imgix !== \"undefined\") {\r\n imgix.init();\r\n }\r\n\r\n if (typeof lazySizes !== \"undefined\") {\r\n lazySizes.loader.checkElems();\r\n }\r\n }\r\n\r\n function requestData(actionbox) {\r\n if (!actionbox)\r\n return;\r\n\r\n if (!actionbox.request)\r\n actionbox.request = {};\r\n\r\n var jqxhr = actionbox.request.jqxhr;\r\n // cancel executing request before start new request \r\n if (jqxhr) {\r\n if (typeof jqxhr.abort != \"undefined\")\r\n jqxhr.abort();\r\n }\r\n\r\n actionbox.request.requesting = true;\r\n actionbox.request.failed = false;\r\n actionbox.request.ready = false;\r\n\r\n var js = actionbox.request.parameters;\r\n var jsondata = JSON.stringify(js);\r\n\r\n jqxhr = $.ajax({\r\n url: actionbox.request.url,\r\n type: actionbox.request.type, //'POST',\r\n data: jsondata,\r\n contentType: 'application/json',\r\n headers: { 'Accept': 'application/json' },\r\n success: function (data) {\r\n if (data && data.Redirect && data.RedirectUrl != '') {\r\n if (typeof ga != \"undefined\") {\r\n ga('send', 'event', 'Basket ' + self.RequestType(), 'Redirected', self.GetRequestDetailsByParams());\r\n }\r\n //window.location.href = data.RedirectUrl;\r\n window.location = data.RedirectUrl;\r\n return;\r\n }\r\n\r\n var success = false;\r\n actionbox.request.data = data;\r\n if (!data || data.length == 0) {\r\n actionbox.request.ready = false;\r\n actionbox.request.failed = true;\r\n actionbox.request.requesting = false;\r\n } else {\r\n if (typeof data.Success != \"undefined\") {\r\n success = data.Success; // use Success if this property exists\r\n } else {\r\n success = true; // keep previous logic-way\r\n }\r\n \r\n actionbox.request.failed = false;\r\n actionbox.request.ready = true;\r\n actionbox.request.requesting = false;\r\n }\r\n if (success) {\r\n updateWithData(actionbox);\r\n init_slider(actionbox);\r\n }\r\n\r\n if (typeof actionbox.request.callback == \"function\")\r\n actionbox.request.callback(success);\r\n },\r\n error: function (data, textStatus, errorThrown) {\r\n actionbox.request.data = data;\r\n actionbox.request.ready = false;\r\n actionbox.request.failed = true;\r\n actionbox.request.requesting = false;\r\n\r\n if (typeof actionbox.request.callback == \"function\")\r\n actionbox.request.callback(false);\r\n }\r\n }).always(function () {\r\n actionbox.request.jqxhr = null;\r\n });\r\n actionbox.request.jqxhr = jqxhr;\r\n }\r\n\r\n function updateWithData(actionbox) {\r\n //console.log('updateWithData', actionbox);\r\n\r\n var actionboxElement = actionbox.actionboxElement,\r\n $slider = actionbox.$slider,\r\n $template = actionboxElement.find('[data-template=\"actionbox_item\"]');\r\n\r\n var tmpl = $.templates($template.html()); // Get compiled template\r\n var data = actionbox.request.data.Items; // Define data\r\n //var html = tmpl.render(data); // Render template using data - as HTML string\r\n //$slider.html(html); // Insert HTML string into DOM\r\n actionbox.templates[\"actionbox_item\"] = $template;\r\n $template.detach();\r\n\r\n let rows = [];\r\n let rowIndex = -1;\r\n let rowClass = \"\";\r\n let rowGroup = -1;\r\n let numInside = -1;\r\n let $row = null; //$('
').addClass('card-columns');\r\n\r\n let ROW_STYLE_1 = \"xdefault\";\r\n let ROW_STYLE_2 = \"xgroup2\";\r\n let ROW_STYLE_3 = \"xgroup3\";\r\n\r\n let ROW_MAX_ITEMS = {\r\n 1: 4, // inside ROW_STYLE_1\r\n 2: 4, // inside ROW_STYLE_2\r\n 3: 5 // inside ROW_STYLE_3\r\n };\r\n\r\n data.forEach(function (item, i) {\r\n let $col = $('
')\r\n //.addClass('col-12 card');\r\n .addClass('bp0-col-12 bp2-col-6 bp3-col-4 bp4-col-4');\r\n //let num = i + 1;\r\n let is_large = false;\r\n \r\n let maxItems = ROW_MAX_ITEMS[rowGroup];\r\n if (!maxItems || maxItems == 0) {\r\n console.warn('wrong number of maxItems. reset to 1.');\r\n maxItems = 1; // avoid division by zero\r\n }\r\n if (i == 0 || (numInside % maxItems == 0)) {\r\n rowIndex++;\r\n let numGrp = rowIndex + 1;\r\n numInside = 0;\r\n \r\n if (actionbox.limits > 0) {\r\n $row = $('
  • ')\r\n //.addClass('card-columns');\r\n //.addClass('row-narrow');\r\n .addClass('slide-group');\r\n $row.attr('data-grp-index', rowIndex);\r\n rows.push($row);\r\n } else {\r\n $row = $('
    ')\r\n //.addClass('card-columns');\r\n //.addClass('row-narrow');\r\n .addClass('slide-group');\r\n $row.attr('data-grp-index', rowIndex);\r\n rows.push($row);\r\n }\r\n\r\n // row styles ...\r\n rowGroup++;\r\n if (rowGroup < 1 || rowGroup > 3) {\r\n rowGroup = 1;\r\n }\r\n rowClass = ROW_STYLE_1;\r\n switch (rowGroup) {\r\n case 3:\r\n rowClass = ROW_STYLE_3;\r\n break;\r\n\r\n case 2:\r\n rowClass = ROW_STYLE_2;\r\n break;\r\n\r\n case 1:\r\n default:\r\n rowClass = ROW_STYLE_1;\r\n break;\r\n }\r\n $row.addClass(rowClass);\r\n\r\n if (actionbox.limits > 0 && numGrp > actionbox.limits) {\r\n $row.addClass('hidden');\r\n }\r\n\r\n }\r\n numInside++;\r\n\r\n let update_col_style_1 = function (num_inside) {\r\n if (num_inside % 4 == 0) {\r\n //$col.addClass('xright');\r\n //is_large = true;\r\n $col.addClass('xbottom');\r\n } else if (num_inside % 3 == 0) {\r\n //$col.addClass('xbottom');\r\n $col.addClass('xright');\r\n is_large = true;\r\n } else if (num_inside % 2 == 0) {\r\n $col.addClass('xtop');\r\n } else {\r\n $col.addClass('xleft');\r\n is_large = true;\r\n }\r\n };\r\n\r\n let update_col_style_2 = function (num_inside) {\r\n if (num_inside % 4 == 0) {\r\n $col.addClass('xbottom');\r\n } else if (num_inside % 3 == 0) {\r\n $col.addClass('xtop');\r\n } else if (num_inside % 2 == 0) {\r\n //$col.addClass('xleft');\r\n is_large = true;\r\n } else {\r\n //$col.addClass('xleft');\r\n is_large = true;\r\n }\r\n };\r\n\r\n let update_col_style_3 = function (num_inside) {\r\n if (num_inside % 5 == 0) {\r\n //$col.addClass('xright');\r\n //is_large = true;\r\n $col.addClass('xbottom');\r\n } else if (num_inside % 4 == 0) {\r\n $col.addClass('xbottom');\r\n } else if (num_inside % 3 == 0) {\r\n //$col.addClass('xtop');\r\n $col.addClass('xright');\r\n is_large = true;\r\n } else if (num_inside % 2 == 0) {\r\n //$col.addClass('xbottom');\r\n $col.addClass('xtop');\r\n } else {\r\n $col.addClass('xtop');\r\n }\r\n };\r\n\r\n switch (rowClass) {\r\n case ROW_STYLE_3:\r\n update_col_style_3(numInside);\r\n break;\r\n\r\n case ROW_STYLE_2:\r\n update_col_style_2(numInside);\r\n break;\r\n\r\n case ROW_STYLE_1:\r\n default:\r\n update_col_style_1(numInside);\r\n break;\r\n }\r\n\r\n\r\n item.is_large = is_large;\r\n if (is_large) {\r\n if (item.Class && item.Class.length > 0)\r\n item.Class += \" large\";\r\n else\r\n item.Class = \"large\";\r\n $col.addClass('xlarge');\r\n }\r\n let html = tmpl.render(item);\r\n $col.html(html);\r\n //$col.addClass('hotel-theme__slide');\r\n $col.attr('data-index', i);\r\n\r\n $row.append($col);\r\n });\r\n\r\n actionbox.countRows = rows.length;\r\n //$slider.prepend($row);\r\n $slider.addClass('row-narrow');\r\n for (var i = 0; i < rows.length; i++) {\r\n $slider.append(rows[i]);\r\n }\r\n }\r\n\r\n\r\n var defaults = {\r\n sliderClassName: 'slider',\r\n holderClassName: 'holder',\r\n request: {\r\n url: '',\r\n type: 'GET',\r\n parameters: null,\r\n //jqxhr: null,\r\n //data: data,\r\n //ready: false,\r\n //failed: false,\r\n //requesting: false\r\n },\r\n limits: null,\r\n //moreButtonClassName: 'btn-more-container',\r\n //moreItemsClassName: 'more-items',\r\n templates: {},\r\n ga_event: '',\r\n ga_list_id: '',\r\n ga_list_name: '',\r\n },\r\n //$window = $(window),\r\n //$document = $(document),\r\n actionboxs = [],\r\n //scroller = function () {\r\n // //console.log('actionbox-slider scroller()');\r\n //},\r\n //resizer = function () {\r\n // //console.log('actionbox-slider resizer()');\r\n // //for (var i = 0, l = actionboxs.length; i < l; i++) {\r\n // // var s = actionboxs[i];\r\n // // //update_slider(s);\r\n // // update_slides(s);\r\n // //}\r\n // //update sidebar after resize\r\n // scroller();\r\n //},\r\n methods = {\r\n init: function (options) {\r\n return this.each(function () {\r\n var o = $.extend({}, defaults, options);\r\n var actionboxElement = $(this);\r\n\r\n let attr_limits = actionboxElement.attr('data-limits');\r\n if (attr_limits && attr_limits.length > 0) {\r\n o.limits = parseInt(attr_limits);\r\n }\r\n\r\n let attr_ga_event = actionboxElement.attr('data-ga_event');\r\n if (attr_ga_event && attr_ga_event.length > 0) {\r\n o.ga_event = attr_ga_event;\r\n }\r\n\r\n let attr_ga_list_id = actionboxElement.attr('data-ga_list_id');\r\n if (attr_ga_list_id && attr_ga_list_id.length > 0) {\r\n o.ga_list_id = attr_ga_list_id;\r\n }\r\n\r\n let attr_ga_list_name = actionboxElement.attr('data-ga_list_name');\r\n if (attr_ga_list_name && attr_ga_list_name.length > 0) {\r\n o.ga_list_name = attr_ga_list_name;\r\n }\r\n\r\n var actionboxId = actionboxElement.attr('id');\r\n var sliderId = actionboxId ? actionboxId + '-' + defaults.sliderClassName : defaults.sliderClassName;\r\n var $slider = $(o.limits > 0 ? '' : '
    ')\r\n .attr('id', sliderId)\r\n .css('display', 'none')\r\n .addClass(o.sliderClassName);\r\n actionboxElement.prepend($slider);\r\n\r\n var flgIE = DetectIE() !== false;\r\n if (flgIE) {\r\n actionboxElement.addClass('IE');\r\n }\r\n\r\n if (o.limits > 0) {\r\n $slider\r\n .attr('data-limits', o.limits)\r\n .addClass(o.moreItemsClassName);\r\n $slider.on('more-items.show-more-items', function(event, data) {\r\n //console.log('>>> more-items arguments: ', arguments);\r\n track_view_item_list(o);\r\n });\r\n }\r\n\r\n if (o.request && o.request.url.length > 0 && o.request.parameters) {\r\n requestData(o);\r\n } else {\r\n o.request = {};\r\n\r\n let attrItems = actionboxElement.attr('data-items');\r\n if (attrItems && attrItems.length > 0) {\r\n o.request.data = window.AppData.widgetHotelThemesBoxes[attrItems];\r\n }\r\n // emulate success/error callback(s) of request\r\n setTimeout(function () {\r\n if (o.request.data) {\r\n // success\r\n o.request.failed = false;\r\n o.request.ready = true;\r\n o.request.requesting = false;\r\n updateWithData(o);\r\n init_slider(o);\r\n } else {\r\n // error\r\n o.request.ready = false;\r\n o.request.failed = true;\r\n o.request.requesting = false;\r\n }\r\n }, 64);\r\n }\r\n\r\n o.actionboxElement = actionboxElement;\r\n o.$slider = $slider;\r\n actionboxs.push(o);\r\n });\r\n },\r\n //update: function () {\r\n // scroller.apply(this, arguments);\r\n //},\r\n destroy: function (options) {\r\n return this.each(function () {\r\n var that = this;\r\n var unactionboxElement = $(that);\r\n\r\n var removeIdx = -1;\r\n var i = actionboxs.length;\r\n while (i-- > 0) {\r\n if (actionboxs[i].actionboxElement.get(0) === that) {\r\n //methods.destroySlider(actionboxs[i]);\r\n destroy_slider(actionboxs[i]);\r\n actionboxs[i].$slider.remove();\r\n actionboxs[i].$slider = null;\r\n actionboxs[i].$holder = null;\r\n //actionboxs[i].templates = {};\r\n //unactionboxElement.removeClass(actionboxs[i].elementClassName);\r\n splice.call(actionboxs, i, 1);\r\n removeIdx = i;\r\n }\r\n }\r\n if (removeIdx !== -1) {\r\n // TODO smth with unactionboxElement styles on destroy\r\n //unactionboxElement.unwrap();\r\n //unactionboxElement.css({\r\n // 'width': '',\r\n // 'position': '',\r\n // 'top': '',\r\n // 'float': '',\r\n // 'z-index': ''\r\n //});\r\n }\r\n });\r\n }\r\n };\r\n\r\n //// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):\r\n //if (window.addEventListener) {\r\n // window.addEventListener('scroll', scroller, false);\r\n // window.addEventListener('resize', resizer, false);\r\n //} else if (window.attachEvent) {\r\n // window.attachEvent('onscroll', scroller);\r\n // window.attachEvent('onresize', resizer);\r\n //}\r\n\r\n $.fn.widgetHotelThemesBoxes = function (method) {\r\n if (methods[method]) {\r\n return methods[method].apply(this, slice.call(arguments, 1));\r\n } else if (typeof method === 'object' || !method) {\r\n return methods.init.apply(this, arguments);\r\n } else {\r\n $.error('Method ' + method + ' does not exist on widgetHotelThemesBoxes');\r\n }\r\n };\r\n\r\n //$(function () {\r\n // setTimeout(scroller, 0);\r\n //});\r\n})(jQuery);\r\n\r\n\r\n/*\r\nwidgetHotelThemesBoxes\r\n*/\r\n//AppLoader.ready(function () {\r\n$(document).ready(function () {\r\n // added some timeout to give time for processing things with higher priorities.\r\n setTimeout(function () {\r\n if ($('.widgetHotelThemesBoxes').length > 0) {\r\n var c = 0;\r\n $('.widgetHotelThemesBoxes').each(function () {\r\n var $this = $(this);\r\n var id = $this.attr('id');\r\n if (!id || id == '') {\r\n //$this.attr('id', 'widgetHotelThemesBoxes-' + c);\r\n $this.attr('id', 'whtb-' + c);\r\n c++;\r\n }\r\n });\r\n\r\n $('.widgetHotelThemesBoxes:not([data-items])').widgetHotelThemesBoxes({\r\n sliderClassName: 'hotel-themes-boxes',\r\n holderClassName: 'placeholder',\r\n request: {\r\n url: '/widgets-api/hotelThemes',\r\n type: 'POST',\r\n parameters: {\r\n pageId: AppData.CurrentPageId\r\n }\r\n }\r\n });\r\n $('.widgetHotelThemesBoxes[data-items]').widgetHotelThemesBoxes({\r\n sliderClassName: 'hotel-themes-boxes',\r\n holderClassName: 'placeholder',\r\n moreButtonClassName: 'btn-more-container',\r\n moreItemsClassName: 'more-items'\r\n });\r\n }\r\n }, 500);\r\n});\r\n","import 'jsrender';\r\nimport { DetectIE } from 'Utils/device-utils';\r\n\r\n/* jQuery plugin widgetMoreItems\r\n* required: jQuery, jsRender\r\n* \r\n* Documentation of jsRender API: https://www.jsviews.com/#jsrapi\r\n* Examples of jsRender: https://www.jsviews.com/#download/pages-jsr-jq\r\n* \r\n*/\r\n/* Example html:\r\n
    \r\n
    \r\n @* pre-loaded 1st pagination (options.deferLoad: false) *-@\r\n AppData.widgetMoreItems['@(@Model.ElementId)'] = {\r\n ItemsCount: @(Model.ReviewCount),\r\n Items: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Items)),\r\n ListOptions: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.DefaultListSettings)),\r\n };*@\r\n\r\n @*deffer load 1st pagination (options.deferLoad: true) *@\r\n AppData.widgetMoreItems['@(@Model.ElementId)'] = {\r\n ItemsCount: @(Model.DefaultListSettings.NextCount),\r\n Items: [],\r\n ListOptions: {\r\n LastCount: 0,\r\n NextCount: @(Model.DefaultListSettings.NextCount),\r\n TotalItems: @(Model.DefaultListSettings.TotalItems),\r\n }\r\n };\r\n */\r\n(function ($) {\r\n var slice = Array.prototype.slice; // save ref to original slice()\r\n var splice = Array.prototype.splice; // save ref to original splice()\r\n\r\n var TemplateName = {\r\n item: \"actionbox_item\",\r\n moreItems: \"btn-more-container\"\r\n };\r\n\r\n //function GetBreakpointWidth() {\r\n // //var bp_Width = $(window).width();\r\n // var bp_Width = window.innerWidth > 0 ? window.innerWidth : window.screen.width;\r\n // return bp_Width;\r\n //}\r\n\r\n //function GetBreakpointHeight() {\r\n // //var bp_Height = $(window).height();\r\n // var bp_Height = window.innerHeight > 0 ? window.innerHeight : window.screen.height;\r\n // return bp_Height;\r\n //}\r\n\r\n function init_templates(actionbox) {\r\n var actionboxElement = actionbox.actionboxElement;\r\n let init_template = function (templateName, allowCode) {\r\n let $template = actionboxElement.find('[data-template=\"' + templateName + '\"]');\r\n //let tmpl = $.templates($template.html()); // Get compiled template\r\n\r\n let tmpl = $.templates({\r\n markup: $template.html(),\r\n allowCode: allowCode,\r\n });\r\n\r\n actionbox.templates[templateName] = $template;\r\n $template.detach();\r\n\r\n actionbox.tmpl[templateName] = tmpl;\r\n };\r\n\r\n init_template(TemplateName.item, true);\r\n //init_template(TemplateName.moreItems, true);\r\n }\r\n\r\n function init_slider(actionbox) {\r\n var actionboxElement = actionbox.actionboxElement,\r\n $holder = actionboxElement.find('.' + actionbox.holderClassName),\r\n $slider = actionbox.$slider;\r\n\r\n update_lazysizes($slider);\r\n\r\n $holder.hide();\r\n $slider.show();\r\n actionbox.$holder = $holder;\r\n $holder.detach();\r\n\r\n update_slimmage();\r\n update_moreButton(actionbox);\r\n }\r\n\r\n function destroy_slider(actionbox) {\r\n let actionboxElement = actionbox.actionboxElement,\r\n $holder = actionboxElement.find('.' + actionbox.holderClassName),\r\n $moreButton = actionbox.$moreButton,\r\n $slider = actionbox.$slider;\r\n if ($holder.length < 1 && actionbox.$holder) {\r\n $holder = actionbox.$holder;\r\n $holder.appendTo(actionboxElement);\r\n }\r\n\r\n if ($moreButton.length < 1 && actionbox.$moreButton) {\r\n $moreButton = actionbox.$moreButton;\r\n $moreButton.css(\"display\", \"none\");\r\n }\r\n\r\n $slider.hide();\r\n $holder.show();\r\n\r\n $slider.empty();\r\n }\r\n\r\n function update_lazysizes($slider) {\r\n let $images = $slider.find('img, .lazyload');\r\n if ($images && $images.length > 0) {\r\n $images.each(function (i, el) {\r\n if (el.hasClass('lazydefer')) {\r\n el.removeClass('lazydefer');\r\n }\r\n el.style.removeProperty('visibility');\r\n el.style.removeProperty('display');\r\n });\r\n }\r\n }\r\n\r\n function update_slimmage() {\r\n if (window.slimmage.checkResponsiveImages) {\r\n window.slimmage.checkResponsiveImages();\r\n }\r\n\r\n if (typeof imgix !== \"undefined\") {\r\n imgix.init();\r\n }\r\n\r\n if (typeof lazySizes !== \"undefined\") {\r\n lazySizes.loader.checkElems();\r\n }\r\n }\r\n\r\n function update_moreButton(actionbox) {\r\n let actionboxElement = actionbox.actionboxElement;\r\n if (!actionbox.$moreButton) {\r\n actionbox.$moreButton = actionboxElement.find('.' + actionbox.moreButtonClassName);\r\n }\r\n let $moreButton = actionbox.$moreButton;\r\n let listOptions = actionbox.request.data.ListOptions;\r\n\r\n /// more-btn if totalItems more last-count\r\n if (listOptions.TotalItems > listOptions.LastCount) {\r\n $moreButton.css(\"display\", \"block\");\r\n } else {\r\n $moreButton.css(\"display\", \"none\");\r\n }\r\n }\r\n\r\n function requestData(actionbox) {\r\n if (!actionbox)\r\n return;\r\n\r\n if (!actionbox.request)\r\n actionbox.request = {};\r\n\r\n if (actionbox.request.requesting) {\r\n // cancel new request while executing prev.request\r\n return;\r\n }\r\n\r\n\r\n var jqxhr = actionbox.request.jqxhr;\r\n if (jqxhr) {\r\n // cancel executing request before start new request \r\n //if (typeof jqxhr.abort != \"undefined\")\r\n // jqxhr.abort();\r\n\r\n // cancel new request while executing prev.request\r\n return;\r\n }\r\n\r\n actionbox.request.requesting = true;\r\n actionbox.request.failed = false;\r\n actionbox.request.ready = false;\r\n\r\n let listOptions = actionbox.request.data.ListOptions;\r\n\r\n var js = actionbox.request.parameters;\r\n js.skip = listOptions.LastCount;\r\n js.size = listOptions.NextCount;\r\n js.totalItems = listOptions.TotalItems;\r\n var jsondata = JSON.stringify(js);\r\n\r\n jqxhr = $.ajax({\r\n url: actionbox.request.url,\r\n type: actionbox.request.type, //'POST',\r\n data: jsondata,\r\n contentType: 'application/json',\r\n headers: { 'Accept': 'application/json' },\r\n success: function (data) {\r\n if (data && data.Redirect && data.RedirectUrl != '') {\r\n if (typeof ga != \"undefined\") {\r\n ga('send', 'event', 'widget MoreItems ', 'Redirected', 'GetRequestDetailsByParams()');\r\n }\r\n //window.location.href = data.RedirectUrl;\r\n window.location = data.RedirectUrl;\r\n return;\r\n }\r\n\r\n var success = false;\r\n actionbox.request.data = data;\r\n if (!data || data.length == 0) {\r\n actionbox.request.ready = false;\r\n actionbox.request.failed = true;\r\n actionbox.request.requesting = false;\r\n } else {\r\n if (typeof data.Success != \"undefined\") {\r\n success = data.Success; // use Success if this property exists\r\n } else {\r\n success = true; // keep previous logic-way\r\n }\r\n \r\n actionbox.request.failed = false;\r\n actionbox.request.ready = true;\r\n actionbox.request.requesting = false;\r\n }\r\n if (success) {\r\n if (actionbox.deferLoad && !actionbox.inited) {\r\n init_templates(actionbox);\r\n init_slider(actionbox);\r\n actionbox.inited = true;\r\n }\r\n //init_templates(actionbox);\r\n updateWithData(actionbox, true);\r\n //init_slider(actionbox);\r\n \r\n }\r\n\r\n if (typeof actionbox.request.callback == \"function\")\r\n actionbox.request.callback(success);\r\n },\r\n error: function (data, textStatus, errorThrown) {\r\n actionbox.request.data = data;\r\n actionbox.request.ready = false;\r\n actionbox.request.failed = true;\r\n actionbox.request.requesting = false;\r\n\r\n if (typeof actionbox.request.callback == \"function\")\r\n actionbox.request.callback(false);\r\n }\r\n }).always(function () {\r\n actionbox.request.jqxhr = null;\r\n });\r\n actionbox.request.jqxhr = jqxhr;\r\n }\r\n\r\n function updateWithData(actionbox, forceLazyload) {\r\n //console.log('updateWithData', actionbox);\r\n\r\n var //actionboxElement = actionbox.actionboxElement,\r\n $slider = actionbox.$slider;\r\n\r\n var tmpl = actionbox.tmpl[TemplateName.item];\r\n var items = actionbox.request.data.Items;\r\n\r\n let num = 0;\r\n items.forEach(function (item, i) {\r\n let $col = $('
    ')\r\n .addClass('col-12 col-sm-6 col-md-4 col-lg-4');\r\n num += (i + 1);\r\n if (i>1) $col.addClass('d-sm-none d-md-block'); \r\n let html = tmpl.render(item, actionbox.helpers);\r\n $col.html(html);\r\n $col.attr('data-num', num);\r\n\r\n $slider.append($col);\r\n });\r\n\r\n if (forceLazyload) {\r\n update_lazysizes($slider);\r\n update_slimmage();\r\n }\r\n\r\n update_moreButton(actionbox);\r\n }\r\n\r\n\r\n var defaults = {\r\n sliderClassName: 'slider',\r\n holderClassName: 'holder',\r\n request: {\r\n url: '',\r\n type: 'GET',\r\n parameters: null,\r\n //jqxhr: null,\r\n //data: data,\r\n //ready: false,\r\n //failed: false,\r\n //requesting: false\r\n },\r\n deferLoad: false,\r\n moreButtonClassName: 'btn-more-container',\r\n moreItemsLoadClassName: 'more-items-load',\r\n templates: {},\r\n tmpl: {}\r\n },\r\n //$window = $(window),\r\n //$document = $(document),\r\n actionboxs = [],\r\n //scroller = function () {\r\n // //console.log('actionbox-slider scroller()');\r\n //},\r\n //resizer = function () {\r\n // //console.log('actionbox-slider resizer()');\r\n // //for (var i = 0, l = actionboxs.length; i < l; i++) {\r\n // // var s = actionboxs[i];\r\n // // //update_slider(s);\r\n // // update_slides(s);\r\n // //}\r\n // //update sidebar after resize\r\n // scroller();\r\n //},\r\n methods = {\r\n init: function (options) {\r\n return this.each(function () {\r\n var o = $.extend({}, defaults, options);\r\n var actionboxElement = $(this);\r\n\r\n var actionboxId = actionboxElement.attr('id');\r\n var sliderId = actionboxId ? actionboxId + '-' + o.sliderClassName : o.sliderClassName;\r\n var $slider = $('
    ')\r\n .attr('id', sliderId)\r\n .css('display', 'none')\r\n .addClass('row')\r\n .addClass(o.sliderClassName);\r\n actionboxElement.prepend($slider);\r\n\r\n var flgIE = DetectIE() !== false;\r\n if (flgIE) {\r\n actionboxElement.addClass('IE');\r\n }\r\n\r\n let $moreButton = actionboxElement.find('.' + o.moreButtonClassName);\r\n let $btnLoad = $moreButton.hasClass(o.moreItemsLoadClassName) ? $moreButton : $moreButton.find('.' + o.moreItemsLoadClassName);\r\n $btnLoad.on('click', function (e) {\r\n requestData(o);\r\n $btnLoad.blur();\r\n });\r\n o.$moreButton = $moreButton;\r\n\r\n let deferredLoad = false;\r\n let data = null;\r\n let attrItems = actionboxElement.attr('data-items');\r\n if (attrItems && attrItems.length > 0) {\r\n data = window.AppData.widgetMoreItems[attrItems];\r\n }\r\n\r\n if (o.deferLoad && o.request && o.request.url.length > 0 && o.request.parameters) {\r\n if (!o.request.data && data) {\r\n o.request.data = data;\r\n }\r\n if (o.request.data) {\r\n requestData(o);\r\n deferredLoad = true;\r\n }\r\n }\r\n\r\n if (!deferredLoad) {\r\n if (!o.request)\r\n o.request = {};\r\n\r\n if (data)\r\n o.request.data = data;\r\n \r\n // emulate success/error callback(s) of request\r\n setTimeout(function () {\r\n if (o.request.data) {\r\n // success\r\n o.request.failed = false;\r\n o.request.ready = true;\r\n o.request.requesting = false;\r\n init_templates(o);\r\n updateWithData(o);\r\n init_slider(o);\r\n o.inited = true;\r\n } else {\r\n // error\r\n o.request.ready = false;\r\n o.request.failed = true;\r\n o.request.requesting = false;\r\n }\r\n }, 64);\r\n }\r\n\r\n o.actionboxElement = actionboxElement;\r\n o.$slider = $slider;\r\n actionboxs.push(o);\r\n });\r\n },\r\n //update: function () {\r\n // scroller.apply(this, arguments);\r\n //},\r\n destroy: function (options) {\r\n return this.each(function () {\r\n var that = this;\r\n var unactionboxElement = $(that);\r\n\r\n var removeIdx = -1;\r\n var i = actionboxs.length;\r\n while (i-- > 0) {\r\n if (actionboxs[i].actionboxElement.get(0) === that) {\r\n //methods.destroySlider(actionboxs[i]);\r\n destroy_slider(actionboxs[i]);\r\n actionboxs[i].$slider.remove();\r\n actionboxs[i].$slider = null;\r\n actionboxs[i].$holder = null;\r\n //actionboxs[i].templates = {};\r\n //unactionboxElement.removeClass(actionboxs[i].elementClassName);\r\n splice.call(actionboxs, i, 1);\r\n removeIdx = i;\r\n }\r\n }\r\n if (removeIdx !== -1) {\r\n // TODO smth with unactionboxElement styles on destroy\r\n //unactionboxElement.unwrap();\r\n //unactionboxElement.css({\r\n // 'width': '',\r\n // 'position': '',\r\n // 'top': '',\r\n // 'float': '',\r\n // 'z-index': ''\r\n //});\r\n }\r\n });\r\n }\r\n };\r\n\r\n //// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):\r\n //if (window.addEventListener) {\r\n // window.addEventListener('scroll', scroller, false);\r\n // window.addEventListener('resize', resizer, false);\r\n //} else if (window.attachEvent) {\r\n // window.attachEvent('onscroll', scroller);\r\n // window.attachEvent('onresize', resizer);\r\n //}\r\n\r\n $.fn.widgetMoreItems = function (method) {\r\n if (methods[method]) {\r\n return methods[method].apply(this, slice.call(arguments, 1));\r\n } else if (typeof method === 'object' || !method) {\r\n return methods.init.apply(this, arguments);\r\n } else {\r\n $.error('Method ' + method + ' does not exist on widgetMoreItems');\r\n }\r\n };\r\n\r\n //$(function () {\r\n // setTimeout(scroller, 0);\r\n //});\r\n})(jQuery);\r\n\r\n\r\n/*\r\nwidgetMoreItems\r\n*/\r\n//AppLoader.ready(function () {\r\n$(document).ready(function () {\r\n // added some timeout to give time for processing things with higher priorities.\r\n setTimeout(function () {\r\n if ($('.widgetMoreItems').length > 0) {\r\n var c = 0;\r\n $('.widgetMoreItems').each(function () {\r\n var $this = $(this);\r\n var id = $this.attr('id');\r\n if (!id || id == '') {\r\n $this.attr('id', 'widgetMoreItems-' + c);\r\n //$this.attr('id', 'wmi-' + c);\r\n c++;\r\n }\r\n });\r\n\r\n \r\n $('.widgetMoreItems[data-items][data-type=\"destination-reviews\"]').widgetMoreItems({\r\n sliderClassName: 'widget-more-items',\r\n holderClassName: 'placeholder',\r\n moreButtonClassName: 'btn-more-container',\r\n moreItemsLoadClassName: 'more-items-load',\r\n request: {\r\n url: '/widgets-api/destination-reviews',\r\n type: 'POST',\r\n parameters: {\r\n pageId: AppData.CurrentPageId\r\n }\r\n },\r\n deferLoad: false,\r\n helpers: {\r\n hasHeadline: function (destinationReview) {\r\n if (!destinationReview)\r\n return false;\r\n\r\n let text = destinationReview.Headline;\r\n return text && text != \"\" && text.length > 0;\r\n },\r\n hasBody: function (destinationReview) {\r\n if (!destinationReview)\r\n return false;\r\n let text = destinationReview.ShortBody;\r\n return text && text != \"\" && text.length > 0;\r\n },\r\n dots: function (destinationReview) {\r\n //if (!destinationReview)\r\n // return '';\r\n\r\n //let text1 = destinationReview.ShortBody;\r\n //if (!(text1 && text1 != \"\" && text1.length > 0))\r\n // return '';\r\n\r\n //let text2 = destinationReview.ShortBody;\r\n //if (!(text2 && text2 != \"\" && text2.length > 0))\r\n // return '';\r\n\r\n //return text2.length > text1.length ? '…' : '';\r\n return \"\";\r\n },\r\n hasDestinationLink: function (destinationReview) {\r\n if (!destinationReview)\r\n return false;\r\n\r\n if (!destinationReview.DestinationLink)\r\n return false;\r\n\r\n if (!window.AppData.CurrentPageId)\r\n return false;\r\n\r\n if (!destinationReview.DestinationPageId)\r\n return false;\r\n\r\n return destinationReview.DestinationPageId !== window.AppData.CurrentPageId;\r\n }\r\n }\r\n });\r\n\r\n //$('.widgetMoreItems[data-items][data-type=\"hotel-reviews\"]').widgetMoreItems({\r\n // sliderClassName: 'widget-more-items',\r\n // holderClassName: 'placeholder',\r\n // moreButtonClassName: 'btn-more-container',\r\n // moreItemsLoadClassName: 'more-items-load',\r\n // request: {\r\n // url: '/widgets-api/hotel-reviews',\r\n // type: 'POST',\r\n // parameters: {\r\n // pageId: AppData.CurrentPageId\r\n // }\r\n // },\r\n // deferLoad: false,\r\n // helpers: {\r\n // }\r\n //});\r\n }\r\n }, 500);\r\n});\r\n","import 'jsrender';\r\nimport 'Utils/global';\r\nimport { modifyQueryString /*, getSearchParameters, getSearchQueryString*/ } from 'Utils/global';\r\n\r\n/* jQuery plugin widgetSlickSlider\r\n* required: jQuery, jsRender, slick.js\r\n* \r\n* Documentation of jsRender API: https://www.jsviews.com/#jsrapi\r\n* Examples of jsRender: https://www.jsviews.com/#download/pages-jsr-jq\r\n* \r\n* Documentation of Slick settings: https://github.com/kenwheeler/slick/#settings\r\n* Live examples of Slick: http://kenwheeler.github.io/slick/\r\n*/\r\n(function ($) {\r\n var slice = Array.prototype.slice; // save ref to original slice()\r\n var splice = Array.prototype.splice; // save ref to original splice()\r\n\r\n //function GetBreakpointWidth() {\r\n // //var bp_Width = $(window).width();\r\n // var bp_Width = window.innerWidth > 0 ? window.innerWidth : window.screen.width;\r\n // return bp_Width;\r\n //}\r\n\r\n //function GetBreakpointHeight() {\r\n // //var bp_Height = $(window).height();\r\n // var bp_Height = window.innerHeight > 0 ? window.innerHeight : window.screen.height;\r\n // return bp_Height;\r\n //}\r\n\r\n function useSlider() {\r\n //return GetBreakpointWidth() < 768;\r\n return true;\r\n }\r\n\r\n function update_slider(actionbox) {\r\n if (useSlider()) {\r\n methods.initSlider(actionbox);\r\n } else {\r\n methods.destroySlider(actionbox);\r\n }\r\n }\r\n\r\n function get_slider(actionbox) {\r\n var $slider = actionbox.$slider,\r\n slider = null;\r\n if ($slider.length > 0 && $slider[0].slick) {\r\n slider = $slider.slick('getSlick');\r\n } else {\r\n try {\r\n slider = $slider.slick('getSlick');\r\n } catch (e) {\r\n //console.warn(e);\r\n }\r\n }\r\n return slider;\r\n }\r\n\r\n function update_slides(actionbox) {\r\n var actionboxElement = actionbox.actionboxElement,\r\n $slider = actionbox.$slider,\r\n slider = get_slider(actionbox);\r\n\r\n var slidesSpacing = actionbox.sliderOptions.slidesSpacing || 0;\r\n var slidesToShow = actionbox.sliderOptions.slidesToShow || 1;\r\n var slidesFullWidth = actionbox.sliderOptions.slidesFullWidth || true;\r\n\r\n var responsive = actionbox.sliderOptions.responsive;\r\n if (responsive && responsive.length > 0) {\r\n slidesToShow = slider.options.slidesToShow;\r\n slidesSpacing = slider.options.slidesSpacing;\r\n slidesFullWidth = slider.options.slidesFullWidth;\r\n }\r\n\r\n var w = $slider.outerWidth() + slidesSpacing;\r\n var slide_w = (w / slidesToShow);\r\n if (slidesFullWidth === 0) {\r\n // like slidesFullWidth === true\r\n } else if (slidesFullWidth !== true && !isNaN(slidesFullWidth)) {\r\n let k = Math.abs(slidesFullWidth);\r\n k = k / 100;\r\n slide_w = slide_w * k;\r\n //actionboxElement\r\n // .attr('data-k', k)\r\n // .attr('data-slide_w', slide_w);\r\n }\r\n\r\n var $slides = actionboxElement.find('.' + actionbox.slideClassName);\r\n $slides.each(function (i) {\r\n let $slide = $(this);\r\n $slide.css('width', slide_w)\r\n .css('padding-left', slidesSpacing);\r\n });\r\n $slider.find('.slick-track').css('margin-left', -1 * slidesSpacing);\r\n }\r\n\r\n function update_slimmage() {\r\n if (window.slimmage.checkResponsiveImages) {\r\n window.slimmage.checkResponsiveImages();\r\n }\r\n\r\n if (typeof imgix !== \"undefined\") {\r\n imgix.init();\r\n }\r\n\r\n if (typeof lazySizes !== \"undefined\") {\r\n lazySizes.loader.checkElems();\r\n }\r\n }\r\n\r\n function requestData(actionbox) {\r\n if (!actionbox)\r\n return;\r\n\r\n if (!actionbox.request)\r\n actionbox.request = {};\r\n\r\n var jqxhr = actionbox.request.jqxhr;\r\n // cancel executing request before start new request \r\n if (jqxhr) {\r\n if (typeof jqxhr.abort != \"undefined\")\r\n jqxhr.abort();\r\n }\r\n\r\n actionbox.request.requesting = true;\r\n actionbox.request.failed = false;\r\n actionbox.request.ready = false;\r\n\r\n var js = actionbox.request.parameters;\r\n var jsondata = JSON.stringify(js);\r\n\r\n jqxhr = $.ajax({\r\n url: actionbox.request.url,\r\n type: actionbox.request.type, //'POST',\r\n data: jsondata,\r\n contentType: 'application/json',\r\n headers: { 'Accept': 'application/json' },\r\n success: function (data) {\r\n if (data && data.Redirect && data.RedirectUrl != '') {\r\n if (typeof ga != \"undefined\") {\r\n ga('send', 'event', 'Basket ' + self.RequestType(), 'Redirected', self.GetRequestDetailsByParams());\r\n }\r\n //window.location.href = data.RedirectUrl;\r\n window.location = data.RedirectUrl;\r\n return;\r\n }\r\n\r\n var success = false;\r\n actionbox.request.data = data;\r\n if (!data || data.length == 0) {\r\n actionbox.request.ready = false;\r\n actionbox.request.failed = true;\r\n actionbox.request.requesting = false;\r\n } else {\r\n if (typeof data.Success != \"undefined\") {\r\n success = data.Success; // use Success if this property exists\r\n } else {\r\n success = true; // keep previous logic-way\r\n }\r\n \r\n actionbox.request.failed = false;\r\n actionbox.request.ready = true;\r\n actionbox.request.requesting = false;\r\n }\r\n if (success) {\r\n updateDataItems(actionbox);\r\n updateWithData(actionbox);\r\n update_slider(actionbox);\r\n }\r\n\r\n if (typeof actionbox.request.callback == \"function\")\r\n actionbox.request.callback(success);\r\n },\r\n error: function (data, textStatus, errorThrown) {\r\n actionbox.request.data = data;\r\n actionbox.request.ready = false;\r\n actionbox.request.failed = true;\r\n actionbox.request.requesting = false;\r\n\r\n if (typeof actionbox.request.callback == \"function\")\r\n actionbox.request.callback(false);\r\n }\r\n }).always(function () {\r\n actionbox.request.jqxhr = null;\r\n });\r\n actionbox.request.jqxhr = jqxhr;\r\n }\r\n\r\n function updateDataItems(actionbox) {\r\n if (!actionbox.request.data.Items) return;\r\n if (!actionbox.update_data_item) return;\r\n if (typeof actionbox.update_data_item != \"function\") return;\r\n\r\n let newItems = actionbox.request.data.Items.map(function (item, index) {\r\n return actionbox.update_data_item(item, index, actionbox);\r\n });\r\n actionbox.request.data.Items = newItems;\r\n }\r\n\r\n function updateWithData(actionbox) {\r\n //console.log('updateWithData', actionbox);\r\n\r\n var actionboxElement = actionbox.actionboxElement,\r\n $slider = actionbox.$slider,\r\n $template = actionboxElement.find('[data-template=\"actionbox_item\"]');\r\n\r\n var tmpl = $.templates($template.html()); // Get compiled template\r\n var data = actionbox.request.data.Items; // Define data\r\n var html = tmpl.render(data); // Render template using data - as HTML string\r\n $slider.html(html); // Insert HTML string into DOM\r\n actionbox.templates[\"actionbox_item\"] = $template;\r\n $template.detach();\r\n\r\n $template = actionboxElement.find('[data-template=\"actionbox_action\"]');\r\n if ($template.length > 0) {\r\n tmpl = $.templates($template.html()); // Get compiled template\r\n data = {}; // Define data\r\n html = tmpl.render(data); // Render template using data - as HTML string\r\n $(html).appendTo($slider); // Insert HTML string into DOM\r\n }\r\n actionbox.templates[\"actionbox_action\"] = $template;\r\n $template.detach();\r\n }\r\n\r\n\r\n var defaults = {\r\n className: 'is-actionbox-slider',\r\n elementClassName: 'action-box-slider',\r\n sliderClassName: 'slider',\r\n slideClassName: 'slide',\r\n holderClassName: 'holder',\r\n // Slick Slider options:\r\n sliderOptions: {\r\n },\r\n request: {\r\n url: '',\r\n type: 'GET',\r\n parameters: null,\r\n //jqxhr: null,\r\n //data: data,\r\n //ready: false,\r\n //failed: false,\r\n //requesting: false\r\n },\r\n update_data_item: function (item, index, actionbox) {\r\n return item;\r\n },\r\n templates: {},\r\n ga_event: '',\r\n ga_list_id: '',\r\n ga_list_name: '',\r\n },\r\n //$window = $(window),\r\n //$document = $(document),\r\n actionboxs = [],\r\n //scroller = function () {\r\n // //console.log('actionbox-slider scroller()');\r\n //},\r\n resizer = function () {\r\n //console.log('actionbox-slider resizer()');\r\n for (var i = 0, l = actionboxs.length; i < l; i++) {\r\n var s = actionboxs[i];\r\n //update_slider(s);\r\n update_slides(s);\r\n }\r\n //update sidebar after resize\r\n //scroller();\r\n },\r\n methods = {\r\n init: function (options) {\r\n return this.each(function () {\r\n var o = $.extend({}, defaults, options);\r\n var actionboxElement = $(this);\r\n\r\n let attr_ga_event = actionboxElement.attr('data-ga_event');\r\n if (attr_ga_event && attr_ga_event.length > 0) {\r\n o.ga_event = attr_ga_event;\r\n }\r\n\r\n let attr_ga_list_id = actionboxElement.attr('data-ga_list_id');\r\n if (attr_ga_list_id && attr_ga_list_id.length > 0) {\r\n o.ga_list_id = attr_ga_list_id;\r\n }\r\n\r\n let attr_ga_list_name = actionboxElement.attr('data-ga_list_name');\r\n if (attr_ga_list_name && attr_ga_list_name.length > 0) {\r\n o.ga_list_name = attr_ga_list_name;\r\n }\r\n\r\n var actionboxId = actionboxElement.attr('id');\r\n var sliderId = actionboxId ? actionboxId + '-' + defaults.sliderClassName : defaults.sliderClassName;\r\n var $slider = $('
    ')\r\n .attr('id', sliderId)\r\n .css('display', 'none')\r\n .addClass(o.sliderClassName);\r\n actionboxElement.prepend($slider);\r\n\r\n //var wrapperId = sidebarId ? sidebarId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;\r\n var wrapperId = sliderId + '__wrapper';\r\n o.wrapperClassName = o.sliderClassName + '__wrapper';\r\n var wrapper = $('
    ')\r\n .attr('id', wrapperId)\r\n .addClass(o.wrapperClassName);\r\n $slider.wrapAll(function () {\r\n if ($(this).parent(\"#\" + wrapperId).length == 0) {\r\n return wrapper;\r\n }\r\n });\r\n\r\n requestData(o);\r\n\r\n o.actionboxElement = actionboxElement;\r\n o.$slider = $slider;\r\n actionboxs.push(o);\r\n });\r\n },\r\n initSlider: function (actionbox) {\r\n var actionboxElement = actionbox.actionboxElement,\r\n $holder = actionboxElement.find('.' + actionbox.holderClassName),\r\n $slider = actionbox.$slider,\r\n slider = get_slider(actionbox);\r\n //$holder.hide();\r\n //$slider.show();\r\n if (!slider) {\r\n var $slides = actionboxElement.find('.' + actionbox.slideClassName);\r\n $slides.each(function (i) {\r\n let $slide = $(this);\r\n $slide.attr('data-abs-slide', i);\r\n $slide.parent().attr('data-abs-ref-slide', i);\r\n });\r\n\r\n $slider.on('init', function (event, slick) {\r\n // use setTimeout to execute when internal parameters are ready\r\n setTimeout(function () {\r\n slider = get_slider(actionbox);\r\n update_slides(actionbox);\r\n\r\n let maxIndex = null;\r\n if (slider && slider.options && slider.options.slidesToShow) {\r\n maxIndex = slider.options.slidesToShow;\r\n }\r\n let slidesUnveil = false;\r\n if (slider && slider.options && slider.options.slidesUnveil) {\r\n slidesUnveil = slider.options.slidesUnveil;\r\n }\r\n //console.log('maxIndex: ' + maxIndex);\r\n let $slides = actionboxElement.find('.' + actionbox.slideClassName);\r\n $slides.each(function (i) {\r\n let $slide = $(this);\r\n let $images = $slide.find('img, .lazyload');\r\n if (!$images || $images.length < 1) {\r\n return;\r\n }\r\n $images.each(function (j, el) {\r\n if (el.hasClass('lazydefer')) {\r\n el.removeClass('lazydefer');\r\n }\r\n el.style.removeProperty('visibility');\r\n el.style.removeProperty('display');\r\n\r\n if (slidesUnveil && maxIndex !== null && i < maxIndex) {\r\n // NB!: index of slide\r\n lazySizes.loader.unveil(el);\r\n }\r\n });\r\n });\r\n\r\n $holder.hide();\r\n $slider.show();\r\n actionbox.$holder = $holder;\r\n $holder.detach();\r\n\r\n update_slimmage();\r\n update_slides(actionbox);\r\n }, 128);\r\n }).on('beforeChange', function (event, slick, currentSlide, nextSlide) {\r\n //console.log(nextSlide);\r\n }).on('breakpoint', function (event, slick, breakpoint) {\r\n //console.log(breakpoint);\r\n update_slides(actionbox);\r\n }).slick(actionbox.sliderOptions);\r\n }\r\n },\r\n //update: function () {\r\n // scroller.apply(this, arguments);\r\n //},\r\n destroySlider: function (actionbox) {\r\n var actionboxElement = actionbox.actionboxElement,\r\n $holder = actionboxElement.find('.' + actionbox.holderClassName),\r\n $slider = actionbox.$slider,\r\n slider = get_slider(actionbox);\r\n if ($holder.length < 1 && actionbox.$holder) {\r\n $holder = actionbox.$holder;\r\n $holder.appendTo(actionboxElement);\r\n }\r\n $slider.hide();\r\n $holder.show();\r\n if (slider) {\r\n $slider.slick('unslick');\r\n $slider.empty();\r\n }\r\n },\r\n destroy: function (options) {\r\n return this.each(function () {\r\n var that = this;\r\n var unactionboxElement = $(that);\r\n\r\n var removeIdx = -1;\r\n var i = actionboxs.length;\r\n while (i-- > 0) {\r\n if (actionboxs[i].actionboxElement.get(0) === that) {\r\n methods.destroySlider(actionboxs[i]);\r\n actionboxs[i].$slider.unwrap();\r\n actionboxs[i].$slider.remove();\r\n actionboxs[i].$slider = null;\r\n actionboxs[i].$holder = null;\r\n //actionboxs[i].templates = {};\r\n unactionboxElement.removeClass(actionboxs[i].elementClassName);\r\n splice.call(actionboxs, i, 1);\r\n removeIdx = i;\r\n }\r\n }\r\n if (removeIdx !== -1) {\r\n // TODO smth with unactionboxElement styles on destroy\r\n //unactionboxElement.unwrap();\r\n //unactionboxElement.css({\r\n // 'width': '',\r\n // 'position': '',\r\n // 'top': '',\r\n // 'float': '',\r\n // 'z-index': ''\r\n //});\r\n }\r\n });\r\n }\r\n };\r\n\r\n // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):\r\n if (window.addEventListener) {\r\n //window.addEventListener('scroll', scroller, false);\r\n window.addEventListener('resize', resizer, false);\r\n window.addEventListener('focus', resizer, false);\r\n } else if (window.attachEvent) {\r\n //window.attachEvent('onscroll', scroller);\r\n window.attachEvent('onresize', resizer);\r\n window.attachEvent('onfocus', resizer);\r\n }\r\n\r\n $.fn.widgetSlickSlider = function (method) {\r\n if (methods[method]) {\r\n return methods[method].apply(this, slice.call(arguments, 1));\r\n } else if (typeof method === 'object' || !method) {\r\n return methods.init.apply(this, arguments);\r\n } else {\r\n $.error('Method ' + method + ' does not exist on widgetSlickSlider');\r\n }\r\n };\r\n\r\n //$(function () {\r\n // setTimeout(scroller, 0);\r\n //});\r\n})(jQuery);\r\n\r\n\r\n/*\r\nwidgetDestinationsSlider\r\n*/\r\n//AppLoader.ready(function () {\r\n$(document).ready(function () {\r\n // added some timeout to give time for processing things with higher priorities.\r\n setTimeout(function () {\r\n if ($('.widgetDestinationsSlider').length > 0) {\r\n var c = 0;\r\n $('.widgetDestinationsSlider').each(function () {\r\n var $this = $(this);\r\n var id = $this.attr('id');\r\n if (!id || id == '') {\r\n //$this.attr('id', 'widgetDestinationsSlider-' + c);\r\n $this.attr('id', 'wds-' + c);\r\n c++;\r\n }\r\n });\r\n\r\n let pageId = AppData.CurrentPageId;\r\n if (AppData.CurrentLandingPageId && AppData.CurrentLandingPageId > 0)\r\n pageId = AppData.CurrentLandingPageId;\r\n\r\n $('.widgetDestinationsSlider').widgetSlickSlider({\r\n sliderClassName: 'destinations-slider', //'actionbox__slider',\r\n slideClassName: 'destinations-slider__slide', //'actionbox__slide', \r\n holderClassName: 'placeholder', //'actionbox__holder',\r\n // Slick Slider options:\r\n sliderOptions: {\r\n arrows: true,\r\n dots: false,\r\n infinite: false,\r\n prevArrow: '
    ',\r\n nextArrow: '
    ',\r\n pauseOnFocus: false,\r\n pauseOnHover: false,\r\n swipe: true,\r\n swipeToSlide: true,\r\n speed: 600,\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n slidesSpacing: 24, // custom settings\r\n slidesFullWidth: true, // custom settings\r\n slidesUnveil: true, // custom settings\r\n //centerMode: false,\r\n variableWidth: true,\r\n rows: 0,\r\n respondTo: 'window',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 0,\r\n //settings: \"unslick\" // destroys slick\r\n settings: {\r\n arrows: false,\r\n dots: true,\r\n slidesToShow: 1,\r\n //slidesSpacing: 0,\r\n slidesFullWidth: 64.14, // custom settings\r\n //centerMode: true,\r\n }\r\n }, {\r\n breakpoint: 480,\r\n //settings: \"unslick\" // destroys slick\r\n settings: {\r\n arrows: false,\r\n dots: true,\r\n slidesToShow: 1,\r\n //slidesSpacing: 0,\r\n slidesFullWidth: 75, // custom settings\r\n //centerMode: true,\r\n }\r\n }, {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 2,\r\n //slidesSpacing: 6,\r\n slidesFullWidth: 100,\r\n //dots: true\r\n }\r\n }, {\r\n breakpoint: 1024,\r\n settings: {\r\n slidesToShow: 3,\r\n //slidesSpacing: 12,\r\n slidesFullWidth: 100,\r\n //infinite: true\r\n }\r\n }, {\r\n breakpoint: 1280,\r\n settings: {\r\n //slidesToShow: 4,\r\n //infinite: true\r\n }\r\n }]\r\n },\r\n request: {\r\n url: '/widgets-api/destinationsSlider',\r\n type: 'POST',\r\n parameters: {\r\n pageId: pageId\r\n }\r\n },\r\n update_data_item: function (item, index, actionbox) {\r\n\r\n let url = item.Url;\r\n\r\n if (typeof url != \"undefined\") {\r\n let queryString = '';\r\n\r\n let list_id = actionbox.ga_list_id;\r\n let list_name = actionbox.ga_list_name;\r\n\r\n if (list_id && list_id != '') {\r\n queryString = 'dl_ili=' + list_id;\r\n }\r\n if (list_name && list_name != '') {\r\n queryString += (queryString != '' ? '&' : '') + 'dl_iln=' + list_name;\r\n }\r\n\r\n if (queryString && queryString != '') {\r\n url = modifyQueryString(url, queryString, '');\r\n item.Url = url;\r\n }\r\n }\r\n\r\n return item;\r\n },\r\n });\r\n }\r\n }, 500);\r\n});\r\n//});\r\n\r\n/*\r\nwidgetThemesSlider\r\n*/\r\n//AppLoader.ready(function () {\r\n$(document).ready(function () {\r\n // added some timeout to give time for processing things with higher priorities.\r\n setTimeout(function () {\r\n if ($('.widgetThemesSlider').length > 0) {\r\n var c = 0;\r\n $('.widgetThemesSlider').each(function () {\r\n var $this = $(this);\r\n var id = $this.attr('id');\r\n if (!id || id == '') {\r\n //$this.attr('id', 'widgetThemesSlider-' + c);\r\n $this.attr('id', 'wts-' + c);\r\n c++;\r\n }\r\n });\r\n $('.widgetThemesSlider').widgetSlickSlider({\r\n sliderClassName: 'themes-slider', //'actionbox__slider',\r\n slideClassName: 'themes-slider__slide', //'actionbox__slide', \r\n holderClassName: 'placeholder', //'actionbox__holder',\r\n // Slick Slider options:\r\n sliderOptions: {\r\n dots: false,\r\n infinite: false,\r\n prevArrow: '
    ',\r\n nextArrow: '
    ',\r\n pauseOnFocus: false,\r\n pauseOnHover: false,\r\n swipe: true,\r\n swipeToSlide: true,\r\n speed: 600,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n slidesSpacing: 24, // custom settings\r\n variableWidth: true,\r\n rows: 0,\r\n respondTo: 'window',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 0,\r\n //settings: \"unslick\" // destroys slick\r\n settings: {\r\n slidesToShow: 1,\r\n //slidesSpacing: 0,\r\n //dots: true\r\n }\r\n }, {\r\n breakpoint: 480,\r\n //settings: \"unslick\" // destroys slick\r\n settings: {\r\n slidesToShow: 1,\r\n //slidesSpacing: 0,\r\n //dots: true\r\n }\r\n }, {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 2,\r\n //slidesSpacing: 6,\r\n //dots: true\r\n }\r\n }, {\r\n breakpoint: 1024,\r\n settings: {\r\n slidesToShow: 3,\r\n //slidesSpacing: 12,\r\n //infinite: true\r\n }\r\n }, {\r\n breakpoint: 1280,\r\n settings: {\r\n //slidesToShow: 3,\r\n //infinite: true\r\n }\r\n }]\r\n },\r\n request: {\r\n url: '/widgets-api/themes',\r\n type: 'POST',\r\n parameters: {\r\n pageId: AppData.CurrentPageId\r\n }\r\n }\r\n });\r\n }\r\n }, 500);\r\n});"],"names":["ItemCategoryType","Hotel","Flight","Car","Transfer","CancellationProtection","HotelOnly","HotelWithFlight","getPageItemListId","AppData","GoogleAnalytics","Tracking","item_list_id","getPageItemListName","item_list_name","getItemList","gl","itemList","hash","string","CryptoJS","toString","Hex","checkDataLayer","global","dataLayer","getPriceModel","hotel","isDirectFlight","priceTotal","ko","unwrap","PriceTotal","price","Value","currency","Currency","PriceTotalByType","PriceValueType","withDirectFlight","Code","value","createHotelItem","concept","Concept","conceptName","ConceptCode","Hideaways","Name","IsDirectFlight","hotelOnly","category","txtArrivalDate","arrivalDate","ArrivalDate","moment","format","destinationName","DestinationName","item_id","Id","item_name","item_brand","item_category","item_category2","DepartureAirportCode","item_category3","item_category4","item_category5","TotalPersons","id","name","quantity","createProductItems","products","items","_mapInstanceProperty","call","product","index","Category","arr","is_hotel","_includesInstanceProperty","item","code","createProductItem","createAccomodationItems","rooms","room","RoomTypeId","BoardCode","join","RoomName","BoardName","hotel_id","hotel_name","room_type_id","room_type","meal_code","meal_details","createAccomodationItem","createFlightItems","flights","flight","get_flight_type","leg","flightStops","FlightStops","legOutbound","Legs","legReturn","flightLuggageMode","FlightLuggageMode","FlightCombinationCode","outbound_flight_type","outbound_flight_airline","Carrier","return_flight_type","return_flight_airline","extra_luggage","createFlightItem","trackViewItemList","hotelResults","push","ecommerce","event","trackViewItem","hotelResult","base_price","trackAddToCart","totalPrice","TotalPrice","trackRemoveFromCart","trackBeginCheckout","trackAddPaymentInfo","user_data","payment_type","trackNewsletterSignup","trackChooseAccommodation","trackChooseFlight","trackChooseTransport","transport","transport_details","TransportMode","trackPersonalInformation","trackApprove","$","slice","_sliceInstanceProperty","Array","prototype","splice","_spliceInstanceProperty","init_slider","actionbox","actionboxElement","$holder","_findInstanceProperty","holderClassName","$slider","$images","length","each","i","el","hasClass","removeClass","style","removeProperty","hide","show","detach","$moreButton","moreButtonClassName","countRows","limits","css","window","slimmage","checkResponsiveImages","imgix","init","lazySizes","loader","checkElems","update_slimmage","AppLoader","ready","track_view_item_list","destroy_slider","appendTo","empty","ga_event","$items","request","data","Items","hotelList","hotelCard","$el","is","hotelId","attr","_parseInt","isNaN","matches","grep","HotelId","ga_item","PageId","ga_itemList","analytics","list_id","CurrentPageId","list_name","ga_list_id","ga_list_name","departureAirportCode","totalPersons","searchViewModel","updateWithData","$template","tmpl","templates","html","rows","rowIndex","rowClass","rowGroup","numInside","$row","ROW_STYLE_1","ROW_STYLE_2","ROW_STYLE_3","ROW_MAX_ITEMS","_forEachInstanceProperty","$col","addClass","is_large","maxItems","console","warn","numGrp","num_inside","update_col_style_2","update_col_style_1","Class","render","append","defaults","sliderClassName","url","type","parameters","actionboxs","methods","options","this","o","extend","attr_limits","attr_ga_event","attr_ga_list_id","attr_ga_list_name","actionboxId","sliderId","prepend","DetectIE","moreItemsClassName","on","jqxhr","abort","requesting","failed","js","jsondata","_JSON$stringify","ajax","contentType","headers","success","Redirect","RedirectUrl","ga","self","RequestType","GetRequestDetailsByParams","location","Success","callback","error","textStatus","errorThrown","always","requestData","attrItems","widgetHotelThemesBoxes","_setTimeout","destroy","get","remove","fn","method","apply","arguments","_typeof","jQuery","document","c","$this","pageId","TemplateName","moreItems","init_templates","templateName","allowCode","markup","update_lazysizes","update_moreButton","listOptions","ListOptions","TotalItems","LastCount","skip","size","NextCount","totalItems","deferLoad","inited","forceLazyload","num","helpers","moreItemsLoadClassName","$btnLoad","e","blur","deferredLoad","widgetMoreItems","hasHeadline","destinationReview","text","Headline","hasBody","ShortBody","dots","hasDestinationLink","DestinationLink","DestinationPageId","get_slider","slider","slick","update_slides","slidesSpacing","sliderOptions","slidesToShow","slidesFullWidth","responsive","slide_w","outerWidth","k","Math","abs","slideClassName","_context","update_data_item","newItems","updateDataItems","initSlider","update_slider","className","elementClassName","resizer","l","wrapperId","wrapperClassName","wrapper","wrapAll","parent","$slide","maxIndex","slidesUnveil","j","unveil","currentSlide","nextSlide","breakpoint","destroySlider","unactionboxElement","addEventListener","attachEvent","widgetSlickSlider","CurrentLandingPageId","arrows","infinite","prevArrow","nextArrow","pauseOnFocus","pauseOnHover","swipe","swipeToSlide","speed","slidesToScroll","variableWidth","respondTo","mobileFirst","settings","Url","queryString","modifyQueryString"],"sourceRoot":""}