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 = $("