hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"philadelphia\":{\"active\":true,\"city\":\"Philadelphia\",\"cityslug\":\"philadelphia\",\"cityurl\":\"philadelphia\",\"state\":\"Pennsylvania\",\"stateslug\":\"pennsylvania\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"san-diego\":{\"active\":true,\"city\":\"San Diego\",\"cityslug\":\"san_diego\",\"cityurl\":\"san-diego\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"san-francisco\":{\"active\":true,\"city\":\"San Francisco\",\"cityslug\":\"san_francisco\",\"cityurl\":\"san-francisco\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"san-jose\":{\"active\":true,\"city\":\"San Jose\",\"cityslug\":\"san_jose\",\"cityurl\":\"san-jose\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"santa-barbara\":{\"active\":true,\"city\":\"Santa Barbara\",\"cityslug\":\"santa_barbara\",\"cityurl\":\"santa-barbara\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"savannah\":{\"active\":true,\"city\":\"Savannah\",\"cityslug\":\"savannah\",\"cityurl\":\"savannah\",\"state\":\"Georgia\",\"stateslug\":\"georgia\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"seattle\":{\"active\":true,\"city\":\"Seattle\",\"cityslug\":\"seattle\",\"cityurl\":\"seattle\",\"state\":\"Washington\",\"stateslug\":\"washington\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"st-augustine\":{\"active\":true,\"city\":\"St. Augustine\",\"cityslug\":\"st_augustine\",\"cityurl\":\"st-augustine\",\"state\":\"Florida\",\"stateslug\":\"florida\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"st-petersburg\":{\"active\":true,\"city\":\"St. Petersburg\",\"cityslug\":\"st_petersburg\",\"cityurl\":\"st-petersburg\",\"state\":\"Florida\",\"stateslug\":\"florida\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"tampa\":{\"active\":true,\"city\":\"Tampa\",\"cityslug\":\"tampa\",\"cityurl\":\"tampa\",\"state\":\"Florida\",\"stateslug\":\"florida\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"toronto\":{\"active\":true,\"city\":\"Toronto\",\"cityslug\":\"toronto\",\"cityurl\":\"toronto\",\"state\":\"Ontario\",\"stateslug\":\"ontario\",\"country\":\"CA\",\"countryslug\":\"ca\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"washington-dc\":{\"active\":true,\"city\":\"Washington DC\",\"cityslug\":\"washington_dc\",\"cityurl\":\"washington-dc\",\"state\":\"Washington DC\",\"stateslug\":\"washington-dc\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false},\"west-palm-beach\":{\"active\":true,\"city\":\"West Palm Beach\",\"cityslug\":\"west_palm_beach\",\"cityurl\":\"west-palm-beach\",\"state\":\"Florida\",\"stateslug\":\"florida\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"sausalito\":{\"active\":true,\"city\":\"Sausalito\",\"cityslug\":\"sausalito\",\"cityurl\":\"sausalito\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"yountville\":{\"active\":true,\"city\":\"Yountville\",\"cityslug\":\"yountville\",\"cityurl\":\"yountville\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"sonoma\":{\"active\":true,\"city\":\"Sonoma\",\"cityslug\":\"sonoma\",\"cityurl\":\"sonoma\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"apopka\":{\"active\":true,\"city\":\"Apopka\",\"cityslug\":\"apopka\",\"cityurl\":\"apopka\",\"state\":\"California\",\"stateslug\":\"california\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"rome\":{\"active\":true,\"city\":\"Rome\",\"cityslug\":\"rome\",\"cityurl\":\"rome\",\"state\":\"Rome\",\"stateslug\":\"rome\",\"country\":\"IT\",\"countryslug\":\"it\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"niagara-falls-&-around\":{\"active\":false,\"city\":\"Niagara Falls & Around\",\"cityslug\":\"niagara_falls\",\"cityurl\":\"niagara-falls\",\"state\":\"Ontario\",\"stateslug\":\"ontario\",\"country\":\"CA\",\"countryslug\":\"ca\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"las-vegas\":{\"active\":false,\"city\":\"Las Vegas\",\"cityslug\":\"las_vegas\",\"cityurl\":\"las-vegas\",\"state\":\"Nevada\",\"stateslug\":\"nevada\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"new-york\":{\"active\":false,\"city\":\"New York\",\"cityslug\":\"new_york\",\"cityurl\":\"new-york\",\"state\":\"New York\",\"stateslug\":\"new-york\",\"country\":\"US\",\"countryslug\":\"us\",\"hasOwnPage\":false,\"hasCrossSellCities\":false,\"crossSellCities\":[]},\"niagara\":{\"active\":false,\"city\":\"Niagara Falls\",\"cityslug\":\"niagara_falls\",\"cityurl\":\"niagara-falls\",\"state\":\"Ontario\",\"stateslug\":\"ontario\",\"country\":\"CA\",\"countryslug\":\"ca\",\"hasOwnPage\":true,\"hasCrossSellCities\":false,\"crossSellCities\":[]}},\"tempShowListing\":false,\"product_assets_template_html\":\"<a class="check-availability-link anchor-to-deck" href="#hb-commerce-sdk-root">Check Availability<\/a><a class="checkout-now-link hide" href="#">Checkout Now<\/a><div class="container"><div class="row" style="align-items: center;"><div class="ce20-event-heading col-sm-9">{{#show_title}}<h1 class="title">{{title}}<\/h1>{{\/show_title}}{{#show_sub_title}}<div class="sub-title">{{localizedInfo.en.subTitle}}<\/div>{{\/show_sub_title}}{{#has_brand_info}}<div class="brand-info"><a href="{{brand_link}}">{{brand_name}}<\/a><\/div>{{\/has_brand_info}}{{#has_anchor_brand_name}}<div class="brand-info">{{#has_anchor_brand_link}}<a href="{{anchor_brand_link}}">{{\/has_anchor_brand_link}}{{^has_brand_src}}{{anchor_brand_name}}{{\/has_brand_src}}{{#has_brand_src}}<img src="{{anchor_brand_src}}" \/>{{\/has_brand_src}}{{#has_anchor_brand_link}}<\/a>{{\/has_anchor_brand_link}}<\/div>{{\/has_anchor_brand_name}}<\/div><div class="col-sm-3"> {{#show_sharing}} <div class="share-this-section text-right"> {{^settings.inhouse_show_sharing}} <span class=""><div id="my-inline-buttons"><\/div><\/span> {{\/settings.inhouse_show_sharing}} {{#settings.inhouse_show_sharing}} <span class="inhouse-buttons-wrapper"><div id="my-inhouse-buttons"> <a href="#" class="fb"><i class="fab fa-facebook-f"><\/i><\/a> <a href="#" class="tw"><i class="fab fa-twitter"><\/i><\/a> <a href="#" class="pi"><i class="fab fa-pinterest"><\/i><\/a> <a href="#" class="in"><i class="fab fa-linkedin-in"><\/i><\/a> <\/div><\/span> {{\/settings.inhouse_show_sharing}} <span class=""> <label>Share This<\/label> <\/span> <\/div> {{\/show_sharing}}<\/div><\/div><\/div>{{#show_assets}}<div class="ce20-product-assets"><div class="ce20-assets-wrapper image"><div class="event-image"><a href="{{assetURL}}{{settings.thumbor_image}}{{main_image_url}}" data-toggle="lightbox" data-gallery="tour-assets"><img src="{{assetURL}}{{settings.thumbor_image}}{{main_image_url}}" alt="Product Image" \/><\/a><\/div><\/div>{{#has_video}}<div class="ce20-assets-wrapper video"><div class="event-video">{{{video}}}<\/div><\/div>{{\/has_video}}{{#additional_assets}}<div class="ce20-assets-wrapper image"><div class="event-image"><a href="{{assetURL}}{{settings.thumbor_image}}{{url}}" data-toggle="lightbox" data-gallery="tour-assets"><img src="{{assetURL}}{{settings.thumbor_image}}{{url}}" alt="Product Image" \/><\/a><\/div><\/div>{{\/additional_assets}}<\/div>{{\/show_assets}}\",\"product_details_template_html\":\"\",\"product_details_cart_template_html\":\"<div class="container"> <div class="ce-event-content row justify-content-between"> <div class="col-sm-6 col-lg-5 order-sm-2 order-xs-1"> {{#settings.show_ads_above_calendar}} <a class="ads-after-calendar mb-3 mt-0" href="{{settings.ads_above_link}}" {{#settings.ads_above_link_new_tab}}target="_blank"{{\/settings.ads_above_link_new_tab}}> <img src="{{settings.ads_above_image}}" \/> <\/a> {{\/settings.show_ads_above_calendar}} <div class="select-tour-date-wrapper {{settings.tickets_class}}"> <div id="hb-commerce-sdk-root"><\/div> <\/div> {{#settings.show_ads_below_calendar}} {{#settings.show_text_above_ads_below_calendar}} <div class="ads-after-calendar-text"> <h3>{{settings.ads_below_calendar_headline}}<\/h3> <p>{{settings.ads_below_calendar_text}}<\/p> <a href="{{settings.ads_below_calendar_link}}" {{#settings.ads_below_link_new_tab}}target="_blank"{{\/settings.ads_below_link_new_tab}}>{{settings.ads_below_calendar_link_text}}<\/a> <\/div> {{\/settings.show_text_above_ads_below_calendar}} <a class="ads-after-calendar" href="{{settings.ads_link}}" {{#settings.ads_below_link_new_tab}}target="_blank"{{\/settings.ads_below_link_new_tab}}> <img src="{{settings.ads_image}}" \/> <\/a> {{\/settings.show_ads_below_calendar}} <\/div> <div class="col-sm-6 col-lg-7 order-sm-1 order-xs-2"> <div class="ce-event-description-box"> <div class="highlights-section description-section"> <h2><a class="collapse-link-with-arrow" role="button" href="#collapseHighlights" data-toggle="collapse" aria-expanded="true" aria-controls="collapseHighlights"> <i class="fa fa-angle-down" aria-hidden="true"><\/i> {{translated_title.highlights}} <\/a> <\/h2> <div id="collapseHighlights" class="collapse show"> <div class="collapse-body">{{{short_description}}}<\/div> <\/div> <\/div> <div class="overview-section description-section"> <h2><a class="collapse-link-with-arrow collapsed" role="button" href="#collapseOverview" data-toggle="collapse" aria-expanded="false" aria-controls="collapseOverview"> <i class="fa fa-angle-down" aria-hidden="true"><\/i> {{translated_title.overview}} <\/a> <\/h2> <div id="collapseOverview" class="collapse"> <div class="collapse-body">{{{overview}}}<\/div> <\/div> <\/div> <div class="inclusions-section description-section"> <h2><a class="collapse-link-with-arrow collapsed" role="button" href="#collapseInclusions" data-toggle="collapse" aria-expanded="false" aria-controls="collapseInclusions"> <i class="fa fa-angle-down" aria-hidden="true"><\/i> {{translated_title.includes}} <\/a> <\/h2> <div id="collapseInclusions" class="collapse"> <div class="collapse-body">{{{whatUget}}}<\/div> <\/div> <\/div> {{#has_exclusions}} <div class="exclusions-section description-section"> <h2><a class="collapse-link-with-arrow collapsed" role="button" href="#collapseExclusions" data-toggle="collapse" aria-expanded="false" aria-controls="collapseExclusions"> <i class="fa fa-angle-down" aria-hidden="true"><\/i> {{translated_title.excludes}} <\/a> <\/h2> <div id="collapseExclusions" class="collapse"> <div class="collapse-body">{{{exclusions}}}<\/div> {{#settings.has_check_availability}} <div class="check-availability"><a class="anchor-to-check-availability" href="#" data-propid="{{settings.check_availability_settings.property_id}}" data-bookid="{{settings.check_availability_settings.booking_type_id}}" data-placeid="tourCheckAvailability">{{settings.check_availability_settings.text}}<\/a><\/div> <div id="tourCheckAvailability" class="tour-check-availability"><\/div> {{\/settings.has_check_availability}} <\/div> <\/div> {{\/has_exclusions}} {{#show_dress_code}} <div class="dress-code-section description-section"> <h2><a class="collapse-link-with-arrow collapsed" role="button" href="#collapseDressCode" data-toggle="collapse" aria-expanded="false" aria-controls="collapseDressCode"> <i class="fa fa-angle-down" aria-hidden="true"><\/i> {{translated_title.essential_info}} <\/a> <\/h2> <div id="collapseDressCode" class="collapse"> <div class="collapse-body">{{{dressCode}}}<\/div> <\/div> <\/div> {{\/show_dress_code}} <div class="where-to-meet-section description-section"> <h2><a class="collapse-link-with-arrow collapsed" role="button" href="#collapseWhereToMeet" data-toggle="collapse" aria-expanded="false" aria-controls="collapseWhereToMeet"> <i class="fa fa-angle-down" aria-hidden="true"><\/i> {{translated_title.where_to_meet}} <\/a> <\/h2> <div id="collapseWhereToMeet" class="collapse"> <div class="collapse-body"> <div class="where-to-meet {{#has_map}}col-sm-6{{\/has_map}}"> <h3>{{translated_title.departure_point_entrance}}<\/h3> {{{departurePoint}}} <h3>{{departureTimeLabel}}<\/h3> {{{departureTime}}} <\/div> {{#has_map}} <div class="google-map-wrapper col-sm-6">{{{map_iframe}}}<\/div> {{\/has_map}} <\/div> <\/div> <\/div> <\/div> <\/div> <\/div> <div style="clear: both;"><\/div> {{#has_menu}} <div class="tour-menus-v2"> <ul class="nav nav-tabs" role="tablist"> {{#tourMenus}} <li class="nav-item" role="presentation"><a class="nav-link {{active}}" role="tab" href="#a{{menuId}}-desktop" data-toggle="tab" aria-controls="a{{menuId}}">{{menuType}}<\/a> <\/li> {{\/tourMenus}} <\/ul> <div class="tab-content"> {{#tourMenus}} <div id="a{{menuId}}-desktop" class="tab-pane {{active}}" role="tabpanel"> <div class="text-center main-menu-title">{{menuTitle}}<\/div> {{#groupMenu}} <div class="outer-group"> {{#.}} <div class="inner-group {{#is_enhancement}}enhancement-section{{\/is_enhancement}}"> {{#show_type}} {{^is_winelist}} <h3>{{type}} {{#has_subItem}}{{^is_enhancement}}({{subItem}}){{\/is_enhancement}}{{\/has_subItem}}{{#is_enhancement}}(Available for an additional charge){{\/is_enhancement}}<\/h3> {{\/is_winelist}} {{\/show_type}} {{#show_title}} <strong>{{title}} {{#has_dietary}}<span class="dietary-options">{{#dietaryCode}}<span class="dietary-option">({{.}})<\/span>{{\/dietaryCode}}<\/span>{{\/has_dietary}} {{#has_subItem}}{{#is_enhancement}}<span class="enhancement-sub-title">{{subItem}}<\/span>{{\/is_enhancement}}{{\/has_subItem}}<\/strong> {{\/show_title}} <p class="description">{{#is_winelist}}{{{description}}}{{\/is_winelist}}{{^is_winelist}}{{{clean_desc}}}{{\/is_winelist}}<\/p> <\/div> {{\/.}} <\/div> {{\/groupMenu}} {{^is_wine_menu}} {{#has_chefDeCuisine}} <div class="chef-de-cuisine"><small>Chef de Cuisine: {{chefDeCuisine}}<\/small><\/div> {{\/has_chefDeCuisine}} <div class="dietary-notes row"><span class="dietary-note col-sm-2">(N) Contains Nuts<\/span> <span class="dietary-note col-sm-2">(VG) Vegan<\/span> <span class="dietary-note col-sm-2">(V) vegetarian<\/span> <span class="dietary-note col-sm-6">(G*) *Although we make every effort to prepare items denoted with a G* as gluten free, our kitchen is not gluten free, and there is always a small risk of cross contamination.<\/span> <\/div> &nbsp; <div class="menu-footer"> {{#has_disclaimer}} <h4 class="hide">DISCLAIMER<\/h4> {{{disclaimer}}} {{\/has_disclaimer}} <\/div> {{\/is_wine_menu}} <\/div> {{\/tourMenus}} <\/div> <\/div> {{\/has_menu}}<\/div>\",\"related_product_template_html\":\"{{#settings.show_another_title_above_listing}}<div class="module-header"><h2 class="title another-title-above-listing mb-md-3">{{settings.title_above_listing}}<\/h2><\/div>{{\/settings.show_another_title_above_listing}}{{^settings.hide_listing_list}}{{#settings.has_see_all_link}} <p class="d-md-none mb-0"><a href="#hb-commerce-root" class="d-flex align-items-center">{{settings.see_all_link_text}} <i class="fa fa-angle-right pl-1" aria-hidden="true"><\/i><\/a><\/p>{{\/settings.has_see_all_link}}<div class="module-content {{settings.additional_module_content_class}}"> <div class="module-content-inner"> {{#show_content_disabled}} <div class="content {{settings.additional_content_class}}">{{#settings.enable_cta_link}}<a class="" href="{{cta_link}}" target="{{settings.cta_link_target}}" rel="noopener noreferrer">{{\/settings.enable_cta_link}}{{{content}}}{{#settings.enable_cta_link}}<\/a>{{\/settings.enable_cta_link}}<\/div> {{\/show_content_disabled}} {{#settings.show_filter_list}} <div class="filter-list-wrapper"> <ul class="filter-list {{settings.additional_filter_list_class}}"> {{#settings.filter_list}} <li class="filter-item"><a href="\/filter-now\/" class="show-listing-filter-anchor {{#selected}}selected{{\/selected}}" data-id="{{element_id}}" data-filter="{{tag}}">{{name}}<\/a><\/li> {{\/settings.filter_list}} <\/ul> <\/div> {{\/settings.show_filter_list}} <div class="glisting-container {{settings.additional_glisting_container_class}}"> <div class="loading-event" style="display: none;"><div class="spinner"><div class="dot1"><\/div><div class="dot2"><\/div><\/div><\/div> {{#settings.show_title_in_listing}} <{{settings.title_type_in_listing}} class="title {{settings.title_in_listing_class}}"> {{#settings.title_featured_experiences}} Related Tours {{\/settings.title_featured_experiences}} {{^settings.title_featured_experiences}} {{settings.title_in_listing}} {{\/settings.title_featured_experiences}} <\/{{settings.title_type_in_listing}}> {{\/settings.show_title_in_listing}} {{#settings.show_nav}} <div class="nav-arrow {{settings.additional_nav_arrow_class}}"> <a href="\/left-arrow\/" class="prev {{#settings.nav_always_show}}always-show{{\/settings.nav_always_show}} {{^settings.nav_always_show}}hide{{\/settings.nav_always_show}}"><span class="hide">Left Arrow<\/span><span>{{#settings.use_fa_left_arrow}}<i class="{{settings.fa_left_arrow_code}}"><\/i>{{\/settings.use_fa_left_arrow}}{{^settings.use_fa_left_arrow}}<{{\/settings.use_fa_left_arrow}}<\/span><\/a> <a href="\/right-arrow\/" class="next {{#settings.nav_always_show}}always-show{{\/settings.nav_always_show}} {{^settings.nav_always_show}}hide{{\/settings.nav_always_show}}"><span class="hide">Right Arrow<\/span><span>{{#settings.use_fa_right_arrow}}<i class="{{settings.fa_right_arrow_code}}"><\/i>{{\/settings.use_fa_right_arrow}}{{^settings.use_fa_right_arrow}}>{{\/settings.use_fa_right_arrow}}<\/span><\/a> {{#settings.show_custom_link_after_on_nav}}<a href="{{settings.custom_link_after_on_nav_link}}" class="custom-link-after-on-nav-link" target="{{settings.custom_link_after_on_nav_target}}">{{settings.custom_link_after_on_nav_text}}<\/a>{{\/settings.show_custom_link_after_on_nav}} <\/div> {{\/settings.show_nav}} <div class="glisting-wrapper"> <div class="glisting-cex-content {{settings.nav_class}}"> {{#settings.use_slick}} <div class="slick-listing"> {{\/settings.use_slick}} {{^settings.use_slick}} <ul class="glisting {{settings.add_row_class}} "> {{\/settings.use_slick}} {{#listing}} {{^settings.use_slick}} <li class="glisting-item {{liCategories}} {{settings.item_class}} {{item_class}} product-data"> {{\/settings.use_slick}} {{^settings.use-theme20}} <div class="listing-item-wrapper {{settings.additional_listing_item_wrapper_class}}"> {{#has_cruise_type}} {{#settings.show_cruise_type}} <div class="cruise-type {{cruse_type_slug}}"> {{cruise_type_text}} <\/div> {{\/settings.show_cruise_type}} {{\/has_cruise_type}} {{#settings.show_title_above_image}} <div class="title-above-image-wrapper {{settings.additional_title_above_image_class}}"> {{#settings.show_link_on_title}}<a href="">{{\/settings.show_link_on_title}} {{item_name}} {{#settings.show_link_on_title}}<\/a>{{\/settings.show_link_on_title}} <\/div> {{\/settings.show_title_above_image}} <div class="img-wrap has-background-image {{settings.additional_img_wrap_class}}" style="background-image: url('{{assetURL}}{{settings.thumbor_filters}}{{item_thumbor_filters}}{{item_image}}');" aria-label="{{item_name}} Image" role="img"> {{#settings.use_permalink_on_image}}<a href="{{permalink}}" class="link-on-background-image" aria-label="{{item_name}}"><\/a>{{\/settings.use_permalink_on_image}} <\/div> <div class="description-wrapper {{settings.additional_description_wrapper_class}}"> <div class="item-info {{settings.additional_class_item_info}}"> {{^settings.show_title_above_image}} <div class="h3heading {{settings.additional_h3heading_class}}">{{#settings.use_permalink_on_title}}<a href="{{permalink}}">{{\/settings.use_permalink_on_title}}{{item_name}}{{#settings.use_permalink_on_title}}<\/a>{{\/settings.use_permalink_on_title}}<\/div> {{\/settings.show_title_above_image}} {{#settings.show_dates}} <div class="show-dates"> {{#settings.use_date_range_str1}}{{date_range.date_range_str1}}{{\/settings.use_date_range_str1}} {{#settings.use_date_range_str2}}{{date_range.date_range_str2}}{{\/settings.use_date_range_str2}} {{#settings.use_date_range_str3}}{{date_range.date_range_str3}}{{\/settings.use_date_range_str3}} <\/div> {{\/settings.show_dates}} {{#settings.show_city_country}} <p class="city-country"><span class="city-name">{{tour_city}}<\/span>{{#has_country_name}}<span class="country-name">, {{tour_country}}<\/span>{{\/has_country_name}}<\/p> {{\/settings.show_city_country}} {{#settings.show_short_description}} <p class="description short">{{{localizedInfo.en.shortDescription}}}<\/p> {{\/settings.show_short_description}} {{#settings.show_clean_description}} <p class="description clean {{settings.additional_clean_description_class}}">{{{clean_desc}}}<\/p> {{\/settings.show_clean_description}} {{#settings.show_starting_pricing}} <p class="starting-price {{settings.additional_starting_price_class}}"><span class="starting-price-text">{{settings.starting_price_text}}<\/span> <span>{{{settings.displayPrice}}}<\/span><\/p> {{\/settings.show_starting_pricing}} {{#settings.show_listing_mode}} <div class="show-description"> {{{description}}} <\/div> {{\/settings.show_listing_mode}} <\/div> <div class="listing-price-btn {{settings.additional_class_listing_price}}"> {{#settings.use_checkout_link_before}} {{\/settings.use_checkout_link_before}} {{#settings.show_buy_now_on_left}} <div class="buy-now {{#settings.show_price_info}}has-price-info{{\/settings.show_price_info}} {{settings.additional_buy_now_lef_class}}"><a href="{{permalink}}" class="btn btn-primary {{settings.additional_buy_now_cta_left_class}}" target="_self" rel="noopener noreferrer">{{^settings.use_custom_cta_text}}Learn More{{\/settings.use_custom_cta_text}}{{#settings.use_custom_cta_text}}{{settings.custom_cta_text}}{{\/settings.use_custom_cta_text}}<\/a><\/div> {{\/settings.show_buy_now_on_left}} {{#settings.show_price_info}}<div class="price-info {{settings.additional_price_info_class}}">{{#settings.use_permalink_on_price_info}}<a href="{{permalink}}" class="link-on-price-info">{{\/settings.use_permalink_on_price_info}}<span class="starting-price-text">{{settings.starting_price_text}}<\/span> <span>{{settings.displayPrice}}<\/span>{{#settings.use_permalink_on_price_info}}<\/a>{{\/settings.use_permalink_on_price_info}}<\/div>{{\/settings.show_price_info}} <div class="buy-now {{#settings.show_price_info}}has-price-info{{\/settings.show_price_info}} {{settings.additional_buy_now_class}}"><a href="{{permalink}}" class="btn btn-primary {{settings.additional_buy_now_cta_class}}" target="_self" rel="noopener noreferrer">{{^settings.use_custom_cta_text}}Learn More{{\/settings.use_custom_cta_text}}{{#settings.use_custom_cta_text}}{{settings.custom_cta_text}}{{\/settings.use_custom_cta_text}}<\/a><\/div> {{#settings.use_checkout_link_after}} <div class="checkout-now {{settings.additional_checkout_now_after_class}}"><a href="{{settings.checkout_now_path}}?bookingTypeId={{bookingTypeId}}&propertyID={{propertyId}}" class="btn btn-primary {{settings.additional_checkout_now_after_cta_class}}" target="_self" rel="noopener noreferrer">{{^settings.use_custom_checkout_cta_text}}Checkout{{\/settings.use_custom_checkout_cta_text}}{{#settings.use_custom_checkout_cta_text}}{{settings.custom_checkout_cta_text}}{{\/settings.use_custom_checkout_cta_text}}<\/a><\/div> {{\/settings.use_checkout_link_after}} <\/div> <\/div> <\/div> {{\/settings.use-theme20}} {{#settings.use-theme20}}<div class="listing-item-cex-wrapper {{liCategories}} {{settings.additional_listing_item_wrapper_class}} propId-{{propertyId}}-bookingId-{{bookingTypeId}}"> <div class="product-limited" style="display: none;"> {{#has_top_banner_link}} <a href="{{top_banner_link}}" target="_blank"> {{\/has_top_banner_link}} {{#has_save_now_tag}} <span class="{{#settings.has_discounted_price}}has-strike-thru{{\/settings.has_discounted_price}}"> Save Now <\/span> {{\/has_save_now_tag}} {{#has_top_banner_link}} <\/a> {{\/has_top_banner_link}} <\/div> {{#settings.display_title_on_tile}} <div class="title-on-listing-tile {{#has_title_on_tile}}has-title{{\/has_title_on_tile}}"> {{listing_mode}} <\/div> {{\/settings.display_title_on_tile}} <div class="listing-item-inner-wrapper20 {{#settings.has_see_all_link}}mb-0{{\/settings.has_see_all_link}}"> {{^settings.unwrap_full_url}}<a href="{{permalink}}" class="link-on-background-image" aria-label="{{item_name}}" aria-id="{{element_id}}-{{propertyId}}-{{bookingTypeId}}">{{\/settings.unwrap_full_url}} <div class="img-wrapper {{settings.additional_img_wrap_class}} position-relative" aria-label="{{item_name}} Image" role="img"> {{^full_item_image}} {{#settings.has_algolia_recommended_tours}} <img src="{{assetURL}}{{settings.thumbor_filters}}{{item_thumbor_filters}}{{media.images.url}}" \/> {{\/settings.has_algolia_recommended_tours}} {{^settings.has_algolia_recommended_tours}} <img {{#settings.has_thumbor_srcset}} srcset=" {{#settings.has_thumbor_767w}}{{assetURL}}{{settings.thumbor_filters_767w}}{{item_image}} 480w,{{\/settings.has_thumbor_767w}} {{#settings.has_thumbor_991w}}{{assetURL}}{{settings.thumbor_filters_991w}}{{item_image}} 991w,{{\/settings.has_thumbor_991w}} {{#settings.has_thumbor_1180w}}{{assetURL}}{{settings.thumbor_filters_1180w}}{{item_image}} 1180w,{{\/settings.has_thumbor_1180w}} {{assetURL}}{{settings.thumbor_filters}}{{item_image}} 100vw " sizes=" {{#settings.has_thumbor_767w}}(min-width: 480px) 480px,{{\/settings.has_thumbor_767w}} {{#settings.has_thumbor_991w}}(max-width: 768px) 991px,{{\/settings.has_thumbor_991w}} {{#settings.has_thumbor_1180w}}(max-width: 992px) 1180px,{{\/settings.has_thumbor_1180w}} (min-width: 1181px) 1181px " {{\/settings.has_thumbor_srcset}} src="{{assetURL}}{{settings.thumbor_filters}}{{item_thumbor_filters}}{{item_image}}" \/> {{\/settings.has_algolia_recommended_tours}} {{\/full_item_image}} {{#full_item_image}} <img src="{{item_image}}" \/> {{\/full_item_image}} {{#has_special_coupon_banner_text}} <div class="img-wrapper-promo-banner" {{#has_custom_tag_color}}style="background: {{custom_tag_color}} !important; color: {{custom_tag_text_color}} !important"{{\/has_custom_tag_color}}>{{special_coupon_banner_text}}<\/div> {{\/has_special_coupon_banner_text}} <\/div> <div class="info-wrapper"> <div class="info-inner-wrapper"> <div class="product-title"><span class="line-clamp-2">{{#settings.has_algolia_recommended_tours}}{{localizedInfo.en.title}}{{\/settings.has_algolia_recommended_tours}}{{^settings.has_algolia_recommended_tours}}{{item_name}}{{\/settings.has_algolia_recommended_tours}}<\/span><\/div> <div class="product-location recent-booking-{{numberOfOrders}} {{#settings.related_tour_settings.savings_tiles}}savings-tiles{{\/settings.related_tour_settings.savings_tiles}}"><span class="tour-city">{{#settings.has_algolia_recommended_tours}}{{city}}{{\/settings.has_algolia_recommended_tours}}{{^settings.has_algolia_recommended_tours}}{{tour_city}}{{\/settings.has_algolia_recommended_tours}}<\/span> {{#settings.webCategoriesMain}}<span class="px-2 meal-bullet">&bull;<\/span> <span class="meal-type">{{settings.webCategoriesMain}}<\/span>{{\/settings.webCategoriesMain}}<\/div> {{#settings.related_tour_settings.savings_tiles}} <div class="savings-tiles-info"> {{{localizedInfo.en.flipCard}}} <\/div> <div class="savings-tiles-book-now text-center"> <a href="{{permalink}}" class="btn btn-primary mb-3">Book Now<\/a> <\/div> {{\/settings.related_tour_settings.savings_tiles}} <div class="product-additional {{#show_recent_bookings}}has-recent{{\/show_recent_bookings}} {{#settings.related_tour_settings.savings_tiles}}d-none{{\/settings.related_tour_settings.savings_tiles}} d-flex justify-content-start"> <span class="product-additional-left recent-booking-{{numberOfOrders}} w-100"> {{#show_likely_sellout}} <span class="product-sellout"> <span> Likely to Sell Out<\/span> <\/span> {{\/show_likely_sellout}} {{#has_coupon_savings_tag}} <span class="product-coupon" {{#has_custom_tag_color}}style="background: {{custom_tag_color}} !important; color: {{custom_tag_text_color}} !important"{{\/has_custom_tag_color}}> <svg width="9" height="16" viewBox="0 0 9 16" fill="none" xmlns="http:\/\/www.w3.org\/2000\/svg"><path d="M4.83986 4.92918L4.74509 5.25H5.07961H8.3252C8.47542 5.25 8.60899 5.33917 8.68738 5.49091C8.76604 5.64318 8.77599 5.83791 8.68616 6.00855L8.68567 6.00948L3.73573 15.5095C3.65159 15.671 3.50825 15.75 3.37245 15.75C3.13133 15.75 2.88699 15.4806 2.96164 15.1303C2.96164 15.1303 2.96165 15.1303 2.96165 15.1302L4.25819 9.05216L4.32264 8.75H4.01369H0.67529C0.446209 8.75 0.214881 8.51113 0.254159 8.17964C0.254165 8.17959 0.254172 8.17953 0.254178 8.17948L1.1541 0.680033C1.1541 0.680008 1.15411 0.679983 1.15411 0.679959C1.18643 0.413135 1.38391 0.25 1.57528 0.25H5.62523C5.87024 0.25 6.11511 0.530312 6.03587 0.880027L4.83986 4.92918Z" fill="black" stroke="#FFDF97" stroke-width="0.5"\/><\/svg> <span>{{coupon_savings_text}}<\/span> <\/span> {{\/has_coupon_savings_tag}} {{#has_exclusive_deal}} <span class="product-exclusive"> <span>Exclusive Deal<\/span> <\/span> {{\/has_exclusive_deal}} {{#has_double_rewards}} <span class="product-coupon"> <span>2x Reward Points<\/span> <\/span> {{\/has_double_rewards}} <!--{{#has_package_savings_tag}} <span class="product-package"> <svg width="9" height="16" viewBox="0 0 9 16" fill="none" xmlns="http:\/\/www.w3.org\/2000\/svg"><path d="M4.83986 4.92918L4.74509 5.25H5.07961H8.3252C8.47542 5.25 8.60899 5.33917 8.68738 5.49091C8.76604 5.64318 8.77599 5.83791 8.68616 6.00855L8.68567 6.00948L3.73573 15.5095C3.65159 15.671 3.50825 15.75 3.37245 15.75C3.13133 15.75 2.88699 15.4806 2.96164 15.1303C2.96164 15.1303 2.96165 15.1303 2.96165 15.1302L4.25819 9.05216L4.32264 8.75H4.01369H0.67529C0.446209 8.75 0.214881 8.51113 0.254159 8.17964C0.254165 8.17959 0.254172 8.17953 0.254178 8.17948L1.1541 0.680033C1.1541 0.680008 1.15411 0.679983 1.15411 0.679959C1.18643 0.413135 1.38391 0.25 1.57528 0.25H5.62523C5.87024 0.25 6.11511 0.530312 6.03587 0.880027L4.83986 4.92918Z" fill="black" stroke="#FFDF97" stroke-width="0.5"\/><\/svg> <span>{{package_savings_text}}<\/span> <\/span> {{\/has_package_savings_tag}}--> <\/span> <span class="product-additional-right width-50percent d-none"> <\/span> <\/div> <div class="product-additional {{#show_likely_sellout}}has-likely-sellout{{\/show_likely_sellout}} {{#settings.related_tour_settings.savings_tiles}}d-none{{\/settings.related_tour_settings.savings_tiles}}"> <span class="product-additional-left"> {{#has_duration}} <span class="product-duration"> <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http:\/\/www.w3.org\/2000\/svg"><path d="M16.3125 9C16.3125 10.9394 15.5421 12.7994 14.1707 14.1707C12.7994 15.5421 10.9394 16.3125 9 16.3125C7.0606 16.3125 5.20064 15.5421 3.82928 14.1707C2.45792 12.7994 1.6875 10.9394 1.6875 9C1.6875 7.0606 2.45792 5.20064 3.82928 3.82928C5.20064 2.45792 7.0606 1.6875 9 1.6875C10.9394 1.6875 12.7994 2.45792 14.1707 3.82928C15.5421 5.20064 16.3125 7.0606 16.3125 9ZM0 9C0 11.3869 0.948212 13.6761 2.63604 15.364C4.32387 17.0518 6.61305 18 9 18C11.3869 18 13.6761 17.0518 15.364 15.364C17.0518 13.6761 18 11.3869 18 9C18 6.61305 17.0518 4.32387 15.364 2.63604C13.6761 0.948212 11.3869 0 9 0C6.61305 0 4.32387 0.948212 2.63604 2.63604C0.948212 4.32387 0 6.61305 0 9ZM8.15625 4.21875V9C8.15625 9.28125 8.29688 9.54492 8.53242 9.70312L11.9074 11.9531C12.2941 12.2133 12.818 12.1078 13.0781 11.7176C13.3383 11.3273 13.2328 10.807 12.8426 10.5469L9.84375 8.55V4.21875C9.84375 3.75117 9.46758 3.375 9 3.375C8.53242 3.375 8.15625 3.75117 8.15625 4.21875Z" fill="black"\/><\/svg> {{duration}} <\/span> {{\/has_duration}} <\/span> <span class="product-additional-right"> {{#settings.show_display_price}} {{^hide_only_by_special_property_id}} <span class="product-from {{#is_non_ca_ccl_tour}}default-pricing-span{{\/is_non_ca_ccl_tour}}"> {{#settings.has_real_price}}<small>from<\/small>{{\/settings.has_real_price}} {{#settings.has_discounted_price}}<strong class="discounted-price">{{default_currency_sign}}{{settings.displayDiscountedPriceOnly}}<\/strong>{{\/settings.has_discounted_price}} {{#show_currency_sign}}{{default_currency}}{{\/show_currency_sign}} <strong class="{{#settings.has_discounted_price}}strike-thru{{\/settings.has_discounted_price}}">{{#settings.has_real_price}} {{default_currency_sign}}{{settings.displayPriceCeiling}}{{\/settings.has_real_price}}{{^settings.has_real_price}}{{settings.displayOthers}}{{\/settings.has_real_price}}<\/strong> <\/span> {{#is_non_ca_ccl_tour}} <span class="product-from product-from-for-ab-test" style="display: none;"> {{#settings.has_real_price}}<small>from<\/small>{{\/settings.has_real_price}} {{#settings.has_discounted_price}}<strong class="discounted-price">{{default_currency_sign}}{{settings.displayDiscountedDisplayPriceWithTaxesAndFeesOnly}}<\/strong>{{\/settings.has_discounted_price}} {{#show_currency_sign}}{{default_currency}}{{\/show_currency_sign}} <strong class="{{#settings.has_discounted_price}}strike-thru{{\/settings.has_discounted_price}}">{{#settings.has_real_price}} {{default_currency_sign}}{{settings.displayDisplayPriceWithTaxesAndFees}}{{\/settings.has_real_price}}{{^settings.has_real_price}}{{settings.displayOthers}}{{\/settings.has_real_price}}<\/strong> <\/span> {{\/is_non_ca_ccl_tour}} {{\/hide_only_by_special_property_id}} {{\/settings.show_display_price}} {{#has_tourSecondReview_disabled}} {{{tourSecondReview}}} {{\/has_tourSecondReview_disabled}} {{#settings.has_review_test}} <div style="padding-top: 15px;" class="embedsocial-hashtag" data-ref="818ab11342ab50e773a0552b767b7f830d2e21c0"><\/div> <script> (function(d, s, id) { var js; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https:\/\/embedsocial.com\/cdn\/ht.js"; d.getElementsByTagName("head")[0].appendChild(js); }(document, "script", "EmbedSocialHashtagScript")); <\/script> {{\/settings.has_review_test}} <\/span> <\/div> {{#has_additional_fees_messaging}} <div class="tiles-fee-messaging"> <span class="fees-text">+ {{priceFeePercentage}}% fees<\/span> <\/div> {{\/has_additional_fees_messaging}} {{#has_inclusive_fees_messaging}} <div class="tiles-fee-messaging"> <span class="fees-text">All admin and port fees included<\/span> <\/div> {{\/has_inclusive_fees_messaging}} {{#has_inclusive_fees_and_taxes_messaging}} <div class="tiles-fee-messaging"> <span class="fees-text">Fees and taxes included in price<\/span> <\/div> {{\/has_inclusive_fees_and_taxes_messaging}} {{#is_non_ca_ccl_tour}} <div class="tiles-fee-messaging product-from-for-ab-test" style="display: none;"> <span class="fees-text">Fees included in price<\/span> <\/div> {{\/is_non_ca_ccl_tour}} <\/div> {{#settings.show_description}} <div class="description-wrapper {{settings.additional_description_wrapper_class}}"> <div class="item-info {{settings.additional_class_item_info}}"> {{#settings.show_short_description}} <p class="description short">{{{localizedInfo.en.shortDescription}}}<\/p> {{\/settings.show_short_description}} {{#settings.show_clean_description}} <p class="description clean {{settings.additional_clean_description_class}}">{{{clean_desc}}}<\/p> {{\/settings.show_clean_description}} <\/div> <\/div> {{\/settings.show_description}} {{#settings.unwrap_full_url}} {{#settings.use_custom_cta_text}} <div class="cta-wrapper {{settings.cta_wrapper_class}}"><a href="{{permalink}}{{#settings.auto_open_cal}}?checkavail=1{{\/settings.auto_open_cal}}" class="btn btn-primary mb-3 {{settings.cta_class}}">{{settings.custom_cta_text}}<\/a><\/div> {{\/settings.use_custom_cta_text}} {{\/settings.unwrap_full_url}} <\/div> {{^settings.unwrap_full_url}}<\/a>{{\/settings.unwrap_full_url}} <\/div><\/div> {{\/settings.use-theme20}} {{^settings.use_slick}} <\/li> {{\/settings.use_slick}} {{\/listing}} {{^settings.use_slick}} <\/ul> {{\/settings.use_slick}} {{#settings.use_slick}} <\/div> {{\/settings.use_slick}} {{#settings.use_slick_custom_nav_for_mobile}} <div class="slick-listing-nav {{element_name}}"> {{#listing}} <div class="listing-item-nav"> <span><\/span> <\/div> {{\/listing}} <\/div> {{\/settings.use_slick_custom_nav_for_mobile}} <\/div> <\/div> <\/div> {{#settings.has_see_all_link}} <p class="text-right pt-3 pt-lg-0 d-none d-md-block"><a href="#hb-commerce-root" class="d-flex justify-content-end align-items-center">{{settings.see_all_link_text}} <i class="fa fa-angle-right pl-1" aria-hidden="true"><\/i><\/a><\/p> {{\/settings.has_see_all_link}} <\/div><\/div>{{\/settings.hide_listing_list}}\"}".replace(/\n/g, ""); var myObj = JSON.parse(tbJSON); var decodeHTML = function (html) { var txt = document.createElement('textarea'); txt.innerHTML = html; return txt.value; }; myObj.content = decodeHTML(myObj.content); myObj.product_main_template_html = decodeHTML(myObj.product_main_template_html); myObj.product_assets_template_html = decodeHTML(myObj.product_assets_template_html); myObj.product_details_template_html = decodeHTML(myObj.product_details_template_html); myObj.product_details_cart_template_html = decodeHTML(myObj.product_details_cart_template_html); myObj.related_product_template_html = decodeHTML(myObj.related_product_template_html); $(document).ready(function() { var datePassedInUrl = decodeURIComponent(getUrlParam('date', '')); console.log('datePassedInUrl', datePassedInUrl); var urlDate = datePassedInUrl.length ? datePassedInUrl : ( (myObj.settings.force_selected_date || '').length ? myObj.settings.force_selected_date : getTodayDateOrUrlParam('date') ); var urlDeparture = getUrlParam('departure', myObj.settings.preselected_departure || ''); var urlDestination = getUrlParam('destination', myObj.settings.preselected_destination || ''); var urlTimeId = getUrlParam('timeId', 0); var curLang = true ? getPageTranslation() : 'en'; var checkoutLang = 'en'; var checkoutPrefix = checkoutLang === 'en' ? '' : '/'+curLang; myObj.checkoutLang = checkoutLang; myObj.checkoutLang = curLang; myObj.checkoutPrefix = curLang === 'en' ? '' : '/'+curLang; myObj.urlDate = urlDate; myObj.urlDeparture = urlDeparture; myObj.urlDestination = urlDestination; myObj.urlTimeId = urlTimeId; myObj.viaEmail = getUrlParam('viaEmail', '') === 'true' ? true : false; myObj.viaPhone = getUrlParam('viaPhone', '') === 'true' ? true : false; myObj.settings.showCheckoutBtnNextToAddToCart = myObj.settings.showCheckoutBtnNextToAddToCart || false; //myObj.settings.showCircleEnhancements = myObj.settings.showCircleEnhancements || false; myObj.settings.showViewCartOnPostAddToCart = getUrlParam('showViewCartOnPostAddToCart','0') === '1' ? true : (myObj.settings.showViewCartOnPostAddToCart || true); myObj.settings.enableComboTicketUpsell = myObj.settings.enableComboTicketUpsell || false; myObj.settings.showRecommendedToursInNotifyMe = getUrlParam('showRecommendedToursInNotifyMe','0') === '1' ? true : false; myObj.settings.showRecommendedToursInWaitlist = getUrlParam('showRecommendedToursInWaitlist','0') === '1' ? true : false; $('body').addClass('tour-page'); var isCheckoutMode = false; function loadShareThis() { //console.log('share this'); try { window.__sharethis__.load('inline-share-buttons', { alignment: 'right', id: 'my-inline-buttons', enabled: true, font_size: 11, padding: 8, radius: 50, networks: ['facebook', 'twitter', 'googleplus', 'pinterest', 'linkedin'], size: 32, show_mobile_buttons: true, spacing: 10, url: "", // custom url title: "", image: "", // useful for pinterest sharing buttons description: "", username: "" // custom @username for twitter sharing }); } catch(err) { console.log('shareThis not installed'); } } function loadInhouseShare() { var shareImg = myObj.assetURL + '600x315/' + myObj.main_image_url; var shareTitle = decodeURIComponent(myObj.localizedInfo.en.title); $('head').append(''); $('#my-inhouse-buttons a').on('click', function(e) { var foundShareLink = false; var shareLink = ''; var shareUrl = decodeURIComponent(location.href); if($(this).hasClass('fb')) { foundShareLink = true; shareLink = 'https://www.facebook.com/sharer/sharer.php?u=' + shareUrl; } else if($(this).hasClass('tw')) { foundShareLink = true; shareLink = 'https://twitter.com/intent/tweet?text='+shareTitle+'&url=' + shareUrl; } else if($(this).hasClass('pi')) { foundShareLink = true; shareLink = 'https://www.pinterest.com/pin-builder/?description='+shareTitle+'&media='+shareImg+'&url=' + shareUrl; } else if($(this).hasClass('in')) { foundShareLink = true; shareLink = 'https://www.linkedin.com/sharing/share-offsite/?url=' + shareUrl; } if(foundShareLink) { window.open(shareLink,'inhouseshare','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600'); } e.preventDefault(); }); } var curSettings = myObj.settings || []; if(curSettings.use_url_param_show_property) { myObj.booking_type_id = getUrlParam('id',0); } function displayRelatedList(myObj) { //console.log('myObjmyObjFromRelated',myObj); myObj.relatedTourHTML = Mustache.to_html(myObj.related_product_template_html, myObj ); $('.hbg-display-tour.' + myObj.element_first + ' .ce-related-tour-wrapper' ).append(myObj.relatedTourHTML); $('.hbg-display-tour.' + myObj.element_first + ' .ce-related-tour-wrapper .slick-listing').slick({ slidesToShow: 4, slidesToScroll: 4, centerPadding: '15px', speed: 1000, infinite: false, responsive: [ { breakpoint: 1199, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1 } } ] }); if(myObj.settings.show_nav) { build_nav_script_js(myObj.element_id+'_Related', '.hbg-display-tour.' + myObj.element_first + ' .ce-related-tour-wrapper .module-content-inner'); } } myObj.settings.use_new_schema_url = myObj.settings.use_new_schema_url || true; if(myObj.settings.use_new_schema_url) { myObj.structuredEventsUrl = 'https://my.cityexperiences.com/assets/cex_website/'+myObj.property_id+'/'+myObj.booking_type_id+'/eventData.json'; } else { myObj.structuredEventsUrl = 'https://my.hornblower.com/api/structuredEventData?bookingType='+myObj.booking_type_id_content+'&propertyId='+myObj.property_id + '&useCache=1'; } var devMode = getUrlParam('mode','') === 'dev'; if(true || devMode) { try { //fetch('https://my.hornblower.com/api/structuredEventData?bookingType='+myObj.booking_type_id_content+'&propertyId='+myObj.property_id) fetch(myObj.structuredEventsUrl) .then(response => response.text()) .then(structuredDataText => { const script = document.createElement('script'); script.setAttribute('type', 'application/ld+json'); script.textContent = structuredDataText; document.head.appendChild(script); }); } catch (err) { console.log("structuredEventData", err); } } function switchToCheckoutNow() { if(isCheckoutMode) { $('a.checkout-now-link').removeClass('hide'); $('a.check-availability-link').addClass('hide'); $('.book-now-bar.check-availability-link').addClass('hide'); } } function launch_sdk(myObj) { myObj.settings.override_currency_to = myObj.settings.override_currency_to || undefined; myObj.skipSingleFormCheckout = true; myObj.flagStruct.skipSingleFormCheckout = myObj.skipSingleFormCheckout; console.log('launch_sdk-HBG_display_tour_guide_func', myObj) $('#hb-commerce-sdk-root').html(''); HBCommerce.launch({ propertyId: myObj.property_id, locale: myObj.checkoutLang, bookingTypeId: myObj.booking_type_id, theme: 'cityexperiences', costRateId: myObj.settings.cost_rate, flags: myObj.flagStruct, departureStop: myObj.urlDeparture, destinationStop: myObj.urlDestination, departure: myObj.urlDeparture, destination: myObj.urlDestination, currency: myObj.settings.override_currency_to, selectedDate: myObj.urlDate, selectedTimedTicketTypeId: myObj.urlTimeId, onPreselectionComplete: function (event) { //console.log('onPreselectionComplete'); var payload = Object.assign({}, event, { costRateId: myObj.settings.cost_rate }) var preselection = encodeURIComponent(JSON.stringify(payload)); window.location = myObj.checkoutStr + preselection; }, onCartChange: function(event) { console.log('onCartChange',event); var widgetTopOffset = jQuery("#hb-commerce-sdk-root").offset().top; var stickyHeaderOffset = document.getElementById('masthead').offsetHeight; stickyHeaderOffset = 0; jQuery( "html, body" ).animate( { scrollTop: widgetTopOffset - stickyHeaderOffset } ); var rerenderSdk = (((event || {}).payload || {}).continueShopping || false); isCheckoutMode = true; switchToCheckoutNow(); if(rerenderSdk) { //launch_sdk(myObj); var redirectURL = window.location.pathname.split('/'); if(redirectURL.length > 2) { redirectURL.splice(redirectURL.length - 2, 1); //console.log('redirectURL',redirectURL.join('/')); window.location.href = redirectURL.join('/'); } } else { var cartItems = (((event || {}).payload || {}).cartItems || []); var totalItemsInCart = cartItems.length; anchorCartChange(totalItemsInCart); } if(myObj.settings.go_to_cart_after_add) { window.location.href = '/cart/?added=1'; } }, onStageChange: function(event) { //console.log('onStageChange'); try { if (event && event.payload && event.payload.position && event.payload.position.top) { var widgetTopOffset = jQuery("#hb-commerce-sdk-root").offset().top; var stickyHeaderOffset = document.getElementById('masthead').offsetHeight; stickyHeaderOffset = 0; jQuery( "html, body" ).animate( { scrollTop: widgetTopOffset + event.payload.position.top - stickyHeaderOffset } ); } } catch (err) { console.log("Commerce:onStageChange:error", err); } }, onViewCart: function(event) { //console.log('onViewCart'); // navigate to cart-checkout page url var sfcParam = ''; if(myObj.settings.singleFormCheckout) { sfcParam = '&singleFormCheckout=1'; } var viewOnly = event.payload.viewOnly || false; if(myObj.settings.showViewCartOnPostAddToCart && viewOnly) { //console.log('viewOnly', event.payload, viewOnly); //$('.shopping-cart-wrapper').addClass('open'); //$('body').addClass('overflow-hidden'); //$('#hb-shopping-cart').html(''); //openShoppingCartDrawer(); location.href = '/cart/?added=1'; } else { window.location = myObj.checkoutStr + '?cart=1' + sfcParam; } }, onQuickAddToCart: function(evt) { //console.log('onQuickAddToCart'); var addCartProp = evt.payload || {}; //console.log('onQuickAddToCart', addCartProp); jQuery('.calendar-drawer-wrapper').addClass('open'); var orderId = addCartProp.cartOrderIdToEdit || null; addToCartDrawer(addCartProp.propertyId, addCartProp.bookingTypeId, orderId); }, }, "hb-commerce-sdk-root").then(function (instance) { _HBCOMMERCEINSTANCE_ = instance; //console.log('returning', instance); //$('#hb-commerce-sdk-root').html(''); }).catch(function (err) { console.log("Error launching commerce sdk", err); }); window.addEventListener("scroll", function(event) { var top = this.scrollY, left =this.scrollX; var topOffsetVal = parseInt(window.innerHeight / 2); var bottomOffsetVal = parseInt(window.innerHeight / 2); var tourCalTop = jQuery('#hb-commerce-sdk-root').offset().top - topOffsetVal; var tourCalBottom = tourCalTop + jQuery('#hb-commerce-sdk-root').height(); if(top > tourCalTop && top < tourCalBottom) { if(isCheckoutMode) { $('a.checkout-now-link').addClass('collapse'); $('.book-now-bar.checkout-now-link').addClass('collapse'); } else { $('a.check-availability-link').addClass('collapse'); $('.check-availability-link.product-navbar').addClass('collapse'); $('.book-now-bar.check-availability-link').addClass('collapse'); } } else { if(isCheckoutMode) { $('a.checkout-now-link').removeClass('collapse'); } else { $('a.check-availability-link').removeClass('collapse'); $('.check-availability-link.product-navbar').removeClass('collapse'); $('.book-now-bar.check-availability-link').removeClass('collapse'); } } //if() //console.log('top', top, tourCalTop, tourCalBottom, topOffsetVal, bottomOffsetVal); }, false); $('a.checkout-now-link').on('click', function(e) { e.preventDefault(); var sfcParam1 = ''; if(myObj.settings.singleFormCheckout) { sfcParam1 = '&singleFormCheckout=1'; } window.location = myObj.checkoutStr + '?cart=1' + sfcParam1; }); } function launch_sdk_combo(myObj, comboObj) { myObj.settings.override_currency_to = myObj.settings.override_currency_to || undefined; myObj.skipSingleFormCheckout = true; myObj.flagStruct.skipSingleFormCheckout = myObj.skipSingleFormCheckout; $('#'+comboObj.combo_div_id).html(''); //console.log('combo',comboObj); HBCommerce.launch({ propertyId: comboObj.combo_property_id, locale: myObj.checkoutLang, translations: { addToCartCta: 'Continue', }, bookingTypeId: comboObj.combo_booking_id, theme: 'cityexperiences', costRateId: myObj.settings.cost_rate, flags: myObj.flagStruct, departureStop: myObj.urlDeparture, destinationStop: myObj.urlDestination, departure: myObj.urlDeparture, destination: myObj.urlDestination, currency: myObj.settings.override_currency_to, //currency: getCurrentCurrency(), selectedDate: myObj.urlDate, selectedTimedTicketTypeId: myObj.urlTimeId, onPreselectionComplete: function (event) { var payload = Object.assign({}, event, { costRateId: myObj.settings.cost_rate }) var preselection = encodeURIComponent(JSON.stringify(payload)); window.location = myObj.checkoutStr + preselection; }, onCartChange: function(event) { var rerenderSdk = (((event || {}).payload || {}).continueShopping || false); if(myObj.settings.is_combo_deal) { console.log('onCartChange'); var thisPropId = $('.combo-wrapper .each-combo.open .each-combo-title').attr('prop-id'); var thisBookId = $('.combo-wrapper .each-combo.open .each-combo-title').attr('book-id'); var thisPropBookId = thisPropId + '_' + thisBookId; //var cartItem = ((event || {}).payload || {}).cartItems || []; //var orderId = cartItem.length ? cartItem[0].orderId : ''; //var orderId = cartItem.length ? getCorrespondOrderId(thisPropId, thisBookId, cartItem) : ''; var itemOrder = getItemInCart(thisPropId, thisBookId); var orderId = itemOrder.orderId || ''; var dateTime = itemOrder.tourDateTimeFormatted || ''; $('.combo-wrapper .each-combo[prop-book-id='+thisPropBookId+']').removeClass('open'); $('.combo-wrapper .each-combo .each-combo-title[prop-book-id='+thisPropBookId+']').addClass('disabled'); $('.combo-wrapper .each-combo .each-combo-title[prop-book-id='+thisPropBookId+'] .combo-icons .added-to-cart').removeClass('hide'); $('.combo-wrapper .each-combo .each-combo-title[prop-book-id='+thisPropBookId+'] .combo-icons .edit-the-cart').removeClass('hide'); $('.combo-wrapper .each-combo .each-combo-title[prop-book-id='+thisPropBookId+'] .edit-combo-cart').attr('order-id', orderId); $('.combo-wrapper .each-combo .each-combo-title[prop-book-id='+thisPropBookId+'] .combo-tour-date').html(dateTime); if($('.combo-wrapper .each-combo .each-combo-title:not(.disabled)').length) { var nextPropBookId = $('.combo-wrapper .each-combo .each-combo-title:not(.disabled)').attr('prop-book-id'); var nextPropIdx = parseInt($('.combo-wrapper .each-combo .each-combo-title:not(.disabled)').attr('prop-idx')); console.log('nextPropIdx',nextPropIdx); $('.combo-wrapper .each-combo[prop-book-id='+nextPropBookId+']').addClass('open'); launch_sdk_combo(myObj, myObj.settings.combo_deal_properties[nextPropIdx]); } else { $('.combo-complete .btn').removeClass('in-progress'); $('.combo-complete .btn').removeClass('disabled'); } goToAnchor('#comboWrapperTour'); //console.log('combo-deal-event', event) } if(rerenderSdk) { //launch_sdk(myObj); var redirectURL = window.location.pathname.split('/'); if(redirectURL.length > 2) { redirectURL.splice(redirectURL.length - 2, 1); //console.log('redirectURL',redirectURL.join('/')); window.location.href = redirectURL.join('/'); } } else { var cartItems = (((event || {}).payload || {}).cartItems || []); var totalItemsInCart = cartItems.length; anchorCartChange(totalItemsInCart); } }, onStageChange: function(event) { try { if (event && event.payload && event.payload.position && event.payload.position.top) { var widgetTopOffset = jQuery('#'+comboObj.combo_div_id).offset().top; var stickyHeaderOffset = document.getElementById('masthead').offsetHeight; jQuery( "html, body" ).animate( { scrollTop: widgetTopOffset + event.payload.position.top - stickyHeaderOffset } ); } } catch (err) { console.log("Commerce:onStageChange:error", err); } }, onViewCart: function(event) { // navigate to cart-checkout page url var sfcParam = ''; if(myObj.settings.singleFormCheckout) { sfcParam = '&singleFormCheckout=1'; } window.location = myObj.checkoutStr + '?cart=1' + sfcParam; } }, comboObj.combo_div_id).then(function (instance) { _HBCOMMERCEINSTANCE_ = instance; }).catch(function (err) { console.log("Error launching commerce sdk", err); }); } function afterComboPackageTourFeed(myObj) { myObj.assetsHTML = Mustache.to_html(myObj.product_assets_template_html, myObj ); if(myObj.cartMode) { myObj.detailsHTML = Mustache.to_html(myObj.product_details_cart_template_html, myObj ); } else { myObj.detailsHTML = Mustache.to_html(myObj.product_details_template_html, myObj ); } $( '.hbg-display-tour.' + myObj.element_first + ' .loading-event' ).fadeOut( 'slow', function() { //$( '.hbg-display-tour.' + myObj.element_first ).append(listingHTML); $( '.hbg-display-tour.' + myObj.element_first + ' .event-detail-content' ).append(myObj.assetsHTML); $( '.hbg-display-tour.' + myObj.element_first + ' .event-detail-content' ).append(myObj.detailsHTML); build_nav_assets_script_js(myObj.element_id, '.event-detail-content.event-detail'); if(myObj.show_sharing) { if(!myObj.settings.inhouse_show_sharing) { loadShareThis(); } else { loadInhouseShare(); } } //var customStyles = checkoutCustomStyle; var customStyles = typeof checkoutCustomStyle !== 'undefined' ? checkoutCustomStyle : undefined; //var checkoutStr = myObj.settings.checkout_domain_url + myObj.settings.prepend_checkout_url + myObj.settings.checkout_path_url + '?bookingTypeId='+myObj.booking_type_id+'&propertyID='+myObj.property_id+'&preselection='; myObj.customStyles = customStyles; //myObj.checkoutStr = checkoutStr; //console.log('checkoutStr',checkoutStr); var isTourPrivate = myObj.booking_type_id_content === myObj.booking_type_id && myObj.privateEvent; //isTourPrivate = false; $('a.menu-pdf-aws').on('click', function(e) { e.preventDefault(); var menuId = $(this).attr('data-id'); myObj.gql.menuPreviewSignedPdf({ propertyId: myObj.property_id, menuId: menuId }) .then(function(url) { if( ( url.signedURL || '' ).length) { if(jQuery('a.dup-menu-pdf-aws').length) { jQuery('a.dup-menu-pdf-aws').attr('href', url.signedURL); jQuery('a.dup-menu-pdf-aws')[0].click(); } else { window.open(url.signedURL,'PDF Menu','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=1000,height=800'); } } console.log('url', url); }); }); //console.log('myObj-tour-page',myObj); affirm.ui.refresh(); getOneTrustSettings(myObj); myObj.flagStruct = { cartMode: myObj.cartMode, showCheckoutBtnNextToAddToCart: myObj.settings.showCheckoutBtnNextToAddToCart, //showCircleEnhancements: myObj.settings.showCircleEnhancements, singleFormCheckout: myObj.settings.singleFormCheckout, preselectionMode: myObj.preselectionMode, viewCheckoutV2: true, viaEmail: myObj.viaEmail, viaPhone: myObj.viaPhone, showViewCartOnPostAddToCart: myObj.settings.showViewCartOnPostAddToCart, showRecommendedToursInNotifyMe: myObj.settings.showRecommendedToursInNotifyMe, showRecommendedToursInWaitlist: myObj.settings.showRecommendedToursInWaitlist, showRecommendedToursInNotifyMe: myObj.settings.showRecommendedToursInNotifyMe, showRecommendedToursInWaitlist: myObj.settings.showRecommendedToursInWaitlist, cartCheckout: { showRecommendedTours: myObj.settings.show_recommended_tours, enableQuickAddInRecommendedTours: myObj.settings.enableQuickAddInRecommendedTours, enableComboTicketUpsell: myObj.settings.enableComboTicketUpsell, }, oneTrustCookiesCheckEnabled: myObj.oneTrustCookiesCheckEnabled || false, showHistoricalTrendsFlag: myObj.settings.showHistoricalTrendsFlag || false, enableBestAvailableTimeSlot: myObj.settings.enableBestAvailableTimeSlot || false, }; //console.log('myObj.flagStruct', myObj.flagStruct); if(myObj.cartMode) { myObj.checkoutStr = myObj.checkoutPrefix + myObj.settings.checkout_domain_url + myObj.settings.prepend_checkout_url + myObj.settings.checkout_path_url; } else { myObj.checkoutStr = myObj.checkoutPrefix + myObj.settings.checkout_domain_url + myObj.settings.prepend_checkout_url + myObj.settings.checkout_path_url + '?cart=0&bookingTypeId='+myObj.booking_type_id+'&propertyID='+myObj.property_id+'&preselection='; } if(!myObj.settings.show_private_note && !isTourPrivate && !myObj.settings.replace_cal_with_content && !myObj.settings.is_combo_deal) { hbCommerceSDKQuery(function() { launch_sdk(myObj); }); } if(myObj.settings.use_slick) { //console.log('use-slick'); $('.ce20-product-assets:not(.ce20-product-assets-va)').slick({ centerMode: true, slidesToShow: 1, centerPadding: '15%', responsive: [ { breakpoint: 991, settings: { centerPadding: '15%' } }, { breakpoint: 767, settings: { centerPadding: '60px' } }, { breakpoint: 788, settings: { centerPadding: '60px' } } ] }); $('.ce20-product-assets-va').slick({ centerMode: true, slidesToShow: 2, centerPadding: '15%', responsive: [ { breakpoint: 991, settings: { centerPadding: '15%' } }, { breakpoint: 767, settings: { centerPadding: '60px' } }, { breakpoint: 788, settings: { centerPadding: '60px' } } ] }); } if(myObj.settings.is_combo_deal && (myObj.settings.combo_deal_properties || []).length) { var foundIt = false; for(var j = 0; j < myObj.settings.combo_deal_properties.length; j++) { if(!foundIt && !myObj.settings.combo_deal_properties[j].combo_added_to_cart) { launch_sdk_combo(myObj, myObj.settings.combo_deal_properties[j]); foundIt = true; } } if(!foundIt) { $('.combo-complete .btn').removeClass('in-progress'); $('.combo-complete .btn').removeClass('disabled'); } $('.each-combo-title').on('click', function(e) { e.preventDefault(); var propBookId = $(this).attr('prop-book-id'); var thisIdx = parseInt($(this).attr('prop-idx')); //console.log('propBookId', propBookId); if(!$(this).parent().hasClass('open') && !$(this).hasClass('disabled')) { $('.combo-wrapper .each-combo').removeClass('open'); $(this).parent().addClass('open'); //console.log('thisIdx',thisIdx); launch_sdk_combo(myObj, myObj.settings.combo_deal_properties[thisIdx]); goToAnchor('#comboWrapperTour'); } event.stopPropagation(); }); $('a.edit-combo-cart').on('click', function(e) { e.preventDefault(); var propId = $(this).attr('property-id') || ''; var bookId = $(this).attr('booking-id') || ''; var orderId = $(this).attr('order-id') || ''; $('.calendar-drawer-wrapper').addClass('open'); console.log('edit-combo-cart', propId, bookId, orderId); addToCartDrawer(propId, bookId, orderId) }); /*$('a.open-shopping-cart').on('click', function(e) { e.preventDefault(); $('.shopping-cart-wrapper').addClass('open'); $('body').addClass('overflow-hidden'); $('#hb-shopping-cart').html(''); openShoppingCartDrawer(); });*/ //console.log('combo-tours', myObj); } if(myObj.settings.show_related_tour) { myObj.settings.related_tour_settings.additionalCitiesArr = []; if(myObj.settings.related_tour_settings.search_city && myObj.settings.related_tour_settings.search_city.length) { myObj.settings.related_tour_settings.additionalCitiesArr = myObj.settings.related_tour_settings.search_city.split(','); } myObj.settings.site_id = ''; myObj.exclude_list = myObj.exclude_list.length > 0 ? myObj.exclude_list + ',' + myObj.tourId : myObj.tourId; myObj.exclude_list = myObj.settings.related_tour_settings.exclude_list.length ? myObj.exclude_list + ',' + myObj.settings.related_tour_settings.exclude_list : myObj.exclude_list; for(var item in myObj.settings.related_tour_settings) { myObj.settings[item] = myObj.settings.related_tour_settings[item]; } myObj.settings.show_recent_bookings = myObj.settings.related_tour_settings.show_recent_bookings || true; myObj.settings.min_recent_booking = myObj.settings.related_tour_settings.min_recent_booking || 10; var startDate = new Date(); var startDateStr = ('0'+(startDate.getMonth()+1)).slice(-2) + '/' + ('0'+(startDate.getDate())).slice(-2) + '/' + startDate.getFullYear(); var endDate = new Date(); endDate.setMonth(endDate.getMonth() + myObj.settings.related_tour_settings.event_range_in_month); var endDateStr = ('0'+(endDate.getMonth()+1)).slice(-2) + '/' + ('0'+(endDate.getDate())).slice(-2) + '/' + endDate.getFullYear(); // TEMPORARY SET SITE_ID TO cityexperiences TO PULL FROM SELL ON FIELD myObj.settings.related_tour_settings.site_id = 'cityexperiences'; if(myObj.tempShowListing && !myObj.settings.is_experiences) { myObj.settings.related_tour_settings.additionalCitiesArr = ['boston harbor','alcatraz - san francisco','new york statue','alexandria','potomac riverboat co','ontario','london','berkeley','poole','york']; myObj.settings.related_tour_settings.additionalCitiesArr = myObj.settings.related_tour_settings.search_city.split(','); myObj.settings.related_tour_settings.search_city = 'not-available'; } var relatedData = { propertyId: myObj.settings.related_tour_settings.property_id, searchTerm: myObj.settings.related_tour_settings.search_term, city: myObj.settings.related_tour_settings.search_city, crossSellCities: myObj.settings.related_tour_settings.additionalCitiesArr, siteId: myObj.settings.related_tour_settings.site_id, includeAvailability: myObj.settings.related_tour_settings.include_availability, includeMenu: false, date: startDateStr, endDate: endDateStr, includeRecentBookings: true }; //console.log('relatedData',relatedData); HBCommerce .graphql({ sdkSrc: 'https://my.hornblower.com/sdk' }) .then(function(gql) { gql.searchTours(relatedData).then(function(relatedTours) { var listRelatedTour = $.extend(true, [], relatedTours); myObj.exclude_added_shopping_cart = true; if(myObj.settings.related_tour_settings.use_weight_sorted) { listRelatedTour = tourSortedByWeight($.extend(true, [], listRelatedTour), myObj.settings.related_tour_settings.weight_sorted_desc); } if(myObj.settings.related_tour_settings.grouped_events) { listRelatedTour = tourGrouped($.extend(true, [], listRelatedTour)); } if(myObj.settings.related_tour_settings.order_by_date) { listRelatedTour = tourSortedByDate($.extend(true, [], listRelatedTour), myObj.settings.related_tour_settings.date_sorted_asc); } //console.log('before populatetours'); myObj = $.extend( myObj, populateTours(listRelatedTour, 0, myObj.settings.related_tour_settings.include_availability, 0, myObj.max_show_onload, myObj, curLang) ); if(myObj.settings.related_tour_settings.max_show_list > 0) { myObj.listing = myObj.listing.slice(0, myObj.settings.max_show_list); } console.log('relatedtourlist', myObj); if(myObj.settings.related_tour_settings.use_additional_search_term.length && myObj.listing.length < myObj.settings.related_tour_settings.min_number_required) { gql.searchTours({ searchTerm: myObj.settings.related_tour_settings.use_additional_search_term, propertyId: myObj.settings.related_tour_settings.property_id, city: myObj.settings.related_tour_settings.search_city, crossSellCities: myObj.settings.related_tour_settings.additionalCitiesArr, siteId: myObj.settings.related_tour_settings.site_id, includeAvailability: myObj.settings.related_tour_settings.include_availability }) .then(function(additionalTours) { //console.log('additionalTours',additionalTours); var listAdditionalTours = $.extend(true, [], additionalTours); var needRemainingTour = myObj.settings.related_tour_settings.min_number_required - myObj.listing.length; var excludeIDs = []; excludeIDs.push(myObj.tourId); for(var i=0; i < myObj.listing.length; i++) { excludeIDs.push(myObj.listing[i].tourId); } var excludeObj = []; excludeObj.exclude_list = excludeIDs.join(','); //console.log('excludeObj',excludeObj); if(myObj.settings.related_tour_settings.use_weight_sorted) { listAdditionalTours = tourSortedByWeight($.extend(true, [], listAdditionalTours), myObj.settings.related_tour_settings.weight_sorted_desc); } console.log('related populatetours'); var tmp = populateTours(listAdditionalTours, 0, false, 0, 0, excludeObj); //myObj.listing = myObj.listing.concat(tmp.listing && tmp.listing.slice(0,myObj.settings.related_tour_settings.min_number_required - myObj.listing.length)); myObj.listing = myObj.listing.concat(tmp.listing); //console.log('tmp-listing',tmp.listing); displayRelatedList(myObj); }) .catch(console.log); } else { displayRelatedList(myObj); } }).catch(console.log); }).catch(function(error) { //Handle error }); } if(myObj.settings.has_check_availability) { //console.log('has_check_availability'); addOnClickAnchorCheckAvailability(myObj, HBCommerce); } $('.data-from-anchor a').on('click', function(e) { e.preventDefault(); window.open($(this).attr('href')); //console.log('link-out', $(this).attr('href')); }); addOnClickAnchor(myObj.element_id); //addScrollToTop(); }); } HBCommerce .graphql({ sdkSrc: 'https://my.hornblower.com/sdk' }) .then(function(gql) { gql.searchTours({ propertyId: myObj.property_id, bookingType: myObj.booking_type_id_content, includeAvailability: false, includeMenu: true, showPrivateTours: true, includeLocationTags: true, includeRecentBookings: true, includeLikelyToSellOut: true, siteId: 'cityexperiences' }) .then(function(tour) { //console.log('original-tour',tour); myObj.gql = gql; myObj = $.extend( myObj, populateTour(tour, curLang, myObj.settings, myObj.settings.is_experiences, myObj.settings.is_walks, myObj.settings.is_hide_map) ); myObj.settings = $.extend( myObj.settings, curSettings); myObj.cartMode = myObj.settings.cartMode; myObj.preselectionMode = !myObj.cartMode; var thisRecommend = myObj.settings.show_recommended_tours; myObj.settings.is_combo_deal = myObj.settings.is_combo_deal || false; myObj.settings.enableQuickAddInRecommendedTours = myObj.settings.enableQuickAddInRecommendedTours || true; myObj.settings.inhouse_show_sharing = myObj.settings.inhouse_show_sharing || true; //console.log('thisRecommend',thisRecommend, myObj.settings.show_recommended_tours) //console.log('myObj-tour-page',myObj); var numberPattern = /[\d|.]+/g; myObj.settings.displayPriceOnly = ((myObj.settings.displayPrice || '').match(numberPattern)||[])[0] || 0; myObj.settings.displayPriceSign = (myObj.settings.displayPrice || '').replace(myObj.settings.displayPriceOnly, ''); myObj.settings.displayPriceCurrency = myObj.settings.displayPriceSign.length ? ( productCurrency[myObj.settings.displayPriceSign] || '' ) : ''; var page_type = window.location.pathname.match('/city-cruises/') !== null ? 'cc' : 'non-cc'; postToTealiumAfterloaded('view', { "tealium_event": "page_view", "page_category": "Product Page", "page_name": myObj.locationTags.city || myObj.tour_city || myObj.city || "unknown city", "page_type": page_type, "product_category": ( (myObj.settings.eventType || '').length || (myObj.settings.cruiseType || '').length) ? (myObj.settings.eventType || '') + ' - ' + (myObj.settings.cruiseType || '') : myObj.anchor_brand_name, "product_id": myObj.bookingTypeId || 0, "product_name": myObj.title || "", "product_port_city": myObj.locationTags.city || myObj.tour_city || myObj.city || "unknown city", "product_price": myObj.settings.displayPriceOnly || 0, "product_currency": myObj.settings.displayPriceCurrency || '', "property_id": myObj.propertyId, "url": window.location.href, }); updateRecentlyViewedCookie(myObj); if(hidePhoneForBrands.includes(myObj.brand_name)) { $('li.nav-phone-number').addClass('hide'); } if(myObj.settings.is_experiences) { var convertedSlugCity = ( (myObj.settings.activityCity || '').trim() || myObj.city || '').replace(/\. /g, '-').replace(/ /g,'-').toLowerCase(); myObj.breadcrumbs = 'Home'; //console.log('myObj.settings.activityCity',myObj.settings.activityCity); //console.log('myObj.city',myObj.city); //console.log('convertedSlugCity',convertedSlugCity,myObj.exp_cities,myObj.exp_cities[convertedSlugCity]); if(myObj.exp_cities[convertedSlugCity] !== undefined){ myObj.breadcrumbs += ' / '+myObj.exp_cities[convertedSlugCity].country+' '; myObj.breadcrumbs += ' / '+myObj.exp_cities[convertedSlugCity].state+' '; myObj.breadcrumbs += ' / '+myObj.exp_cities[convertedSlugCity].city+' '; } } if(myObj.settings.is_combo_deal && (myObj.settings.combo_deal_properties || []).length) { myObj.all_tour_added = true; myObj.open_tour = false; var foundItTour = false; for(var idx = 0; idx < myObj.settings.combo_deal_properties.length; idx++) { myObj.settings.combo_deal_properties[idx].idx = idx; myObj.settings.combo_deal_properties[idx].combo_prop_book_id = myObj.settings.combo_deal_properties[idx].combo_property_id + '.' + myObj.settings.combo_deal_properties[idx].combo_booking_id; myObj.settings.combo_deal_properties[idx].combo_prop_book_id2 = myObj.settings.combo_deal_properties[idx].combo_property_id + '_' + myObj.settings.combo_deal_properties[idx].combo_booking_id; myObj.settings.combo_deal_properties[idx].combo_prop_book_class = myObj.settings.combo_deal_properties[idx].combo_property_id + '-' + myObj.settings.combo_deal_properties[idx].combo_booking_id; var itemInCart = getItemInCart(myObj.settings.combo_deal_properties[idx].combo_property_id, myObj.settings.combo_deal_properties[idx].combo_booking_id); myObj.settings.combo_deal_properties[idx].combo_order_id = Object.keys(itemInCart).length === 0 ? '' : (itemInCart.orderId || ''); myObj.settings.combo_deal_properties[idx].combo_date_time = Object.keys(itemInCart).length === 0 ? '' : (itemInCart.tourDateTimeFormatted || ''); myObj.settings.combo_deal_properties[idx].combo_added_to_cart = myObj.settings.combo_deal_properties[idx].combo_order_id.length > 0; if(!foundItTour && !myObj.settings.combo_deal_properties[idx].combo_added_to_cart) { myObj.settings.combo_deal_properties[idx].combo_open_class = 'open'; foundItTour = true; } myObj.all_tour_added = myObj.settings.combo_deal_properties[idx].combo_added_to_cart ? myObj.all_tour_added : false; } } myObj.has_download_menu = getUrlParam('tt') === '1' || myObj.has_download_menu || false; translatedTourTitles(myObj); console.log('translatedTourTitles', myObj); if(myObj.settings.show_combo_packages && getUrlParam('package', 0) === '1') { var comboTourUrl = 'https://my.cityexperiences.com/assets/cex_website/'+myObj.propertyId+'/'+myObj.bookingTypeId+'/comboTour.json'; jQuery.ajax({ dataType: "json", url: comboTourUrl, crossDomain: true, success: function (comboListing) { myObj.combo_package_list = comboListing; console.log('comboListing',comboListing); myObj.settings.show_combo_packages = typeof comboListing === 'object' && comboListing.listing.length; afterComboPackageTourFeed(myObj); }, error: function (jqXHR, error, errorThrown) { console.log('comboListing-not'); myObj.settings.show_combo_packages = false; afterComboPackageTourFeed(myObj); if (jqXHR.status && jqXHR.status == 400) { console.log(jqXHR.responseText); } else { console.log("Something went wrong - ", error); } }, }); } else { myObj.settings.show_combo_packages = false; afterComboPackageTourFeed(myObj); } }) .catch(console.log); }) .catch(function(error) { //Handle error }); }); })(jQuery);
ÜbersichtEnthältAusgeschlossenAngeboteZeitplanWo man sich trifftZusätzliche InformationenKleiderordnungDauer derMaximalWeniger als eine StundeEin paar StundenBesonderes ErlebnisLetzte BuchungenSpeisekarte ansehenHöhepunkteInklusiveAbfahrtsort/EinstiegAbfahrtszeitStundeStunden5 Stunden4 Stunden3 Stunden3,5 StundenEine StundeEinschließlichWarum diese Tour?Wichtige InformationenWas ist inbegriffen?TreffpunktEndpunktTeilenVerfügbarkeit prüfenLast-Minute-AngeboteJetzt sparenNeue TourÜber dieses ErlebnisExtras/ErweiterungenZusätzliche InfosKostenloses SouvenirWiederverwendbarer NebelponchoVonVerfügbarkeit prüfen ...Mehr lesen Weniger anzeigenBewertungenVerwandte TourenUpgrade-ErlebnisFAQsJetzt buchenPaketeWichtige InfosExtras & UpgradesExtras & UpgradesStornierungsbedingungenBuchen Sie mit ZuversichtSicher buchenRatenzahlung mit AffirmBei Bestellungen über 50 $ können Sie in vier Raten zahlen.Wir verwenden SSL-Verschlüsselung, um Ihre Daten sicher und privat zu halten.KundenbetreuungHaben Sie Probleme? Wir sind für Sie da. Rufen Sie uns an, chatten Sie mit uns oder schicken Sie uns eine E-Mail.Flexible BuchungVerwalten Sie Ihre Buchung und nehmen Sie Änderungen einfach direkt von Ihrem Konto aus vor. Verfügbar für die meisten Erlebnisse.Ticket-GarantieVerschieben Sie Ihre Reservierung oder erstatten Sie sie bis zu 2 Stunden vor der Einstiegszeit mit Ticket Assurance. Nicht verfügbar für ausgewählte Erlebnisse, einschließlich Sonderveranstaltungen, Feiertage oder Partnerreisen.Pauschalangebot verfügbarWahrscheinlich ausverkauft2X Reward-PunkteKostenlose Stornierung mit Ticket AssuranceKostenlose StornierungBis zu 2 Stunden im VorausBis zu 24 Stunden im VorausErfahren Sie mehrGruppentarife verfügbarSonderpreise für Gruppen von 20 oder mehr PersonenPlanung beginnenUnvergessliche ErlebnisseIkonische und einmalige ErlebnisseFachkundige TourguidesEinheimisch, freundlich und Experten für die Stadt, die sie liebenTour mit besonderem ZugangZutritt zum Gelände von Liberty Island und Ellis IslandEin Sightseeing-AbenteuerSehen Sie Alcatraz, die Golden Gate Bridge, Fort Point und vieles mehr!Inklusive Eintritt nach Alcatraz IslandSparen Sie bis zu 20% durch Bündelung!Paket ansehenTicketkäufe können nur an Bord getätigt werden.Tour-ReiseplanKaufen Sie ein Ticket und erhalten Sie ein Gratis-Ticket!Nur für Einwohner der Bay Area an ausgewählten Terminen. Fügen Sie ein Paar Tickets zum Warenkorb hinzu, um BOGO zu erhalten. Der Rabatt wird an der Kasse verrechnet.Alcatraz-Tickets ausverkauft?Bay Discovery Cruise hier buchenSuchen Sie nach einer Aktivität am Morgen?Erhalten Sie 10 % Rabatt auf die Bay Discovery Cruise um 10:40 Uhr.Optionen in der NäheBerkeley Vatertag Premier Brunch CruiseGebührenAlle Verwaltungs- und Hafengebühren inbegriffenGebühren und Steuern im Preis enthalten

Einkaufswagen