var bookingWidgetController = function () { return { config: { _custom_hotel_namespace: false, _custom_hotel_domain: false }, init: function () { this.prepare_dependencies(); }, is_mobile: function() { if(navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) { return true; } return false; }, prepare_dependencies: function () { $('head').append(''); var target_css = "//amare-marbella-dot-amare-hotels.appspot.com/static_1/css/amare/booking_widget_amare.css?v=10.57"; $('head').append($('').attr('href', target_css)); var target_fawesome = "//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"; $('head').append($('').attr('href', target_fawesome)); $('head').append(''); $('head').append(''); $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_inj/lib/jquery-ui-1.10.1.custom.min.modified.js").done(function(){ $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/js/mainWebSkeletonAux_injection.js"); $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/lib/selectric/jquery.selectric.1.8.js").done(function () { bookingWidgetController.get_booking_widget_html(); }); }); }, append_widget_html: function () { var booking_special_section = $(".wrap_reservas").length && $(".content_reservas").length; var injForm = $("#injectForm"); if (injForm.length) { injForm.append(parent_wrapper_widget); } if(booking_special_section){ $(".wrap_reservas").remove(); $("main").append(parent_wrapper_widget); $("#full_wrapper_booking").addClass('booking_section_element'); return; } if ($(".home-booking, .big-image").length) { $(".home-booking, .big-image").append(parent_wrapper_widget); } else { $("#booking-mobile-desktop #b-booking").html("").append(parent_wrapper_widget); } }, get_booking_widget_html: function () { var language_widget = $("html").attr("lang").replace(/-.*/, ''), target_widget_url = "//amare-marbella-dot-amare-hotels.appspot.com/amarewidget/" + language_widget, paraty_widget_namespace = bookingWidgetController.get_namespace_widget(); if (paraty_widget_namespace && ! paraty_widget_namespace == 'custom-paraty-format') target_widget_url = target_widget_url + "?namespace=" + paraty_widget_namespace; $.get(target_widget_url, function (e) { parent_wrapper_widget = $("
").html(e); }).done(function () { if (!bookingWidgetController.is_mobile() || paraty_widget_namespace) { if (paraty_widget_namespace){ bookingWidgetController.custom_html_build(paraty_widget_namespace, parent_wrapper_widget) } else{ bookingWidgetController.append_widget_html(); } }else{ var booking_engine_mobile_wrapper = $("
").attr('id', 'mobile_booking_engine_wrapper'); booking_engine_mobile_wrapper.html(parent_wrapper_widget); $("#booking-mobile-search").html(""); $("body").append(booking_engine_mobile_wrapper); } var custom_wrapper_widget = $("#paraty_custom_wrapper_widget"); if(custom_wrapper_widget.length && custom_wrapper_widget.val() != "") { $(custom_wrapper_widget.val()).each(function(){ $(this).html(parent_wrapper_widget.clone(true)); }); } if($(".destination_wrapper").length) { $("#full_wrapper_booking").addClass("with_hotel_selector"); } $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/lib/jquery-i18n-1.1.1/jquery.i18n.js").done(function () { $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/i18n/messages_" + language_widget + ".js?v=1.02").done(function () { $.i18n.load(messages); if (bookingWidgetController.is_mobile()) { bookingWidgetController.prepare_mobile_version(); } const translations = messages; $("#adults_tag").val(translations['T_personas']); $("#adult_tag").val(translations['T_persona']); bookingWidgetController.adding_adults_tag_selector(); }); }); $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/js/datepicker/jquery.ui.datepicker-" + language_widget + ".js?v=1").done(function () { _set_datepicker_regional($); $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/plugins/pricescalendar/calendar.plugin.js?v=1.1").done(function(){ $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/plugins/dates-selector/datepicker_v1.js?v=1.4").done(function () { DP_extend_info.config.booking_version = '7'; DP_extend_info.config.hotel_path_endpoint = '//amare-marbella-dot-amare-hotels.appspot.com'; if (bookingWidgetController.config._custom_hotel_domain){ DP_extend_info.config.hotel_path_endpoint = bookingWidgetController.config._custom_hotel_domain; } DP_extend_info.init(); $.getScript("//amare-marbella-dot-amare-hotels.appspot.com/static_1/scripts/booking_7.js").done(function () { bookingWidgetController.prepare_booking_button(); $(".days_number_datepicker").html("1"); $(".room_selector").selectric({disableOnMobile: false}); $(".rooms_number").selectric({disableOnMobile: false}); _set_datepicker_regional($); if($(".destination_wrapper").length) { if (bookingWidgetController.config._custom_hotel_namespace) { $("#" + bookingWidgetController.config._custom_hotel_namespace).trigger('click'); } } if (DP_extend_info.config.min_date) { DP_extend_info.format_dates($.datepicker.formatDate("dd/mm/yy", DP_extend_info.config.min_date)); } var promocode_hidden_input = $("#paraty_promocode"); if (promocode_hidden_input.length) { var promocode_applied_mesage = $("
").addClass('promocode_applied_message').html("PROMO CODE"), full_wrapper_booking = $(".booking_form.paraty-booking-form"), promocode_input = full_wrapper_booking.find(".promocode_input"); promocode_input.addClass("auto_applied").val(promocode_hidden_input.val()); full_wrapper_booking.find(".wrapper_booking_button ").addClass('promocode_autoapplied'); promocode_applied_mesage.insertAfter(promocode_input); } var hide_hotel_selector_input = $("#paraty_hotel_selector_hidden"); if (hide_hotel_selector_input.length){ var engine_wrapper_selector = $("#full_wrapper_booking"); engine_wrapper_selector.find(".destination_wrapper").addClass('hide'); engine_wrapper_selector.removeClass('with_hotel_selector'); } }); }); }); }); if ($(".babies_selector").length) { $("#full_wrapper_booking").addClass("widget_with_babies"); } bookingWidgetController.adding_room_tag_selector(); bookingWidgetController.adding_adults_tag_selector(); bookingWidgetController.prepare_rooms_modifications(); bookingWidgetController.bind_click_buttons(); bookingWidgetController.hide_hotels_in_selector(); bookingWidgetController.analytics_utils(); var has_promocode_at_url = getUrlParameter('promocode'); if (has_promocode_at_url) { $(".promocode_wrapper .promocode_input").val(has_promocode_at_url); } //Custom configuration if (window.location.host.indexOf('promo.') > -1) { $(".tooltip_wrapper").remove(); } }); $("html").click(function(event){ if($(event.target).closest(".datepicker_wrapper_element").length === 0 && $(event.target).closest(".dates_selector_personalized").length === 0 && $(event.target).closest(".ui-widget-header").length === 0) { $(".datepicker_wrapper_element").slideUp(); } }); }, get_namespace_widget: function(){ var paraty_widget_namespace = $("#paraty_widget_namespace"), paraty_widget_internal_url = $("#paraty_widget_url"); if (paraty_widget_namespace.length){ this.config._custom_hotel_namespace = paraty_widget_namespace.val(); if (paraty_widget_namespace.val() == 'custom-paraty-format') return 'custom-paraty-format'; this.config._custom_hotel_domain = paraty_widget_internal_url.val(); return this.config._custom_hotel_namespace; } }, custom_html_build: function(namespace, widget_html){ var injForm = $("#injectForm"); if (injForm.length) { injForm.append(widget_html.clone()); } if (namespace == 'amare-ibiza') { widget_html.addClass(namespace); widget_html.find("#namespace").val(namespace); $("#modal-booking").find(".b-booking__inner").html(widget_html); } if (namespace == 'amare-marbella') { widget_html.addClass('amare-ibiza'); widget_html.find("#namespace").val(namespace); $("#modal-booking").find(".b-booking__inner").html(widget_html); } if (namespace == 'custom-paraty-format') { widget_html.addClass('amare-ibiza'); $("#modal-booking").find(".b-booking__inner").html(widget_html); } if($(".destination_wrapper").length) { $(".hotel_selector #" + namespace).trigger("click"); } }, prepare_mobile_version: function() { //Create button to open booking widget var mobile_booking_button = $("
").attr('id', 'mobile_booking_button').html($.i18n._("reserva_ahora")), wrapper_booking_button = $("
").attr('id', 'mobile_booking_wrapper'), close_booking_button = $("
").attr('id', 'close_booking_widget').html("X"); wrapper_booking_button.append(mobile_booking_button); $("#mobile_booking_engine_wrapper").append(close_booking_button); if (!bookingWidgetController.config._custom_hotel_namespace) $("body").append(wrapper_booking_button); $("#mobile_booking_wrapper").click(function(){ $("#mobile_booking_engine_wrapper").addClass('active'); $(this).addClass('hide'); }); $("#close_booking_widget").click(function(){ $("#mobile_booking_engine_wrapper").removeClass('active'); $("#mobile_booking_wrapper").removeClass('hide'); }); }, bind_click_buttons: function(){ $("a.btn-submit[href*='booking']").click(function(e){ e.preventDefault(); $(".start_end_date_wrapper").trigger('click'); }); $(".hotel_selector_option").click(function(){ var hotel_namespace = $(this).attr('id'); var adults_selector = $(".adults_selector .room_selector"); if (hotel_namespace == 'amare-ibiza'){ var json_hotel_property = JSON.parse('[{"servingUrl": null, "title": "Periodo 22", "spanish_title": "Periodo 22", "description": "", "enabled": true, "priority": "a4", "linkUrl": "", "key": "ag5zfmFtYXJlLWhvdGVsc3IUCxIHUGljdHVyZRiAgID24pqRCwyiAQthbWFyZS1pYml6YQ", "altText": "Am\u00e0re Beach Hotel Ibiza. Web Oficial", "allowInMobile": true, "onlyInMobile": false, "close": "2021-10-31", "open": "2022-04-29", "pictureTitle": "Periodo 22"}, {"servingUrl": null, "title": "Periodo 23", "spanish_title": "Periodo 23", "description": "", "enabled": true, "priority": "a5", "linkUrl": "", "key": "ag5zfmFtYXJlLWhvdGVsc3IUCxIHUGljdHVyZRiAgKCi696MCwyiAQthbWFyZS1pYml6YQ", "altText": "Am\u00e0re Beach Hotel Ibiza. Web Oficial", "allowInMobile": true, "onlyInMobile": false, "open": "2023-04-28", "close": "2022-10-30", "pictureTitle": "Periodo 23"}, {"servingUrl": null, "title": "Periodo 24", "spanish_title": "Periodo 24", "description": "", "enabled": true, "priority": "a6", "linkUrl": "", "key": "ag5zfmFtYXJlLWhvdGVsc3IUCxIHUGljdHVyZRiAgOCY0MGRCwyiAQthbWFyZS1pYml6YQ", "altText": "Am\u00e0re Beach Hotel Ibiza. Web Oficial", "allowInMobile": true, "onlyInMobile": false, "close": "2023-10-29", "pictureTitle": "Periodo 24", "open": "2024-04-26"}, {"servingUrl": null, "title": "Perido m\u00e1ximo", "spanish_title": "Perido m\u00e1ximo", "description": "", "enabled": true, "priority": "a7", "linkUrl": "", "key": "ag5zfmFtYXJlLWhvdGVsc3IUCxIHUGljdHVyZRiAgIDOyJeCCwyiAQthbWFyZS1pYml6YQ", "altText": "Am\u00e0re Beach Hotel Ibiza. Web Oficial", "allowInMobile": true, "onlyInMobile": false, "pictureTitle": "Perido m\u00e1ximo", "last_close": "2024-10-27"}]'); DP_extend_info.config.period_closed = json_hotel_property; var target_min_date; for (var n=0;n= new Date()) target_min_date = new Date(open_hotel); } } if (!target_min_date) {target_min_date = new Date()} DP_extend_info.config.datepicker_sd_wrapper.datepicker('option', 'minDate', target_min_date); DP_extend_info.config.datepicker_ed_wrapper.datepicker('option', 'minDate', target_min_date); DP_extend_info.format_dates($.datepicker.formatDate("dd/mm/yy", target_min_date)); DP_extend_info.set_datepicker_start_date($.datepicker.formatDate("dd/mm/yy", target_min_date)); var tomorrow_date = target_min_date; tomorrow_date.setDate(target_min_date.getDate() + 1); adults_selector.each(function(){ $(this).find("option").remove(); for(var i=1; i <= 3; i++) { var option = $("