Singita Private Game Reserve Forum

[]

January 16, 2021

[]
200&&(c=c.substring(0,Math.min(c.length,200))+”…”),i.withScope(function(e){e.setTag(“logger”,n),e.setExtra(“jQueryEvent”,c),i.captureException(a)})}else i.withScope(function(e){e.setTag(“logger”,n),i.captureException(r)})}else o&&setTimeout(function(){t(e,r,n,!1)},1e4)}function n(){require([“ta/util/Error”],function(r){for(;g.length;){var n=g.shift();n.msg.match(/(^|[^w.])ta .*defin/)||(r.record(n.error,”window.onerror:: “+n.msg,n.evt,n.data,e(n.error),{isglobal:!0}),t(n.msg,n.error,”PageLoad”,!0))}s=!0})}function o(){l=null,E=!1,d=u=null}function i(e,t,n,i,a,c){var f=c&&c.target;if(E){if((!d||a&&a.stack)&&(d=a),!w)try{w=arguments.callee}catch(e){}l?f=l:(!f||u&&f==window)&&(f=u),r(e,t,n,i,d,{target:f,callee:w}),o()}else{d=a,E=!0,u=f;try{w=arguments.callee}catch(e){}}}function a(e){e=e||window.event,i(e.message,e.filename,e.lineno,e.colno,e.error||e,e)}function c(e){e=e||window.event,l=e.target||e.srcElement,f&&clearTimeout(f),f=setTimeout(function(){f=0,l=null},1)}var d,u,l,w,f,s=!1,g=[],E=!1;window.__scriptLoadError=function(e,r){if(e instanceof HTMLScriptElement){var t=e.getAttribute(“data-rup”);if(t){r&&window.define&&window.define(t,[],function(){return{}});var n=new Error(“Error loading script tag for: “+t);throw n.level=”WARN”,n}}},window.onerror=function(e,r,t,n,o){return i(e,r,t,n,o,window.event),!window.IS_DEBUG},window.addEventListener?(window.addEventListener(“error”,a,!1),window.addEventListener(“click”,c,!0),window.addEventListener(“load”,n)):window.attachEvent&&(window.attachEvent(“onerror”,a),document.attachEvent(“onmouseup”,c),window.attachEvent(“onload”,n))}(); !function(){var e,n,t=0,a=5e3;window.uiOverlay=function(l){if(document.readyState in{complete:1,loaded:1}){var i=arguments;require([“trjs!overlays/uiOverlay”],function(e){e.apply(null,i)})}else document.addEventListener&&(e=[].slice.call(arguments),t=(new Date).getTime(),n||(n=!0,document.addEventListener(“DOMContentLoaded”,function(){Date.now()-t 0;)define.apply(e,t.d.shift());for(;t.r.length>0;)require.apply(e,t.r.shift());e.getRequireJSQueue=null}l&&+new Date-iPrivacy Policy.”; var JS_coppa_deleted = “Your account has been deleted.”; var JS_close = “Close”; var JS_close_image = “https://static.tacdn.com/img2/buttons/closeButton.gif”; var JS_CHANGES_SAVED = “Changes saved”; var JS_community_on = “Community has been enabled”; var lang_Close = JS_close; var JS_UpdatingYourResults = “Updating your results …”; var JS_OwnerPhoto_heading = “Thank you for submitting your request to Tripadvisor. “; var JS_OwnerPhoto_subheading = “We process most listings and changes within 5 business days. “; var JS_OwnerPhoto_more = “Add more photos to your listing”; var JS_OwnerPhoto_return = “Return to your Owner’s Centre”; var JS_NMN_Timeout_title = “Do you want to keep trying?”; var JS_NMN_Timeout_msg = “It is taking longer than expected to get your location.”; var JS_NMN_Error_title = “Location error”; var JS_NMN_Error_msg = “There has been an error in trying to determine your location”; var JS_KeepTrying = “Keep Trying”; var JS_TryAgain = “Try Again”; var js_0001 = “Please select at least one vendor from the list.”; var js_0002 = “Please choose dates in the future.”; var js_0003 = “Please choose a check-out date that is at least one day later than your check-in date.”; var js_0004 = “Please choose dates that are less than 330 days away.”; var js_0005 = “Searching for deals … this may take a few moments”; var js_0006 = “Your selections have not changed.”; var js_0010 = “Please click again to open each window or adjust browser settings to disable popup blockers.”; var js_0011 = “Update”; var js_0012 = “Show next offer”; var js_0013 = “Please click the “Check Rates!” button above to open each window.”; var js_0014 = ‘Opens one window for each offer. Please disable pop-up blockers.’; var js_0015 = ‘Compare prices’; var js_invalid_dates_text = “The dates entered are invalid. Please correct your dates and search again.”; var js_invalid_dates_text_new = “Please enter dates to check rates”; var js_invalid_dates_text_new2 = “Please enter dates to show prices”; var qcErrorImage = ‘‘; var selectedHotelName = “”; var cr_loc_vend = ‘https://static.tacdn.com/img2/checkrates/cr.gif’; var cr_loc_vend_ch = ‘https://static.tacdn.com/img2/checkrates/cr_check.gif’; var cr_loc_logo = ‘https://static.tacdn.com/img2/checkrates/logo.gif’; var cd_loc_vend = ‘https://static.tacdn.com/img2/checkrates/cd.png’; var cd_loc_vend_ch = ‘https://static.tacdn.com/img2/checkrates/cd_check.png’; var JS_Any_Date = “Any Date”; var JS_Update_List = “Update List”; var sNexusTitleMissing = “The title must be populated”; var JS_Challenge=”Challenge”; var JS_TIQ_Level=”Level”; var JS_TIQ=”Travel IQ”; var JS_TIQ_Pts=”pts”; var RATING_STRINGS = [ “Click to rate”, “Terrible”, “Poor”, “Average”, “Very Good”, “Excellent” ]; var overlayLightbox = false; if(“” != “”) { overlayLightbox = true; } var isTakeOver = false; var overlayOptions = “”; var overlayBackupLoc = “”; var gmapDomain = “maps.google.com”; var mapChannel = “ta.desktop.showtopic”; var bingMapsLang = “en”.toLowerCase(); var bingMapsCountry = “CA”.toLowerCase(); var bingMapsBaseUrl = “http://www.bing.com/maps/default.aspx?cc=ca&”; var googleMapsBaseUrl = “http://maps.google.ca/?”; var yandexMapsBaseUrl = “http://maps.yandex.com”; var serverPool = “X”; var posLocale = “en_CA”; var cssPhotoViewerAsset = “https://static.tacdn.com/css2/build/concat/photos_with_inline_review-v22858779083a.css”; var cssAlbumViewerExtendedAsset = “https://static.tacdn.com/css2/build/concat/media_albums_extended-v23775176461a.css”; var jsPhotoViewerAsset = ‘https://static.tacdn.com/js3/src/ta/photos/Viewer-v23776172971a.js’; var jsAlbumViewerAsset = [“https://static.tacdn.com/js3/build/concat/album_viewer-c-v21720198776a.js”]; var jsAlbumViewerExtendedAsset = [“https://static.tacdn.com/js3/build/concat/media_albums_extended-c-v21319642680a.js”]; var cssInlinePhotosTabAsset = “https://static.tacdn.com/css2/build/concat/photo_albums_stacked-v24123383951a.css”; var cssPhotoLightboxAsset = “https://static.tacdn.com/css2/build/concat/photo_albums-v2231729968a.css”; var jsDesktopBackboneAsset = [“https://static.tacdn.com/js3/build/concat/desktop_modules_modbone-c-v21048715873a.js”]; var jsPhotoViewerTALSOAsset = ‘https://static.tacdn.com/js3/src/TALSO-v21232481152a.js’; ]]> =0&&o1e12?new Date:performance.now())-t.timeStamp;”pointerdown”==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){[“click”,”mousedown”,”keydown”,”touchstart”,”pointerdown”].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);]]> “}”,”pageServlet”:”ShowTopic”,”sessionId”:”4EC1FA0783CE42F2B71C8C08BAC3A66D”,”cdnHost”:”https://static.tacdn.com”,”quickSave”:true,”isExternalReferral”:true,”useERUserTracking”:true,”cookieDomain”:”.tripadvisor.ca”,”uid”:”YALziwokMoAAAFBMTjoAAAEG”,”hasReferral”:true,”posLocale”:”en_CA”,”MEDIA_HTTP_BASE”:”https://media-cdn.tripadvisor.com/media/”,”user_id”:””,”loggedIn”:false,”securelyLoggedIn”:false},”DUST_GLOBAL”:{“IS_IELE8″:false,”LOCALE”:”en_CA”,”IS_IE10″:false,”CDN_HOST”:”https://static.tacdn.com”,”DEVICE”:”desktop”,”IS_RTL”:false,”LANG”:”en”,”DEBUG”:false,”READ_ONLY”:false,”POS_COUNTRY”:153339},”JS_SECURITY_TOKEN”:”TNI1625!AMRKMcXNIfk6O7z71nG6VEHYtZCXszeMbLMUeSzKlOmlAyFKCpmQ27yzOirQkmyz6FTLJXE2K2khbdN0K9iEw19NmXp4cBWTQFj7Gy5JAqlUqHfGI5A8W0zWQmo5P98RamWRZiloo6IGColBmUUIFc9xXlPGHUh6SoNLq1Sc6Km8″,”GEO_ID”:”471854″,”hotelsInGeo”:”0″,”LOC_ID”:”471854″,”isMobile”:false,”isRtl”:false}; return model; }); } ]]>

!!x).forEach(x => {x.classList.add(‘skyExpanded’);});} else {setTimeout(()=>{document.querySelectorAll(‘#LEADER_BOARD_SKY_STYLE’).forEach(x=>{x.innerHTML=””;});}, 300);}}});});})();]]> 1) { postId = window.location.hash.substring(1); var thisPostIndex = parseInt(postIndex[postId]); if (!isNaN(thisPostIndex) && thisPostIndex !=0 ) { if ( postSortOrder == “newFirst”) { correctOffset = parseInt((numReplies – thisPostIndex) / 10) * 10; } else { correctOffset = parseInt((thisPostIndex-1) / 10) * 10; } if (correctOffset != 0) { window.location = require(‘ta/util/Doer’).tadoless(‘ShowTopic’, {g: ‘471854’, i: ‘11273’, k: ‘2672136’, o: ’99’}, [‘Tipping’, ‘Singita_Private_Game_Reserve_Sabi_Sand_Game_Reserve_Kruger_National_Park’],”).replace(“-o99-“,”-o”+correctOffset+”-“) + “#”+postId; } } } ]]>

I recently booked a trip to visit Singita and realize the rooms, food and tours are all inclusive. Does this also include gratuities?

The trip is already so expensive, I cannot imagin they expect you to tip on top of the 2000 plus per day per person.

Hi Scotsdale,

Tipping is a big way of life here in SA. 10% is customary, if you eat out at restaurants and bars etc and take cabs.

However you do not have to tip everyone at the lodge all the time, as they have salaries, whereas normal barstaff/waiters etc rely on tips and only get a very small basic wage to cover their travel to and from work.

Also at lodges, there are so many people behind the scenes that do as much as (if not more) customer-facing staff that it would be unfair to tip only the ones you meet. I wouldn’t tip as a rule, maybe just for the odd service if you find it exceptional.

Hi,

Tipping in game lodges always catches people out. You pay to go there (and yes, it won’t be cheap!), and you will have an absolutely great time, and then on your last night, when the staff come in to turn down your room, they will politely leave a couple of envelopes in your room with the word ‘Gratuities’ on them … help !! You don’t want to ask other guests what they are leaving, cos it feels too intrusive, you are not sure how to raise the subject with the management … so what to do ??

Some lodges will put a ‘guideline’ in their brochure, but my general ‘rule of thumb’ is as follows :

Your Ranger – he will probably have given you experiences that you have only ever dreamed about, or seen on The Discovery Channel, and he will have sat with you for meals, and by the end of your safari he will probably be your new ‘best friend’. However, don’t go overboard – I normally say give him the equivalent of a GOOD meal out for 2, with a nice bottle of wine, so that he can treat himself (and his girlfriend !) on his time off.

Your Tracker – invaluable help, will no doubt have spotted things that the normal human would never see … I would say tip him the equivalent of a few drinks in the local bar – also to be enjoyed on his time off.

Cleaning Staff – if they have kept your room spotless, then a tip is a nice gesture – maybe the equivalent of a couple of drinks.

Hope this helps – please, everyone, this is my personal opinion, I know others will disagree, and please don’t think for one minute that I am saying that I am promoting drinking … but I have found, having been on a lot of safaris, that this rule of thumb works pretty well – everyone knows how much a good meal will cost, and a drink in a bar … so it is just an easy way way of estimating a tip amount that will not offend anyone.

Tracey – Director, Travel Butlers

Level Contributor 295 posts

Hi there

A lot has been posted on this topic. Search for “tipping” in the Sabi-Sand forum or follow this thread:

http://www.tripadvisor.com/ShowTopic-g471853-i10087-k1387557-l8371748-Tipping_in_Exeter_Leadwood-Sabi_Sabi_Private_Game_Reserve_Sabi_Sands_Game_Reserve.html#8371748

Well, my notes from a few months ago at Singita indicate that the suggested tip was R250 per couple for the Ranger, R150 per couple for the Tracker. Per day. At a lodge as rich as Singita, I would say another R50 for the housekeeping per day and something in that range for your waiter.

Dave Patterson – Owner, The Africa Safari

I always encourage generous tipping for rangers – that is, of course, if you were sattisfied with the ranger. Keep in mind that they are the ones that work the hardest to make your safari experience as enjoyable as possible….they keep long hours, from early in the morning, till late at night when their guests are ready to go to bed, and yet, unfortunately, they do not receive good salaries from the lodges.

Tanya * owner * Africa Direct

The info our agent gave us included the following tipping guidelines:

At safari camps and lodges:

Rangers: $15-20 per guest per day.

Trackers: $5-10 per guest per day.

General Camp/Lodge Staff: $5 per guest per day placed in the communal tipping box to be shared and divided by the staff.

In the cities and other areas:

Hotel staff: $2-5 per guest per day.

Porterage: $1-2 per person per move.

Transfers: $5 per person.

Tour Drivers/Guides:

half day tour $7-10 per person

full day tour $15-20 per person

Restaurants: 10% if satisfied with the service.

All of the above amounts are in US dollars and I intend to convert them to Rand at the time I give them.

Level Contributor 15,087 posts

As another New Yorker, my guidelines are much the same as “wanderingattorney” above. I hold to these (+/-) whether I was spending $2,000/nt at Singita or lower cost properties whether in SA or other worldwide destinations.

Of course, always dependent on quality of service.

Yes, the camps provide a Guideline for Tipping in their room brochure; some provide envelopes for these or in the case of Ranger and/or Tracker with whom you have the most direct contact, can personally give to them.

Dear Wanderingattorney,

I think the tipping guide your agent gave you is extremely generous and I personally think it is much too high. Having stayed in a number of Lodges and knowing people who own Lodges the guide should rather be:

Ranger: R100/per couple per day – if your Ranger shows you something spectacular or goes above and beyond by all means give them a little more.

Bearing in mind that the most senior ranger will earn R8000 per month and most others between R 4000 -R6000, paying them R400 in tips per couple per day is preposterous. It is not your responsibility to ensure they have a good salary – tipping is discretionary and an add on for a job done well.

Trackers: R50/per couple per day

They usually earn between R2500 – R3000 a month

Camp Staff: R400/per couple per stay

In terms of the cities:

Hotel Staff:

I leave R 20 – 50 in the room for the cleaning staff depending on length of stay

Won’t usually tip anybody else

Porters: Buck a bag still applies

Transfers: 10% of the transfer price

Half day: R50 – R100/couple

Full Day: R100 – R150/couple

Restaurants: if service is excellent I leave 15%,otherwise 10%

Just because you pay 2000 per day, you should not have to fork out a fortune on gratuities as well, many people save for a very long time to do these trips and it remains the responsibility of the Lodges and Hotels to pay their staff a decent wage.

Enjoy your trip

I typically tip at the lodges between $15-20 per day per as a single traveler for the ranger, 1/2 that for the tracker and $5 per day for the general staff.

Mike

>>

So, if you stay at an expensive hotel in the States and have expensive meals, you don’t expect to tip the staff who serve you?

As far as I know, only Iceland and a couple of other Scandinavian countries have no tipping culture. Then again, they also have the world’s best welfare benefits.

Your tips will go far in South AFrica. The person you tip is probably the cheif wage-earner of their family and may be supporting many family members.

Get answers to your questions about Singita Private Game…

FIRST_AD_TOP – apiTrigger) {window.removeEventListener(‘scroll’, initAtFirstAd);if (!initHasRun) {initHasRun = true;require([‘@ta/platform.runtime’, ‘trjs!cpm/Desktop’], function(runtime, desktopAds) {runtime.importBundle(‘@ta/platform.consent’).then(function (bundle) {bundle.requestConsent(bundle.CategoriesEnum.ADVERTISING, function() {desktopAds.initDoubleClick(initOpts); });});});}}}initAtFirstAd();window.addEventListener(‘scroll’, initAtFirstAd);});]]>

