{"version":3,"file":"js/commons/layouts/microsites/iberostar_pro/application-ba4468e1187925e10219.js","mappings":"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","sources":["webpack://cms-web/./app/frontend/src/pages/lightbox_messages/lightbox_messages.js","webpack://cms-web/./app/frontend/src/microsites/iberostar_pro/elements/multi_select.js","webpack://cms-web/./app/frontend/src/shared/price_guaranteed_modal/price_guaranteed_modal.js","webpack://cms-web/./app/frontend/src/microsites/iberostar_pro/shared/filter_search.js","webpack://cms-web/./app/frontend/src/microsites/iberostar_pro/main/main.js","webpack://cms-web/./app/frontend/packs/commons/layouts/microsites/shared/phone_prefix.js","webpack://cms-web/./app/frontend/src/blocks/register_form/register_form.js","webpack://cms-web/./app/frontend/src/pages/register/register.js","webpack://cms-web/./app/frontend/src/utils/get_parameter_by_name.js","webpack://cms-web/./app/frontend/src/utils/inViewport.js","webpack://cms-web/./app/frontend/src/utils/isInViewport.js","webpack://cms-web/./app/frontend/src/utils/watch_job.js","webpack://cms-web/./app/frontend/src/vendors/urlParser/urlParser.js"],"sourcesContent":["import { getLazyData } from '../../utils/get_lazy_data';\nimport { getParameterByName } from '../../utils/get_parameter_by_name';\nimport { setCookie, readCookie } from '../../utils/cookie_manager';\n\nconst LIGHTBOX_VISIBILITY_FLAG = 'no_lb'; // must be equal to param specified in app/views/lightbox_messages/_promocode.html.erb\n\nif (shouldShowLightbox()) {\n console.log('should show lb', shouldShowLightbox());\n const GET_LIGHTBOX_ENDPOINT = `/lightbox_messages?target=${getTarget()}`;\n\n getLazyData(GET_LIGHTBOX_ENDPOINT, (response) => {\n if (response.content) {\n $.fancybox.open(response.content, {\n afterShow: () => response.type == 'wizard' && attachEvents(),\n beforeClose: function() {\n const checkbox = document.getElementById('lightbox-messages-checkbox');\n checkbox && checkbox.checked && response.id && notifyCheckSeenLightbox(response.id);\n }\n });\n } else {\n setCookie(LIGHTBOX_VISIBILITY_FLAG, true, 1); // do not check if there is any lightbox to show in the next 24h\n }\n }, 'json');\n}\n\nfunction shouldShowLightbox() {\n return readCookie(LIGHTBOX_VISIBILITY_FLAG) === undefined &&\n getParameterByName(LIGHTBOX_VISIBILITY_FLAG) === null &&\n (IB.currentPageType.isHome() || document.querySelector('[data-agency-bookings-index]'));\n}\n\nfunction getTarget() {\n if (IB.currentPageType.isHome()) return IB.currentPageType.get();\n if (document.querySelector('[data-agency-bookings-index]') !== null) return 'my_bookings';\n}\n\nfunction notifyCheckSeenLightbox(lightbox_id) {\n const CHECK_SEEN_LIGHTBOX_ENDPOINT = `lightbox_messages/${lightbox_id}`;\n getLazyData(CHECK_SEEN_LIGHTBOX_ENDPOINT, () => {}, 'json', { method: 'PUT' });\n}\n\nfunction attachEvents() {\n const nextBtns = document.getElementsByClassName('js-ligthbox-messages-next');\n let count = 1;\n\n if (nextBtns.length) {\n for (let nextBtn of nextBtns) {\n nextBtn.addEventListener('click', () => {\n document.querySelector('.lightbox-messages .active') &&\n document.querySelector('.lightbox-messages .active').classList.remove('active');\n document.querySelector(`.lightbox-messages .step-${count}`).classList.add('active');\n count++;\n })\n }\n }\n}\n","import { currentDevice } from '../../../core/utils/currentDevice'\n\n// Select tag with multiple selection\n\n// Example of html\n/*\n
\n \n

\n \n
\n*/\n\n// Updates multiselect label Selected items number\nexport const refreshMultiSelectLabel = function (multiSelectContainer) {\n const totalOptionsSelected = multiSelectContainer.querySelectorAll('.js-multi-select-option:checked').length\n const label = multiSelectContainer.querySelector('.js-multi-select-label')\n label.textContent = `${label.dataset.textSelected} (${totalOptionsSelected})`\n}\n\nexport const init = function () {\n document.querySelectorAll('.js-multi-select').forEach(multiSelect => {\n refreshMultiSelectLabel(multiSelect)\n\n const dropdownContainerSelector = multiSelect.dataset.multiselectContentSelector\n\n if (!dropdownContainerSelector) return\n\n const dropdownContainer = document.querySelector(dropdownContainerSelector)\n\n if (!dropdownContainer) return\n\n const multiSelectLabel = multiSelect.querySelector('.js-multi-select-label')\n\n function getSelectedOptions() {\n const currentOptions = multiSelect.querySelectorAll('.js-multi-select-option')\n return Array.from(currentOptions).reduce(function (filtered, option) {\n if (option.checked) {\n filtered.push(option.id)\n }\n return filtered\n }, [])\n }\n\n let optionsSelected = getSelectedOptions()\n\n // Resets options to last applied value\n function resetOptions() {\n dropdownContainer.querySelectorAll('.js-multi-select-option').forEach(option => {\n option.checked = optionsSelected.includes(option.id)\n })\n }\n\n multiSelectLabel.addEventListener('click', () => {\n dropdownContainer.classList.toggle('active')\n })\n\n dropdownContainer.querySelector('.js-multi-select-apply').addEventListener('click', () => {\n refreshMultiSelectLabel(multiSelect)\n\n optionsSelected = getSelectedOptions()\n\n dropdownContainer.classList.remove('active')\n })\n\n if (!currentDevice.isMobile) {\n // close on click outside element and input\n window.addEventListener('mousedown', function (event) {\n if (!multiSelect.contains(event.target)) {\n dropdownContainer.classList.remove('active')\n resetOptions()\n }\n })\n }\n })\n}\n\ninit()\n","import { hasParam } from '../../vendors/urlParser/urlParser'\nimport Modal from '../modal/modal'\n\nif (hasParam('form_pg_sent')) {\n Modal.show('price-guaranteed-form-sent-success', {\n onShow: () => {\n ScrollLock.on()\n },\n onClose: () => {\n ScrollLock.off()\n },\n awaitCloseAnimation: true,\n })\n}\n","const agencyFilterBlock = document.querySelector('.agency-filter-block')\nexport const BOOKINGS_DEFAULT_ORDER = 'near_to_checkin_date'\n\nconst DATE_TYPES = {\n arrival: 'arrival',\n booking: 'booking',\n}\n\nexport const getFilterValues = (page, perPage) => {\n if (!agencyFilterBlock) return {}\n\n const filterDate = {\n start: agencyFilterBlock.querySelector('.js-filter-start-date')?.value || '',\n end: agencyFilterBlock.querySelector('.js-filter-end-date')?.value || '',\n }\n\n const selectedDateType = agencyFilterBlock.querySelector('.js-filter-date-type')?.value || ''\n const clientName = agencyFilterBlock.querySelector('#client_name').value\n const hotelId = agencyFilterBlock.querySelector('#hotel_id').value\n const bookingCode = agencyFilterBlock.querySelector('#booking_code').value\n\n const filterValues = {\n ...(hotelId ? { hotel_id: hotelId } : {}),\n ...(bookingCode ? { booking_code: bookingCode } : {}),\n ...(selectedDateType === DATE_TYPES.arrival && filterDate.start ? { with_arrival_date_start: filterDate.start } : {}),\n ...(selectedDateType === DATE_TYPES.arrival && filterDate.end ? { with_arrival_date_end: filterDate.end } : {}),\n ...(selectedDateType === DATE_TYPES.booking && filterDate.start ? { with_booking_date_start: filterDate.start } : {}),\n ...(selectedDateType === DATE_TYPES.booking && filterDate.end ? { with_booking_date_end: filterDate.end } : {}),\n with_book_status: Boolean(agencyFilterBlock.querySelector('#with_book_status:checked')),\n with_cancel_status: Boolean(agencyFilterBlock.querySelector('#with_cancel_status:checked')),\n with_pending_status: Boolean(agencyFilterBlock.querySelector('#with_pending_status:checked')),\n with_payment_paid: Boolean(agencyFilterBlock.querySelector('#with_payment_paid:checked')),\n with_payment_unpaid: Boolean(agencyFilterBlock.querySelector('#with_payment_unpaid:checked')),\n ...(clientName ? { client_name: clientName } : {}),\n order_by: BOOKINGS_DEFAULT_ORDER,\n ...(page ? { page } : {}),\n ...(perPage ? { per_page: perPage } : {}),\n }\n\n return filterValues\n}\n\nexport const getFilterValuesSerialized = () => {\n const filterValues = getFilterValues()\n return new URLSearchParams(filterValues).toString()\n}\n","import '../elements/multi_select'\nimport '../../../elements/spinner/spinner.scss'\nimport '../../../shared/price_guaranteed_modal/price_guaranteed_modal'\n\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\nimport { currentDevice } from '../../../core/utils/currentDevice'\nimport inViewport from '../../../utils/inViewport'\nimport isInViewport from '../../../utils/isInViewport.js'\nimport watchJob from '../../../utils/watch_job.js'\nimport { getFilterValues, getFilterValuesSerialized } from '../shared/filter_search'\n\ndayjs.extend(customParseFormat)\n;(function ($, undefined) {\n if (typeof IB === 'undefined') {\n window.IB = {}\n } else if (IB.iberostar_pro !== undefined) {\n return\n }\n\n function init() {\n const $agents_form = $('.agents-form')\n const $formz = $agents_form.find('.formz')\n const language = document.documentElement.getAttribute('data-js-lang')\n const date_format = $('html').attr('data-date-format')\n const start_of_week = $('html').attr('data-start-of-week')\n const start_date = new dayjs().subtract(5, 'year').format(date_format)\n const end_date = new dayjs().add(2, 'year').format(date_format)\n const $el = $('.agency-filter-block')\n let $check_in = $el.find('.check-in')\n let $check_out = $el.find('.check-out')\n const is_inline = typeof $el.data('inline') !== 'undefined'\n const agency_user_name = $.cookie('agency_user_web_name')\n const $form = $('.form-wrapper')\n const $form_new_agency = $('.agents-form.register').find('form')\n const $form_users = $('.form-users')\n const $form_change_password_user = $('.change-password')\n const filterForm = document.querySelector('.js-agency-filter-form')\n\n FORMZ.required_fields.init($formz.find('[data-parsley-required]:not([data-parsley-errors-container])'))\n\n $('[data-wrapper=\"management_type\"]').hide()\n $('[data-wrapper=\"group_name\"]').hide()\n\n if (typeof agency_user_name === 'undefined' || !agency_user_name.length) {\n const $link_to_sub = $('.main-header').find('[data-show-sub-menu]')\n\n if ($link_to_sub.length) {\n $link_to_sub.removeAttr('data-show-sub-menu')\n $link_to_sub.attr('href', $link_to_sub.next('ul').find('a').first().attr('href'))\n }\n }\n\n if ($('.alert').length) {\n $form.addClass('form-wrapper--error')\n $form_new_agency.addClass('form-wrapper--error')\n } else if ($('.form-wrapper--error')) {\n $form.removeClass('form-wrapper--error')\n $form_new_agency.removeClass('form-wrapper--error')\n }\n $(document).on('click', '.alert-danger .close', function (e) {\n e.preventDefault()\n $form.removeClass('form-wrapper--error')\n $form_new_agency.removeClass('form-wrapper--error')\n })\n\n $('.agency-filter-results')\n .find('input[type=text]')\n .each(function (index, element) {\n const $this = $(this)\n if ($this.val().length) $this.addClass('with-value')\n })\n\n $el\n .find('.dates')\n .each(function () {\n $(this).dateRangePicker({\n format: date_format,\n startOfWeek: start_of_week,\n language,\n separator: ' ',\n autoClose: true,\n startDate: start_date,\n endDate: end_date,\n selectForward: true,\n hoveringTooltip: false,\n stickyMonths: true,\n minDays: 2,\n inline_mobile_panel: is_inline,\n inline: is_inline,\n // singleDate: true,\n showTopbar: false,\n getValue() {\n if ($check_in.val() && $check_out.val()) {\n return `${$check_in.val()} ${$check_out.val()}`\n }\n return ''\n },\n setValue(s, s1, s2) {\n $check_in.val(s1)\n $check_out.val(s2)\n },\n beforeShowDay(t) {\n const style = t.getDay() === 0 ? 'weekend' : ''\n return [true, style, '', true]\n },\n })\n if (is_inline) {\n $check_in = $check_in.add($('.inline-wrapper').find('.start-day'))\n $check_out = $check_out.add($('.inline-wrapper').find('.end-day'))\n }\n })\n .on('datepicker-open', function () {\n const is_date = $el.find('.dates').data('is-date')\n $check_in = $el.find('.check-in:visible')\n $check_out = $el.find('.check-out:visible')\n const datepicker_width = $('.date-picker-wrapper').width()\n const window_width = $(window).width()\n const diff = window_width - $check_in.offset().left\n $('.date-picker-wrapper').css({\n left: $check_in.closest('.input.date').offset().left - 5,\n })\n })\n .on('datepicker-first-date-selected', function (event, obj) {\n // Set checkin input value\n $el.find('.date.check-out').removeAttr('disabled')\n $check_in.removeClass('active').val(dayjs(obj.date1).format(date_format))\n $check_out.addClass('active').val('')\n const datepicker_width = $('.date-picker-wrapper').outerWidth()\n const offset_left = $('.date-picker-wrapper').offset().left\n const offset_right = datepicker_width + offset_left\n const window_width = $(window).width()\n const check_in_width = $check_in.outerWidth()\n const difference = window_width - offset_right\n\n if (check_in_width < difference) {\n $('.date-picker-wrapper').css('left', $(this).find('.input.date').last().offset().left + 15)\n }\n\n const selected_day = dayjs(obj.date1).format('DDMMYYYY')\n $el.find('.dates').data('first-day', selected_day)\n $el.find('.check-in').addClass('with-value')\n $el.find('.check-out').removeClass('with-value')\n })\n .on('datepicker-closed', function (event) {\n event.preventDefault()\n if ($el.find('.check-out').val()) $el.find('.check-out').addClass('with-value')\n validateDatesAndBookingCode()\n })\n\n $el.find('.date, .date input').on('click', function (e) {\n e.preventDefault()\n let first_day\n let last_day\n const $date = $(this)\n const is_checkin = !!($date.find('.check-in').length || $date.hasClass('.check-in'))\n const is_checkout = !!($date.find('.check-out').length || $date.hasClass('.check-out'))\n const in_val = $check_in.val()\n const out_val = $check_out.val()\n $el.find('.date').removeClass('active').find('input').removeClass('active')\n $date.addClass('active').find('input').addClass('active')\n\n if (is_checkin) {\n $el.find('.dates').data('is-date', 'check_in')\n } else if (is_checkout) {\n $el.find('.dates').data('is-date', 'check_out')\n }\n\n if (is_checkin && !out_val && in_val) {\n $el.find('.date').find('input').removeClass('active')\n $date.find('input').addClass('active')\n $date.closest('.dates').data('dateRangePicker').updateFirstDate()\n $('.date-picker-wrapper').css({\n left: $date.closest('.dates').find('.check-in').offset().left - 5,\n })\n } else if (is_checkout && !in_val) {\n $el.find('.date').removeClass('active').find('input').removeClass('active')\n return false\n } else if (is_checkout && in_val) {\n first_day = $el.find('.dates').data('first-day')\n last_day = $date.find('.check-out').val()\n $date.closest('.dates').data('dateRangePicker').updateLastDate(first_day)\n setTimeout(function () {\n $el.find('.check-out').val(last_day)\n }, 0)\n $('.date-picker-wrapper').css({\n left: $date.closest('.dates').find('.check-out').offset().left - 5,\n })\n } else if (is_checkin && out_val) {\n last_day = $('.day.last-date-selected').attr('time')\n $date.closest('.dates').data('dateRangePicker').setLastDate(last_day)\n $('.day').removeClass('hovering-permanent')\n $('.date-picker-wrapper').css({\n left: $date.closest('.dates').find('.check-in').offset().left - 5,\n })\n }\n })\n\n $el.find('.remove-dates').on('click', function (event) {\n event.preventDefault()\n event.stopPropagation()\n removeDates($el)\n })\n\n // BOOKINGS FILTERS\n // =========================================================================\n const $filterDate = $el.find('.js-filter-start-date')\n\n if ($filterDate.length) {\n const filtersContainer = $el.get(0) // transform to js object\n const filterDateContainer = filtersContainer.querySelector('.js-agency-filter-date')\n const startDate = filtersContainer.querySelector('.js-filter-start-date')\n const endDate = filtersContainer.querySelector('.js-filter-end-date')\n const removeDatesBtn = filtersContainer.querySelector('.js-filter-remove-dates')\n\n $filterDate.dateRangePicker({\n autoClose: true,\n format: date_format,\n startOfWeek: start_of_week,\n language,\n showTopbar: false,\n selectForward: true,\n hoveringTooltip: false,\n stickyMonths: true,\n singleMonth: true,\n setValue(s, s1, s2) {\n startDate.value = s1 || ''\n endDate.value = s2 || ''\n },\n getValue() {\n if (startDate.value && endDate.value) return `${startDate.value} to ${endDate.value}`\n return ''\n },\n })\n\n $filterDate.on('datepicker-change', function (event, obj) {\n filterDateContainer.classList.add('has-value')\n })\n\n removeDatesBtn.addEventListener('click', () => {\n filterDateContainer.classList.remove('has-value')\n $filterDate.data('dateRangePicker').clear()\n })\n }\n\n $('.booking-code input, .client input').on('keyup', function () {\n const $this = $(this)\n const val = $this.val()\n if (val) {\n $this.addClass('with-value')\n } else {\n $this.removeClass('with-value')\n }\n validateDatesAndBookingCode()\n })\n\n $('.apply-bookings-filters').on('click', function (e) {\n e.preventDefault()\n\n const serializedFilterValues = getFilterValuesSerialized()\n\n window.location.href = `${location.protocol}//${location.host}${location.pathname}?${serializedFilterValues}`\n })\n\n function removeDates($element) {\n if ($element.find('.dates').data('dateRangePicker')) {\n $element.find('.dates').data('dateRangePicker').clear()\n }\n $element.find('.check-in').removeClass('with-value')\n $element.find('.check-out').removeClass('with-value')\n }\n\n $('.booking-code input').on('keyup', function () {\n validateDatesAndBookingCode()\n })\n\n function validateDatesAndBookingCode() {\n if ($el.find('.booking-code input').val() || ($check_in.val() && $check_out.val())) {\n $el.find('.item.dates').removeClass('error')\n $el.find('.error-form').hide()\n $el.find('.reset-wrap').removeClass('hide')\n return true\n }\n $el.find('.item.dates').addClass('error')\n $el.find('.error-form').show()\n return false\n }\n\n document.querySelector('.js-trigger-filters')?.addEventListener('click', function () {\n if (!filterForm) return\n\n if (currentDevice.isMobile) {\n $.fancybox.open($(filterForm))\n } else {\n filterForm.classList.toggle('is-collapsed')\n }\n })\n\n // Reset button should be visible on load if any filter is applied\n function setRemoveFiltersButtonVisibility() {\n if (!filterForm) return\n\n const resetWrap = filterForm.querySelector('.js-reset-wrap')\n const isAnyCheckboxChecked = filterForm.querySelectorAll('.js-multi-select-option:checked')\n\n if (isAnyCheckboxChecked.length) {\n resetWrap.classList.remove('is-hidden')\n return\n }\n\n const allFilterInputs = filterForm.querySelectorAll('.js-filter-hotel, input[type=text]')\n const hasAnyInputValue = [...allFilterInputs].some(input => input.value !== '')\n resetWrap.classList.toggle('is-hidden', !hasAnyInputValue)\n }\n\n setRemoveFiltersButtonVisibility()\n\n $(document).on('click', '.agency-filter-block .reset', function (e) {\n e.preventDefault()\n\n if (!filterForm) return\n\n filterForm.querySelector('.js-filter-hotel').value = ''\n\n filterForm.querySelectorAll('input[type=text]').forEach(function (elem) {\n elem.value = ''\n elem.classList.remove('with-value')\n })\n\n filterForm.querySelectorAll('.js-multi-select-option:checked').forEach(function (elem) {\n elem.checked = false\n })\n\n filterForm.querySelectorAll('.js-multi-select-apply').forEach(function (elem) {\n elem.click()\n })\n\n filterForm.querySelector('.js-filter-remove-dates').click()\n\n filterForm.querySelector('.js-reset-wrap').classList.add('is-hidden')\n })\n\n $(document).on('click', '#same_comercial_data_yes', function () {\n $('#comercial-data').addClass('hidden')\n })\n $(document).on('click', '#same_comercial_data_no', function () {\n $('#comercial-data').removeClass('hidden')\n })\n\n // GET BOOKINGS\n // =========================================================================\n let htmlBookings = ''\n const $bookingsContainer = document.querySelector('.js-bookings-list')\n\n const spinner1 = $('.js-seg')\n const spinner2 = $('.js-min')\n let bookingsSpinnerTimeout\n const $jobSpinner = document.querySelector('.js-job-spinner')\n\n let page = parseInt($('#bookings_job_page').val())\n let prefix = document.querySelector('html').getAttribute('prefix')\n prefix = prefix !== '/' && prefix !== '/es' ? prefix : ''\n\n let url = ''\n let currentSpinnerObserver\n let firstResponseWithContent = false\n\n const handleNextPageRequest = () => {\n if (isInViewport($jobSpinner)) {\n // If spinner is in viewport requests next page\n page = page + 1\n ajax_job_call(getBookings, page)\n\n // Reset spinner messages\n htmlBookings.length && resetSpinner()\n } else {\n // If spinner is not in viewport creates observer to request next page when intersects\n currentSpinnerObserver = inViewport(\n $jobSpinner,\n element => {\n if (element.isIntersecting) {\n // Shut down current observer\n currentSpinnerObserver.unobserve($jobSpinner)\n // Request next page\n page = page + 1\n ajax_job_call(getBookings, page)\n // Reset spinner messages\n htmlBookings.length && resetSpinner()\n }\n },\n { threshold: 0.5 }\n )\n }\n }\n\n const initializeBookingItems = () => {\n $('.booking-options .formikation').find('input[type=checkbox], input[type=radio], select').not('.chosen-select').formikation()\n $('.print-trigger').on('click', function () {\n $(this).toggleClass('active').find('.print-dropdown').toggleClass('active')\n })\n $('.print-trigger').on('mouseleave', function () {\n $(this).removeClass('active').find('.print-dropdown').removeClass('active')\n })\n }\n\n const getBookings = (jid, page) => {\n url = `${prefix}/agency_bookings_jobs/${jid}/?page=${page}`\n\n watchJob({\n url,\n timeout: 2000,\n onResponse: response => {\n // When responds with a partial or a complete response\n const parsedResponse = JSON.parse(response)\n if (parsedResponse.total_bookings != null) {\n $('.js-total-bookings').text(`(${parsedResponse.total_bookings}):`)\n }\n },\n onPartialResponse: response => {\n // When responds with a partial response\n const parsedResponse = JSON.parse(response)\n\n // Append html\n if (parsedResponse.html_replacement && parsedResponse.html_replacement != '\"\"') {\n $bookingsContainer.innerHTML = htmlBookings + JSON.parse(parsedResponse.html_replacement)\n initializeBookingItems()\n resetSpinner()\n\n !firstResponseWithContent && (firstResponseWithContent = true)\n\n if (firstResponseWithContent) {\n $('.bookings-header').show()\n $('.export-wrap').show()\n }\n\n document.dispatchEvent(new CustomEvent('loadedReserve', { detail: { message: 'Added booking to html.' } }))\n }\n },\n onComplete: response => {\n // When responds with a complete response\n const parsedResponse = JSON.parse(response)\n\n const hasValue = value => value || value === 0 || value === '0'\n\n const currentPage = hasValue(parsedResponse.page) ? parseInt(parsedResponse.page, 10) : -1\n const totalPages = hasValue(parsedResponse.total_booking_pages) ? parseInt(parsedResponse.total_booking_pages, 10) : -1\n\n if (!htmlBookings.length && parsedResponse.read_timeout) {\n $('.agency-no-bookings-title').toggleClass('hidden')\n $('.bookings-timeout-title').toggleClass('hidden')\n }\n\n if (parsedResponse.html_replacement && parsedResponse.html_replacement != '\"\"') {\n htmlBookings += JSON.parse(parsedResponse.html_replacement)\n $bookingsContainer.innerHTML = htmlBookings\n initializeBookingItems()\n }\n\n if (currentPage !== -1 && totalPages !== -1) {\n // All requests finished\n if (parseInt(parsedResponse.page) >= parseInt(parsedResponse.total_booking_pages)) {\n $jobSpinner.classList.add('is-hidden')\n spinner1.addClass('hidden')\n spinner2.addClass('hidden')\n\n // If there are no bookings, show \"no reservations\" container\n if (!htmlBookings.length) {\n $('.agency-no-bookings').toggleClass('hidden')\n $('.export-wrap').hide()\n }\n } else {\n handleNextPageRequest()\n }\n }\n\n document.dispatchEvent(new CustomEvent('loadedReserve', { detail: { message: 'Completed add booking to html.' } }))\n },\n })\n }\n\n if ($bookingsContainer && $('#bookings_job_id').length > 0) {\n getBookings($('#bookings_job_id').val(), page)\n setTimeout(function () {\n spinner1.addClass('hidden')\n spinner2.removeClass('hidden')\n }, 10000)\n $('.bookings-header').hide()\n }\n\n function resetSpinner() {\n bookingsSpinnerTimeout && clearTimeout(bookingsSpinnerTimeout)\n spinner1.removeClass('hidden')\n spinner2.addClass('hidden')\n bookingsSpinnerTimeout = setTimeout(function () {\n spinner1.addClass('hidden')\n spinner2.removeClass('hidden')\n }, 10000)\n }\n $('.export-csv-link').on('click', function (e) {\n if ($('.export-csv-link').attr('href') == '#') {\n e.preventDefault()\n toogleExportLink(false)\n ajax_job_call(watchXlsJob, 1, -1)\n }\n })\n\n function toogleExportLink(show = true) {\n if (show) {\n $('.export-csv-link-wrapper').removeClass('hidden')\n $('.spinner').addClass('hidden')\n } else {\n $('.export-csv-link-wrapper').addClass('hidden')\n $('.spinner').removeClass('hidden')\n }\n }\n\n function watchXlsJob(jid) {\n url = `${prefix}/agency_bookings_jobs/${jid}/`\n $.getJSON(url, function (job) {\n toogleExportLink(false)\n // While the job is not finished\n if (job.at != job.total) {\n setTimeout(function () {\n watchXlsJob(jid)\n }, 5000)\n } else {\n const $exportLink = $('.export-csv-link')\n toogleExportLink(true)\n $('.bookings-header').show()\n window.open(job.bookings_xls, '_blank')\n $exportLink.attr({ href: job.bookings_xls, target: '_blank' })\n $exportLink.closest('.link').addClass('is-download-ready')\n }\n }).done(function () {})\n }\n\n function ajax_job_call(callback, page, per_page) {\n const agencyFilterBlock = document.querySelector('.agency-filter-block')\n\n if (!agencyFilterBlock) return\n\n const params = getFilterValues(page, per_page)\n\n const url = `${prefix}/agency_bookings_jobs`\n\n $.ajax({\n type: 'POST',\n url,\n data: params,\n dataType: 'json',\n success(data) {\n const jid = data.job_id\n callback(jid, page)\n },\n error(result) {\n console.log('Error calling agency_bookings_jobs')\n },\n })\n }\n\n $('#permanent_login').on('change', function () {\n if (this.checked) {\n dataLayer.push(JSON.parse($(this).attr('data-gtm-custom')))\n }\n })\n\n // AGENTS' REGISTRY FROM\n // =========================================================================\n\n function chain_agency_form_fields(country_selector, community_selector, province_selector, settlement_selector, code_selector) {\n const $country = $(country_selector)\n const $community = $(community_selector)\n const $province = $(province_selector)\n const $settlement = $(settlement_selector)\n const $postal_code = $(code_selector)\n\n const text_to_substitute = 'Otros'\n\n if ($country.length > 0 && $community.length > 0) {\n $country.on('change', function () {\n if ($postal_code) {\n $postal_code.trigger('change')\n }\n $community.val($community.find('option:first').val())\n $province.val($province.find('option:first').val())\n $settlement.val($settlement.find('option:first').val())\n $community.addClass('disabled').attr('disabled', 'disabled').closest('.input-text').addClass('loading')\n $community.trigger('formikation.update')\n if ($country.val() != '') {\n $.getJSON(`/ajax_content/communities_by_country_id?country_id=${$country.val()}`, function (response) {\n if (response != null) {\n const first_option = $community.find('option:first-child')\n $community.empty().append(first_option)\n for (let i = 0; i < response.length; i++) {\n let option_text = response[i][0]\n if (option_text == text_to_substitute) option_text = $country.children('option:selected').text()\n $community.append(``)\n }\n }\n $community.removeClass('disabled').attr('disabled', false).closest('.input-text').removeClass('loading')\n })\n }\n })\n }\n\n if ($community.length > 0 && $province.length > 0) {\n $community.on('change', function () {\n $province.val($province.find('option:first').val())\n $settlement.val($settlement.find('option:first').val())\n $province.addClass('disabled').attr('disabled', 'disabled').closest('.input-text').addClass('loading')\n $province.trigger('formikation.update')\n if ($community.val() != '') {\n $.getJSON(`/ajax_content/provinces_by_community_id?community_id=${$community.val()}`, function (response) {\n if (response != null) {\n const first_option = $province.find('option:first-child')\n $province.empty().append(first_option)\n for (let i = 0; i < response.length; i++) {\n let option_text = response[i][0]\n if (option_text == text_to_substitute) option_text = $country.children('option:selected').text()\n $province.append(``)\n }\n }\n $province.removeClass('disabled').attr('disabled', false).closest('.input-text').removeClass('loading')\n })\n }\n })\n }\n\n if ($province.length > 0 && $settlement.length > 0) {\n $province.on('change', function () {\n $settlement.val($settlement.find('option:first').val())\n $settlement.addClass('disabled').attr('disabled', 'disabled').closest('.input-text').addClass('loading')\n $settlement.trigger('formikation.update')\n if ($province.val() != '') {\n $.getJSON(`/ajax_content/settlements_by_province_id?province_id=${$province.val()}`, function (response) {\n if (response != null) {\n const first_option = $settlement.find('option:first-child')\n $settlement.empty().append(first_option)\n for (let i = 0; i < response.length; i++) {\n let option_text = response[i][0]\n if (option_text == text_to_substitute) option_text = $country.children('option:selected').text()\n $settlement.append(``)\n }\n }\n $settlement.removeClass('disabled').attr('disabled', false).closest('.input-text').removeClass('loading')\n })\n }\n })\n }\n\n $settlement.on('change', function () {\n if ($postal_code) {\n $postal_code.trigger('change')\n }\n })\n\n if ($country.length > 0 && $postal_code.length > 0) {\n $postal_code.on('change', function () {\n $postal_code.removeClass('parsley-error')\n })\n }\n }\n\n function addData() {\n // copies second step's selectors values into third step's\n const selectors = ['country', 'province', 'community', 'settlement']\n let i = selectors.length\n let $current\n let curr_val\n let curr_text\n let $opt\n let $commercial_select\n\n while (i--) {\n $current = $(`[name=\"${selectors[i]}\"]`)\n curr_val = $current.val()\n ;(curr_text = $current.find('option:selected').text()), ($commercial_select = $(`[name=\"comercial_${selectors[i]}\"]`))\n\n if ($commercial_select.find('option').length === 1) {\n $commercial_select.append(``)\n } else {\n $opt = $current.find(`option:contains(\"${curr_text}\")`)\n $commercial_select.val($opt.val())\n }\n }\n\n // copies second step's inputs values into third step's\n $('[name=\"comercial_name\"]').val($('[name=\"name\"]').val())\n $('[name=\"comercial_address\"]').val($('[name=\"address\"]').val())\n $('[name=\"comercial_postal_code\"]').val($('[name=\"postal_code\"]').val())\n $('[name=\"comercial_phone_number\"]').val($('[name=\"phone_number\"]').val())\n $('[name=\"comercial_email\"]').val($('[name=\"email\"]').val())\n\n chain_agency_form_fields(\n '[name=\"comercial_country\"]',\n '[name=\"comercial_community\"]',\n '[name=\"comercial_province\"]',\n '[name=\"comercial_settlement\"]',\n '[name=\"comercial_postal_code\"]'\n )\n }\n\n function agency_form_cif_validation(cif_selector, name_selector, country_selector) {\n const $country = $(country_selector)\n const $name = $(name_selector)\n const $cif = $(cif_selector)\n\n if ($country.length > 0 && $name.length > 0 && $cif.length > 0) {\n $(`${country_selector}, ${name_selector}, ${cif_selector}`).on('change', function () {\n if ($country.val() == '56' && $name.val() != '' && $cif.val() != '') {\n $.getJSON(`/ajax_content/cif_code_info?code=${$cif.val()}&name=${$name.val()}`, function (response) {\n if (response === null) {\n $cif.removeClass('parsley-error')\n $name.removeClass('parsley-error')\n } else {\n // If all parameters of AJAX call are OK\n if (response['agency_user'].StatusValue == 'OK') {\n // If one contributor is returned in response at least\n if (response['agency_user'].Contributors !== 'undefined') {\n const contributor = response['agency_user'].Contributors[0]\n // If we identify contributor and it is valid in our application\n // Note: Valid constributors are those ones who matches CIF code (name dont have to match exactly)\n if (\n contributor.resultadoField == 'IDENTIFICADO' ||\n contributor.resultadoField == 'NO IDENTIFICADO-SIMILAR' ||\n contributor.resultadoField == 'IDENTIFICADO-REVOCADO'\n ) {\n $name.removeClass('parsley-error')\n $cif.removeClass('parsley-error')\n if (/^[ABCDEFGHKLMNPQSX]/.test($cif.val().substr(0, 1)) && $name.val().toUpperCase() != contributor.nombreField) {\n $name.val(contributor.nombreField)\n }\n } else {\n // Set both fields as invalid because its not know which field is invalid\n $name.addClass('parsley-error')\n $cif.addClass('parsley-error')\n }\n }\n // If no contributor sent in response\n else {\n // Set both fields as invalid because its not know which field is invalid\n $name.addClass('parsley-error')\n $cif.addClass('parsley-error')\n }\n }\n // If parameters of AJAX call are NOK\n else if (response['agency_user'].StatusValue == 'NOK') {\n // Set both fields as invalid because its not know which field is invalid\n $name.addClass('parsley-error')\n $cif.addClass('parsley-error')\n }\n }\n })\n } else {\n $cif.removeClass('parsley-error')\n $name.removeClass('parsley-error')\n }\n })\n }\n }\n\n function deleteData() {\n $('[name=\"comercial_country\"], [name=\"comercial_province\"],[name=\"comercial_community\"], [name=\"comercial_community\"], [name=\"comercial_settlement\"] ').val('')\n $('.comercial-data')\n .find('[name=\"comercial_country\"], [name=\"comercial_province\"],[name=\"comercial_community\"], [name=\"comercial_community\"], [name=\"comercial_settlement\"]')\n .val('')\n $(\n '[name=\"comercial_name\"], [name=\"comercial_address\"], [name=\"comercial_postal_code\"], [name=\"comercial_postal_code\"], [name=\"comercial_fax\"], [name=\"comercial_phone_number\"], [name=\"comercial_email\"]'\n ).val('')\n }\n\n $('#commercialCheck').on('change', function () {\n if (this.checked) {\n addData()\n } else {\n deleteData()\n }\n })\n\n $('#business_type').on('change', function () {\n if ($(this).val() == 1) {\n // Agencia\n $('[data-wrapper=\"management_type\"]').show()\n $('#management_type').attr('data-parsley-required', 'true')\n $formz.parsley().refresh()\n } else {\n // Empresa o touroperador\n $('[data-wrapper=\"management_type\"], [data-wrapper=\"group_name\"]').hide()\n $('#management_type').removeAttr('data-parsley-required')\n $formz.parsley().refresh()\n }\n FORMZ.required_fields.init($formz.find('[data-parsley-required]:not([data-parsley-errors-container])'))\n })\n\n $('#management_type').on('change', function () {\n if ($(this).val() == 1) {\n $('[data-wrapper=\"group_name\"]').show()\n } else {\n $('[data-wrapper=\"group_name\"]').hide()\n }\n })\n $form_new_agency.on('submit', function () {\n $.fancybox.open($('#loading-register'))\n })\n $form_change_password_user.on('submit', function () {\n $.fancybox.open($('#ok-password-change'))\n })\n $form_users.on('submit', function () {\n $.fancybox.open($('#in-changes'))\n })\n if ($agents_form.length > 0) {\n chain_agency_form_fields('#country.chained', '#community.chained', '#province.chained', '#settlement.chained', '#postal_code.validate-on-leave')\n chain_agency_form_fields(\n '#comercial_country.chained',\n '#comercial_community.chained',\n '#comercial_province.chained',\n '#comercial_settlement.chained',\n '#comercial_postal_code.validate-on-leave'\n )\n agency_form_cif_validation('#cif', '#name', '#country.chained')\n chain_agency_form_fields(\n '#iberostar_api_agency_user_comercial_country',\n '#iberostar_api_agency_user_agencomcomm',\n '#iberostar_api_agency_user_agencomprov',\n '#iberostar_api_agency_user_agencompob',\n '#iberostar_api_agency_user_agencomcp'\n )\n chain_agency_form_fields(\n '#not_needed',\n '#iberostar_api_agency_user_agencomm',\n '#iberostar_api_agency_user_agenprov',\n '#iberostar_api_agency_user_agenpob',\n '#iberostar_api_agency_user_agencp'\n )\n // chain_agency_form_fields(\"#iberostar_api_agency_user_paiscodi\", \"#iberostar_api_agency_user_agenprov\", \"#iberostar_api_agency_user_agencomprov\", \"#iberostar_api_agency_user_agenpob\", \"#iberostar_api_agency_user_agencp\");\n\n if ($('#postal_code').length > 0) {\n Parsley.addValidator('zip', {\n validateString(value, _ignoreValue, instance) {\n return !$(instance.element).hasClass('parsley-error')\n },\n })\n }\n if ($('#group_name').length > 0) {\n $('#management_type').on('change', function () {\n if ($(this).val() === '1') {\n $('#group_name').attr('data-parsley-required', 'true').closest('.fz-field').find('.t-fb-label').addClass('required-mark')\n FORMZ.required_fields.init($('#group_name'))\n /* Errors will be displayed on nearest fz-error-conytainer */\n const parsley_config = {\n errorsContainer(pe) {\n const $err = pe.$element.closest('.fz-col').find('.fz-error-container')\n return $err\n },\n }\n } else {\n $('#group_name').removeAttr('data-parsley-required').closest('.fz-field').find('.t-fb-label').removeClass('required-mark')\n }\n })\n }\n }\n }\n\n $(document).on('keyup', '.password-row input.password, .password-row input#password', function () {\n const $el = $(this)\n if ($el.hasClass('parsley-success')) {\n $el.closest('.password-row').find('.validation-errors').addClass('hidden')\n $el.closest('.password-row').find('.validation-success').removeClass('hidden')\n } else {\n $el.closest('.password-row').find('.validation-errors').removeClass('hidden')\n $el.closest('.password-row').find('.validation-success').addClass('hidden')\n }\n })\n\n /**\n * This on click event show and hide the steps into register form when title is clicked\n */\n $(document).on('click', '.session-page .block-form .introduction-module', function () {\n const $el = $(this)\n const $content = $el.closest('.form-wrapper').find('.section-wrap')\n if ($content.hasClass('close')) {\n $content.removeClass('close').slideDown()\n $content.find('.row').addClass('active')\n $el.removeClass('close')\n } else {\n $content.addClass('close').slideUp()\n $content.find('.row').removeClass('active')\n $el.addClass('close')\n }\n })\n\n /**\n * This on click event removes flash_message into register form when close icon is clicked\n */\n $(document).on('click', '.wrapper-flash a.close.s.s-close-fat', function (e) {\n $('.alert.alert-danger').remove()\n $('.alert.alert-notice').remove()\n $('.alert.alert-success').remove()\n })\n\n IB.iberostar_pro = {\n init,\n }\n})(jQuery)\n\n$(function () {\n /** Iberostar Pro home doesnt need to init this JS until register form is loaded */\n if ($('.iberostarpro-home .container-parallax').length) return\n IB.iberostar_pro.init()\n})\n","(() => {\n const COUNTRY_OTHERS_OPTION_VALUE = '996';\n\n document.addEventListener('input', function (event) {\n\n const isCountrySelector = event.target.nodeName === 'SELECT' && event.target.classList.contains('js-country-selector');\n\n if (!isCountrySelector) return;\n\n const countrySelector = event.target;\n const syncWith = countrySelector.dataset.valueSyncWithSelector;\n\n if (!syncWith) return;\n\n const selectedCountryCode = countrySelector.value;\n\n document.querySelectorAll(syncWith)?.forEach((target) => {\n const newValue = target.querySelector(`[data-country=\"${selectedCountryCode}\"]`)?.value;\n newValue !== COUNTRY_OTHERS_OPTION_VALUE && (target.value = newValue);\n });\n });\n})()\n","let $register_form = $('.b-register-form');\nlet halfs = [0, 1, 5, 6];\nlet thirds = [2, 3, 4];\nlet only = [2];\n$register_form.find('.register .fz-row').each(function (i) {\n if (halfs.indexOf(i) != -1) $(this).addClass('half');\n if (thirds.indexOf(i) != -1) $(this).addClass('third');\n if (only.indexOf(i) != -1) $(this).addClass('only');\n});\n$register_form.find('.textual-content').remove();\n// para añadir cuando esten hechas las RRSS $('.row.actions').append('¿Prefieres registrarte con tus redes sociales?');\n$register_form.find('.block-form').addClass('show visible');\n\n$(document).on('click', '.b-register-form .switch-links', function () {\n let blocks = { hiddenBlock: '.rrss-form', visibleBlock: '.block-form' };\n if ($(this).attr('id') === 'linkto_rrss') {\n let aux = blocks.hiddenBlock;\n blocks.hiddenBlock = blocks.visibleBlock;\n blocks.visibleBlock = aux;\n }\n $(blocks.hiddenBlock).removeClass('show visible');\n $(blocks.visibleBlock).addClass('show');\n setTimeout(function () {\n $(blocks.visibleBlock).addClass('visible');\n }, 100);\n});\n\n\n$(document).on('click', 'a[data-link=\"profiling\"]', function (e) {\n $('[data-link=\"profiling-anchor\"]').each(function () {\n $(this).show('slow');\n });\n});\n\n$(document).on('click', '#link-form-here', function (e) {\n var noSpam = document.querySelector('.content-spam');\n noSpam.classList.toggle('spam');\n});\n","/* eslint-disable no-jquery/no-data */\n/* eslint-disable no-jquery/no-jquery-constructor */\n/* eslint-disable no-jquery/no-other-methods */\n/* eslint-disable no-jquery/no-each-collection */\n/* eslint-disable no-jquery/no-attr */\n/*no*/\nimport '../../blocks/register_form/register_form'\n\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\nimport { currentDevice } from '../../core/utils/currentDevice'\nimport Modal from '../../shared/modal/modal'\n\ndayjs.extend(customParseFormat)\n;(function () {\n // Variable to store date field intersection status\n let isIntersecting = false\n\n if (typeof IB === 'undefined') {\n window.IB = {}\n } else if (typeof IB.forms === 'undefined') {\n IB.forms = {}\n } else if (typeof IB.forms.register_form !== 'undefined') {\n return\n }\n\n function init() {\n const $birth_date = $('.single-datepicker-birth-date')\n if ($birth_date.length > 0) {\n const language = document.documentElement.getAttribute('data-js-lang')\n const date_format = $('html').attr('data-date-format')\n const start_of_week = $('html').attr('data-start-of-week')\n\n $birth_date.each(function (index, el) {\n if ($(el).data('dateRangePicker')) {\n $(el).data('dateRangePicker').destroy()\n }\n $(el)\n .dateRangePicker({\n autoClose: true,\n format: date_format,\n startOfWeek: start_of_week,\n language,\n showDropdowns: true,\n startDate: new dayjs().subtract(100, 'years').format(date_format),\n endDate: new dayjs().subtract(18, 'years').format(date_format),\n minYear: new dayjs().year() - 100,\n maxYear: new dayjs().year() - 18,\n defaultTime: new dayjs().subtract(18, 'years').format(date_format),\n singleDate: true,\n singleMonth: true,\n selectBackward: true,\n showTopbar: false,\n })\n .on('datepicker-open', function () {\n // Lock Scroll on datepicker open only in mobile\n currentDevice.isMobile && ScrollLock.on()\n const offset_left = $(el).offset().left\n $('.date-picker-wrapper').css('left', offset_left)\n // When the calendar is opened, set this variable to true to prevent\n // the datepicker from closing on scroll until the intersection observer\n // detects a new intersection between both elements\n isIntersecting = true\n if ($(el).val() === '') {\n const date = new dayjs().subtract(18, 'years').format(date_format)\n $(el).data('dateRangePicker').setDateRange(date, date)\n }\n })\n .on('datepicker-opened', function (ev, picker) {\n $(this).prop('readonly', true)\n })\n .on('datepicker-first-date-selected', function (ev, picker) {\n $(this).prop('readonly', false)\n $(this).val(dayjs(picker.time).format(date_format)).trigger('change')\n $(el).closest('form').parsley().validate('datepicker')\n })\n .on('datepicker-close', function () {\n // Unlock Scroll on datepicker close only in mobile\n currentDevice.isMobile && ScrollLock.off()\n })\n\n $(el).on('focus', function () {\n $(el).data('dateRangePicker').open()\n })\n\n // PY04776-533 - 761157 - Calendario de registro se descoloca\n // Fix bug that if the postregister modal is closed and the data picker is open, the data picker closes as well.\n $('[data-fancybox-close]').on('click', function () {\n $(el).data('dateRangePicker').close()\n })\n })\n }\n\n // Depending on the device type, the observer should be fired differently.\n // Add .register class for the register form in star agents\n const PARENT_SCROLL_SELECTOR = `${\n currentDevice.isMobile ? '.js-login-registration-lightbox' : '.session-tab-registration'\n }, .second-layer.register`\n\n // Initialize the observer\n var observer = new IntersectionObserver(\n entries => {\n isIntersecting = entries[0].isIntersecting\n },\n {\n root: null,\n threshold: 1,\n rootMargin: '0px 0px -280px 0px',\n }\n )\n\n // Listen for scroll in the register form.\n // Depending on the device type, the scroll event will be fired differently.\n if ($birth_date[0] !== undefined) {\n // Set the element to observe\n observer.observe(document.querySelector('.single-datepicker-birth-date'))\n // Lister for scroll to calculate the position of the calendar or close it\n $birth_date[0].closest(PARENT_SCROLL_SELECTOR)?.addEventListener('scroll', e => {\n if (isIntersecting) {\n // While the field is visible, change the position of the calendar.\n $birth_date.data('dateRangePicker').calcPosition()\n } else {\n // If the field is not visible, close the calendar.\n $birth_date.data('dateRangePicker').close()\n }\n })\n }\n\n // Modal con vídeo para el formulario de registro de Iberostar PRO\n // --> PY04777-688: 747192 - Tutorial Alta en registro de alta\n const videoLink = document.querySelector('.js-video-module')\n const videoPlay = document.querySelector('.modal-play')\n\n videoLink?.addEventListener('click', function (e) {\n e.preventDefault()\n Modal.show('video-tutorial-register', {\n onShow: () => {\n videoPlay.play()\n },\n onClose: () => {\n videoPlay.pause()\n },\n awaitCloseAnimation: true,\n })\n })\n }\n\n window.IB.forms.register_form = {\n init,\n }\n\n // Inialize the register form only in the iberostar pro microsite\n const userRegisterForm = document.querySelector('.form-users')\n if (IB.current_microsite === 'iberostar_pro' && userRegisterForm) {\n init()\n }\n})()\n","export function getParameterByName(name) {\n const url = window.location.href\n name = name.replace(/[\\[\\]]/g, '\\\\$&')\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`)\n const results = regex.exec(url)\n if (!results) return null\n if (!results[2]) return ''\n return decodeURIComponent(results[2].replace(/\\+/g, ' '))\n}\n","/**\n * Observes an element's visibility in viewport.\n *\n * @param {*} elem\n * @param {*} callback - function to execute when it detects that an element's visibility has crossed one or more thresholds\n * @param {*} options - see available options on https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @example\n inViewport('.target', (element) => {\n console.log(`Element is visible? ${element.isIntersecting}`)\n }, {\n root: document.querySelector('.scroll')\n })\n *\n */\nconst inViewport = (elem, callback, options = {}) => {\n const observerInstance = new IntersectionObserver(entries => {\n entries.forEach(entry => callback(entry))\n }, options)\n observerInstance.observe(elem)\n return observerInstance\n}\n\nexport default inViewport\n","\n/**!\n * Determine if an element is in the viewport\n * (c) 2017 Chris Ferdinandi, MIT License, https://gomakethings.com\n * @param {Node} elem The element\n * @return {Boolean} Returns true if element is in the viewport\n */\nconst isInViewport = function (elem) {\n const distance = elem.getBoundingClientRect();\n return (\n distance.top >= 0 &&\n distance.left >= 0 &&\n distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n distance.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n};\n\nexport default isInViewport;\n","\nimport { getLazyData } from './get_lazy_data'\n\n/**\n * Makes a job request and watchs for its response\n * @param {string} url - request url\n * @param {number} timeout - timeout in ms after each request\n * @param {function} onResponse - function to call when job responds with any response (partial or complete)\n * @param {function} onPartialResponse - function to call when job responds with a not complete response\n * @param {function} onComplete - function to call when job responds with a complete response\n * @returns {string} response\n *\n * @example\n * watchJob({\n url: 'joburl/job?param=\"2\"',\n onResponse: (response) => {\n console.log(`Last response is ${response}`);\n },\n onPartialResponse: (response) => {\n console.log(`Partial response is ${response}`);\n },\n onComplete: (response) => {\n console.log(`Complete response is ${response}`);\n }\n });\n */\nconst watchJob = ({ url, timeout, onResponse, onPartialResponse, onComplete }) => {\n if (!url || typeof url !== 'string' || !url.length) return\n\n const getData = () => {\n getLazyData(url, response => {\n if (!response || !response.length) return\n\n const { at, total } = JSON.parse(response)\n\n if (at !== total) {\n onPartialResponse && onPartialResponse(response)\n\n if (timeout) {\n setTimeout(() => {\n getData()\n }, timeout)\n } else {\n getData()\n }\n } else {\n onComplete && onComplete(response)\n }\n\n onResponse && onResponse(response)\n })\n }\n\n getData()\n}\n\nexport default watchJob\n","/**\n * Url parser\n */\n\n/**\n * Get all params\n *\n * @return {object} Object containing current url params\n */\nexport function getParams() {\n const query = decodeURIComponent(location.search.substr(1))\n const result = {}\n query.split('&').forEach(function (part) {\n if (!part) return\n const param = part.split('+').join(' ') // replace every + with space, regexp-free version\n const eq = param.indexOf('=')\n let key = eq > -1 ? param.substr(0, eq) : param\n const val = eq > -1 ? decodeURIComponent(param.substr(eq + 1)) : ''\n const from = key.indexOf('[')\n if (from === -1) result[decodeURIComponent(key)] = val\n else {\n const to = key.indexOf(']', from)\n const index = decodeURIComponent(key.substring(from + 1, to))\n key = decodeURIComponent(key.substring(0, from))\n if (!result[key]) result[key] = []\n if (!index) result[key].push(val)\n else result[key][index] = val\n }\n })\n return result\n}\n\n/**\n * Get a specific param\n *\n * @param {string} param - name of the param to get his value\n * @return {object} - Object containing current url params\n */\nexport function getParam(param) {\n try {\n const params = getParams()\n return params[param]\n } catch (error) {\n return 'false'\n }\n}\n\n/**\n * Checks if a parameter is present in the URL.\n * @function\n * @param {string} param - The name of the parameter to check.\n * @returns {boolean} - Returns true if the parameter is present, otherwise false.\n */\nexport function hasParam(param) {\n const paramValue = getParam(param)\n return paramValue !== undefined && (paramValue === '' || paramValue.length)\n}\n\nwindow.IB.urlParser = {\n getParams,\n getParam,\n}\n"],"names":["LIGHTBOX_VISIBILITY_FLAG","shouldShowLightbox","console","log","GET_LIGHTBOX_ENDPOINT","IB","currentPageType","isHome","get","document","querySelector","getTarget","getLazyData","response","content","$","fancybox","open","afterShow","type","nextBtns","getElementsByClassName","count","length","nextBtn","addEventListener","classList","remove","add","attachEvents","beforeClose","checkbox","getElementById","checked","id","lightbox_id","CHECK_SEEN_LIGHTBOX_ENDPOINT","method","notifyCheckSeenLightbox","setCookie","undefined","readCookie","getParameterByName","refreshMultiSelectLabel","multiSelectContainer","totalOptionsSelected","querySelectorAll","label","textContent","dataset","textSelected","forEach","multiSelect","dropdownContainerSelector","multiselectContentSelector","dropdownContainer","multiSelectLabel","getSelectedOptions","currentOptions","Array","from","reduce","filtered","option","push","optionsSelected","toggle","currentDevice","isMobile","window","event","contains","target","includes","hasParam","Modal","show","onShow","ScrollLock","on","onClose","off","awaitCloseAnimation","agencyFilterBlock","DATE_TYPES","getFilterValues","page","perPage","filterDate","value","selectedDateType","clientName","hotelId","bookingCode","hotel_id","booking_code","with_arrival_date_start","with_arrival_date_end","with_booking_date_start","with_booking_date_end","with_book_status","Boolean","with_cancel_status","with_pending_status","with_payment_paid","with_payment_unpaid","client_name","order_by","per_page","dayjs","customParseFormat","iberostar_pro","$el","this","hasClass","closest","find","addClass","removeClass","$content","slideDown","slideUp","e","init","$agents_form","$formz","language","documentElement","getAttribute","date_format","attr","start_of_week","start_date","subtract","format","end_date","$check_in","$check_out","is_inline","data","agency_user_name","cookie","$form","$form_new_agency","$form_users","$form_change_password_user","filterForm","FORMZ","required_fields","hide","$link_to_sub","removeAttr","next","first","preventDefault","each","index","element","$this","val","dateRangePicker","startOfWeek","separator","autoClose","startDate","endDate","selectForward","hoveringTooltip","stickyMonths","minDays","inline_mobile_panel","inline","showTopbar","getValue","setValue","s","s1","s2","beforeShowDay","t","getDay","width","offset","left","css","obj","date1","offset_right","outerWidth","window_width","last","selected_day","validateDatesAndBookingCode","first_day","last_day","$date","is_checkin","is_checkout","in_val","out_val","updateFirstDate","updateLastDate","setTimeout","setLastDate","stopPropagation","$element","clear","removeDates","$filterDate","filtersContainer","filterDateContainer","removeDatesBtn","singleMonth","serializedFilterValues","getFilterValuesSerialized","filterValues","URLSearchParams","toString","location","href","protocol","host","pathname","resetWrap","hasAnyInputValue","some","input","setRemoveFiltersButtonVisibility","elem","click","htmlBookings","$bookingsContainer","spinner1","spinner2","bookingsSpinnerTimeout","$jobSpinner","parseInt","prefix","currentSpinnerObserver","url","firstResponseWithContent","handleNextPageRequest","isInViewport","ajax_job_call","getBookings","resetSpinner","inViewport","isIntersecting","unobserve","threshold","initializeBookingItems","not","formikation","toggleClass","jid","watchJob","timeout","onResponse","parsedResponse","JSON","parse","total_bookings","text","onPartialResponse","html_replacement","innerHTML","dispatchEvent","CustomEvent","detail","message","onComplete","hasValue","currentPage","totalPages","total_booking_pages","read_timeout","clearTimeout","toogleExportLink","arguments","watchXlsJob","getJSON","job","at","total","$exportLink","bookings_xls","done","callback","params","ajax","dataType","success","job_id","error","result","chain_agency_form_fields","country_selector","community_selector","province_selector","settlement_selector","code_selector","$country","$community","$province","$settlement","$postal_code","text_to_substitute","trigger","first_option","empty","append","i","option_text","children","dataLayer","selectors","$current","curr_val","curr_text","$opt","$commercial_select","addData","parsley","refresh","cif_selector","name_selector","$name","$cif","StatusValue","Contributors","contributor","resultadoField","test","substr","toUpperCase","nombreField","agency_form_cif_validation","Parsley","addValidator","validateString","_ignoreValue","instance","jQuery","nodeName","countrySelector","syncWith","valueSyncWithSelector","selectedCountryCode","newValue","$register_form","halfs","thirds","only","indexOf","blocks","hiddenBlock","visibleBlock","aux","forms","register_form","$birth_date","el","destroy","showDropdowns","minYear","year","maxYear","defaultTime","singleDate","selectBackward","offset_left","date","setDateRange","ev","picker","prop","time","validate","close","PARENT_SCROLL_SELECTOR","observer","IntersectionObserver","entries","root","rootMargin","observe","calcPosition","videoLink","videoPlay","play","pause","userRegisterForm","current_microsite","name","replace","results","RegExp","exec","decodeURIComponent","observerInstance","entry","distance","getBoundingClientRect","top","bottom","innerHeight","clientHeight","right","innerWidth","clientWidth","_ref","getData","getParams","query","search","split","part","param","join","eq","key","to","substring","getParam","paramValue","urlParser"],"sourceRoot":""}