th-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