But donu2019t wait:u003c/span> Expires on {sDate} at {sTime}”,”footer_explore_v2″:”Explore”,”photo_uploader_add_a_location_tag”:”Add a location tag”,”save_all_items_modal_header”:”Save all items to a Trip”,”ugc_uploader_photo_v3″:”Post photos”,”common_Search”:”Search”,”trips_error_default_update_comment”:”There was a problem updating this comment. Please try again.”,”attractions.cart_recapture.abandoned_cart_overlay_cta”:”Visit your shopping basket to see the items you saved last time u2014 and check out when youu2019re ready.”,”ugc_uploader_photo_v2″:”Post photo”,”embedded_content_remember_choice_label”:”Remember my choice”,”cx_explicit_preferences_end_body_geo”:”Now start discovering great {destinationGeoName} ideas from other travellers like you.”,”explicit_preferences_account_screen_name”:”Name”,”stat_modal_view_trip_v2″:”View Trip”,”cx_explicit_preferences_edit_cta_header”:”Your trip details”,”mw_common_menu_fffffd37″:”Menu”,”command_where_to_screen_v2″:”Tell us where you’re going.”,”ONB_saves_educator_tap_the_heart_subhead”:”Now let’s help you plan an awesome trip. When you see something you like, tap the heart to save it.”,”cx_explicit_preferences_profile_name_help”:”This is how your name will appear on Tripadvisor”,”trips_lander_title”:”Trips on Tripadvisor”,”cx_explicit_preferences_cta_traveling_partner”:”Travelling with your partner”,”footer_ta_sites_v2″:”Tripadvisor Sites”,”hrm_flyoutupsell_cta_tryitforfree”:”Try it for free”,”trips_error_save_trip_full”:”Oh no! Your Trip has too many items in it. Please remove some items and try saving again.”,”link_uploader_refresh”:”Refresh”,”help_center_topics_ffffe427″:”Popular Help Centre Topics”,”m1_trips_save_success_stat_d2″:”Saved! Next, organise it in a Trip.”,”footer_do_business_v2″:”Do Business With Us”,”hrm_flyoutupsell_cta_starttrial”:”Start a free trial”,”common_Cookie_consent_14f6″:”Cookie consent”,”trip_privacy_setting_header”:”Choose who can see your Trip”,”post_photo_upload_another_video”:”Drag and drop or u003c/> u003cspan class=”{sColorClass1}”>upload another photo u003c/span>”,”cx_explicit_preferences_cta_traveling_family”:”Travelling with family”,”uploader_error_required_field”:”This field is required”,”stat_modal_trip_name”:”Trip name”,”mobile_help_center_url”:”https://www.tripadvisorsupport.com/hc/en-us”,”common_Restaurants”:”Restaurants”,”new_photos_terms_of_use”:”By uploading these photos,u00A0I verify that I am the owner of this content and I accept Tripadvisor’s u003ca href={link} target=’_blank’>Terms of Useu003c/a>”,”trips_move_error”:”There was a problem moving this item. Please try again.”,”stat_modal_saved_to_tripname_with_bold”:”Saved to u003cb>{TripName}u003c/b>”,”onboarding_social_brand_splash_get_started_cta”:”Get started”,”post_photo_tips_guidelines”:”You can upload a maximum of 10 photos at a time”,”cx_explicit_preferences_destination_header2″:”Great. Where to?”,”inspiration_region_6_ffffee49″:”Africa & the Middle East”,”reg_and_join”:”JOIN”,”trips_education_amazing_ideas_one_place”:”Trips: your amazing travel ideas, all in one place”,”cx_explicit_preferences_destination_subheader2″:”Weu2019ll show you recommendations from other travellers whou2019ve been there.”,”mem_settings”:”Settings”,”remove_location_cf6″:”Remove location”,”cx_explicit_preferences_cta_family2″:”With family”,”cx_explicit_preferences_segment_friends”:”My friends”,”common_Close”:”Close”,”onetap_subhead_signin_alerts_deals”:”Sign in to get price alerts and deals”,”soical_loading_error_2″:”Give it another try, please.”,”common_Hotels”:”Hotels”,”common_Signin”:”Sign in”,”embedded_content_show_content_label”:”Show external content”,”home_location_things_near_you”:”Tell us where you live to get great ideas for things to do near you.”,”post_photo_or_just_text”:”or”,”mobile_profile_update_error_username_invalid_characters”:”Only use Latin characters (A-Z), numbers, underscore “_”, and dash “-“.”,”abandon_cart_home_banner_2350″:”Still interested?”,”trips_error_default_add_item_to_trip”:”There was a problem adding the item to this Trip. Please try again.”,”common_btn_cancel_ffffe209″:”Cancel”,”hrm_flyoutupsell_reviewcollection”:”Let us collect more reviews for you with even less effort. More reviews means more opportunities to impact your ranking and increase your visibility on Tripadvisor.”,”cx_explicit_preferences_end_body_nearby”:”Now start discovering nearby ideas from other travellers.”,”social_confirm_close_photo_post”:”Are you sure you want to close out of your photo post?”,”post_photo_drag_and_drop_from_desktop”:”Drag and drop a file from your desktop “,”ads_perf_dashboard_get_started_updated”:”Get Started”,”mem_account_info”:”Account info”,”respond_to_a_review_ffffe427″:”u003ca href=”{0}”>Respondu003c/a> to a review”,”I_live_in”:”I live in…”,”mobile_try_again”:”Try again”,”attractions.cart_recapture.alert_body”:”Click here at any time to finish your booking. Be sure to log-in or register to access your basket from any device.”,”utility_nav_profile”:”Profile”,”trips_collaborator_privacy_modal”:”This Trip is {privacySetting}. Only the owner of the Trip can change this setting.”,”btn_cancel”:”Cancel”,”onboarding_social_name_screen_username_helper_text_period_814″:”This unique handle helps travellers search for you.”,”attractions.cart_button_acc”:”Basket”,”region_apac_25ed”:”Asia Pacific”,”cx_explicit_preferences_cta_month2″:”Travelling in {month}”,”cx_explicit_preferences_cta_solo2″:”Solo”,”post_photo_unsupported_file”:”This file type is not supported. Please refer to Tripadvisor’s photo posting guidelines. “,”trips_inline_profanity_check”:”Public Trips cannot contain profanity”,”onetap_message_unlock”:”Unlock the best of Tripadvisor”,”create_trip_screen_privacy_public_explanation_v2″:”Visible to all travellers on Tripadvisor, including any friends you share your Trip with”,”common_more_ffffe87d”:”more”,”command_companion_v2″:”Tell us who you’re travelling with.”,”cx_explicit_preferences_edit_trip_details”:”Edit trip details”,”trip_note_update_error”:”There was a problem updating your Trip note. Please try again.”,”command_interests_screen”:”Tell us what you want to do on your trip.”,”create_trip_screen_privacy_private”:”Private”,”profile_update_error_display_name_too_long”:”{0} cannot be longer than 40 characters”,”brand_save_money_we_search_200″:”u003cb>Save money.u003c/b> We search 200+ sites for the lowest hotel prices.”,”common_26ec”:”u00A9 {0} TripAdvisor LLC”,”hrm_onboarding_flyout_partners”:”Save precious time by responding to reviews across Tripadvisor, Google and Facebook all on the same page.”,”common_ffffe429″:”Write a u003ca href=”{0}”>reviewu003c/a>”,”mobile_no_results_found_8e0″:”No results found”,”trips_stat_modal_profanity_check_native”:”Your Trip could not be created because public Trips cannot contain profanity. Please try again.”,”file_size_too_big_photo_oops_message”:”This file size is not supported. Please make sure your file is less than {0}”,”social_no_permission”:”You don’t have permission to take this action.”,”utility_nav_cart”:”Shopping Basket”,”common_Forums”:”Forums”,”common_Allrightsreserved”:”All rights reserved.”,”trips_reported_explanation”:”Your Trip does not meet Tripadvisor’s u003ca href=”https://www.tripadvisorsupport.com/hc/articles/360008133913-Tripadvisor-s-Content-Policy”>Content Guidelinesu003c/a> for public Trips and has been set to private. It cannot be made public again.”,”social_nCount_followers2″:”{0, plural, one{# follower} other{# followers}}”,”hrm_onboarding_flyout_customizecampaigns”:”Create a review collection campaign with our optimised templates that can be customised to make them your own.”,”attractions.cart_recapture.alert.headline”:”Now you can pick up where you left off!”,”post_photo_more_info_2″:”For more information see our u003cspan>photo uploader guidelinesu003c/span>”,”mobile_back_8e0″:”Back”,”mobile_reviews_plural”:”{0, plural, one{# review} other{# reviews}}”,”typeAheadSearchFor_fffff81b”:”Search for “{0}””,”trips_error_duplicate”:”You already have a Trip with this name.”,”stat_modal_saved_to_tripname_with_bold_v3″:”Saved to u003ca href=”{TripLink}” class=”{TripClass}”>u003cb>{TripName}u003c/b>u003c/a>”,”owners_managelisting_open”:”Open”,”command_dates_screen_geo”:”Tell us when are you travelling to {destinationGeoName}.”,”create_trip_success_toast_with_bold”:”u003cb>{TripName}u003c/b> created!”,”insurance_title”:”Insurance”,”post_photo_upload_failed”:”Your photo upload failed. Please try again. “,”stat_modal_save_to_trip_v2″:”Save to a Trip”,”cx_explicit_preferences_interests_header2″:”What do you want to do on your trip?”,”discover_ttd”:”Discover things to do”,”jfy”:”Just for you”,”cx_explicit_preferences_welcome_no”:”No thanks”,”member_support_reviews”:”Reviews”,”onboarding_social_name_screen_username_ghost_text”:”e.g. SavvyTraveler123″,”og_masthead_social_sharing_ffffe427″:”Social sharing”,”cx_explicit_preferences_welcome_subheader2″:”Answer some questions about your trip so we can show you more personalised ideas.”,”ds_textarea_minimum_characters”:”{numCount}/{numLimit} min characters”,”post_photo_upload_photos_button”:”Upload photos”,”cx_explicit_preferences_welcome_header_no_name2″:”Thanks. Now, let’s help you plan a trip you’ll love.”,”trips_error_default_edit_trip”:”There was a problem editing this Trip. Please try again.”,”stat_modal_change”:”Change”,”embedded_content_third_party_notice”:”This content is hosted by a third party ({hostName}). By showing external content you accept the {termsUrl} of {hostName}.”,”common_Xof5bubbles”:”{0} of 5 bubbles”,”profile_update_error_username_too_short”:”{0} needs to be at least 3 characters”,”a11y_skip_link”:”Skip to main content”,”cx_explicit_preferences_cta_traveling_friends”:”Travelling with friends”,”mobile_offline_megabyte_ffffec6c”:”{0} MB”,”global_nav_content_cta_post”:”Post”,”cx_explicit_preferences_profile_hometown_help2″:”Get travel ideas and flight deals based on where you live”,”cx_explicit_preferences_profile_end_screen_no_name”:”Thanks.”,”common_Signout”:”Sign out”,”nearby_use_my_location”:”Use my location”,”cx_explicit_preferences_cta_partner2″:”With your partner”,”trip_planner_clear”:”Clear”,”trips_error_default_edit_privacy”:”There was a problem updating the privacy of this Trip. Please try again.”,”embedded_content_terms_and_conditions_label”:”terms and conditions”,”cx_explicit_preferences_segment_header”:”Who are you travelling with?”,”footer_disclaimer_line1_no_country”:”This version of our website is addressed to speakers of {language} generally, except for when a specific version of our website exists for their country or region. You may use the drop-down menu to access other versions of Tripadvisor addressed to specific countries and regions.”,”cx_explicit_preferences_cta_dates2″:”Travelling from {date1} to {date2}”,”stat_modal_undo”:”Undo”,”hrm_flyoutupsell_hr”:”Hi {sUserDisplayName}! Unlock our reputation management solutions to help impact your Tripadvisor bubble score and ranking.”,”cx_explicit_preferences_cta_months2″:”Travelling from {month1} to {month2}”,”free_cancel_ahead”:”u003cspan class=”{0}”>No commitment:u003c/span> Cancel for free up to 24 hours ahead.”,”getlistednew_list_on_tripadvisor_ffffe427″:”List your business”,”ib_more_info”:”More Info”,”post_photo_accepted_formats”:”Accepted photo formats include .jpg .jpeg .gif and .png”,”footer_disclaimer_line2_estimates”:”Indicative hotel prices displayed on our u201CExploreu201D pages are estimates extrapolated from historic pricing data.”,”my_name_is”:”My name is…”,”global_travel_notice_covid19″:”Learn more about COVID-19″,”linkify_url_error”:”You have entered an inappropriate URL”,”post_photo_video_count_text”:”Photo {nCurrentphotoCount} of {nTotalphotoCount}”,”success_repost_photo”:”Your photo was posted!”,”profile_update_error_username_contains_ta_words”:”Words such as u201CStaffu201D, u201CAdminu201D, u201CTripadvisoru201D are not allowed.”,”onboarding_social_skip_link”:”Skip for now”,”photos_provided_by_2_1bed”:”Some photos provided by {0}.”,”new_photo_terms_of_use”:”By uploading this photo,u00A0I verify that I am the owner of this content and I accept Tripadvisor’s u003ca href={link} target=’_blank’>Terms of Useu003c/a>”,”footer_about_ta_v2″:”About Tripadvisor”,”mobile_search_filter_clear_26e8″:”Clear”,”are_you_an_owner_ffffe427″:”Are you an u003ca href=”{0}”>owner or representativeu003c/a>?”,”dual_search_popular_destinations”:”POPULAR DESTINATIONS”,”stat_modal_general_error”:”There was a problem saving this item. Please try again.”,”stat_modal_create”:”Create”,”mw_js_positionPermissionDenied”:”Tripadvisor was denied permission to access your location. Give your browser and Tripadvisor permission to use your current location and try again.”,”stat_modal_removed_from_tripname_with_bold_v3″:”Removed from u003ca href=”{TripLink}” class=”{TripClass}”>u003cb>{TripName}u003c/b>u003c/a>”,”rs_reputation_filter_accounts_ta”:”Tripadvisor”,”ip_view_profile_1cf1″:”View profile”,”cx_explicit_preferences_dates_flexible”:”My dates are flexible”,”global_travel_notice_head”:”TRAVEL NOTICE:”,”nav_rs_premium_contact_support”:”Call {sSupportPhoneNumber} with your ID: {nLocationId}”,”profile_update_error_contains_profanity”:”Profanity is not allowed”,”hrm_flyoutupsell_managementcenter”:”Unlock our reputation management solutions to collect more reviews and give travellers confidence to book.”,”cx_explicit_preferences_cta_interested_in”:”Interested in”,”bhotw_region_europe_title”:”Europe”,”see_all_results_for”:”See all results for “{query}””,”dual_search_recently_viewed_all_caps”:”RECENTLY VIEWED”,”cx_explicit_preferences_profile_header3″:”Welcome! Tell us about yourself.”,”trip_contains_profanity”:”Your Trip contains profanity and cannot be made public. Please modify your Trip and try again. Questions? View Tripadvisor’s u003ca href=”https://www.tripadvisorsupport.com/hc/articles/360008133913-Tripadvisor-s-Content-Policy”>Content Guidelinesu003c/a>.”,”m1_trips_my_saves_header”:”My Saves”,”check_email_subheader”:”Check your email for your discount code and get ready to do more for less.”,”profile_update_error_username_too_long”:”{0} cannot be longer than 20 characters”,”rs_reputation_filter_accounts_google”:”Google”,”cx_explicit_preferences_dates_header”:”When are you travelling to {destinationGeoName}?”,”file_size_limit_photo”:”File size should be less than {0}MB.”,”region_americas_25ed”:”The Americas”,”cx_explicit_preferences_cta_subheader3″:”Youu2019ll see personalised ideas from other travellers like you.”,”onboarding_social_name_screen_returning_header”:”Please confirm or update your profile information”,”new_trip_name_error_msg”:”Please select a new name for your Trip.”,”onboarding_social_name_screen_display_name_field_v2″:”Display name”,”onboarding_social_name_screen_display_name_ghost_text”:”e.g. John Doe”,”social_mobile_reason_for_sponsored”:”Sponsored”,”footer_disclaimer_line2″:”TripAdvisor LLC makes no guarantees for availability of prices advertised on our sites and applications. Listed prices may require a stay of a particular length or have blackout dates, qualifications or other applicable restrictions. TripAdvisor LLC is not responsible for any content on external web sites that are not owned or operated by Tripadvisor.”,”airm_mobile_show_more”:”Show more”,”footer_disclaimer_line3″:”TripAdvisor LLC is not a booking agent or tour operator. When you book with one of our partners, please be sure to check their site for a full disclosure of all applicable fees.”,”select_trip_header”:”Select a Trip”,”footer_disclaimer_line1″:”This is the version of our website addressed to speakers of {language} in {country}. If you are a resident of another country or region, please select the appropriate version of Tripadvisor for your country or region in the drop-down menu.”,”rs_reputation_filter_accounts_fb”:”Facebook”,”trips_lander_md”:”Trips makes it easy to save travel plans, build wish lists and map out all your ideas for places to eat, things to do and where to stay u2014 and bring them with you, wherever you go.”,”hrm_onboarding_flyout_donotshowagain”:”Do not show again”,”trips_education_easy_save_orgaize_map_bring_with_you”:”Trips makes it easy to save, organise and map out all your ideas for places to eat, things to do and where to stay u2014 and bring them with you, wherever you go.”,”mobile_discovery_where_to”:”Where to?”,”trips_error_default_move_item”:”There was a problem moving this Trip item. Please try again.”,”sbx_survey_prompt_text”:”Can you tell us about your Tripadvisor experience?”,”common_9bc”:”Currency”,”visit_your_center_ffffe427″:”Visit your u003ca href=”{0}”>Management Centreu003c/a>”,”common_TripAdvisor”:”Tripadvisor”,”dual_search_ghost_im_going_to”:”I’m going to…”,”m1_trips_unsave_error”:”There was a problem removing this item. Please try again.”,”have_other_questions_ffffe427″:”Have Other Questions?”,”ds_textarea_maximum_characters”:”{numCount}/{numLimit} max characters”,”hrm_flyoutupsell_ownerresponse”:”Save time by responding to reviews across Tripadvisor, Google, and Facebook all on the same page.”,”social_edit_profile_username”:”Username”,”terms_and_policy_links”:”By proceeding, you agree to our u003ca rel=”nofollow” class=”{2}” target=”_blank” href=”{0}”>Terms of Useu003c/a> and confirm you have read our u003ca rel=”nofollow” class=”{2}” target=”_blank” href=”{1}”>Privacy Policyu003c/a>.”,”10_off_tour_activity_v2″:”u003cspan class=”{1}”>10% offu003c/span>u003cbr/> any tour or activity”,”m2_trips_detail_date_display”:”{0} u2022 {1}”,”trips_error_default_add_item_comment_v2″:”There was a problem adding a note to this Trip item. Please try again.”,”stat_modal_create_a_trip_v2″:”Create a Trip”,”inbox_title”:”Inbox”,”common_more_capital_ffffe27f”:”More”,”trips_trip_name_character_count”:”{nCharacterCount} / 50 characters”,”trips_lander_copy_1″:”Save traveller-recommended places for your trip”,”flash_uploader_tips_and_guidelines_10d8″:”Tips & guidelines”,”onboarding_social_name_screen_display_name_helper_text_period_814″:”This appears on your profile and any content you post.”,”onboarding_social_name_screen_cta”:”Confirm”,”trips_lander_copy_2″:”View the things to do, restaurants and hotels you saved on a map”,”trips_privacy_explanation_new”:”Not visible to other Tripadvisor users and members, except for you and any friends with whom you share your Trip.”,”common_NEW_1bd8″:”NEW”,”dmo_hdr_alerts”:”Alerts”,”cx_explicit_preferences_interests_subheader3″:”Take a look at what {destinationGeoName} travellers are talking about and select what you might like.”,”mg2019_fbot_see_where_friends_traveled”:”See where your friends have travelled”,”trips_error_unsave”:”There was a problem removing this item from your Trip. Please try again.”,”mobile_profile_update_error_display_name_too_short”:”Display name needs to be at least 3 characters”,”footer_get_app_v2″:”Get The App”,”visit_the_help_center_ffffe427″:”Visit the u003ca href=”{0}”>Help Centreu003c/a>”,”stat_modal_name_exceeds_50″:”Trip name must not exceed 50 characters”,”social_Saved”:”Saved”,”cx_explicit_preferences_cta_date2″:”Travelling on {date}”,”trips_lander_copy_3b”:”Easily access all your saves while travelling, wherever you go”,”post_video_typeahead_placeholder_text_search”:”Search”,”trips_error_general_default”:”There was a problem with this Trip. Please try again.”,”footer_region”:”Region”,”social_nowFollowing”:”Following”,”cx_explicit_preferences_cta_header”:”Tell us about your trip”,”common_Thingstodo”:”Things to do”,”trips_lander_header”:”Travelling soon? Save your amazing ideas all in one place with Trips.”,”my_bookings_headtext_fffff9b3″:”Bookings”,”trips_product_name”:”Trips”,”links_tahelphostname”:”https://www.tripadvisorsupport.com/hc/en-gb”,”tavrs_view_profile”:”View profile”,”post_video_location_typeahead_add_location”:”Add another location “,”explicit_preferences_who_are_you_traveling_with_skip_button”:”SKIP”,”cx_explicit_preferences_welcome_header3″:”Hi, {displayName}. Letu2019s help you plan a trip youu2019ll love.”,”mx_geo_picker_popular_destinations”:”POPULAR DESTINATIONS”,”cx_explicit_preferences_segment_family”:”My family”,”common_Next”:”Next”,”sbx_take_survey”:”Take survey”,”trips_log_in_now”:”Log in now”,”empty_trip_home_get_started”:”Get started”,”dual_search_worldwide”:”Worldwide”,”add_more_photos_mw_uploader”:”Add more photos”,”global_nav_profile_my_business”:”My business”,”cx_explicit_preferences_cta_friends3″:”With friends”,”mobile_delete”:”Delete”,”social_loading_error_1″:”Whoops, something went wrong.”,”continue_sub_cta”:”Continue where you left off”,”trips_error_default_add_note”:”There was a problem adding a note to this Trip. Please try again.”,”cx_explicit_preferences_profile_end_screen2″:”Thanks, {displayName}”,”compliment_9bd”:”Sorry, an unexpected error has occurred. Please try again in a moment.”,”cx_explicit_preferences_segment_solo”:”Myself”,”homepage_war_button”:”Write a review”,”hrm_onboarding_flyout_autoreviewcollection”:”Let us do the work for you to collect more reviews! Connect and enable your provider to get started.”,”where_to_hint_text”:”Paris, Costa Rica, Brazil…”,”stat_modal_removed_from_tripname”:”Removed from {sTripName}”,”cx_explicit_preferences_cta_traveling_solo”:”Travelling solo”,”common_Populardestinations”:”Popular destinations”,”post_photo_add_description_v2_part_2″:”Tell other travellers about your photo “,”create_trip_screen_privacy_public”:”Public”,”post_photo_add_description_v2_part_1″:”Add a description “,”post_photos_form_header”:”Post photos”,”2019_by_skipping_username_step”:”By skipping this step you will be given an automatically generated display name and @username”,”reg_back”:”Back”,”guidelines_and_policies_ffffe427″:”Guidelines and policies”,”create_trip_general_error_v2″:”There was a problem creating this Trip. Please try again.”,”cx_explicit_preferences_segment_partner”:”My partner”,”cx_explicit_preferences_welcome_yes”:”Yes, letu2019s go”,”trips_save_CTA”:”Save”,”profile_update_error_username_already_exists”:”{0} has already been taken”},”features”:{“ungate_sponsored_listing_clicks”:true,”ml_hard_gate_targeting_logic”:false,”hard_gate_excl_disable_domain_direct”:false,”t11210_mip_variant_c”:false,”prod_runtime_tracking”:false,”curated_shelves_preview”:true,”ml_hard_gate_no_reqlo”:false,”cruise_better_by_sea”:false,”optimus_new_members”:false,”trips_heart_icon”:true,”trips_pop_stat_modal”:true,”travel_advice”:true,”mw_hard_gate_ghost”:false,”fbot_single_screen_onb”:false,”trips_skip_check_whitelist_public_trips”:true,”hr_defer_facebook_sdk”:false,”review_detail_hard_gate_master_dt”:false,”rubicon_header_bidding”:true,”home_lithium”:true,”sentryio_js”:false,”t9944_sbx_2_bu”:false,”t11208_variant_a_curated_broad_interest_categories”:false,”cx_explicit_preferences_scoped_home_cta_always_edit”:true,”react_tracking_impressions”:true,”post_signup_attr_promo_explicit_preferences_control”:false,”t11213_mip_2_account_screen”:false,”mobile_web”:false,”ep_has_command_screen”:false,”saves_hotspot_button”:false,”tourism_lithium”:true,”ml_hard_gate_master”:false,”fusion_lithium_attractions_client_side_navigation”:false,”rich_content_editor”:true,”account_screen_onb_control”:false,”fusion_lithium_hotels_list_page”:false,”facebook_onetap_desktop”:true,”hydrate_while_loading”:false,”attractions_lithium_filtered”:false,”ml_hard_gate_dt_v3_master”:false,”tourism_management_center”:false,”media_preview_focal_point”:false,”restaurant_list_consolidation”:false,”nearby_lithium”:true,”h_defer_facebook_sdk”:false,”amazon_header_bidding”:true,”qualtrics_site_brand_experience_surveys_journey”:true,”qualtrics_surveys_any”:false,”t4b_management_center_full_story_sampled”:false,”travel_advice_preview”:true,”ml_hard_gate_dt_v1_master”:false,”ml_hard_gate_dt_v2_master”:false,”trips_bookmark”:true,”facebook_onetap_mobile”:false,”quicklinks_sorting_model”:false,”vr_broad_geo_list_redesign”:false,”account_screen_onb”:false,”cx_explicit_preferences_onetap”:true,”t9945_sbx_2_journey”:true,”saves_educator_control”:false,”t12368_project_nova_all_servlets”:false,”cx_explicit_preferences_geopill”:false,”health_notice_banner”:true,”hrm_beta_full_story”:true,”t4b_management_center_full_story”:true,”cx_explicit_preferences_onboarding”:false,”t10349_facebook_onetap_w_value_copy”:false,”saves_educator_explicit_preferences”:false,”navigation_to_scoped_home”:false,”trips_2018_collab”:true,”t11216_mip_2_traditional_sign_up_ll”:false,”home_location_prompt_master”:true,”ep_has_command_screen_control”:false,”dummy_cache_on_client”:false,”post_signup_attr_promo_explicit_preferences”:false,”disable_reg_dialog_for_hardgate”:false,”review_detail_hard_gate_dt_other_servlets”:false,”mobile_fixed_ad”:false,”fusion_detail_page_lithium”:false,”ml_hard_gate_model_v1_reevaluate_on_page_view”:false,”post_signup_attr_promo_masthead_join”:false,”fusion_lithium_attraction_products_list_page”:false,”account_merge”:true,”places_sift_tracking”:false,”apr_lithium_control”:false,”forum_home_lithium”:true,”hr_dark_green_icons”:true,”optimus”:true,”cx_explicit_preferences_scoped_home_cta”:true,”ml_hard_gate_dt”:false,”qualtrics_site_brand_experience_surveys_bu”:false,”t11209_mip_variant_b”:false},”renders”:[{“id”:”component_16″,”props”:{},”package”:”BqoTCX”},{“id”:”component_18″,”props”:{},”package”:”t7RFOq”}],”profilables”:[],”strictModeRoots”:[],”hydrations”:[{“id”:”component_13″,”props”:{},”package”:”08L0XB”},{“id”:”@ta/trips.save-to-trip:post:16841702_component_1″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:16841702},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:16846437_component_2″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:16846437},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:16847489_component_3″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:16847489},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17096992_component_4″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17096992},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17098111_component_5″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17098111},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17098217_component_6″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17098217},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17107199_component_7″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17107199},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17107557_component_8″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17107557},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17281105_component_9″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17281105},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17281244_component_10″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17281244},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:post:17281852_component_11″,”props”:{“object”:{“__typename”:”ForumPost”,”id”:17281852},”widgetStyle”:”forum_post”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”component_12″,”props”:{},”package”:”87pH8E”},{“id”:”component_15″,”props”:{},”package”:”n69w9j”},{“id”:”component_17″,”props”:{},”package”:”mxARhC”},{“id”:”component_19″,”props”:{“useResponsiveContainer”:”true”},”package”:”mwa76u”},{“id”:”component_14″,”props”:{},”package”:”GVTdZB”}],”lazyLoadedModules”:[“08L0XB/L9pCXd”,”nZ7AfP”,”qxSl3I”,”4CrHtN”],”ssrPreloadedModules”:[“6FdDYx”,”bsx_H5″,”nZ7AfP”,”qxSl3I”,”4CrHtN/6GI-1U”,”xJD91H”,”neHaXV”,”-i3PJS”,”lMO0v3/GzJMLX”,”PCLJ0D/6Vq8GY”,”pBQaod”,”m7h4d5″,”08L0XB/L9pCXd”,”RWfDzK”,”4CrHtN/A1SA6X”,”a3FWKi”,”5-GvUO/gmVWZD”,”kNh38S”,”nPD67q/3S0Uyu”,”PCLJ0D/YtE_eG”,”thFMrK/RQFZYD”,”08L0XB/hCC7uv”,”4CrHtN”],”bundles”:[“XjkW5l”,”peh_3a”,”b3xEaf”,”QZqymc”,”eDFcUX”,”535agn”,”l6BSGt”,”gt5mGS”,”MHKLZN”,”6hYgtn”,”jb_4W2″,”_qQcW3″,”f9x1OV”,”B7vHz6″,”asW43G”,”mv7yXI”,”Ov85iR”,”N4pTU2″,”c9QfOM”,”UhC_bI”,”fflEqf”,”5-GvUO/_q6t87″,”5X2em-“,”fsml46″,”I81Q5L”,”_g8cls”,”OyezR0″,”E8NZou”,”n3D4ip”,”YwNsO_”,”DbN8HP”,”T7FcVR”,”vmXh3M”,”W3_c4H”,”PCLJ0D/Fs8FZj”,”2R4xv2″,”_cZwhS”,”yfS4GB”,”CWppnH”,”_Z-1K3″,”iuYvTO”,”BLrxBS”,”0DsHEV”,”OnmvvE”,”w4JHTr”,”rSqx0N”,”DjNvou”,”lMO0v3″,”aunxON”,”cDcdfi”,”4LU1Ax”,”eFikmI”,”6NeHQy”,”vq6MSq”,”m5ZZFI”,”u6QS-O”,”V08PS7″,”wId9j-“,”nIW_Rw”,”h74DsO”,”5-GvUO”,”UWCmG6″,”w31zLi”,”vd4nty”,”oo669z”,”hA1RHn”,”xegF5W”,”8xs-IB”,”F8raOV”,”rf6OMe”,”O8LbtK”,”z2XL6d”,”faye7n”,”vuC2Rl”,”gsKhh7″,”38xMQJ”,”-i3PJS”,”Jk5sjx”,”6RAaot”,”VANuRt”,”OMqGt0″,”xZoNdB”,”PCLJ0D”,”b57PJQ”,”MGkW-Q”,”NJheb1″,”Dg5_-9″,”pLbCP4″,”Q7TAd7″,”dROhDJ”,”RiHMo-“,”gGW5sO”,”jaCyxS”,”vWxBAe”,”17wlKY”,”rKB8Wf”,”jSLlaY”,”30t50h”,”jmIMrC”,”XtxvfD”,”MG7IEl”,”uWZ6Id”,”08L0XB/r2vH2r”,”4Z07E2″,”08L0XB”,”c_rvp5″,”HZtvHO”,”PiTJFd”,”eFKnUp”,”RXx5aI”,”O-HcBE”,”U-DhDC”,”WkP2XE”,”LFeTN6″,”fTyhRT”,”lmr1u9″,”6nM-E7″,”JFHNGL”,”4kVXmt”,”vF730k”,”9I0t-6″,”6KWcSB”,”zlqOrw”,”liWOeo”,”3mlAaP”,”tV1cF7″,”Md_K7J”,”87pH8E”,”FgJHmE”,”-xj2Ol”,”n69w9j”,”2NwMnm”,”R7DQr_”,”Xi-2HZ”,”Erjc5t”,”zPgUM0″,”fiorRT”,”MWFqPp”,”qKFflQ”,”RA5fcz”,”qfSfGN”,”hxnqL3″,”wU942v”,”G9idyf”,”HDgDKt”,”XS7t-Q”,”h7E4Ym”,”osGflv”,”AoLEtg”,”KwOV1Z”,”IuX4Ar”,”Hgrhyo”,”Oc3sTL”,”ABlMo4″,”Z7U8sN”,”wLDeDm”,”w2XwHO”,”BqoTCX”,”mxARhC”,”t7RFOq”,”NGIiZD”,”mlRREX”,”6m_xYI”,”mwa76u”,”GVTdZB”,”Kv5xL1″,”xsqNye”,”08L0XB/QfYjSo”,”-02Lut”,”dX3eZQ”,”MNKFIS”,”mHPUmd”,”griB9b”,”thFMrK”,”1yEXVQ”,”meOI_T”,”CSOnVf”,”nPD67q/9EZXnq”,”nPD67q”,”oiya90″,”0uWw9s”,”a4q8MG”,”OkJwbt”,”pT-O8u”,”nPqO2d”,”fAPg3f”,”QRwZD2″,”-2hM2s”,”10CW2t”,”08L0XB/L9pCXd”,”xlsORH”,”sb81vR”,”_pymO0″,”DtZPgN”,”sERCEg”,”tc4D5F”,”iZ1Bsx”,”U3jxzU”,”cBPvJq”,”nZ7AfP”,”bsx_H5″,”iLImXn”,”qxSl3I”,”16tLUw”,”4CrHtN/dwJyxU”,”4CrHtN”]}};(this.$WP=this.$WP||[]).push([‘@ta/features’,function(e){return [function(){e(‘default’,__WEB_CONTEXT__.pageManifest.features);},[]]},[]]);]]> maxHeight) { maxHeight = height; } }); if (maxHeight > 0) { placementEl.find(‘.shelf_container.forum_mention’).height(maxHeight + 24); placementEl.find(‘.forum_mention .shelf_item_container’).height(maxHeight); placementEl.find(‘.forum_mention .scrollable_container’).height(maxHeight); } } // if there are more than 3 items on the shelf, we need to set up handlers for the left/right scrolls. function setUpScroller() { var scroller = placementEl.find(‘.scrollable_container’); var leftArrow = placementEl.find(‘.arrow.left’); var rightArrow = placementEl.find(‘.arrow.right’); var itemOffset = scroller.find(‘.ui_column’).outerWidth(); // number of items on the shelf var itemCount = parseInt(scroller.data(‘numitems’)); // right most offset (left most is 0) var scrollLimit = 3 – itemCount; var offset = 0; function showArrows() { var leftCss = ”; var rightCss = ”; // check left arrow if (offset scrollLimit) { rightCss = ‘block’; } leftArrow.css(‘display’, leftCss); rightArrow.css(‘display’, rightCss); } function scroll(offset) { scroller.animate({ left: offset * itemOffset }, 500, function() {}); showArrows(); } function scrollLeft() { if (offset -1; } }, { key: ‘show’, value: function show() { this.footer.classList.add(VISIBILITY_CLASS); if (!this.placeholder) { this.createPlaceholder(); } this.placeholder.classList.remove(‘hidden’); this.placeholder.style.height = this.getHeight() + ‘px’; } }, { key: ‘hide’, value: function hide() { this.footer.classList.remove(VISIBILITY_CLASS); if (this.placeholder) { this.placeholder.classList.add(‘hidden’); } } }, { key: ‘getHeight’, value: function getHeight() { if (!this.isVisible()) { throw “Cannot get height in hidden state.”; } return this.footer.offsetHeight; } }, { key: ‘createPlaceholder’, value: function createPlaceholder() { if (!this.footer) { return; } this.placeholder = document.createElement(‘div’); this.placeholder.className += ” persistentFooterPlaceholder”; this.pageContainer.appendChild(this.placeholder); } }, { key: ‘setFooter’, value: function setFooter(footer) { if (!footer || footer.className.indexOf(‘ui_persistent_footer’) === -1) { throw “PersistentFooterHelper requires an element with class .ui_persistent_footer”; } this.footer = footer; } }]); return PersistentFooterHelper; }(); return PersistentFooterHelper; }); require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’showtopic_persistent_footer’,’handlers’,[‘handlers’]); define([‘placement’, ‘ta’, ‘utils/PersistentFooterHelper’, ‘ta/Core/TA.LocalStorage’], function(placement, ta, PersistentFooterHelper, taLocalStore) { ta.queueForLoad(function () { var SESSION_KEY_NAME = ‘st_dismissed_footer’; var placementElm, wrapper, pfHelper, closeBtn; placementElm = document.getElementById(placement.id); wrapper = placementElm.querySelector(‘.ui_persistent_footer’); if (wrapper != null) { if (!pfHelper) { pfHelper = new PersistentFooterHelper(wrapper, document.body); } if (taLocalStore.enabled) { var hasDismissedFooter = taLocalStore.getSessionKey(SESSION_KEY_NAME); if (!hasDismissedFooter) { if (placement.params.show_placement) { pfHelper.show(); } } } ctaBtn = wrapper.querySelector(‘.ctaBtn’); ctaBtn.addEventListener(“click”, function () { ta.trackEventOnPage(“stlpdl_rebirth”, “st_persistent_footer”, ‘click’, placement.params.version, true); }); closeBtn = wrapper.querySelector(‘.closeBtn’); closeBtn.addEventListener(“click”, function (event) { taLocalStore.setSessionKey(SESSION_KEY_NAME, true); pfHelper.hide(); ta.trackEventOnPage(“stlpdl_rebirth”, “st_persistent_footer”, ‘close’, placement.params.version, true); }); ta.trackEventOnPage(“stlpdl_rebirth”, “st_persistent_footer”, ‘impression’, placement.params.version, true); } }); return {}; });});require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’showtopic_attraction_interrupter’,’handlers’,[‘handlers’]); /* * Private JS for showtopic_attraction_interrupter */ define([“placement”], function (placement) { // Mimics ta.forums.hideHotelInterrupters, except for our attraction interrupter. function hideAttractionInterrupter(topicId) { var interrupter = document.getElementById(placement.id); if (topicId && interrupter) { interrupter.parentNode.removeChild(interrupter); // The cookie logic to hide the interrupters is still nominally centered on hotels, but it does function // correctly for our new ads; since this is just a test, we’re leaving it this way. new Request({url: “/HotelInterruptersAjax?hotelInterrupters_optout=” + topicId}).send(); } } return { “hideAttractionInterrupter”: hideAttractionInterrupter } });});require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’global_nav’,’handlers’,[‘deferred/lateHandlers’,’handlers’]); /* jshint newcap:false */ define([ ‘placement’, ‘lib/jquery-amd’, ‘common/Radio’, ‘ta/registration/RegEvents’, ‘utils/throttle’, ‘utils/asdf-encoder’ ], function( placement, $, Radio, RegEvents, throttle, asdf ) { ‘use strict’; var TRACKING_CATEGORY = “TopNav”; var placementEl = $(‘#’ + placement.id); var radio = Radio(‘global-nav’); var oldOverlay = null; var mastheadSavesApp = null; var persistentIcons = $(‘.persistent-icons’, placementEl); var navIcons = $(‘.global-nav-icons’, persistentIcons); var logo = $(‘.global-nav-logo’, persistentIcons); var logo2018 = $(‘.global-nav-logo-2018’, placementEl); var pill = $(‘[data-placement-name=”global_nav_geopill”]’, placementEl); var radioCandyBarLinks = Radio(‘candy-bar-quick-links’); var $global_nav_bottom = $(‘.global-nav-bottom’, placementEl); var radioScrollGeoPill = Radio(‘tripsearch-scroll-geo-pill’); // Trigger in ‘placements/global_nav_action_trips/handlers’ radio.on(‘run-my-trips-test-3’, function() { openMyTrips(false, true); }); radioScrollGeoPill.on(‘hide-on-header’, function(shouldHide) { if (logo2018) { logo2018.toggleClass(‘is-hidden-mobile’, !shouldHide); } }); // Update Global Nav content var _onSuccessLoginRefresh = (function(response) { window.userLoggedIn = true; // We need this refresh logic only in the placements version of the header. // The web components header is used inside of this placement so we need to specifically // avoid replacing this content upon login. var isComponents = placementEl.find(‘[data-non-components]’).length == 0; if (!isComponents) { var container = document.querySelector(‘#’ + placement.id); var responseDOM = document.createElement(‘div’); responseDOM.innerHTML = response; // preserve web components by moving each from page DOM into response DOM // assumes only one instance of each web component [].forEach.call(responseDOM.querySelectorAll(‘.react-container’), function(newComponent) { var oldComponent = container.querySelector(‘[data-component=”‘ + newComponent.getAttribute(‘data-component’) + ‘”]’); if (oldComponent) { newComponent.parentNode.replaceChild(oldComponent, newComponent); } }); // refresh var oldGlobalNav = container.querySelector(‘.global-nav’); var newGlobalNav = responseDOM.querySelector(‘.global-nav’); oldGlobalNav.parentNode.replaceChild(newGlobalNav, oldGlobalNav); if (oldOverlay) { oldOverlay.hide(‘replace-el’); } } else { // If this is the components nav then we need to pull in the inbox placement contents from the // response and drop them into a special area meant for placements that we currently still depend // on. E.g., inbox dropdown can’t be made into a component without API rework. var $legacyActions = placementEl.find(‘.components-nav-legacy-actions’); var actionsResponse = $(“”).html(response).find(‘.components-nav-legacy-actions’).html(); $legacyActions.html(actionsResponse); } Radio(‘inbox’).trigger(‘setup_handler’); }).bind(placementEl); var _getRequestOptionsForLoginRefresh = function() { return { // This should not be necessary, but for some reason placements // seems tightly coupled with the location store skipLocation: placement.location_id allEls.offset().top; }); var elsToShow = $().add(hiddenEls).add(collapsedEls).clone(); var menuEl = placementEl.find(‘.global-nav-links-menu-more’).clone(); menuEl.prepend(elsToShow); var reqs = [‘trjs!overlays/Overlay’, ‘trjs!overlays/styles/flyout’, ‘trjs!overlays/options/closeOnMouseAway’, ‘trjs!overlays/position’, ‘trjs!overlays/options/destroyOnHide’ ]; require(reqs, function(Overlay, Flyout, CloseOnMouseAway, Position, DestroyOnHide) { // xli: hacky solution for sky rollout 4/1 (ADS-7383, ADS-7180) var aboveContentOffset = $(‘.ppr_priv_global_nav_component’).offset(); var hasSky = !!$(‘.skyExpanded’).length; var updatedYOffset = hasSky && aboveContentOffset ? 1 – aboveContentOffset.top : 1; var overlay = new Overlay(elmt[0], new Flyout(menuEl[0], ‘global-nav-flyout global-nav-menu’), CloseOnMouseAway, Position.bottomRight([0, updatedYOffset]), DestroyOnHide); overlay.domParent = placementEl.find(‘.global-nav-overlays-container’)[0]; overlay.show(); elmt.find(‘.ui_tab’).addClass(‘hovering’); overlay.on(‘hide’, function() { elmt.find(‘.ui_tab’).removeClass(‘hovering’); }); oldOverlay = overlay; }); }); // Help Center MW Overlay placementEl.on(‘click’, ‘#global-nav-HelpDesk’, function (evt) { evt.preventDefault(); var sourceElem = this; var reqs = [‘trjs!overlays/Overlay’, ‘trjs!overlays/styles/modal’, ‘trjs!overlays/options/closeOnEscape’, ‘trjs!overlays/position’, ‘trjs!overlays/options/closeOnDocClick’, ‘trjs!overlays/options/ajax’, ‘trcss!src/build/required/help_center_overlay’ ]; require(reqs, function(Overlay, Modal, CloseOnEscape, Position, CloseOnDocClick, Ajax, styleSheetOK){ var overlay = new Overlay(sourceElem, [ Modal(null, ”, ‘help_center’), CloseOnEscape, Position.cssCentered(), CloseOnDocClick, Ajax(“/uvpages/helpCenterOverlay.html”) ]); overlay.show(); radio.emit(‘overlay-show’); }); }); // When clicking on my trips placementEl.on(‘click’, ‘.masthead-saves’, function(evt) { if (mastheadSavesApp) { if (oldOverlay) { oldOverlay.hide(‘new-overlay’); } mastheadSavesApp && mastheadSavesApp.destroy() && (mastheadSavesApp = null); require([‘trjs!ta/Core/TA.Record’], function(taRecord) { taRecord.trackEventOnPage(‘TopNav’, ‘mytrips_dropdown_cancel’); }); } else { openMyTrips(false, false, evt.currentTarget); $(evt.currentTarget).find(‘.ui_icon’).addClass(‘hovering’); } }); // My Trips – Remove through CX-2542 var openMyTrips = function(inCreateTripFlow, runTest3, elmt) { if (oldOverlay) { oldOverlay.hide(‘new-overlay’); } var reqs = [‘trjs!overlays/Overlay’, ‘trjs!overlays/styles/flyout’, ‘trjs!overlays/options/closeOnDocClick’, ‘trjs!overlays/position’, ‘trjs!overlays/options/destroyOnHide’, ‘trjs!overlays/options/autoReposition’, ‘trjs!ta/Core/TA.Record’ ]; require(reqs, function(Overlay, Flyout, CloseOnDocClick, Position, DestroyOnHide, AutoReposition, taRecord) { // Get reference element var $refElem = $(‘.masthead-saves’); // Create a new overlay var overlay = new Overlay( $refElem[0], new Flyout(”, ‘global-nav-flyout global-nav-utility trips-flyout-container’), CloseOnDocClick.withoutTouchEvents, $refElem.data(‘nav-2018-enabled’) ? Position.bottomLeft([($refElem.width()/2)-34, 9]) : Position.bottomLeft([-20, -3]), DestroyOnHide, AutoReposition ); overlay.domParent = placementEl.find(‘.global-nav-overlays-container’)[0]; overlay.show(); placementEl.find(‘.trips-flyout-container’).addClass(‘hide-arrow’); // To make sure the overlay arrow is shown together with the masthead saves view oldOverlay = overlay; require([‘trdust!masthead-saves-dust’, ‘trdust!styleguide-dust’, ‘trjs!masthead-saves’, ‘trcss!masthead-saves’], function(dustModule, module, styleSheetOK) { setTimeout(function () { mastheadSavesApp = new window.MastheadSavesApp(); mastheadSavesApp.start({ inCreateTripFlow: inCreateTripFlow, runTest3: runTest3 }); overlay.on(‘hide’, function(evt) { mastheadSavesApp && mastheadSavesApp.destroy() && (mastheadSavesApp = null); taRecord.trackEventOnPage(‘TopNav’, ‘mytrips_dropdown_cancel’); if (elmt) { $(elmt).find(‘.ui_icon’).removeClass(‘hovering’); } }); placementEl.find(‘.trips-flyout-container’).removeClass(‘hide-arrow’); }, 0); }); }); }.bind(placementEl); // Profile Link: When clicking on a utility link, open the submenu, if one is available placementEl.on(‘click’, ‘.global-nav-utility-activator’, function(evt) { var elm = $(this); // Is there a submenu to show? var menuEl = placementEl.find(elm.data(‘element’)).clone(); if (!menuEl.length) { return; } if (oldOverlay) { if (oldOverlay.sourceElement == this){ oldOverlay.isOpen() ? oldOverlay.hide(‘close’) : oldOverlay.show(); return; // don’t re-open the same overlay. } else { oldOverlay.hide(‘new-overlay’); } } // Create a new overlay menuEl = menuEl.clone(); var reqs = [‘trjs!overlays/Overlay’, ‘trjs!overlays/styles/flyout’, ‘trjs!overlays/options/closeOnDocClick’, ‘trjs!overlays/position’, ‘trjs!overlays/options/autoReposition’ ]; require(reqs, function(Overlay, Flyout, CloseOnDocClick, Position, AutoReposition) { var overlay = new Overlay(elm[0], new Flyout(menuEl[0], ‘global-nav-flyout global-nav-utility’), CloseOnDocClick, elm.data(‘nav-2018-enabled’) ? Position.bottomLeft([(elm.outerWidth()/2)-34, 12]) : Position.bottomLeft([-20, -3]), AutoReposition); overlay.domParent = placementEl.find(‘.global-nav-overlays-container’)[0]; overlay.show(); elm.addClass(‘menu-open’); $(evt.currentTarget).find(‘.ui_icon’).addClass(‘hovering’); overlay.on(‘hide’, function() { elm.removeClass(‘menu-open’); $(evt.currentTarget).find(‘.ui_icon’).removeClass(‘hovering’); }); oldOverlay = overlay; }); }); // Trackng: Logo clicks placementEl.on(‘click’, ‘.global-nav-logo’, function() { require([‘trjs!ta/Core/TA.Record’], function(taRecord) { taRecord.setEvtCookie(‘TopNav_’ + window.pageServlet, ‘click’, ‘TAlogo’, 0, ‘/Home’); }); }); // Hide or show the jewel as appropriate. Radio(‘inbox’).on( ‘has_unread_conversations’, function(evnt) { placementEl.find(‘.global-nav-hamburger .ui_jewel.unread’).removeClass(‘hidden’); placementEl.find(‘.nav-sub-link.inbox .icon-and-jewel’).removeClass(‘hidden’); } ); Radio(‘inbox’).on( ‘no_unread_conversations’, function(evnt) { placementEl.find(‘.global-nav-hamburger .ui_jewel.unread’).addClass(‘hidden’); placementEl.find(‘.nav-sub-link.inbox .icon-and-jewel’).addClass(‘hidden’); } ); // Mobile Web Global Nav Persistent Icons function checkForPersistentIcons() { var offsetPosition = $(window).scrollTop(); if (navIcons.length) { // A – Sideways default state: Logo and icons together, geo pill on second line // B – Sideways 1st scroll (down): Icons animate to geo pill, logo scrolls out of view // C – Sideways 2nd scroll (down): Icons locked to geo pill, all elements scroll out of view // // A – Internal default state: No logo, geo pill and icons on first line // B – Internal 1st scroll (down): Icons locked to geo pill, all elements scroll out of view // C – Internal 1st scroll (up): Icons animate to logo, logo scrolls into view // // Adjust icons to placements: Logo then Geopill when available if (pill.is(‘:visible’)) { var calculatePlacementInView = placementEl.height() – offsetPosition; // Keep icons confined to scrollable area on DW & MW (avoids snap-into-view on MW) if (offsetPosition 0) { if (offsetPosition > 0 && offsetPosition vH){ var eH = api.getSize(el).y; this.container.style.height = vH + ‘px’; var h = (eH + vH – oH) + ‘px’; var css = document.createElement(‘style’); css.type = ‘text/css’; css.innerHTML = this.container.className .split(‘ ‘) .map(function(c){ return ‘.’ + c; }) .join(”) + ‘ .autosize { height: ‘ + h + ‘; }’; document.head.appendChild(css); } } }; this.on(‘show’, autosize); }; }; }); define(‘overlays/options/centerArrowOnSrcElement’, [‘vanillajs’, ‘api-mod’], function(vanilla, api){ ‘use strict’; var option = function(target){ function positionArrow() { target = target || this.sourceElement; if (this.container && target && this.arrow) { var containerCoords = api.getCoords(this.container) , sourceCoords = api.getCoords(target) , horizontal = api.hasClass(this.container, “arrow_top”) || api.hasClass(this.container, “arrow_bottom”) ; if (horizontal) { var center = sourceCoords.left + sourceCoords.width / 2 , arrowBuffer = api.getSize(this.arrow).x / 2 , left = Math.max(arrowBuffer, Math.min(containerCoords.width – arrowBuffer, center – containerCoords.left)) ; api.setStyle(this.arrow, { ‘left’: left + ‘px’, ‘right’: ‘auto’, ‘margin’: ‘0 0 0 -‘ + arrowBuffer + ‘px’ }); } else { var center = sourceCoords.top + sourceCoords.height / 2 , arrowBuffer = api.getSize(this.arrow).y / 2 , top = Math.max(arrowBuffer, Math.min(containerCoords.height – arrowBuffer, center – containerCoords.top)) ; api.setStyle(this.arrow, { ‘top’: top + ‘px’, ‘bottom’: ‘auto’, ‘margin’: ‘-‘ + arrowBuffer +’px 0 0 0’ }); } } } return function() { this.on(‘show’, api.bind(positionArrow, this)); this.on(‘positionDirty’, api.bind(positionArrow, this)); this.on(‘repositionArrow’, api.bind(positionArrow, this)); } }; return option; }); define(‘overlays/options/closeOnChildClick’, [‘vanillajs’, ‘api-mod’], function(vanilla, api){ ‘use strict’; function hide(evnt){ if (api.containsElement(this.container, evnt.target)) { this.hide(‘child-click’); } } function makeMixin(includeTouchEvents) { return function() { var handler = api.bind(hide, this); this.on(‘show’, function () { api.addEvent(this.domParent, ‘click’, handler); includeTouchEvents && api.addEvent(this.domParent, ‘touchstart’, handler); }).on(‘hide’, function () { api.removeEvent(this.domParent, ‘click’, handler); includeTouchEvents && api.removeEvent(this.domParent, ‘touchstart’, handler); }); }; } var option = makeMixin(true); option.withoutTouchEvents = makeMixin(false); return option; }); require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’shopping_cart_simple_flyout’,’handlers’,[‘handlers’]); define( [ ‘placement’, ‘lib/jquery-amd’, ‘overlays/Overlay’, ‘overlays/options/autosize’, ‘overlays/options/autoReposition’, ‘overlays/options/centerArrowOnSrcElement’, ‘overlays/options/closeOnChildClick’, ‘overlays/options/closeOnEscape’, ‘overlays/position’, ‘overlays/styles/popover’, ‘ta/Core/TA.Record’ ], function( placement, $, Overlay, Autosize, AutoReposition, CenterArrowOnSrcElement, CloseOnChildClick, CloseOnEscape, Position, Popover, taRecord ) { ‘use strict’; function SimpleFlyout(targetElement, header, body, cookieId, pageProperty) { var overlay = undefined; function _showAlert() { if (overlay) { return; } overlay = new Overlay( targetElement, [ Popover(targetElement, ‘below’, ”, header.html(), body.html()), Autosize(0), AutoReposition, CloseOnEscape, CloseOnChildClick, Position.below([8, -20]), CenterArrowOnSrcElement(targetElement) ]); if (overlay) { overlay.on(‘hide’, function() { taRecord.trackEventOnPage(pageProperty, ‘close’); }); overlay.show(); // bounce the cart $(targetElement).addClass(‘animated’); // request to mark session as seen. if (cookieId) { $.get(‘/AttractionCommerceAjax?a=’ + cookieId); } } } this.show = _showAlert; } var content = $(‘.scream_overlay’); var flyout = new SimpleFlyout($(‘.shopping-cart-link’).get(0), $(‘.scream_header’), $(‘.scream_body’), content.attr(‘data-cookieId’), content.attr(‘data-pageProperty’)); $(document).ready(flyout.show); return {}; }); });require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’trip_planner_breadcrumbs’,’handlers’,[‘handlers’]); define([“placement”, “ta/Core/TA.FireEvent”, “utils/urlDecoder”], function(placement, taEvent, decoder) { “use strict”; function updateContents(contentDiv) { var placementDiv = document.getElementById(placement.id); if(placementDiv) { placementDiv.innerHTML = contentDiv.innerHTML; } } function _goToLink(event, element) { decoder.goToLink(event, element); } function onClick(key, value) { return require.defined(‘ta/util/Cookie’) && require(‘ta/util/Cookie’).setOneTimeCookie(key, value); } taEvent.on(“update-” + placement.name, updateContents); return { goToLink: _goToLink, onClick : onClick }; });});if (require) {require([‘ta/rollupAmdShim’], function(rollupAmdShim) { rollupAmdShim.install([], [“page-model”]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],[“page-model”]);} }if (require) {require([‘ta/rollupAmdShim’], function(rollupAmdShim) { rollupAmdShim.install([], [“ta/util/RecordInterruption”]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],[“ta/util/RecordInterruption”]);} }require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’qualtrics_survey’,’handlers’,[‘handlers’]); /** Private javascript for qualtrics survey placement * We want to show on the 2nd pageview, no more than once every 30 days * The div id is generated from the qualtrics site-intercept code. * The placement render will decide which survey to displace. */ define([ “placement”, “lib/jquery-amd”, “ta”, ‘ta/Core/TA.LocalStorage’, ‘page-model’, ‘ta/util/RecordInterruption’, ‘ta/support/Qualtrics’, ‘utils/throttle’, ‘common/Radio’ ], function (placement, $, ta, taLocalStore, model, recordInterruption, taQualtrics, throttle, Radio) { “use strict”; ta.queueForLoad(function () { // For surveys that should hide when the user begins to scroll, this is the how much give they have var SCROLL_BUFFER = 318; // Campaign ID for event tracking var CAMPAIGN_ID = ‘qualtrics_surveys’; taQualtrics.setSmartSurvey(!!placement.params.smartSurvey); taQualtrics.updatePageViews(); if (taLocalStore.enabled && ( taQualtrics.isDebug() || taQualtrics.canDisplaySmart() || ( !taQualtrics.getSmartSurvey() && taQualtrics.canDisplay() ) )) { var surveyKey = placement.params.surveyId; var surveyContainerClassName = ‘.’ + surveyKey + ‘_InfoBarContainer’; var surveyName = placement.params.surveyName; var surveyProperties = ‘Qualtrics_Survey’ + ‘|’ + window.pageServlet + ‘|’ + surveyName; if (placement.params.smartSurvey) { var getSurveyProperties = function (_ss, _qa) { return _ss + ‘|’ + [‘sc-‘ + _qa.getSessionCount(), ‘ir-‘ + _qa.getInterceptReqs(), ‘iv-‘ + _qa.getInterceptViews(), ‘pv-‘+_qa.getPageViews()].join(‘|’); }; $(‘body’).on(‘qxInterceptShown’, function () { ta.trackEventOnPage(CAMPAIGN_ID, ‘interceptShown’, getSurveyProperties(surveyProperties, taQualtrics), null, true); taQualtrics.updateInterceptViews(); taQualtrics.updateSessionCount(); }); $(‘body’).on(‘qxInterceptAccept’, function () { ta.trackEventOnPage(CAMPAIGN_ID, ‘interceptAccept’, getSurveyProperties(surveyProperties, taQualtrics), null, false); taQualtrics.setResponded(true); }); $(‘body’).on(‘qxInterceptDecline’, function () { ta.trackEventOnPage(CAMPAIGN_ID, ‘interceptDecline’, getSurveyProperties(surveyProperties, taQualtrics), null, false); taQualtrics.setResponded(true); }); } if (surveyKey) { taQualtrics.displaySurvey(surveyKey); recordInterruption.record(‘popup’, surveyProperties, taQualtrics.getPageViews()); if (placement.params.smartSurvey) { taQualtrics.updateInterceptReqs(); } // TV-1243 – Mobile Surveys cover a commerce component, so they should be hidden when the user begins to scroll if (placement.params.hideOnScroll) { var hide = function () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; if (scrollTop > SCROLL_BUFFER) { $(surveyContainerClassName).hide(); } }; $(window).on(‘scroll’, throttle(hide, 100)); } var surveyRadio = Radio(“QualtricsSurvey”); // use radio so this functionality can be added to WC footer easily window.addEventListener(“qsi_js_loaded”, function() { // this event is fired when the Qualtrics external JS has finished loading if (surveyRadio.requestAny(“shouldSuppress”, true)) { $(surveyContainerClassName).hide(); } }); surveyRadio.on(“hide”, function() {$(surveyContainerClassName).hide();}); surveyRadio.on(“show”, function() {$(surveyContainerClassName).show();}); } } }); return { }; }); }); define(‘ta/util/CommonMessagingUtil’, [ “lib/jquery-amd”, ‘ta/Core/TA.LocalStorage’, “ta/support/Qualtrics”, “ta/util/SessionStorage”, “common/Radio” ], function( $, localStorage, qualtrics, taSessionStorage, Radio ) { ‘use strict’; var storageViewString = “_view_count”; var storageDisabledString = “_is_disabled”; var storageDismissedString = “_times_dismissed”; var storageDisabledForTodayString = “_disabled_for_day”; var adhesionRadio = Radio(‘cpm_mw_adhesion’); function getCurrentPageViews(thumbPrint) { if (localStorage.enabled) { var storedViews = localStorage.get(thumbPrint + storageViewString); return storedViews ? parseInt(storedViews) : 0; } return null; } function incrementPageViews(thumbPrint) { if (localStorage.enabled && thumbPrint) { var pageViewKey = thumbPrint + storageViewString; localStorage.set(pageViewKey, getCurrentPageViews(thumbPrint) + 1); } } function getNumberOfTimesDismissed(thumbPrint) { if (localStorage.enabled) { var timesDismissed = localStorage.get(thumbPrint + storageDismissedString); return timesDismissed ? parseInt(timesDismissed) : 0; } return 0; } function incrementNumberOfTimesDismissed(thumbPrint) { if (localStorage.enabled && thumbPrint) { var timesDismissedKey = thumbPrint + storageDismissedString; localStorage.set(timesDismissedKey, getNumberOfTimesDismissed(thumbPrint) + 1); } } function isPlacementDisabled(thumbPrint) { if (localStorage.enabled) { var keyExists = localStorage.get(thumbPrint + storageDisabledString); return !!keyExists; } return false; } function disablePlacement(thumbPrint) { if (localStorage.enabled && thumbPrint) { localStorage.set(thumbPrint + storageDisabledString, “true”); } } function setPlacementDisabledForToday(thumbPrint) { var today = new Date().getDate(); if(localStorage.enabled && thumbPrint) { var closedTodayKey = thumbPrint + storageDisabledForTodayString; localStorage.set(closedTodayKey, today.toString()); } } function isPlacementDisabledForToday(thumbPrint) { var today = new Date().getDate(); if(localStorage.enabled && thumbPrint) { var closedTodayKey = thumbPrint + storageDisabledForTodayString; var keyFound = localStorage.get(closedTodayKey); return keyFound ? keyFound === today.toString() : false; } return false; } function setPlacementGroupKey(groupKey) { var today = new Date().getDate(); if (localStorage.enabled) { localStorage.set(groupKey, today.toString()); } } function checkPlacementGroupKey(groupKey) { var today = new Date().getDate(); if (localStorage.enabled) { var keyFound = localStorage.get(groupKey); return keyFound ? keyFound === today.toString() : false; } } function _displayPlacementIfNoSurveyNorAdIsPresent(_shouldCheckSurvey, _suppressPlacement, _displayPlacement) { if (_shouldCheckSurvey && typeof(_shouldCheckSurvey) === “function” && _shouldCheckSurvey()) { if (qualtrics.seenThisPageView() || qualtrics.canDisplaySmart() || qualtrics.canDisplay()) { return; } } if (_suppressPlacement && typeof(_suppressPlacement) === “function” && _suppressPlacement()) { return; } if (_displayPlacement && typeof(_displayPlacement) === “function”) { if (document.getElementById(“FIXED_AD”)) { if (taSessionStorage.canUseSessionStore() && taSessionStorage.getObject(‘ads.fixed.close’)) { _displayPlacement(); } else { adhesionRadio.once(‘ad_closed’, function() { _displayPlacement(); }); } } else { _displayPlacement(); } } } function parseServletName(servletName) { return servletName.toLowerCase().replace(“mobile”, “”); } return { getCurrentPageViews: getCurrentPageViews, incrementPageViews: incrementPageViews, getNumberOfTimesDismissed: getNumberOfTimesDismissed, incrementNumberOfTimesDismissed: incrementNumberOfTimesDismissed, isPlacementDisabled: isPlacementDisabled, disablePlacement: disablePlacement, setPlacementDisabledForToday : setPlacementDisabledForToday, isPlacementDisabledForToday: isPlacementDisabledForToday, setPlacementGroupKey: setPlacementGroupKey, checkPlacementGroupKey: checkPlacementGroupKey, parseServletName: parseServletName, displayPlacementIfNoSurveyNorAdIsPresent:_displayPlacementIfNoSurveyNorAdIsPresent } });require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’global_nav_action_inbox’,’handlers’,[‘handlers’]); /** * Private handlers of global_nav_action_inbox */ define([ ‘placement’, ‘vanillajs’, ‘lib/jquery-amd’, ‘common/Radio’, ‘ta/Core/TA.Record’, ‘ta/util/CommonMessagingUtil’ ], function( placement, vanilla, $, Radio, taRecord, commonMessagingUtil ) { var overlay; var INBOX_TRACKING_PID = 40186; // TRVX-5924 var INBOX_JEWEL_TEST_PID = 40405; var inboxJewelTestThumbprint = ‘Membership_Inbox_Jewel_Test’; var maxViewsForJewelTest = 3; var test_click = false; var login_click = false; Radio(‘global-nav-inbox’).on(‘open’, function(triggerEl, bottomLeftOffset) { _showDropdownForComponentTrigger(triggerEl, bottomLeftOffset); }); function _showDropdownForComponentTrigger(context) { context.receivedCallback && context.receivedCallback(); if ($(‘.inbox-flyout-container’).length && overlay) { overlay.destroy(); } else { var triggerEl = context.el; var bottomLeftOffset = context.bottomLeftOffset; _showDropdownAtTrigger(undefined, triggerEl, bottomLeftOffset); } } function _showDropdownForPlacementTrigger(inboxJewelTestEl) { _showDropdownAtTrigger(inboxJewelTestEl, $(‘.masthead-inbox-icon’)[0]); } function _showDropdownAtTrigger(inboxJewelTestEl, target, bottomLeftOffset) { var container = $(‘#’ + placement.id); var reqs = [‘trjs!overlays/Overlay’, ‘trjs!overlays/styles/flyout’, ‘trjs!overlays/options/closeOnDocClick’, ‘trjs!overlays/position’, ‘trjs!overlays/options/destroyOnHide’, ‘trjs!overlays/options/autoReposition’, ‘ta/registration/RegOverlay’, ‘trjs!unifiedinbox/inbox-lander’, ‘trcss!unified_inbox_lander’ ]; require(reqs, function(Overlay, Flyout, CloseOnDocClick, Position, DestroyOnHide, AutoReposition, RegOverlay, InboxLander, styleSheetOK) { // Create a new overlay var contents = $(‘.inbox-nav-contents’, container).clone()[0]; contents.classList.remove(“hidden”); // Login clicks should bring up the registration overlay. if ($(“.login-cta”, contents).length) { var loginButton = $(‘.login-cta span’, contents); loginButton.click(function () { // Tracking for if the login click occurred as a result of the Inbox Jewel Test if (inboxJewelTestEl && test_click){ login_click = true; taRecord.trackEventOnPage(‘reg_trigger’, ‘mgp_click_login’, ‘Inbox Jewel Notification Log In Click | Nav | mgp_drs_mem’, INBOX_JEWEL_TEST_PID); } overlay.destroy(); RegOverlay.show({type: ‘dummy’}, null, { flow: ‘CORE_COMBINED’, pid: 40472, userRequestedForce: true, onSuccess: function() { $(“.login-cta”, container).remove(); $(“.inbox-nav-dropdown”, container).removeClass(“with-login-cta”); }.bind(this), }); }); } else { // Add the loading skeleton var loadingItem = $(“.js-inbox-lander-thread-list-item.loading”, contents); var inboxMastheadWrapper = $(“.inbox-masthead-wrapper”, contents); var newLoadingItem; for (var loadingCount = 0; loadingCount = maxViewsForJewelTest) { commonMessagingUtil.disablePlacement(inboxJewelTestThumbprint); } // Show jewel as part of test if not disabled if (!commonMessagingUtil.isPlacementDisabledForToday(inboxJewelTestThumbprint) && !commonMessagingUtil.isPlacementDisabled(inboxJewelTestThumbprint) && inboxJewelTestEl.hasClass(‘valid-for-test’)) { $(‘.inbox-jewel-test’, container).removeClass(‘hidden’); // If jewel shows, track on page taRecord.trackEventOnPage(‘reg_trigger’, ‘mgp_view’, ‘Inbox Jewel Notification | Nav | mgp_drs_mem’, INBOX_JEWEL_TEST_PID); } } } } /* * Setup click and event handlers. */ function _setupHandlers() { var container = $(‘#’ + placement.id); var inboxJewelTestEl = $(“.inbox-jewel-test”, container); /** * Hide ui_jewel for inbox jewel test if view limit has been reached and track */ _setUpJewelTest(container, inboxJewelTestEl) // Clicks on the jewel should show or hide the overlay. $(‘.masthead-inbox-icon, .ui_jewel’, container).click(function (e) { e.stopPropagation(); // If jewel showing as part of TRVX-5924 if (inboxJewelTestEl && !inboxJewelTestEl.hasClass(‘hidden’)) { taRecord.trackEventOnPage(‘reg_trigger’, ‘mgp_click’, ‘Inbox Jewel Notification | Nav | mgp_drs_mem’, INBOX_JEWEL_TEST_PID); commonMessagingUtil.setPlacementDisabledForToday(inboxJewelTestThumbprint); commonMessagingUtil.incrementPageViews(inboxJewelTestThumbprint); test_click = true; // Adding ‘no_unread’ tracking here // If inbox jewel test is active, the jewel will not be hidden and there are no unread inbox messages taRecord.trackEventOnPage(‘Inbox|Dropdown’, ‘icon_jewel_click’, ‘no_unread’, INBOX_TRACKING_PID); } else if ($(‘.ui_jewel’, container).length && $(‘.ui_jewel’, container).hasClass(‘hidden’)) { taRecord.trackEventOnPage(‘Inbox|Dropdown’, ‘icon_jewel_click’, ‘no_unread’, INBOX_TRACKING_PID); } else if ($(‘.ui_jewel’, container).length) { taRecord.trackEventOnPage(‘Inbox|Dropdown’, ‘icon_jewel_click’, ‘has_unread’, INBOX_TRACKING_PID); } if ($(‘.masthead-inbox-icon’, container).attr(‘data-on-inbox’)) { window.location = ‘/Inbox’; } else { if ($(“.inbox-flyout-container”).length && overlay) { overlay.destroy(); } else { _showDropdownForPlacementTrigger(inboxJewelTestEl); } } }); // Clicks on a thread should hide the overlay. Radio(‘inbox’).on( ‘thread_clicked’, function(evnt) { if (overlay) { overlay.destroy(); } } ); // Hide or show the jewel as appropriate. Radio(‘inbox’).on( ‘has_unread_conversations’, function(evnt) { var jewelEls = $(‘.ui_jewel’, container); if(jewelEls !== ‘undefined’ && jewelEls.length > 0) { jewelEls.each(function (i, elem) { if (!$(elem).hasClass(‘inbox-jewel-test’)) { $(elem).removeClass(‘hidden’); } }) } } ); Radio(‘inbox’).on( ‘no_unread_conversations’, function(evnt) { var jewelEls = $(‘.ui_jewel’, container); if(jewelEls !== ‘undefined’ && jewelEls.length > 0) { jewelEls.each(function(i, elem) { if (!$(elem).hasClass(‘inbox-jewel-test’)) { $(elem).addClass(‘hidden’); } }) } } ); Radio(‘inbox’).on( ‘setup_handler’, function() { _setupHandlers(); } ); } /* * Setup the icon click handler. */ _setupHandlers(); return { }; }); });require([‘ta/p13n/placements’], function(placements) { var define = placements.define.bind(placements,’global_nav_links’,’handlers’,[‘handlers’]); /** * Private handler of global_nav_links */ define([‘utils/asdf-encoder’], function (asdf) { function clickAboutGeoLink(event, target) { window.open(asdf.asdf(target.getAttribute(‘data-ahref’)).replace(/&/g, ‘&’), ‘_self’); } return { clickAboutGeoLink: clickAboutGeoLink } });}); define(“cpm/AdBlockDetect”, [“lib/jquery-amd”,”utils/browserutils”,”ta/Core/TA.Event”,”ta/Core/TA.Record”,”ta/util/Error”], function( $, Browser, taEvent, taRecord, taError) { ‘use strict’; var exports = {}; var _testImg; var DEFAULT_LABEL = “ab_chk”; var _isPixelLoadError; var _logged = false; var _cdn = window.CDNHOST || “”; var _pixelUrl = “/img2/x.gif?&ads=1&adsize=2&adslot=3&rnd=”; var _generatePixel = function() { var rnd = Math.floor(Math.random() * 100000); return $(‘‘); }; var _getAdCount = function() { var count = document.querySelectorAll(“.gptAd:not(.inactive)”).length; if (screen.width

Source

Source

Let Us Help Plan Your next Vacation

  • Travel Details
  • Personal Details
 Adults *
0
 Children (Ages 2 - 12)
0
 Infants (Under 2)
0
Invalid number