ร้านอาหารใกล้ Hoposa Uyal Hotel
กิจกรรมที่น่าสนใจใกล้ Hoposa Uyal Hotel
ที่ 6 จาก 28 ด้านโรงแรม ใน Port de Pollenca
{"BOOKING_FEATURES": ["IB_STREAMLINED_SELECTED_ROOM","IB_SHOW_EMAIL_FOR_INSECURE_LOGIN","VISA_SPONSORSHIP_WEB","RCMS_INLINE_ROOM_GRID_MAX_OCC","IB_POST_BOOKING_LOGIN","IB_IRG_PERFORMANCE_METRICS","IB_IRG_MATCH_META","CHILDREN_SEARCH","ATTRACTIONS_REMOVE_PAYMENT_ADDRESS_FIELDS","HR_IB_EXCLUDE_TAXES_AND_FEES","IB_DW_CCNAME_WITH_AUTOCOMPLETE","IB_IRG_PERFORMANCE_METRICS_MOBILE","STORED_CARDS","IB_PRICE_WINS_COPY","IB_PRICES_OUTSIDE_ROOM_BUTTON","IB_HIDE_MSNBC_LARGEST_SITE_QUOTE","IB_EXIT_INTERRUPTER","IB_SHOW_AMENITIES_AS_ICONS","META_AIR","IB_INLINE_ROOM_GRID","IB_TIME_OF_STAY_PAYMENT_TYPES_V3","IBEX_HIGH_EQUITY_BRANDING","IB_PRICE_WINS_POST_TX","IB_BOOKING_FORM_FAVICON","IB_URGENCY_BLOCK"] , "IMPRESSION_KEY": "0e78a4c9417c437e9932214dc3cf5616", "roomSelectionModel": {"partnerInfos":[],"multiplePartners":false,"polling":{"locationId":281945,"bookingSessionId":null,"detailedAvailabilityKey":null,"commerceContentIds":[],"additionalContentIds":[],"pollCount":0,"checkin":{"day":3,"month":12,"year":2017},"checkout":{"day":4,"month":12,"year":2017},"adults":2,"child_rm_ages":"","rooms":1,"display_rooms":300,"entryPrice":-1,"entryCurrency":"USD","complete":true,"formKey":"","showAllRooms":true,"genNewBookingSessionId":false,"winningProviderAtClick":"","selectedRoomKey":"","impressionKey":"0e78a4c9417c437e9932214dc3cf5616","navArea":null,"referringServlet":"Hotel_Review","highestMetaPrice":0,"lowestMetaPrice":0,"additionalPartner":false,"highestMetaPriceDisplay":0,"roomsToVerify":[],"clazz":null},"summary":null,"unavailable":true,"metaOffers":[],"mismatchCheckModel":null,"totalMediaCount":0,"hotelPhotos":[],"noticeHeaderMessage":null,"moreProviders":null,"lowestPricePartner":null,"showAllRooms":true,"isMetaCheaper":false,"isBookingLessThanOrEqualToMeta":null,"avgHistoricalPrice":0.0,"avgHistoricalDisplayPrice":null,"expressBookState":{"hasFullTravelerInfo":false,"hasReducedBillingInfo":false,"hasFullBillingInfo":false},"highestMetaPrice":-1,"lowestMetaPrice":-1,"highestMetaPriceDisplay":-1,"hotelName":"Hoposa Uyal Hotel","hasSpecialTimeOfStayTaxes":false,"trackingTree":null,"trackingTreeId":null,"showPriceHoverTooltip":false,"trackingContext":"eyJzdGF0ZSI6IkhPVEVMX0FVQ1RJT04iLCJwIjoiSFJfTWFpbkNvbW1lcmNlIiwiaWRzIjp7IkJGSyI6IjBlNzhhNGM5NDE3YzQzN2U5OTMyMjE0ZGMzY2Y1NjE2IiwiQUlLIjoiNzRjNDY4MzdlOGQ5NGUzZTg3NGNlMjg3MzI4ZDI1ZTEifSwiZW50cnlTZXJ2bGV0IjoiSG90ZWxfUmV2aWV3In0=","cheaperPricesExist":false,"enableLPF":false,"priceDropPercent":0,"canExpandRooms":false,"expandRoomsToAllPartners":false,"roomSelectionKey":null,"useSupplierDirectTreatment":false,"isSupplierDirect":false,"showProviderSeparator":false,"clazz":null,"isPriceDrawerEnabled":false,"seeMoreMessage":null,"seeMoreIFrameMessage":null,"isPricelineCom":false,"isMetaMarketingLandOnBookingFormEnabled":false}, "ibAvailability": false, "metaAvailability": false, "topOfferIsIB": false, "numHacTries": -1, "checkIn": "03/12/2017", "checkOut": "04/12/2017", "lowestPrice": null, "hasDates": true, "hacComplete": true, "contentIdMappings": {}, "pollingEnabled": false, "preventScroll": false, "offerClickToken": null, "conditionalUpdate": false, "mightGetRooms": true, "divClasses": "ppr_rup ppr_priv_hr_inline_room_grid_hsx", "singlePartnerRoomGridWidget": {"containerClass":null,"containerAttributes":null,"widget":{"name":"ibex_room_grid_hsx","dust":{"sub_header":"ibex_room_grid_hsx__sub_header"},"divClasses":"prw_rup prw_ibex_room_grid_hsx","js":{"handlers":"(ta.prwidgets.getjs(this,'handlers'))","tracking":"(ta.prwidgets.getjs(this,'tracking'))"},"template":"ibex_room_grid_hsx__widget","moduleList":["handlers","tracking"]},"scriptFlags":null}, "multiPartnerRoomGridWidget": null, "mismatchMessage": {"containerClass":null,"containerAttributes":null,"widget":{"name":"ibex_mismatch_message","dust":{},"divClasses":"prw_rup prw_ibex_mismatch_message","js":{"handler":"(ta.prwidgets.getjs(this,'handler'))"},"template":"ibex_mismatch_message__widget","moduleList":["handler"]},"scriptFlags":null}, "maxRoomsToShow": 300, "isTablet": false, "roomGridRowWidget": {"containerClass":null,"containerAttributes":null,"widget":{"name":"ibex_room_grid_row_hsx","dust":{"amenities":"ibex_room_grid_row_hsx__amenities","condition_col":"ibex_room_grid_row_hsx__condition_col","price_text":"ibex_room_grid_row_hsx__price_text","reservation_col":"ibex_room_grid_row_hsx__reservation_col"},"divClasses":"prw_rup prw_ibex_room_grid_row_hsx","js":{},"template":"ibex_room_grid_row_hsx__widget","moduleList":[]},"scriptFlags":null}, "mismatchMessageLightbox": null, "deviceInfo": "OtherOS OtherBrowser", "bookOnTripAdvisor": "จองบน <img class=\"ibHeaderImg\" alt=\"TripAdvisor\" src=\"https:\/\/static.tacdn.com\/img2\/branding\/rebrand\/TA_logo_primary.png\"\/>"}
มีรีวิวที่ใหม่กว่าสำหรับ Hoposa Uyal Hotel
NMC061
โรงแรมที่ยอดเยี่ยม ซึ่งไม่ได้ทำให้ผิดหวัง
คำตอบจาก Hoposa H, Director de Recepción ของ Hoposa Uyal Hotelตอบกลับเมื่อ 12 สิงหาคม 2017
คำตอบจาก Hoposa H, Director General ของ Hoposa Uyal Hotelตอบกลับเมื่อ 14 สิงหาคม 2017
คำตอบจาก Hoposa H, Director General ของ Hoposa Uyal Hotelตอบกลับเมื่อ 12 สิงหาคม 2017
US$108 - US$426 (ตามราคาเฉลี่ยของห้องมาตรฐาน)
โรงแรมสำหรับครอบครัวอันดับ 3 ในPort de Pollenca
โรงแรมหรูอันดับ 4 ในPort de Pollenca
โรงแรมริมทะเลอันดับ 6 ในPort de Pollenca
โรงแรมโรแมนติกอันดับ 6 ในPort de Pollenca
TripAdvisor ภูมิใจที่ได้ร่วมเป็นพันธมิตรกับ Booking.com, Expedia, Hotels.com, Travelocity, Hotwire, Orbitz, Cancelon, HotelQuickly, Cheap Tickets และ TripOnline SA คุณจึงสามารถจองห้องพักที่ Hoposa Uyal Hotel ได้อย่างมั่นใจ ในแต่ละเดือน เราช่วยให้นักท่องเที่ยวนับล้านค้นหาโรงแรมที่เหมาะสำหรับทริปวันหยุดพักผ่อนหรือทริปการติดต่อธุรกิจด้วยส่วนลดและข้อเสนอสุดพิเศษที่ดีที่สุดเสมอ
รับคำตอบอย่างรวดเร็วจากพนักงานของ Hoposa Uyal Hotel และแขกที่เคยเข้าพัก
'); } calendarDiv = document.createElement('div'); calendarDiv.id = 'CALENDAR'; calendarDiv.style.display = 'none'; calendarDiv.innerHTML = htmlBuf.join(''); $('PAGE').appendChild(calendarDiv); ta.m.toggleLightBox($('MAIN'), ta.m.oldlocalize(headerKey), "overlayCalendar", 'CALENDAR', undefined, false); ta.m.hideCalendar(); if (currentMonth > showMonth) { showMonth += 12; } if (selectBox) { selectBox.selectedIndex = showMonth - currentMonth; } desiredDateDiv.setAttribute('value', desiredDate); desiredMonthDiv.setAttribute('value', desiredMonth); ta.m.pageFormActive(false); if (ifdefNN(ta.m.lightbox)) { ta.m.lightbox.setLightboxOnClose(function () { ta.m.pageFormActive(true); }); } } , getVRCalendarClasses: function (firstOfCurrentMonth, now, showYear, showMonth, showDay) { var tdClass = "" , d = new Date(showYear, showMonth, showDay) , bookedRanges , theDayBefore , isTheDayBeforeBooked ; if (!ta.VRShared) { return ""; } bookedRanges = ta.VRShared.VRInquiryDataSingleton.get(); if (!bookedRanges) { return ""; } theDayBefore = new Date(d); theDayBefore.setDate(theDayBefore.getDate() - 1); isTheDayBeforeBooked = bookedRanges.isDateBooked(theDayBefore); if (bookedRanges.isDateBooked(d)) { if (!isTheDayBeforeBooked) { tdClass += " arrival"; } else { tdClass += " booked"; } } else if (isTheDayBeforeBooked) { tdClass += " departure"; } return tdClass; } , hideCalendar: function () { var calendar = $('CALENDAR'); if (calendar && calendar.parentNode) { calendar.parentNode.removeChild(calendar); } } , preventDefault: function (event) { if (event && event.preventDefault) { event.preventDefault(); } else if (window.event) { window.event.returnValue = false; } } , stopPropagation: function (event) { if (event.stopPropagation) { event.stopPropagation(); } else if (window.event) { window.event.cancelBubble = true; } } , nextElemNode: function ( el) { var node; if (!ifdefNN(el)) { return null; } node = el.nextSibling; if ((!ifdefNN(node)) || node.nodeType === 1) { return node; } return ta.m.nextElemNode(node); } , getDaysInMonth: function (year, month) { return 32 - new Date(year, month, 32).getDate(); } , crChanged: false , onCrSubmit: function (crChangedPid, crNotChangedPid) { var pidField = $('CR_SUBMIT_PID'); if (!ifdefNN(pidField)) { return true; } if (ta.m.crChanged) { pidField.value = crChangedPid; } else { pidField.value = crNotChangedPid; } return true; } , setDate: function (prefix, year, month, day) { var display = $(prefix + 'Select') , yearDiv = $(prefix + 'Year') , monthDiv = $(prefix + 'Month') , dayDiv = $(prefix + 'Day') ; if (display && year && month && day) { display.children[0].innerHTML = ta.m.oldlocalize('date.MM_DD_YYYY_fffff619', [month + 1, day, year]); } else if (display) { display.children[0].innerHTML = ta.m.oldlocalize('dateFormatStringShort_91d'); } yearDiv.value = year; monthDiv.value = month; dayDiv.value = day; } , setDeparture: function (year, month, day) { ta.m.setDepartureDate(year, month, day); ta.m.closeLightBox(); ta.m.hideCalendar(); } , setDepartureDate: function (year, month, day) { var inRoot = 'in' , outRoot = 'out' , outYear = $(outRoot + 'Year') , outMonth = $(outRoot + 'Month') , outDay = $(outRoot + 'Day') , outSelect = $(outRoot + 'Select') , showPricesButton = $('showPricesSubmit') , inYear = $(inRoot + 'Year') , inMonth = $(inRoot + 'Month') , inDay = $(inRoot + 'Day') , outDate = new Date(year, month, day) , inDate = new Date(inYear.value, inMonth.value, inDay.value) , arrivalDate ; ta.m.crChanged = true; if (outSelect) { outSelect.children[0].innerHTML = ta.m.oldlocalize('date.MM_DD_YYYY_fffff619', [month + 1, day, year]); outSelect.children[0].removeClass('disabled'); } if (showPricesButton) { showPricesButton.parentNode.removeClass('disabled'); } outYear.setAttribute('value', "" + year); outYear.value = year; outMonth.setAttribute('value', "" + month); outMonth.value = month; outDay.setAttribute('value', "" + day); outDay.value = day; if (inDate >= outDate || !inYear.value || parseInt(inYear.value, ta.m.RADIX_DECIMAL) === -1 || !inMonth.value || parseInt(inMonth.value, ta.m.RADIX_DECIMAL) === -1 || !inDay.value || parseInt(inDay.value, ta.m.RADIX_DECIMAL) === -1) { arrivalDate = new Date(year, month, day - 1); ta.m.setArrivalDate(arrivalDate.getFullYear(), arrivalDate.getMonth(), arrivalDate.getDate()); } } , setArrival: function (year, month, day) { ta.m.setArrivalDate(year, month, day); ta.m.closeLightBox(); ta.m.hideCalendar(); } , setArrivalDate: function (year, month, day) { var inRoot = 'in' , outRoot = 'out' , inYear = $(inRoot + 'Year') , inMonth = $(inRoot + 'Month') , inDay = $(inRoot + 'Day') , inSelect = $(inRoot + 'Select') , showPricesButton = $('showPricesSubmit') , outYear = $(outRoot + 'Year') , outMonth = $(outRoot + 'Month') , outDay = $(outRoot + 'Day') , outDate = new Date(outYear.value, outMonth.value, outDay.value) , inDate = new Date(year, month, day) , departureDate ; ta.m.crChanged = true; if (inSelect) { inSelect.children[0].innerHTML = ta.m.oldlocalize('date.MM_DD_YYYY_fffff619', [month + 1, day, year]); inSelect.children[0].removeClass('disabled'); } if (showPricesButton) { showPricesButton.parentNode.removeClass('disabled'); } if (inDate >= outDate) { departureDate = new Date(year, month, day + 1); ta.m.setDepartureDate(departureDate.getFullYear(), departureDate.getMonth(), departureDate.getDate()); } inYear.setAttribute('value', "" + year); inYear.value = year; inMonth.setAttribute('value', "" + month); inMonth.value = month; inDay.setAttribute('value', "" + day); inDay.value = day; } , numAdultsChanged: function () { ta.m.crChanged = true; } , getIndexWithValue: function ( dropdown, value) { var children , i ; if (!(ifdefNN(dropdown) && ifdefNN(dropdown.children) && ifdefNN(value))) { throw "getIndexWithVaue called with null parameter"; } children = dropdown.children; for (i = 0; i < children.length; ++i) { if (children[i].value === value) { return i; } } return -1; } , RADIX_DECIMAL: 10 , MAX_ROOMS: 8 , MAX_ADULTS_PER_ROOM: 4 , MAX_CHILDREN_PER_ROOM: 10 , MAX_CHILDREN: 20 , updateSelectOptionsToRange: function ( dropdown, lower, upper) { var selected , i , newOption , bottom , killMe ; if (!(ifdefNN(dropdown) && ifdefNN(dropdown.children) && ifdefNN(lower) && ifdefNN(upper))) { throw "updateSelectOptionsToRange called with null parameters"; } selected = parseInt(dropdown.value, 10); if (isNaN(selected)) { throw "updateSelectOptionsToRange selected value not an integer"; } selected = Math.max(lower, Math.min(selected, upper)); for (i = 0; i < dropdown.children.length; ++i) { if (parseInt(dropdown.children[i].value, ta.m.RADIX_DECIMAL) < lower || parseInt(dropdown.children[i].value, ta.m.RADIX_DECIMAL) > upper) { killMe = dropdown.children[i]; dropdown.removeChild(killMe); --i; } } bottom = dropdown.children.length > 0 ? parseInt(dropdown.children[0].value, ta.m.RADIX_DECIMAL) - 1 : upper; for (i = bottom; i >= lower; --i) { newOption = document.createElement("option"); newOption.value = i.toString(); newOption.text = i.toString(); dropdown.insertBefore(newOption, dropdown.children[0]); } for (i = parseInt(dropdown.children[dropdown.children.length - 1].value, ta.m.RADIX_DECIMAL) + 1; i <= upper; ++i) { newOption = document.createElement("option"); newOption.value = i.toString(); newOption.text = i.toString(); dropdown.add(newOption); } dropdown.selectedIndex = ta.m.getIndexWithValue(dropdown, selected.toString()); } , boundsCheckAdultsAndRooms: function ( updatedRooms) { var adultsSelect = $("adultsSelect") , roomsSelect = $("roomsSelect") , adults , rooms ; if (!(ifdefNN(adultsSelect) && ifdefNN(roomsSelect))) { throw "boundsCheckAdultsAndRooms() unable to find select widget"; } adults = parseInt(adultsSelect.value, 10); rooms = parseInt(roomsSelect.value, 10); if (isNaN(adults) || isNaN(rooms)) { throw "boundsCheckAdultsAndRooms() adult or room quantity is NaN adults:" + adultsSelect.value + " rooms:" + roomsSelect.value; } ta.m.updateSelectOptionsToRange(adultsSelect, rooms, ta.m.MAX_ADULTS_PER_ROOM * rooms); } , validateAdultsUpdate: function ( updatedRoomsAndAdults) { var adults , rooms , children ; adults = Math.max(1, Math.min(updatedRoomsAndAdults.adults, ta.m.MAX_ROOMS * ta.m.MAX_ADULTS_PER_ROOM)); rooms = updatedRoomsAndAdults.rooms; if (adults > rooms * ta.m.MAX_ADULTS_PER_ROOM) { rooms++; } else if (adults < rooms) { rooms--; } children = Math.max(0, Math.min(updatedRoomsAndAdults.children, rooms * ta.m.MAX_CHILDREN_PER_ROOM)); return { adults: adults, rooms: rooms, children: children }; } , validateRoomsUpdate: function ( updatedRoomsAndAdults) { var rooms , adults , children ; rooms = Math.max(1, Math.min(updatedRoomsAndAdults.rooms, ta.m.MAX_ROOMS)); adults = Math.max(rooms, Math.min(updatedRoomsAndAdults.adults, rooms * ta.m.MAX_ADULTS_PER_ROOM)); children = Math.max(0, Math.min(updatedRoomsAndAdults.children, rooms * ta.m.MAX_CHILDREN_PER_ROOM)); return { adults: adults, rooms: rooms, children: children }; } , validateChildrenUpdate: function ( updatedRoomsAndAdults) { var rooms , adults , children ; rooms = updatedRoomsAndAdults.rooms; adults = updatedRoomsAndAdults.adults; children = Math.max(0, Math.min(updatedRoomsAndAdults.children, Math.min(rooms * ta.m.MAX_CHILDREN_PER_ROOM, ta.m.MAX_CHILDREN))); return { adults: adults, rooms: rooms, children: children }; } , incrementAdultsLabel: function ( adultsIncrement) { var validateFunc; if (ifdefNN(ta.m.vr)) { validateFunc = ta.m.vr.validateAdultsUpdate; } else { validateFunc = ta.m.validateAdultsUpdate; } return ta.m.incrementRoomsAndGuestsLabels(adultsIncrement, 0, 0, validateFunc); } , incrementAdultsLabelMax: function ( adultsIncrement, max) { var adultsVal = parseInt($("adultsInput").value, ta.m.RADIX_DECIMAL); if(!ifdefNN(adultsVal)){ adultsVal = 0; } if ((adultsVal + adultsIncrement) > max){ adultsIncrement = max - adultsVal; } if(adultsIncrement > 0) { ta.m.incrementAdultsLabel(adultsIncrement); } } , incrementRoomsLabel: function ( roomsIncrement) { var validateFunc; if (ifdefNN(ta.m.vr)) { validateFunc = ta.m.vr.validateRoomsUpdate; } else { validateFunc = ta.m.validateRoomsUpdate; } return ta.m.incrementRoomsAndGuestsLabels(0, roomsIncrement, 0, validateFunc); } , incrementChildrenLabel: function ( childrenIncrement) { var validateFunc = ta.m.validateChildrenUpdate; return ta.m.incrementRoomsAndGuestsLabels(0, 0, childrenIncrement, validateFunc); } , incrementRoomsAndGuestsLabels: function ( adultsIncrement, roomsIncrement, childrenIncrement, validateFunc) { var adultsInput , roomsInput , childrenInput , roomsAndGuests , adultsUI , roomsUI , childrenUI , childrenInputValue ; adultsInput = $("adultsInput"); roomsInput = $("roomsInput"); childrenInput = $("childrenInput"); adultsUI = z('.adultsInputForm'); roomsUI = z('.roomsInputForm'); childrenUI = z('.childrenInputForm'); if (!ifdefNN(adultsInput) || !ifdefNN(roomsInput)) { throw "incrementRoomsAndGuestsLabels() unable to find rooms or guests input field"; } childrenInputValue = ifdefNN(childrenInput) ? parseInt(childrenInput.value, ta.m.RADIX_DECIMAL) : 0; roomsAndGuests = { adults: parseInt(adultsInput.value, ta.m.RADIX_DECIMAL), rooms: parseInt(roomsInput.value, ta.m.RADIX_DECIMAL), children: childrenInputValue }; if (isNaN(roomsAndGuests.adults) || isNaN(roomsAndGuests.rooms) || isNaN(roomsAndGuests.children)) { throw "incrementRoomsAndGuestsLabels() guests or room quantity is NaN adults:" + adultsInput.value + " children:" + roomsInput.children + " rooms:" + roomsInput.value; } roomsAndGuests.adults += adultsIncrement; roomsAndGuests.rooms += roomsIncrement; roomsAndGuests.children += childrenIncrement; roomsAndGuests = validateFunc(roomsAndGuests); if (!ifdefNN(roomsAndGuests)) { throw "incrementRoomsAndGuestsLabels() unable to update rooms or guests quantity"; } if (isNaN(roomsAndGuests.adults) || isNaN(roomsAndGuests.rooms) || isNaN(roomsAndGuests.children)) { throw "incrementRoomsAndGuestsLabels() guests or room quantity is NaN adults:" + roomsAndGuests.adults + " children:" + roomsInput.children + " rooms:" + roomsAndGuests.rooms; } adultsInput.value = roomsAndGuests.adults; roomsInput.value = roomsAndGuests.rooms; if(ifdefNN(childrenInput)) { childrenInput.value = roomsAndGuests.children; } if (!ifdefNN(adultsUI) || !ifdefNN(roomsUI)) { throw "incrementRoomsAndGuestsLabels() unable to find rooms or guests widget"; } if (ifdefNN(ta.m.vr)) { adultsUI.text(roomsAndGuests.adults + "+"); roomsUI.text(roomsAndGuests.rooms + "+"); } else { adultsUI.text(roomsAndGuests.adults); roomsUI.text(roomsAndGuests.rooms); if (ifdefNN(childrenUI)) { childrenUI.text(roomsAndGuests.children); } } if(adultsIncrement === 0 && roomsIncrement === 0 && childrenIncrement !== 0) { z(document.body).trigger('childrenChanged', roomsAndGuests); } else { z(document.body).trigger('guestsChanged', roomsAndGuests); } } , screenName: { delay: 200, timeout: undefined, cache: {}, lastNameValue: undefined, lastMsgIndex: 0, msgs: ['sn_status_checking', 'sn_status_avail', 'sn_status_unavail'], lastForm: undefined, lastError: undefined, button: undefined, activeClass: 'green', inactiveClass: 'pGreen' } , _screenNameShowMsg: function (indexOn, inLightbox) { var sn = ta.m.screenName , lastMsg , curMsg , parent = document ; if (inLightbox) { parent = $("overlay"); } if (sn.lastMsgIndex !== indexOn) { lastMsg = parent.getElementsByClassName(sn.msgs[sn.lastMsgIndex])[0]; curMsg = parent.getElementsByClassName(sn.msgs[indexOn])[0]; lastMsg.removeClass('visible'); curMsg.addClass('visible'); sn.lastMsgIndex = indexOn; } } , _screenNameHideAllMessages: function (inLightbox) { var sn = ta.m.screenName , parent = document , lastMsg ; if (inLightbox) { parent = $("overlay"); } lastMsg = parent.getElementsByClassName(sn.msgs[sn.lastMsgIndex])[0]; lastMsg.removeClass('visible'); sn.lastMsgIndex = 0; } , _screenNameShowAvailable: function (available, inLightbox) { if (available) { ta.m._screenNameShowMsg(1, inLightbox); ta.m._screenNameButtonActive(true); } else { ta.m._screenNameShowMsg(2, inLightbox); ta.m._screenNameButtonActive(false); } } , _screenNameButtonActive: function (makeActive) { var sn = ta.m.screenName , activeClass = sn.activeClass , inactiveClass = sn.inactiveClass , button = sn.button ; if (!button || (makeActive && button.hasClass(activeClass)) || (!makeActive && button.hasClass(inactiveClass))) { return; } if (makeActive) { button.removeClass(inactiveClass); button.addClass(activeClass); } else { button.removeClass(activeClass); button.addClass(inactiveClass); } } , onScreenNameKeyUp: function (elt, buttonId, inLightbox, divId) { var name = elt.value.trim() , sn = ta.m.screenName , valFromCache ; if (name === sn.lastNameValue) { return; } sn.lastNameValue = name; clearTimeout(sn.timeout); if (sn.lastError) { sn.lastError.addClass('hidden'); } if (!sn.button) { if (inLightbox) { divId = 'overlay'; sn.button = $(divId).getElementsByClassName(buttonId)[0]; } else { sn.button = $(buttonId); } if (!sn.button && divId) { sn.button = $(divId).getElementsByClassName(buttonId)[0]; } } if (name.length == 0) { ta.m._screenNameHideAllMessages(inLightbox); } else if (name.length < 3 || name.length > 20) { ta.m._screenNameShowAvailable(false, inLightbox); } else { valFromCache = sn.cache[name]; if (valFromCache) { ta.m._screenNameShowAvailable(valFromCache === 'true', inLightbox); return; } sn.timeout = setTimeout(function () { ta.m._screenNameAjaxCall(name, inLightbox); }, sn.delay); } } , _screenNameAjaxCall: function (name, inLightbox) { ta.m._screenNameShowMsg(0, inLightbox); ta.m._screenNameButtonActive(false); ta.m.makeXHRGetResponse('/ScreenNameAjax?n=' + encodeURIComponent(name), 'get', ta.m._screenNameCallback, [name, inLightbox]); } , _screenNameCallback: function (available, args) { var sn = ta.m.screenName , name = args[0] , inLightbox = args[1] ; sn.cache[name] = available; ta.m._screenNameShowAvailable(available === 'true', inLightbox); } , showScreenNameLightbox: function (elt, title) { ta.m.toggleLightBox(elt, title, "", "CREATE_NAME"); ta.m.screenName.lastForm = elt.form; return false; } , inactiveButtonCheck: function (elt) { var button = $(elt).parentNode; return button.hasClass(ta.m.screenName.activeClass); } , onScreenNameSubmit: function (elt, name, errorDiv, formToSubmit) { var sn = ta.m.screenName; sn.button = $(elt).parentNode; if (sn.button.hasClass(sn.inactiveClass)) { return false; } if (!sn.lastForm) { sn.lastForm = formToSubmit; } ta.m._screenNameButtonActive(false); if (errorDiv) { sn.lastError = $('overlay').getElementsByClassName(errorDiv)[0]; } ta.m.makeXHRGetResponse('/MobileRegistration?mreg_action=3&mreg_screenname=' + escape(name) + '&mreg_secToken=' + escape(ta.m.secureToken), 'post', ta.m._screenNameSubmitCallback, [formToSubmit]); return false; } , _screenNameSubmitCallback: function (response, args) { var sn = ta.m.screenName; if (response.indexOf('okay') >= 0 && response.length <= 10) { ta.m.closeLightBox(); if (sn.lastForm) { sn.lastForm.submit(); sn.lastForm = undefined; } } else { if (sn.lastError) { sn.lastError.innerHTML = response; sn.lastError.removeClass('hidden'); } } } , freshVSCookieCheck: function () { var freshVSTrackingCookie = ta.m.freshVSTrackingCookie , hasVSCookie , uniqueID , url ; if (ifdefNN(freshVSTrackingCookie) && freshVSTrackingCookie) { hasVSCookie = document.getCookie('v1st'); if (hasVSCookie) { uniqueID = (new Date()).getTime(); url = '/VSCookieRequest?uniqueID=' + uniqueID; ta.m.makeXHR(url, "POST", null); } } } , abbreviateString: function (str, length) { var s = str.substring(0, length); return (s == str) ? s : s + "…"; } , addCookieCheckToForm: function (elm) { var input = document.createElement('input') ; input.type = "hidden"; input.name = "mreg_hasCookies"; input.value = navigator.cookieEnabled; elm.form.appendChild(input); } , saveDeviceToken: function (token) { if (ifdefNN(token) && hasLocalStore()) { try { localStorage.removeItem('pushToken'); localStorage.setItem('pushToken', token); ta.m.injectDeviceToken(); return true; } catch (e) { ta.m.handleLocalStorageError(e); } } return false; } , injectDeviceToken: function () { var bIsMobileIPhoneAndroid = ifdefNN(ta.m.iphone) || ifdefNN(ta.m.android) , bIsTabletOnMobile = (typeof(isTATabletApp) != 'undefined' && isTATabletApp) , tokenInput , token ; if (!bIsTabletOnMobile && (!bIsMobileIPhoneAndroid || !IS_APP)) { return; } if (hasLocalStore()) { try { tokenInput = $('DEVICE_TOKEN'); if (ifdefNN(tokenInput)) { token = localStorage.getItem('pushToken'); tokenInput.value = token; if (ifdefNN(token) && token !== '') { ta.pushSent(); } } else { if (ifdefNN(ta.m.isUserLoggedIn) && ta.m.isUserLoggedIn) { ta.trySyncToken(ta.m.isUserLoggedIn, ta.m.makeXHRGetResponse, ta.m.parseJSON); } } } catch (e) { ta.m.handleLocalStorageError(e); } } } , addPidToUrl: function (url, pid) { var list; if (url != null) { list = url.split('-'); list.splice(1, 0, 'p' + pid); return list.join('-'); } } , addPidToCookie: function (pid) { if (ifdefNN(pid) && 0 !== pid.length) { document.setCookieInSeconds('NPID', pid, { path: '/', duration: (5), ignoreVersion: true }); } } , recordHelpfulVote: function (elt, url2) { var url = asdf(url2) , button ; if (ifdefNN(elt)) { elt.className = "button helpful gray"; elt.onclick = null; button = elt.getElementsByClassName("buttontext")[0]; if (ifdefNN(button)) { button.innerHTML = ta.m.oldlocalize('reviewSliderHelpful'); } } ta.m.makeXHR(url, "post", null); } , recordHelpfulVoteBauhaus: function (elt, url2) { var url = asdf(url2) , thumbIcon ; if (ifdefNN(elt)) { elt.onclick = null; thumbIcon = elt.getElementsByClassName("bauhaus"); if (ifdefNN(thumbIcon) && ifdefNN(thumbIcon[0])) { thumbIcon[0].className = "svgico bauhaus thumbs_up green"; } } ta.m.makeXHR(url, "post", null); } , turnReportGray: function ( id) { var elt = $('report_' + id) , button ; ta.m.eventRecordPid("34304"); if (ifdefNN(elt)) { elt.className = "button report gray"; elt.onclick = null; button = elt.getElementsByClassName("buttontext")[0]; if (ifdefNN(button)) { button.innerHTML = ta.m.oldlocalize('SO_recat_thankYou_e1f'); } } } , clearFormLatLng: function () { var f = document.forms['locationForm'] , submitBtn = document.getElementsByName("locationSubmit")[0] , el ; if (ifdefNN(f)) { el = f.elements['latitude']; if (ifdefNN(el)) { el.value = ""; } el = f.elements['longitude']; if (ifdefNN(el)) { el.value = ""; } } if (submitBtn) { $(submitBtn.parentNode).removeClass('gray'); } } , updateSortValue: function (newValue) { var sortOrder = $('SORT_INPUT') , unavailInput = $('UNAVAIL_INPUT') ; if (!ifdefNN(newValue) || !ifdefNN(sortOrder)) { return; } sortOrder.value = newValue; ta.m.updateSortButtons(newValue); } , handleFriendsFirstSortCheckBox: function () { var sortOrder = $('SORT_INPUT') , firstButton = $('segCtrl1') ; if (!ifdefNN(sortOrder) || !ifdefNN(firstButton)) { return; } if (sortOrder.value === 'friends' || sortOrder.value === '') { ta.m.updateSortValue(ifdefNN(ta.savedNonFriendSort) ? ta.savedNonFriendSort : firstButton.getAttribute('data-sort-val')); } else { ta.savedNonFriendSort = sortOrder.value; ta.m.updateSortValue('friends'); } } , updateSortButtons: function (newValue) { var group = $('sortCtrlOptions') , buttons , button , check , locationForm = $('locationForm') , fbSortButtons , fbSortButton , i ; if (!ifdefNN(group)) { return; } buttons = group.getElementsByClassName('button'); for (i = 0; i < buttons.length; i++) { button = buttons[i]; check = button.getElementsByClassName('checkMark')[0]; if (button.getAttribute('data-sort-val') === newValue) { button.removeClass('faded'); if (ifdefNN(check)) { check.removeClass('hidden'); } } else { button.addClass('faded'); if (ifdefNN(check)) { check.addClass('hidden'); } } } if (locationForm) { fbSortButtons = locationForm.getElementsByClassName('fbButton'); if (fbSortButtons && fbSortButtons.length > 0) { fbSortButton = fbSortButtons[0]; if (fbSortButton) { if (newValue === 'friends') { fbSortButton.removeClass('faded'); } else { fbSortButton.addClass('faded'); } } } } } , toggleShowUnavailable: function () { var unavailInput = $('UNAVAIL_INPUT') , unavailButton = $('unavailCtrl') , group = $('sortCtrlOptions') , check ; if (!ifdefNN(unavailInput) || !ifdefNN(unavailButton) || !ifdefNN(group)) { return; } check = unavailButton.getElementsByClassName('checkMark')[0]; if (unavailInput.value === 'true') { unavailInput.value = 'false'; unavailButton.removeClass('faded'); ta.m.eventRecordPid('36680'); if (ifdefNN(check)) { check.removeClass('hidden'); } } else { ta.m.eventRecordPid('36681'); unavailInput.value = 'true'; unavailButton.addClass('faded'); if (ifdefNN(check)) { check.addClass('hidden'); } } } , colorButtons: function (elmt) { var hasChange = false , buttons = elmt.parentNode.getElementsByClassName('button') , button , checkImgs , checkImg , isSet , radios , className ; for (var i = buttons.length; --i >= 0;) { button = buttons[i]; checkImgs = button.getElementsByClassName('svgico'); checkImg; if (checkImgs) { checkImg = checkImgs[0]; } isSet = false; radios = button.getElementsByTagName('input'); if (ifdefNN(radios) && radios.length) { isSet = radios[0].checked; } if (isSet && button.hasClass('faded')) { className = button.className; button.className = className.replace('faded', 'checkContainer'); if (checkImg) { className = checkImg.className; checkImg.className = className.replace('hidden', 'checkMark'); } hasChange = true; } else if (!isSet && !button.hasClass('faded')) { className = button.className; button.className = className.replace('checkContainer', 'faded'); if (checkImg) { className = checkImg.className; checkImg.className = className.replace('checkMark', 'hidden'); } hasChange = true; } } return hasChange; } , scrollTo: function (element) { if (!(ifdefNN(ta.m.iphone) && ta.m.iphone.noScroll())) { setTimeout(window.scrollTo, 50, 0, element.offsetTop); } } , showMapDisclaimer: function (locationName, encodedLocation, destLatLong) { var mapLink , mapBody , mapBase , address = $('ADDRESS'); $('MAPS_DSC').block(); mapBody = $('MAP_BODY'); if (mapBody) { mapBody.hide(); } if (locationName) { address.innerHTML = locationName; } else { address.innerHTML = destLatLong; } if (ifdefNN(ta.m.iphone) && ta.m.iphone.iOSVersion() >= 6) { mapBase = 'http://maps.apple.com'; } else { mapBase = ta.m.isDaoDao ? 'https://ditu.google.cn' : 'https://maps.google.com'; } mapLink = mapBase + '/maps?saddr=&daddr='; if (encodedLocation) { mapLink += encodedLocation; if (destLatLong) { mapLink += '@' + destLatLong; } } else { mapLink += destLatLong; } $('CONFIRM').onclick = function () { ta.m.eventRecord(null, null, 25166, function () { window.location = mapLink; }); return false; }; } , saveCurrency: function ( elem, pid) { if (ifdefNN(elem)) { ta.m.addPidToCookie(pid); window.location.replace("/MobileNativeSettings?currency=" + elem.value); } } , initAutosave: function (pagetype) { ta.m.autosave.init(pagetype); } , toggleSave: function (isSaved, id, geoId, pid) { return ta.m.oldsaves.toggleSave(isSaved, id, geoId, pid); } , checkMySaves: function () { return ta.m.oldsaves.checkMySaves(); } , clearAutosave: function (pagetype) { ta.m.autosave.clearAutosave(pagetype); } , forumDetectClear: function (pagetype) { return ta.m.autosave.forumDetectClear(pagetype); } , toggleRefresh: function () { var newUrl , unavailableInputDiv = $('UNAVAIL_INPUT') , unavailableInputValue = false ; if (unavailableInputDiv) { unavailableInputValue = unavailableInputDiv.value; } newUrl = ta.m.updateUrl(location.href, 'a_showUnavail.', unavailableInputValue); newUrl = ta.m.updateUrl(newUrl, 'zfp', 'zfp'); newUrl = ta.m.updateUrl(newUrl, 'zfn', 'zfn'); newUrl = ta.m.updateUrl(newUrl, 'a_distance.', 'distance'); newUrl = ta.m.updateUrl(newUrl, 'zfc', 'zfc'); newUrl = ta.m.updateUrl(newUrl, 'zfa', 'zfa'); newUrl = ta.m.updateUrl(newUrl, 'a_prng.', 'prng'); ta.m.makeXHRGetResponse(newUrl, 'GET', ta.m.populate); } , updateUrl: function (oldUrl, filter, filterVal) { var filterValStr , filterValStored , selected ; if (filter === 'a_showUnavail.') { filterValStored = filterVal; } else { filterValStored = window[filterVal + 'Selected']; } if (filterValStored || filterValStored === 0) { if (filter !== 'a_showUnavail.') { selected = document.getElementsByName(filterVal)[0].value; if (selected.length > 0) { filterValStored = selected; window[filterVal + 'Selected'] = selected; } } filterValStr = filter + filterValStored; oldUrl = oldUrl.replace(new RegExp(filter + '[^-]+', 'g'), filterValStr); if (!oldUrl.contains(filterValStr)) { oldUrl = oldUrl.replace('MobileFilters', 'MobileFilters-' + filterValStr); } } return oldUrl; } , populate: function (responseText) { var jsonResponse , jsonCounts , jsonLabels , jsonSelected , jsonFilterHeader , jsonFilteredCount , jsonTotalCount , selects = document.getElementsByTagName('select') , filterHeader = $('filterHeader') , filteredCount = $('filteredCount') , totalCount = $('totalCount') , i , options , optionValues , j , optionValue , optionText , newCount , optionDisabled , optionSelected , selectedOption , newOption , maximumFilters ; jsonResponse = JSON.parse(responseText); jsonCounts = jsonResponse['count']; jsonLabels = jsonResponse['labels']; jsonSelected = jsonResponse['selected']; jsonFilterHeader = jsonResponse['filterHeader']; jsonFilteredCount = jsonResponse['filteredCount']; jsonTotalCount = jsonResponse['totalCount']; if (ifdefNN(filterHeader)) { filterHeader.innerHTML = jsonFilterHeader; } if (ifdefNN(filteredCount)) { filteredCount.value = jsonFilteredCount; } if (ifdefNN(totalCount)) { totalCount.value = jsonTotalCount; } if (!jsonLabels || !jsonSelected || !jsonCounts) { return; } maximumFilters = Math.max(jsonLabels.length, jsonSelected.length, jsonCounts.length); for (i = 0; i < selects.length; i++) { if (i >= maximumFilters) { break; } options = selects[i].options; while (ifdefNN(options) && options.length > 0) { selects[i].removeChild(options[0]); } optionValues = jsonLabels[i]; selectedOption = jsonSelected[i]['0']; for (j in optionValues) { optionValue = j; optionText = optionValues[j]; newCount = jsonCounts[i][optionValue]; optionText = newCount === '0' ? optionText : optionText + ' (' + newCount + ')'; optionSelected = (selectedOption === optionValue); optionDisabled = !(parseInt(newCount, 10) > 0); newOption = new Option(optionText, optionValue, false, optionSelected); if (i !== 1) { newOption.disabled = optionDisabled; } options.add(newOption); } } } , temporarilyDisableInterrupter: function ( days) { document.setCookieInSeconds("interstitialCounter", "-1", {duration: days * 24 * 60 * 60, path: "/"}); } , showInterrupter: function ( gaTrackingLabel, isHardGated) { var wrapper = document.getElementById('interrupterWrapper') ; try { window.scrollTo(0, 1); if (wrapper) { wrapper.style.display = 'inherit'; if (gaTrackingLabel) { ta.m.interrupter.setUpForTracking(gaTrackingLabel, isHardGated); ta.m.interrupter.gaTrackInterrupterShown(gaTrackingLabel); } ta.m.interrupter.replaceElemBgForInterrupter(); } } catch (e) { } } , replaceElementBackgroundWithDataPhotoUrl: function (element) { var photoUrl ; if (ifdefNN(element)) { photoUrl = element.getAttribute("data-photo-url"); if (ifdefNN(photoUrl)) { element.style.backgroundImage = "url('" + photoUrl + "')"; } } } , tryShowingHybridUpgradeInterrupter: function (pid) { var pageContents = document.getElementById('PAGE_CONTAINER') , upgradeWrapper = document.getElementById('hybridUpgradeWrapper') , phoneElement = document.getElementById('hybridPhone'); try { window.scrollTo(0, 1); ta.m.eventRecordPid(pid); if (ifdefNN(pageContents)) { pageContents.style.display = "none"; } if (ifdefNN(upgradeWrapper)) { upgradeWrapper.style.display = "inherit"; ta.m.replaceElementBackgroundWithDataPhotoUrl(upgradeWrapper); if (ifdefNN(phoneElement)) { ta.m.replaceElementBackgroundWithDataPhotoUrl(phoneElement); } } } catch (e) { throw(e); } } , closeInterrupter: function ( interrupterWrapperId) { var interrupter = document.getElementById(interrupterWrapperId) ; if (interrupter) { interrupter.style.display = 'none'; } if (ifdefNN(ta.m.Carousel)) { ta.m.Carousel.redraw(); } } , submitForumPostForm: function (elem) { if (!elem) { return; } if (elem && elem.parentNode) { elem.parentNode.addClass('gray'); } elem.setAttribute('disabled', true); if (elem.form) { elem.form.submit(); } } , displayElemById: function (id) { var item = $(id); if (!item) { return; } item.block(); } , verifyCookies: function (currentValue) { var storedValue , storedValueName = "STASHED" , pidCorrect = 37385 , pidLost = 37386 , pidMissing = 37387 , pidCleared = 37388 , pidMismatch = 37389 ; if (!ta.m.supportsHtml5Storage() || !ta.m.allowsCookies()) { return; } try { storedValue = localStorage[storedValueName]; if (!storedValue) { ta.m.onFirstPageView(pidCorrect, pidLost); } else if (storedValue === currentValue) { ta.m.eventRecord(null, ta.m.servletName, pidCorrect, null); } else if (!currentValue) { ta.m.eventRecord(null, ta.m.servletName, pidMissing, null); } else { ta.m.onFirstPageView(pidCleared, pidMismatch); } localStorage[storedValueName] = currentValue; } catch (e) { } } , onFirstPageView: function (firstPageViewPid, subsequentPageViewPid) { var interstitialCookieName = "interstitialCounter" , interstitialValue ; interstitialValue = parseInt(document.getCookie(interstitialCookieName), 10); if (!ifdefNN(interstitialValue) || isNaN(interstitialValue)) { ta.m.eventRecord(null, ta.m.servletName, firstPageViewPid, null); } else { ta.m.eventRecord(null, ta.m.servletName, subsequentPageViewPid, null); } } , supportsHtml5Storage: function () { try { return 'localStorage' in window && window['localStorage'] !== null; } catch (e) { return false; } } , fillBookingOfferPUID: function () { var puidElems = [] , puidElemsLen , i ; if (!ifdefNN(ta.uid)) { return; } if (typeof document.getElementsByClassName === 'function') { puidElems = document.getElementsByClassName('abFormPUID'); } puidElemsLen = puidElems.length; for (i = 0; i < puidElemsLen; i++) { puidElems[i].setAttribute("value", ta.uid); } } , clearAbandonedCartCookie: function() { document.cookie = "TAAbandonedCart=;path=/;max-age=0;expires=Thu, 01 Jan 1970 00:00:00 GMT;domain=" + ta.m.cookieDomain(); } , clearAbandonedCartCookieAndCloseOverlay: function ( idOfElementToShow) { var cart = $('abandonedCart') , hiddenContent = ifdefNN(idOfElementToShow) && typeof idOfElementToShow === "string" ? $(idOfElementToShow) : null ; if (ifdefNN(cart)) { cart.addClass("hidden"); } if (ifdefNN(hiddenContent)) { hiddenContent.removeClass("hidden"); } ta.m.clearAbandonedCartCookie(); if (ifdef(ta.m.Carousel)) { ta.m.Carousel.redraw(); } } , checkIfUserReturnedFromMeta: function() { var timeReturned , timeLeft , providerName , slot , servlet ; if (ta.util.localstorage.canUseSessionStore()) { timeReturned = new Date().getTime(); timeLeft = sessionStorage.browsedToMetaTime; providerName = sessionStorage.browseToMetaProvider; slot = sessionStorage.browsedToMetaSlot; servlet = sessionStorage.browsedToMetaServlet; if (timeLeft && (timeReturned - timeLeft <= TEN_MINUTES)) { ta.trackEventOnPage('COMMERCE_CLICK', 'Meta_Bounce', servlet + "|" + slot + "|" + providerName, (timeReturned - timeLeft)); } sessionStorage.browsedToMetaTime = null; sessionStorage.browseToMetaProvider = null; sessionStorage.browsedToMetaSlot = null; sessionStorage.browsedToMetaServlet = null; } } , recordScreenSize: function(action) { var screenSize = (function () { var e = document.documentElement , landscape = window.orientation && (window.orientation == 90 || window.orientation == -90) , g = document.body , wx = window.innerWidth || e.clientWidth || g.clientWidth , wy = window.innerHeight || e.clientHeight || g.clientHeight , sx = screen.width , sy = screen.height; return landscape ? 's' + sy + 'x' + sx + 'b' + wy + 'x' + wx : 's' + sx + 'x' + sy + 'b' + wx + 'x' + wy; })() ; if (ta.util.localstorage.canUseSessionStore() && sessionStorage && !sessionStorage.recordedScreenSize) { ta.trackEventOnPage('screenSizeRecord', action, screenSize); sessionStorage.recordedScreenSize = 1; } } , trackScrollingInHotelsPages: function(scrollingPositions) { if (_scrollingPositions) { return; } _scrollingPositions = scrollingPositions; var scrollFunction = _.throttle(function() { if (_scrollingPositions.length === 0) { window.removeEventListener('scroll', scrollFunction, false); } else if (_scrollingPositions.length > 0 && _scrollingPositions[0].position <= z(window).scrollTop() + z(window).height()) { var trackingName = _scrollingPositions[0].name; if(trackingName === "xsell") { ta.trackEventOnPage('xsell_hr_belowqa_similar', 'in_view', null, null, true); } else { ta.trackEventOnPage('MobileHotel_Review', 'scroll', trackingName, 0, true); } _scrollingPositions.shift(); } }, 250); window.addEventListener('scroll', scrollFunction, false); } , trackHotelsInGeo: function() { if (require.defined('page-model')) { var pageModel = require('page-model'); ta.trackEventOnPage("geo_size", "geo_size", pageModel.GEO_ID, pageModel.hotelsInGeo, true); } } , trackScrollingInHotelReview: function() { var trackingNames = {"#PAGE" : "hotel_info", "#rd_reviews_section_start" : "reviews", "#answersModule" : "q&a", ".bauhaus_room_tips" : "room_tips", ".also_viewed_module" : "xsell", "#nd_nearby_section_start" : "nearby_places"} , scrollingPositions = (function() { var positions = []; z(Object.keys(trackingNames)).each(function(index, item) { var zItem = z(item); if (zItem.length > 0 ) { positions.push({name: trackingNames[item], position: zItem.offset().top}); } }); return positions; })(); ta.m.trackScrollingInHotelsPages(scrollingPositions); } , inlineCheckRatesFormSubmit: function (errorMessage) { var checkRates = document.getElementById('checkRates') , inDayValue = parseInt(z('#outDay').val()) , outDayValue = parseInt(z('#inDay').val()) ; if (!errorMessage || (inDayValue > -1 && outDayValue > -1 && checkRates)) { document.getElementById('checkRates').submit(); } else { ta.m.alert.showDefaultAlertWithMessage(errorMessage); } } , delayNavigation: function(url, timeout, callback) { if (typeof callback === "function") { callback(); } setTimeout(function() { window.location.href = url; }, timeout); return false; } , adjustTitleFontSizeToFit: function() { var zTitle = z(".hero_image_title") , targetWidth = zTitle.parent().width() - 7 * 2 , targetHeight = Math.floor(zTitle.parent().height() * 0.56) , zTitleShadow , initialFontSizeString = zTitle.css("font-size") , fontSize ; if (initialFontSizeString) { fontSize = parseInt(initialFontSizeString, 10); if (fontSize) { zTitleShadow = zTitle.clone().css({ "position": "absolute", "max-width": targetWidth + "px", "z-index": -1 }).appendTo(zTitle.parent()); while (zTitleShadow.width() > targetWidth || zTitleShadow.height() > targetHeight) { fontSize--; zTitleShadow.css("font-size", fontSize + "px"); } zTitleShadow.remove(); zTitle.css("font-size", fontSize + "px"); } } } , injectAltSess: function (altsessid) { if (!$('altsess-script') && ifdefNN(ta.m.threatmetrix) && ta.m.threatmetrix !== '') { var altsessScript = document.createElement('script'); altsessScript.id ='altsess-script'; altsessScript.src = ta.m.threatmetrix; altsessScript.type = 'text/javascript'; altsessScript.onload = function(){ loadAltSess(altsessid); }; document.body.appendChild(altsessScript); } } }; nsExporter.exportTo(exports, "ta.m"); return exports; }); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'mobile_hotel_address','handlers',['handlers']); define(["widget", "lib/jquery-amd", "common/trackingStreams", "mobile/Mobile", "ta/page", "ta/Core/TA.FireEvent"], function(widget, $, taRecord, mobile, taPage, taEvent) { return { trackAddressClick: function(useMapGate) { if (useMapGate) { taPage.loadDeferred().then(function() { taEvent.fireEvent("mobileInterruptableEvent", "javascript:void(0)", null, "use_native_map_adv_hard", "hard_gated"); }); return false; } else { taRecord.trackEvent(window.pageServlet, "street_address_click", "tablecell", 0, false); return true; } }, openLocalLang: function() { try { mobile.addPidToCookie(39242); } catch (e) {} widget.element.querySelector('.localLB').classList.remove('hidden'); }, closeLocalLang: function() { widget.element.querySelector('.localLB').classList.add('hidden'); } }; }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'mobile_ride_service','handlers',['handlers']); define(["widget", "lib/jquery-amd", "ta/Core/TA.Record"], function(widget, $, taRecord) { function _handleClick(evnt, elmt, name) { taRecord.trackEventOnPage(name, name + '_clicked', 'launch' + name + 'MW'); require(["trjs!mobile/bauhaus/components/" + name.toLowerCase()], function(providerLib) { providerLib.handleClick && providerLib.handleClick(evnt); }); } // track shown modules $(".callout_container[data-provider]").each(function() { var name = $(this).attr("data-provider"); taRecord.trackEventOnPage(name, name + '_shown', '', 0, true); }); return { handleClick: _handleClick }; }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'global_nav_action_profile','handlers',['handlers']); /* jshint newcap:false */ define([ 'placement', 'lib/jquery-amd' ], function( placement, $ ) { 'use strict'; var placementEl = $('#' + placement.id); var oldOverlay = null; var overlays = {}; // Login placementEl.on('click', 'a.login-button', function(evt) { if (oldOverlay) { oldOverlay.hide('replace-el'); } var flow = $('.core-login-button').data('flowName'); if (flow === "VIATOR_COMBINED") { require('ta/registration/RegOverlay').show(evt, evt.target, { flow: flow, pid: 40102, userRequestedForce: 'true', locationId: require('page-model').GEO_ID }); evt.preventDefault(); } else { require('ta/registration/RegOverlay').show(evt, evt.target, { flow: flow, pid: 427, userRequestedForce: 'true' }); evt.preventDefault(); } }); // Tracking: Catch-all var _trackNavClick = function(elmt, category) { var trackingLabel = $(elmt).data('trackingLabel'); // Handle links to /# (Help Center) or links opening new window require(['trjs!ta/Core/TA.Record'], function(taRecord) { if(/\/#\s*$/.test(elmt.href) || elmt.target == '_blank') { taRecord.trackEventOnPage(category, 'click', trackingLabel); } else { taRecord.setEvtCookie(category, 'click', trackingLabel, 0, elmt.href); } }); }; // Tracking: Global Nav and Sidebar Profile Links placementEl.on('click', '.global-nav-profile-menu a.subLink[data-tracking-label], .sidebar-nav-profile a.subLink[data-tracking-label]', function() { _trackNavClick(this, 'UtilityNav'); }); // Tracking: Profile Sublinks placementEl.on('click', '[data-track-profile-dropdown-open]', function() { var event = require('page-model').session.loggedIn ? "Signed_in_profile_dropdown" : "Signed_out_profile_dropdown"; require(['trjs!ta/Core/TA.Record'], function(taRecord) { taRecord.trackEventOnPage('UtilityNav', 'open', event); }); }); }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'background_update_dates','handlers',['handlers']); /** * Poll travel info cookie for updated dates, and if found, update page */ define(['placement', 'lib/jquery-amd', 'utils/cookieutils', 'ta/page'], function(placement, $, CookieUtils, page) { var _timeToPoll = 2 * 1000; // poll every 2 seconds var _timeToTimeout = 15 * 60 * 1000; // timeout after 15 minutes var _checkin = getTravelDate('A'); var _checkout = getTravelDate('D'); var _polling; var _timeout; /** * Get a travel date from the cookie. * @param {String} prefix * @returns {Date} */ function getTravelDate(prefix) { var day, month, year; day = getTravelInfoItem(prefix + 'D'); month = getTravelInfoItem(prefix + 'M'); year = getTravelInfoItem(prefix + 'Y'); if (day && month && year) { return dateFromString(year + '/' + month + '/' + day); } return null; } /** * Get a travel info item from the cookie. * @param {String} key * @returns {String} */ function getTravelInfoItem(key) { var travelInfoCookie = CookieUtils.getCookie('TATravelInfo'); if (travelInfoCookie) { var travelInfo = travelInfoCookie.split('*'); for (var i = 0; i < travelInfo.length; i++) { var item = travelInfo[i].split('.'); if (item[0] === key) { return item[1]; } } } } /** * Convert a date string formatted as year/month/day into a Date object. * @param {String} dateString * @returns {Date} */ function dateFromString(dateString) { var components = dateString.split('/'); return new Date(parseInt(components[0]), parseInt(components[1]) - 1, parseInt(components[2])); } /** * Compares passed in dates with current dates and returns passed in dates if they are different from current dates. * @param {[Date, Date]} dates * @returns ({[Date, Date]}) */ function checkForUpdatedDates(dates) { if (!dates || dates.length != 2) { return; } var checkin = dates[0]; var checkout = dates[1]; if (checkin instanceof Date && checkout instanceof Date) { // make sure we're ignoring time checkin.setHours(0, 0, 0, 0); checkout.setHours(0, 0, 0, 0); if (_checkin instanceof Date && _checkout instanceof Date) { // make sure we're ignoring time _checkin.setHours(0, 0, 0, 0); _checkout.setHours(0, 0, 0, 0); // compare the dates and return the updated dates if they have changed if (checkin.getTime() != _checkin.getTime() || checkout.getTime() != _checkout.getTime()) { return [checkin, checkout]; } } else { // no old dates, so just return the new dates return [checkin, checkout]; } } } /** * Updates the page (sets datepickers and fetches updated prices) with the passed in dates. * @param {[Date, Date]} dates */ function pushDates(dates) { page.pushDates(document.querySelector('body'), 'STAYDATES', [dates[0], dates[1]]); } /** * Event handler for 'dateSelected' page event. * @param {Element} target * @param {String} dateType * @param {[Date, Date]} dates */ function dateSelected(target, dateType, dates) { if (dateType == 'STAYDATES') { if (checkForUpdatedDates(dates)) { stopPolling(); // user changed dates in this tab } } } /** * Check travel info cookie for updated dates (changed in a different tab). */ function poll() { if (_polling) { var dates = checkForUpdatedDates([getTravelDate('A'), getTravelDate('D')]); if (dates) { pushDates(dates); stopPolling(); // dates were updated in a different tab } else { setTimeout(poll, _timeToPoll); } } } /** * Starts polling of the travel info cookie for updated dates. */ function startPolling() { _polling = true; poll(); if (!_timeout) { _timeout = setTimeout(function () { stopPolling(); // timeout out }, _timeToTimeout); } } /** * Pauses polling of the travel info cookie. * Clears the interval and timeout. */ function pausePolling() { _polling = false; clearTimeout(_timeout); _timeout = null; } /** * Stops polling of the travel info cookie. * Clears the interval and timeout. * Removes the event handlers. */ function stopPolling() { pausePolling(); page.off('dateSelected', dateSelected); $(window).off('blur', startPolling); $(window).off('focus', pausePolling); } // Setup the event handlers to start polling on blur, pause on focus, and stop when dates have been updated. // Assumes we have default dates, otherwise placement would have been featured off by FeatureDefaultDates.java. page.on('dateSelected', dateSelected); $(window).on('blur', startPolling); $(window).on('focus', pausePolling); } ); });require(['ta/p13n/placements','ta/page','$prp/background_update_dates/handlers'], function(placements, impl) { window.ta.plc_background_update_dates_handlers = placements.load('background_update_dates','handlers.js', { 'name': 'background_update_dates', 'id': 'taplc_background_update_dates', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'params': {}, 'data': {}});}); require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'masthead_search','handlers',['deferred/lateHandlers','handlers']); /* jshint newcap:false */ /** * Private javascript for masthead_search placement */ define(["placement", "ta/Core/TA.Store"], function (placement, taStore) { function prepareTypeaheadParameters() { if (placement.params && 'typeahead_to_store' in placement.params) { var propertiesToStore = placement.params.typeahead_to_store; if (propertiesToStore) { for (var property in propertiesToStore) { if (propertiesToStore.hasOwnProperty(property)) { taStore.store(property, propertiesToStore[property]); } } } } } prepareTypeaheadParameters(); var options = taStore.retrieve("typeahead_dual_search_options"); if (document.activeElement === document.getElementById("GEO_SCOPED_SEARCH_INPUT")) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whereFocused({type: "dummy"}, document.activeElement); }); } else if (document.activeElement === document.getElementById("mainSearch")) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whatFocused({type: "dummy"}, document.activeElement); }); } return { getOptions: function () { return options; } }; }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'trip_planner_breadcrumbs','handlers',['handlers']); define(["placement", "ta/Core/TA.FireEvent"], function(placement, taEvent) { "use strict"; function updateContents(contentDiv) { var placementDiv = document.getElementById(placement.id); if(placementDiv) { placementDiv.innerHTML = contentDiv.innerHTML; } } taEvent.on("update-" + placement.name, updateContents); return { }; });}); define('Logging', ['vanillajs'], function(vanilla) { var DEBUG_LEVEL = typeof IS_DEBUG !== 'undefined' && IS_DEBUG ? 4 : 1; var result = {}; var levels = ['error', 'warn', 'dir', 'info', 'debug']; for (var i=0; i< idx) { return; } if (typeof console === 'undefined' || !console[level] || !console[level].apply) { return; } console[level].apply(console, arguments); } })(level, i); } result.setLevel = function(newLevel) { DEBUG_LEVEL = newLevel; }; return result; }); define('common/DustRenderer', ['Logging'], function(Logging) { return function(template, data) { var dustGlobal = {}; if (require.defined('page-model')) { dustGlobal = require('page-model').DUST_GLOBAL; } else { dustGlobal = DUST_GLOBAL; } if (!template || !dust.cache[dustGlobal.LOCALE + template]) { throw new Error('Template is missing for ' + template); } var start = new Date().getTime(); var blob = dust.makeBase(dustGlobal).push(data); var output = ''; dust.render(dustGlobal.LOCALE + template, blob, function (err, out) { if (err) { throw err; } output = out; }); var totalTime = (new Date().getTime() - start); if (totalTime > 5) { Logging.warn('Template ' + template + ' took ' + totalTime + 'ms to render'); } return output; }; }); define('overlays/options/destroyOnHide', ['vanillajs'], function(vanilla){ return function() { this.hide = function(hideTrigger) { if (!this.container.overlay) { return; } delete this.container.overlay; this.domParent.removeChild( this.container ); this.emit('hide', { trigger: hideTrigger }); this.emit('destroy', { trigger: hideTrigger }); this.sourceElement = null; this.contentElement = null; return this; }; }; }); require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'global_nav_action_trips','handlers',['handlers']); /** * Created by huihongwang on 6/1/17. */ define([ 'placement', 'lib/jquery-amd', 'api-mod', 'page-model', 'common/Radio', 'ta/Core/TA.Record', 'utils/localstorage', 'common/DustRenderer', 'overlays/position', 'overlays/styles/flyout', 'overlays/options/destroyOnHide', 'overlays/options/autoReposition', 'overlays/options/fade' ], function( placement, $, api, pageModel, Radio, Tracking, Storage, DustRenderer, Position, Flyout, DestroyOnHide, AutoReposition, Fade ) { 'use strict'; var globalNavMenus = $('[data-placement-name="global_nav_menus"]'); var radio = Radio('global-nav'); var oldOverlay = null; var overlays = {}; var $root = $('#' + placement.id); var $testEl = $root.find('.my-trips-dropdown-test'); var $controlEl = $root.find('.my-trips-dropdown-control'); var $quickSaveEl = $root.find('.quick-save-test'); var OVERLAY_NAME = 'my-trips-dropdown-test-overlay'; var OVERALY_AUTOCLOSE_TIMEOUT = 7 * 60 * 1000; var STORAGE_TEST_KEY_PREFIX = 'my-trips-dropdown-test'; var STORAGE_CONTROL_KEY_PREFIX = 'my-trips-dropdown-control'; var STORAGE_SKIP_KEY = 'my-trips-dropdown-skip'; var STORAGE_QUICK_SAVE_KEY = 'my_trips_educational_flyout'; var csrf_token = require('page-model').JS_SECURITY_TOKEN; var servletName = require('page-model').session.pageServlet; var _getRecentLocations = function(onSuccess) { $.ajax({ type: 'GET', url: '/data/1.0/recent/locations', data: { limit: 21 }, beforeSend: function(xhr) { xhr.setRequestHeader('X-Requested-By', csrf_token); }, success: onSuccess }); }; var _getTripLists = function(onSuccess) { $.ajax({ type: 'GET', url: '/data/1.0/trips/list', data: { limit: 3 }, beforeSend: function(xhr) { xhr.setRequestHeader('X-Requested-By', csrf_token); }, success: onSuccess }); }; var _getTripItems = function(onSuccess) { $.ajax({ type: 'GET', url: '/data/1.0/trips/item', data: { limit: 2 }, beforeSend: function(xhr) { xhr.setRequestHeader('X-Requested-By', csrf_token); }, success: onSuccess }); }; var _isTimeWithin2Hours = function(time) { return (new Date().getTime() - time) < (2 * 60 * 60 * 1000); }; var _isTimeWithin30Days = function(time) { return (new Date().getTime() - time) < (30 * 24 * 60 * 60 * 1000); }; var _displayOverlay = function($contentElement) { var overlayMixins = [ new Flyout($contentElement[0], 'global-nav-flyout global-nav-utility my-trips-dropdown-test-flyout'), Position.bottomLeft([-20, -3]), DestroyOnHide, AutoReposition, Fade(Fade.SHORT, true, true) ]; $contentElement.on('click', '.ui_close_x', function() { radio.trigger('hide-overlays', OVERLAY_NAME); }); radio.trigger('show-overlay', OVERLAY_NAME, $('#' + placement.id).find('.masthead-saves')[0], overlayMixins, null); }; var _isOverlayOnPage = function() { // Detect if there is any existing overlay, notification popup or qualaroo survery on the page return $.find('.ui_notification_container').length || $.find('.ui_overlay').length || $.find('#qual_ol').length; }; var _showTest1IfNeeded = function(isInControl, storageKey) { // Current page is POI detail if (!/Hotel_Review|Attraction_Review|Restaurant_Review/.test(servletName)) { return; } _getRecentLocations(function(response) { if (response.data && response.data.length > 2 && _isTimeWithin2Hours(response.data[2].date)) { if (_isOverlayOnPage()) { Storage.set(STORAGE_SKIP_KEY, true); return; } if (!isInControl) { _displayOverlay($testEl); } Storage.set(storageKey, true); Tracking.trackEventOnPage(storageKey, "flyout_shown", servletName + "|recents_" + response.data.length, 0, false); } }); }; var _showTest2IfNeeded = function(isInControl, storageKey) { _getRecentLocations(function(response) { if (response.data && response.data.length >= 2 && !_isTimeWithin2Hours(response.data[1].date)) { if (_isOverlayOnPage()) { Storage.set(STORAGE_SKIP_KEY, true); return; } if (!isInControl) { var message = DustRenderer('saves_masthead_dropdown_test2_string', {numOfItems: response.data.length}); $testEl.find('.test-content').html(message); _displayOverlay($testEl); } Storage.set(storageKey, true); Tracking.trackEventOnPage(storageKey, "flyout_shown", servletName + "|recents_" + response.data.length, 0, false); } }); }; var _showTest3IfNeeded = function(isInControl, storageKey) { if (servletName === 'Hotel_Review') { return; } _getRecentLocations(function(response) { if (response.data && response.data.length >= 2 && !_isTimeWithin2Hours(response.data[1].date)) { var openMyTripsIfNeeded = function(isInControl, storageKey) { if (_isOverlayOnPage()) { Storage.set(STORAGE_SKIP_KEY, true); return; } Storage.set(storageKey, true); if (!isInControl) { // Tracking for test group is fired in the "My trips" dropdown radio.trigger('run-my-trips-test-3'); } else { Tracking.trackEventOnPage(storageKey, "flyout_shown", servletName + "|recents_" + response.data.length, 0, false); } }; if (require('page-model').session.user_id) { _getTripLists(function(response) { if (!response.data || response.data.length == 0) { openMyTripsIfNeeded(isInControl, storageKey); } }); } else { openMyTripsIfNeeded(isInControl, storageKey); } } }); }; var _showTestFlyout = function() { setTimeout(function() { if (Storage.has(STORAGE_SKIP_KEY)) { return; } if ($root.find('.test-container')) { var isTAReferrer = $root.find('.test-container').attr('data-is-ta-referrer'); } if ($testEl.length) { var testVersion = $testEl.attr('data-test-version'); var storageKey = STORAGE_TEST_KEY_PREFIX + testVersion; // Attempt to show the test flyout base on test version if (testVersion == '1' && !Storage.has(storageKey)) { _showTest1IfNeeded(false, storageKey); } else if (testVersion == '2' && !isTAReferrer && !Storage.has(storageKey)) { _showTest2IfNeeded(false, storageKey); } else if (testVersion == '3' && !isTAReferrer && !Storage.has(storageKey)) { _showTest3IfNeeded(false, storageKey); } } else if ($controlEl.length) { // The user could have seen overlay if he/she in test group if (!Storage.has(STORAGE_CONTROL_KEY_PREFIX + '1')) { _showTest1IfNeeded(true, STORAGE_CONTROL_KEY_PREFIX + '1'); } if (!Storage.has(STORAGE_CONTROL_KEY_PREFIX + '2') && !isTAReferrer) { _showTest2IfNeeded(true, STORAGE_CONTROL_KEY_PREFIX + '2'); } if (!Storage.has(STORAGE_CONTROL_KEY_PREFIX + '3') && !isTAReferrer) { _showTest3IfNeeded(true, STORAGE_CONTROL_KEY_PREFIX + '3'); } } }, 800); }; var _showQuickSaveFlyout = function() { setTimeout(function() { if (!_isOverlayOnPage() && $quickSaveEl.length > 0 && Storage.has(STORAGE_QUICK_SAVE_KEY) && !Storage.get(STORAGE_QUICK_SAVE_KEY) && api.scrollTop() == 0) { _displayOverlay($quickSaveEl); Storage.set(STORAGE_QUICK_SAVE_KEY, true); Tracking.trackEventOnPage(STORAGE_QUICK_SAVE_KEY, "flyout_shown", servletName, 0, false); } }, 1000); }; radio.on('hide-overlays', function(overlayName){ if (overlayName) { overlays[overlayName] && overlays[overlayName].hide('hide-overlay') && (overlays[overlayName] = null); } else { oldOverlay && oldOverlay.hide('replace-el'); } }); radio.on('show-overlay', function(overlayName, sourceEl, mixins, onSuccess) { oldOverlay && oldOverlay.hide('new-overlay'); var reqs = ['trjs!overlays/Overlay']; require(reqs, function(Overlay) { var overlay = new Overlay(sourceEl, mixins); overlay.domParent = globalNavMenus.find('.global-nav-overlays-container')[0]; overlay.show(); onSuccess && onSuccess(overlay); oldOverlay = overlay; overlayName && (overlays[overlayName] = overlay); }); }); radio.on('run-quick-save-test', function() { if (Storage.has(STORAGE_QUICK_SAVE_KEY)) { return; } _getTripItems(function(response) { if (response.data && (response.data.length <= 1 || !_isTimeWithin30Days(response.data[1].date))) { // Run the test if user hasn't saved in 30 days Storage.set(STORAGE_QUICK_SAVE_KEY, false); _showQuickSaveFlyout(); } }); }); if (Storage.enabled) { if (document.readyState === 'complete') { _showQuickSaveFlyout(); } else { $(window).ready(_showQuickSaveFlyout); } } }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'common_atf_header_bl','handlers',['handlers']); define(['widget', 'vanillajs', 'ta/common/Flyout', 'ta/Core/TA.Record', 'ta/util/Link', 'ta/Core/TA.Event', 'overlays/uiOverlay', 'ta/maps/opener'], function (widget, vanillajs, taFlyout, taRecord, taLink, taEvent, uiOverlay, mapsOpener) { var dataElem = document.querySelector('.blRow'); var long_address_event = 'bl_contact_long_address'; var email_event = 'bl_contact_email'; function _onWebLinkClicked(event, target) { if (!dataElem) { return; } var locId = dataElem.getAttribute('data-locid'); var targetHref = target.getAttribute('data-ahref'); var trackingKey = target.getAttribute('data-trackingkey') || 'URL_HOTEL'; var trackingEventName = target.getAttribute('data-eventname') || 'bl_contact_website'; var options = { 'aHref': targetHref, 'isAsdf': true, 'detailId': locId, 'newTab': true }; taLink.targetBlank(event, target, options); _fireTracking(target, trackingKey); // ADS-3384 fire event to track through remarketing store taEvent.fireEvent("onBLClick", event, locId); var ctx = { location_id: locId, bl_website: targetHref, bl_tracking_key: trackingKey }; taRecord.trackActionWithJson(trackingEventName, ctx); } function _onEmailClicked(event, target, encodedEmailAddress) { if (!dataElem) { return; } var locId = dataElem.getAttribute('data-locid'); var context = dataElem.getAttribute('data-context'); _fireTracking(target, "EMAIL"); var ctx = { location_id: locId }; taRecord.trackActionWithJson(email_event, ctx); if (encodedEmailAddress && (context === 'Attraction_Review')) { // mailto for /AR var decodedEmailAddress = ta.util.decoder.base64Decoder(encodedEmailAddress); window.location = 'mailto:' + decodedEmailAddress; } else { // show flyout for /HR taFlyout.showEmailHotelOverlay(locId, 'false', '' , ''); } } function _onMenuClicked(event, target) { _fireScrollEvents('TABS_MENU'); _fireTracking(target,"MENU"); } function _onAddressHovered(event, target) { if (target && target.scrollWidth > target.offsetWidth) { uiOverlay(event, target); } var ctx = { location_id: dataElem.getAttribute('data-locid') }; taRecord.trackImpressionWithJson(long_address_event, ctx); } function _onAddressClicked(event, target) { var mapOptions = {customFilters:[]}; var mapFilters = target.getAttribute('data-mapFilters'); mapFilters && (mapOptions.customFilters = mapFilters.split(',')); mapsOpener.open(2, null, null, mapOptions); taRecord.trackEventOnPage('BusinessListings', 'click', 'address'); var ctx = { location_id: dataElem.getAttribute('data-locid') }; taRecord.trackActionWithJson(long_address_event, ctx); } function _fireTracking(target, contactType) { var gaContext = dataElem.getAttribute('data-context'); var locId = dataElem.getAttribute('data-locid'); var column = target.getAttribute('data-column'); var gaAction = contactType+"|text|" + column + "||"; taRecord.trackEventOnPage(gaContext, gaAction, locId, 0, false); taRecord.trackEventOnPage('BusinessListings', 'BL_CLICK', 'BL_LINKS'); } function _fireScrollEvents(tabId) { var elm = document.getElementById(tabId); taEvent.fireEvent("HRTab_clickTab", elm, 300); //Event for /HR taEvent.fireEvent("TabHeader_clickTab", elm, 300); //Event for /R_R and /A_R } return { onAddressHovered: _onAddressHovered, onAddressClicked: _onAddressClicked, onWebLinkClicked: _onWebLinkClicked, onEmailClicked: _onEmailClicked, onMenuClicked: _onMenuClicked }; }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'datepickers_datepicker_tooltip','handlers',['handlers']); define([ 'widget', 'vanillajs', 'utils/localstorage', 'overlays/Overlay', 'overlays/position', 'mixins/page-dates/default-dates', 'overlays/styles/popover', 'overlays/options/repositionOnEvent', 'overlays/options/delayedCloseOnDocClick', 'overlays/options/closeOnSourceClick' ], function( widget, vanilla, localstorage, Overlay, Position, DefaultDates, Popover, RepositionOnEvent, DelayedCloseOnDocClick, CloseOnSourceClick ) { var _DELAY_TIME = 3000; // 3 seconds var _overlay = null; var _hasPopped = false; var _tooltipOptions = widget.element.querySelector(".tooltip_options"); var _delayOpen = _tooltipOptions && _tooltipOptions.getAttribute("data-delayOpen"); var _showOverlay = function (source) { if (_hasPopped || localstorage.get("datepickerTooltipHasPopped")) { return; } if (!_overlay) { var contents = widget.element.querySelector('.overlay_contents'); if (contents) { var direction = _tooltipOptions && _tooltipOptions.getAttribute("data-direction"); var positionDir; switch (direction) { case "left": positionDir = Position.left(); break; case "right": positionDir = Position.right(); break; case "above": positionDir = Position.above(); break; case "below": default: positionDir = Position.below(); break; } if (_delayOpen) { _overlay = new Overlay(source, [ Popover && Popover(source, direction, widget.element.className + " small", null, widget.element.outerHTML), positionDir, RepositionOnEvent(window, ['resize']), CloseOnSourceClick, DelayedCloseOnDocClick(_DELAY_TIME) ]); } else { _overlay = new Overlay(source, [ Popover && Popover(source, direction, widget.element.className + " dark small", null, widget.element.outerHTML), positionDir, RepositionOnEvent(window, ['resize']), CloseOnSourceClick ]); } } } if (_overlay) { _hasPopped = true; localstorage.set("datepickerTooltipHasPopped", true); if (_delayOpen) { setTimeout(function(){ require(['trjs!ta/Core/TA.Record'], function(taRecord) { taRecord.trackEventOnPage("DATEPICKER", "Datepicker_tooltip_shown"); }); _overlay.show(widget.element.parentNode); }, _DELAY_TIME); return; } require(['trjs!ta/Core/TA.Record'], function(taRecord) { taRecord.trackEventOnPage("DATEPICKER", "Datepicker_tooltip_shown"); }); // if we don't delay opening, we want to close automatically after 6 seconds _overlay.show(); setTimeout(function(){ _overlay.hide(); }, _DELAY_TIME * 2); } }; DefaultDates.on("poppedCalendarDismissed", function(){ widget.require([ 'trcss!src/build/styleguide/ui_overlays/overlays', 'trcss!src/build/styleguide/ui_popovers/ui_popover' ], function(Overlays, Popover){ _showOverlay(widget.element.parentNode); }); }); return { }; }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'global_footer','handlers',['handlers']); define([ 'placement', 'vanillajs', 'utils/ajax' ], function( placement, vanillajs, ajax ) { return { getFullDisclaimerText: function(el){ ajax({ url: "/TAMGFooterAjax", success: function(e) { el.parentElement && (el.parentElement.innerHTML = e); }, data: {'a':'SHOW_FULL_DISCLAIMER'}, evalScripts: true, method:'get' }); } }; }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'homepage_tripadvisor_footer_links','handlers',['deferred/HelpCenterOverlay','handlers']); define([ "widget", 'lib/jquery-amd', "ta/util/Cookie", 'ta/util/ActionRecord' ], function( widget, $, taCookie, Track ) { 'use strict'; // called onclick by the wrapper div function _checkForPid(event) { var target = event ? (event.srcElement || event.target) : null; if (target && target.getAttribute("data-pid")) { taCookie.setPIDCookie(target.getAttribute("data-pid")); } } $(widget.element).on("click", '.js_click[data-id="help_center"]', function(){ var el = this; var url = $(el).data('url'); widget.require(['trjs!deferred/HelpCenterOverlay', 'trcss!src/build/required/help_center_overlay'], function(o) { o.open(el, url); }); }); $(widget.element).on("click", ".footerLink", function(event) { var actionPrefix = "Footer_"; var link = $(this); var action = link.data('trackAction'); if (!action) { return; } var opensNewWindow = ("_blank" == link.attr("target")); if (link.is("a") && !opensNewWindow) { event.preventDefault(); Track.record(actionPrefix + action) .always(function() { window.location = link.attr("href"); }); } else { Track.record(actionPrefix + action); } }); return { checkForPid : _checkForPid }; }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'homepage_footer_pickers','handlers',['handlers']); /* jshint newcap:false */ define([ 'widget', 'lib/jquery-amd', 'ta/Core/TA.Record' ], function( widget, $, taRecord ) { 'use strict'; function _dropdown(evnt, elmt, widgetType, data) { evnt && evnt.stopPropagation(); elmt.onclick = null; widget.require([ 'trjs!styleguide/overlays/Flyout', 'trjs!overlays/support/widgets', 'trjs!overlays/support/remoteWidget', 'trcss!src/build/styleguide/ui_overlays/flyouts' ], function(Flyout, Widget, RemoteWidget) { Flyout(evnt, elmt, Widget(widget), RemoteWidget(widgetType, {}, data)); }); } return { showPos: function _togglePosPickerOverlay(evnt, elmt){ var posDataEl = $(widget.element).find('.point_of_sale_data'); _dropdown( evnt, elmt, 'POS_PICKER', { pageFeature: posDataEl.data('page-feature') || window.pageFeature || '', localeCodes: posDataEl.data('locale-codes') || window.localeCodes || '', relativeUrl: document.location.pathname + (document.location.search||'') + (document.location.hash||'') } ); var currLocale = posDataEl.data('currentLocale'); taRecord.trackEventOnPage('POS_PICKER', 'Open', currLocale); }, showCurrency : function(evnt, elmt){ _dropdown(evnt, elmt, 'CURRENCY_PICKER'); } }; }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'homepage_tripadvisor_horizontal_footer_links','handlers',['handlers']); define(["widget", 'lib/jquery-amd', "ta/popups/CookieSettingsPanel", 'ta/util/ActionRecord'], function(widget, $, cookieSettingsPanel, Track) { 'use strict'; $(widget.element).on('click', '.js_click[data-id="cookie-consent"]', function () { cookieSettingsPanel(); }); $(widget.element).on('click', '.footer_link', function(event) { var elmt = $(this); var actionPrefix = "Footer_"; var action = elmt.data('trackAction'); if (!action) { return; } if (elmt.is('a')) { event.preventDefault(); Track.record(actionPrefix + action) .always(function() { window.location = elmt[0].href; }); } Track.record(actionPrefix + action); }); });});require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'unsupported_browser_messaging','handlers',['handlers']); define(['placement', 'ta/util/ASDF'], function(placement, asdf) { function _openUrl(url) { asdf.asdfPopup(url); } return { openUrl: _openUrl }; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'common_location_content_header','handlers',['handlers']); /** * Private handlers for LocationContentHeaderWidget * @author xli * @since June 2017 */ define(['widget', 'ta/Core/TA.Record'], function(widget, taRecord){ 'use strict'; function _warOnClick() { taRecord.setEvtCookie('Review_Summary', 'write_reivew', '', 0, '/UserReviewEdit'); } function _warOnClickForOwner(locationId, href) { taRecord.setEvtCookie('owner_cta', 'owner_visit_mc_middle', locationId, 0, href); } return { warOnClick: _warOnClick, warOnClickForOwner: _warOnClickForOwner }; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'common_review_point_campaign','handlers',['handlers']); /** * Private handlers for ReviewPointCampaignWidget * @author xli * @since June 2017 */ define(['widget', 'ta/Core/TA.Record', 'vanillajs'], function(widget, taRecord, vanilla){ 'use strict'; function _campaignStickerTracking(campaignName){ if(!campaignName) { return; } taRecord.trackEventOnPage('MileCampaigns', campaignName, 'PointsSticker', 1); } return { campaignStickerTracking: _campaignStickerTracking }; }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'global_nav_geopill','handlers',['deferred/GeoSearch','handlers']); // this file MUST exist in order for the placements system to be able to load // the deferred file. If this file is removed the placement will fail to // initialize. define([], function(){}); });require(['commerce/impression-tracker'],function(impressionTracker){ impressionTracker.onTrackingTreeElement(document.getElementById('octtp_hr_xsell_above_overview')); impressionTracker.onTrackingTreeElement(document.getElementById('octtp_hr_xsell_below_overview')); impressionTracker.onTrackingTreeElement(document.getElementById('octtp_location_nearby_hotels')); impressionTracker.onTrackingTreeElement(document.getElementById('octtp_hr_xsell_below_review')); }); require(['ta/p13n/placements','ta/page','$prp/unsupported_browser_messaging/handlers'], function(placements, impl) { window.ta.plc_unsupported_browser_messaging_0_handlers = placements.load('unsupported_browser_messaging','handlers.js', { 'name': 'unsupported_browser_messaging', 'occurrence': 0, 'id': 'taplc_unsupported_browser_messaging_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav/handlers'], function(placements, impl) { window.ta.plc_global_nav_0_handlers = placements.load('global_nav','handlers.js', { 'name': 'global_nav', 'occurrence': 0, 'id': 'taplc_global_nav_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["deferred/lateHandlers","handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_action_cart/handlers'], function(placements, impl) { window.ta.plc_global_nav_action_cart_0_handlers = placements.load('global_nav_action_cart','handlers.js', { 'name': 'global_nav_action_cart', 'occurrence': 0, 'id': 'taplc_global_nav_action_cart_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_action_trips/handlers'], function(placements, impl) { window.ta.plc_global_nav_action_trips_0_handlers = placements.load('global_nav_action_trips','handlers.js', { 'name': 'global_nav_action_trips', 'occurrence': 0, 'id': 'taplc_global_nav_action_trips_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_action_profile/handlers'], function(placements, impl) { window.ta.plc_global_nav_action_profile_0_handlers = placements.load('global_nav_action_profile','handlers.js', { 'name': 'global_nav_action_profile', 'occurrence': 0, 'id': 'taplc_global_nav_action_profile_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/masthead_search/handlers'], function(placements, impl) { window.ta.plc_masthead_search_0_handlers = placements.load('masthead_search','handlers.js', { 'name': 'masthead_search', 'occurrence': 0, 'id': 'taplc_masthead_search_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"typeahead_to_store":{"typeahead_new_location_label":"ตำแหน่งที่ตั้งใหม่","typeahead_divClasses":null,"typeahead.aliases.travel_forums":["ฟอรั่ม","ฟอรั่ม","ฟอรั่มจากนักท่องเที่ยว","ที่แสดงความคิดเห็นจากนักท่องเที่ยว"],"typeahead.aliases.travel_guides":["คู่มือ","คู่มือท่องเที่ยวในเมือง"],"typeahead.aliases.flight_reviews":["รีวิวเที่ยวบิน","รีวิวสายการบิน"],"typeahead.aliases.vacation_rentals":["การเช่าบ้านพักตากอากาศ","การเช่าบ้านพักตากอากาศ","Airbnb","บ้านพักตากอากาศให้เช่า","บ้านพักตากอากาศให้เช่า"],"typeahead_throttle_requests":"true","typeahead.aliases.flights":["เที่ยวบิน","เที่ยวบิน","เที่ยวบินไปยัง","เที่ยวบินไปยัง","เที่ยวบินตรง","เที่ยวบินชั้นธุรกิจ","เที่ยวบินขากลับ","เที่ยวบินจากสายการบิน","เที่ยวบิน","เที่ยวบินราคาถูก","เที่ยวบินจาก","เที่ยวบินที่ถูกที่สุด","เฉพาะเที่ยวบิน","เที่ยวบินเที่ยวเดียว","เที่ยวบินตรง","เที่ยวบินในประเทศ","ราคาตั๋วเครื่องบิน","เที่ยวบินราคาถูกไปยัง","เที่ยวบินไปยัง","เที่ยวบินจากสายการบินไปยัง","เที่ยวบินชั้นธุรกิจไปยัง","เที่ยวบินที่ถูกที่สุดไปยัง","เที่ยวบินตรงไปยัง","เที่ยวบินในประเทศไปยัง","เที่ยวบินตรงไปยัง","เที่ยวบินเที่ยวเดียวไปยัง","ราคาตั๋วเครื่องบิน","ราคาตั๋วเครื่องบิน","ราคาตั๋วเครื่องบิน","ราคาตั๋วเครื่องบินไปยัง","ราคาตั๋วเครื่องบินไปยัง","ราคาตั๋วเครื่องบินไปยัง","ราคาตั๋วเครื่องบินไปยัง"],"typeahead_moved_label":"ย้ายแล้ว","typeahead_dual_search_options":{"geoID":1028722,"bypassSearch":true,"staticTypeAheadOptions":{"minChars":3,"defaultValue":"ค้นหา","injectNewLocation":true,"typeahead1_5":true,"geoBoostFix":true},"debug":false,"navSearchTypeAheadEnabled":true,"isMobileWeb":false,"geoInfo":{"geoId":1028722,"geoName":"Port de Pollenca","parentName":"สเปน","shortParentName":"สเปน","categories":{"GEO":{"url":"/Tourism-g1028722-Port_de_Pollenca_Majorca_Balearic_Islands-Vacations.html"},"HOTEL":{"url":"/Hotels-g1028722-Port_de_Pollenca_Majorca_Balearic_Islands-Hotels.html"},"ATTRACTION":{"url":"/Attractions-g1028722-Activities-Port_de_Pollenca_Majorca_Balearic_Islands.html"},"EATERY":{"url":"/Restaurants-g1028722-Port_de_Pollenca_Majorca_Balearic_Islands.html"},"FLIGHTS_TO":{"url":"/Flights-g1028722-Port_de_Pollenca_Majorca_Balearic_Islands-Cheap_Discount_Airfares.html"}}}},"typeahead_closed_label":"ปิด","typeahead.scoped.all_of_trip":"ทั่วโลก","typeahead_attraction_activity_search":"false","typeahead.aliases.hotels":["โรงแรม","โรงแรม","ที่พัก","ที่พัก","ที่พัก","ที่พัก","ที่พัก","รีวิวโรงแรม","โรงแรมและโมเตล","โรงแรมที่ดีที่สุด","สถานที่พักที่ดีที่สุด","ที่พักที่ดีที่สุด","โรงแรมและโมเตลที่ดีที่สุด","ที่พัก","สถานที่พัก","โรงแรมยอดนิยม","สถานที่พักยอดนิยม","ที่พักยอดนิยม","โรงแรมและโมเตลยอดนิยม","โรงแรม 10 อันดับสูงสุด","สถานที่พัก 10 อันดับสูงสุด","ที่พัก 10 อันดับสูงสุด","โรงแรมและโมเตล 10 อันดับสูงสุด"],"typeahead.aliases.things_to_do":["สถานที่ท่องเที่ยว","กิจกรรมน่าสนใจ","สถานที่ท่องเที่ยว","กิจกรรม","กิจกรรม","การเที่ยวชมทิวทัศน์","สถานที่ท่องเที่ยว","สถานที่ท่องเที่ยว","กิจกรรม","สถานที่ท่องเที่ยว","สิ่งที่ควรเยี่ยมชม","ที่ที่ควรไป","ที่ที่ควรเที่ยว","สถานที่ท่องเที่ยวที่ดีที่สุด","กิจกรรมน่าสนใจที่ดีที่สุด","สถานที่ท่องเที่ยวที่ดีที่สุด","การเที่ยวชมที่ดีที่สุด","สถานที่ท่องเที่ยวยอดนิยม","กิจกรรมน่าสนใจยอดนิยม","สถานที่ท่องเที่ยวยอดนิยม","การเที่ยวชมยอดนิยม","สถานที่ท่องเที่ยว 10 อันดับสูงสุด","กิจกรรมน่าสนใจ 10 อันดับสูงสุด","สถานที่ท่องเที่ยว 10 อันดับสูงสุด","การเที่ยวชม 10 อันดับสูงสุด"],"typeahead.aliases.restaurants":["อาหาร","ที่กิน","ภัตตาคาร","บริการอาหาร","ร้านอาหาร","ร้านอาหาร","สถานที่กิน","ร้านอาหาร","ที่กิน","สิ่งที่ควรกิน","ร้านอาหารที่ดีที่สุด","สถานที่กินที่ดีที่สุด","อาหารที่ดีที่สุด","ห้องอาหารที่ดีที่สุด","ร้านอาหารยอดนิยม","สถานที่กินยอดนิยม","อาหารยอดนิยม","ห้องอาหารยอดนิยม","ร้านอาหาร 10 อันดับสูงสุด","สถานที่กิน 10 อันดับสูงสุด","อาหาร 10 อันดับสูงสุด","ห้องอาหาร 10 อันดับสูงสุด"],"typeahead.searchMore.v2":"ค้นหาคำว่า \"%\"","typeahead.searchSessionId":"0C369F20BE8DB2C87765FE1E87C2E2581511415962669ssid"}}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_links/handlers'], function(placements, impl) { window.ta.plc_global_nav_links_0_handlers = placements.load('global_nav_links','handlers.js', { 'name': 'global_nav_links', 'occurrence': 0, 'id': 'taplc_global_nav_links_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_geopill/handlers'], function(placements, impl) { window.ta.plc_global_nav_geopill_0_handlers = placements.load('global_nav_geopill','handlers.js', { 'name': 'global_nav_geopill', 'occurrence': 0, 'id': 'taplc_global_nav_geopill_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["deferred/GeoSearch","handlers"], 'params': {"searchSessionId":"0C369F20BE8DB2C87765FE1E87C2E2581511415962752ssid"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/trip_planner_breadcrumbs/handlers'], function(placements, impl) { window.ta.plc_trip_planner_breadcrumbs_0_handlers = placements.load('trip_planner_breadcrumbs','handlers.js', { 'name': 'trip_planner_breadcrumbs', 'occurrence': 0, 'id': 'taplc_trip_planner_breadcrumbs_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_detail_header/handlers'], function(placements, impl) { window.ta.plc_location_detail_header_hotels_0_handlers = placements.load('location_detail_header','handlers.js', { 'name': 'location_detail_header:hotels', 'occurrence': 0, 'id': 'taplc_location_detail_header_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"featAnimPortalUrl":"https://www.tripadvisor.com/blog/animal-welfare-education-portal/","isHotelReview":true,"animTrackingPageProperty":"Attractions","animTrackingPageActionPrefix":"Hotel_ReviewRedesign","animalAttraction":false}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/saves_cta_highlights/handlers'], function(placements, impl) { window.ta.plc_saves_cta_highlights_0_handlers = placements.load('saves_cta_highlights','handlers.js', { 'name': 'saves_cta_highlights', 'occurrence': 0, 'id': 'taplc_saves_cta_highlights_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hsx_special_messaging/handlers'], function(placements, impl) { window.ta.plc_hsx_special_messaging_HotelReview_0_handlers = placements.load('hsx_special_messaging','handlers.js', { 'name': 'hsx_special_messaging:HotelReview', 'occurrence': 0, 'id': 'taplc_hsx_special_messaging_HotelReview_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_atf_north_star_traveler_info_nostalgic/handlers'], function(placements, impl) { window.ta.plc_hr_atf_north_star_traveler_info_nostalgic_0_handlers = placements.load('hr_atf_north_star_traveler_info_nostalgic','handlers.js', { 'name': 'hr_atf_north_star_traveler_info_nostalgic', 'occurrence': 0, 'id': 'taplc_hr_atf_north_star_traveler_info_nostalgic_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_north_star_v1_meta/handlers'], function(placements, impl) { window.ta.plc_hr_north_star_v1_meta_0_handlers = placements.load('hr_north_star_v1_meta','handlers.js', { 'name': 'hr_north_star_v1_meta', 'occurrence': 0, 'id': 'taplc_hr_north_star_v1_meta_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_persistent_tabs_header/handlers'], function(placements, impl) { window.ta.plc_location_persistent_tabs_header_0_handlers = placements.load('location_persistent_tabs_header','handlers.js', { 'name': 'location_persistent_tabs_header', 'occurrence': 0, 'id': 'taplc_location_persistent_tabs_header_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"dealInactiveClass":"book_now","dealInactiveTab":"TABS_ROOMS","eventPrefix":"hr"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_top_right_cta_first_chevron_hsx/handlers'], function(placements, impl) { window.ta.plc_hr_top_right_cta_first_chevron_hsx_0_handlers = placements.load('hr_top_right_cta_first_chevron_hsx','handlers.js', { 'name': 'hr_top_right_cta_first_chevron_hsx', 'occurrence': 0, 'id': 'taplc_hr_top_right_cta_first_chevron_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_similar_hotels_above_overview/handlers'], function(placements, impl) { window.ta.plc_hr_btf_similar_hotels_above_overview_0_handlers = placements.load('hr_btf_similar_hotels_above_overview','handlers.js', { 'name': 'hr_btf_similar_hotels_above_overview', 'occurrence': 0, 'id': 'taplc_hr_btf_similar_hotels_above_overview_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"trackingName":"xsell_hr_abovereviews_BV","pivotPriority":"1","crossSellPivotType":"similar_hotels","noCommerce":false,"geoId":187462,"maxRequests":12,"geoPopIndexCount":1079}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hotel_detail_overview_responsive/handlers'], function(placements, impl) { window.ta.plc_hotel_detail_overview_responsive_0_handlers = placements.load('hotel_detail_overview_responsive','handlers.js', { 'name': 'hotel_detail_overview_responsive', 'occurrence': 0, 'id': 'taplc_hotel_detail_overview_responsive_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/ibex_room_details_lightbox/room_details_lightbox'], function(placements, impl) { window.ta.plc_ibex_room_details_lightbox_0_room_details_lightbox = placements.load('ibex_room_details_lightbox','room_details_lightbox.js', { 'name': 'ibex_room_details_lightbox', 'occurrence': 0, 'id': 'taplc_ibex_room_details_lightbox_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["trcss!deferred/book_now_button","trcss!deferred/book_on_header","trcss!deferred/room_details_lightbox","handlers","room_details_lightbox"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/ibex_room_details_lightbox/handlers'], function(placements, impl) { window.ta.plc_ibex_room_details_lightbox_0_handlers = placements.load('ibex_room_details_lightbox','handlers.js', { 'name': 'ibex_room_details_lightbox', 'occurrence': 0, 'id': 'taplc_ibex_room_details_lightbox_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["trcss!deferred/book_now_button","trcss!deferred/book_on_header","trcss!deferred/room_details_lightbox","handlers","room_details_lightbox"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_similar_hotels_below_overview/handlers'], function(placements, impl) { window.ta.plc_hr_btf_similar_hotels_below_overview_0_handlers = placements.load('hr_btf_similar_hotels_below_overview','handlers.js', { 'name': 'hr_btf_similar_hotels_below_overview', 'occurrence': 0, 'id': 'taplc_hr_btf_similar_hotels_below_overview_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"trackingName":"xsell_hr_abovereviews_BV","pivotPriority":"2","crossSellPivotType":"similar_hotels","noCommerce":false,"geoId":187462,"maxRequests":12,"geoPopIndexCount":1079}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/tooltips'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_tooltips = placements.load('hr_inline_room_grid_hsx','tooltips.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/RateVerificationView'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_RateVerificationView = placements.load('hr_inline_room_grid_hsx','RateVerificationView.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/bookingflow'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_bookingflow = placements.load('hr_inline_room_grid_hsx','bookingflow.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/pollingparamsfactory'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_pollingparamsfactory = placements.load('hr_inline_room_grid_hsx','pollingparamsfactory.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/pollingdatautils'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_pollingdatautils = placements.load('hr_inline_room_grid_hsx','pollingdatautils.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/handlers'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_handlers = placements.load('hr_inline_room_grid_hsx','handlers.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/PollingInitiator'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_PollingInitiator = placements.load('hr_inline_room_grid_hsx','PollingInitiator.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/RateVerificationController'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_RateVerificationController = placements.load('hr_inline_room_grid_hsx','RateVerificationController.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/RoomListController'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_RoomListController = placements.load('hr_inline_room_grid_hsx','RoomListController.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/roomlistmodel'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_roomlistmodel = placements.load('hr_inline_room_grid_hsx','roomlistmodel.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/viewcontroller'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_viewcontroller = placements.load('hr_inline_room_grid_hsx','viewcontroller.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_inline_room_grid_hsx/roomlistconfig'], function(placements, impl) { window.ta.plc_hr_inline_room_grid_hsx_0_roomlistconfig = placements.load('hr_inline_room_grid_hsx','roomlistconfig.js', { 'name': 'hr_inline_room_grid_hsx', 'occurrence': 0, 'id': 'taplc_hr_inline_room_grid_hsx_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["PollingInitiator","RateVerificationController","RateVerificationView","RoomListController","bookingflow","handlers","pollingdatautils","pollingparamsfactory","roomlistconfig","roomlistmodel","tooltips","viewcontroller"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_detail_two_column/handlers'], function(placements, impl) { window.ta.plc_location_detail_two_column_top_hotels_0_handlers = placements.load('location_detail_two_column','handlers.js', { 'name': 'location_detail_two_column:top_hotels', 'occurrence': 0, 'id': 'taplc_location_detail_two_column_top_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_reviews_container/handlers'], function(placements, impl) { window.ta.plc_location_reviews_container_hotels_0_handlers = placements.load('location_reviews_container','handlers.js', { 'name': 'location_reviews_container:hotels', 'occurrence': 0, 'id': 'taplc_location_reviews_container_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_review_filter_controls/handlers'], function(placements, impl) { window.ta.plc_location_review_filter_controls_hotels_0_handlers = placements.load('location_review_filter_controls','handlers.js', { 'name': 'location_review_filter_controls:hotels', 'occurrence': 0, 'id': 'taplc_location_review_filter_controls_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_review_keyword_search/handlers'], function(placements, impl) { window.ta.plc_location_review_keyword_search_hotels_0_handlers = placements.load('location_review_keyword_search','handlers.js', { 'name': 'location_review_keyword_search:hotels', 'occurrence': 0, 'id': 'taplc_location_review_keyword_search_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_reviews_list/handlers'], function(placements, impl) { window.ta.plc_location_reviews_list_hotels_0_handlers = placements.load('location_reviews_list','handlers.js', { 'name': 'location_reviews_list:hotels', 'occurrence': 0, 'id': 'taplc_location_reviews_list_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/prodp13n_hr_sur_reviews_no_results/handlers'], function(placements, impl) { window.ta.plc_prodp13n_hr_sur_reviews_no_results_1_handlers = placements.load('prodp13n_hr_sur_reviews_no_results','handlers.js', { 'name': 'prodp13n_hr_sur_reviews_no_results', 'occurrence': 1, 'id': 'taplc_prodp13n_hr_sur_reviews_no_results_1', 'location_id': 281945, 'servletName': 'Hotel_Review','servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_similar_hotels/handlers'], function(placements, impl) { window.ta.plc_hr_btf_similar_hotels_0_handlers = placements.load('hr_btf_similar_hotels','handlers.js', { 'name': 'hr_btf_similar_hotels', 'occurrence': 0, 'id': 'taplc_hr_btf_similar_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"trackingName":"xsell_hr_belowreviews_BV","noCommerce":false,"maxRequests":12,"geoPopIndexCount":1079,"geoId":187462}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_north_star_about/handlers'], function(placements, impl) { window.ta.plc_hr_btf_north_star_about_0_handlers = placements.load('hr_btf_north_star_about','handlers.js', { 'name': 'hr_btf_north_star_about', 'occurrence': 0, 'id': 'taplc_hr_btf_north_star_about_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_north_star_photos/handlers'], function(placements, impl) { window.ta.plc_hr_btf_north_star_photos_0_handlers = placements.load('hr_btf_north_star_photos','handlers.js', { 'name': 'hr_btf_north_star_photos', 'occurrence': 0, 'id': 'taplc_hr_btf_north_star_photos_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_detail_two_column/handlers'], function(placements, impl) { window.ta.plc_location_detail_two_column_bottom_hotels_0_handlers = placements.load('location_detail_two_column','handlers.js', { 'name': 'location_detail_two_column:bottom_hotels', 'occurrence': 0, 'id': 'taplc_location_detail_two_column_bottom_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_nearby/handlers'], function(placements, impl) { window.ta.plc_location_nearby_hotels_0_handlers = placements.load('location_nearby','handlers.js', { 'name': 'location_nearby:hotels', 'occurrence': 0, 'id': 'taplc_location_nearby_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["trcss!deferred/placement","handlers"], 'params': {"trackingName":"location_nearby:hotels_BV","noCommerce":false,"geoId":187462,"maxRequests":12,"geoPopIndexCount":1079}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/location_qa/handlers'], function(placements, impl) { window.ta.plc_location_qa_hotels_0_handlers = placements.load('location_qa','handlers.js', { 'name': 'location_qa:hotels', 'occurrence': 0, 'id': 'taplc_location_qa_hotels_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_north_star_room_tips/handlers'], function(placements, impl) { window.ta.plc_hr_btf_north_star_room_tips_0_handlers = placements.load('hr_btf_north_star_room_tips','handlers.js', { 'name': 'hr_btf_north_star_room_tips', 'occurrence': 0, 'id': 'taplc_hr_btf_north_star_room_tips_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hr_btf_north_star_claim_listing/handlers'], function(placements, impl) { window.ta.plc_hr_btf_north_star_claim_listing_0_handlers = placements.load('hr_btf_north_star_claim_listing','handlers.js', { 'name': 'hr_btf_north_star_claim_listing', 'occurrence': 0, 'id': 'taplc_hr_btf_north_star_claim_listing_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/browser_mode_tracking/handlers'], function(placements, impl) { window.ta.plc_browser_mode_tracking_0_handlers = placements.load('browser_mode_tracking','handlers.js', { 'name': 'browser_mode_tracking', 'occurrence': 0, 'id': 'taplc_browser_mode_tracking_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/qualtrics_survey/handlers'], function(placements, impl) { window.ta.plc_qualtrics_survey_0_handlers = placements.load('qualtrics_survey','handlers.js', { 'name': 'qualtrics_survey', 'occurrence': 0, 'id': 'taplc_qualtrics_survey_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_footer/handlers'], function(placements, impl) { window.ta.plc_global_footer_0_handlers = placements.load('global_footer','handlers.js', { 'name': 'global_footer', 'occurrence': 0, 'id': 'taplc_global_footer_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/safari_private_tracking/handlers'], function(placements, impl) { window.ta.plc_safari_private_tracking_0_handlers = placements.load('safari_private_tracking','handlers.js', { 'name': 'safari_private_tracking', 'occurrence': 0, 'id': 'taplc_safari_private_tracking_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/h_hr_refresh_rates_prompt/handlers'], function(placements, impl) { window.ta.plc_h_hr_refresh_rates_prompt_0_handlers = placements.load('h_hr_refresh_rates_prompt','handlers.js', { 'name': 'h_hr_refresh_rates_prompt', 'occurrence': 0, 'id': 'taplc_h_hr_refresh_rates_prompt_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["deferred/popper","trcss!deferred/prompt","handlers"], 'params': {"scroll_to_top":"true"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/h_hr_refresh_rates_prompt/handlers'], function(placements, impl) { window.ta.plc_h_hr_refresh_rates_prompt_tracking_0_handlers = placements.load('h_hr_refresh_rates_prompt','handlers.js', { 'name': 'h_hr_refresh_rates_prompt:tracking', 'occurrence': 0, 'id': 'taplc_h_hr_refresh_rates_prompt_tracking_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["deferred/popper","trcss!deferred/prompt","handlers"], 'params': {"tracking_only":"true"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/enable_cpm_content/handlers'], function(placements, impl) { window.ta.plc_enable_cpm_content_0_handlers = placements.load('enable_cpm_content','handlers.js', { 'name': 'enable_cpm_content', 'occurrence': 0, 'id': 'taplc_enable_cpm_content_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/maps_meta_block/handlers'], function(placements, impl) { window.ta.plc_maps_meta_block_0_handlers = placements.load('maps_meta_block','handlers.js', { 'name': 'maps_meta_block', 'occurrence': 0, 'id': 'taplc_maps_meta_block_0', 'location_id': 281945, 'servletClass': 'com.TripResearch.servlet.accommodation.AccommodationDetail', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/prwidgets', 'ta/page'], function(prwidgets) { prwidgets.initWidgets(document); }); /* ]]> */