{"version":3,"file":"booking-widget-8aab8e1de6.js","sources":["booking-widget-8aab8e1de6.js"],"sourcesContent":["import { default as adRegManagerInit } from './ad-reg.js';\r\nimport { default as helpPinInit } from './help-pin.js';\r\nimport { loader as popupsLoader, confirm, } from \"./popups.js\";\r\nimport { showMessaging } from './folks-selector.js';\r\nimport { default as flightDetailsInit, toggleFlightDetails } from './flight-details.js';\r\nimport { breakpoints, scrollTo } from \"./utilities.js\"\r\n\r\n\r\nvar bookingWidgetFactory = function() {\r\n\t// keep track of lazy request initiated by the first tab click\r\n\tvar hasLazyLoadedWidgets = false;\r\n\tvar lazyLoadWidgetRequest = null;\r\n\r\n\r\n\t// bind events for a booking widget\r\n\tvar bindBookingWidget = function(form) {\r\n\t\tvar request = null;\r\n\t\tvar wrapper = form.closest('.js-booking-widget-wrapper');\r\n\t\tvar loader = wrapper.find('.js-booking-loader');\r\n\r\n\t\t// carry on\r\n\t\tvar offset = wrapper.find('.js-booking-cal-offset');\r\n\t\tvar isMultiples = $('#js-multiples-booking').length;\r\n\r\n\t\tvar mergeFormAndQuery = function(q, f) {\r\n\t\t\tvar formLookup = (f.serialize() || \"\").split(\"&\");\r\n\t\t\tvar queryLookup = (q || \"\").split(\"&\");\r\n\r\n\t\t\tvar newQuery = formLookup.map(o => {\r\n\t\t\t\tvar kvp = o.split(\"=\");\r\n\t\t\t\treturn ({ key: kvp[0], value: kvp[1] });\r\n\t\t\t}).reduce((obj, current) => {\r\n\t\t\t\tobj[current.key] = current.value;\r\n\t\t\t\treturn obj;\r\n\t\t\t}, {})\r\n\r\n\t\t\tqueryLookup = queryLookup.map(o => {\r\n\t\t\t\tvar kvp = o.split(\"=\");\r\n\t\t\t\treturn ({ key: kvp[0], value: kvp[1] });\r\n\t\t\t});\r\n\r\n\r\n\t\t\tfor (var kvp of queryLookup) {\r\n\t\t\t\tnewQuery[kvp.key] = kvp.value;\r\n\t\t\t}\r\n\r\n\t\t\treturn Object.keys(newQuery).map(k => `${k}=${newQuery[k]}`).reduce((str, current) => `${str}&${current}`, \"\");\r\n\t\t}\r\n\r\n\t\t// update\r\n\t\tvar _update = function(moveInView, scrollToWidgetMobile, url) {\r\n\t\t\t// show loader\r\n\t\t\tif (isMultiples) {\r\n\t\t\t\tpopupsLoader();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tloader.show();\r\n\t\t\t}\r\n\r\n\t\t\t// abort prev request\r\n\t\t\tif (request != null) {\r\n\t\t\t\trequest.abort();\r\n\t\t\t\trequest = null;\r\n\t\t\t}\r\n\r\n\t\t\tvar queryString = url ? url.replace('?', '') : url;\r\n\t\t\t// new request\r\n\t\t\tqueryString = mergeFormAndQuery(queryString, form);\r\n\t\t\tconsole.log(queryString);\r\n\t\t\trequest = sendRequest({\r\n\t\t\t\tdata: queryString || form.serialize(),\r\n\t\t\t\tsuccess: function(response) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\trenderWidgets(response);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\tif (console !== 'undefined') {\r\n\t\t\t\t\t\t\tconsole.log('Error: Could not parseJSON for booking widget: booking-widget.js');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfirm('Error', 'Sorry, there was a problem finding availability. Please try again or call our sales team on ' + response.SupportTelephone + '.', '', true);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: function(e) {\r\n\t\t\t\t\tif (e.statusText != 'abort') {\r\n\t\t\t\t\t\tconfirm('Error', 'Sorry, there was an error (' + e.statusText.toLowerCase() + ').', '', true);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tcomplete: function() {\r\n\r\n\t\t\t\t\t// Remove booking widget class so that events will be re-assigned, call init immediately!\r\n\r\n\t\t\t\t\t$('.js-booking-widget-done').removeClass('js-booking-widget-done');\r\n\r\n\t\t\t\t\thelpPinInit();\r\n\t\t\t\t\tadRegManagerInit();\r\n\r\n\t\t\t\t\tif (isMultiples) {\r\n\r\n\t\t\t\t\t\t// scroll on mobile\r\n\t\t\t\t\t\tif (scrollToWidgetMobile) {\r\n\t\t\t\t\t\t\tif (window.matchMedia('(max-width: ' + breakpoints.desktop + 'px)').matches) {\r\n\t\t\t\t\t\t\t\tscrollTo($(\"#js-main-booking\").offset().top);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t//scroll to inview group on desktop\r\n\t\t\t\t\t\tif (moveInView) {\r\n\t\t\t\t\t\t\tif (window.matchMedia('(min-width: ' + breakpoints.desktop + 'px)').matches) {\r\n\t\t\t\t\t\t\t\tif ($(\".selected-group\").length) {\r\n\t\t\t\t\t\t\t\t\tscrollTo($(\".selected-group\").offset().top - 100);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// loader\r\n\t\t\t\t\t\tpopupsLoader(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tloader.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\r\n\t\t// multiples widget moves it into the viewport when we update\r\n\t\tvar _isMultiplesWidget = function(element) {\r\n\t\t\treturn element.closest('.js-property-multiples').length;\r\n\t\t}\r\n\r\n\t\t// pick a room button\r\n\t\twrapper.find('.js-booking-pick-room-button').off('click').on('click', function() {\r\n\t\t\tif (isMultiples) {\r\n\t\t\t\t// tab\r\n\t\t\t\t$('#takeover-tab').click();\r\n\t\t\t\t// scroll\r\n\t\t\t\tscrollTo($(\"#js-multiples-booking\").offset().top);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t})\r\n\r\n\t\t// selects\r\n\t\twrapper.find('.js-booking-select').off('change').on('change', function() {\r\n\t\t\t// update and move inview if multiples\r\n\t\t\t_update(_isMultiplesWidget($(this)));\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// cal dates\r\n\t\twrapper.find('.js-booking-cal-date').off('click').on('click', function() {\r\n\t\t\t// set radio\r\n\t\t\t$(this).find('.js-booking-cal-date-input').prop('checked', true);\r\n\t\t\t// update and move inview if multiples\r\n\t\t\t_update(_isMultiplesWidget($(this)), true);\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// cal prev\r\n\t\twrapper.find('.js-booking-cal-prev').off('click').on('click', function() {\r\n\t\t\t// update offset\r\n\t\t\toffset.val('-1');\r\n\t\t\t// update and move inview if multiples\r\n\t\t\t_update(_isMultiplesWidget($(this)), null, $(this).attr('href'));\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// cal next\r\n\t\twrapper.find('.js-booking-cal-next').off('click').on('click', function() {\r\n\t\t\t// update offset\r\n\t\t\toffset.val('1');\r\n\t\t\t// update and move inview if multiples\r\n\t\t\t_update(_isMultiplesWidget($(this)), null, $(this).attr('href'));\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// dropdown cal month\r\n\t\twrapper.find('.js-booking-cal-month').off('click').on('click', function() {\r\n\t\t\t// update offset\r\n\t\t\toffset.val($(this).attr('data-offset'));\r\n\t\t\t// update and move inview if multiples\r\n\t\t\t_update(_isMultiplesWidget($(this)), false, $(this).attr('href'));\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// main submit\r\n\t\twrapper.find('.js-booking-submit').off('click').on('click', function() {\r\n\r\n\t\t\tvar form = $(this).closest('form');\r\n\t\t\tvar inputElement = form.find('input[name=\"unitid\"]')\r\n\t\t\tinputElement.prop('disabled', false);\r\n\r\n\t\t\t// show loader\r\n\t\t\tpopupsLoader(false, null, true);\r\n\t\t\t// set timeout to give IE/Edge time to show gif loader\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tlocation.href = '?' + form.serialize() + '&submitButton=true';\r\n\t\t\t}, 200);\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// multiples submit\r\n\t\twrapper.find('.js-multiples-submit').off('click').on('click', function() {\r\n\t\t\t// update\r\n\t\t\t_update(true, true);\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\r\n\t\t// tabs\r\n\t\twrapper.find('.js-booking-accommodation-only-tab').off('click').on('click', function() {\r\n\t\t\t// set hidden input\r\n\t\t\twrapper.find('.js-booking-accommodation-only-input').attr('value', 'true');\r\n\t\t\t// update\r\n\t\t\t_update();\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\twrapper.find('.js-booking-package-tab').off('click').on('click', function() {\r\n\t\t\t// set hidden input\r\n\t\t\twrapper.find('.js-booking-accommodation-only-input').prop('value', 'false');\r\n\t\t\twrapper.find('#js-booking-widget-recover-from-session').attr('value', 'true');\r\n\t\t\t// update\r\n\t\t\t_update();\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// generic submit (currently only triggered by folks selector and hidden from user interface)\r\n\t\twrapper.find('.js-booking-widget-generic-submit').off('click').on('click', function() {\r\n\t\t\t// update and move inview if multiples\r\n\t\t\t_update(_isMultiplesWidget($(this)));\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\timport(\"/js/toggle-block.js\")\r\n\t\t\t.then((module) => {\r\n\t\t\t\tmodule.default();\r\n\t\t\t})\r\n\t\t\t.catch((err) => console.log(err.message));\r\n\r\n\r\n\t\t// done\r\n\t\tform.addClass('js-booking-widget-done');\r\n\t}\r\n\r\n\t// load group widgets for the first time\r\n\tvar onFirstLoad = function() {\r\n\t\tif (lazyLoadWidgetRequest !== null || hasLazyLoadedWidgets) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tpopupsLoader();\r\n\t\tvar form = $('.js-sticky-change-element.js-booking-widget:first')\r\n\r\n\t\tlazyLoadWidgetRequest = sendRequest({\r\n\t\t\tdata: form.serialize(),\r\n\t\t\tsuccess: function(response) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\trenderWidgets(response);\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tif (console !== 'undefined') {\r\n\t\t\t\t\t\tconsole.log('Error: Could not parseJSON for booking widget: booking-widget.js');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconfirm('Error', 'Sorry, there was a problem finding availability. Please try again or call our sales team on ' + response.SupportTelephone + '.', '', true);\r\n\t\t\t\t}\r\n\t\t\t\thasLazyLoadedWidgets = true;\r\n\t\t\t},\r\n\t\t\tcomplete: function() {\r\n\t\t\t\t$(\".js-booking-widget-done\").removeClass(\"js-booking-widget-done\");\r\n\t\t\t\tpopupsLoader(true);\r\n\t\t\t\tlazyLoadWidgetRequest = null;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// send a request to the booking-widget endpoint\r\n\tvar sendRequest = function(request) {\r\n\t\treturn $.ajax({\r\n\t\t\turl: '/api/booking-widget-view',\r\n\t\t\tdata: request.data,\r\n\t\t\tsuccess: request.success,\r\n\t\t\terror: request.error,\r\n\t\t\tcomplete: request.complete\r\n\t\t});\r\n\t}\r\n\r\n\tadRegManagerInit();\r\n\t$('#takeover-tab').off('click.booking-widget').on('click.booking-widget', onFirstLoad);\r\n\t$('.js-booking-widget:not(.js-booking-widget-done)').each(function() { bindBookingWidget($(this)) });\r\n}\r\n\r\n\r\nconst renderWidgets = function(response) {\r\n\tconst $response = $(response);\r\n\r\n\tconst main = '#booking-widget-main';\r\n\tconst groups = '#booking-widget-multiples';\r\n\tconst flights = '#booking-widget-selected-flights'\r\n\tconst flightPropertyId = '#js-flight-properties';\r\n\r\n\tconst mainWidget = $response.find(main);\r\n\tconst groupWidgets = $response.find(groups);\r\n\tconst selectedFlights = $response.find(flights);\r\n\r\n\t$('#js-main-booking').empty().html(mainWidget.html());\r\n\r\n\tif (groupWidgets) {\r\n\t\t$('#js-multiples-booking .m-grid__inner').html(groupWidgets.html());\r\n\t}\r\n\r\n\tconst showDetails = $('.c-flights-properties__container--active').length > 0;\r\n\r\n\t$(flightPropertyId).css(\"display\", \"none\");\r\n\tif (selectedFlights.html()) {\r\n\t\t$(flightPropertyId).empty()\r\n\t\t$(flightPropertyId).css(\"display\", \"block\");\r\n\t\t$(flightPropertyId).html(selectedFlights.html());\r\n\t\tif (showDetails) {\r\n\t\t\ttoggleFlightDetails()\r\n\t\t}\r\n\t\tflightDetailsInit();\r\n\t}\r\n\r\n\twindow.updateDynamicPhoneNumber()\r\n}\r\n\r\n\r\nexport default function() {\r\n\r\n\tbookingWidgetFactory();\r\n\r\n\twindow.site.doc.ajaxComplete(function(event, xhr, settings) {\r\n\t\tbookingWidgetFactory();\r\n\r\n\t\tif (settings && settings.url && settings.url.match('api/booking-widget-view')) {\r\n\t\t\t$('.js-folks-selector-wrapper').each(function() { showMessaging($(this)); });\r\n\t\t}\r\n\t});\r\n}\r\n\r\n"],"names":["adRegManagerInit","helpPinInit","popupsLoader","confirm","showMessaging","flightDetailsInit","toggleFlightDetails","breakpoints","scrollTo","bookingWidgetFactory","bindBookingWidget","form","_update","moveInView","scrollToWidgetMobile","url","isMultiples","loader","show","request","abort","queryString","q","f","kvp","formLookup","serialize","split","queryLookup","newQuery","map","o","key","value","reduce","obj","current","Object","keys","k","str","replace","console","log","sendRequest","data","success","response","renderWidgets","e","SupportTelephone","error","statusText","toLowerCase","complete","$","removeClass","window","matchMedia","desktop","matches","offset","top","length","hide","_isMultiplesWidget","element","closest","wrapper","find","off","on","click","this","prop","val","attr","setTimeout","location","href","import","then","module","default","catch","err","message","addClass","ajax","hasLazyLoadedWidgets","lazyLoadWidgetRequest","each","$response","flightPropertyId","mainWidget","groupWidgets","selectedFlights","showDetails","empty","html","css","updateDynamicPhoneNumber","site","doc","ajaxComplete","event","xhr","settings","match"],"mappings":"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"}