G: Catering event - Picture of Oyster Boy, Toronto - TripAdvisor
Submitted by Anonymous (not verified) on Sun, 01/06/2019 - 09:00
State:
Processed
Rank:
13
Size:
383415
Raw Content:
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel='stylesheet' type='text/css' href='https://static.tacdn.com/css2/long_lived_global_legacy-v22737519754a.css' data-rup='long_lived_global_legacy'/>
<link rel="icon" id="favicon" href="https://static.tacdn.com/favicon.ico" type="image/x-icon"/>
<link rel="preload" href="https://static.tacdn.com/css2/webfonts/TripAdvisor/TripAdvisor_Regular.woff2?v003.500" as="font" type="font/woff2" crossorigin>
<link rel="mask-icon" sizes="any" href="https://static.tacdn.com/img2/icons/ta_square.svg" color="#00a680"/>
<script type='text/javascript' data-rup='global_error'>!function(){function e(e,t,n,o,i,a){var d={error_script:t,line:n,column:o,ready_state:document.readyState};return s?(require.defined("ta/util/Error")&&require("ta/util/Error").record(i,"error post load:: "+e,a,d,"ERROR",{isglobal:!0}),void r(e,i,"ErrorGlobal")):(f.push({msg:e||"",error:i,evt:a,data:d}),!window.IS_DEBUG)}function r(e,r,t){if(require.defined("@ta/platform.sentry")){var n=require("@ta/platform.sentry")["default"];if(n)if(e&&!r){var o=new Error("Unknown jQuery Error Event"),i=JSON.stringify(e);i.length>200&&(i=i.substring(0,Math.min(i.length,200))+"..."),n.captureException(o,{logger:t,extra:{jQueryEvent:i}})}else n.captureException(r,{logger:t})}}function t(){require(["ta/util/Error"],function(e){for(;f.length;){var t=f.shift();t.msg.match(/(^|[^\w.])ta .*defin/)||(e.record(t.error,"window.onerror:: "+t.msg,t.evt,t.data,"ERROR",{isglobal:!0}),r(t.msg,t.error,"PageLoad"))}s=!0})}function n(){c=null,E=!1,d=l=null}function o(r,t,o,i,a,w){var s=w&&w.target;if(E){if((!d||a&&a.stack)&&(d=a),!u)try{u=arguments.callee}catch(e){}c?s=c:(!s||l&&s==window)&&(s=l),e(r,t,o,i,d,{target:s,callee:u}),n()}else{d=a,E=!0,l=s;try{u=arguments.callee}catch(e){}}}function i(e){e=e||window.event,o(e.message,e.filename,e.lineno,e.colno,e.error||e,e)}function a(e){e=e||window.event,c=e.target||e.srcElement,w&&clearTimeout(w),w=setTimeout(function(){w=0,c=null},1)}var d,l,c,u,w,s=!1,f=[],E=!1;window.onerror=function(e,r,t,n,i){return o(e,r,t,n,i,window.event),!window.IS_DEBUG},window.addEventListener?(window.addEventListener("error",i,!1),window.addEventListener("click",a,!0),window.addEventListener("load",t)):window.attachEvent&&(window.attachEvent("onerror",i),document.attachEvent("onmouseup",a),window.attachEvent("onload",t))}();
!function(){var e,n,t=0,a=5e3;window.uiOverlay=function(l){if(document.readyState in{complete:1,loaded:1}){var i=arguments;require(["trjs!overlays/uiOverlay"],function(e){e.apply(null,i)})}else document.addEventListener&&(e=[].slice.call(arguments),t=(new Date).getTime(),n||(n=!0,document.addEventListener("DOMContentLoaded",function(){Date.now()-t<a&&uiOverlay.apply(null,e)},!1)))}}();
</script>
<script type='text/javascript'>
window.taRollupsAreAsync = true;
</script>
<script>(function(w){
var q={d:[],r:[],c:[],t:[],v:[]};
var r = w.require = function() {q.r.push(arguments);};
r.config = function() {q.c.push(arguments);};
r.defined = r.specified = function() {return false;};
r.taConfig = function() {q.t.push(arguments);};
r.taVer = function(v) {q.v.push(v);};
r.isQ=true;
w.getRequireJSQueue = function() {return q;};
})(window);
</script>
<script type='text/javascript' data-rup='amdearly'>!function(e){function t(e){return"function"==typeof require&&require.defined&&require.defined(e)}function n(e,t,n){t?e[t].apply(e,n):"function"==typeof e&&e.apply(e,n)}function r(){if(u=!0,require.isQ)throw"Fatal error - this page does not have require";if(e.getRequireJSQueue){for(var t=e.getRequireJSQueue();t.d.length>0;)define.apply(e,t.d.shift());for(;t.r.length>0;)require.apply(e,t.r.shift());e.getRequireJSQueue=null}l&&+new Date-i<5e3&&a.apply(e,l)}if(!e||!e.requireCallLast){var l,i,u=!1,a=e.requireCallLast=function(e,r){l=null;var a=[].slice.call(arguments,2);t(e)?n(require(e),r,a):t("trjs")?require(["trjs!"+e],function(e){n(e,r,a)}):u||(i=+new Date,l=[].slice.call(arguments))},c=e.requireCallIfReady=function(n){t(n)&&a.apply(e,arguments)},o=function(t,n,r,l){var i=c;return!r||"click"!==r.type&&"submit"!==r.type||(i=a,r.preventDefault&&r.preventDefault()),l.unshift(n),l.unshift(t),i.apply(e,l),!1};e.remoteModule=function(e,t){return o("remoteModule",null,e,[].slice.call(arguments))},e.requireEvCall=function(e,t,n,r){return e=e.match(/^((?:[^\/]+\/)*[^\/\.]+)\.([^\/]*)?$/),o(e[1],e[2],t,[].slice.call(arguments,1))},e.widgetEvCall=function(e,t,n,r){return o("ta/prwidgets","call",t,[].slice.call(arguments))},e.placementEvCall=function(e,t,n,r,l){return o("ta/p13n/placements","evCall",n,[].slice.call(arguments))},document.addEventListener?document.addEventListener("DOMContentLoaded",r):e.addEventListener?e.addEventListener("load",r):e.attachEvent&&e.attachEvent("onload",r)}}(window);
</script>
<meta http-equiv="imagetoolbar" content="no"/>
<title> Catering event - Picture of Oyster Boy, Toronto - TripAdvisor </title>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache,must-revalidate"/>
<meta http-equiv="expires" content="0"/>
<meta property="og:title" content="Catering event - Picture of Oyster Boy, Toronto - TripAdvisor"/>
<meta property="og:description" content="Oyster Boy, Toronto Picture: Catering event - Check out TripAdvisor members' 51,691 candid photos and videos."/>
<meta property="og:image" content="https://media-cdn.tripadvisor.com/media/photo-s/0e/8f/0b/27/catering-event.jpg"/>
<meta property="og:image:width" content="550"/>
<meta property="og:image:height" content="411"/>
<meta name="keywords" content="Oyster Boy photos, photos of Oyster Boy, Toronto, restaurant pictures, Oyster Boy photo, photographs, fotos, photograph, foto, photos, pictures, images, photo, picture, image"/>
<meta name="description" content="Oyster Boy, Toronto Picture: Catering event - Check out TripAdvisor members' 51,691 candid photos and videos."/>
<link rel="alternate" hreflang="en" href="https://www.tripadvisor.com/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-GB" href="https://www.tripadvisor.co.uk/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-CA" href="https://www.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="fr-CA" href="https://fr.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="it" href="https://www.tripadvisor.it/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="es" href="https://www.tripadvisor.es/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="de" href="https://www.tripadvisor.de/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="fr" href="https://www.tripadvisor.fr/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="ja" href="https://www.tripadvisor.jp/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="zh-Hans" href="https://cn.tripadvisor.com/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-IN" href="https://www.tripadvisor.in/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="sv" href="https://www.tripadvisor.se/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="nl" href="https://www.tripadvisor.nl/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="pt" href="https://www.tripadvisor.com.br/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="tr" href="https://www.tripadvisor.com.tr/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="da" href="https://www.tripadvisor.dk/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="es-MX" href="https://www.tripadvisor.com.mx/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-IE" href="https://www.tripadvisor.ie/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="ar" href="https://ar.tripadvisor.com/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="ar-EG" href="https://www.tripadvisor.com.eg/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="cs" href="https://www.tripadvisor.cz/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="de-AT" href="https://www.tripadvisor.at/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="el" href="https://www.tripadvisor.com.gr/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-AU" href="https://www.tripadvisor.com.au/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-MY" href="https://www.tripadvisor.com.my/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-NZ" href="https://www.tripadvisor.co.nz/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-PH" href="https://www.tripadvisor.com.ph/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-SG" href="https://www.tripadvisor.com.sg/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-ZA" href="https://www.tripadvisor.co.za/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="es-AR" href="https://www.tripadvisor.com.ar/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="es-PE" href="https://www.tripadvisor.com.pe/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="es-VE" href="https://www.tripadvisor.com.ve/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="fi" href="https://www.tripadvisor.fi/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="hu" href="https://www.tripadvisor.co.hu/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="id" href="https://www.tripadvisor.co.id/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="he" href="https://www.tripadvisor.co.il/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="ko" href="https://www.tripadvisor.co.kr/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="nb" href="https://no.tripadvisor.com/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="pt-PT" href="https://www.tripadvisor.pt/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="ru" href="https://www.tripadvisor.ru/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="sk" href="https://www.tripadvisor.sk/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="sr" href="https://www.tripadvisor.rs/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="th" href="https://th.tripadvisor.com/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="vi" href="https://www.tripadvisor.com.vn/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="zh-Hant" href="https://www.tripadvisor.com.tw/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="de-CH" href="https://www.tripadvisor.ch/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="fr-CH" href="https://fr.tripadvisor.ch/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="it-CH" href="https://it.tripadvisor.ch/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="en-HK" href="https://en.tripadvisor.com.hk/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="fr-BE" href="https://fr.tripadvisor.be/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<link rel="alternate" hreflang="zh-hk" href="https://www.tripadvisor.com.hk/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html"/>
<meta property="al:ios:app_name" content="TripAdvisor">
<meta property="al:ios:app_store_id" content="284876795">
<meta property="twitter:app:id:ipad" name="twitter:app:id:ipad" content="284876795">
<meta property="twitter:app:id:iphone" name="twitter:app:id:iphone" content="284876795">
<meta property="al:ios:url" content="tripadvisor://www.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html?m=33762">
<meta property="twitter:app:url:ipad" name="twitter:app:url:ipad" content="tripadvisor://www.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html?m=33762">
<meta property="twitter:app:url:iphone" name="twitter:app:url:iphone" content="tripadvisor://www.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html?m=33762">
<!--trkP:bot_detection-->
<!-- PLACEMENT bot_detection -->
<script type="text/javascript">var taEarlyRoyBattyStatus = 0;var taSecureToken = "TNI1625!ALOekT3XbJEfGYg1u3PvcoUyMC3jb5wnwoCnbpF05A4k1malRayl4SvDO+vZBjhWflrU7K+PNE0t0Pgn9chpf+QOs+WKmSWTwihlVboYxDpSiEv5+hByeMxYXGpQY762vDS7VFRcNgmqZba/wUl6DNn262MNcs7bLPYAYA9Vve9q";(function() {var cookieDomain = ".tripadvisor.ca";var sessionPartition = "-1";try {if (navigator.userAgent.indexOf('MSIE 10.0') < 0) {var val = taSecureToken+",1";val = encodeURIComponent(val);if (cookieDomain) {val += "; domain=" + cookieDomain;}document.cookie = "roybatty="+val+"; path=/";var url="/CookiePingback?early=true";var xhr = null;try {xhr = new XMLHttpRequest();} catch (e1) {try {xhr = new ActiveXObject('MSXML2.XMLHTTP');} catch (e2) {try {xhr = new ActiveXObject('Microsoft.XMLHTTP');} catch (e3) {}}}if (xhr != null) {var seth = function(name, val) {try {xhr.setRequestHeader(name, val)}catch(e){}};xhr.open("POST", url, true);seth('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');seth('X-Requested-With', 'XMLHttpRequest');seth('Accept', 'text/javascript, text/html, application/xml, text/xml, */*');xhr.send('');taEarlyRoyBattyStatus = 2;}} } catch(err) {}})();</script><!--etk-->
<link rel='stylesheet' type='text/css' media='screen, print' href='https://static.tacdn.com/css2/lpdl_2015-en_CA-v21730002096a.css' data-rup='lpdl_2015'/>
<link rel='stylesheet' type='text/css' href='https://static.tacdn.com/components/dist/@ta/social.button.a50460afe1.css'/><link rel='stylesheet' type='text/css' href='https://static.tacdn.com/components/dist/@ta/overlays.pieces.b5e1ceb3bc.css'/><link rel='stylesheet' type='text/css' href='https://static.tacdn.com/components/dist/@ta/overlays.fullscreen-overlay.ac7417ed7b.css'/><link rel='stylesheet' type='text/css' href='https://static.tacdn.com/components/dist/@ta/overlays.modal.2fd838ec62.css'/><link rel='stylesheet' type='text/css' href='https://static.tacdn.com/components/dist/@ta/trips.trip-link.baa3729572.css'/><link rel='stylesheet' type='text/css' href='https://static.tacdn.com/components/dist/@ta/platform.runtime.6f0bd195e4.css'/>
<style type="text/css">
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_info .blDetails {
line-height: 1em;
overflow: visible;
margin: 2px 0 2px;
height: auto;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_info .odcHotel .notLast {
margin-right: 15px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_info .icnLink {
margin-top: 0px;
margin-right: 5px;
overflow: hidden;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_info .icnLink.grayWeb {
margin-top: 0px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_info .icnLink.grayEmail {
margin-top: 0px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 {
position: relative;
z-index: 4;
padding: 24px 0 16px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .taLnk:hover {
text-decoration: underline;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .header_container {
position: relative;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .full_width {
position: relative;
margin: 0 auto;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015.hr_heading .full_width {
width: 983px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015.attractions_heading .full_width {
box-sizing: border-box;
width: 983px;
clear: both;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .heading_name_wrapper {
display: inline-block;
max-width: 870px;
overflow: hidden;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .heading_name {
display: inline-block;
width: 100%;
font: normal 1.5em Arial, Tahoma, "Bitstream Vera Sans", sans-serif;
color: #006699;
word-wrap: break-word;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .heading_height {
position: absolute;
top: 0;
width: 0;
height: 31px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .claimListing {
font-size: 1.3em;
font-weight: normal;
float: right;
margin: 10px 5px 0px 8px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .heading_ratings {
height: 100%;
overflow: hidden;
margin-top: 6px;
line-height: 20px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015.hr_heading .heading_ratings {
font-size: 1.333em;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .heading_ratings .slim_ranking {
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .slim_ranking a {
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .slim_ranking a:hover {
text-decoration: underline;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .with_alt_title {
font-size: 2em;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .with_alt_title .heading_height {
height: 52px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .altHead {
width: 100%;
font-size: .68em;
clear: left;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .coeBadgeDiv {
display: block;
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .coeBadgeDiv .text {
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .glBadgeDiv {
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .glBadgeDiv .greenLeaderLabelLnk {
margin-left: 4px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .glBadgeDiv .greenLeaderImg {
margin-top: 1px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .separator {
position: relative;
margin: 0 23px 4px 0;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .separator:after {
position: absolute;
top: 0;
right: -13px;
width: 0;
height: 20px;
border-right: 1px solid #ddd;
content: "";
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .separator:last-child:after {
display: none;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .star {
margin-top: 2px;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .star.starHover {
cursor: pointer;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .popRanking {
overflow: visible;
margin-bottom: 0;
padding-left: 1px;
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .popRanking a {
color: #00a680;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .popRanking a:hover {
text-decoration: underline;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .header_address .icon {
display: inline-block;
margin: 0 2px 0 0;
vertical-align: text-top;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .header_contact_info {
margin-top: 2px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_item {
position: relative;
margin-right: 21px;
height: 18px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .contact_item:after {
position: absolute;
top: 0;
right: -11px;
width: 0;
height: 20px;
border-right: 1px solid #ddd;
content: "";
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .blCouponPromo {
margin-top: 6px;
overflow: visible;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .bl_details {
height: 100%;
overflow: hidden;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .bl_details .blDetails {
display: inline;
margin-top: 2px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .bl_details .icnLink {
margin-top: 0px;
margin-right: 5px;
overflow: hidden;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .bl_details .icnLink .grayWeb {
margin-top: 0px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .bl_details .icnLink .grayEmail {
margin-top: 0px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .bl_details .icnLink.sprite-grayMapPinSmall {
margin-right: 2px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .icnSO {
margin-right: 5px;
overflow: hidden;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .amenFloat {
display: inline-block;
white-space: nowrap;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .amenFloat .icnWeb {
overflow: hidden;
margin-top: 2px;
margin-right: 5px;
margin-right: 8px !ie;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .amenFloat .amenities {
display: inline;
vertical-align: baseline;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .specialLabel {
padding-right: 12px;
font-weight: bold;
cursor: pointer;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .icnAnouncementRewrite {
margin: -3px 6px 0 0;
float: left;
}
DIV.ppr_rup.ppr_priv_poi_details .tabs_seperator {
height: 1px;
background-color: #e3e3e3;
line-height: 1px;
}
DIV.ppr_rup.ppr_priv_poi_details .starAttributionText {
max-width: 400px;
margin-right: 10px;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .rblock .wrpButton {
padding: 50px 10px 0 0;
}
DIV.ppr_rup.ppr_priv_poi_details .detail_2015 .report_inaccurate {
position: relative;
top: -5px;
left: 20px;
}
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .photoImg { position:relative; width:672px; height:528px; overflow:hidden; background-color:#2c2c2c; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumbImg { margin: 1px 0 0 0; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumblpdl { position:relative; float:left; width:95px; height:90px; margin-left: 1px; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumblpdl:hover { opacity: 0.5; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumblpdl .playOverlay { position: absolute; top: 30px; left: 32px; width: 29px; height: 29px; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumbImg .hoverHighlight { width: 48px; height: 90px; position:relative; float:left; overflow: hidden; text-align: center; background: #00a680; box-sizing: border-box;}
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumbImg .right { width: 47px; margin-left: 1px; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumbImg .arrow { width: 12px; height: 12px; content: ""; border-style: solid; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); border-color: #fff; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumbImg .left .arrow { border-width: 2px 0 0 2px; margin: 38px 0 0 20px; }
DIV.ppr_rup.ppr_priv_lpdl_photo_carousel .viewer .thumbImg .right .arrow { border-width: 0 2px 2px 0; margin: 38px 0 0 12px; }
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .wrapper {
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
height: 500px;
border-top: solid 6px #00a680;
padding: 55px 0;
overflow: hidden;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .hexagon {
position: relative;
background-color: #FFF;
left: -400px;
top: -202px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .hexagon:after {
top: 100%;
width: 0;
border-top: 196px solid #FFF;
content: "";
position: absolute;
border-left: 400px solid transparent;
border-right: 400px solid transparent;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .text {
font-size: 1.6em;
text-align: center;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .btns .ui_button {
background: #00a680;
color: #fff;
border-radius: 3px;
padding: 10px 28px 10px;
font-size: 1.1em;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .btns .ui_icon {
font-size: 1.2em;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .wrapper.v3 {
background: #00a680;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .wrapper.v3 .ollie {
position: relative;
z-index: 100;
margin-top: -100px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .wrapper.v3 .text {
color: #ffffff;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_ss_promo .wrapper.v3 .btns .ui_button {
background: #fff;
color: #00a680;
}
DIV.ppr_rup.ppr_priv_other_recent_reviews .recent_reviews .title { width: 295px; font:normal 400 1.5em Arial,Tahoma,"Bitstream Vera Sans",sans-serif; color:#2c2c2c; text-align: center; padding: 45px 0px 15px 0px; border-bottom: 1px solid #e6e6e6; }
DIV.ppr_rup.ppr_priv_other_recent_reviews .recent_reviews .reviews { padding: 10px 0px 20px 10px; }
DIV.ppr_rup.ppr_priv_other_recent_reviews .recent_reviews .reviews .one_review { padding: 10px 0 10px 0; }
DIV.ppr_rup.ppr_priv_other_recent_reviews .recent_reviews .reviews .snippet { font: italic 1.2em Georgia, Tahoma, "Bitstream Vera Sans", sans-serif; }
DIV.ppr_rup.ppr_priv_other_recent_reviews .recent_reviews .reviews .date { font-family: Arial; font-style: normal; color: #666666; }
DIV.ppr_rup.ppr_priv_other_recent_reviews .recent_reviews .total { padding: 0 0 0 10px; }
DIV.ppr_rup.ppr_priv_resp_hr_atf_meta .metawrap {
border-radius: 0 0 4px 4px;
border-top: 0;
}
DIV.ppr_rup.ppr_priv_resp_hr_atf_meta .ui_spinner {
display: none;
text-align: center;
padding: 15px 0 11px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .ib_box_header {
color: #4a4a4a;
font-size: 17px;
margin-bottom: 10px;
text-align: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .dominantOfferBlock {
min-height: 44px;
margin-top: 6px;
margin-bottom: 6px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .dominantOfferBlock .book_on_logo {
padding-top: 2px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .dominantOfferBlock .tripadvisor_meta_logo {
height: 20px;
width: 132px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .dominantOfferBlock .xthrough_container {
padding: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .dominantOfferBlock:hover .bb_price_text {
text-decoration: underline;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogo {
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .priceBlock {
text-align: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .bb_price_text {
color: #000a12;
font-size: 28px;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .bb_price_text.hideSpecialRateStrikeThrough {
color: #d80007;
text-decoration: line-through;
font-weight: normal;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta .bb_price_text {
font-size: 24px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta .blackStrikeThrough .hasStrikeThrough.bb_price_text {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .bb_per_night {
color: #4a4a4a;
font-size: 11px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .ctaButton {
display: block;
font-size: 16px;
line-height: 20px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .xthrough_container {
padding-top: 4px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .primaryCtaColumn .ui_column {
padding-top: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .primaryCtaColumn ~ .allDealsColumn {
margin-top: -8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronCta {
display: flex;
height: 100%;
font-size: 15px;
line-height: 19px;
align-items: center;
padding-right: 20px;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronCta {
padding-left: 5px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronCta .ui_icon {
font-size: 18px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogoOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronPriceOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronCtaOuter {
height: 59px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .viewDealText {
min-width: 95%;
}
@media (max-width: 767px) {
DIV.prw_rup.prw_meta_responsive_hr_meta .viewDealText {
text-align: left;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogoOuter {
border-width: 1px 0 1px 1px;
border-style: solid;
border-color: #e5e5e5;
align-self: stretch;
display: flex;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogoOuter .tripadvisor_meta_logo {
height: 16px;
width: 107px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogoInner {
display: flex;
align-items: center;
padding-left: 8px;
width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogoInner.withSpecialRateMsg {
padding-top: 9px;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta .providerLogoInner.withSpecialRateMsg {
padding-top: 5px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronPriceInner {
width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronPriceOuter {
border-width: 1px 0;
border-style: solid;
border-color: #e5e5e5;
align-self: stretch;
align-items: center;
display: flex;
padding: 0;
line-height: normal;
color: black;
text-align: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronPriceOuter.long_price .xthrough_bad,
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronPriceOuter.long_price .price {
font-size: 15px;
line-height: 19px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevronPriceOuter .taxes_and_fees {
font-size: 8px;
height: auto;
line-height: 1em;
white-space: normal;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron {
position: relative;
margin: 8px 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron:hover {
background: #f9f9f9;
box-shadow: 0 3px 2px -2px rgba(153, 153, 153, 0.4);
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron:hover .starSave {
background-color: transparent;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron .price {
white-space: nowrap;
text-align: center;
color: #000a12;
font-weight: bold;
font-size: 24px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron .price.strike {
font-weight: normal;
text-decoration: line-through;
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron .offers:not(.blackStrikeThrough) .strike {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .chevron .specialRateContainer {
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .starSave {
position: absolute;
max-width: 35%;
white-space: nowrap;
color: #d80007;
font-weight: bold;
font-size: 12px;
line-height: 12px;
left: 5px;
top: -5px;
z-index: 1;
background-color: #ffffff;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .starSave .star {
font-size: 16px;
line-height: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .starSave .star:before {
line-height: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .xthrough_bad {
font-weight: bold;
position: relative;
text-decoration: line-through;
display: inline-block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offers:not(.blackStrikeThrough) .xthrough_bad {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .ui_loader {
height: 100%;
margin-right: 10px;
float: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta {
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .blackStrikeThrough .hasStrikeThrough .chevronPriceInner .price {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .blackStrikeThrough .xthrough_bad {
color: #000000;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .book_on_logo {
width: 100%;
line-height: 18px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .tripadvisor_meta_logo {
background: url("/img2/branding/rebrand/TA_logo_primary.svg") no-repeat;
display: block;
max-width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .providerImg {
max-width: 100%;
max-height: 44px;
vertical-align: middle;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer {
cursor: pointer;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.dominant:hover {
text-decoration: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .noAvailability {
font-size: 14px;
line-height: 18px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .noAvailDates {
text-align: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .noAvailabilityBtn {
margin-top: 16px;
width: 100%;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta .noAvailability {
text-align: center;
font-size: 16px;
line-height: 20px;
}
}
[data-pricedrawer].expanded DIV.prw_rup.prw_meta_responsive_hr_meta .all_deals {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .all_deals,
DIV.prw_rup.prw_meta_responsive_hr_meta .all_deals_collapse {
font-size: 12px;
line-height: 16px;
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .all_deals_collapse {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta.expanded .extraOffers {
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta.expanded .all_deals {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta.expanded .all_deals_collapse {
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .extraOffers {
margin-top: 8px;
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .mobile_textlink {
overflow: hidden;
background: #ffffff;
border-width: 0 0 1px 0;
border-style: solid;
border-color: #e5e5e5;
font-weight: normal;
font-size: 18px;
line-height: 22px;
color: #000a12;
padding: 4px 17px 2px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .mobile_textlink:first-child {
border-width: 1px 0;
border-style: solid;
border-color: #e5e5e5;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .mobile_textlink:last-child {
margin-bottom: 8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .mobile_textlink.unclickable {
color: #767676;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .textlink_provider {
font-size: 15px;
font-weight: normal;
line-height: 22px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .textlink_price {
text-align: right;
overflow: visible;
font-weight: 500;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offers:not(.blackStrikeThrough) .comparisonOffer {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .linkColumn {
padding-top: 0;
padding-bottom: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .textLink {
position: relative;
overflow: hidden;
height: 18px;
line-height: 1.5em;
color: #006699;
cursor: pointer;
font-size: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .textLink.unclickable {
cursor: default;
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink:before {
content: '';
position: absolute;
width: 100%;
border-bottom: 1px dotted #006699;
bottom: 5px;
margin-left: 3px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink.unclickable:before {
border-color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .providerName,
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .price,
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .ui_loader {
background: #ffffff;
z-index: 1;
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .ui_loader {
margin-right: 0;
top: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .providerName {
padding-right: 3px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .price,
DIV.prw_rup.prw_meta_responsive_hr_meta .offer.textLink .ui_loader {
position: absolute;
right: 0;
padding-left: 3px;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .external-link-no-box.internal-link {
opacity: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .moreLink {
font-weight: bold;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .viewAllText {
padding: 0 12px;
-webkit-flex-grow: 0;
-ms-flex-grow: 0;
flex-grow: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .disclaimerLink {
margin: 8px 0 12px;
font-size: 13px;
line-height: 17px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #767676;
cursor: pointer;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .overlay_contents {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .defaultDatesUnavailableTreatment {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .predatesUI .ui_button {
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .predatesUI .weCheck {
color: #00a680;
font-size: 16px;
line-height: 22px;
margin: 24px auto;
text-align: center;
width: 60%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta .predatesUI .weCheck strong {
display: block;
font-weight: normal;
}
DIV.prw_rup.prw_meta_mobile_hr_strike_through .xthrough_container {
padding-top: 7px;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flex;
display: flex;
}
DIV.prw_rup.prw_meta_mobile_hr_strike_through .xthrough {
font-size: 18px;
color: #d80007;
text-decoration: line-through;
text-align: right;
float: right;
-ms-flex: 1;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1 1 auto;
flex: 1 1 auto;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_mobile_hr_strike_through .xthrough {
font-size: 16px;
}
}
DIV.prw_rup.prw_meta_mobile_hr_strike_through .blackStrikeThrough .xthrough {
color: #000000;
}
DIV.prw_rup.prw_hotels_hr_savings_alert .alert {
position: absolute;
display: flex;
top: 0px;
left: 0px;
right: 0px;
height: 55px;
max-width: 360px;
font-size: 15px;
font-weight: bold;
color: #ff6500;
background: #ffffff;
text-align: center;
align-items: center;
justify-content: center;
}
DIV.prw_rup.prw_hotels_hr_savings_alert .alert .ui_icon {
font-size: 125%;
line-height: normal;
}
DIV.prw_rup.prw_hotels_hr_savings_alert .alert .label {
font-size: 100%;
}
DIV.prw_rup.prw_hotels_hr_savings_alert .alert .autoResize {
opacity: 0;
}
DIV.prw_rup.prw_hotels_hr_savings_alert.static .alert {
position: static;
height: auto;
max-width: none;
padding: 0;
line-height: 26px;
}
DIV.prw_rup.prw_hotels_hr_savings_alert .overlay_contents {
display: none;
}
.ui_overlay DIV.prw_rup.prw_hotels_hr_savings_alert .alert {
display: none;
}
.ui_overlay DIV.prw_rup.prw_hotels_hr_savings_alert .overlay_contents {
display: block;
width: 250px;
}
.ui_overlay DIV.prw_rup.prw_hotels_hr_savings_alert .overlay_contents .first {
font-weight: bold;
}
.ui_overlay DIV.prw_rup.prw_hotels_hr_savings_alert .overlay_contents .first > em {
color: #ff6500;
font-style: normal;
}
.ui_popover DIV.prw_rup.prw_hotels_hr_savings_alert .overlay_contents {
margin: -10px;
}
DIV.prw_rup.prw_hotels_hr_urgency_alert .alert {
font-size: 15px;
line-height: 26px;
font-weight: bold;
color: #ff6500;
background: #ffffff;
text-align: center;
}
DIV.prw_rup.prw_hotels_hr_urgency_alert .alert .ui_icon {
font-size: 125%;
line-height: normal;
}
DIV.prw_rup.prw_hotels_hr_urgency_alert .alert .label > em {
font-style: normal;
}
DIV.prw_rup.prw_meta_view_all_text_links {
min-width: 160px;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink {
display: block;
position: relative;
float: none;
width: 100%;
height: 1.5em;
line-height: 1.5em;
cursor: pointer;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink:before {
content: '';
position: absolute;
width: 100%;
border-bottom: 1px dotted #006699;
bottom: 5px;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink .providerName {
position: absolute;
height: 1.5em;
max-width: 100%;
line-height: 1.5em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
float: left !ie;
margin-right: 30px;
padding-right: 3px;
background: #ffffff;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink .price {
float: right;
font-weight: bold;
position: relative;
padding-left: 3px;
background: #ffffff;
z-index: 1;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink .prohibited {
position: relative;
background: #ffffff;
padding-left: 3px;
z-index: 1;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink .loading {
padding: 6px 0 4px 3px;
position: relative;
background: #ffffff;
}
DIV.prw_rup.prw_meta_view_all_text_links .unclickable {
cursor: default;
}
DIV.prw_rup.prw_meta_view_all_text_links .unclickable:before {
border-bottom-color: #4a4a4a;
}
DIV.prw_rup.prw_meta_view_all_text_links .taLnk {
color: #006699;
}
DIV.prw_rup.prw_meta_view_all_text_links .offer:not(.blackStrikeThrough) .taLnk.comparisonOffer {
color: #d80007;
}
DIV.prw_rup.prw_meta_view_all_text_links .external-link-no-box.internal-link {
opacity: 0;
}
DIV.prw_rup.prw_meta_view_all_text_links .textLink:hover .taLnk {
text-decoration: underline;
}
DIV.prw_rup.prw_meta_view_all_text_links .ui_icon,
DIV.prw_rup.prw_meta_view_all_text_links .loading,
DIV.prw_rup.prw_meta_view_all_text_links .loading_bubbles_gry {
float: right;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate {
top: 4px;
font-size: 14px;
color: #1c99ce;
position: relative;
padding-right: 50px;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .message {
display: inline-block;
position: absolute;
font-weight: bold;
font-size: 12px;
line-height: 12px;
left: 5px;
top: -14px;
z-index: 1;
padding: 0 4px 0 2px;
text-overflow: ellipsis;
overflow: hidden;
width: 100%;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .ui_icon {
display: inline-block;
margin-top: -4px;
font-size: 18px;
width: 18px;
height: 18px;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .ui_icon.question-circle {
color: #767676;
padding-left: 3px;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .ui_icon.star-fill {
display: inline;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_text {
display: inline;
font-weight: bold;
background-color: #ffffff;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_subtext {
background-color: #ffffff;
font-size: 10px;
overflow: hidden;
text-overflow: ellipsis;
max-width: 63%;
min-width: 150px;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_subtext.outside {
display: none;
}
DIV.prw_rup.prw_meta_hr_special_rate.dominant .special_rate {
padding-top: 5px;
margin-bottom: -5px;
padding-right: 5px;
}
DIV.prw_rup.prw_meta_hr_special_rate.dominant .special_rate .message {
position: initial;
}
DIV.prw_rup.prw_meta_hr_special_rate.dominant .special_rate .rate_subtext {
max-width: 100%;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_hr_special_rate.dominant .special_rate {
max-width: 100%;
margin-bottom: 5px;
}
DIV.prw_rup.prw_meta_hr_special_rate.dominant .rate_subtext.outside {
position: relative;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate {
font-size: 12px;
padding-right: 0;
max-width: 62%;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .message {
background-color: #ffffff;
width: auto;
max-width: 100%;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .message .ui_icon.star-fill {
font-size: 15px;
vertical-align: bottom;
line-height: 17px;
display: inline-block;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_text {
display: inline-block;
background: linear-gradient(0deg, transparent 45%, #ffffff 45%);
font-weight: bold;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_subtext {
position: absolute;
max-width: 100%;
font-size: 11px;
line-height: 10px;
left: 5px;
top: 1px;
z-index: 1;
padding-left: 4px;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_subtext.inside {
display: none;
}
DIV.prw_rup.prw_meta_hr_special_rate .special_rate .rate_subtext.outside {
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
padding-bottom: 2px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .ib_box_header {
color: #4a4a4a;
font-size: 17px;
margin-bottom: 10px;
text-align: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .dominantOfferBlock {
min-height: 44px;
margin-top: 6px;
margin-bottom: 6px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .dominantOfferBlock .book_on_logo {
padding-top: 2px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .dominantOfferBlock .tripadvisor_meta_logo {
height: 20px;
width: 132px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .dominantOfferBlock .xthrough_container {
padding: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .dominantOfferBlock:hover .bb_price_text {
text-decoration: underline;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogo {
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .priceBlock {
text-align: right;
color: #000a12;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .bb_price_text {
font-size: 28px;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .bb_price_text.hideSpecialRateStrikeThrough {
color: #d80007;
text-decoration: line-through;
font-weight: normal;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .bb_price_text {
font-size: 24px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .blackStrikeThrough .hasStrikeThrough.bb_price_text {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .bb_per_night {
color: #4a4a4a;
font-size: 11px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .ctaButton {
display: block;
font-size: 16px;
line-height: 20px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .priceBlock {
text-align: left;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .priceBlock .prw_meta_hr_responsive_strike_through {
padding-left: 6px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .priceBlock .bb_price_text {
padding-left: 6px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .xthrough_container {
text-align: left;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .ui_column.providerLogo {
text-align: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .ui_column.providerLogo .providerImg {
padding-right: 8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .xthrough_container {
padding-top: 4px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .primaryCtaColumn .ui_column {
padding-top: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .primaryCtaColumn ~ .allDealsColumn {
margin-top: -8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .dominant .merchandise_message {
color: #4a4a4a;
line-height: 14px;
padding: 4px 0 12px 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .dominant .merchandise_message .msg_checkmark {
color: #00a680;
font-size: 14px;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .dominant .merchandise_message .msg_checkmark {
font-size: 14px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .xthrough_container,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .bb_price_text,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .installmentsWidget {
line-height: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .autoResize {
opacity: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronCta {
display: flex;
height: 100%;
font-size: 15px;
line-height: 19px;
align-items: center;
padding-right: 20px;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronCta {
padding-left: 4px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronCta .ui_icon {
font-size: 18px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteArrowAsAnchor .premium.chevron .ui_icon.external-link-no-box {
margin-left: -4px;
font-size: 15px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .premium.chevron .book_on_logo {
margin-left: -8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteArrowAsAnchor .bookableOffer .chevronCta {
padding-right: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .providerLogoOuter {
border-width: 1px 0 1px 0px;
border-style: solid;
border-color: #e5e5e5;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .chevronPriceOuter {
border-width: 1px 0 1px 1px;
border-style: solid;
border-color: #e5e5e5;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .providerLogoInner {
padding-left: 0;
padding-right: 8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .premium.chevron .price {
text-align: left;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .premium.chevron .chevronPriceInner {
text-align: left;
margin-left: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteArrowPartner .viewDealText {
margin-left: 6px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogoOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronPriceOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronCtaOuter {
height: 59px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .viewDealText {
min-width: 95%;
}
@media (max-width: 767px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .viewDealText {
text-align: left;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogoOuter {
border-width: 1px 0 1px 1px;
border-style: solid;
border-color: #e5e5e5;
align-self: stretch;
display: flex;
align-items: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogoOuter .tripadvisor_meta_logo {
height: 16px;
width: 107px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogoInner {
padding-left: 8px;
width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogoInner.withSpecialRateMsg {
padding-top: 10px;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerLogoInner.withSpecialRateMsg {
padding-top: 5px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronPriceInner {
width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronPriceOuter {
border-width: 1px 0;
border-style: solid;
border-color: #e5e5e5;
align-self: stretch;
align-items: center;
display: flex;
padding: 0;
line-height: normal;
color: black;
text-align: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronPriceOuter.long_price .xthrough,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronPriceOuter.long_price .price {
font-size: 15px;
line-height: 19px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevronPriceOuter .taxes_and_fees {
font-size: 8px;
height: auto;
line-height: 1em;
white-space: normal;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron {
position: relative;
margin: 8px 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron:hover {
background: #f9f9f9;
box-shadow: 0 3px 2px -2px rgba(153, 153, 153, 0.4);
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron:hover .starSave {
background-color: transparent;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron .price {
white-space: nowrap;
text-align: center;
color: #000a12;
font-weight: bold;
font-size: 24px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron .price.strike {
font-weight: normal;
text-decoration: line-through;
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron .offers:not(.blackStrikeThrough) .strike {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .chevron .specialRateContainer {
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .starSave {
position: absolute;
max-width: 35%;
white-space: nowrap;
color: #d80007;
font-weight: bold;
font-size: 12px;
line-height: 12px;
left: 5px;
top: -5px;
z-index: 1;
background-color: #ffffff;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .starSave .star {
font-size: 16px;
line-height: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .starSave .star:before {
line-height: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .xthrough_bad {
font-weight: bold;
position: relative;
text-decoration: line-through;
display: inline-block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offers:not(.blackStrikeThrough) .xthrough_bad {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .ui_loader {
height: 100%;
margin-right: 10px;
float: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .chevron {
padding-bottom: 10px;
border-bottom: 1px solid #e5e5e5;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .chevronPriceOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .providerLogoOuter {
border: none;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .providerLogoOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .chevronPriceOuter,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .chevronCtaOuter {
height: 45px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .merchandise_message {
color: #4a4a4a;
font-size: 13px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .merchandise_message .msg_checkmark {
color: #00a680;
font-size: 16px;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .merchandiseMessageLayout .merchandise_message {
line-height: 16px;
font-size: 12px;
padding-left: 8px;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .chevron .chevronPriceOuter {
padding: 0 8px;
text-align: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .chevron .chevronPriceOuter.long_price .installmentsWidget {
font-size: 10px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .chevron .xthrough_container {
padding-top: 0;
line-height: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .chevron .price {
text-align: inherit;
line-height: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .withInstallments .chevron .installmentsWidget {
line-height: 120%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .premium.chevron .freeCancellationWrapper,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .premium.chevron .payAtStayWrapper {
height: 12px;
padding-top: 2px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction {
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .renderHidden {
height: 1px;
width: 1px;
opacity: 0;
position: absolute;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .blackStrikeThrough .hasStrikeThrough .chevronPriceInner .price {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .blackStrikeThrough .xthrough_bad {
color: #000000;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .book_on_logo {
width: 100%;
line-height: 18px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .tripadvisor_meta_logo {
background: url("/img2/branding/rebrand/TA_logo_primary.svg") no-repeat;
display: block;
max-width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .providerImg {
max-width: 100%;
max-height: 44px;
vertical-align: middle;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer {
cursor: pointer;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.dominant:hover {
text-decoration: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .noAvailability {
font-size: 14px;
line-height: 18px;
margin: 0;
width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .noAvailDates {
text-align: center;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .bold .noCommerceMessage,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .bold .noAvailabilityMessage {
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .red .noAvailabilityMessage {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .noAvailabilityBtn {
margin-top: 16px;
width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .viewAllBtn {
margin-top: 16px;
}
@media (max-width: 767px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .viewAllBtn {
width: 100%;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .hotelWebsiteBtn {
margin-top: 8px;
}
@media (max-width: 767px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .hotelWebsiteBtn {
width: 100%;
}
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .noAvailability {
text-align: center;
font-size: 16px;
line-height: 20px;
}
}
[data-pricedrawer].expanded DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .all_deals {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .all_deals,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .all_deals_collapse {
font-size: 12px;
line-height: 16px;
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .all_deals_collapse {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction.expanded .extraOffers {
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction.expanded .all_deals {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction.expanded .all_deals_collapse {
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .extraOffers {
margin-top: 8px;
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .mobile_textlink {
overflow: hidden;
background: #ffffff;
border-width: 0 0 1px 0;
border-style: solid;
border-color: #e5e5e5;
font-weight: normal;
font-size: 18px;
line-height: 22px;
color: #000a12;
padding: 4px 17px 2px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .mobile_textlink:first-child {
border-width: 1px 0;
border-style: solid;
border-color: #e5e5e5;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .mobile_textlink:last-child {
margin-bottom: 8px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .mobile_textlink.unclickable {
color: #767676;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .textlink_provider {
font-size: 15px;
font-weight: normal;
line-height: 22px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .textlink_price {
text-align: right;
overflow: visible;
font-weight: 500;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offers:not(.blackStrikeThrough) .comparisonOffer {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .offer.premium .price,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .offer.dominant .bb_price_text {
color: #000a12;
font-weight: bold;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .offer.premium:hover .price,
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .offer.dominant:hover .bb_price_text {
color: #078171;
text-decoration: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .textLink:not(.unclickable) {
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .textLink:not(.unclickable) .price {
color: #000a12;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .textLink:not(.unclickable):before {
border-bottom-color: #4a4a4a;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .textLink:not(.unclickable):hover {
color: #000a12;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .textLink:not(.unclickable):hover .price {
color: #078171;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .textLink:not(.unclickable):hover:before {
border-bottom-color: #000a12;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .mobile_textlink:not(.unclickable) .textlink_provider {
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .mobile_textlink:not(.unclickable) .textlink_price {
color: #000a12;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover.blackStrikeThrough .premium .hasStrikeThrough .price,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover.blackStrikeThrough .dominant .bb_price_text.hasStrikeThrough {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .moreLink.taLnk {
color: #000a12;
font-weight: bold;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyGreenPriceHover .moreLink.taLnk:hover {
color: #078171;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .offer.premium .price,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .offer.dominant .bb_price_text {
color: #000a12;
font-weight: bold;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .offer.premium:hover .price,
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .offer.dominant:hover .bb_price_text {
color: #000a12;
text-decoration: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .textLink:not(.unclickable) {
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .textLink:not(.unclickable) .price {
color: #000a12;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .textLink:not(.unclickable):before {
border-bottom-color: #4a4a4a;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .textLink:not(.unclickable):hover {
color: #000a12;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .textLink:not(.unclickable):hover .price {
color: #000a12;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .textLink:not(.unclickable):hover:before {
border-bottom-color: #000a12;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .mobile_textlink:not(.unclickable) .textlink_provider {
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .mobile_textlink:not(.unclickable) .textlink_price {
color: #000a12;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover.blackStrikeThrough .premium .hasStrikeThrough .price,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover.blackStrikeThrough .dominant .bb_price_text.hasStrikeThrough {
color: #d80007;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .moreLink.taLnk {
color: #000a12;
font-weight: bold;
}
.desktop_web DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkStrategyBlackPriceHover .moreLink.taLnk:hover {
color: #000a12;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .linkColumn {
padding-top: 0;
padding-bottom: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .textLink {
position: relative;
overflow: hidden;
height: 18px;
line-height: 1.5em;
color: #006699;
cursor: pointer;
font-size: 12px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .textLink.unclickable {
cursor: default;
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink:before {
content: '';
position: absolute;
width: 100%;
border-bottom: 1px dotted #006699;
bottom: 5px;
margin-left: 3px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink.unclickable {
color: #767676;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink.unclickable:before {
border-color: #4a4a4a;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .providerName,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .price,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .ui_loader {
background: #ffffff;
z-index: 1;
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .ui_loader {
margin-right: 0;
top: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .providerName {
padding-right: 3px;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .price,
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offer.textLink .ui_loader {
position: absolute;
right: 0;
padding-left: 3px;
font-weight: bold;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .external-link-no-box.internal-link {
opacity: 0;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .offer.textLink .providerName {
float: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .offer.textLink .price {
right: auto;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .external-link-no-box.isNull {
visibility: hidden;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .mobile_textlink .ui_column.textlink_price {
text-align: left;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .mobile_textlink .ui_column.textlink_provider {
text-align: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .moreLink {
font-weight: bold;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .viewAllText {
padding-top: 0;
padding-bottom: 0;
-ms-flex-basis: auto;
-moz-flex-basis: auto;
-webkit-flex-basis: auto;
flex-basis: auto;
max-width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .viewAllText .moreLink {
display: inline-block;
vertical-align: top;
max-width: 100%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .checkSiteText {
min-width: 95%;
}
@media (max-width: 767px) {
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .checkSiteText {
text-align: left;
}
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .disclaimerLink {
margin: 8px 0 12px;
font-size: 13px;
line-height: 17px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #767676;
cursor: pointer;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .overlay_contents {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .defaultDatesUnavailableTreatment {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .predatesUI .ui_button {
display: block;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .predatesUI .weCheck {
color: #00a680;
font-size: 16px;
line-height: 22px;
margin: 24px auto;
text-align: center;
width: 60%;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .predatesUI .weCheck strong {
display: block;
font-weight: normal;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .ui_icon.external-link-no-box.isNull {
visibility: hidden;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .ui_icon.external-link-no-box.do_not_show {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .secondary .offer.textLink {
display: flex;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .secondary .offer.textLink .price {
right: auto;
padding-right: 3px;
padding-left: 0;
z-index: 2;
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .secondary .offer.textLink .price .external-link-no-box.internal-link {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .secondary .offer.textLink .ui_loader.small {
right: auto;
padding-right: 3px;
padding-left: 0;
z-index: 2;
position: relative;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .secondary .offer.textLink .providerName {
float: right;
padding-left: 3px;
padding-right: 0;
flex: 0 1 auto;
overflow: hidden;
text-overflow: ellipsis;
text-align: right;
margin-left: auto;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .secondary .offer.textLink .providerName .external-link-no-box {
float: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .secondary .offer.textLink {
display: flex;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .secondary .offer.textLink .price {
padding-right: 3px;
padding-left: 0;
z-index: 2;
position: relative;
flex: none;
margin-left: auto;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .secondary .offer.textLink .price .external-link-no-box.internal-link {
display: none;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .secondary .offer.textLink .ui_loader.small {
right: auto;
padding-right: 3px;
padding-left: 0;
z-index: 2;
position: relative;
margin-left: auto;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .secondary .offer.textLink .providerName {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-shrink: 1;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .secondary .offer.textLink .providerName .external-link-no-box {
float: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .maybeAvailable.chevron .providerLogoInner {
width: 50%;
margin-left: auto;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .mobile_textlink .textlink_provider .ui_icon.external-link-no-box {
float: right;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsitePriceBeforePartner .mobile_textlink .ui_column.textlink_provider {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
DIV.prw_rup.prw_meta_responsive_hr_meta_hotel_auction .offsiteControlOrder.offsiteArrowPartner .mobile_textlink .textlink_provider .textlink_provider_inner {
display: inline-block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate {
top: 4px;
font-size: 14px;
color: #1c99ce;
position: relative;
padding-right: 50px;
white-space: nowrap;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .message {
display: inline-block;
position: absolute;
font-weight: bold;
font-size: 12px;
line-height: 12px;
left: 5px;
top: -14px;
z-index: 1;
padding: 0 4px 0 2px;
text-overflow: ellipsis;
overflow: hidden;
width: 100%;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .ui_icon {
display: inline-block;
margin-top: -4px;
font-size: 18px;
width: 18px;
height: 18px;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .ui_icon.question-circle {
color: #767676;
padding-left: 3px;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .ui_icon.star-fill {
display: inline;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_text {
display: inline;
font-weight: bold;
background-color: #ffffff;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_subtext {
background-color: #ffffff;
font-size: 10px;
overflow: hidden;
text-overflow: ellipsis;
max-width: 63%;
min-width: 150px;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_subtext.outside {
display: none;
}
DIV.prw_rup.prw_meta_hr_special_rate_3.dominant .special_rate {
padding-top: 5px;
margin-bottom: -5px;
padding-right: 5px;
}
DIV.prw_rup.prw_meta_hr_special_rate_3.dominant .special_rate .message {
position: initial;
}
DIV.prw_rup.prw_meta_hr_special_rate_3.dominant .special_rate .rate_subtext {
max-width: 100%;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_hr_special_rate_3.dominant .special_rate {
max-width: 100%;
margin-bottom: 5px;
}
DIV.prw_rup.prw_meta_hr_special_rate_3.dominant .rate_subtext.outside {
position: relative;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate {
font-size: 12px;
padding-right: 0;
max-width: 62%;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .message {
background-color: #ffffff;
width: auto;
max-width: 100%;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .message .ui_icon.star-fill {
font-size: 15px;
vertical-align: bottom;
line-height: 17px;
display: inline-block;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_text {
display: inline-block;
background: linear-gradient(0deg, transparent 45%, #ffffff 45%);
font-weight: bold;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_subtext {
position: absolute;
max-width: 100%;
font-size: 11px;
line-height: 10px;
left: 5px;
top: 1px;
z-index: 1;
padding-left: 4px;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_subtext.inside {
display: none;
}
DIV.prw_rup.prw_meta_hr_special_rate_3 .special_rate .rate_subtext.outside {
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
padding-bottom: 2px;
}
}
DIV.prw_rup.prw_meta_hr_responsive_strike_through .xthrough_container {
padding-top: 7px;
text-align: right;
}
DIV.prw_rup.prw_meta_hr_responsive_strike_through .xthrough {
font-size: 18px;
color: #d80007;
text-decoration: line-through;
}
@media (min-width: 768px) {
DIV.prw_rup.prw_meta_hr_responsive_strike_through .xthrough {
font-size: 16px;
}
}
DIV.prw_rup.prw_meta_hr_responsive_strike_through .blackStrikeThrough .xthrough {
color: #000000;
}
DIV.prw_rup.prw_meta_hr_responsive_strike_through .overlay_contents {
display: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified {
border-width: 0;
min-width: 160px;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link {
cursor: pointer;
position: relative;
color: #4a4a4a;
line-height: 24px;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsitePriceBeforePartner {
display: flex;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsitePriceBeforePartner .vendor {
margin-left: auto;
padding-left: 3px;
padding-right: 0;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsitePriceBeforePartner .price {
padding-left: 0;
padding-right: 3px;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .providerName {
margin-right: 30px;
color: #666;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .ui_icon {
float: right;
font-size: 12px;
color: #666;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .price .external-link-no-box {
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .external-link-no-box.internal-link {
visibility: hidden;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .external-link-no-box.isNull {
visibility: hidden;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link:before {
content: '';
position: absolute;
width: 100%;
border-bottom: 1px dotted #4a4a4a;
bottom: 7px;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .vendor,
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .price {
position: relative;
background: #ffffff;
z-index: 1;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .vendor {
padding-right: 3px;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link .price {
float: right;
padding-left: 3px;
font-weight: bold;
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link:hover .vendor,
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link:hover .price {
text-decoration: underline;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.unclickable {
cursor: default;
color: #767676;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.unclickable .price .ui_icon {
color: #767676;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.unclickable:hover .vendor,
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.unclickable:hover .price {
text-decoration: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link:not(.blackStrikeThrough) .comparisonOffer {
color: #d80007;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link:not(.blackStrikeThrough) .comparisonOffer.xcolor-orange {
color: #ff6500;
}
@media (max-width: 767px) {
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.big-space {
margin-top: 12px;
}
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsitePriceBeforePartner .price {
float: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsitePriceBeforePartner .vendor {
float: right;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsitePriceBeforePartner .ui_icon.prohibited {
float: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .text-link.offsiteControlOrder.offsiteArrowPartner .ui_icon.external-link-no-box {
float: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable) .vendor {
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable) .price {
font-weight: bold;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable) .price:not(.comparisonOffer) {
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable):before {
border-bottom-color: #4a4a4a;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable):hover .vendor {
color: #000a12;
text-decoration: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable):hover .price {
text-decoration: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable):hover .price:not(.comparisonOffer) {
color: #078171;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyGreenPriceHover.text-link:not(.unclickable):hover:before {
border-bottom-color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .blackStrikeThrough.linkStrategyGreenPriceHover.text-link:not(.unclickable) .comparisonOffer {
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .blackStrikeThrough.linkStrategyGreenPriceHover.text-link:not(.unclickable):hover .comparisonOffer {
color: #078171;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable) .vendor {
color: #4a4a4a;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable) .price {
font-weight: bold;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable) .price:not(.comparisonOffer) {
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable):before {
border-bottom-color: #4a4a4a;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable):hover .vendor {
color: #000a12;
text-decoration: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable):hover .price {
text-decoration: none;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable):hover .price:not(.comparisonOffer) {
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .linkStrategyBlackPriceHover.text-link:not(.unclickable):hover:before {
border-bottom-color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .blackStrikeThrough.linkStrategyBlackPriceHover.text-link:not(.unclickable) .comparisonOffer {
color: #000a12;
}
DIV.prw_rup.prw_meta_h_text_links_simplified .blackStrikeThrough.linkStrategyBlackPriceHover.text-link:not(.unclickable):hover .comparisonOffer {
color: #000a12;
}
DIV.ppr_rup.ppr_priv_attraction_simple_meta .detail_section { padding: 20px 0 10px 20px; }
DIV.ppr_rup.ppr_priv_attraction_simple_meta .detail_section .details_wrapper .detail { padding-top: 20px }
DIV.ppr_rup.ppr_priv_attraction_simple_meta .detail_section .detailOverlayHide { display: none; }
DIV.ppr_rup.ppr_priv_attraction_simple_meta .multi_tour_module { margin: 30px 10px 40px 10px; }
DIV.ppr_rup.ppr_priv_attraction_simple_meta .multi_tour_module .provider_link { padding: 0 10px 10px 0; }
DIV.ppr_rup.ppr_priv_attraction_simple_meta .multi_tour_module .dotBullets li { margin: 4px 0; padding-left: 11px; background: url("/img2/bullets/dotBullet_oliveDrab.gif") 0 .45em no-repeat; line-height: 140%; }
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner {
position: relative;
height: 65px;
margin: 3px 0 3px 0;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .message {
position: absolute;
top: -2px;
left: 196px;
color: #fff;
text-align: center;
padding: 24px 0 0 0;
font-size: 1.4em;
text-shadow: 1px 1px 2px black;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .icon {
position: relative;
top: 20px;
left: 80px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .icon img {
height: 24px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .btn {
position: absolute;
top: 14px;
right: 10px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .install_btn {
min-width: 156px;
box-shadow: 1px 1px 2px black;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .install_btn.chrome {
padding-left: 56px;
background-image: url("/img2/crm/chrome_dt/chrome-dt-icon.png");
background-position: 10px;
background-size: 40px 40px;
background-repeat: no-repeat;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .install_btn.chevron {
padding-right: 25px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .install_btn.chevron:after {
right: 12px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .install_btn .btn-text {
font-size: 1em;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner .ui_ribbon {
top: 8px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .ui_ribbon {
font-size: 11px;
padding: 3px 8px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .icon {
top: 24px;
left: 42px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .icon img {
height: 20px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .message {
font-size: 1.25em;
top: 1px;
left: 140px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .message2 {
left: 129px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .icon.message2 {
left: 35px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .btn {
top: 18px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .install_btn {
padding: 4px 12px 4px 6px;
min-width: 114px;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.lpdl_2012 .install_btn .btn-text {
font-size: 0.9em;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.v1 {
background: #00a680;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.v1 .ui_ribbon {
background: #ffd671;
color: #000;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.v2 {
background: #00a680;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.v3 {
background: #00a680;
}
DIV.ppr_rup.ppr_priv_lpdl_ce_promo_banner .ce_promo_photo_banner.v3 .ui_ribbon {
background: #ffd671;
color: #000;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .details_row1 { margin: 20px 0 10px 20px; font-size: 1.167em; color: #4a4a4a; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .details_row1 .separator { position: relative; margin: 0 23px 4px 0; float: left; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .details_row1 .separator:after { position:absolute; top:0; right:-13px; width:0; height:20px; border-right:1px solid #ddd; content:""; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .details_row2 { position: relative; height: 85px; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .details_row2 .dining { padding: 10px 5px 0 20px; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .top_separator { padding-bottom: 10px; margin-bottom: 10px; border-top: 1px solid #F4F3F0; overflow: hidden; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta div.rest_reservation { padding-top: 0; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta div.timeSlots { left: -163px; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta div.timeslots_bar { margin-left: 8px; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_meta .rest_reservation .update_table { margin-left: 0; margin-top: 4px; }
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_availability_search .ui_icon {
font-size: 16px;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .restaurant_availability_search .ui_picker {
font-size: 14px;
padding-right: 0;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .ui_picker .caret-down {
display: none;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .resv_header {
margin: 20px 0;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .search {
margin: 10px 0;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .inputs {
margin-bottom: 10px;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_reservation_outer_container
{
margin: auto;
display: table;
width: 100%;
position: absolute;
top: 0;
bottom: 0;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_reservation_inner_container
{
display:table-cell;
vertical-align: middle;
text-align: center;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_reservation_container_cell
{
vertical-align: middle;
text-align: center;
width: 280px;
margin-left: auto;
margin-right: auto;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_reservation_label
{
font-size: 18px;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_reservation_button
{
width: 100%;
margin: 16px 0px;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_logo
{
display: inline-block;
float: right;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_logo_ja
{
width: 55px;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_info_link_container
{
display: inline-block;
font-size: 16px;
margin: 0 auto;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_logo_label
{
float: right;
}
DIV.ppr_rup.ppr_priv_restaurant_simple_meta .gnavi_logo_line
{
overflow: hidden;
margin-top: 10px;
line-height: 17px;
}
DIV.ppr_rup.ppr_priv_unsupported_browser_messaging .unsupportedBrowser {
padding: 5px;
background-color: #f2f2f2;
font-size: .75em;
}
DIV.ppr_rup.ppr_priv_unsupported_browser_messaging .unsupportedBrowser .innerDiv {
padding: 6px 0 8px 79px;
line-height: 167.5%;
font-weight: bold;
}
DIV.ppr_rup.ppr_priv_unsupported_browser_messaging .ui_link {
font-weight: normal;
}
</style>
<style type="text/css">
body{}
</style>
</head>
<body id="BODY_BLOCK_JQUERY_REFLOW" class="ltr domn_en_CA lang_en globalNav2011_reset rebrand_2017 flat_buttons sitewide xo_pin_user_review_to_top track_back" data-scroll='OVERVIEW' data-navArea-metaType="QC_Meta_Mini" data-navArea-placement="Unknown">
<div id="fb-root"></div>
<!--trkP:sync_rt_cookie-->
<!-- PLACEMENT sync_rt_cookie -->
<DIV ID="taplc_sync_rt_cookie_0" class="ppr_rup ppr_priv_sync_rt_cookie" data-placement-name="sync_rt_cookie">
<script type="text/javascript">require(["ta/Core/TA.Store"], function(taStore) {taStore.store("retargeting.rtURL", '//' + 'www.tamgrt.com/RT');taStore.store("retargeting.drs", 'ABC.73*ATTPromo.11*AUC.4*BMP.55*BRDTTD.80*Brand.25*CAR.91*COM.95*CRS.46*Community.17*Content.39*CoreX.48*EXP.49*Engage.4*FLTMERCH.2*Filters.7*Flights.6*HRATF.87*HSX.9*HSXB.45*IBEX.34*ING.62*ITR.84*L10N.39*ML.5*ML6.19*MM.50*MOBILEAPP.-1*MOF.14*MTA.14*Me2.4*Mem.43*Mobile.18*MobileCore.76*Notifications.14*Other.85*P13N.89*PLS.68*POS.92*PRT.53*RDS1.88*RDS2.32*RDS3.1*RDS4.52*RDS5.30*RET.65*REV.13*REVB.24*REVH.33*RNA.0*RSE1.27*RSE2.8*Rooms.70*SE2O.25*SEM.94*SEO.86*SORT1.24*Sales.46*Search.4*SiteX.95*Surveys.24*T4B.86*TGT.57*TTD.77*TX.20*Timeline.12*VP.47*VR.61*YM.3*YMB.36');taStore.store("retargeting.geoId", '155019');});</script><script type="text/javascript">(function(window, document) {"use strict";var SYNC_AGE = 1000*60*30; var WHITELIST_AGE = 1000*60*60*24; var HTTP_COOKIE = "TART";var SYNC_COOKIE = "SRT";var WHITELIST_COOKIE = "WLRedir";var MSG_PREFIX = "COOKIESYNC:";var _isNewRTCookie = true;var _tart = 'enc%3A%2BA1mNyMnLXMy6VTiva5QV4UQDyqrN%2FIdNK%2BiloPRUkC03jeVziorEkcRZN39aDEeuw0zbZXbBS4%3D';if (_hasCookie(HTTP_COOKIE) && !_isNewRTCookie) { return; } var syncFrame = document.createElement('iframe');function _on(element, event, callback) {var legacy = !('addEventListener' in document), listen = legacy ? 'attachEvent' : 'addEventListener';if (legacy) { event = 'on' + event; }element[listen](event, callback);}function _off(element, event, callback) {var legacy = !('addEventListener' in document), detach = legacy ? 'detachEvent' : 'removeEventListener';if (legacy) { event = 'on' + event; }element[detach](event, callback);}function _setCookie(name, value, age) {document.cookie = name + '=' + value +';domain=' + window.location.hostname +';path=/' +';expires=' + new Date(new Date().getTime() + age).toUTCString();}function _hasCookie(name) {return !!document.cookie.match(name + '=[^;]+');}function handleMessage(e) {if (!syncFrame || !e || !e.data || !e.data.indexOf || e.data.indexOf(MSG_PREFIX) !== 0) { return; }var cookieValue = e.data.substring(MSG_PREFIX.length);if (cookieValue) {_setCookie(SYNC_COOKIE, cookieValue, SYNC_AGE);} else if(!_hasCookie(WHITELIST_COOKIE)) {_setCookie(WHITELIST_COOKIE, "requested", WHITELIST_AGE);}_off(window, 'message', handleMessage);document.body.removeChild(syncFrame);syncFrame = null;}function _setupSyncFrame() {if (!syncFrame) { return; }var src = window.location.protocol + '//' + 'www.tamgrt.com/RT' + "?-sync=true&q=" + new Date().getTime();if(_isNewRTCookie) {if(_tart) {src += '&rid=' + _tart;}}syncFrame.src = src;document.body.appendChild(syncFrame);}_on(window, 'message', handleMessage);syncFrame.style.display = 'none';syncFrame.id = 'ta_cookie_sync';syncFrame.name = new Date().getTime();_setupSyncFrame();})(window, document);</script></DIV>
<!--etk-->
<!--trkP:unsupported_browser_messaging-->
<!-- PLACEMENT unsupported_browser_messaging -->
<DIV ID="taplc_unsupported_browser_messaging_0" class="ppr_rup ppr_priv_unsupported_browser_messaging" data-placement-name="unsupported_browser_messaging">
<div class="unsupportedBrowser"><div class="innerDiv" style="background: url('https://static.tacdn.com/img2/icons/64/bv_alert.gif') 12px 2px no-repeat;"><span>We noticed that you're using an unsupported browser. The TripAdvisor website may not display properly.We support the following browsers:</span><br/><span dir="ltr">Windows: <span class="ui_link" onClick="ta.plc_unsupported_browser_messaging_0_handlers.openUrl('PFaSnEitiTI8LuSCMiutLSVLMVTJpcIYat2xE')">Internet Explorer</span>, <span class="ui_link" onClick="ta.plc_unsupported_browser_messaging_0_handlers.openUrl('PFaizCSccJWVpEi2VxzLVCL')">Mozilla Firefox</span>, <span class="ui_link" onClick="ta.plc_unsupported_browser_messaging_0_handlers.openUrl('q5FyiiycV8LSCIcLVCLnGEiaVLHEiutVEL4Gc1VC')">Google Chrome</span>. Mac: <span class="ui_link" onClick="ta.plc_unsupported_browser_messaging_0_handlers.openUrl('PFJ22cV8LaJnitxELTVJIpEVtLtJTJESL')">Safari</span>.</span></div></div></DIV>
<!--etk-->
<div id="iframediv"></div>
<div id="PAGE" class=" non_hotels_like desktop scopedSearch">
<div class="masthead">
<!--trkP:global_nav-->
<!-- PLACEMENT global_nav -->
<DIV ID="taplc_global_nav_0" class="ppr_rup ppr_priv_global_nav" data-placement-name="global_nav">
<div class="global-nav-no-refresh" id="global-nav-no-refresh-1"><!-- PLACEMENT global_nav_menus --><div id="taplc_global_nav_menus_0" class="ppr_rup ppr_priv_global_nav_menus" data-placement-name="global_nav_menus">
<!-- PLACEMENT global_nav_menus -->
<div class="hidden">
<div class="global-nav-menus-container">
<div class=" tabsBar">
<ul class="tabs" onclick="">
<li class="tabItem dropDown jsNavMenu">
<a href="/Tourism-g155019-Toronto_Ontario-Vacations.html" class="tabLink arwLink geoLink" onclick="ta.util.cookie.setPIDCookie(4964); ta.setEvtCookie('TopNav', 'click', 'Tourism', 0, this.href)">
<span class="geoName" data-title="Toronto">Toronto</span><span class="ui_icon single-chevron-down"></span>
</a>
<ul class="subNav masthead-dropdown-tourism">
<li class="subItem">
<a class="subLink " href="/Tourism-g155019-Toronto_Ontario-Vacations.html" onclick="ta.util.cookie.setPIDCookie(4971);">
Toronto Tourism
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Hotels-g155019-Toronto_Ontario-Hotels.html" onclick="ta.util.cookie.setPIDCookie(4972);" onmousedown="requireCallLast('masthead/header', 'addClearParam', this);">
Toronto Hotels
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Hotels-g155019-c2-Toronto_Ontario-Hotels.html">
Toronto Bed and Breakfast
</a>
</li>
<li class="subItem">
<a class="subLink " href="/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html" onclick="ta.util.cookie.setPIDCookie(4975);">
Toronto Vacation Rentals
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Vacation_Packages-g155019-Toronto_Ontario-Vacations.html">
Toronto Packages
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html" onclick="ta.util.cookie.setPIDCookie(4973);">
Flights to Toronto
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Restaurants-g155019-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4974);">
Toronto Restaurants
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Attractions-g155019-Activities-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4977);">
Toronto Attractions
</a>
</li>
<li class="subItem">
<a class="subLink selForums" href="/ShowForum-g155019-i55-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4980);">
Toronto Travel Forum
</a>
</li>
<li class="subItem">
<a class="subLink " href="/LocationPhotos-g155019-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4979);">
Toronto Photos
</a>
</li>
<li class="subItem">
<a class="subLink " href="/LocalMaps-g155019-Toronto-Area.html" onclick="ta.util.cookie.setPIDCookie(4978);">
Toronto Map
</a>
</li>
<li class="subItem">
<a class="subLink " href="/Travel_Guide-g155019-Toronto_Ontario.html">
Toronto Guide
</a>
</li>
</ul>
</li>
<li class="tabItem dropDown jsNavMenu hvrIE6">
<ul class="subNav masthead-dropdown-hotels">
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-Toronto_Ontario-Hotels.html">All Toronto Hotels</a> </li>
<li class="subItem">
<a class="subLink" href="/SmartDeals-g155019-Toronto_Ontario-Hotel-Deals.html">Toronto Hotel Deals</a> </li>
<li class="subItem">
<a class="subLink" href="/LastMinute-g155019-Toronto_Ontario-Hotels.html">Last Minute Hotels in Toronto</a>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
By Hotel Type
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zff7-Toronto_Ontario-Hotels.html">Business Hotels Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zff4-Toronto_Ontario-Hotels.html">Toronto Family Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zff12-Toronto_Ontario-Hotels.html">Toronto Luxury Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zff3-Toronto_Ontario-Hotels.html">Romantic Hotels Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zff13-Toronto_Ontario-Hotels.html">Spa Resorts Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zff24-Toronto_Ontario-Hotels.html">Toronto Green Hotels</a>
</li>
</ul>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
By Hotel Class
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfc5-Toronto_Ontario-Hotels.html">5-star Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfc4-Toronto_Ontario-Hotels.html">4-star Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfc3-Toronto_Ontario-Hotels.html">3-star Hotels in Toronto</a>
</li>
</ul>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
By Hotel Brand
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9219-Toronto_Ontario-Hotels.html">Sheraton Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9272-Toronto_Ontario-Hotels.html">Westin Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9234-Toronto_Ontario-Hotels.html">Radisson Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9295-Toronto_Ontario-Hotels.html">InterContinental Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9210-Toronto_Ontario-Hotels.html">Super 8 Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9198-Toronto_Ontario-Hotels.html">Days Inn Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9231-Toronto_Ontario-Hotels.html">Marriott Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9220-Toronto_Ontario-Hotels.html">Hilton Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb16149-Toronto_Ontario-Hotels.html">Managed by AccorHotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9191-Toronto_Ontario-Hotels.html">Best Western Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9228-Toronto_Ontario-Hotels.html">Courtyard Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfb9239-Toronto_Ontario-Hotels.html">Residence Inn Hotels in Toronto</a>
</li>
</ul>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
Popular Amenities
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfa3-Toronto_Ontario-Hotels.html">Toronto Hotels with a Pool</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfa9-Toronto_Ontario-Hotels.html">Pet Friendly Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfa7-Toronto_Ontario-Hotels.html">Toronto Hotels with Parking</a>
</li>
</ul>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
Popular Neighbourhoods
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622772-Toronto_Ontario-Hotels.html">Old Toronto Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn8150902-Toronto_Ontario-Hotels.html">Downtown Toronto Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn8150904-Toronto_Ontario-Hotels.html">Downtown West Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622804-Toronto_Ontario-Hotels.html">Entertainment District Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622685-Toronto_Ontario-Hotels.html">Bay Street Corridor Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622858-Toronto_Ontario-Hotels.html">Waterfront Communities-The Island Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn8150924-Toronto_Ontario-Hotels.html">Etobicoke Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622807-Toronto_Ontario-Hotels.html">Financial District Toronto Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622758-Toronto_Ontario-Hotels.html">West Humber-Clairville Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/Hotels-g155019-zfn15622839-Toronto_Ontario-Hotels.html">Rexdale Hotels</a>
</li>
</ul>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
Popular Toronto Categories
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Cheap-Hotels-zfp5127.html">Toronto Affordable Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Hot-Tubs-zfp5471.html">Hotels with Hot Tubs in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Suite-Hotels-zfp5668.html">Suite Hotels in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Balconies-zfp41755.html">Hotels with Balconies in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Smoking-Rooms-zfp43622.html">Hotels with Smoking Rooms in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Party-Hotels-zfp43923.html">Toronto Party Hotels</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Complimentary-Breakfast-zfp10839275.html">Hotels with Complimentary Breakfast in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Entertainment-zfp10839404.html">Hotels With Entertainment in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Free-Wifi-zfp10839617.html">Hotels with Free Wifi in Toronto</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Indoor-Pools-zfp10839930.html">Toronto Hotels With Indoor Pools</a>
</li>
</ul>
</li>
<li class="expandSubItem">
<span class="expandSubLink" onClick=" ">
Near Landmarks
</span>
<ul class="secondSubNav" style="top:-0.125em; ">
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d155483-CN_Tower-Toronto_Ontario.html">Hotels near CN Tower</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d5031404-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html">Hotels near Ripley's Aquarium Of Canada</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d185112-St_Lawrence_Market-Toronto_Ontario.html">Hotels near St. Lawrence Market</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d185115-Toronto_Island_Park-Toronto_Ontario.html">Hotels near Toronto Island Park</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d155481-Royal_Ontario_Museum-Toronto_Ontario.html">Hotels near Royal Ontario Museum</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d533212-Distillery_Historic_District-Toronto_Ontario.html">Hotels near Distillery Historic District</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d186168-Casa_Loma-Toronto_Ontario.html">Hotels near Casa Loma</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d186704-Toronto_Zoo-Toronto_Ontario.html">Hotels near Toronto Zoo</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d187000-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html">Hotels near The AGO, Art Gallery of Ontario</a>
</li>
<li class="subItem">
<a class="subLink" href="/HotelsNear-g155019-d155501-Hockey_Hall_of_Fame-Toronto_Ontario.html">Hotels near Hockey Hall of Fame</a>
</li>
</ul>
</li>
</ul>
</li>
</ul> </div>
</div>
<ul class="global-nav-links-menu-more"></ul>
</div>
<div class="global-nav-overlays-container"></div></div></div><div class="global-nav has-links" data-non-components><div class="global-nav-top"><div class="global-nav-bar global-nav-green global-nav-2018"><div class="ui_container global-nav-bar-container global-nav-mobile-web-rollout first-view persistent-icons global-nav-2018"><div class="global-nav-hamburger global-nav-icons show-left is-hidden-tablet global-nav-2018" onclick="return placementEvCall('taplc_global_nav_0', 'deferred/lateHandlers.showSidebarNav', event, this);"><span class="ui_icon menu-bars"></span><div class="ui_jewel marked_for_attention unread hidden"></div></div><a href="/" class="global-nav-logo-2018"data-ahref="L5iaVWyUooKUA" onclick="placementEvCall('taplc_global_nav_0', 'handlers.clickLogoLink', event, this);"><img src=https://static.tacdn.com/img2/langs/en_CA/branding/rebrand/TA_logo_secondary.svg alt=TripAdvisor class="global-nav-img global-nav-svg"/></a><!-- PLACEMENT global_nav_geopill --><div id="taplc_global_nav_geopill_0" class="ppr_rup ppr_priv_global_nav_geopill" data-placement-name="global_nav_geopill"><div class="global-nav-geopill global-nav-geopill-2018"data-id="155019"onclick="return remoteModule(event, this)"data-load-init="$plc:deferred/GeoSearch.init"data-load-css="src/build/styleguide/ui_overlays/flyouts"data-element=".hidden"data-recently-viewed-header="RECENTLY VIEWED"data-no-results="No results found"data-location-label="Nearby" data-location-denied-label="TripAdvisor was denied permission to access your location. Give your browser and TripAdvisor permission to use your current location and try again." data-geonavi-enabled=""data-cruise-home-redirect-enabled=""><span class="ui_pill inverted">Toronto<span class="ui_icon caret-down"></span></span><div class="hidden"><div class="ui_text"><input type="text" class="ui_input_text" placeholder="Where to?"/> <span class="ui_underline"></span></div><div class="ui_flyout_results"></div></div></div></div><div class="global-nav-actions-2018 global-nav-icons show-right"><!-- PLACEMENT global_nav_action_cart --><div id="taplc_global_nav_action_cart_0" class="ppr_rup ppr_priv_global_nav_action_cart" data-placement-name="global_nav_action_cart"></div><!-- PLACEMENT global_nav_action_trips --><div id="taplc_global_nav_action_trips_0" class="ppr_rup ppr_priv_global_nav_action_trips is-shown-at-tablet" data-placement-name="global_nav_action_trips"><div data-nav-2018-enabled="true" title="Trips"><div class="react-container component-widget " id='component_1' data-component-props='page-manifest' data-component='@ta/trips.trip-link'></div><div class="test-container hidden" data-is-ta-referrer="true"><div class="quick-save-test"><div class="ui_close_x"></div><div class="test-content"><span class="my-trips-tip">Tip:</span> All of your saved places can be found here in My Trips.</div></div></div></div></div><!-- PLACEMENT global_nav_action_inbox --><div id="taplc_global_nav_action_inbox_0" class="ppr_rup ppr_priv_global_nav_action_inbox is-shown-at-tablet" data-placement-name="global_nav_action_inbox"><div title="Inbox"> <div class="masthead-inbox-container"><div class="masthead-inbox-icon labeled-inbox-icon ui_icon comments" data-nav-2018-enabled="true"><div class="masthead-inbox-icon inbox-icon-label" data-nav-2018-enabled="true">Inbox</div></div><div class="ui_jewel labeled-inbox-icon marked_for_attention hidden"></div><div class="ui_jewel marked_for_attention inbox-jewel-test hidden "></div></div><div class="inbox-nav-contents ppr_rup ppr_priv_global_nav_action_inbox hidden"><div class="inbox-nav-dropdown with-login-cta"><div class="header"><div class="title">Inbox</div> <a class="see-all" href="/Inbox" onclick="ta.trackEventOnPage('Inbox|Dropdown', 'see_all', '', '40186');">See all</a> </div><div class="inbox-lander-thread-list-item js-inbox-lander-thread-list-item loading hidden"><div class="loading-animation"></div><div class="inbox-lander-thread-list-item-core-content"><div class="inbox-lander-thread-list-item-avatar-and-mobile-date"><div class="inbox-lander-thread-list-item-avatar"><div class="empty_avatar"></div></div></div><div class="inbox-lander-thread-list-item-message"><div class="inbox-lander-thread-list-item-skeleton-bar"></div><div class="inbox-lander-thread-list-item-skeleton-bar"></div><div class="inbox-lander-thread-list-item-skeleton-bar"></div></div></div></div><div class="inbox-masthead-wrapper"><div class="login-cta"><span>Log in</span> to get trip updates and message other travellers.</div> </div></div></div></div></div><!-- PLACEMENT global_nav_action_profile --><div id="taplc_global_nav_action_profile_0" class="ppr_rup ppr_priv_global_nav_action_profile is-shown-at-tablet" data-placement-name="global_nav_action_profile"><!-- Renderer is com.TripResearch.placements.renderers.core.GlobalNavProfileRenderer --><div class="global-nav-profile global-nav-utility"><a href="https://www.tripadvisor.ca/RegistrationController?flow=core_combined&pid=40422&returnTo=%2FLocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html&fullscreen=true" class="login-button labeled-profile-icon logout-profile" title="Profile"><span class="global-nav-utility-activator-2018 ui_icon button_container friend " data-page-property1="" data-page-property2="" data-page-property3="" data-page-property4=""><span class="profile-button-label" data-page-property1="" data-page-property2="" data-page-property3="" data-page-property4="">Profile</span></span></a><a href="https://www.tripadvisor.ca/RegistrationController?flow=core_combined&pid=40422&returnTo=%2FLocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html&fullscreen=true" class="ui_button secondary small login-button labeled-profile-icon core-login-button logout-profile" data-is-control="" data-tracking-pid="" data-join-attr="" data-flow-name="CORE_COMBINED" data-pid=40422 title="Join"/}">Join</a></div></div><!-- PLACEMENT masthead_search --><div id="taplc_masthead_search_0" class="ppr_rup ppr_priv_masthead_search" data-placement-name="masthead_search"><div class="masthead-search-button-responsive" title="Search"><div class="masthead-search-button" onclick="return placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.showSearchOverlay', event, this);"><span class="ui_icon search"></span><span class="masthead-search-button-label">Search</span> </div><span class="hidden"><div class="search_overlay_content ui_container social_typeahead_2018" data-div-classes="ppr_rup ppr_priv_masthead_search"><div id="DUAL_SEARCH_LOADER_CONTAINER" class="dual_search_loader_container"><div class="dual_search_loader_overlay"></div><div class="dual_search_loader_visual"><div class="ui_spinner"></div></div></div><div class="just_padding"><div class="no_cpu"><form class="search_form ui_columns is-multiline" method="get" action="/Search" onsubmit="return placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.submitForm', event, this);" id="global_nav_search_form"><div class="ui_column is-10"><div class="search_line ui_columns is-multiline"><div id="MAIN_SEARCH_CONTAINER" class="mainSearchContainer ui_column is-7"><div class="input_box"><span class="typeahead_icon what_neighbor ui_icon search"></span><div class="what_with_highlight"><input id="mainSearch" type="search" class="text focusClear" autocomplete="off" onBlur="placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.whatFocused', event, this)" onfocus="placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.whatFocused', event, this)" onkeydown="if (ta && (event.keyCode || event.which)=== 13){ta.setEvtCookie('TopNav_Search', 'Action', 'Hit_Enter_toSRP', 0, '/Search');}" onkeyup="placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.searchInputKeyUp', event, this)" autocorrect="off" spellcheck="false" placeholder="Search TripAdvisor"/><span id="CLEAR_WHAT" class="clear-text ui_icon times-circle-fill hidden"></span><span class="input_highlight"></span></div></div></div><div id="GEO_SCOPE_CONTAINER" class="geoScopeContainer ui_column is-5"><div class="input_box"><span class="typeahead_icon where_neighbor ui_icon map-pin-fill"></span><div class="where_with_highlight"><input id="GEO_SCOPED_SEARCH_INPUT" type="text" class="text geoScopeInput " onBlur="placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.whereFocused', event, this)" onfocus="placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.whereFocused', event, this)" onkeyup="placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.searchInputKeyUp', event, this)" value="Toronto, Ontario" autocorrect="off" spellcheck="false" placeholder="Enter a destination"/><span id="CLEAR_WHERE" class="clear-text ui_icon times-circle-fill hidden"></span><span class="input_highlight"></span></div><span class="hidden geoExample">Enter a destination</span><span class="where_neighbor without_dropdown ui_icon caret-down"></span></div></div></div></div><div class="ui_column is-2 search_line_block"><button id="SEARCH_BUTTON" class="search_button" type="submit" onclick="if (ta && event.clientY) { document.getElementById('global_nav_search_form').elements['pid'].value=3825; }ta && ta.setEvtCookie('TopNav_Search', 'Action', 'Search_Button_toSRP', 0, '/Search');return placementEvCall('taplc_masthead_search_0', 'deferred/lateHandlers.submitClicked', event, this);" name="sub-search"><div id="SEARCH_BUTTON_CONTENT"><div class="inner">Search</div> </div></button></div><input id="TYPEAHEAD_GEO_ID" type="hidden" name="geo" value="155019"><input id="TYPEAHEAD_LATITUDE" type="hidden" name="latitude" value=""><input id="TYPEAHEAD_LONGITUDE" type="hidden" name="longitude" value=""><input id="TYPEAHEAD_NEARBY" type="hidden" name="searchNearby" value=""><input type="hidden" name="pid" value="3826"><input id="TOURISM_REDIRECT" type="hidden" name="redirect" value=""><input id="MASTAHEAD_TYPEAHEAD_START_TIME" type="hidden" name="startTime" value=""><input id="MASTAHEAD_TYPEAHEAD_UI_ORIGIN" type="hidden" name="uiOrigin" value=""><input id="MASTHEAD_MAIN_QUERY" type="hidden" name="q" value=""><input id="MASTHEAD_SUPPORTED_SEARCH_TYPES" type="hidden" name="supportedSearchTypes" value="find_near_stand_alone_query"><input id="MASTHEAD_ENABLE_NEAR_PAGE" type="hidden" name="enableNearPage" value="true"><input type="hidden" name="returnTo" value="https%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__LocationPhotoDirectLink__2D__g155019__2D__d707612__2D__i244255527__2D__Oyster__5F__Boy__2D__Toronto__5F__Ontario__2E__html"><input type="hidden" name="searchSessionId" value="452AA622C89AA7D4C4AC4EF2476362351546783277576ssid"><input type="hidden" id="SOCIAL_TYPEAHEAD_2018_FEATURE" name="social_typeahead_2018_feature" value="true"></form></div><div class="ui_columns results_panel"><div class="ui_column is-10 ui_columns results_panel"><div class="what_results ui_column is-7 hidden"></div><div class="where_results ui_column is-offset-7 is-5 hidden"></div></div></div></div></div></span></div></div></div></div></div><div class="global-nav-links global-nav-bottom global-nav-white ui_tabs is-hidden-mobile"><div class="ui_container ui_columns is-gapless"><div class="links_container ui_column is-11"><!-- PLACEMENT global_nav_links --><div id="taplc_global_nav_links_0" class="ppr_rup ppr_priv_global_nav_links" data-placement-name="global_nav_links"><div class="global-nav-links-container "><ul class="global-nav-links-menu"><li class="nav-sub-item" data-element=".masthead-dropdown-tourism"data-ahref="L5iaVWyUooKUA"onclick="placementEvCall('taplc_global_nav_links_0', 'handlers.clickAboutGeoLink', event, this);"><span class=" head-link global-nav-link global-nav-link-2018 ui_tab ">Travel feed: Toronto</span></li><li class="nav-sub-item" data-element=".masthead-dropdown-hotels"><a href="/Hotels-g155019-Toronto_Ontario-Hotels.html"id="global-nav-hotels" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="hotels"><span class="ui_icon hotels"></span>Hotels</a></li><li class="nav-sub-item" data-element=".masthead-dropdown-attractions"><a href="/Attractions-g155019-Activities-Toronto_Ontario.html"id="global-nav-attractions" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="attractions"><span class="ui_icon attractions"></span>Things to do</a></li><li class="nav-sub-item" data-element=".masthead-dropdown-restaurants"><a href="/Restaurants-g155019-Toronto_Ontario.html"id="global-nav-restaurants" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="restaurants"><span class="ui_icon restaurants"></span>Restaurants</a></li><li class="nav-sub-item" data-element=".masthead-dropdown-flights"><a href="/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"id="global-nav-flights" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="flights"><span class="ui_icon flights"></span>Flights</a></li><li class="nav-sub-item" data-element=".masthead-dropdown-vr"><a href="/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"id="global-nav-vr" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="vr"><span class="ui_icon vacation-rentals"></span>Vacation Rentals</a></li><li class="nav-sub-item" data-element=".masthead-dropdown-cars"><a href="/RentalCars-g155019-Toronto_Ontario.html"id="global-nav-cars" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="cars"><span class="ui_icon parking"></span>Rental Cars</a></li><li class="nav-sub-item force-more" data-element=".masthead-dropdown-Forums"><a href="/ShowForum-g155019-i55-Toronto_Ontario.html"id="global-nav-Forums" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="Forums"><span class="ui_icon forums"></span>Travel Forum</a></li><li class="nav-sub-item force-more" data-element=".masthead-dropdown-no_id"><a href="/Airlines"id="global-nav-no_id" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="Airlines"><span class="ui_icon flights"></span>Airlines</a></li><li class="nav-sub-item force-more" data-element=".masthead-dropdown-no_id"><a href="/Travel_Guide-g155019-Toronto_Ontario.html"id="global-nav-no_id" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="TravelGuide"><span class="ui_icon guides"></span>Travel Guides</a></li><li class="nav-sub-item force-more" data-element=".masthead-dropdown-no_id"><a href="/TravelersChoice"id="global-nav-no_id" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="TravelersChoice"><span class="ui_icon travelers-choice-badge"></span>Best of 2018</a></li><li class="nav-sub-item force-more" data-element=".masthead-dropdown-no_id"><a href="/RoadTrip-g153339-Canada.html"id="global-nav-no_id" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="RoadTrips">Road Trips</a></li><li class="nav-sub-item force-more" data-element=".masthead-dropdown-HelpDesk"><a href="#"id="global-nav-HelpDesk" class=" global-nav-link global-nav-link-2018 ui_tab "data-tracking-label="HelpDesk"><span class="ui_icon question-circle"></span>Help Centre</a></li></ul><ul class="global-nav-links-menu-ellipsis is-top-only"><li class="global-nav-links-ellipsis"><span class="global-nav-link global-nav-link-2018 ui_tab ellipsis"><span class="ui_icon more-horizontal"></span></span></li></ul></div></div></div><div class="message_container ui_column is-1"></div></div></div></div><!--[if lte IE 8]><style type="text/css">.sidebar-nav-backdrop,.sidebar-nav-container.off-canvas {display: none;}</style><![endif]--><div class="sidebar-nav-container reorg-with-icons off-canvas is-hidden-tablet is-hidden-desktop"><div class="sidebar-nav-contents ui_container"><div class="sidebar-nav-header"><div class="sidebar-nav-close" onclick="return placementEvCall('taplc_global_nav_0', 'deferred/lateHandlers.hideSidebarNav', event, this);"><div class="ui_icon times"></div></div><a href="/" class="global-nav-logo"><img src=https://static.tacdn.com/img2/langs/en_CA/branding/rebrand/TA_logo_primary.svg alt=TripAdvisor class="global-nav-img"/></a></div><div class="sidebar-nav-profile-container"><a href="https://www.tripadvisor.ca/RegistrationController?flow=core_combined&pid=40422&returnTo=%2FLocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html&fullscreen=true&flowOrigin=login" class="ui_button secondary fullwidth login-button button_container" data-page-property1="" data-page-property2="" data-page-property3="" data-page-property4="">Log in</a> <a href="https://www.tripadvisor.ca/RegistrationController?flow=core_combined&pid=40422&returnTo=%2FLocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html&fullscreen=true&flowOrigin=join" class="ui_button primary fullwidth login-button">Join</a> <ul class="sidebar-nav-profile"><li class="nav-sub-item"></li> <li class="nav-sub-item"><a href="/Recent" class="nav-sub-link" data-tracking-label="Recently_viewed">Recently viewed</a></li> <li class="nav-sub-item"><a href="/Bookings" class="nav-sub-link" data-tracking-label="UserProfile_ManagementCenter">Bookings</a></li> <li class="nav-sub-item"><a href="/Inbox" class="nav-sub-link inbox" data-tracking-label="UserProfile_inbox_no_unread"><div class="label-and-icon">Inbox <div class="icon-and-jewel hidden"><div class="ui_icon comments"></div><div class="ui_jewel marked_for_attention"></div></div></div></a></li></ul></div><div class="sidebar-nav-links-container"><div class="sidebar-nav-links"></div><div class="sidebar-nav-links-more"><span class="nav-sub-link nav-sub-link-more" onclick="return placementEvCall('taplc_global_nav_0', 'deferred/lateHandlers.toggleMoreLinks', event, this);">More <span class="ui_icon single-chevron-down"></span></span><ul class="sub-list"></ul></div><a href="#" id="global-nav-HelpDesk" class="global-nav-link" data-tracking-label="HelpDesk">Help Centre</a> </div></div></div><div class="sidebar-nav-backdrop is-hidden-tablet is-hidden-desktop" onclick="return placementEvCall('taplc_global_nav_0', 'deferred/lateHandlers.hideSidebarNav', event, this);"></div></div><div class="global-nav-no-refresh" id="global-nav-no-refresh-2"><!-- PLACEMENT global_nav_onpage_assets --><div id="taplc_global_nav_onpage_assets_0" class="ppr_rup ppr_priv_global_nav_onpage_assets is-shown-at-tablet" data-placement-name="global_nav_onpage_assets">
<!-- PLACEMENT global_nav_onpage_assets -->
<div class="inner ">
<div class="ui_container with_masthead ">
<h1 class="header heading fr">Catering event - Picture of Oyster Boy, Toronto</h1>
<!--trkP:trip_planner_breadcrumbs-->
<!-- PLACEMENT trip_planner_breadcrumbs -->
<DIV ID="taplc_trip_planner_breadcrumbs_0" class="ppr_rup ppr_priv_trip_planner_breadcrumbs" data-placement-name="trip_planner_breadcrumbs">
<ul class="breadcrumbs"><li class="breadcrumb"><a class="link" href="/Tourism-g153339-Canada-Vacations.html" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'Country', 1, '/Tourism-g153339-Canada-Vacations.html');"><span>Canada</span></a> <span class="ui_icon single-chevron-right"></span> </li><li class="breadcrumb"><a class="link" href="/Tourism-g154979-Ontario-Vacations.html" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'Province', 2, '/Tourism-g154979-Ontario-Vacations.html');"><span>Ontario</span></a> <span class="ui_icon single-chevron-right"></span> </li><li class="breadcrumb"><a class="link" href="/Tourism-g155019-Toronto_Ontario-Vacations.html" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'City', 3, '/Tourism-g155019-Toronto_Ontario-Vacations.html');"><span>Toronto</span></a> <span class="ui_icon single-chevron-right"></span> </li><li class="breadcrumb"><a class="link" href="/Restaurants-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('Breadcrumbs', 'click', '', 4, '/Restaurants-g155019-Toronto_Ontario.html'); return ta.plc_trip_planner_breadcrumbs_0_handlers.onClick('mcreset','true');"><span>Toronto Restaurants</span></a> <span class="ui_icon single-chevron-right"></span> </li><li class="breadcrumb">Oyster Boy Pictures</li></ul></DIV>
<!--etk-->
</div>
</div>
</div></div></DIV>
<!--etk-->
</div>
<div id="HEADING_GROUP">
<h1 id="HEADING">Photo: “Catering event”</h1> <div class="below_h1">From Review:
<span class="review_title">
<a onclick="return ta.call('ta.servlet.Popup.openInParent', event, $(this), true);" href="/ShowUserReviews-g155019-d707612-r463755650-Oyster_Boy-Toronto_Ontario.html#UR463755650">Spot on!</a>
</span>
of Oyster Boy
</div>
</div>
<div id="MAINWRAP" class=" ">
<div id="MAIN" class="LocationPhotoDirectLink
prodp13n_jfy_overflow_visible
">
<div id="BODYCON" class="col easyClear poolX adjust_padding new_meta_chevron new_meta_chevron_v2">
<div class="wrpHeader">
<div id="headingWrapper" class="headerNoSaves jfy_beta " style="">
</div>
</div>
<div id="LOC_PHOTOS_TOP">
<div class="hotel_details">
<!--trkP:poi_details-->
<!-- PLACEMENT poi_details -->
<DIV ID="taplc_poi_details_0" class="ppr_rup ppr_priv_poi_details" data-placement-name="poi_details">
<div class="detail_2015">
<div class="header_container">
<div class="full_width">
<div class="headingWrapper easyClear "">
<div class="heading_name_wrapper">
<div class="heading_name ">
<div class="heading_height"></div>
<a href="/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html"> Oyster Boy
</a>
</div>
</div>
<div class="rblock fr">
<span class="wrpButton fl"> <a class="ui_button primary small" href="/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html">See all 208 reviews</a> </span>
</div>
<div class="clear"></div>
<div class="heading_ratings">
<div class="heading_rating separator">
<div class="rs rating">
<span>
<span class="ui_bubble_rating bubble_45" alt="4.5 of 5 bubbles"></span>
</span>
<a class="more taLnk" href="/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html#REVIEWS">208 Reviews</a>
</div>
</div>
<div class="heading_rating separator">
<!-- Best rank -->
<span onclick="ta.util.cookie.setPIDCookie(15191); ta.trackEventOnPage('RATINGS_INFO', 'Restaurants', 'click');">
<div class="slim_ranking">
<b class="rank_text wrap"><span class="">#26</span></b> of 7,432 <a href="/Restaurants-g155019-Toronto_Ontario.html">Restaurants in Toronto</a> </div>
</span>
</div>
<div class="heading_rating separator">
<div class="coeBadgeDiv" onclick="uiOverlay(event, this); if (!this.getAttribute('data-first')){ta.trackEventOnPage('CertificateOfExcellence', 'LocationPhotoDirectLink', 'Certificate_Of_Excellence_Badge'); this.setAttribute('data-first', 1);}" data-modal="small coeOverlay" data-position="center" data-windowshade="" data-url="/StaticVelocityPage?t=coe_overlay.vm" data-options="autoReposition">
<span class="ui_icon certificate-of-excellence"></span>
<span class="taLnk text"> Certificate of Excellence</span> </div>
</div>
</div>
<address class="addressReset">
<span class="format_address"><span class="street-address">872 Queen St W</span>, <span class="locality">Toronto, Ontario M6J 1G3, </span><span class="country-name">Canada</span> </span>
</address>
</div>
</div>
</div>
</div>
</DIV>
<!--etk-->
</div> </div>
<div id="LOC_PHOTOS_MID">
<div class="top_left_bar ">
<div class="meta">
<!--trkP:restaurant_simple_meta-->
<!-- PLACEMENT restaurant_simple_meta -->
<DIV ID="taplc_restaurant_simple_meta_0" class="ppr_rup ppr_priv_restaurant_simple_meta" data-placement-name="restaurant_simple_meta">
</DIV>
<!--etk-->
</div>
<div class="below_meta ">
<div class="recent_reviews">
<!--trkP:other_recent_reviews-->
<!-- PLACEMENT other_recent_reviews -->
<DIV ID="taplc_other_recent_reviews_0" class="ppr_rup ppr_priv_other_recent_reviews" data-placement-name="other_recent_reviews">
<div class="recent_reviews">
<div class="title">Other Recent Reviews</div>
<div class="reviews">
<div class="one_review">
<a class="snippet" href="/ShowUserReviews-g155019-d707612-r635675742-Oyster_Boy-Toronto_Ontario.html#REVIEWS" id="rcom.TripResearch.userreview.UserReviewDisplayInfo@200d4bec.id">
“Oysters,Oysters and Oysters Yummy”	
</a>
<span class="date">25/11/2018</span>
</div> <div class="one_review">
<a class="snippet" href="/ShowUserReviews-g155019-d707612-r631349153-Oyster_Boy-Toronto_Ontario.html#REVIEWS" id="rcom.TripResearch.userreview.UserReviewDisplayInfo@7ab219e8.id">
“Raw Is Good”	
</a>
<span class="date">06/11/2018</span>
</div> </div>
<div class="total">
<a href="/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html">Read all 208 reviews</a>
</div> </div>
</DIV>
<!--etk-->
</div>
</div>
</div>
<div class="big_photo">
<!--trkP:lpdl_photo_carousel-->
<!-- PLACEMENT lpdl_photo_carousel -->
<DIV ID="taplc_lpdl_photo_carousel_0" class="ppr_rup ppr_priv_lpdl_photo_carousel" data-placement-name="lpdl_photo_carousel">
<div class="viewer">
<div class="photos" itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
<div id="photo_244255527">
<input type="hidden" id="photo_244255527_mediatype" value="photo">
<div class="photoBox">
<div class="photoImg" onmouseover="window.showMainImageNav && showMainImageNav('photo_244255527')" onmouseout="window.hideMainImageNav && hideMainImageNav('photo_244255527')">
<div class="imgBx">
<img class="taLnk big_photo" style="display: block; width: 672px; height: 502px; " src="https://media-cdn.tripadvisor.com/media/photo-s/0e/8f/0b/27/catering-event.jpg" alt="Oyster Boy: Catering event" title="Catering event" oncontextmenu="return ta.call('ta.servlet.Photos.rightClick', event, this, imageClickData)" onclick='ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255509, 463755650);'>
</div> </div>
</div> </div>
<div id="photo_244255509" style="display:none;">
<input type="hidden" id="photo_244255509_mediatype" value="photo">
<div class="photoBox">
<div class="photoImg" onmouseover="window.showMainImageNav && showMainImageNav('photo_244255509')" onmouseout="window.hideMainImageNav && hideMainImageNav('photo_244255509')">
<div class="imgBx">
<img class="taLnk big_photo" style="display: block; width: 672px; height: 502px; " src="https://media-cdn.tripadvisor.com/media/photo-s/0e/8f/0b/15/seafood-platter.jpg" alt="Oyster Boy: Seafood platter" title="Seafood platter" oncontextmenu="return ta.call('ta.servlet.Photos.rightClick', event, this, imageClickData)" onclick='ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255492, 463755650);'>
</div> </div>
</div> </div>
<div id="photo_244255492" style="display:none;">
<input type="hidden" id="photo_244255492_mediatype" value="photo">
<div class="photoBox">
<div class="photoImg" onmouseover="window.showMainImageNav && showMainImageNav('photo_244255492')" onmouseout="window.hideMainImageNav && hideMainImageNav('photo_244255492')">
<div class="imgBx">
<img class="taLnk big_photo" style="display: block; width: 672px; height: 502px; " src="https://media-cdn.tripadvisor.com/media/photo-s/0e/8f/0b/04/more.jpg" alt="Oyster Boy: More" title="More" oncontextmenu="return ta.call('ta.servlet.Photos.rightClick', event, this, imageClickData)" onclick='ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255467, 463755650);'>
</div> </div>
</div> </div>
<div id="photo_244255467" style="display:none;">
<input type="hidden" id="photo_244255467_mediatype" value="photo">
<div class="photoBox">
<div class="photoImg" onmouseover="window.showMainImageNav && showMainImageNav('photo_244255467')" onmouseout="window.hideMainImageNav && hideMainImageNav('photo_244255467')">
<div class="imgBx">
<img class="taLnk big_photo" style="display: block; width: 672px; height: 502px; " src="https://media-cdn.tripadvisor.com/media/photo-s/0e/8f/0a/eb/oysters.jpg" alt="Oyster Boy: Oysters" title="Oysters" oncontextmenu="return ta.call('ta.servlet.Photos.rightClick', event, this, imageClickData)" onclick='ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255435, 463755650);'>
</div> </div>
</div> </div>
<div id="photo_244255435" style="display:none;">
<input type="hidden" id="photo_244255435_mediatype" value="photo">
<div class="photoBox">
<div class="photoImg" onmouseover="window.showMainImageNav && showMainImageNav('photo_244255435')" onmouseout="window.hideMainImageNav && hideMainImageNav('photo_244255435')">
<div class="imgBx">
<img class="taLnk big_photo" style="display: block; width: 672px; height: 502px; " src="https://media-cdn.tripadvisor.com/media/photo-s/0e/8f/0a/cb/pairing-champagne-cocktail.jpg" alt="Oyster Boy: Pairing champagne cocktail" title="Pairing champagne cocktail" oncontextmenu="return ta.call('ta.servlet.Photos.rightClick', event, this, imageClickData)" onclick='ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(211675751, 408032676);'>
</div> </div>
</div> </div>
<div id="photo_211675751" style="display:none;">
<input type="hidden" id="photo_211675751_mediatype" value="photo">
<div class="photoBox">
<div class="photoImg" onmouseover="window.showMainImageNav && showMainImageNav('photo_211675751')" onmouseout="window.hideMainImageNav && hideMainImageNav('photo_211675751')">
<div class="imgBx">
<img class="taLnk big_photo" style="display: block; width: 296px; height: 528px; margin-right: 188px; " src="https://media-cdn.tripadvisor.com/media/photo-s/0c/9d/ea/67/seafood-delight.jpg" alt="Oyster Boy: Seafood delight" title="Seafood delight" oncontextmenu="return ta.call('ta.servlet.Photos.rightClick', event, this, imageClickData)" onclick="return ta.servlet.Photos.handlePagedFilterOption('/LocationPhotoDirectLink-g155019-d707612-i190506386-Oyster_Boy-Toronto_Ontario.html');">
</div> </div>
</div> </div>
<div class="thumbImg wrap">
<a onclick="return ta.servlet.Photos.handlePagedFilterOption('/LocationPhotoDirectLink-g155019-d707612-i275491653-Oyster_Boy-Toronto_Ontario.html');" href="/LocationPhotoDirectLink-g155019-d707612-i275491653-Oyster_Boy-Toronto_Ontario.html">
<div class="hoverHighlight left"><div class="arrow"></div></div>
</a>
<div class="thumblpdl">
<a href="/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html" class="" onclick="ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255527, 463755650); return false;">
<img id="thumb_244255527" class="thumbSelected" style="width:95px; height:90px; " src="https://media-cdn.tripadvisor.com/media/photo-l/0e/8f/0b/27/catering-event.jpg" alt="Catering event">
</a>
</div>
<div class="thumblpdl">
<a href="/LocationPhotoDirectLink-g155019-d707612-i244255509-Oyster_Boy-Toronto_Ontario.html" class="" onclick="ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255509, 463755650); return false;">
<img id="thumb_244255509" style="width:95px; height:90px; " src="https://media-cdn.tripadvisor.com/media/photo-l/0e/8f/0b/15/seafood-platter.jpg" alt="Seafood platter">
</a>
</div>
<div class="thumblpdl">
<a href="/LocationPhotoDirectLink-g155019-d707612-i244255492-Oyster_Boy-Toronto_Ontario.html" class="" onclick="ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255492, 463755650); return false;">
<img id="thumb_244255492" style="width:95px; height:90px; " src="https://media-cdn.tripadvisor.com/media/photo-l/0e/8f/0b/04/more.jpg" alt="More">
</a>
</div>
<div class="thumblpdl">
<a href="/LocationPhotoDirectLink-g155019-d707612-i244255467-Oyster_Boy-Toronto_Ontario.html" class="" onclick="ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255467, 463755650); return false;">
<img id="thumb_244255467" style="width:95px; height:90px; " src="https://media-cdn.tripadvisor.com/media/photo-l/0e/8f/0a/eb/oysters.jpg" alt="Oysters">
</a>
</div>
<div class="thumblpdl">
<a href="/LocationPhotoDirectLink-g155019-d707612-i244255435-Oyster_Boy-Toronto_Ontario.html" class="" onclick="ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(244255435, 463755650); return false;">
<img id="thumb_244255435" style="width:95px; height:90px; " src="https://media-cdn.tripadvisor.com/media/photo-l/0e/8f/0a/cb/pairing-champagne-cocktail.jpg" alt="Pairing champagne cocktail">
</a>
</div>
<div class="thumblpdl last">
<a href="/LocationPhotoDirectLink-g155019-d707612-i211675751-Oyster_Boy-Toronto_Ontario.html" class="last" onclick="ta.plc_lpdl_photo_carousel_0_handlers.switchPhoto(211675751, 408032676); return false;">
<img id="thumb_211675751" style="width:95px; height:90px; " src="https://media-cdn.tripadvisor.com/media/photo-l/0c/9d/ea/67/seafood-delight.jpg" alt="Seafood delight">
</a>
</div>
<a onclick="return ta.servlet.Photos.handlePagedFilterOption('/LocationPhotoDirectLink-g155019-d707612-i190506386-Oyster_Boy-Toronto_Ontario.html');" href="/LocationPhotoDirectLink-g155019-d707612-i190506386-Oyster_Boy-Toronto_Ontario.html">
<div class="hoverHighlight right"><div class="arrow"></div></div>
</a>
</div> </div> </div>
</DIV>
<!--etk-->
</div>
</div>
<div id="xsell_container">
</div>
<div id="LOC_PHOTOS" class="gridA">
<div class="col balance">
<div id="REVIEWS">
<div id="review_463755650" class="reviewSelector">
<div class="review basic_review inlineReviewUpdate provider0">
<div class="col1of2">
<div class="member_info">
<div id="UID_50437BB10FBD5470D57B4AD5B3825B5B-SRC_463755650" class="memberOverlayLink" onmouseover="requireCallIfReady('members/memberOverlay', 'initMemberOverlay', event, this, this.id, 'Reviews', 'user_name_photo');" data-anchorWidth="90">
<div class="avatar profile_50437BB10FBD5470D57B4AD5B3825B5B ">
<a onclick=>
<img width="74" id="lazyload_-853063355_0" class="avatar" height="74" src='https://static.tacdn.com/img2/x.gif'/>
</a>
</div>
<div class="username mo">
<span dir="auto" class="expand_inline scrname mbrName_50437BB10FBD5470D57B4AD5B3825B5B" onclick="ta.trackEventOnPage('Reviews', 'show_reviewer_info_window', 'user_name_name_click')"> Fecklar</span>
</div>
</div>
<div class="location">
Toronto, Canada
</div>
</div>
<div class="memberBadging g10n">
<div id="UID_50437BB10FBD5470D57B4AD5B3825B5B-CONT" class="no_cpu" onclick="ta.util.cookie.setPIDCookie('15984'); requireCallIfReady('members/memberOverlay', 'initMemberOverlay', event, this, this.id, 'Reviews', 'review_count');" data-anchorWidth="90">
<div class="bold badge lvl_03">
Level <span><span class="ui_level_badge"><span class="contribution-count">3</span> <span class="ui_icon level-badge"></span></span></span> Contributor </div>
<div class="reviewerBadge badge">
<img alt="" width="20" id="lazyload_-853063355_1" class="icon lazy" height="20" src='https://static.tacdn.com/img2/x.gif'/>
<span class="badgeText">16 reviews</span> </div>
<div class="contributionReviewBadge badge">
<img alt="" width="20" id="lazyload_-853063355_2" class="icon lazy" height="20" src='https://static.tacdn.com/img2/x.gif'/>
<span class="badgeText">9 restaurant reviews</span>
</div>
</div>
<div id="UID_50437BB10FBD5470D57B4AD5B3825B5B-HV" class="helpfulVotesBadge badge no_cpu" onclick="ta.util.cookie.setPIDCookie('15983'); requireCallIfReady('members/memberOverlay', 'initMemberOverlay', event, this, this.id, 'Reviews', 'helpful_count');" data-anchorWidth="90">
<img alt="common_n_restaurant_reviews_1bd8" width="20" id="lazyload_-853063355_3" class="icon lazy " height="20" src='https://static.tacdn.com/img2/x.gif'/>
<span class="badgeText">
3 helpful votes </span>
</div>
</div>
</div>
<div class="col2of2">
<div class="innerBubble">
<div class="wrap">
<div class="quote">
<a href="/ShowUserReviews-g155019-d707612-r463755650-Oyster_Boy-Toronto_Ontario.html#REVIEWS" onclick="ta.setEvtCookie('Reviews','title','',0,this.href); ta.util.cookie.setPIDCookie('4442');" id="rn463755650">“<span class='noQuotes'>Spot on!</span>”</a>
</div>
<div class="rating reviewItemInline">
<span class="ui_bubble_rating bubble_50"></span>
<span class="ratingDate">Reviewed March 1, 2017
</span>
</div>
<div class="entry">
<p class="partial_entry">
Oyster boys is a very unassuming little place on queen street west. They offer an abundance of seafood options as well as choices of fresh oysters and pairings. We've had the oysters on several occasions and they were fresh clean and succulent. We've also utilized their catering services and our event went off without a hitch with the oyster bar...
<span class="partnerRvw">
<span class="taLnk hvrIE6 tr463755650 moreLink ulBlueLinks" onclick=" ta.util.cookie.setPIDCookie(4444); ta.call('ta.servlet.Reviews.expandReviews', {type: 'dummy'}, ta.id('review_463755650'), 'review_463755650', '1', 4444);
">
More </span>
<span class="ui_icon caret-down"></span>
</span>
</p>
</div>
<div class="wrap">
<div id="helpfulq463755650_collapsed" class="helpful redesigned white_btn_container ">
<span class="isHelpful">Helpful?</span> <div class="tgt_helpfulq463755650 rnd_white_thank_btn" onclick="ta.call('ta.servlet.Reviews.helpfulVoteHandlerOb', event, this, 'LeJIVqd4EVIpECri1GII2t6mbqgqguuuxizSxinJqgRinJISiCwGiIixMSEVnIRSC9qHyUooKUAqHMkKk3UXqHSXddXoooXkqHNgtIVEQQoqnQQ7igqHriEiCIiQQoqnQQNCIJESixiGIac6XoXmqoTpcd3mkoo3oK0tEn1d3mkoo3oK0zH1UooKUA0pSM1oKdmk77UKqn7xModkKxMok7dbxMo7mvXo7o70npEEeJIV1K0EJIVqiJcpV1U0Ii9VC1rZlU3XozxbzzkAy5bd5LkXzCzCCeckx5IpxXCSzsG9Gq8TcqIvugqQqixbszsK7pTuvVqIZVx5ovntSMvLaCKq8moczCVqnzCpuhnIUANzsxdd3hhxdzsrxM2nLETgezCeaapSwGxbzzJx2xdZewn9xEq8zCakrGx5fzs2tnxdpVtKdVGxdq89HixEnx2qiVuqQxMEqiVLfhvxMAvy5zzyOfNVq8DzsqnNbS'); ta.trackEventOnPage('HELPFUL_VOTE_TEST', 'helpfulvotegiven_v2');">
<span class="helpful_thumbs_up white ui_icon thumbs-up-fill"></span>
<span class="helpful_thumbs_up green ui_icon thumbs-up-fill"></span>
<span class="helpful_text">Thank Fecklar</span> </div>
</div>
<div class="tooltips vertically_centered">
</div>
</div>
</div>
</div> </div> </div>
</div>
</div>
<div class="add_r_p">
<div class="cta">Been to Oyster Boy? Share your experience!</div>
<div class="cta_buttons">
<span class="wrpButton"> <a class="ui_button primary small" href="/UserReview-g155019-d707612-ehttps%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__LocationPhotoDirectLink__2D__g155019__2D__d707612__2D__i244255527__2D__Oyster__5F__Boy__2D__Toronto__5F__Ontario__2E__html-Oyster_Boy-Toronto_Ontario.html" onclick="ta.setEvtCookie('LocationPhotoDirectLink', 'write_review', '', 0, '/UserReviewEdit')"> Write a Review
</a> </span>
<span class="wrpButton"> <a class="ui_button primary small" href="/PostPhotos-g155019-d707612-ehttps%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__LocationPhotoDirectLink__2D__g155019__2D__d707612__2D__i244255527__2D__Oyster__5F__Boy__2D__Toronto__5F__Ontario__2E__html-Oyster_Boy-Toronto_Ontario.html">Add Photo</a> </span>
</div>
</div>
<div class="wrpButton"> <a class="ui_button primary small" href="/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html">See all 208 reviews of Oyster Boy</a> </div>
</div>
<div class="col sidebar">
<div class="lpbox">
<div class="ad iab_medRec">
<div id="gpt-ad-300x250-300x600" class="adInner gptAd"></div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<div id="FOOT_CONTAINER">
<!--trkP:qualtrics_survey-->
<!-- PLACEMENT qualtrics_survey -->
<DIV ID="taplc_qualtrics_survey_0" class="ppr_rup ppr_priv_qualtrics_survey" data-placement-name="qualtrics_survey">
</DIV>
<!--etk-->
<!--trkP:browser_mode_tracking-->
<!-- PLACEMENT browser_mode_tracking -->
<DIV ID="taplc_browser_mode_tracking_0" class="ppr_rup ppr_priv_browser_mode_tracking" data-placement-name="browser_mode_tracking">
</DIV>
<!--etk-->
<!--trkP:global_footer-->
<!-- PLACEMENT global_footer -->
<DIV ID="taplc_global_footer_0" class="ppr_rup ppr_priv_global_footer" data-placement-name="global_footer">
<div class="foot "><div class="ui_container"><div class="ui_columns is-multiline is-mobile"><div class="ui_column bottom_on_mobile is-7-tablet is-12-mobile"><div class="logo_slogan"><img class="logo_svg " src="https://static.tacdn.com/img2/langs/en_CA/branding/rebrand/TA_logo_primary.svg" alt="TripAdvisor"/><span class="footer-tag-line">know better <span class="ui_icon ui_single_bubble_rating"></span> book better <span class="ui_icon ui_single_bubble_rating"></span> go better </span></div><div class="legal_section">© 2019 TripAdvisor LLC All rights reserved. <DIV class="prw_rup prw_homepage_tripadvisor_horizontal_footer_links" data-prwidget-name="homepage_tripadvisor_horizontal_footer_links" data-prwidget-init="handlers"><a href="https://tripadvisor.mediaroom.com/caen-terms-of-use" class="ui_link footer_link" data-track-action="terms_of_use">Terms of Use</a> | <a href="https://tripadvisor.mediaroom.com/caen-privacy-policy" class="ui_link footer_link" data-track-action="privacy_policy">Privacy Policy</a> | <a href="/SiteIndex-g153339-Canada.html" class="ui_link footer_link" data-track-action="site_map">Site Map</a></DIV><div class="disclaimer is-hidden-mobile">* TripAdvisor LLC is not a booking agent and does not charge any service fees to users of our site... (<span id="TERMS" class="ui_link" onclick="ta.plc_global_footer_0_handlers.getFullDisclaimerText(this)">more</span>) </div><div class="external_disclaimer is-hidden-mobile">TripAdvisor LLC is not responsible for content on external web sites. Taxes, fees not included for deals content.</div> </div></div><div class="ui_column is-2-tablet is-12-mobile"><div class="footer_section"><DIV class="prw_rup prw_homepage_tripadvisor_footer_links" data-prwidget-name="homepage_tripadvisor_footer_links" data-prwidget-init="handlers"><div class="ftrLinkHeader">EXPLORE</div><div class="footerLinks" onclick="(ta.prwidgets.getjs(this,'handlers')).checkForPid(event);"><a class="footerLink ui_link" href="https://tripadvisor.mediaroom.com/caen-about-us" data-track-action="about_us">About Us</a><span class="footerLink ui_link js_click" data-id="help_center" data-url="/uvpages/helpCenterOverlay.html" data-track-action="help_center">Help Centre</span></div></DIV></div></div><div class="ui_column top_on_mobile is-3-tablet is-12-mobile"><div class="footer_section section_with_border_separator_mobile"><DIV class="prw_rup prw_homepage_footer_pickers" data-prwidget-name="homepage_footer_pickers" data-prwidget-init="handlers"><div class="ftrHeader">CURRENCY/REGION</div><div class="unified-picker" onclick="(ta.prwidgets.getjs(this,'handlers')).showCurrency(event, this)" data-sg-overlay="above right"data-header="Currency"><span class="picker-inner"><span class="picker-label"><span class="currency_symbol">US$</span><span>USD</span></span><span class="ui_icon caret-down open-close"></span><span class="ui_icon caret-up open-close hidden"></span></span></div><div class="unified-picker" onclick="widgetEvCall('handlers.showPos', event, this)" data-sg-overlay="above right"data-overlay="point_of_sale_picker"data-header="Region"><span class="picker-inner"><span class="picker-label"><span>Canada (English)</span><span class="point_of_sale_data hidden" data-page-feature="" data-locale-codes="" data-current-locale="en_CA"></span></span><span class="ui_icon caret-down open-close"></span><span class="ui_icon caret-up open-close hidden"></span></span></div></DIV></div></div></div></div></div></DIV>
<!--etk-->
<img width="0" id="p13n_tp_stm" class="tracking hidden" height="0" src='https://static.tacdn.com/img2/x.gif'/>
</div>
</div>
<!--trkP:footer_js_globals-->
<!-- PLACEMENT footer_js_globals -->
<DIV ID="taplc_footer_js_globals_0" class="ppr_rup ppr_priv_footer_js_globals" data-placement-name="footer_js_globals">
<script>
var jsGlobalMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var jsGlobalMonthsAbbrev = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var jsGlobalDayMonthYearAbbrev = new Array("{0} Jan {1}","{0} Feb {1}","{0} Mar {1}","{0} Apr {1}","{0} May {1}","{0} Jun {1}","{0} Jul {1}","{0} Aug {1}","{0} Sep {1}","{0} Oct {1}","{0} Nov {1}","{0} Dec {1}");
var jsGlobalDaysAbbrev = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var jsGlobalDaysShort = new Array("S","M","T","W","T","F","S");
var jsGlobalDaysFull = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var sInvalidDates = "The dates you entered are invalid. Please correct your dates and search again.";
var sSelectDeparture = "Please select a departure airport.";
var DATE_FORMAT_MMM_YYYY = "MMM YYYY";
var DATE_PICKER_SLASHES_NOY_FORMAT = "MMM d";
var DATE_PICKER_CLASSIC_FORMAT = "dd/MM/yyyy";
var DATE_PICKER_SHORT_FORMAT = "dd/MM";
var DATE_PICKER_META_FORMAT = "EEE, d MMM";
var DATE_PICKER_DAY_AND_SLASHES_FORMAT = "EEE dd/MM/yyyy";
var jsGlobalDayOffset = 1 - 1;
var DATE_FORMAT = { pattern: /(\d{1,2})\/(\d{1,2})\/(\d{2,4})/, month: 2, date: 1, year: 3 };
var formatDate = function(d, m, y) {return [d,++m,y].join("/");};
var cal_month_header = function(month, year) {return cal_months[month]+" "+year;};
window.crPageServlet = "LocationPhotoDirectLink";
</script>
<script type="text/javascript">
typeof require !== 'undefined' && require(['ta/Core/TA.Store'], function(taStore) {
taStore.store("alternateCurrencyLabel", "hotels_alternative_currency_canada");
});
</script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/polyfills/dist/intl.en-CA-v2702941893a.js'></script>
<script>
typeof define !== 'undefined' && define('ta-i18n',['utils/IntlFormatter'],function(IntlFormatter){
Intl && Intl.__disableRegExpRestore && Intl.__disableRegExpRestore();
return (ta=ta||{}).i18n=new IntlFormatter("en-CA","USD");
});
</script>
<script type="text/javascript">
require(['ta/Core/TA.Store'], function(taStore) {
taStore.store('typeahead.typeahead2_mixed_ui', true);
taStore.store('typeahead.typeahead2_geo_segmented_ui', true);
taStore.store('typeahead.geoArea', 'Toronto area'); taStore.store('typeahead.worldwide', 'Worldwide'); taStore.store('typeahead.noResultsFound', 'No results found.');
taStore.store('typeahead.flight_enabled', true);
taStore.store('typeahead.localAirports', [{"lookbackServlet":"Airport","autobroadened":"false","normalized_name":"newark liberty intl airport","title":"Destinations","type":"AIRPORT","document_id":null,"is_vr":false,"url":"\/Airport-g46671-qEWR-Newark_New_Jersey.html","urls":[{"url_type":"AIRPORT","name":"Newark Liberty Intl Airport, Newark, New Jersey","type":"AIRPORT","url":"\/Airport-g46671-qEWR-Newark_New_Jersey.html"}],"is_broad":false,"scope":"global","name":"Newark Liberty Intl Airport, Newark, New Jersey","data_type":"LOCATION","details":{"parent_name":"Newark","grandparent_name":"New Jersey","highlighted_name":"Newark, NJ - Newark International Airport (EWR)","name":"Newark, NJ - Newark International Airport (EWR)","parent_ids":[46671,28951,191,19,1],"geo_name":"Newark, New Jersey"},"airportCode":"EWR","shortName":"Newark (EWR)","value":7917622,"coords":"40.691402,-74.1749"}]);
taStore.store('typeahead.recentHistoryList', [{"war_url":"\/UserReview-g155019-d707612-Oyster_Boy-Toronto_Ontario.html","autobroadened":"false","normalized_name":"oyster boy","type":"EATERY","title":"Restaurants","document_id":null,"is_vr":false,"url":"\/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html","urls":[{"url_type":"eat","name":"Oyster Boy, Toronto, Ontario, Canada","type":"EATERY","url":"\/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html"}],"is_broad":false,"scope":"global","name":"Oyster Boy, Toronto, Ontario, Canada","data_type":"LOCATION","details":{"parent_name":"Toronto","grandparent_name":"Ontario","highlighted_name":"Oyster Boy","name":"Oyster Boy","parent_ids":[155019,154979,153339,19,1],"geo_name":"Toronto, Ontario, Canada"},"value":707612,"coords":"43.64509,-79.41431"},{"lookbackServlet":null,"autobroadened":"false","normalized_name":"toronto","title":"Destinations","type":"GEO","document_id":null,"is_vr":true,"url":"\/Home-g155019","urls":[{"url_type":"geo","name":"Toronto Tourism","fallback_url":"\/Home-g155019","type":"GEO","url":"\/Home-g155019"},{"url_type":"vr","name":"Toronto Vacation Rentals","fallback_url":"\/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html","type":"VACATION_RENTAL","url":"\/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"},{"url_type":"eat","name":"Toronto Restaurants","fallback_url":"\/Restaurants-g155019-Toronto_Ontario.html","type":"EATERY","url":"\/Restaurants-g155019-Toronto_Ontario.html"},{"url_type":"attr","name":"Toronto Attractions","fallback_url":"\/Attractions-g155019-Activities-Toronto_Ontario.html","type":"ATTRACTION","url":"\/Attractions-g155019-Activities-Toronto_Ontario.html"},{"url_type":"hotel","name":"Toronto Hotels","fallback_url":"\/Hotels-g155019-Toronto_Ontario-Hotels.html","type":"HOTEL","url":"\/Hotels-g155019-Toronto_Ontario-Hotels.html"},{"url_type":"flights_to","name":"Flights to Toronto","fallback_url":"\/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html","type":"FLIGHTS_TO","url":"\/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"},{"url_type":"nbrhd","name":"Toronto Neighbourhoods","fallback_url":"\/NeighborhoodList-g155019-Toronto_Ontario.html","type":"NEIGHBORHOOD","url":"\/NeighborhoodList-g155019-Toronto_Ontario.html"},{"url_type":"tg","name":"Toronto Travel Guides","fallback_url":"\/Travel_Guide-g155019-Toronto_Ontario.html","type":"TRAVEL_GUIDE","url":"\/Travel_Guide-g155019-Toronto_Ontario.html"}],"is_broad":false,"scope":"global","name":"Toronto, Ontario, Canada","data_type":"LOCATION","details":{"parent_name":"Ontario","grandparent_name":"Canada","rac_enabled":false,"highlighted_name":"Toronto","name":"Toronto","parent_ids":[154979,153339,19,1],"geo_name":"Ontario, Canada"},"value":155019,"coords":"43.64381,-79.38554"}]);
taStore.store('typeahead.restaurant', "Restaurant"); taStore.store('typeahead.attraction', "Attraction"); taStore.store('typeahead.hotel', "Hotel"); taStore.store('typeahead.restaurant_list', "Restaurants"); taStore.store('typeahead.attraction_list', "Attractions"); taStore.store('typeahead.things_to_do', "Things to Do"); taStore.store('typeahead.hotel_list', "Hotels"); taStore.store('typeahead.flight_list', "Flights"); taStore.store('typeahead.vacation_rental_list', "Vacation Rentals"); taStore.store('typeahead.scoped.static_local_label', '% area'); taStore.store('typeahead.scoped.result_title_text', 'Start typing, or try one of these suggestions...'); taStore.store('typeahead.scoped.poi_overview_geo', '<span class="poi_overview_item">Overview</span> of %'); taStore.store('typeahead.scoped.poi_hotels_geo', '<span class="poi_overview_item">Hotels</span> in %'); taStore.store('typeahead.scoped.poi_hotels_geo_near', '<span class="poi_overview_item">Hotels</span> near %'); taStore.store('typeahead.scoped.poi_vr_geo', '<span class="poi_overview_item">Vacation Rentals</span> in %'); taStore.store('typeahead.scoped.poi_vr_geo_near', '<span class="poi_overview_item">Vacation Rentals</span> near %'); taStore.store('typeahead.scoped.poi_attractions_geo', '<span class="poi_overview_item">Things to Do</span> in %'); taStore.store('typeahead.scoped.poi_eat_geo', '<span class="poi_overview_item">Restaurants</span> in %'); taStore.store('typeahead.scoped.poi_flights_geo', '<span class="poi_overview_item">Flights</span> to %'); taStore.store('typeahead.scoped.poi_nbrhd_geo', '<span class="poi_overview_item">Neighbourhoods</span> in %'); taStore.store('typeahead.scoped.poi_travel_guides_geo', '<span class="poi_overview_item">Travel Guides</span> in %'); taStore.store('typeahead.scoped.overview', 'Overview '); taStore.store('typeahead.scoped.neighborhoods', 'Neighbourhoods'); taStore.store('typeahead.scoped.travel_guides', 'Travel Guides'); taStore.store('typeahead.scoped.geo_area_template', '% area'); taStore.store('typeahead.searchMore', 'Find more results for "%"');
taStore.store('typeahead.history', 'Recently viewed'); taStore.store('typeahead.history.all_caps', 'RECENTLY VIEWED'); taStore.store('typeahead.popular_destinations', 'POPULAR DESTINATIONS');
});
</script>
<script type="text/javascript">
require(['ta/Core/TA.Store'], function(taStore) {
taStore.store('rgPicker.nRooms', [
'0 rooms',
'1 room',
'2 rooms',
'3 rooms',
'4 rooms',
'5 rooms',
'6 rooms',
'7 rooms',
'8 rooms' ]
); taStore.store("rgPicker.nGuests", [
'0 guests',
'1 guest',
'2 guests',
'3 guests',
'4 guests',
'5 guests',
'6 guests',
'7 guests',
'8 guests',
'9 guests',
'10 guests',
'11 guests',
'12 guests',
'13 guests',
'14 guests',
'15 guests',
'16 guests',
'17 guests',
'18 guests',
'19 guests',
'20 guests',
'21 guests',
'22 guests',
'23 guests',
'24 guests',
'25 guests',
'26 guests',
'27 guests',
'28 guests',
'29 guests',
'30 guests',
'31 guests',
'32 guests',
'33 guests',
'34 guests',
'35 guests',
'36 guests',
'37 guests',
'38 guests',
'39 guests',
'40 guests',
'41 guests',
'42 guests',
'43 guests',
'44 guests',
'45 guests',
'46 guests',
'47 guests',
'48 guests',
'49 guests',
'50 guests',
'51 guests',
'52 guests',
'53 guests',
'54 guests',
'55 guests',
'56 guests',
'57 guests',
'58 guests',
'59 guests',
'60 guests',
'61 guests',
'62 guests',
'63 guests',
'64 guests' ]
);
taStore.store('rgPicker.roomsLabel', 'Rooms');
; taStore.store('rgPicker.adultsLabel', 'Adults');
; taStore.store('rgPicker.childrenLabel', 'Children');
; taStore.store('rgPicker.guestsLabel', 'Guests');
;
taStore.store("rgPicker.nAdults", [
'0 adults',
'1 adult',
'2 adults',
'3 adults',
'4 adults',
'5 adults',
'6 adults',
'7 adults',
'8 adults',
'9 adults',
'10 adults',
'11 adults',
'12 adults',
'13 adults',
'14 adults',
'15 adults',
'16 adults',
'17 adults',
'18 adults',
'19 adults',
'20 adults',
'21 adults',
'22 adults',
'23 adults',
'24 adults',
'25 adults',
'26 adults',
'27 adults',
'28 adults',
'29 adults',
'30 adults',
'31 adults',
'32 adults' ]
);
taStore.store("rgPicker.nTravelers", [
'0 Travellers',
'1 Traveller',
'2 Travellers',
'3 Travellers',
'4 Travellers',
'5 Travellers',
'6 Travellers',
'7 Travellers',
'8 Travellers',
'9 Travellers' ]
); taStore.store("rgPicker.ageBand.1", [
'0 Adults',
'1 Adult',
'2 Adults',
'3 Adults',
'4 Adults',
'5 Adults',
'6 Adults',
'7 Adults',
'8 Adults',
'9 Adults' ]
); taStore.store("rgPicker.ageBand.2", [
'0 Children',
'1 Child',
'2 Children',
'3 Children',
'4 Children',
'5 Children',
'6 Children',
'7 Children',
'8 Children',
'9 Children' ]
); taStore.store("rgPicker.ageBand.3", [
'0 Infants',
'1 Infant',
'2 Infants',
'3 Infants',
'4 Infants',
'5 Infants',
'6 Infants',
'7 Infants',
'8 Infants',
'9 Infants' ]
); taStore.store("rgPicker.ageBand.4", [
'0 Youths',
'1 Youth',
'2 Youths',
'3 Youths',
'4 Youths',
'5 Youths',
'6 Youths',
'7 Youths',
'8 Youths',
'9 Youths' ]
); taStore.store("rgPicker.ageBand.5", [
'0 Seniors',
'1 Senior',
'2 Seniors',
'3 Seniors',
'4 Seniors',
'5 Seniors',
'6 Seniors',
'7 Seniors',
'8 Seniors',
'9 Seniors' ]
);
taStore.store('rooms_guests_picker_update_da', 'Update');
taStore.store("best_prices_with_dates_21f3", 'Best prices for \074span class=\"dateHeader inDate\"\076checkIn\074/span\076 - \074span class=\"dateHeader outDate\"\076checkOut\074/span\076');
});
</script>
<script type="text/javascript">
require(['ta/Core/TA.Store'], function(taStore) {
ta.store('metaDatePickerEnabled', true);
var common_skip_dates = "Search without specific dates";
ta.store('multiDP.skipDates', "Search without specific dates"); ta.store('multiDP.inDate', "");
ta.store('multiDP.outDate', "");
ta.store('multiDP.minCheckInDate', '2019-01-06');
ta.store('multiDP.multiNightsText', "2 nights"); ta.store('multiDP.singleNightText', "1 night"); ta.store('calendar.preDateText', "dd/mm/yyyy");
ta.store('multiDP.adultsCount', "2");
ta.store('multiDP.singleAdultsText', "1 guest"); ta.store('multiDP.multiAdultsText', "2 guests"); ta.store('multiDP.enterDatesText', "Enter dates"); ta.store('multiDP.isMondayFirstDayOfWeek', false);
ta.store('multiDP.dateSeparator', " - ");
ta.store('multiDP.dateRangeEllipsis', "Searching %%%...");
ta.store('multiDP.abbrevMonthList', ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
ta.store('multiDP.checkIn', "Check In"); ta.store('multiDP.checkOut', "Check Out"); });
var jsDesktopBackboneAsset = ["https://static.tacdn.com/js3/desktop_modules_modbone-c-v22586991941a.js"];
</script>
</DIV>
<!--etk-->
<script type="text/javascript">
(function () {
if (typeof console == "undefined") console = {};
var funcs = ["log", "error", "warn"];
for (var i = 0; i < funcs.length; i++) {
if (console[funcs[i]] == undefined) {
console[funcs[i]] = function () {};
}
}
})();
var pageInit = new Date();
var hideOnLoad = new Array();
var WINDOW_EVENT_OBJ = window.Event;
var IS_DEBUG = false;
var CDNHOST = "https://static.tacdn.com";
var cdnHost = CDNHOST;
var MEDIA_HTTP_BASE = "https://media-cdn.tripadvisor.com/media/";
var POINT_OF_SALE = "en_CA";
if (typeof DUST_GLOBAL === 'undefined') {
var DUST_GLOBAL = {"IS_IELE8":false,"LOCALE":"en_CA","IS_IE10":false,"CDN_HOST":"https://static.tacdn.com","DEVICE":"desktop","IS_RTL":false,"LANG":"en","DEBUG":false,"READ_ONLY":false,"POS_COUNTRY":153339};
}
</script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/js3/jquery-c-v22288783946a.js' data-rup='jquery'></script>
<script type='text/javascript' data-rup='object-polyfill-standalone'>window.amdResetOldDefine=window.define,window.amdResetOldRequire=window.require,window.define=void 0,window.require=void 0;
if(typeof Object.assign!="function"){(function(){Object.assign=function(e){if(e===undefined||e===null){throw new TypeError("Cannot convert undefined or null to object")}var b=Object(e);for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d!==undefined&&d!==null){for(var a in d){if(d.hasOwnProperty(a)){b[a]=d[a]}}}}return b}})()}if(!Array.prototype.findIndex){Array.prototype.findIndex=function(b){if(this==null){throw new TypeError('"this" is null or not defined')}var f=Object(this);var a=f.length>>>0;if(typeof b!=="function"){throw new TypeError("predicate must be a function")}var c=arguments[1];var d=0;while(d<a){var e=f[d];if(b.call(c,e,d,f)){return d}d++}return -1}}if(!Array.prototype.find){Array.prototype.find=function(b){if(this==null){throw new TypeError('"this" is null or not defined')}var f=Object(this);var a=f.length>>>0;if(typeof b!=="function"){throw new TypeError("predicate must be a function")}var c=arguments[1];var d=0;while(d<a){var e=f[d];if(b.call(c,e,d,f)){return e}d++}return undefined}}if(!String.prototype.includes){String.prototype.includes=function(a,b){if(typeof b!=="number"){b=0}if(b+a.length>this.length){return false}else{return this.indexOf(a,b)!==-1}}}if(!Array.isArray){Array.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"}}if(!Object.entries){Object.entries=function(c){var d=Object.keys(c),b=d.length,a=new Array(b);while(b--){a[b]=[d[b],c[d[b]]]}return a}}if(!Object.values){Object.values=function(c){var d=Object.keys(c),b=d.length,a=new Array(b);while(b--){a[b]=c[d[b]]}return a}};
window.define=window.amdResetOldDefine,window.require=window.amdResetOldRequire,window.amdResetOldDefine=void 0,window.amdResetOldRequire=void 0;
</script><script type='text/javascript' data-rup='promise-polyfill-standalone'>window.amdResetOldDefine=window.define,window.amdResetOldRequire=window.require,window.define=void 0,window.require=void 0;
!function(t,n,r){"use strict";!function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r={};return n.m=t,n.c=r,n.i=function(t){return t},n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=63)}([function(t,n,r){var e=r(30)("wks"),o=r(21),i=r(1).Symbol,c="function"==typeof i,u=t.exports=function(t){return e[t]||(e[t]=c&&i[t]||(c?i:o)("Symbol."+t))};u.store=e},function(t,r){var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof n&&(n=e)},function(t,n,r){var e=r(11);t.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},function(t,n,r){var e=r(12),o=r(29);t.exports=r(4)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){t.exports=!r(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n){t.exports={}},function(t,n,r){var e=r(1),o=r(3),i=r(5),c=r(21)("src"),u="toString",f=Function[u],s=(""+f).split(u);r(9).inspectSource=function(t){return f.call(t)},(t.exports=function(t,n,r,u){var f="function"==typeof r;f&&(i(r,"name")||o(r,"name",n)),t[n]!==r&&(f&&(i(r,c)||o(r,c,t[n]?""+t[n]:s.join(String(n)))),t===e?t[n]=r:u?t[n]?t[n]=r:o(t,n,r):(delete t[n],o(t,n,r)))})(Function.prototype,u,function(){return"function"==typeof this&&this[c]||f.call(this)})},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(n,r){var e=n.exports={version:"2.4.0"};"number"==typeof t&&(t=e)},function(t,n,e){var o=e(13);t.exports=function(t,n,e){if(o(t),n===r)return t;switch(e){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){var e=r(2),o=r(41),i=r(60),c=Object.defineProperty;n.f=r(4)?Object.defineProperty:function(t,n,r){if(e(t),n=i(n,!0),e(r),o)try{return c(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n,e){var o=e(8),i=e(0)("toStringTag"),c="Arguments"==o(function(){return arguments}()),u=function(t,n){try{return t[n]}catch(t){}};t.exports=function(t){var n,e,f;return t===r?"Undefined":null===t?"Null":"string"==typeof(e=u(n=Object(t),i))?e:c?o(n):"Object"==(f=o(n))&&"function"==typeof n.callee?"Arguments":f}},function(t,n){t.exports=function(t){if(t==r)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(11),o=r(1).document,i=e(o)&&e(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n,r){var e=r(12).f,o=r(5),i=r(0)("toStringTag");t.exports=function(t,n,r){t&&!o(t=r?t:t.prototype,i)&&e(t,i,{configurable:!0,value:n})}},function(t,n,r){var e=r(30)("keys"),o=r(21);t.exports=function(t){return e[t]||(e[t]=o(t))}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(43),o=r(15);t.exports=function(t){return e(o(t))}},function(t,n){var e=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(t===r?"":t,")_",(++e+o).toString(36))}},function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,n,e){var o=e(1),i=e(9),c=e(3),u=e(7),f=e(10),s="prototype",a=function(t,n,e){var l,p,h,v,y=t&a.F,d=t&a.G,x=t&a.S,m=t&a.P,_=t&a.B,g=d?o:x?o[n]||(o[n]={}):(o[n]||{})[s],b=d?i:i[n]||(i[n]={}),S=b[s]||(b[s]={});d&&(e=n);for(l in e)p=!y&&g&&g[l]!==r,h=(p?g:e)[l],v=_&&p?f(h,o):m&&"function"==typeof h?f(Function.call,h):h,g&&u(g,l,h,t&a.U),b[l]!=h&&c(b,l,v),m&&S[l]!=h&&(S[l]=h)};o.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){var e=r(1).document;t.exports=e&&e.documentElement},function(t,n,e){var o=e(27),i=e(23),c=e(7),u=e(3),f=e(5),s=e(6),a=e(46),l=e(17),p=e(52),h=e(0)("iterator"),v=!([].keys&&"next"in[].keys()),y="@@iterator",d="keys",x="values",m=function(){return this};t.exports=function(t,n,e,_,g,b,S){a(e,n,_);var w,j,O,T=function(t){if(!v&&t in E)return E[t];switch(t){case d:return function(){return new e(this,t)};case x:return function(){return new e(this,t)}}return function(){return new e(this,t)}},L=n+" Iterator",P=g==x,M=!1,E=t.prototype,A=E[h]||E[y]||g&&E[g],k=A||T(g),F=g?P?T("entries"):k:r,C="Array"==n?E.entries||A:A;if(C&&(O=p(C.call(new t)),O!==Object.prototype&&(l(O,L,!0),o||f(O,h)||u(O,h,m))),P&&A&&A.name!==x&&(M=!0,k=function(){return A.call(this)}),o&&!S||!v&&!M&&E[h]||u(E,h,k),s[n]=k,s[L]=m,g)if(w={values:P?k:T(x),keys:b?k:T(d),entries:F},S)for(j in w)j in E||c(E,j,w[j]);else i(i.P+i.F*(v||M),n,w);return w}},function(t,n){t.exports=!1},function(t,n,r){var e=r(53),o=r(22);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(1),o="__core-js_shared__",i=e[o]||(e[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,n,r){var e,o,i,c=r(10),u=r(42),f=r(25),s=r(16),a=r(1),l=a.process,p=a.setImmediate,h=a.clearImmediate,v=a.MessageChannel,y=0,d={},x="onreadystatechange",m=function(){var t=+this;if(d.hasOwnProperty(t)){var n=d[t];delete d[t],n()}},_=function(t){m.call(t.data)};p&&h||(p=function(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return d[++y]=function(){u("function"==typeof t?t:Function(t),n)},e(y),y},h=function(t){delete d[t]},"process"==r(8)(l)?e=function(t){l.nextTick(c(m,t,1))}:v?(o=new v,i=o.port2,o.port1.onmessage=_,e=c(i.postMessage,i,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts?(e=function(t){a.postMessage(t+"","*")},a.addEventListener("message",_,!1)):e=x in s("script")?function(t){f.appendChild(s("script"))[x]=function(){f.removeChild(this),m.call(t)}}:function(t){setTimeout(c(m,t,1),0)}),t.exports={set:p,clear:h}},function(t,n,r){var e=r(19),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){var e=r(14),o={};o[r(0)("toStringTag")]="z",o+""!="[object z]"&&r(7)(Object.prototype,"toString",function(){return"[object "+e(this)+"]"},!0)},function(t,n,e){var o,i,c,u=e(27),f=e(1),s=e(10),a=e(14),l=e(23),p=e(11),h=e(13),v=e(38),y=e(40),d=e(56),x=e(31).set,m=e(49)(),_="Promise",g=f.TypeError,b=f.process,S=f[_],b=f.process,w="process"==a(b),j=function(){},O=!!function(){try{var t=S.resolve(1),n=(t.constructor={})[e(0)("species")]=function(t){t(j,j)};return(w||"function"==typeof PromiseRejectionEvent)&&t.then(j)instanceof n}catch(t){}}(),T=function(t,n){return t===n||t===S&&n===c},L=function(t){var n;return!(!p(t)||"function"!=typeof(n=t.then))&&n},P=function(t){return T(S,t)?new M(t):new i(t)},M=i=function(t){var n,e;this.promise=new t(function(t,o){if(n!==r||e!==r)throw g("Bad Promise constructor");n=t,e=o}),this.resolve=h(n),this.reject=h(e)},E=function(t){try{t()}catch(t){return{error:t}}},A=function(t,n){if(!t._n){t._n=!0;var r=t._c;m(function(){for(var e=t._v,o=1==t._s,i=0,c=function(n){var r,i,c=o?n.ok:n.fail,u=n.resolve,f=n.reject,s=n.domain;try{c?(o||(2==t._h&&C(t),t._h=1),c===!0?r=e:(s&&s.enter(),r=c(e),s&&s.exit()),r===n.promise?f(g("Promise-chain cycle")):(i=L(r))?i.call(r,u,f):u(r)):f(e)}catch(t){f(t)}};r.length>i;)c(r[i++]);t._c=[],t._n=!1,n&&!t._h&&k(t)})}},k=function(t){x.call(f,function(){var n,e,o,i=t._v;if(F(t)&&(n=E(function(){w?b.emit("unhandledRejection",i,t):(e=f.onunhandledrejection)?e({promise:t,reason:i}):(o=f.console)&&o.error&&o.error("Unhandled promise rejection",i)}),t._h=w||F(t)?2:1),t._a=r,n)throw n.error})},F=function(t){if(1==t._h)return!1;for(var n,r=t._a||t._c,e=0;r.length>e;)if(n=r[e++],n.fail||!F(n.promise))return!1;return!0},C=function(t){x.call(f,function(){var n;w?b.emit("rejectionHandled",t):(n=f.onrejectionhandled)&&n({promise:t,reason:t._v})})},R=function(t){var n=this;n._d||(n._d=!0,n=n._w||n,n._v=t,n._s=2,n._a||(n._a=n._c.slice()),A(n,!0))},I=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw g("Promise can't be resolved itself");(n=L(t))?m(function(){var e={_w:r,_d:!1};try{n.call(t,s(I,e,1),s(R,e,1))}catch(t){R.call(e,t)}}):(r._v=t,r._s=1,A(r,!1))}catch(t){R.call({_w:r,_d:!1},t)}}};O||(S=function(t){v(this,S,_,"_h"),h(t),o.call(this);try{t(s(I,this,1),s(R,this,1))}catch(t){R.call(this,t)}},o=function(t){this._c=[],this._a=r,this._s=0,this._d=!1,this._v=r,this._h=0,this._n=!1},o.prototype=e(54)(S.prototype,{then:function(t,n){var e=P(d(this,S));return e.ok="function"!=typeof t||t,e.fail="function"==typeof n&&n,e.domain=w?b.domain:r,this._c.push(e),this._a&&this._a.push(e),this._s&&A(this,!1),e.promise},"catch":function(t){return this.then(r,t)}}),M=function(){var t=new o;this.promise=t,this.resolve=s(I,t,1),this.reject=s(R,t,1)}),l(l.G+l.W+l.F*!O,{Promise:S}),e(17)(S,_),e(55)(_),c=e(9)[_],l(l.S+l.F*!O,_,{reject:function(t){var n=P(this),r=n.reject;return r(t),n.promise}}),l(l.S+l.F*(u||!O),_,{resolve:function(t){if(t instanceof S&&T(t.constructor,this))return t;var n=P(this),r=n.resolve;return r(t),n.promise}}),l(l.S+l.F*!(O&&e(47)(function(t){S.all(t)["catch"](j)})),_,{all:function(t){var n=this,e=P(n),o=e.resolve,i=e.reject,c=E(function(){var e=[],c=0,u=1;y(t,!1,function(t){var f=c++,s=!1;e.push(r),u++,n.resolve(t).then(function(t){s||(s=!0,e[f]=t,--u||o(e))},i)}),--u||o(e)});return c&&i(c.error),e.promise},race:function(t){var n=this,r=P(n),e=r.reject,o=E(function(){y(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return o&&e(o.error),r.promise}})},function(t,n,e){var o=e(57)(!0);e(26)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,e=this._i;return e>=n.length?{value:r,done:!0}:(t=o(n,e),this._i+=t.length,{value:t,done:!1})})},function(t,n,r){for(var e=r(62),o=r(28),i=r(7),c=r(1),u=r(3),f=r(6),s=r(0),a=s("iterator"),l=s("toStringTag"),p=f.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=o(h),y=0;y<v.length;y++){var d,x=v[y],m=h[x],_=c[x],g=_&&_.prototype;if(g&&(g[a]||u(g,a,p),g[l]||u(g,l,x),f[x]=p,m))for(d in e)g[d]||i(g,d,e[d],!0)}},function(t,n,e){var o=e(0)("unscopables"),i=Array.prototype;i[o]==r&&e(3)(i,o,{}),t.exports=function(t){i[o][t]=!0}},function(t,n){t.exports=function(t,n,e,o){if(!(t instanceof n)||o!==r&&o in t)throw TypeError(e+": incorrect invocation!");return t}},function(t,n,r){var e=r(20),o=r(32),i=r(58);t.exports=function(t){return function(n,r,c){var u,f=e(n),s=o(f.length),a=i(c,s);if(t&&r!=r){for(;s>a;)if(u=f[a++],u!=u)return!0}else for(;s>a;a++)if((t||a in f)&&f[a]===r)return t||a||0;return!t&&-1}}},function(t,n,r){var e=r(10),o=r(45),i=r(44),c=r(2),u=r(32),f=r(61),s={},a={},n=t.exports=function(t,n,r,l,p){var h,v,y,d,x=p?function(){return t}:f(t),m=e(r,l,n?2:1),_=0;if("function"!=typeof x)throw TypeError(t+" is not iterable!");if(i(x)){for(h=u(t.length);h>_;_++)if(d=n?m(c(v=t[_])[0],v[1]):m(t[_]),d===s||d===a)return d}else for(y=x.call(t);!(v=y.next()).done;)if(d=o(y,m,v.value,n),d===s||d===a)return d};n.BREAK=s,n.RETURN=a},function(t,n,r){t.exports=!r(4)&&!r(24)(function(){return 7!=Object.defineProperty(r(16)("div"),"a",{get:function(){return 7}}).a})},function(t,n){t.exports=function(t,n,e){var o=e===r;switch(n.length){case 0:return o?t():t.call(e);case 1:return o?t(n[0]):t.call(e,n[0]);case 2:return o?t(n[0],n[1]):t.call(e,n[0],n[1]);case 3:return o?t(n[0],n[1],n[2]):t.call(e,n[0],n[1],n[2]);case 4:return o?t(n[0],n[1],n[2],n[3]):t.call(e,n[0],n[1],n[2],n[3])}return t.apply(e,n)}},function(t,n,r){var e=r(8);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},function(t,n,e){var o=e(6),i=e(0)("iterator"),c=Array.prototype;t.exports=function(t){return t!==r&&(o.Array===t||c[i]===t)}},function(t,n,e){var o=e(2);t.exports=function(t,n,e,i){try{return i?n(o(e)[0],e[1]):n(e)}catch(n){var c=t["return"];throw c!==r&&o(c.call(t)),n}}},function(t,n,r){var e=r(50),o=r(29),i=r(17),c={};r(3)(c,r(0)("iterator"),function(){return this}),t.exports=function(t,n,r){t.prototype=e(c,{next:o(1,r)}),i(t,n+" Iterator")}},function(t,n,r){var e=r(0)("iterator"),o=!1;try{var i=[7][e]();i["return"]=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,n){if(!n&&!o)return!1;var r=!1;try{var i=[7],c=i[e]();c.next=function(){return{done:r=!0}},i[e]=function(){return c},t(i)}catch(t){}return r}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,e){var o=e(1),i=e(31).set,c=o.MutationObserver||o.WebKitMutationObserver,u=o.process,f=o.Promise,s="process"==e(8)(u);t.exports=function(){var t,n,e,a=function(){var o,i;for(s&&(o=u.domain)&&o.exit();t;){i=t.fn,t=t.next;try{i()}catch(o){throw t?e():n=r,o}}n=r,o&&o.enter()};if(s)e=function(){u.nextTick(a)};else if(c){var l=!0,p=document.createTextNode("");new c(a).observe(p,{characterData:!0}),e=function(){p.data=l=!l}}else if(f&&f.resolve){var h=f.resolve();e=function(){h.then(a)}}else e=function(){i.call(o,a)};return function(o){var i={fn:o,next:r};n&&(n.next=i),t||(t=i,e()),n=i}}},function(t,n,e){var o=e(2),i=e(51),c=e(22),u=e(18)("IE_PROTO"),f=function(){},s="prototype",a=function(){var t,n=e(16)("iframe"),r=c.length,o="<",i=">";for(n.style.display="none",e(25).appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write(o+"script"+i+"document.F=Object"+o+"/script"+i),t.close(),a=t.F;r--;)delete a[s][c[r]];return a()};t.exports=Object.create||function(t,n){var e;return null!==t?(f[s]=o(t),e=new f,f[s]=null,e[u]=t):e=a(),n===r?e:i(e,n)}},function(t,n,r){var e=r(12),o=r(2),i=r(28);t.exports=r(4)?Object.defineProperties:function(t,n){o(t);for(var r,c=i(n),u=c.length,f=0;u>f;)e.f(t,r=c[f++],n[r]);return t}},function(t,n,r){var e=r(5),o=r(59),i=r(18)("IE_PROTO"),c=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),e(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,n,r){var e=r(5),o=r(20),i=r(39)(!1),c=r(18)("IE_PROTO");t.exports=function(t,n){var r,u=o(t),f=0,s=[];for(r in u)r!=c&&e(u,r)&&s.push(r);for(;n.length>f;)e(u,r=n[f++])&&(~i(s,r)||s.push(r));return s}},function(t,n,r){var e=r(7);t.exports=function(t,n,r){for(var o in n)e(t,o,n[o],r);return t}},function(t,n,r){var e=r(1),o=r(12),i=r(4),c=r(0)("species");t.exports=function(t){var n=e[t];i&&n&&!n[c]&&o.f(n,c,{configurable:!0,get:function(){return this}})}},function(t,n,e){var o=e(2),i=e(13),c=e(0)("species");t.exports=function(t,n){var e,u=o(t).constructor;return u===r||(e=o(u)[c])==r?n:i(e)}},function(t,n,e){var o=e(19),i=e(15);t.exports=function(t){return function(n,e){var c,u,f=String(i(n)),s=o(e),a=f.length;return s<0||s>=a?t?"":r:(c=f.charCodeAt(s),c<55296||c>56319||s+1===a||(u=f.charCodeAt(s+1))<56320||u>57343?t?f.charAt(s):c:t?f.slice(s,s+2):(c-55296<<10)+(u-56320)+65536)}}},function(t,n,r){var e=r(19),o=Math.max,i=Math.min;t.exports=function(t,n){return t=e(t),t<0?o(t+n,0):i(t,n)}},function(t,n,r){var e=r(15);t.exports=function(t){return Object(e(t))}},function(t,n,r){var e=r(11);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n,e){var o=e(14),i=e(0)("iterator"),c=e(6);t.exports=e(9).getIteratorMethod=function(t){if(t!=r)return t[i]||t["@@iterator"]||c[o(t)]}},function(t,n,e){var o=e(37),i=e(48),c=e(6),u=e(20);t.exports=e(26)(Array,"Array",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,e=this._i++;return!t||e>=t.length?(this._t=r,i(1)):"keys"==n?i(0,e):"values"==n?i(0,t[e]):i(0,[e,t[e]])},"values"),c.Arguments=c.Array,o("keys"),o("values"),o("entries")},function(t,n,r){r(33),r(35),r(34),t.exports=r(36)}]),"undefined"!=typeof module&&module.exports?module.exports=t:"function"==typeof define&&define.amd?define(function(){return t}):n.core=t}(1,1);
window.define=window.amdResetOldDefine,window.require=window.amdResetOldRequire,window.amdResetOldDefine=void 0,window.amdResetOldRequire=void 0;
</script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/js3/mootools-c-v2915224067a.js' data-rup='mootools'></script>
<script type="text/javascript">
var jsGlobalMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var jsGlobalMonthsAbbrev = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var jsGlobalDayMonthYearAbbrev = new Array("{0} Jan {1}","{0} Feb {1}","{0} Mar {1}","{0} Apr {1}","{0} May {1}","{0} Jun {1}","{0} Jul {1}","{0} Aug {1}","{0} Sep {1}","{0} Oct {1}","{0} Nov {1}","{0} Dec {1}");
var jsGlobalDaysAbbrev = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var jsGlobalDaysShort = new Array("S","M","T","W","T","F","S");
var jsGlobalDaysFull = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var sInvalidDates = "The dates you entered are invalid. Please correct your dates and search again.";
var sSelectDeparture = "Please select a departure airport.";
var DATE_FORMAT_MMM_YYYY = "MMM YYYY";
var DATE_PICKER_CLASSIC_FORMAT = "dd/MM/yyyy";
var DATE_PICKER_SHORT_FORMAT = "dd/MM";
var DATE_PICKER_META_FORMAT = "EEE, d MMM";
var DATE_PICKER_DAY_AND_SLASHES_FORMAT = "EEE dd/MM/yyyy";
var jsGlobalDayOffset = 1 - 1;
var DATE_FORMAT = { pattern: /(\d{1,2})\/(\d{1,2})\/(\d{2,4})/, month: 2, date: 1, year: 3 };
var formatDate = function(d, m, y) {return [d,++m,y].join("/");};
var cal_month_header = function(month, year) {return cal_months[month]+" "+year;};
</script>
<script type="text/javascript">
var currencySymbol = new Array();
var cur_prefix = false;
var cur_postfix = true;
var curs=[,'CHF','SEK','TRY','DKK','NOK','PLN','AED','AFN','ALL','AMD','ANG','AOA','ARS','AWG','AZN','BAM','BBD','BDT','BGN','BHD','BIF','BMD','BND','BOB','BSD','BTN','BWP','BYR','BZD','CDF','CLP','COP','CRC','CVE','CZK','DJF','DOP','DZD','EGP','ERN','ETB','FJD','FKP','GEL','GHS','GIP','GMD','GNF','GTQ','GYD','HNL','HRK','HTG','HUF','IDR','IQD','IRR','ISK','JMD','JOD','KES','KGS','KHR','KMF','KWD','KYD','KZT','LAK','LBP','LKR','LRD','LSL','LYD','MAD','MDL','MGA','MKD','MNT','MOP','MRO','MUR','MVR','MWK','MYR','MZN','NAD','NGN','NIO','NPR','OMR','PAB','PEN','PGK','PHP','PKR','PYG','QAR','RON','RSD','RUB','RWF','SAR','SBD','SCR','SGD','SHP','SLL','SOS','SRD','STD','SZL','THB','TJS','TMT','TND','TOP','TTD','TZS','UAH','UGX','UYU','UZS','VEF','VUV','WST','YER','ZAR','CUP','KPW','MMK','SDG','SYP'];
for(var i=1;i<curs.length;i++){currencySymbol[curs[i]]=new Array(curs[i],false);}
var curs = [,'USD','GBP','EUR','CAD','AUD','JPY','RMB','INR','BRL','MXN','TWD','HKD','ILS','KRW','NZD','VND','XAF','XCD','XOF','XPF']
var curs2 = [,'US$','£','€','$','A$','JP¥','CN¥','₹','R$','MX$','NT$','HK$','₪','₩','NZ$','₫','FCFA','EC$','CFA','CFPF']
for(var i=1;i<curs.length;i++){currencySymbol[curs[i]]=new Array(curs2[i],false);}
var groupingSize = 3;
var groupingSeparator = ",";
var JS_location_not_found = "Your location not found.";
var JS_click_to_expand = "Click to Expand";
var JS_choose_valid_city = "Please choose a valid city from the list.";
var JS_select_a_cruise_line = "Please select a cruise line.";
var JS_loading = "Loading ...";
var JS_Ajax_failed="We're sorry, but there was a problem retrieving the content. Please check back in a few minutes.";
var JS_maintenance="Our site is currently undergoing maintenance.We\'re sorry for the inconvenience...we\'ll be back soon.";
var JS_Stop_search = "stop search";
var JS_Resume_search = "Resume search";
var JS_Thankyou = "Thank you";
var JS_DateFormat = "dd/mm/yyyy";
var JS_review_lost = "Your review will be lost.";
var JS_coppa_sorry = "We're sorry....";
var JS_coppa_privacy = "Based on information you submitted, your TripAdvisor account does not meet the requirements of our <a href='/pages/privacy.html'>Privacy Policy</a>.";
var JS_coppa_deleted = "Your account has been deleted.";
var JS_close = "Close";
var JS_close_image = "https://static.tacdn.com/img2/buttons/closeButton.gif";
var JS_CHANGES_SAVED = "Changes saved";
var JS_community_on = "Community has been enabled";
var lang_Close = JS_close;
var JS_UpdatingYourResults = "Updating your results …";
var JS_OwnerPhoto_heading = "Thank you for submitting your request to TripAdvisor. ";
var JS_OwnerPhoto_subheading = "We process most listings and changes within 5 business days. ";
var JS_OwnerPhoto_more = "Add more photos to your listing";
var JS_OwnerPhoto_return = "Return to your Owner’s Centre";
var JS_NMN_Timeout_title = "Do you want to keep trying?";
var JS_NMN_Timeout_msg = "It is taking longer than expected to get your location.";
var JS_NMN_Error_title = "Location error";
var JS_NMN_Error_msg = "There has been an error in trying to determine your location";
var JS_KeepTrying = "Keep Trying";
var JS_TryAgain = "Try Again";
var js_0001 = "Please select at least one vendor from the list."; var js_0002 = "Please choose dates in the future."; var js_0003 = "Please choose a check-out date that is at least one day later than your check-in date."; var js_0004 = "Please choose dates that are less than 330 days away."; var js_0005 = "Searching for deals ... this may take a few moments"; var js_0006 = "Your selections have not changed."; var js_0010 = "Please click again to open each window or adjust browser settings to disable popup blockers."; var js_0011 = "Update"; var js_0012 = "Show next offer"; var js_0013 = "Please click the \"Check Rates!\" button above to open each window."; var js_0014 = 'Opens one window for each offer. Please disable pop-up blockers.';
var js_0015 = 'Compare prices';
var js_invalid_dates_text = "The dates entered are invalid. Please correct your dates and search again."; var js_invalid_dates_text_new = "Please enter dates to check rates"; var js_invalid_dates_text_new2 = "Please enter dates to show prices";
var qcErrorImage = '<center><img src="https://static.tacdn.com/img/langs/en_UK/action_required_blinking.gif" /></center>';
var selectedHotelName = ""; var cr_loc_vend = 'https://static.tacdn.com/img2/checkrates/cr.gif';
var cr_loc_vend_ch = 'https://static.tacdn.com/img2/checkrates/cr_check.gif';
var cr_loc_logo = 'https://static.tacdn.com/img2/checkrates/logo.gif';
var cd_loc_vend = 'https://static.tacdn.com/img2/checkrates/cd.png';
var cd_loc_vend_ch = 'https://static.tacdn.com/img2/checkrates/cd_check.png';
var JS_Any_Date = "Any Date";
var JS_Update_List = "Update List";
var sNexusTitleMissing = "The title must be populated";
var JS_Challenge="Challenge";
var JS_TIQ_Level="Level";
var JS_TIQ="Travel IQ";
var JS_TIQ_Pts="pts";
var RATING_STRINGS = [
"Click to rate",
"Terrible",
"Poor",
"Average",
"Very Good",
"Excellent"
];
var overlayLightbox = false;
if("" != "")
{
overlayLightbox = true;
}
var isTakeOver = false;
var overlayOptions = "";
var overlayBackupLoc = "";
var gmapDomain = "maps.google.com";
var mapChannel = "ta.desktop.locationphotodirectlink";
var bingMapsLang = "en".toLowerCase();
var bingMapsCountry = "CA".toLowerCase();
var bingMapsBaseUrl = "http://www.bing.com/maps/default.aspx?cc=ca&";
var googleMapsBaseUrl = "http://maps.google.ca/?";
var yandexMapsBaseUrl = "http://maps.yandex.com";
var serverPool = "X";
var posLocale = "en_CA";
var cssPhotoViewerAsset = "https://static.tacdn.com/css2/photos_with_inline_review-v23128229042a.css";
var cssAlbumViewerExtendedAsset = "https://static.tacdn.com/css2/media_albums_extended-v22462522692a.css";
var jsPhotoViewerAsset = 'https://static.tacdn.com/js3/src/ta/photos/Viewer-v23776172971a.js';
var jsAlbumViewerAsset = ["https://static.tacdn.com/js3/album_viewer-c-v2965396398a.js"];
var jsAlbumViewerExtendedAsset = ["https://static.tacdn.com/js3/media_albums_extended-c-v2323544694a.js"];
var cssInlinePhotosTabAsset = "https://static.tacdn.com/css2/photo_albums_stacked-v23346818667a.css";
var cssPhotoLightboxAsset = "https://static.tacdn.com/css2/photo_albums_stacked-v23346818667a.css";
var jsDesktopBackboneAsset = ["https://static.tacdn.com/js3/desktop_modules_modbone-c-v22586991941a.js"];
var jsPhotoViewerTALSOAsset = 'https://static.tacdn.com/js3/src/TALSO-v21232481152a.js';
</script>
<script type="text/javascript">
var VERSION_MAP = {
"ta-widgets-typeahead.js": "https://static.tacdn.com/js3/ta-widgets-typeahead-c-v21038817777a.js"
,
"ta-media.js": "https://static.tacdn.com/js3/ta-media-c-v22408597617a.js"
,
"ta-overlays.js": "https://static.tacdn.com/js3/ta-overlays-c-v2724040978a.js"
,
"ta-registration-RegOverlay.js": "https://static.tacdn.com/js3/ta-registration-RegOverlay-c-v2932594595a.js"
,
"ta-mapsv2.js": "https://static.tacdn.com/js3/ta-mapsv2-gmaps3-c-v23282375575a.js"
};
</script>
<script type="text/javascript">
var cookieDomain = ".tripadvisor.ca";
var modelLocaleCountry = "CA";
var ipCountryId = "191";
var pageServlet = "LocationPhotoDirectLink";
var crPageServlet = "LocationPhotoDirectLink";
var userLoggedIn = false;
</script>
<script type="text/javascript">
var migrationMember = false;
var savesEnable = true;
var flagsUrl = '/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html';
var noPopClass = "no_cpu";
var flagsSettings = [
];
var isIPad = false;
var isTabletOnFullSite = false;
var tabletOnFullSite = false;
var lang_Close = "Close";
var img_loop = "https://static.tacdn.com/img2/generic/site/loop.gif";
var communityEnabled = true
var footerFlagFormat = "PhotoC_fffffc57";
var modelLocId = "707612";
var modelGeoId = "155019";
var gClient = 'gme-tripadvisorinc';
var gKey = 'ABQIAAAAbrotionfLoNjvl0WlUPGSRTdpehDpmXh3j20msYLQphRWKJN1xQPW6DHN6agPvj5wwhoY2ExGORfSw&client=gme-tripadvisorinc';
var gLang = '&language=en_CA';
var mapsJs = 'https://static.tacdn.com/js3/ta-maps-gmaps3-c-v21277116734a.js';
var mapsJsLite = 'https://static.tacdn.com/js3/lib/TAMap-v22716202300a.js';
var memoverlayCSS = 'https://static.tacdn.com/css2/pages/memberoverlay-v23870953781a.css';
var flagsFlyoutCSS = 'https://static.tacdn.com/css2/build/less/overlays/build/flags/flags_flyout-v22550490311a.css';
var globalCurrencyPickerCSS = 'https://static.tacdn.com/css2/build/less/overlays/build/global_currency_picker-v293409552a.css';
var g_emailHotelCSS = 'https://static.tacdn.com/css2/t4b/emailhotel-v23480412318a.css';
var g_emailHotelJs = ["https://static.tacdn.com/js3/t4b_emailhotel-c-v22799221950a.js"];
var passportStampsCSS = 'https://static.tacdn.com/css2/modules/passport_stamps-v21996473260a.css';
var autocompleteCss = "https://static.tacdn.com/css2/modules/autocomplete-v21125419838a.css";
var globalTypeAheadCss = "https://static.tacdn.com/css2/global_typeahead-v21420179550a.css";
var globalTypeAheadFontCss = "https://static.tacdn.com/css2/proxima_nova-v2717956579a.css";
var wiFriHasMember = false ;
var JS_SECURITY_TOKEN = "TNI1625!ALOekT3XbJEfGYg1u3PvcoUyMC3jb5wnwoCnbpF05A4k1malRayl4SvDO+vZBjhWflrU7K+PNE0t0Pgn9chpf+QOs+WKmSWTwihlVboYxDpSiEv5+hByeMxYXGpQY762vDS7VFRcNgmqZba/wUl6DNn262MNcs7bLPYAYA9Vve9q";
var addOverlayCloseClass = "";
var isOverlayServlet = "";
var IS_OVERLAY_DEBUG = "false";
</script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/js3/lpdl_2015-c-v23866211534a.js' data-rup='lpdl_2015'></script>
<script type="text/javascript">var taSecureToken = "TNI1625!ALOekT3XbJEfGYg1u3PvcoUyMC3jb5wnwoCnbpF05A4k1malRayl4SvDO+vZBjhWflrU7K+PNE0t0Pgn9chpf+QOs+WKmSWTwihlVboYxDpSiEv5+hByeMxYXGpQY762vDS7VFRcNgmqZba/wUl6DNn262MNcs7bLPYAYA9Vve9q";</script>
<script type="text/javascript">
if(window.ta && ta.store) {
ta.store('photo.viewer.localization.videoError', 'We\'re sorry, video player could not load'); }
</script>
<script type="text/javascript">
var geoParam = "&geo=155019";
</script>
<!-- web410a.a.tripadvisor.com -->
<!-- PRODUCTION -->
<!-- releases/PRODUCTION_1288212_20190104_0445 -->
<!-- Rev 1288234 -->
<script type="text/javascript" src="https://static.tacdn.com/js3/src/trsupp-v23584999669a.js"></script>
<script type="text/javascript">
if(typeof define !== 'undefined') {
define('page-model', [], function () {
var model = {"session":{"analyticsInfo":{"promosStringForCurrentPageview":null,"cv47Key":null,"cv47Value":null,"evtCookiePUID":null,"cv1Key":null,"cv1Value":null,"memberState":"-","enabled":true,"campaignParams":"utm_source=tripadvisor&utm_medium=domain direct&utm_campaign=TripAdvisor","pageview":true,"trackerId":"UA-30198665-1","customVariablesForSession":[{"variable":"Member","scope":3,"name":"Member","value":"-","slot":2},{"variable":"EntryDetail","scope":3,"name":"EntryDetail","value":"Oyster Boy-707612","slot":9},{"variable":"EntryGeo","scope":3,"name":"EntryGeo","value":"Toronto-155019","slot":3},{"variable":"EntryCountry","scope":3,"name":"EntryCountry","value":"Canada-153339","slot":4},{"variable":"EntryServlet","scope":3,"name":"EntryServlet","value":"LocationPhotoDirectLink","slot":5},{"variable":"Pool","scope":3,"name":"Pool","value":"X","slot":6},{"variable":"Slice","scope":3,"name":"Slice","value":"2449","slot":7},{"variable":"MCID","scope":3,"name":"MCID","value":"TripAdvisor-0","slot":18},{"variable":"PageType","scope":3,"name":"PageType","value":"Desktop Page","slot":21},{"variable":"DeviceType","scope":3,"name":"DeviceType","value":"Desktop","slot":22},{"variable":"IPGeo","scope":3,"name":"IPGeo","value":"United States-191","slot":23},{"variable":"ProductType","scope":3,"name":"ProductType","value":"Browser","slot":24},{"variable":"WebServer","scope":3,"name":"WebServer","value":"web410a","slot":48}],"jsonForCurrentPageview":"{\"cv\":[[\"_deleteCustomVar\",1],[\"_deleteCustomVar\",47],[\"_setCustomVar\",11,\"Detail\",\"Oyster Boy-707612\",3],[\"_setCustomVar\",12,\"Country\",\"Canada-153339\",3],[\"_setCustomVar\",25,\"Continent\",\"North America-19\",3],[\"_setCustomVar\",13,\"Geo\",\"Toronto-155019\",3],[\"_setCustomVar\",20,\"PP\",\"-277-\",3],[\"_deleteCustomVar\",19],[\"_deleteCustomVar\",14],[\"_deleteCustomVar\",8],[\"_deleteCustomVar\",10]],\"url\":\"/LocationPhotoDirectLink\"}","pagePropertyStringForCurrentPageview":"277","hasEvent":false,"jsonForEvent":null,"domain":""},"lazyObf":"{\"given\":\"abcdefghijklmopqrsuvwxyzABCDEFGHIJKLMOPQRSUVWXYZ1234567890\", \"replace\":\"mopqrsuvwxyzabcdefghijklSUVWXYZABCDEFGHIJKLMOPQR4567890123\",\"token\":\"###Obf###\",\"validator\":\"<!-- amSZ03nt -->\"}","pageServlet":"LocationPhotoDirectLink","sessionId":"452AA622C89AA7D4C4AC4EF247636235","cdnHost":"https://static.tacdn.com","quickSave":true,"isExternalReferral":true,"useERUserTracking":true,"cookieDomain":".tripadvisor.ca","uid":"XDIKLQokHYUAAbm1r98AAAAi","hasReferral":false,"posLocale":"en_CA","MEDIA_HTTP_BASE":"https://media-cdn.tripadvisor.com/media/","user_id":"","loggedIn":false,"securelyLoggedIn":false},"DUST_GLOBAL":{"IS_IELE8":false,"LOCALE":"en_CA","IS_IE10":false,"CDN_HOST":"https://static.tacdn.com","DEVICE":"desktop","IS_RTL":false,"LANG":"en","DEBUG":false,"READ_ONLY":false,"POS_COUNTRY":153339},"JS_SECURITY_TOKEN":"TNI1625!AP1+qTsd3TBpL6fqq8bPHyALuFHyIrk7ye6IhbTXpefVJ6YPiUkX2Fwo4qKl43km0GWqYHPSRRcfO3zPrB8MUZu1iG2rGzmujYImJ2uSZ9LcF+hpdZBmLtm7IBvWcmP7VLpxhSMZJ7ahaJH3RGwZaDVUIBETzUxeH3LsThsOdKBI","GEO_ID":"155019","hotelsInGeo":"137","LOC_ID":"707612","isMobile":false,"isRtl":false};
return model;
});
}
</script>
<script class="allowAbsoluteUrls" type="text/javascript">
function hideByClass(c)
{
hideElement(c,3);
}
function hideElement(c,n)
{
if ($(c))
{
$(c).hide();
}
else if (n > 0)
{
setTimeout("hideElement('"+c+"',"+(n-1)+")",200);
}
}
function moveAd()
{
var adE = $$('#LOC_PHOTOS div.iab_leaBoa');
if( adE && adE.length == 0)
{
moveElement('div.iab_leaBoa', 'div.banner', 3);
}
}
function moveElement(fromClass, toClass, n)
{
if(document.getElement(fromClass))
{
var addiv = document.getElement(fromClass);
addiv.inject(document.getElement(toClass), 'after');
}
else if (n > 0)
{
setTimeout("moveElement('"+fromClass+"','"+toClass+"',"+(n-1)+")",200);
}
}
function selfInitialize ()
{
setTimeout(function()
{
if (isPopup)
{
$(document.body).addClass('pop');
$('LOC_PHOTOS').addClass('pop');
hideByClass('FOOT');
hideByClass('HEAD');
hideByClass('LEFTNAV');
hideByClass('USER_PREFS');
hideByClass('HEADING');
if ($('TOPROWTEMPLATE')) {
hideByClass('TOPROWTEMPLATE');
}
hideByClass('RATING');
hideByClass('INLINE_REVIEW_FILTER');
moveAd();
}
}, 20);
}
window.addEvent('load', selfInitialize);
var currentId = 244255527;
var lastId = 211675751;
function showFirstVideo(id) {
var divnew = ta.id("photo_"+id);
var mediaTypeElmt = ta.id("photo_" + id + "_mediatype");
if (mediaTypeElmt) {
if (mediaTypeElmt.value == "video") {
showVideo(id);
}
else {
var videoPlayerElmt = ta.id("LOC_PHOTOS_VIDEO_PLAYER");
if (videoPlayerElmt) {
videoPlayerElmt.style.display = "none";
}
}
}
}
function refreshImage() {
var myId = currentId;
currentId = 0;
showImage(myId, null, true);
}
function showImage(id, opts, ignoreImpression)
{
ta.servlet.Photos.rightClickHide();
// If they left the teaser open, then close it
ta.servlet.Photos.closeReportIAPTeaser();
if (id != currentId)
{
var divnew = ta.id("photo_"+id);
var thumbNew = ta.id("thumb_"+id);
if (divnew)
{
selectIAPReportDiv(id);
var divold = ta.id("photo_"+currentId);
var thumbOld = ta.id("thumb_"+currentId);
if (divold)
{
divold.style.display="none";
var oldMediaTypeElmt = ta.id("photo_" + currentId + "_mediatype");
if (oldMediaTypeElmt && oldMediaTypeElmt.value == "video")
{
stopLocationVideo();
}
}
if (thumbOld)
{
$(thumbOld).removeClass("thumbSelected");
if(ta.has('responsiveCMS')) {
$(thumbOld).getParent('a').removeClass("linkSelected");
}
}
divnew.style.display="block";
if (thumbNew)
{
$(thumbNew).addClass("thumbSelected");
if(ta.has('responsiveCMS')) {
$(thumbNew).getParent('a').addClass("linkSelected");
}
}
var twitterUrl = divnew.get("data-twitterurl")
if (twitterUrl) {
var twitterAnchor = ta.id("TWITTER_LINK")
if (twitterAnchor) {
twitterAnchor.setProperty("href",twitterUrl)
}
}
currentId=id;
if(imageClickData && imageClickData.pageUrl && currentId) {
var currentUrl = imageClickData.pageUrl;
var pattern=/\#[0-9]+/
currentUrl = currentUrl.replace(pattern, '\#' + currentId);
imageClickData.pageUrl = currentUrl;
}
var mediaTypeElmt = ta.id("photo_" + id + "_mediatype");
if (mediaTypeElmt) {
if (mediaTypeElmt.value == "video") {
showVideo(id);
}
else {
var videoPlayerElmt = ta.id("LOC_PHOTOS_VIDEO_PLAYER");
if (videoPlayerElmt) {
videoPlayerElmt.style.display = "none";
}
}
}
}
// update the URL in the textarea of the right hand side.
updatePhotoUrlBox(id);
// AGOF tracking (only for .de)
// we want to ignore any impressions from loadDesignatedPhoto since it would cause two impressions on page load
if(!ignoreImpression && typeof szm_reload_lightbox == 'function'){
szm_reload_lightbox();
}
}
}
var updatePhotoUrlBox = function(id)
{
try
{
// update only when PhotoUrlBox is enabled.
if(typeof enabledPhotoUrlBox == 'undefined' || enabledPhotoUrlBox != 1)
{
return;
}
var pubContainer = document.getElement('.photoUrlBox');
if (!pubContainer)
{
return;
}
var ownerPhotoMask = ta.id("ownerPhoto_"+id);
if (ownerPhotoMask && ownerPhotoMask.value == 1)
{
pubContainer.style.display = 'none';
}
else
{
if (pubContainer.style.display == 'none')
{
pubContainer.style.display = 'block';
}
var elmInnerCode = ta.id("innerCode_"+id);
if (elmInnerCode)
{
var innerCode = elmInnerCode.value;
var elmPubCode = ta.id('pubCODE');
if (elmPubCode)
{
elmPubCode.value = innerCode;
}
if (typeof isPhotoUrlCopied != 'undefined')
{
isPhotoUrlCopied = 0; // reset to send pid to ActionRecord when user copies the contnets of the textarea.
}
} // if (elmInnerCode)
}
}
catch(e)
{
ta.util.error.record(e, 'location_photos.vm.updatePhotoUrlBox()');
}
}
function showVideo(id) {
var success = false;
try {
var videoPlayerElmt = ta.id("LOC_PHOTOS_VIDEO_PLAYER");
var videoPlayerCntrNew = ta.id("photo_" + id + "_player");
if (videoPlayerElmt && videoPlayerCntrNew) {
videoPlayerElmt.parentNode.removeChild(videoPlayerElmt);
videoPlayerCntrNew.appendChild(videoPlayerElmt);
videoPlayerElmt.style.display = "block";
var playerWidth = null;
var playerHeight = null;
if (videoPlayerCntrNew.style && videoPlayerCntrNew.style.width && videoPlayerCntrNew.style.height) {
pWidth = parseInt(videoPlayerCntrNew.style.width);
pHeight = parseInt(videoPlayerCntrNew.style.height);
}
var locId = "707612";
if (typeof locId != "undefined" && locId != null && locId != "" && !isNaN(Number(locId))) {
locId = Number(locId);
}
else {
locId = 0;
}
success = loadLocationVideoIntoPlayer(
ta.id("photo_" + id + "_player_path").value, ta.id("photo_" + id + "_player_tmb").value, ta.id("photo_" + id + "_player_id").value, locId,
pWidth,
pHeight
);
videoPlayerCntrNew.style.display = (success ? "block" : "none");
var imgBx = document.getElement("#photo_" + id + " .imgBx");
if (imgBx) {
var previewImg = document.getElement("#photo_" + id + " .imgBx img");
if (previewImg) {
previewImg.style.display = (success ? "none" : "block");
}
var vidErr = document.getElement("#photo_" + id + "_player .videoError");
if (vidErr) {
vidErr.style.display = (success ? "none" : "block");
}
else if (!success) {
new Element("div", {
"html": 'We\'re sorry, video player could not load',
"class": "videoError"
}).inject(imgBx);
}
}
}
}
catch (e) {
ta.util.error.record(e, "location_photos.vm - showVideo", null, { mediaId:id });
success = false;
}
return success;
}
function stopLocationVideo()
{
try {
if(ta.has('jwplayer.player') && ta.retrieve('jwplayer.player')) {
ta.retrieve('jwplayer.player').stop();
}
}
catch (e) {
ta.util.error.record(e, "location_photos.vm - stopLocationVideo");
}
}
/**
* Loads the given video srcUrl into Jwplayer version 7
*/
function loadLocationVideoIntoPlayer(srcUrl, thumbUrl, mediaId, locId, pWidth, pHeight)
{
try {
var flvUrl = srcUrl + ".flv";
if (!ta.media.JWPlayer) {
return false;
}
var options = {
containerId: 'JWPLAYER',
videoUrl: flvUrl,
previewUrl: thumbUrl,
mediaId: mediaId,
locationId: locId,
initFailureCallback: refreshImage
};
if (typeof(pWidth) !== 'undefined' && typeof(pHeight) !== 'undefined' && pWidth != null && pHeight != null ) {
options.playerHeight = pHeight;
options.playerWidth = pWidth;
}
var player = ta.media.JWPlayer.createPlayer(options);
if(player) {
ta.store('jwplayer.player', player);
}
}
catch (e) {
ta.util.error.record(e, "location_photos.vm - loadLocationVideoIntoPlayer");
return false;
}
return true;
}
function selectIAPReportDiv(id)
{
var oldReportedIAP = $('reportedIAP_'+currentId);
if (oldReportedIAP)
{
oldReportedIAP.hide();
}
var reportIAPLnk = $('reportIAPLnk_' + id);
if (reportIAPLnk)
{
var newReportedIAP = $('reportedIAP_'+id);
if (newReportedIAP) {
newReportedIAP.style.display="block";
reportIAPLnk.style.display="none";
}
else
{
reportIAPLnk.style.display="block";
}
}
}
function showMainImageNav(photoElemId) {
// show all pageNav elements (to prevent them from seeming to disappear on click)
var elems = document.getElements(".pageNav");
for (var i = 0; i < elems.length; i++) {
elems[i].setStyle("display", "block");
}
}
function hideMainImageNav(photoElemId) {
var elem = document.getElement("#" + photoElemId + " .pageNav");
if (elem) {
elem.setStyle("display", "none");
}
}
function checkImage(opts, event) {
}
function showLastImage(){
showImage(lastId);
}
function loadDesignatedPhoto()
{
setTimeout(function()
{
var h=document.location.href;
var mat = /\#([0-9]+)/.exec(h);
if (mat)
{
showImage(mat[1], null, true);
}
else if (h.indexOf("#last") != -1)
{
showLastImage();
}
}, 10);
}
var photoVote = Cookie.read('PhotoVote');
var showVote = function()
{
var elmtId = "voteBox_";
var elmt;
var h=document.location.href;
var mat = /\#([0-9]+)/.exec(h);
if (mat)
{
elmt = elmtId + mat[1];
elmt = $(elmt);
}
else
{
elmt = document.getElement('.viewer').getFirst().getElement('.photoVoteBox');
}
if(elmt)
{
// Set thank you text.
elmt.innerHTML = "<span class='photoVote photoVoteCaption'>" + JS_Thankyou + "</span>";
if (photoVote == "1")
{
new ta.overlays.RelativeOverlayAbove({
showCloseButton: true,
remoteContent: '/uvpages/photoNoVote.html'
}, elmt);
}
}
}
var locPhotoLoad = function() {
loadDesignatedPhoto();
if(!isPopup && photoVote && (photoVote == "1" || photoVote == "5"))
{
Cookie.dispose('PhotoVote', {domain:cookieDomain, path:"/"});
showVote.delay(500);
}
}
window.addEvent('load', locPhotoLoad);
var locks = {'IVO':false, 'IVS':false};
var locationId = '';
locationId = '707612';
var userLoggedIn = false;
var fp_default = '932EB3BDDE1824BA9CD9A1E2A48D3A0E';
function getFootprint()
{
var fp = TALSO.get('CookieId');
if(!fp && fp_default && TALSO.is_able()) // fp_default is defined in iap_head.vm, which gets included by showuserreviews.vm
{
TALSO.set('CookieId',fp_default);
fp = fp_default;
}
return fp;
}
function getIAPVoteOptions()
{
ta.servlet.Photos.closeReportIAPTeaser();
var sourceLnk = ta.id('reportIAPLnk_' + currentId);
if(sourceLnk) {
ta.overlays.Factory.iapFlyout({type: 'dummy'}, sourceLnk, {voteContentType:'MEDIA', contentId: currentId});
}
}
var imageClickData = {
boxHead: "Want to use this image?",
boxCopy: "Please copy & paste this embed code onto your site:",
boxRequire: "Images must be attributed to TripAdvisor.",
boxMore: "Learn more",
boxWhyFull: "\074p\076TripAdvisor images may only be used with attribution back to TripAdvisor. Using the TripAdvisor embed code renders the image with an attribution line that satisfies this requirement.\074/p\076\074p\076In addition, by using the embed code, you reduce the load on your web server, because the image will be hosted on the same worldwide content delivery network TripAdvisor uses instead of your web server.\074/p\076",
boxAbout: "About the embed code",
pageUrl: "https://www.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html#244255527",
pageText: "Catering event - Picture of Oyster Boy, Toronto",
detailUrl: "https://www.tripadvisor.ca/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html",
detailName: "Oyster Boy",
detailText: "This photo of {0} is courtesy of TripAdvisor"
};
</script>
<script>
var isPopup = false;
ta.queueForLoad(function() { ta.store('lpdl_default_photo', 244255527); ta.store('lpdl_default_review', 463755650) }, 'lpdl_photo_carousel');
</script>
<script>
var _comscore = _comscore || [];
_comscore.push({ c1: '2', c2: '6036461', c3: '', c4: '' });
var _csload = function() {
var s = document.createElement('script'), el = document.getElementsByTagName('script')[0]; s.async = true;
s.src = (document.location.protocol == 'https:' ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js';
el.parentNode.insertBefore(s, el);
};
ta.queueForLoad(_csload, 5, 'comscore');
</script>
<noscript>
<img class='tracking' style='display:none' height='1' width='1' src='https://sb.scorecardresearch.com/p?c1=2&c2=6036461&c3=&c4=&c5=&c6=&c15=&cv=2.0&cj=1'/>
</noscript>
<script type='text/javascript'>
ta.store('hac_timezone_awareness', true);
ta.store('ta.hac.locationTimezoneOffset', -18000000);
</script><script type='text/javascript'>
if (ta.localStorage && ta.localStorage.enabled) {
var previousSessionId = ta.localStorage.get('qualaroo-session-id');
var currentSessionId = '452AA622C89AA7D4C4AC4EF247636235';
if (previousSessionId && previousSessionId == currentSessionId) {
var views = Number(ta.localStorage.get('qualaroo-page-views')) + 1;
ta.localStorage.set('qualaroo-page-views', views);
} else {
ta.localStorage.set('qualaroo-session-id', currentSessionId);
ta.localStorage.set('qualaroo-page-views', 1);
}
}
</script>
<script type="text/javascript">
ta.queueForReady( function() {
ta.localStorage && ta.localStorage.updateSessionId('452AA622C89AA7D4C4AC4EF247636235');
}, 1, "reset localStorage session id");
</script>
<script type="text/javascript">
require(['trjs!utils/bounceRateUtils'], function(bounceRate) {
bounceRate.init([15, 30]);
});
</script>
<script type="text/javascript">
typeof require !== 'undefined' && require(['ta/Core/TA.Store'], function(taStore) {
taStore.store("alternateCurrencyLabel", "hotels_alternative_currency_canada");
});
</script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/polyfills/dist/intl.en-CA-v2702941893a.js'></script>
<script>
typeof define !== 'undefined' && define('ta-i18n',['utils/IntlFormatter'],function(IntlFormatter){
Intl && Intl.__disableRegExpRestore && Intl.__disableRegExpRestore();
return (ta=ta||{}).i18n=new IntlFormatter("en-CA","USD");
});
</script>
<script type="text/javascript">
ta.store('ta.commerce.suppress_commerce_impressions.enabled', true);
</script>
<script type="text/javascript">
ta.store('ib_price_click_tracking.enabled', true);
</script>
<script type="text/javascript">
require(['ta/Core/TA.Store'], function(taStore) {
taStore.store('typeahead.typeahead2_mixed_ui', true);
taStore.store('typeahead.typeahead2_geo_segmented_ui', true);
taStore.store('typeahead.geoArea', 'Toronto area'); taStore.store('typeahead.worldwide', 'Worldwide'); taStore.store('typeahead.noResultsFound', 'No results found.');
taStore.store('typeahead.flight_enabled', true);
taStore.store('typeahead.localAirports', [{"lookbackServlet":"Airport","autobroadened":"false","normalized_name":"newark liberty intl airport","title":"Destinations","type":"AIRPORT","document_id":null,"is_vr":false,"url":"\/Airport-g46671-qEWR-Newark_New_Jersey.html","urls":[{"url_type":"AIRPORT","name":"Newark Liberty Intl Airport, Newark, New Jersey","type":"AIRPORT","url":"\/Airport-g46671-qEWR-Newark_New_Jersey.html"}],"is_broad":false,"scope":"global","name":"Newark Liberty Intl Airport, Newark, New Jersey","data_type":"LOCATION","details":{"parent_name":"Newark","grandparent_name":"New Jersey","highlighted_name":"Newark, NJ - Newark International Airport (EWR)","name":"Newark, NJ - Newark International Airport (EWR)","parent_ids":[46671,28951,191,19,1],"geo_name":"Newark, New Jersey"},"airportCode":"EWR","shortName":"Newark (EWR)","value":7917622,"coords":"40.691402,-74.1749"}]);
taStore.store('typeahead.recentHistoryList', [{"war_url":"\/UserReview-g155019-d707612-Oyster_Boy-Toronto_Ontario.html","autobroadened":"false","normalized_name":"oyster boy","type":"EATERY","title":"Restaurants","document_id":null,"is_vr":false,"url":"\/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html","urls":[{"url_type":"eat","name":"Oyster Boy, Toronto, Ontario, Canada","type":"EATERY","url":"\/Restaurant_Review-g155019-d707612-Reviews-Oyster_Boy-Toronto_Ontario.html"}],"is_broad":false,"scope":"global","name":"Oyster Boy, Toronto, Ontario, Canada","data_type":"LOCATION","details":{"parent_name":"Toronto","grandparent_name":"Ontario","highlighted_name":"Oyster Boy","name":"Oyster Boy","parent_ids":[155019,154979,153339,19,1],"geo_name":"Toronto, Ontario, Canada"},"value":707612,"coords":"43.64509,-79.41431"},{"lookbackServlet":null,"autobroadened":"false","normalized_name":"toronto","title":"Destinations","type":"GEO","document_id":null,"is_vr":true,"url":"\/Home-g155019","urls":[{"url_type":"geo","name":"Toronto Tourism","fallback_url":"\/Home-g155019","type":"GEO","url":"\/Home-g155019"},{"url_type":"vr","name":"Toronto Vacation Rentals","fallback_url":"\/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html","type":"VACATION_RENTAL","url":"\/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"},{"url_type":"eat","name":"Toronto Restaurants","fallback_url":"\/Restaurants-g155019-Toronto_Ontario.html","type":"EATERY","url":"\/Restaurants-g155019-Toronto_Ontario.html"},{"url_type":"attr","name":"Toronto Attractions","fallback_url":"\/Attractions-g155019-Activities-Toronto_Ontario.html","type":"ATTRACTION","url":"\/Attractions-g155019-Activities-Toronto_Ontario.html"},{"url_type":"hotel","name":"Toronto Hotels","fallback_url":"\/Hotels-g155019-Toronto_Ontario-Hotels.html","type":"HOTEL","url":"\/Hotels-g155019-Toronto_Ontario-Hotels.html"},{"url_type":"flights_to","name":"Flights to Toronto","fallback_url":"\/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html","type":"FLIGHTS_TO","url":"\/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"},{"url_type":"nbrhd","name":"Toronto Neighbourhoods","fallback_url":"\/NeighborhoodList-g155019-Toronto_Ontario.html","type":"NEIGHBORHOOD","url":"\/NeighborhoodList-g155019-Toronto_Ontario.html"},{"url_type":"tg","name":"Toronto Travel Guides","fallback_url":"\/Travel_Guide-g155019-Toronto_Ontario.html","type":"TRAVEL_GUIDE","url":"\/Travel_Guide-g155019-Toronto_Ontario.html"}],"is_broad":false,"scope":"global","name":"Toronto, Ontario, Canada","data_type":"LOCATION","details":{"parent_name":"Ontario","grandparent_name":"Canada","rac_enabled":false,"highlighted_name":"Toronto","name":"Toronto","parent_ids":[154979,153339,19,1],"geo_name":"Ontario, Canada"},"value":155019,"coords":"43.64381,-79.38554"}]);
taStore.store('typeahead.restaurant', "Restaurant"); taStore.store('typeahead.attraction', "Attraction"); taStore.store('typeahead.hotel', "Hotel"); taStore.store('typeahead.restaurant_list', "Restaurants"); taStore.store('typeahead.attraction_list', "Attractions"); taStore.store('typeahead.things_to_do', "Things to Do"); taStore.store('typeahead.hotel_list', "Hotels"); taStore.store('typeahead.flight_list', "Flights"); taStore.store('typeahead.vacation_rental_list', "Vacation Rentals"); taStore.store('typeahead.scoped.static_local_label', '% area'); taStore.store('typeahead.scoped.result_title_text', 'Start typing, or try one of these suggestions...'); taStore.store('typeahead.scoped.poi_overview_geo', '<span class="poi_overview_item">Overview</span> of %'); taStore.store('typeahead.scoped.poi_hotels_geo', '<span class="poi_overview_item">Hotels</span> in %'); taStore.store('typeahead.scoped.poi_hotels_geo_near', '<span class="poi_overview_item">Hotels</span> near %'); taStore.store('typeahead.scoped.poi_vr_geo', '<span class="poi_overview_item">Vacation Rentals</span> in %'); taStore.store('typeahead.scoped.poi_vr_geo_near', '<span class="poi_overview_item">Vacation Rentals</span> near %'); taStore.store('typeahead.scoped.poi_attractions_geo', '<span class="poi_overview_item">Things to Do</span> in %'); taStore.store('typeahead.scoped.poi_eat_geo', '<span class="poi_overview_item">Restaurants</span> in %'); taStore.store('typeahead.scoped.poi_flights_geo', '<span class="poi_overview_item">Flights</span> to %'); taStore.store('typeahead.scoped.poi_nbrhd_geo', '<span class="poi_overview_item">Neighbourhoods</span> in %'); taStore.store('typeahead.scoped.poi_travel_guides_geo', '<span class="poi_overview_item">Travel Guides</span> in %'); taStore.store('typeahead.scoped.overview', 'Overview '); taStore.store('typeahead.scoped.neighborhoods', 'Neighbourhoods'); taStore.store('typeahead.scoped.travel_guides', 'Travel Guides'); taStore.store('typeahead.scoped.geo_area_template', '% area'); taStore.store('typeahead.searchMore', 'Find more results for "%"');
taStore.store('typeahead.history', 'Recently viewed'); taStore.store('typeahead.history.all_caps', 'RECENTLY VIEWED'); taStore.store('typeahead.popular_destinations', 'POPULAR DESTINATIONS');
});
</script>
<script type="text/javascript">
ta.store('metaCheckRatesUpdateDivInline', 'PROVIDER_BLOCK_INLINE');
ta.store('metaInlineGeoId', '');
</script>
<script>
</script>
<script type="text/javascript">
ta.store('metaCheckRatesUpdateDiv', 'PROVIDER_BLOCK');
ta.store('checkrates.meta_ui_sk_box_v3', true)
ta.store('checkrates.one_second_xsell', true);
</script>
<script>
ta.store("lightbox_improvements", true);
ta.store("checkrates.hr_bc_see_all_click.lb", true);
</script>
<script type="text/javascript">
</script>
<script type="text/javascript">
var metaCheckRatesCSS = 'https://static.tacdn.com/css2/meta_lightbox_overlay-v21590078294a.css';
ta.store('metaCheckRatesFeatureEnabled', true);
</script>
<script type="text/javascript">
ta.store('mapProviderFeature.maps_api','ta-maps-gmaps3');
</script>
<script type="text/javascript">
ta.store('meta.isHackathonBC', true);
ta.store('meta.bc.noConfirmedAvailability', 'No confirmed availability for these partners on these dates.'); ta.store('meta.bc.noConfirmedAvailabilityWithXSell', 'No confirmed availability for these partners on these dates. Try new dates or check these sites for availability.'); ta.store('meta.bc.noAvailability', 'No availability for our partners on these dates.'); ta.store('meta.bc.noAvailabilityWithXSell', 'No availability for your dates. Try one of these similar hotels.');
ta.store('meta.bc.bestPricesForYourStay', 'Best prices for your stay');
ta.store('meta.bc.pricesTravelSitesNotAvailDates', 'Prices from these travel sites are not available for your dates');
ta.store('meta.bc.isRevisedUnavailability', true);
</script>
<script type="text/javascript">
var dropdownMetaCSS = "https://static.tacdn.com/css2/meta_drop_down_overlay-en_CA-v23646127611a.css";
</script>
<script type="text/javascript">
ta.store('metaDatePickerEnabled', true);
var common_skip_dates = "Search without specific dates";
ta.store('multiDP.skipDates', "Search without specific dates"); ta.store('multiDP.inDate', "");
ta.store('multiDP.outDate', "");
ta.store('multiDP.minCheckInDate', '2019-01-06');
ta.store('multiDP.multiNightsText', "2 nights"); ta.store('multiDP.singleNightText', "1 night"); ta.store('calendar.preDateText', "dd/mm/yyyy");
ta.store('multiDP.adultsCount', "2");
ta.store('multiDP.singleAdultsText', "1 guest"); ta.store('multiDP.multiAdultsText', "2 guests"); ta.store('multiDP.enterDatesText', "Enter dates"); ta.store('multiDP.isMondayFirstDayOfWeek', false);
ta.store('multiDP.dateSeparator', " - ");
ta.store('multiDP.dateRangeEllipsis', "Searching %%%...");
ta.store('multiDP.abbrevMonthList', ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
ta.store('multiDP.checkIn', "Check In"); ta.store('multiDP.checkOut', "Check Out"); </script>
<script type="text/javascript">
(function(window,ta,undefined){
try {
ta = window.ta = window.ta || {};
ta.uid = 'XDIKLQokHYUAAbm1r98AAAAi';
var xhrProto = XMLHttpRequest.prototype;
var origSend = xhrProto.send;
xhrProto.send = function(data) {
try {
var localRE = new RegExp('^(/[^/]|(http(s)?:)?//'+window.location.hostname+')');
if(this._url && localRE.test(this._url)) {
this.setRequestHeader('X-Puid', 'XDIKLQokHYUAAbm1r98AAAAi');
}
}
catch (e2) {}
origSend.call(this, data);
}
var origOpen = xhrProto.open;
xhrProto.open = function (method, url) {
this._url = url;
return origOpen.apply(this, arguments);
};
ta.userLoggedIn = false;
ta.userSecurelyLoggedIn = false;
if (require.defined('ta/Core/TA.Prerender')) {
require('ta/Core/TA.Prerender')._init(true);
}
require(['ta/Core/TA.Record'], function(taRecord) {
taRecord.pushPageData(JSON.parse('{\"cv\":[[\"_deleteCustomVar\",1],[\"_deleteCustomVar\",47],[\"_setCustomVar\",11,\"Detail\",\"Oyster Boy-707612\",3],[\"_setCustomVar\",12,\"Country\",\"Canada-153339\",3],[\"_setCustomVar\",25,\"Continent\",\"North America-19\",3],[\"_setCustomVar\",13,\"Geo\",\"Toronto-155019\",3],[\"_setCustomVar\",20,\"PP\",\"-277-279-\",3],[\"_deleteCustomVar\",19],[\"_deleteCustomVar\",14],[\"_deleteCustomVar\",8],[\"_deleteCustomVar\",10]],\"url\":\"/LocationPhotoDirectLink\"}'));
});
require(['ta/Core/TA.Store'], function(taStore) {
taStore.keep("partials.pageProperties","277-279");
taStore.store("gaMemberState","-");
});
}
catch (e) {
if (require.defined('ta/util/Error')) {
require('ta/util/Error').record(e,'global_ga.vm');
}
}
}(window,ta));
</script>
<script type="text/javascript">
var lazyImgs = [
{"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/2e/70/54/avatar027.jpg","scroll":true,"tagType":"img","id":"lazyload_-853063355_0","priority":100,"logerror":false}
, {"data":"https://static.tacdn.com/img2/badges/20px/rev_04.png","scroll":true,"tagType":"img","id":"lazyload_-853063355_1","priority":100,"logerror":false}
, {"data":"https://static.tacdn.com/img2/badges/20px/Foodie.png","scroll":true,"tagType":"img","id":"lazyload_-853063355_2","priority":100,"logerror":false}
, {"data":"https://static.tacdn.com/img2/badges/20px/Appreciated.png","scroll":false,"tagType":"img","id":"lazyload_-853063355_3","priority":100,"logerror":false}
, {"data":"https://p.smartertravel.com/ext/pixel/ta/seed.gif?id=NY1QkB0y0N7ya8XbhWJxYRHPlr9ILdJsj4Ci0M6NAruH0x6AgpSHvXpQs0Yn7T-C","scroll":false,"tagType":"img","id":"p13n_tp_stm","priority":1000,"logerror":false}
];
var lazyHtml = [
];
ta.queueForLoad( function() {
require('lib/LazyLoad').init({}, lazyImgs, lazyHtml);
}, 'lazy load images');
</script>
<script type="text/javascript">
ta.keep('startOffset', '');
ta.store('page.geo', "155019");
ta.store('page.location', "707612");
ta.store('page.urlSafe', "https%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__LocationPhotoDirectLink__2D__g155019__2D__d707612__2D__i244255527__2D__Oyster__5F__Boy__2D__Toronto__5F__Ontario__2E__html");
ta.store('facebook.disableLogin', false);
ta.store('facebook.apiKey', "f1e687a58f0cdac60b7af2317a5febb3");
ta.store('facebook.appId', "162729813767876");
ta.store('facebook.appName', "tripadvisor");
ta.store('facebook.taServerTime', "1546783277");
ta.store('facebook.skip.session.check',"false");
ta.store('facebook.apiVersion', "v2.12");
ta.store("facebook.invalidFBCreds", true);
window.fbAsyncInit = ta.support.Facebook.init;
ta.queueForLoad(function(){
ta.support.Facebook.loadSdkLite("//connect.facebook.net/en_GB/sdk.js");
}, 0, 'LoadFBJSLite');
ta.store('fb.name', "");
ta.store('fb.icon', "");
if (window.require && require.defined && require.defined('facebook/ip_header_lite')) {
require('facebook/ip_header_lite').requestFor(
null
);
} else {
ta.keep('facebook.data.request', ['IP_HEADER']);
}
ta.keep('facebook.onSessionAvail', function () {
var node = document.getElementById('MOBHDRLNK');
if (node)
{
node.parentNode.removeChild(node);
}
});
</script>
<!--trkP:enable_cpm_content-->
<!-- PLACEMENT enable_cpm_content -->
<DIV ID="taplc_enable_cpm_content_0" class="ppr_rup ppr_priv_enable_cpm_content" data-placement-name="enable_cpm_content">
<style type="text/css">.gptAd.taEmpty {display:none!important;}.gptAd {position: relative;width: 100%; text-align: center;margin: auto;}.iab_leaBoa {text-align: center;}.iab_leaBoa.ftrBanner { clear:both }.gptAd > div, .gptAd > div > iframe {display: block;margin: auto;}</style> <script>function prfMark(lbl) {var perf = window.performance;if (perf && perf.mark){perf.mark(lbl);} } require(["ta/Core/TA.Store", "common/trackingStreams"],function(taStore, ts) {taStore.store("ads.gptBase", "/5349/ta.ta.com.s/na.can.ont.toronto"); taStore.store("ads.earlyAPILoad", "true");var gads = document.createElement('script');gads.async = true;gads.type = 'text/javascript';gads.src = '//www.googletagservices.com/tag/js/gpt.js';var node = document.getElementsByTagName('script')[0];node.parentNode.insertBefore(gads, node); taStore.store("ads.adStubs", {"adTypes":[{"tgt":"gpt-ad-728x90-970x66","size":[[728,90],[970,66],"fluid"],"type":"leaderboard_top","base":"/5349/ta.ta.com.s/na.can.ont.toronto","custom_targeting":{"pos":"top","sector":["afp","air","car","cas","dmo","fin","htl","nen","ota","oth","rtl","tel","tra"]}},{"tgt":"gpt-ad-300x250-300x600","size":[[300,250],[300,600],"fluid"],"type":"medium_rectangle_top","base":"/5349/ta.ta.com.s/na.can.ont.toronto","custom_targeting":{"pos":"top","companion":true,"sector":["afp","air","car","cas","dmo","fin","htl","nen","ota","oth","rtl","tel","tra"]}},{"tgt":"gpt-ad-preroll","size":[[0,0]],"type":"other","base":"/5349/ta.ta.com.s/na.can.ont.toronto","custom_targeting":{"pos":"top","sector":["afp","air","car","cas","dmo","fin","htl","nen","ota","oth","rtl","tel","tra"]}},{"tgt":"gpt-ad-336x280","size":[[336,280],"fluid"],"type":"other","base":"/5349/ta.ta.com.s/na.can.ont.toronto","custom_targeting":{"pos":"top","sector":["afp","air","car","cas","dmo","fin","htl","nen","ota","oth","rtl","tel","tra"]}},{"tgt":"gpt-ad-728x90-b","size":[[728,90],"fluid"],"type":"leaderboard_b","base":"/5349/ta.ta.com.s/na.can.ont.toronto","custom_targeting":{"pos":"b","sector":["afp","air","car","cas","dmo","fin","htl","nen","ota","oth","rtl","tel","tra"]}}]}); taStore.store("ads.pageTargeting", {"country":"153339","drs":["MOB_18","BRAND_25","FL_6","REV_13","REVB_24","REVH_33","RNA_0","SALES_46","SEARCH_4","SEM_94","SITEX_95","VR_61","TTD_77","HSX_9","HSXB_45","ML_5","ENGAGE_4","IBEX_34","SEO_86","RET_65"],"d":"YTO","sess":"452AA622C89AA7D4C4AC4EF247636235","cuisine":["Seafood","Canadian"],"kw":"Oyster_Boy","loctype":"restaurants","platform":"desktop","o":"NYC","dregion":"155019","aud_id":["16062","15440","16133","15873"],"geo":"155019","rd":"ca","r":"NYCYTO","oregion":"60763","detail":"707612","PageType":"LocationPhotoDirectLink","hname":"Oyster_Boy"});taStore.store("ads.adTracking", {"56115731":"Onyx","125294291":"Onyx","439801571":"Onyx","439513691":"Onyx","268297691":"Onyx","146529491":"Onyx","56043851":"Onyx","55678451":"Hotwire","55721291":"Choice","55752491":"Choice","56107811":"Rakuten","444557411":"Rakuten"});taStore.store("ads.attributionPixel", true);taStore.store("ads.enableScrollUpInjection", true);taStore.store("ads.holisticTracking", true);prfMark('start_load_ads_js');require(['trjs!cpm/DesktopAds'], function(desktopAds) {desktopAds.initDoubleClick();});});</script></DIV>
<!--etk-->
<script type="text/javascript">
if(ta.meta && ta.meta.linkTracking) {
require(['trjs!retargeting/listeners/desktop-meta-click'], function(metaClickListener) {
metaClickListener();
});
}
var regflowCss = "https://static.tacdn.com/css2/registration-v21941963796a.css";
var overlayCss = "https://static.tacdn.com/css2/overlays_defer-v2713422415a.css";
var amenityOverlayCss = "https://static.tacdn.com/css2/amenities_flyout-v24244760171a.css";
var amenityLightboxCss = "https://static.tacdn.com/css2/amenities_lightbox-v2954193163a.css";
var privateMsgCSS = "https://static.tacdn.com/css2/modules/private_messaging-v2580065107a.css";
var recentViewedCSS = "https://static.tacdn.com/css2/common/recently_viewed-v2628695694a.css";
var jfyOverlayCss = "https://static.tacdn.com/css2/p13n/jfy_onboarding.css";
ta.queueForReady(function() { new Asset.css("https://static.tacdn.com/css2/overlays/guests_rooms_overlay-v21208296734a.css")});
var floatingMapCSS = "https://static.tacdn.com/css2/modules/floating_map-v21951364473a.css";
var g_mapV2Css = "https://static.tacdn.com/css2/ta-mapsv2-v2714437478a.css";
var dhtml_cr_redesign_png24 = "https://static.tacdn.com/css2/overlays/cr_flyout-v22873065740a.css";
ta.store('p13n_client_tracking_tree',true);
ta.store('commerce_on_srp',true);
ta.store('useHotelsFilterState', true);
ta.store('hotel_review_low_price_message', true);
ta.store('ta.media.uploader.cssAsset', 'https://static.tacdn.com/css2/overlays/media_uploader-v21357956602a.css')
ta.meta && ta.meta.linkTracking && ta.queueForLoad(function() { ta.meta.linkTracking.setup(); }, 'setup meta link tracking event');
ta.store('assisted_booking_clicks_new_tab', true);
ta.store('access_control_headers', true);
ta.store('secure_registration.enabled',true);
ta.store( 'meta.disclaimerLinkText', 'Disclaimer' );
ta.store('restaurant_reserve_ui',true);
ta.store('hotels_placements_short_cells.overlaysCss', "https://static.tacdn.com/css2/hotels_list_short_cells_overlays-v23011334022a.css" );
</script>
<script class="allowAbsoluteUrls" type="text/javascript">
ta.store('ta.registration.currentUrlDefaults', {'url' : 'https%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__LocationPhotoDirectLink__2D__g155019__2D__d707612__2D__i244255527__2D__Oyster__5F__Boy__2D__Toronto__5F__Ontario__2E__html','partnerKey' : '1','urlKey' : 'a05055d0732a38a77'} );
</script>
<script type="text/javascript">
ta.store('ta.isIE11orHigher', false);
</script>
<script type='text/javascript'>
ta.store("calendar.serverTime", 1546783277510);
</script>
<script type="text/javascript">
ta.store("commerce_clicks_in_new_tab.isEnabled", true);
</script>
<script type="text/javascript">
ta.store('assisted_booking_desktop_entry', false);
ta.store('ibdm_impression_tracking', true);
ta.store('assisted_booking_desktop_entry.logTreePoll', true);
</script>
<script type="text/javascript">
ta.store('hr_chevron_redesign', true);
ta.queueForLoad(function() { ta.commerce.meta.alignPriceBlocks(); }, 'ta.commerce.meta.alignPriceBlocks');
</script>
<script type="text/javascript">
ta.store('guests_rooms_picker.enabled', true);
ta.store('guests_rooms_picker_3.enabled', true);
ta.store('guests_rooms_picker_4.enabled', true);
ta.queueForLoad(function() {
ta.widgets.calendar.updateGuestsRoomsPickerDataFromCookie();
ta.widgets.calendar.updateGuestsRoomsPickerUI();
}, 'update_guests_picker');
</script>
<script type="text/javascript">
require(['ta/Core/TA.Store'], function(taStore) {
taStore.store('rgPicker.nRooms', [
'0 rooms',
'1 room',
'2 rooms',
'3 rooms',
'4 rooms',
'5 rooms',
'6 rooms',
'7 rooms',
'8 rooms' ]
); taStore.store("rgPicker.nGuests", [
'0 guests',
'1 guest',
'2 guests',
'3 guests',
'4 guests',
'5 guests',
'6 guests',
'7 guests',
'8 guests',
'9 guests',
'10 guests',
'11 guests',
'12 guests',
'13 guests',
'14 guests',
'15 guests',
'16 guests',
'17 guests',
'18 guests',
'19 guests',
'20 guests',
'21 guests',
'22 guests',
'23 guests',
'24 guests',
'25 guests',
'26 guests',
'27 guests',
'28 guests',
'29 guests',
'30 guests',
'31 guests',
'32 guests',
'33 guests',
'34 guests',
'35 guests',
'36 guests',
'37 guests',
'38 guests',
'39 guests',
'40 guests',
'41 guests',
'42 guests',
'43 guests',
'44 guests',
'45 guests',
'46 guests',
'47 guests',
'48 guests',
'49 guests',
'50 guests',
'51 guests',
'52 guests',
'53 guests',
'54 guests',
'55 guests',
'56 guests',
'57 guests',
'58 guests',
'59 guests',
'60 guests',
'61 guests',
'62 guests',
'63 guests',
'64 guests' ]
);
taStore.store('rgPicker.roomsLabel', 'Rooms');
; taStore.store('rgPicker.adultsLabel', 'Adults');
; taStore.store('rgPicker.childrenLabel', 'Children');
; taStore.store('rgPicker.guestsLabel', 'Guests');
;
taStore.store("rgPicker.nAdults", [
'0 adults',
'1 adult',
'2 adults',
'3 adults',
'4 adults',
'5 adults',
'6 adults',
'7 adults',
'8 adults',
'9 adults',
'10 adults',
'11 adults',
'12 adults',
'13 adults',
'14 adults',
'15 adults',
'16 adults',
'17 adults',
'18 adults',
'19 adults',
'20 adults',
'21 adults',
'22 adults',
'23 adults',
'24 adults',
'25 adults',
'26 adults',
'27 adults',
'28 adults',
'29 adults',
'30 adults',
'31 adults',
'32 adults' ]
);
taStore.store("rgPicker.nTravelers", [
'0 Travellers',
'1 Traveller',
'2 Travellers',
'3 Travellers',
'4 Travellers',
'5 Travellers',
'6 Travellers',
'7 Travellers',
'8 Travellers',
'9 Travellers' ]
); taStore.store("rgPicker.ageBand.1", [
'0 Adults',
'1 Adult',
'2 Adults',
'3 Adults',
'4 Adults',
'5 Adults',
'6 Adults',
'7 Adults',
'8 Adults',
'9 Adults' ]
); taStore.store("rgPicker.ageBand.2", [
'0 Children',
'1 Child',
'2 Children',
'3 Children',
'4 Children',
'5 Children',
'6 Children',
'7 Children',
'8 Children',
'9 Children' ]
); taStore.store("rgPicker.ageBand.3", [
'0 Infants',
'1 Infant',
'2 Infants',
'3 Infants',
'4 Infants',
'5 Infants',
'6 Infants',
'7 Infants',
'8 Infants',
'9 Infants' ]
); taStore.store("rgPicker.ageBand.4", [
'0 Youths',
'1 Youth',
'2 Youths',
'3 Youths',
'4 Youths',
'5 Youths',
'6 Youths',
'7 Youths',
'8 Youths',
'9 Youths' ]
); taStore.store("rgPicker.ageBand.5", [
'0 Seniors',
'1 Senior',
'2 Seniors',
'3 Seniors',
'4 Seniors',
'5 Seniors',
'6 Seniors',
'7 Seniors',
'8 Seniors',
'9 Seniors' ]
);
taStore.store('rooms_guests_picker_update_da', 'Update');
taStore.store("best_prices_with_dates_21f3", 'Best prices for \074span class=\"dateHeader inDate\"\076checkIn\074/span\076 - \074span class=\"dateHeader outDate\"\076checkOut\074/span\076');
});
</script>
<script type="text/javascript">
</script>
<script type="text/javascript">
ta.localStorage && ta.localStorage.set('latestPageServlet', 'LocationPhotoDirectLink');
</script>
<script type="text/javascript">
ta.queueForLoad(function() {
if(!ta.overlays || !ta.overlays.Factory) {
var cancel = pageServlet == 'Hotels' && document.location.href.match(/-g\d/);
if (!cancel) {
ta.load('ta-overlays');
}
}
}, 'preload ta-overlays');
</script>
<script type="text/javascript">
ta.store("feature.hr_css_reduction", true);
</script>
<script type='text/javascript'>
ta.store('feature.flat_buttons', true);
</script>
<script type='text/javascript'>
ta.store('feature.flat_buttons_sitewide', true);
</script>
<script type='text/javascript'>
ta.store('h_sponsored_coupon_respect_price_slider', true);
</script>
<script type="text/javascript">
ta.store('tablet_google_search_app_open_same_tab', true);
</script>
<script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/common.global.b92f55c5fc.js' data-rup='@ta/common.global'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/tracking.interactions.5145b82c31.js' data-rup='@ta/tracking.interactions'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/social.button.536270e333.js' data-rup='@ta/social.button'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/overlays.pieces.cea325c8c5.js' data-rup='@ta/overlays.pieces'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/overlays.managers.fa898c5828.js' data-rup='@ta/overlays.managers'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/overlays.fullscreen-overlay.4effc4a01e.js' data-rup='@ta/overlays.fullscreen-overlay'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/overlays.modal.39d054d4a4.js' data-rup='@ta/overlays.modal'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/trips.trip-link.4cf5dd8c78.js' data-rup='@ta/trips.trip-link'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/platform.import.10cfd94466.js' data-rup='@ta/platform.import'></script><script type='text/javascript' crossorigin='anonymous' async src='https://static.tacdn.com/components/dist/@ta/platform.runtime.e0db7c9da6.js' data-rup='@ta/platform.runtime'></script><script>define('@ta/page-manifest',[],function(){return {"assets":["@ta/common.global.b92f55c5fc.js","@ta/tracking.interactions.5145b82c31.js","@ta/social.button.536270e333.js","@ta/overlays.pieces.cea325c8c5.js","@ta/overlays.managers.fa898c5828.js","@ta/overlays.fullscreen-overlay.4effc4a01e.js","@ta/overlays.modal.39d054d4a4.js","@ta/trips.trip-link.4cf5dd8c78.js","@ta/social.button.a50460afe1.css","@ta/overlays.pieces.b5e1ceb3bc.css","@ta/overlays.fullscreen-overlay.ac7417ed7b.css","@ta/overlays.modal.2fd838ec62.css","@ta/trips.trip-link.baa3729572.css","@ta/platform.import.10cfd94466.js","@ta/platform.runtime.e0db7c9da6.js","@ta/platform.runtime.6f0bd195e4.css"],"bundles":["@ta/overlays.fullscreen-overlay","@ta/overlays.managers","@ta/overlays.modal","@ta/overlays.pieces","@ta/social.button","@ta/tracking.interactions","@ta/common.global","@ta/trips.trip-link","@ta/page-manifest","@ta/platform.import","@ta/platform.runtime"],"redux":{"i18n":{"locale":"en_CA","language":"en","ietfLocale":"en-CA","isRtl":false,"currencyCode":"USD","distanceUnit":"KILOMETERS"},"api":{"requests":{},"responses":{}},"page":{"name":"LOCATION_DETAIL","geoId":155019,"detailId":707612,"crossSells":{"atLeastOneLocationRegistered":false,"requestNumber":1}},"travelerInfo":{"hotels":null,"vr":{"start":null,"end":null,"adults":2,"children":0},"attractions":{"singleDate":"","fromDate":"","toDate":""},"restaurants":{"date":"2019-01-06","time":"8:00 PM","partySize":"2","isDefault":true,"displayDate":"Sun., 01-06"}},"auth":{"isMember":false,"csrfToken":"TNI1625!AOoXZg8IHaplv6FIYl5PaaJKnfwHj12w1mFgsK944KG1BP4g1x9Szko7ke34/pLGnAgJmjCupY9WbKvYCu14mG5EfbzyM41tqzoAZPrmNcA158dlFZb4upHNisjUbPK49VMEgSeCBvAAWFUH0I0YxUdaljNBcHTGeDM6pSmui+VW","altSessId":"3A34A591D754FC86C46B19B12637B2E1","loggedInUserId":null,"captcha":null,"fbApi":{"apiVersion":"v2.12","facebookConnectApiKey":"f1e687a58f0cdac60b7af2317a5febb3","facebookConnectAppId":"162729813767876","facebookConnectAppName":"tripadvisor","taServerTime":1546783277,"skipFacebookSessionCheck":false,"sdkUrl":"//connect.facebook.net/en_GB/sdk.js"}},"route":{"geo":"155019","ff":"244255527","detail":"707612","page":"LocationPhotoDirectLink"},"overlays":{"global":null,"fab":null,"locals":{},"toasts":[]},"meta":{"initialServletName":"LocationPhotoDirectLink","device":{"viewportCategory":"DESKTOP","userAgentCategory":"DESKTOP","os":{"family":"UNKNOWN","majorVersion":-1},"browser":{"family":"UNKNOWN","majorVersion":0}},"readonlyMode":false,"initialRelativeUrl":"/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html","initialAbsoluteUrl":"https://www.tripadvisor.ca/LocationPhotoDirectLink-g155019-d707612-i244255527-Oyster_Boy-Toronto_Ontario.html","baseUrl":"https://www.tripadvisor.ca","imageCdnUrl":"https://static.tacdn.com","cookieDomain":".tripadvisor.ca","taUnique":"web410a.174.136.12.165.1682377C19C","isTaReferrer":false,"forceFullSite":false,"environment":"Live","isNativeWebview":false,"commerceCountryId":191},"tracking":{"mcid":0,"uid":"XDIKLQokHYUAAbm1r98AAAAi","analytics":{"cv":[["_deleteCustomVar",1],["_deleteCustomVar",47],["_setCustomVar",11,"Detail","Oyster Boy-707612",3],["_setCustomVar",12,"Country","Canada-153339",3],["_setCustomVar",25,"Continent","North America-19",3],["_setCustomVar",13,"Geo","Toronto-155019",3],["_setCustomVar",20,"PP","--",3],["_deleteCustomVar",19],["_deleteCustomVar",14],["_deleteCustomVar",8],["_deleteCustomVar",10]],"url":"/LocationPhotoDirectLink"},"searchSessionId":"452AA622C89AA7D4C4AC4EF2476362351546783277531ssid","sessionId":"452AA622C89AA7D4C4AC4EF247636235","uniqueId":"web410a.174.136.12.165.1682377C19C","sentryDsn":"https://0b15dd036dd34167a7fefd1a795a6659@sentry-1.nw.dev.tripadvisor.com/2","runMode":"PRODUCTION","serverName":"www.tripadvisor.com","hostName":"web410a.a.tripadvisor.com","vcsRevision":1288234,"vcsBranch":"releases/PRODUCTION_1288212_20190104_0445","drsInfo":"ABC.73*ATTPromo.11*AUC.4*BMP.55*BRDTTD.80*Brand.25*CAR.91*COM.95*CRS.46*Community.17*Content.39*CoreX.48*EXP.49*Engage.4*FLTMERCH.2*Filters.7*Flights.6*HRATF.87*HSX.9*HSXB.45*IBEX.34*ING.62*ITR.84*L10N.39*ML.5*ML6.19*MM.50*MOBILEAPP.-1*MOF.14*MTA.14*Me2.4*Mem.43*Mobile.18*MobileCore.76*Notifications.14*Other.85*P13N.89*PLS.68*POS.92*PRT.53*RDS1.88*RDS2.32*RDS3.1*RDS4.52*RDS5.30*RET.65*REV.13*REVB.24*REVH.33*RNA.0*RSE1.27*RSE2.8*Rooms.70*SE2O.25*SEM.94*SEO.86*SORT1.24*Sales.46*Search.4*SiteX.95*Surveys.24*T4B.86*TGT.57*TTD.77*TX.20*Timeline.12*VP.47*VR.61*YM.3*YMB.36","uvmScore":"","retargetingUrl":"www.tamgrt.com/RT"}},"apolloCache":null,"messages":{"logged_out_home_trips_give":"Trips give you a fast, simple way to organise all your travel wish lists, recommendations and upcoming plans in one place.","trips_product_name":"Trips","onboarding_social_name_screen_username_ghost_text":"e.g. SavvyTraveler123","social_readonly_message_main":"Our site is currently undergoing maintenance.","social_edit_profile_username":"Username","profile_update_error_username_invalid_characters":"Only use Latin characters (A-Z), numbers, '_' and '-'.","profile_update_error_display_name_too_long":"{0} cannot be longer than 40 characters","trips_log_in_now":"Log in now","profile_update_error_username_too_long":"{0} cannot be longer than 20 characters","onboarding_social_name_screen_display_name_helper_text_period_814":"This appears on your profile and any content you post.","onboarding_social_name_screen_cta":"Confirm","empty_trip_home_get_started":"Get started","onboarding_social_name_screen_new_header":"Choose your display name and a unique @username","onboarding_social_name_screen_returning_header":"Please confirm or update your profile information","onboarding_social_name_screen_display_name_field_v2":"Display name","onboarding_social_name_screen_display_name_ghost_text":"e.g. John Doe","profile_update_error_username_too_short":"{0} needs to be at least 3 characters","mobile_profile_update_error_display_name_too_short":"Display name needs to be at least 3 characters","profile_update_error_username_contains_ta_words":"Words such as \u201CStaff\u201D, \u201CAdmin\u201D, \u201CTripAdvisor\u201D are not allowed.","social_legal_tou_returnmem_confirm":"By clicking Confirm, you agree to our \u003ca rel=\"nofollow\" class=\"{1}\" target=\"_blank\" href=\"{0}\">Terms of Use\u003c/a>.","social_loading_error_1":"Whoops, something went wrong.","compliment_9bd":"Sorry, an unexpected error has occurred. Please try again in a moment.","link_uploader_refresh":"Refresh","btn_cancel":"Cancel","logged_out_home_hello_trips":"Say hello to Trips","onboarding_social_name_screen_username_helper_text_period_814":"This unique handle helps travellers search for you.","profile_update_error_username_already_exists":"{0} has already been taken","profile_update_error_contains_profanity":"Profanity is not allowed","social_readonly_message_subtext":"Please check back soon."},"features":{"social_2018_login_gate_skip_terms_of_service":false,"react_tracking_impressions":true,"social_2018_login_gate":true,"prod_runtime_tracking":false},"renders":[{"id":"component_1","props":{},"package":"@ta/trips.trip-link"}],"profilables":[],"hydrations":[],"lazyLoadedModules":[]};});</script>
<script type="text/javascript">require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'poi_details','handlers',['handlers']);
// private JS for POI details
define(["placement"], function(placement) {
function checkEmailAction(event, elem, email, locId, emailSubj, action) {
window.location = 'mailto:' + email + '?subject=' + emailSubj;
new Request({url: "/ActionRecord?excludeFromVS=false&action=" + action + "&d=" + locId}).send();
}
return {
checkEmailAction: checkEmailAction
};
});
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'lpdl_photo_carousel','handlers',['handlers']);
// private JS to render big photo carousel on /HR
define(["placement"], function(placement) {
var _currentPhotoId = -1;
var _currentReviewId = -1;
function switchPhoto(photoId, reviewid) {
if (-1 == _currentPhotoId) {
if (!ta.has('lpdl_default_photo')) {
return; // TODO WARN
}
_currentPhotoId = ta.retrieve('lpdl_default_photo');
}
if (-1 == _currentReviewId) {
if (ta.has('lpdl_default_review')) {
_currentReviewId = ta.retrieve('lpdl_default_review');
}
}
// Switch the Photo
if (_currentPhotoId == photoId){
return;
}
var divnew = ta.id("photo_"+photoId);
var divold = ta.id("photo_"+_currentPhotoId);
if (null == divnew || null == divold) {
// TODO error
return ;
}
divold.style.display="none";
var oldMediaTypeElmt = ta.id("photo_" + _currentPhotoId + "_mediatype");
if (oldMediaTypeElmt && oldMediaTypeElmt.value == "video")
{
stopLocationVideo();
}
divnew.style.display="block";
var mediaTypeElmt = ta.id("photo_" + photoId + "_mediatype");
if (mediaTypeElmt) {
if (mediaTypeElmt.value == "video") {
showVideo(photoId);
}
else {
var videoPlayerElmt = ta.id("LOC_PHOTOS_VIDEO_PLAYER");
if (videoPlayerElmt) {
videoPlayerElmt.style.display = "none";
}
}
}
_currentPhotoId = photoId;
// Switch the review
if ( -1 == _currentReviewId || typeof reviewid === 'undefined' || reviewid === null) {
return; // WARN
}
if (reviewid < 0) {
return; // WARN
}
var revid = "review_" + _currentReviewId.toString();
var divRev = ta.id(revid);
if (null == divRev) {
// TODO warn
return;
}
var sreview = reviewid.toString();
divRev.id = "review_" + sreview;
_currentReviewId = reviewid;
if (reviewid == 0) {
divRev.innerHTML = ""; // Photo has no review, clear the review
}
else {
showReviewBlock(sreview,'rblock', '0', true); // call /UserReviewController to get the review
}
}
return {
switchPhoto: switchPhoto
};
});
});if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["ta"]); });
}
else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta"]);}
}require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'lpdl_ce_ss_promo','handlers',['handlers']);
define(['placement', 'ta', 'utils/ceUtils'], function (placement, ta, ceUtils) {
ta.queueForLoad(function () {
ceUtils.isChromeExtensionInstalled(function () {
ta.find('.wrapper .text').innerHTML = 'Find out more about your<br>TripAdvisor Browser Button';
var btn = ta.find('.wrapper .btns .ui_button');
btn.onclick = undefined;
btn.href = "chrome-extension://oiekdmlabennjdpgimlcpmphdjphlcha/newuser-en.html";
btn.target = "_blank";
btn.innerText = "Learn More";
}, function () {
// record impression event for the placement
var elm = ta.id(placement.id).querySelector('.wrapper');
ta.trackEventOnPage(elm.dataset.campaign, elm.dataset.placementid, 'impression', elm.dataset.version, true);
});
});
return {};
});});define('utils/nodePreserve', ['ta/util/ajaxPreserves', 'utils/to-array'], function(ajaxP, toArray) {
'use strict';
var exports = {};
function _replaceContent(to, from) {
to.innerHTML = '';
while (from.firstChild) {
to.appendChild(from.firstChild);
}
}
function _detachNodes(detachedNodes, tree) {
Array.prototype.forEach.call(tree.querySelectorAll('.node-preserve, .ajax_preserve'), function(el) {
var key = el.getAttribute("data-ajax-preserve");
if (key) {
detachedNodes[key] = el;
el.parentNode && el.parentNode.removeChild(el);
}
});
}
function _doPreserve(detachedNodes, element) {
var key = element.getAttribute('data-ajax-preserve');
var preservedNode = detachedNodes[key];
if (!preservedNode) {
return;
}
element.parentNode && element.parentNode.replaceChild(preservedNode, element);
_replaceContent(preservedNode, element);
delete detachedNodes[key];
}
function _preserve(left, right, preserveContent) {
var detachedNodes = {};
if (preserveContent) {
ajaxP.innerCopy(left, right);
}
_detachNodes(detachedNodes, left);
_replaceContent(left, right);
toArray(left.querySelectorAll('[data-ajax-preserve]')).forEach(_doPreserve.bind(null, detachedNodes));
}
exports.nodePreserve = function(left, right) {
_preserve(left, right, false);
};
exports.treePreserve= function(left, right) {
_preserve(left, right, true)
};
return exports;
});
define('utils/ResponsiveEvents', ['mixins/Events', 'utils/responsive', 'utils/throttle', 'vanillajs'],
function (Events, Responsive, Throttle) {
'use strict';
var lastWidth = document.documentElement.clientWidth;
var lastSizes = Responsive.currentBreakpoints();
var events = ['breakpoint'];
Responsive.breakpoints.forEach(function(size) {
events.push('over-' + size, 'under-' + size);
});
var delegate = Events.create(events);
delegate.onOver = function(size, fn) {
delegate.on('over-' + size, fn);
};
delegate.onUnder = function(size, fn) {
delegate.on('under-' + size, fn);
};
delegate.offOver = function(size, fn) {
delegate.off('over-' + size, fn);
};
delegate.offUnder = function(size, fn) {
delegate.off('under-' + size, fn);
};
function getChangedSizes(a, b, reverse) {
var aDiff = a.filter(function(x) { return b.indexOf(x) < 0; });
var bDiff = b.filter(function(x) { return a.indexOf(x) < 0; });
return reverse ? aDiff.reverse().concat(bDiff.reverse()) : aDiff.concat(bDiff);
}
function checkBreakpoints() {
var width = document.body.clientWidth;
if (width == lastWidth) {
return;
}
var expanded = width > lastWidth;
var sizes = Responsive.currentBreakpoints();
var diff = getChangedSizes(lastSizes, sizes, expanded);
diff.forEach(function(size) {
var prefix = expanded ? 'over-' : 'under-';
delegate.emit(prefix + size);
});
if (diff.length) {
delegate.emit('breakpoint', sizes[0]);
}
lastSizes = sizes;
lastWidth = width;
}
window.addEventListener('resize', Throttle(checkBreakpoints, 100));
return delegate;
});
define('responsive/text-resizer', ['babel/babel-helpers', 'utils/to-array', 'utils/classnameUtils', 'utils/throttle', 'utils/ResponsiveEvents', 'vanillajs'], function (babelHelpers, toArray, classnameUtils, throttle, ResponsiveEvents) {
var RESIZE_CLASS = "autoResize";
var WATCH_CLASS = "__resizeWatch";
var GROUP_PROP = "data-sizegroup";
var CONTEXT_PROP = "__resizerContext";
var MAX_ITERATIONS = 4;
var END_JUMP_MULTIPLIER = 0.5;
var FONT_MATCHER = /^(\d+(?:\.\d+)?)(.*)$/;
var MIN_FONT_SIZE = {
'px': 8.5,
'em': 0.5,
'pt': 6,
'%': 50
};
var didDocInit = false;
var listening = false;
function _allWatchers() {
var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.body;
if (!context === document) {
context = document.body;
}
return toArray(context.querySelectorAll('.' + WATCH_CLASS)).filter(function (e) {
return !!e[CONTEXT_PROP];
});
}
function _getSizeContext(element) {
element.style.fontSize = null;
var fontSize = (getComputedStyle(element) || {}).fontSize;
if (!fontSize) {
return {};
}
var _fontSize$match = fontSize.match(FONT_MATCHER),
_fontSize$match2 = babelHelpers.slicedToArray(_fontSize$match, 3),
style = _fontSize$match2[0],
val = _fontSize$match2[1],
unit = _fontSize$match2[2];
var originalSize = parseFloat(val);
if (!(originalSize && originalSize > 0.001 && MIN_FONT_SIZE[unit])) {
return {};
}
return {
originalSize: originalSize,
units: unit,
multiplier: 1,
minMult: Math.max(END_JUMP_MULTIPLIER, MIN_FONT_SIZE[unit] / originalSize)
};
}
function _makeContext(element) {
if (element[CONTEXT_PROP]) {
return element[CONTEXT_PROP];
}
var sizeContext = _getSizeContext(element);
if (!sizeContext.originalSize) {
return null;
}
element[CONTEXT_PROP] = Object.assign(sizeContext, {
group: element.getAttribute(GROUP_PROP), multApplied: 1
});
return element[CONTEXT_PROP];
}
function _calculateMultipliers(elements) {
for (var i = 0; i < MAX_ITERATIONS && elements.length; i++) {
elements.forEach(_applyMultiplier);
elements = elements.filter(function (element) {
if (!(element.clientWidth > 0) || element.scrollWidth <= element.clientWidth) {
return false;
}
var ctx = element[CONTEXT_PROP];
var paddingWidth = (parseFloat(element.style.paddingLeft) || 0) + (parseFloat(element.style.paddingRight) || 0);
var currentSize = element.scrollWidth - paddingWidth;
if (currentSize < 1) {
return false;
}
var newmul = (element.clientWidth - paddingWidth - 2) / currentSize;
newmul = Math.min(newmul, 0.95) * ctx.multiplier;
if (newmul <= ctx.minMult) {
ctx.multiplier = ctx.minMult;
return false;
}
ctx.multiplier = newmul;
return true;
});
}
if (elements.length) {
elements.forEach(_applyMultiplier);
elements.forEach(function (element) {
if (element.scrollWidth > element.clientWidth) {
element[CONTEXT_PROP].multiplier = element[CONTEXT_PROP].minMult;
}
});
}
}
function _applyMultiplier(element) {
var ctx = element[CONTEXT_PROP];
if (!ctx || ctx.multApplied == ctx.multiplier || !(ctx.multiplier > 0)) {
return false;
}
var newSize = Math.max(MIN_FONT_SIZE[ctx.units], ctx.originalSize * ctx.multiplier);
element.style.fontSize = '' + newSize + ctx.units;
ctx.multApplied = ctx.multiplier;
return true;
}
function _normalizeAndApply(dirtyElements) {
if (!(dirtyElements && dirtyElements.length)) {
return;
}
var groupMultipliers = {};
dirtyElements.forEach(function (e) {
var ctx = e[CONTEXT_PROP];
if (ctx.group) {
groupMultipliers[ctx.group] = 1;
} else {
_applyMultiplier(e);
}
});
if (!Object.keys(groupMultipliers).length) {
return;
}
dirtyElements = _allWatchers(document.body).filter(function (e) {
var ctx = e[CONTEXT_PROP];
var group = ctx.group;
if (!ctx || !group || !groupMultipliers[group] || !(ctx.multiplier > 0)) {
return false;
}
if (groupMultipliers[group] > ctx.multiplier) {
groupMultipliers[group] = ctx.multiplier;
}
return true;
});
dirtyElements.forEach(function (e) {
var ctx = e[CONTEXT_PROP];
ctx.multiplier = groupMultipliers[ctx.group];
_applyMultiplier(e);
});
}
function init(container) {
if (!container) {
return;
}
if (!didDocInit) {
didDocInit = true;
init(document.body);
if (container === document || container === document.body) {
return;
}
}
var elements = toArray(container.querySelectorAll('.' + RESIZE_CLASS));
if (!elements.length) {
return;
}
elements.forEach(function (e) {
classnameUtils.removeClass(e, RESIZE_CLASS);
classnameUtils.addClass(e, WATCH_CLASS);
});
var contextFailures = [];
elements = elements.filter(function (e) {
var ctx = _makeContext(e);
if (!ctx) {
contextFailures.push(e);
return false;
}
return true;
});
_calculateMultipliers(elements);
contextFailures.forEach(function (e) {
classnameUtils.removeClass(e, WATCH_CLASS);
classnameUtils.addClass(e, RESIZE_CLASS);
});
_normalizeAndApply(elements);
if (!listening) {
window.addEventListener('resize', throttle(function () {
refresh(document.body);
}, 50));
ResponsiveEvents.on('breakpoint', function () {
_allWatchers(document.body).forEach(function (e) {
return Object.assign(e[CONTEXT_PROP], _getSizeContext(e));
});
});
listening = true;
}
}
function refresh(scopeElement) {
var elements = _allWatchers(scopeElement);
_calculateMultipliers(elements);
_normalizeAndApply(elements);
}
return {
init: init,
refresh: refresh
};
});
require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'resp_hr_atf_meta','handlers',['handlers']);
define(["placement", "ta/prwidgets", "ta/Core/TA.Event", 'utils/nodePreserve', "ta/page", "responsive/text-resizer", "common/Radio"],
function (placement, Widgets, taEvent, nodePreserve, taPage, TextResize, Radio) {
function _checkRepoll() {
if (document.getElementById(placement.id).querySelector(".metawrap[data-loading=true]")) {
taEvent.fireEvent('page-repoll-not-done');
} else {
// subscribed to by meta tracking pixel placements
taEvent.fireEvent('page-repoll-done');
}
}
function onAjaxUpdate(contentDiv) {
var placementDiv = document.getElementById(placement.id);
nodePreserve.treePreserve(placementDiv, contentDiv);
_checkRepoll();
Widgets.initWidgets(placementDiv);
TextResize.init(placementDiv);
}
/**
* If there is no availability for default dates, clear the dates and pop the calendar.
* @private
*/
function _noAvailState() {
taEvent.queueForAfterLoad(function() {
taPage.clearDates();
taPage.emit('dateSelected', null, 'STAYDATES', []);
_showDatePicker();
}, 'clear dates for unavailable default dates');
taEvent.off('no-availability-detected', _noAvailState);
}
function _showDatePicker() {
Radio('search').trigger('popDatePicker');
}
taEvent.on('no-availability-detected', _noAvailState);
taEvent.on("popCalendar", _showDatePicker);
taEvent.on('update-' + placement.name, onAjaxUpdate);
_checkRepoll();
});
});
define('commerce/offerclickEvents', ['mixins/Events', 'vanillajs'],
function (Events) {
'use strict';
return new Events('beforeClick', 'afterClick');
});
define('utils/waiton', ['vanillajs'], function() {
return function(actions, callback, timeout) {
var waiting = 0
, timer = null
, done = false
;
if (!actions || actions.length == 0) {
callback();
return;
}
function onComplete() {
if (--waiting <= 0 && !done) {
timer && clearTimeout(timer);
done = true;
callback();
}
}
actions.forEach(function(action) {
waiting++;
action(onComplete);
});
if (timeout > 0) {
timer = setTimeout(function() {
waiting = 0;
onComplete();
}, timeout);
}
};
});
define('commerce/cookieSetter', ['vanillajs', 'utils/cookieutils'],
function (vanillajs, cookieUtils) {
var COMMERCE_CLICK_PUID_COOKIE = 'comm_puid';
function setPUIDCookie() {
var model = require.defined('page-model') && require('page-model');
if (model && model.session.uid) {
cookieUtils.setCookieInSeconds(COMMERCE_CLICK_PUID_COOKIE, model.session.uid, { duration: 10, ignoreVersion: true });
}
}
return setPUIDCookie;
});
define('commerce/offerclick',
['ta', 'mixins/mixin', 'commerce/offerclickEvents', 'utils/urlutils', 'utils/stopevent', 'utils/waiton', 'ta/popups/PollForPartnerLoad', 'ta/Browser', 'ta/util/Cookie', 'commerce/cookieSetter'],
function (ta, mixin, OfferClickEvents, UrlUtils, stopEvent, waitOn, pollForPartnerLoad, taBrowser, taCookie, cookieSetter) {
'use strict';
var FROM_PARAM_REGEX = new RegExp("(&|\\?)from=[^&]*");
var OPEN_BEHAVIOR_PARAM_REGEX = new RegExp("(&|\\?)ob=[^&]*");
var _preclickActions = [];
var _preclickHandler = null;
var _multiTapPreventionTokenRecord = null;
var _multiTapPreventionEnabled = false;
function _expando(token) {
if (typeof(token) !== 'string') {
return token;
}
var url = UrlUtils.asdf(token.trim()).replace(/&/g, '&');
if (typeof window !== 'undefined' && window.crPageServlet) {
url = url.replace(FROM_PARAM_REGEX, "$1from=HotelDateSearch_" + crPageServlet);
if (!FROM_PARAM_REGEX.test(url)) {
url += "&from=" + crPageServlet;
}
}
if (typeof document !== 'undefined' && document.location && document.location.href) {
var pageLocId = UrlUtils.getUrlPageLoc(document.location.href);
if (pageLocId) {
url += "&pageLocId=" + pageLocId;
}
}
var params = UrlUtils.getUrlQueryArgs(url);
url = url.replace(OPEN_BEHAVIOR_PARAM_REGEX, '');
return {
url: url,
isBooking: (url.indexOf('/StartBooking') >= 0 || url.indexOf('/MobileHotelBookingRoomSelection') >= 0),
ttP: params.tp,
ttIK: params.ik,
slot: params.slot,
providerName: params.p,
ik: params.ik,
locId: (params.d || params.geo),
area: params.area,
contentId: (params.src_0 || params.src),
trackingContext: params.btc,
selectedPrice: params.priceShown,
offerStr: params.gosox || '',
openBehavior: params.ob
};
}
function _registerAsyncPreclick(action) {
if (typeof action === 'function') {
_preclickActions.push(action);
}
}
function _enableMultiTapPrevention() {
_multiTapPreventionEnabled = true;
}
function _canClickAway(token) {
if (token.openBehavior === 'same_tab') {
return false;
}
if (token.isBooking && taBrowser.isIE10Metro()) {
return false;
}
if (typeof ta == 'undefined') {
return false;
}
return true;
}
function _isSandboxed() {
try {
document.domain = document.domain;
} catch (e) {
return true;
}
return false;
}
function _clickAway(elem, token) {
token = _expando(token);
var sandboxed = _isSandboxed()
, winObj = window.open(sandboxed ? token.url : '', '_blank')
;
if (!winObj && typeof(Browser) !== 'undefined' && Browser.ie && token.isBooking) {
taCookie.setPIDCookie(38822);
_navigate(elem, token);
return;
}
if (!sandboxed) {
if (winObj) {
winObj.location = token.url;
} else {
window.location = token.url;
}
}
_preclickActions.forEach(function (action) {
action(elem, token, function () {
});
});
pollForPartnerLoad(winObj, new Date(), token.providerName, token.slot);
}
function _navigate(elem, token) {
token = _expando(token);
var asyncActionsTimeout = 250;
waitOn(_preclickActions.map(function (action) {
return action.bind(null, elem, token);
}), function () {
if (typeof ta !== 'undefined' && ta.retrieve && ta.retrieve('ta.isIE11orHigher')) {
window.open(token.url, '_self', null, false);
} else {
window.location.href = token.url;
}
}, asyncActionsTimeout);
}
function _clickEvent(event, elem, token, allowPropagation) {
if (event && !allowPropagation) {
stopEvent(event);
}
token = _expando(token);
if (_multiTapPreventionEnabled) {
if (token && _multiTapPreventionTokenRecord === token.offerStr) {
return false;
}
setTimeout(function(){_multiTapPreventionTokenRecord = null;}, 1000);
_multiTapPreventionTokenRecord = token && token.offerStr;
}
OfferClickEvents.emit("beforeClick", token);
if (ta.store && ta.retrieve && elem && token && token.ttIK && token.selectedPrice) {
var clickPrices = ta.retrieve('CLICK_PRICE_DOUBLE_CHECK');
if (!clickPrices) {
clickPrices = {};
}
clickPrices[token.ttIK] = String(token.selectedPrice);
ta.store('CLICK_PRICE_DOUBLE_CHECK', clickPrices);
}
if (require.defined('ta/Core/TA.Event')) {
setTimeout(function () {
try {
require('ta/Core/TA.Event').fireEvent('metaLinkClick',
elem, (token.isBooking ? 'TripAdvisor' : token.providerName), token.area, token.locId, token.contentId, "new_tab", token.slot);
if (token.isBooking) {
require('ta/Core/TA.Event').fireEvent('ibOfferClick', elem);
}
} catch (e) {
require.defined('ta/util/Error') && require('ta/util/Error').record(e, "Commerce click tracking failed", null,
{servlet: window.pageServlet, url: token.url, area: token.area});
}
}, 300);
}
if (_preclickHandler && _preclickHandler(token)) {
return false;
}
cookieSetter();
if (_canClickAway(token)) {
_clickAway(elem, token);
} else {
_navigate(elem, token);
}
OfferClickEvents.emit("afterClick", token);
return false;
}
function _setPreClickHandler(handler) {
_preclickHandler = handler;
}
var OfferClick = {
expandToken: _expando,
clickEvent: _clickEvent,
registerAsyncPreclick: _registerAsyncPreclick,
setPreClickHandler: _setPreClickHandler,
enableMultiTapPrevention: _enableMultiTapPrevention
};
return mixin(OfferClick, OfferClickEvents);
});
define('common/ProtectedStore', ['babel/babel-helpers', 'ta/Core/TA.LocalStorage'], function (babelHelpers, taLocalStorage) {
'use strict';
var STORE_KEY = 'prtctd-str';
var DEFAULT_TTL_HOUR = 3600000;
function mutateDataWithCallback(key, processCallback) {
var ttl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date().getTime() + DEFAULT_TTL_HOUR;
var store = _getStore() || {};
_setDataByCallbackWithStore(key, processCallback, ttl, store);
_saveStore(store);
}
function _setDataByCallbackWithStore(uefKey, processCallback, ttl, store) {
if (!_isFunction(processCallback)) {
return;
}
var data = processCallback.call(null, store.hasOwnProperty(uefKey) && store[uefKey] || {});
if (!data) {
return;
}
data.ttl = ttl;
store[uefKey] = data;
}
function findDataWithCallback(key, dataConsumer) {
var deleteKeyAfterReading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var store = _getStore();
if (!store) {
return;
}
_consumeDataWithStore(key, dataConsumer, deleteKeyAfterReading, store);
_saveStore(store);
}
function _consumeDataWithStore(uefKey, dataConsumer, deleteEventTracking, store) {
if (!_isFunction(dataConsumer)) {
return;
}
var data = store.hasOwnProperty(uefKey) && store[uefKey];
if (!data) {
return;
}
dataConsumer.call(null, data);
if (deleteEventTracking) {
delete store[uefKey];
}
}
function _getStore() {
if (!taLocalStorage || !taLocalStorage.enabled) {
return null;
}
var store = taLocalStorage.getObject(STORE_KEY);
_cleanDeadKeysFromStore(store);
return store;
}
function _cleanDeadKeysFromStore(storeRef) {
if (storeRef) {
var dateTimeNow = new Date().getTime();
for (var key in storeRef) {
if (storeRef.hasOwnProperty(key)) {
var data = storeRef[key];
if (data && data.ttl && data.ttl <= dateTimeNow) {
delete storeRef[key];
}
}
}
}
}
function _isFunction(func) {
return !!(func && func.constructor && func.call && func.apply);
}
function _saveStore(storeRef) {
if (!taLocalStorage) {
return;
}
taLocalStorage.set(STORE_KEY, storeRef);
}
return {
mutateDataWithCallback: mutateDataWithCallback,
findDataWithCallback: findDataWithCallback
};
});
define('hotels/tracking/UEF-LocationDateSpecificClickThru', ['babel/babel-helpers', 'common/ProtectedStore'], function (babelHelpers, ProtectedStore) {
'use strict';
var EVT_DATA_KEY = 'ik';
var TRACKABLE_LISTS = ["Hotels_MainList", "HH_MainList", "smart_deals_server", "hotel_highlight"];
function LocationDateSpecificClickThru(options) {
var _pageAction = options.pageAction || "unknown";
var _trackingFn = _isFunction(options.trackingFn) && options.trackingFn || null;
var _trackOnServlet = options.trackOnServlet || null;
function processEvent(locationId, impressionKey) {
if (!locationId || !impressionKey) {
return;
}
ProtectedStore.mutateDataWithCallback(_buildUEFKey(locationId), _buildClickThruUEFData.bind(null, impressionKey));
}
function processAndTrackClickThrough(locationId, impressionKey, url) {
processEvent(locationId, impressionKey);
require(['babel/babel-helpers', 'trjs!ta/Core/TA.Record'], function (babelHelpers, taRecord) {
try {
taRecord.addGARecordMevt('page_clickthrough', _pageAction + '_all', impressionKey, locationId, url);
} catch (e) {
require(['babel/babel-helpers', 'trjs!ta/util/Error'], function (babelHelpers, taError) {
taError.record(e, "Error recording clickthrough. Params were [" + locationId + ", " + impressionKey + ", " + url + "]");
});
}
});
}
function trackEvent(locationId, eventDestinationImpressionKey, url) {
var overrideTrkFn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
if (!locationId || !eventDestinationImpressionKey) {
return;
}
if (_trackOnServlet) {
var currentServlet = window.pageServlet;
if (currentServlet && currentServlet.indexOf(_trackOnServlet) < 0) {
return;
}
}
ProtectedStore.findDataWithCallback(_buildUEFKey(locationId), _sendGARecord.bind(null, overrideTrkFn, locationId, url, eventDestinationImpressionKey));
}
function shouldTrackForIBClickThru(commerceToken) {
return commerceToken && commerceToken.isBooking && TRACKABLE_LISTS.indexOf(commerceToken.ttP) >= 0;
}
function _sendGARecord( overrideTrkFn,
locationId,
url, eventDestinationImpressionKey, usrEventObjContainingListImpression) {
if (!eventDestinationImpressionKey || !usrEventObjContainingListImpression || !usrEventObjContainingListImpression.ik) {
return;
}
if (_isFunction(overrideTrkFn)) {
overrideTrkFn.call(null, eventDestinationImpressionKey, _pageAction, usrEventObjContainingListImpression.ik, locationId);
} else if (_trackingFn) {
_trackingFn.call(null, eventDestinationImpressionKey, _pageAction, usrEventObjContainingListImpression.ik, locationId, url);
} else {
require(['babel/babel-helpers', 'trjs!ta/Core/TA.Record'], function (babelHelpers, taRecord) {
taRecord.addGARecordMevt(eventDestinationImpressionKey, _pageAction, usrEventObjContainingListImpression.ik, locationId, url);
});
}
}
function _buildUEFKey(locationId) {
if (!locationId) {
return;
}
var dateArray = ta && ta.page && ta.page.getDates && ta.page.getDates('STAYDATES');
if (dateArray && !Array.isArray(dateArray)) {
return;
}
var dates = dateArray.filter(function (e) {
return e instanceof Date;
});
if (!dates || dates.length !== 2) {
return null;
}
var localCheckIn = dates[0];
var localCheckOut = dates[1];
var ciString = '' + localCheckIn.getYear() + localCheckIn.getMonth() + localCheckIn.getDate();
var coString = '' + localCheckOut.getYear() + localCheckOut.getMonth() + localCheckOut.getDate();
return '' + _pageAction + ciString + coString + locationId;
}
return {
shouldTrackForIBClickThru: shouldTrackForIBClickThru,
processEvent: processEvent,
processAndTrackClickThrough: processAndTrackClickThrough,
trackEvent: trackEvent
};
}
function _isFunction(func) {
return func instanceof Function;
}
function _buildClickThruUEFData(impressionKey, dataInStoreRef) {
if (!dataInStoreRef) {
dataInStoreRef = {};
}
dataInStoreRef[EVT_DATA_KEY] = impressionKey;
return dataInStoreRef;
}
return LocationDateSpecificClickThru;
});
define('sponsoredlisting/HotelSponsoredListingStates', ['vanillajs'], function(vanillajs) {
return {
LISTING_CREATED: 'listing_created',
LOCATION_REQUESTED: 'location_requested',
LOCATION_CHOSEN: 'location_chosen',
LOCATION_SHOWN: 'location_shown',
RESET: 'reset',
TIMED_OUT: 'timed_out',
LOCATION_FORECASTING: 'location_forecasting'
};
});
define('sponsoredlisting/HotelStaticListing', ['vanillajs', 'sponsoredlisting/HotelSponsoredListingStates'],
function(vanillajs, SponsoredListingStates) {
var LISTING_KEY_DATA_ATTR = 'data-listingKey';
var StaticListing = function (sponsoredSlot, slotIndex, sponsoredType, locationId, slLineItemId, tripAdsId, tripAdsSelectRequestGuid, adOpportunityId, impressionKey, trackingTreePlacementName, listingWrapper, uniqueRequestId) {
var _currentState = SponsoredListingStates.LISTING_CREATED;
var _sponsoredSlot = sponsoredSlot;
var _slotIndex = slotIndex;
var _sponsoredType = sponsoredType;
var _locationId = locationId;
var _adOpportunityId = adOpportunityId;
var _slLineItemId = slLineItemId;
var _tripAdsId = tripAdsId;
var _tripAdsSelectRequestGuid = tripAdsSelectRequestGuid;
var _listingWrapper = listingWrapper;
var _impressionKey = impressionKey;
var _trackingTreePlacementName = trackingTreePlacementName;
var _uniqueRequestId = uniqueRequestId;
var _hasImpressionFired = false;
var updateState = function (newState) {
_currentState = newState;
};
var getState = function () {
return _currentState;
};
var getSlotIndex = function () {
return _slotIndex;
};
var getSponsoredType = function () {
return _sponsoredType;
};
var getSponsoredSlot = function () {
return _sponsoredSlot;
};
var isSlotAny = function() {
return _sponsoredSlot.isSlotAny;
};
var getAdOpportunityId = function () {
return _adOpportunityId;
};
var getSlLineItemId = function () {
return _slLineItemId;
};
var getTripAdsId = function () {
return _tripAdsId;
};
var getTripAdsSelectRequestGuid = function () {
return _tripAdsSelectRequestGuid;
};
var hasImpressionFired = function () {
return _hasImpressionFired;
};
var getDisplayedLocationId = function () {
return _locationId;
};
var getListingWrapper = function () {
return _listingWrapper;
};
var listingMaintainedByPoll = function (listingWrapper, impressionKey, trackingTreePlacementName, uniqueRequestId) {
_listingWrapper = listingWrapper;
_impressionKey = impressionKey;
_trackingTreePlacementName = trackingTreePlacementName;
_uniqueRequestId = uniqueRequestId;
};
var impressionFired = function() {
_hasImpressionFired = true;
};
var getPollingParam = function () {
return {
slotIndex: _slotIndex,
displayedLocationId: _locationId,
sponsoredType: _sponsoredType,
adOpportunityId: _adOpportunityId,
slLineItemId: _slLineItemId
}
};
var getTrackingContext = function () {
var listingKey = _listingWrapper.getAttribute(LISTING_KEY_DATA_ATTR);
var trackingContext = {
has_valid_candidate: true,
placement_slot_name: _sponsoredSlot.name,
slot_index: _slotIndex,
location_id: _locationId,
sponsored_type: _sponsoredType,
opportunity_uid: _adOpportunityId,
sl_line_item_id: getSlLineItemId(),
page_geo_id: (require.defined('page-model') ? require('page-model').GEO_ID : -1),
is_dynamic_listing: false,
candidate_location_ids: [_locationId],
chosen_location_id: _locationId,
current_state: _currentState,
listing_key: listingKey,
trip_ads_select_guid: _tripAdsSelectRequestGuid,
unique_request_id: _uniqueRequestId
};
var tripAdsId = getTripAdsId();
if (!!tripAdsId)
{
trackingContext.trip_ads_id = tripAdsId;
}
return trackingContext;
};
var refresh = function () {
_currentState = SponsoredListingStates.RESET;
};
var isLocationPaidBackfill = function () {
return true;
};
var isShowingLocation = function () {
return true;
};
var getImpressionKey = function () {
return _impressionKey;
};
var getTrackingTreePlacementName = function () {
return _trackingTreePlacementName;
};
var getUniqueRequestId = function() {
return _uniqueRequestId;
}
return {
updateState: updateState,
getState: getState,
getSlotIndex: getSlotIndex,
getSponsoredType: getSponsoredType,
getSponsoredSlot: getSponsoredSlot,
isSlotAny: isSlotAny,
getAdOpportunityId: getAdOpportunityId,
getSlLineItemId: getSlLineItemId,
getTripAdsId: getTripAdsId,
getTripAdsSelectRequestGuid: getTripAdsSelectRequestGuid,
getPollingParam: getPollingParam,
getTrackingContext: getTrackingContext,
getListingWrapper: getListingWrapper,
isLocationPaidBackfill: isLocationPaidBackfill,
isShowingLocation: isShowingLocation,
getDisplayedLocationId: getDisplayedLocationId,
getImpressionKey: getImpressionKey,
getTrackingTreePlacementName: getTrackingTreePlacementName,
getUniqueRequestId: getUniqueRequestId,
hasImpressionFired: hasImpressionFired,
impressionFired: impressionFired,
listingMaintainedByPoll: listingMaintainedByPoll,
refresh: refresh
};
};
return StaticListing;
});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_responsive_hr_meta','handlers',['handlers']);
/**
* @created 10/23/17
* @author brandonwilliams
*/
define(["widget", 'utils/classnameUtils', 'common/trackingStreams', "commerce/offerclick", "ta/Core/TA.Event", "ta/Core/TA.LocalStorage", "hotels/tracking/UEF-LocationDateSpecificClickThru", "sponsoredlisting/HotelStaticListing"],
(function(widget, classnameUtils, tracking, offerclick, taEvent, localStorage, UEFClickThruTracker, StaticSponsoredListing) {
var shared = this; //see bind at bottom - shared by all instances
var pdOpening = false;
var DAY = 24 * 60 * 60 * 1000 // 1 day
var clickThruTracker = new UEFClickThruTracker({
pageAction: "ct_l2hr", // click thru list to hr
trackOnServlet: "Hotel_Review"
});
function openPriceDrawer() {
if (pdOpening) {
return;
}
pdOpening = true;
require(["lib/jquery-amd"], function($) {
pdOpening = false;
tracking.trackEvent("hr_price_drawer", "viewall_click", "responsive_web");
var $priceDrawerContainer = $(widget.element).closest('[data-pricedrawer]');
if ($priceDrawerContainer.length) {
$priceDrawerContainer.trigger("viewAllPriceDrawerOpen");
}
});
}
function expand() {
shared.expanded = true;
classnameUtils.addClass(widget.element, "expanded");
// HOT-14406: Add tracking to 'View all N deals from $123' CTA on /HR Mobile Web
tracking.trackEvent("hr_offers_dropdown", "viewall_click", "responsive_web");
}
function collapse() {
shared.expanded = false;
classnameUtils.removeClass(widget.element, "expanded");
// HOT-14406: Add tracking to 'View all N deals from $123' CTA on /HR Mobile Web
tracking.trackEvent("hr_offers_dropdown", "collapse_click", "responsive_web");
}
function clickOffer(event, elem) {
if (/\bunclickable\b/.test(elem.className)) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
event.preventDefault();
return;
}
var token = elem.getAttribute("data-clickToken");
_trackClickThru(offerclick.expandToken(token));
if (token) {
//Do not demand load offerclick here. That will cause the physical click to be disconnected from 'clickEvent' resulting in pop-up blocker issues.
offerclick.clickEvent(event, elem, token);
}
else {
tracking.error(null, "Commerce click failed b/c click token absent");
}
}
function _trackClickThru(token) {
// HOT-15616: Tracking hotel listing click to HR commerce click. (need both impression keys)
if (!token || !clickThruTracker) {
return;
}
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
clickThruTracker.trackEvent(token.locId, token.ik, "/Redirect", token.isBooking && taRecord.trackEventOnPage);
});
}
/**
* BIZ-10416: Sponsored meta preference
* We need to pass state to server to say that we are in a meta preference context, which we do with the polling param
*/
function _addSponsoredMetaPreferencePollingParam() {
var offersDiv = widget.element.querySelector('.offers');
var sponsoredListing = offersDiv.getAttribute('data-sponsoredListing');
sponsoredListing = sponsoredListing && JSON.parse(sponsoredListing); // Matches HotelSponsoredListingModel.java
if (sponsoredListing) {
var staticListing = new StaticSponsoredListing(sponsoredListing.sponsoredPlacementSlot, sponsoredListing.slotIndex, sponsoredListing.sponsoredType, sponsoredListing.locationId, sponsoredListing.slLineItemId);
var pollingParam = {};
pollingParam[sponsoredListing.sponsoredPlacementSlot.name] = staticListing.getPollingParam();
// Update polling param to maintain sponsored state, but don't force poll
taEvent.fireEvent('hotels.sponsored_listing_updated', pollingParam, false);
}
}
// HOT-15798 /H_R pre-dates state for unavailable default dates
function checkAvailState() {
taEvent.off("page-polling-complete", checkAvailState);
// Check if we already displayed pre-dates in the session
if (!localStorage.enabled || localStorage.getObject("defaultDatesUnavailableTreatment")) {
return;
}
// Check if any offer is available
if (widget.element.querySelector(".offers[data-is-any-available]")) {
return;
}
var el = widget.element.querySelector(".defaultDatesUnavailableTreatment");
// Check if feature is enabled
if (!el) {
return;
}
el.style.display="block";
if (el = widget.element.querySelector(".secondary")) {
el.style.display="none";
}
if (el = widget.element.querySelector(".noAvailability")) {
el.style.display="none";
}
taEvent.fireEvent('no-availability-detected');
localStorage.set("defaultDatesUnavailableTreatment", true, DAY);
}
taEvent.on("page-polling-complete", checkAvailState);
function popCalendar() {
taEvent.fireEvent("popCalendar");
}
function positionAlertMessage() {
var trip_search_label = document.querySelector("#CHECK_RATES_CONT .trip_search_label")
, label_container = trip_search_label && trip_search_label.parentNode
, new_alert = widget.element.querySelector(".alert_widget")
, existing_alert = label_container && label_container.querySelector(".alert_widget")
;
if (!trip_search_label || !label_container) { return; }
if (existing_alert) {
label_container.removeChild(existing_alert);
}
if (new_alert) {
label_container.insertBefore(new_alert, trip_search_label);
classnameUtils.removeClass(new_alert, "hidden");
}
classnameUtils.toggleClass(trip_search_label, "hidden", !!new_alert);
}
positionAlertMessage();
if (shared.expanded || window.location.hash === '#poiHeading') {
shared.expanded = true;
classnameUtils.addClass(widget.element, "expanded");
}
_addSponsoredMetaPreferencePollingParam();
return {
openPriceDrawer: openPriceDrawer,
expand: expand,
collapse: collapse,
clickOffer: clickOffer,
popCalendar: popCalendar
};
}));});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'hotels_hr_savings_alert','handlers',['handlers']);
define(['widget', 'utils/responsive'], function(widget, responsiveUtils) {
var _overlay = null;
function _showOverlay(evnt, source) {
if (_overlay) { // if overlay exists or is being built
_overlay.show && _overlay.show(); // only show a completed overlay
} else {
var contents = widget.element.querySelector('.overlay_contents');
if (!contents) { return; }
_overlay = true; // signal that we are currently creating an overlay
if (responsiveUtils.tabletOnly()) {
require(['trjs!overlays/Overlay',
'trjs!overlays/styles/popover',
'trjs!overlays/position',
'trjs!overlays/options/repositionOnEvent',
'trjs!overlays/options/closeOnDocClick']
, function(Overlay, Popover, Position, RepositionOnEvent, CloseOnDocClick) {
_overlay = new Overlay(source, [
Popover && Popover(source, 'right', widget.element.className, null, widget.element.outerHTML),
Position.right([0, 0]),
RepositionOnEvent(window, ['resize', 'date_bar_docked', 'date_bar_undocked']),
CloseOnDocClick
]);
_overlay.show();
});
}
else {
require(['trjs!overlays/Overlay',
'trjs!overlays/styles/tooltip',
'trjs!overlays/position',
'trjs!overlays/options/closeOnMouseAway']
, function(Overlay, Tooltip, Position, CloseOnMouseAway) {
_overlay = new Overlay(source, [
Tooltip && Tooltip(source, 'right', widget.element.className, widget.element.outerHTML),
Position.right([0, 0]),
CloseOnMouseAway
]);
_overlay.show();
});
}
}
}
return { overlay: _showOverlay };
});
});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_view_all_text_links','handlers',['handlers']);
define(["widget", "vanillajs", "commerce/offerclick", "hotels/tracking/UEF-LocationDateSpecificClickThru"],
function (widget, vanilla, offerclick, UEFClickThruTracker) {
var clickThruTracker = new UEFClickThruTracker({
pageAction: "ct_l2hr", // click thru list to hr
trackOnServlet: "Hotel_Review"
});
function clickOffer(event, elem) {
if (elem && !elem.classList.contains("unclickable")) {
var token = elem.getAttribute("data-clickToken");
if (!token) {
return;
}
_trackClickThru(offerclick.expandToken(token));
offerclick.clickEvent(event, elem, token);
}
}
function _trackClickThru(token) {
// HOT-15616: Tracking hotel listing click to HR commerce click. (need both impression keys)
if (!token || !clickThruTracker) {
return;
}
if (clickThruTracker.shouldTrackForIBClickThru(token)) {
clickThruTracker.processAndTrackClickThrough(token.locId, token.ik, '/Redirect');
} else {
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
clickThruTracker.trackEvent(token.locId, token.ik, "/Redirect", token.isBooking && taRecord.trackEventOnPage);
});
}
}
return {
clickOffer: clickOffer
};
});});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'common_base_dropdown','handlers',['handlers']);
define(["widget", "vanillajs", "common/trackingStreams"], function (widget, vanilla, tracking) {
function track(evnt, elmt, action) {
action && tracking.trackEvent(action, 'click');
}
function _updateOverlay() {
var viewAllDealsElement = widget.element.querySelector(".moreLink");
if (viewAllDealsElement) {
var overlay = require.defined('lib/jquery-amd') && require('lib/jquery-amd')(viewAllDealsElement).data("overlay");
overlay && overlay.updateContent();
}
}
_updateOverlay();
return {
track: track
};
});});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_hr_special_rate','handlers',['handlers']);
define(["widget", "lib/jquery-amd", 'common/trackingStreams'], (function(widget, $, trackingStream) {
var shared = this; //see bind at bottom - shared by all instances
function _clickSpecialRateInfo(event) {
if (event && event.stopPropagation) event.stopPropagation();
$('.ui_modal_card', widget.element).addClass('is-active')
trackingStream.trackEvent("Hotels_CUG", "CUG_tooltip", "Click");
};
function _closeSpecialRateModal(event) {
if (event && event.stopPropagation) event.stopPropagation();
$('.ui_modal_card', widget.element).removeClass('is-active');
}
function _initSpecialRateInfo() {
var trackingElem = $(widget.element).find('.special_rate_tracking');
if (trackingElem.length) {
trackingStream.trackEventOnPageOnce(trackingElem.attr('pageproperty'), trackingElem.attr('pageaction'), trackingElem.attr('productattribute'));
}
};
_initSpecialRateInfo();
return {
clickSpecialRateInfo: _clickSpecialRateInfo,
closeSpecialRateModal: _closeSpecialRateModal
};
}).bind({}));
});define('hotels/ClickSourceTracking', ["common/trackingStreams"],
function(tracking) {
var CLICK_SOURCE = {
Photo: { trackingName: "hotelcell_thumbnail", clickThrough: true },
HotelName: { trackingName: "hotelcell_name", clickThrough: true },
ReviewCount: { trackingName: "hotelcell_reviews", clickThrough: true },
ReviewCountNoAnchor: { trackingName: "hotelcell_reviews", clickThrough: true },
HotelListing: { trackingName: "hotelcell_listing", clickThrough: true },
Distance: { trackingName: "hotelcell_distance", clickThrough: false },
CarouselArrow: { trackingName: "hotelcell_carousel_arrow", clickThrough: false },
ChevronPrice: { trackingName: "hotelcell_chevron_price", clickThrough: true },
PriceMessage: { trackingName: "hotelcell_price_message", clickThrough: true },
BubbleRating: { trackingName: "hotelcell_bubble_rating", clickThrough: true },
BubbleRatingTrackingOnly: { trackingName: "hotelcell_bubble_rating", clickThrough: false },
HotelInfoCardToggle: { trackingName: "hotelcell_info_card_toggle", clickThrough: false },
OtherIcon: {trackingName: "hotelcell_icon", clickThrough: false },
OtherIconLabel: {trackingName: "hotelcell_icon_label", clickThrough: false },
PopIndex: {trackingName: "hotelcell_popindex", clickThrough: false },
SavingsAlert: {trackingName: "hotelcell_savings", clickThrough: false },
SocialProof: {trackingName:"hotelcell_social_proof", clickThrough: false },
ViewAllDeals: {trackingName: "hotelcell_viewall", clickThrough: false },
ViewAllDealsClose: {trackingName: "hotelcell_viewallclose", clickThrough: false },
ViewAllDealsClickThrough: {trackingName: "hotelcell_viewall", clickThrough: true },
MetaOther: {trackingName: "hotelcell_meta_other", clickThrough: false },
IndicatorDot: { trackingName: "hotelcell_carousel_dot_click", clickThrough: false },
SaveToTripBookmark: {trackingName: "hotelcell_bookmark", clickThrough: false},
TcBadge: { trackingName: "tc_badge", clickThrough: false },
SponsoredPill: { trackingName: "sponsored_pill", clickThrough: false },
UnavailableTextLink: { trackingName: "unavailable_link", clickThrough: false },
NoAvailMessage: { trackingName: "no_avail_message", clickThrough: false },
UnavailableDropdownTextLink: { trackingName: "unavailable_dropdown_link", clickThrough: false },
UnavailableDropdownTextLinkIcon: { trackingName: "unavailable_dropdown_link_icon", clickThrough: false },
AccommodationCategoryLabel: { trackingName: "accommodation_category_label", clickThrough: false },
SpecialOfferIcon: { trackingName: "special_offer_icon", clickThrough: false },
SpecialOfferLabel: { trackingName: "special_offer_label", clickThrough: false },
SpecialMessageContainer: { trackingName: "special_message_container", clickThrough: false },
SpecialMessageIcon: { trackingName: "special_message_icon", clickThrough: false },
SpecialMessageLabel: { trackingName: "special_message_label", clickThrough: false },
NeighborhoodLabel: { trackingName: "neighborhood_label", clickThrough: false },
NeighborhoodIcon: { trackingName: "neighborhood_icon", clickThrough: false },
HRHotelName: { trackingName: "hr_hotel_name", clickThrough: false },
HRHeaderPopIndex: { trackingName: "hr_header_pop_index", clickThrough: false },
HRTripSearchLabel: { trackingName: "hr_trip_search_label", clickThrough: false },
HRSavingsAlert: { trackingName: "hr_savings_alert", clickThrough: false },
HRUrgencyAlert: { trackingName: "hr_urgency_alert", clickThrough: false },
HRMetaHeader: { trackingName: "hr_meta_header", clickThrough: false },
HRMetaDisclaimer: { trackingName: "hr_meta_disclaimer", clickThrough: false },
UnavailableHRTextLink: { trackingName: "unavailable_hr_link", clickThrough: false },
UnavailableHRTextLinkIcon: { trackingName: "unavailable_hr_link_icon", clickThrough: false },
UnavailableHRMobileTextLink: { trackingName: "unavailable_hr_mobile_link", clickThrough: false },
UnavailableHRMobileTextLinkIcon: { trackingName: "unavailable_hr_mobile_link_icon", clickThrough: false }
};
function _findClickInfo(el, parent) {
while (el && el.getAttribute) {
if (el.getAttribute('data-clickSource')) {
return {
'source': el.getAttribute('data-clickSource'),
'label': el.getAttribute('data-clickSourceLabel')
};
}
if (el === parent) {
break;
}
el = el.parentNode;
}
return {};
}
function _getTrackingName(id) {
return CLICK_SOURCE[id] && CLICK_SOURCE[id].trackingName || "unknown:" + id;
}
function _getClickThrough(id) {
return !!(CLICK_SOURCE[id] && CLICK_SOURCE[id].clickThrough);
}
function _trackSource(source, action, label) {
return tracking.trackEvent(_getTrackingName(source), action, label);
}
function _trackElement(el, parent, action, label) {
var info = _findClickInfo(el, parent);
if (info.source) {
_trackSource(info.source, action || "CLICK", label || info.label);
}
}
return {
findClickInfo: _findClickInfo,
trackingName: _getTrackingName,
clickThrough: _getClickThrough,
trackSource: _trackSource,
trackElement: _trackElement
};
}
);
define('utils/VisibilityCheckFunction', function () {
var _checker = _generateVisibilityCheckingFunction();
function _generateVisibilityCheckingFunction() {
if (Element.prototype.getBoundingClientRect) {
return Promise.resolve(function(element) {
if (!element ) {
return false;
}
var boundingClientRect;
try {
boundingClientRect = element.getBoundingClientRect();
}
catch (error){
return false;
}
return _inView(boundingClientRect, {
top: 0,
left: 0,
bottom: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
right: Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
});
});
}
return new Promise(function(resolve) {
require(['trjs!api-mod'], function(api) {
resolve(function(element) {
if (!element ) { return false; }
var viewWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
, viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
, viewTop = api.scrollTop()
, viewBottom = viewTop + viewHeight
, viewLeft = api.scrollLeft()
, viewRight = viewLeft + viewWidth
, pos = api.getPosition(element)
;
return _inView({
width: element.offsetWidth,
height: element.offsetHeight,
top: pos.top,
left: pos.left,
bottom: pos.top + element.offsetHeight,
right: pos.left + element.offsetWidth
}, {
top: viewTop,
left: viewLeft,
bottom: viewBottom,
right: viewRight
});
});
});
});
}
function _inView(box, view) {
if (box.width === 0 || box.height === 0) {
return false;
}
if (box.bottom <= view.top || box.top >= view.bottom) {
return false;
}
if (box.left >= view.right || box.right <= view.left) {
return false;
}
return true;
}
function getPromise() {
return _checker;
}
return { getPromise: getPromise }
});
define('utils/VisibilityChecker', ['utils/to-array', 'utils/is-element', 'utils/VisibilityCheckFunction'], function (toArray, isElement, VisibilityCheckFunction) {
var _checker = VisibilityCheckFunction.getPromise();
function _resolveSelectors(context, list, selector) {
if (selector == null) {
return list;
}
if (isElement(selector)) {
return list.concat(selector);
}
if (typeof selector === 'string') {
return list.concat(toArray(context.querySelectorAll(selector)));
}
return list;
}
function VisibilityChecker(options) {
var elements = options.elements
, context = options.context || document
, callback = options.callback
, waiting = false
;
if (!Array.isArray(elements)) {
throw new TypeError('VisibilityChecker must have an elements array');
}
return function () {
if (waiting) {
return;
}
waiting = true;
_checker.then(function(isVisible) {
waiting = false;
var visibleNodes = elements.reduce(_resolveSelectors.bind(null, context), []).filter(isVisible);
if (visibleNodes.length > 0 && typeof callback === 'function') {
var newElements = callback(visibleNodes);
if (Array.isArray(newElements)) {
elements = newElements;
}
}
});
};
}
return VisibilityChecker;
});
define('hotels/recentlyViewedHotels',['ta/Core/TA.LocalStorage', 'ta/Core/TA.PageVisibility', 'ta/Core/TA.Event', "utils/VisibilityChecker", 'utils/classnameUtils', "common/trackingStreams", "utils/throttle"],
function(localStorage, pageVisibility, taEvent, visibilityChecker, classnameUtils, trackingStreams, throttle) {
require(['trjs!ta/Core/TA.Record'], function(){});
var KEY_RECENTLY_VIEWED_IDS = "recently_viewed_ids";
var KEY_RECENTLY_VIEWED_INTERACTIONS = "recently_viewed_interactions";
var TRACK_RECENTLY_VIEWED = "RECENTLY_VIEWED_HOTEL";
var ATTR_RECENTLY_VIEWED_ID = "data-is-recently-viewed";
var TRACKING = {
"Hotels": {id: "H", trackCommerce: trackEventIfRecentlyViewed},
"MobileHotels": {id: "H", trackCommerce: trackEventIfRecentlyViewed},
"Hotel_Review": {id: "HR", trackCommerce: trackEventIfRecentlyInteracted},
"MobileHotel_Review": {id: "HR", trackCommerce: trackEventIfRecentlyInteracted},
"HotelsList": {id: "HL", trackCommerce: trackEventIfRecentlyViewed},
"HotelsNear": {id: "HN", trackCommerce: trackEventIfRecentlyViewed},
"SmartDeals": {id: "SD", trackCommerce: trackEventIfRecentlyViewed},
"MobileSmartDeals": {id: "SD", trackCommerce: trackEventIfRecentlyViewed},
"HotelHighlight": {id: "HH", trackCommerce: trackEventIfRecentlyViewed},
"MobileHotelHighlight": {id: "HH", trackCommerce: trackEventIfRecentlyViewed},
"Unknown": {id: "UK", trackCommerce: function(){}}
};
var _visitedLocations = {};
var _unvisitedLocations = {};
var _visibilityTracked = false;
var _visibilityHandler = null;
function _storeLocation(key, id) {
localStorage.onLocalStorageSessionInit(function() {
var ids = localStorage.getSessionKey(key) || {};
if (!ids[id]) {
ids[id] = true;
localStorage.setSessionKey(key, ids);
}
});
}
function interactedWithLocation(id) {
if (_isRecentlyViewed(id)) {
_storeLocation(KEY_RECENTLY_VIEWED_INTERACTIONS, id);
_visibilityHandler && _visibilityHandler();
}
}
function visitedLocation(id) {
localStorage.onLocalStorageSessionInit(function() {
if (!_hasInteractedWithVisitedLocation(id)) {
_storeLocation(KEY_RECENTLY_VIEWED_IDS, id);
}
});
}
function _hasInteractedWithVisitedLocation(id) {
var ids = localStorage.getSessionKey(KEY_RECENTLY_VIEWED_INTERACTIONS) || {};
return !!ids[id];
}
function registerVisitedLocation(id, elmt) {
_visitedLocations[id] = elmt;
delete _unvisitedLocations[id];
elmt.setAttribute(ATTR_RECENTLY_VIEWED_ID, id);
if (_visibilityTracked) { return; }
_addVisibilityListeners(_visitedLocations);
}
function _addVisibilityListeners(elmts) {
var _visibilityChecker = visibilityChecker({
elements: Object.values(elmts),
callback: function(visibleElmts) {
var seenId = visibleElmts[0].getAttribute(ATTR_RECENTLY_VIEWED_ID) || 0;
trackingStreams.trackEvent(TRACK_RECENTLY_VIEWED, 'recentlyViewTreatmentSeen', seenId);
_visibilityTracked = true;
_removeVisibilityListeners();
}
});
_removeVisibilityListeners();
_visibilityHandler = throttle(_visibilityChecker, 300);
window.addEventListener('scroll', _visibilityHandler);
taEvent.on('page-polling-complete', _visibilityHandler);
pageVisibility.addFocusListener(_visibilityHandler);
}
function _removeVisibilityListeners() {
if (_visibilityHandler) {
window.removeEventListener('scroll', _visibilityHandler);
taEvent.off('page-polling-complete', _visibilityHandler);
pageVisibility.removeFocusListener(_visibilityHandler);
_visibilityHandler = null;
}
}
function registerUnvisitedLocation(id, elmt, classname) {
if (!Object.keys(_unvisitedLocations).length) {
pageVisibility.addFocusListener(_updateUnvisitedLocations);
}
_unvisitedLocations[id] = {
fn: classnameUtils.addClass.bind(null, elmt, classname),
elmt: elmt
};
}
function _updateUnvisitedLocations() {
localStorage.onLocalStorageSessionInit(function() {
var visited = localStorage.getSessionKey(KEY_RECENTLY_VIEWED_IDS) || {};
Object.keys(visited).forEach(function(id) {
if (_unvisitedLocations[id]) {
_unvisitedLocations[id].fn();
registerVisitedLocation(id, _unvisitedLocations[id].elmt);
}
});
if (!Object.keys(_unvisitedLocations).length) {
pageVisibility.removeFocusListener(_updateUnvisitedLocations);
}
});
}
function _isRecentlyViewed(id) {
return !!_visitedLocations[id];
}
function trackEvent(action, attr, sync) {
if (sync && require.defined('ta/Core/TA.Record')) {
require('ta/Core/TA.Record').trackEventOnPage(TRACK_RECENTLY_VIEWED, action, attr);
} else {
trackingStreams.trackEvent(TRACK_RECENTLY_VIEWED, action, attr);
}
}
function trackEventIfRecentlyViewed(id, action, attr, sync) {
if (_isRecentlyViewed(id) ) {
trackEvent(action, attr, sync);
}
}
function trackEventIfRecentlyInteracted(id, action, attr, sync) {
localStorage.onLocalStorageSessionInit(function() {
if (_hasInteractedWithVisitedLocation(id) ) {
trackEvent(action, attr, sync);
}
});
}
function trackRecentlyViewedCountOnPage() {
var locations = document.querySelectorAll("[" + ATTR_RECENTLY_VIEWED_ID + "]");
trackEvent('NUM_RECENTLY_VIEWED', locations.length);
}
function trackCommerceClick(id) {
var tracking = TRACKING[window.pageServlet] || TRACKING.Unknown;
tracking.trackCommerce(id, "COMMERCE_CLICK_" + tracking.id, id, true );
}
return {
visitedLocation: visitedLocation,
interactedWithLocation: interactedWithLocation,
registerUnvisitedLocation: registerUnvisitedLocation,
registerVisitedLocation: registerVisitedLocation,
trackEventIfRecentlyViewed: trackEventIfRecentlyViewed,
trackEventIfRecentlyInteracted: trackEventIfRecentlyInteracted,
trackRecentlyViewedCountOnPage: trackRecentlyViewedCountOnPage,
trackCommerceClick: trackCommerceClick
};
});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_responsive_hr_meta_hotel_auction','handlers',['handlers']);
/**
* @created 10/23/17
* @author brandonwilliams
*/
define(["widget", 'utils/classnameUtils', 'common/trackingStreams', "commerce/offerclick", "ta/Core/TA.Event", "ta/Core/TA.LocalStorage", "hotels/tracking/UEF-LocationDateSpecificClickThru", "sponsoredlisting/HotelStaticListing", "hotels/ClickSourceTracking",
'hotels/recentlyViewedHotels'],
(function(widget, classnameUtils, tracking, offerclick, taEvent, localStorage, UEFClickThruTracker, StaticSponsoredListing, clickSourceTracking,
recentlyViewedHotels) {
var shared = this; //see bind at bottom - shared by all instances
var pdOpening = false;
var DAY = 24 * 60 * 60 * 1000 // 1 day
var clickThruTracker = new UEFClickThruTracker({
pageAction: "ct_l2hr", // click thru list to hr
trackOnServlet: "Hotel_Review"
});
function openPriceDrawer() {
if (pdOpening) {
return;
}
pdOpening = true;
require(["lib/jquery-amd"], function($) {
pdOpening = false;
tracking.trackEvent("hr_price_drawer", "viewall_click", "responsive_web");
var $priceDrawerContainer = $(widget.element).closest('[data-pricedrawer]');
if ($priceDrawerContainer.length) {
$priceDrawerContainer.trigger("viewAllPriceDrawerOpen");
}
});
}
function expand() {
shared.expanded = true;
classnameUtils.addClass(widget.element, "expanded");
// HOT-14406: Add tracking to 'View all N deals from $123' CTA on /HR Mobile Web
tracking.trackEvent("hr_offers_dropdown", "viewall_click", "responsive_web");
}
function collapse() {
shared.expanded = false;
classnameUtils.removeClass(widget.element, "expanded");
// HOT-14406: Add tracking to 'View all N deals from $123' CTA on /HR Mobile Web
tracking.trackEvent("hr_offers_dropdown", "collapse_click", "responsive_web");
}
function clickOffer(event, elem) {
if (/\bunclickable\b/.test(elem.className)) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
event.preventDefault();
return;
}
var token = elem.getAttribute("data-clickToken");
var expandedToken = offerclick.expandToken(token);
_trackClickThru(expandedToken);
// HOT-23280: Recently viewed tracking for commerce clicks
recentlyViewedHotels.trackCommerceClick(expandedToken ? expandedToken.locId : 0);
if (token) {
//Do not demand load offerclick here. That will cause the physical click to be disconnected from 'clickEvent' resulting in pop-up blocker issues.
offerclick.clickEvent(event, elem, token);
}
else {
tracking.error(null, "Commerce click failed b/c click token absent");
}
}
function _trackClickThru(token) {
// HOT-15616: Tracking hotel listing click to HR commerce click. (need both impression keys)
if (!token || !clickThruTracker) {
return;
}
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
clickThruTracker.trackEvent(token.locId, token.ik, "/Redirect", token.isBooking && taRecord.trackEventOnPage);
});
}
/**
* BIZ-10416: Sponsored meta preference
* We need to pass state to server to say that we are in a meta preference context, which we do with the polling param
*/
function _addSponsoredMetaPreferencePollingParam() {
var offersDiv = widget.element.querySelector('.offers');
var sponsoredListing = offersDiv.getAttribute('data-sponsoredListing');
sponsoredListing = sponsoredListing && JSON.parse(sponsoredListing); // Matches HotelSponsoredListingModel.java
if (sponsoredListing) {
var staticListing = new StaticSponsoredListing(sponsoredListing.sponsoredPlacementSlot, sponsoredListing.slotIndex, sponsoredListing.sponsoredType, sponsoredListing.locationId, sponsoredListing.slLineItemId);
var pollingParam = {};
pollingParam[sponsoredListing.sponsoredPlacementSlot.name] = staticListing.getPollingParam();
// Update polling param to maintain sponsored state, but don't force poll
taEvent.fireEvent('hotels.sponsored_listing_updated', pollingParam, false);
}
}
// HOT-15798 /H_R pre-dates state for unavailable default dates
function checkAvailState() {
taEvent.off("page-polling-complete", checkAvailState);
// Check if we already displayed pre-dates in the session
if (!localStorage.enabled || localStorage.getObject("defaultDatesUnavailableTreatment")) {
return;
}
// Check if any offer is available
if (widget.element.querySelector(".offers[data-is-any-available]")) {
return;
}
// Don't show for no-commerce properties
if (widget.element.querySelector(".offers[data-no-commerce]")) {
return;
}
var el = widget.element.querySelector(".defaultDatesUnavailableTreatment");
// Check if feature is enabled
if (!el) {
return;
}
el.style.display="block";
if (el = widget.element.querySelector(".secondary")) {
el.style.display="none";
}
if (el = widget.element.querySelector(".noAvailability")) {
el.style.display="none";
}
taEvent.fireEvent('no-availability-detected');
localStorage.set("defaultDatesUnavailableTreatment", true, DAY);
}
taEvent.on("page-polling-complete", checkAvailState);
function popCalendar() {
taEvent.fireEvent("popCalendar");
}
function trackClickSource(event) {
clickSourceTracking.trackElement(event.target, widget.element);
}
function positionAlertMessage() {
var trip_search_label = document.querySelector("#CHECK_RATES_CONT .trip_search_label")
, label_container = trip_search_label && trip_search_label.parentNode
, new_alert = widget.element.querySelector(".alert_widget")
, existing_alert = label_container && label_container.querySelector(".alert_widget")
;
if (!trip_search_label || !label_container) { return; }
if (existing_alert) {
label_container.removeChild(existing_alert);
}
if (new_alert) {
label_container.insertBefore(new_alert, trip_search_label);
classnameUtils.removeClass(new_alert, "hidden");
}
classnameUtils.toggleClass(trip_search_label, "hidden", !!new_alert);
}
positionAlertMessage();
if (shared.expanded || window.location.hash === '#poiHeading') {
shared.expanded = true;
classnameUtils.addClass(widget.element, "expanded");
}
_addSponsoredMetaPreferencePollingParam();
if (widget.element) {
if (widget.element.querySelector(".free_cancellation_message")) {
tracking.trackEvent("MERCHANDISE_MESSAGE", "merchandise_message_cancel_shown");
}
if (widget.element.querySelector(".pay_at_stay_message")) {
tracking.trackEvent("MERCHANDISE_MESSAGE", "merchandise_message_pay_at_stay_shown");
}
}
function trackViewAllClick(event, elem) {
tracking.trackEvent("hr_no_offers_view_all", "click");
}
function trackHotelWebsiteClick(event, elem) {
tracking.trackEvent("hr_no_offers_hotel_website", "click");
}
return {
openPriceDrawer: openPriceDrawer,
expand: expand,
collapse: collapse,
clickOffer: clickOffer,
popCalendar: popCalendar,
trackClickSource: trackClickSource,
trackViewAllClick: trackViewAllClick,
trackHotelWebsiteClick: trackHotelWebsiteClick,
};
}));});require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_hr_special_rate_3','handlers',['handlers']);
define(['babel/babel-helpers', 'widget', 'common/trackingStreams'], function (babelHelpers, widget, trackingStream) {
var _widgetEl = widget.element;
var _init = function _init() {
var trackingEl = _widgetEl.querySelector('.special_rate_tracking');
if (trackingEl) {
trackingStream.trackEventOnPageOnce(trackingEl.getAttribute('pageproperty'), trackingEl.getAttribute('pageaction'), trackingEl.getAttribute('productattribute'));
}
};
_init();
});
});
define('overlays/options/fade', ['lib/jquery-amd'], function($){
'use strict';
var NOOP = function(){};
var fadeInClass = 'fade_in';
var fadeOutClass = 'fade_out';
function addClass(cl){
$(this.container).addClass(cl);
$(this.shade).addClass(cl);
}
function removeClass(cl){
$(this.container).removeClass(cl);
$(this.shade).removeClass(cl);
}
var BOTH = [
function(fadeType){
addClass.call(this, fadeType.cl);
},
function(fadeType){
addClass.call(this, fadeInClass);
},
NOOP,
function(fadeType){
removeClass.call(this, fadeInClass);
},
NOOP
];
var ONLY_IN = [
NOOP,
function(fadeType){
addClass.call(this, fadeType.cl);
addClass.call(this, fadeInClass);
},
function(fadeType){
removeClass.call(this, fadeType.cl);
removeClass.call(this, fadeInClass);
},
NOOP,
NOOP
];
var ONLY_OUT = [
NOOP,
NOOP,
NOOP,
function(fadeType){
addClass.call(this, fadeType.out);
addClass.call(this, fadeOutClass);
},
function(fadeType){
removeClass.call(this, fadeType.out);
removeClass.call(this, fadeOutClass);
}
];
var Fade = function(fadeType, onShow, onHide){
return function() {
if (!fadeType) { return; }
onShow = onShow !== false;
onHide = onHide !== false;
var oldShow = this.show;
var oldHide = this.hide;
var fns = onShow && onHide ? BOTH : onShow ? ONLY_IN : ONLY_OUT;
fns[0].call(this, fadeType);
onShow && (this.show = function() {
var args = arguments;
oldShow && oldShow.apply(this, args);
fns[1].call(this, fadeType);
setTimeout(function(){
fns[2].call(this, fadeType);
}.bind(this), fadeType.len);
}.bind(this));
onHide && (this.hide = function() {
var args = arguments;
fns[3].call(this, fadeType);
setTimeout(function() {
fns[4].call(this, fadeType);
oldHide && oldHide.apply(this, args);
}.bind(this), fadeType.len);
}.bind(this));
};
};
Fade.NONE = {cl: 'fade_none', out: 'fade_out_none', len: 0};
Fade.SHORT = {cl: 'fade_short', out: 'fade_out_short', len: 250};
Fade.NORMAL = {cl: 'fade_normal', out: 'fade_out_normal', len: 500};
Fade.LONG = {cl: 'fade_long', out: 'fade_out_long', len: 1000};
return Fade;
});
require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_hr_responsive_strike_through','tablet/tablet',['tablet/tablet']);
define([
'overlays/Overlay',
'overlays/position',
'overlays/styles/tooltip',
'overlays/options/closeOnMouseAway',
'overlays/options/maxWidth',
'overlays/options/fade'
], function(
Overlay,
Position,
Tooltip,
CloseOnMouseAway,
maxWidth,
Fade
) {
var _overlayComponent;
function toggleOverlay(event, source){
if ( !_overlayComponent) {
var overlayContent = source && source.querySelector(".overlay_contents");
if(overlayContent) {
_overlayComponent = new Overlay(source, [
Tooltip(source, 'above', "dark", overlayContent.innerHTML),
Position.above(),
maxWidth(200),
CloseOnMouseAway,
Fade(Fade.SHORT, true, true)
]);
}
}
if(_overlayComponent){
_overlayComponent.show();
}
}
return {
overlay : toggleOverlay
};
});});define("hotels/pricedrawer/PriceDrawerClickTracking", ['babel/babel-helpers', 'common/trackingStreams'], function (babelHelpers, tracking) {
function _findClickElement(el, widget) {
while (el && el.getAttribute) {
if (el.getAttribute('data-clickPart')) {
return el;
}
el = el.parentNode;
if (el === widget.element) {
break;
}
}
return null;
}
function _findClickIndex(el, isDropdown) {
return new Promise(function (resolve, reject) {
require(['babel/babel-helpers', "trjs!lib/jquery-amd"], function (babelHelpers, $) {
var link = $(el).closest(".text-link");
var offerlist = isDropdown ? $(".text-link.big-space") : $(el).closest(".dealsTab").find(".text-link");
if (!link || !offerlist || offerlist.index(link) === -1) {
reject();
}
resolve(offerlist.index(link));
});
});
}
function track(event, widget, isDropdown) {
var clickElem = _findClickElement(event && event.srcElement, widget);
var part = clickElem ? clickElem.getAttribute('data-clickPart') : 'drawer_other';
var index = _findClickIndex(event && event.srcElement, isDropdown);
index.then(function (res) {
return tracking.trackEvent('hotelcell_h_meta', part + '_' + res);
});
}
return { track: track };
});
require(['ta/prwidgets'], function(widgets) {
var define = widgets.define.bind(widgets,'meta_h_text_links_simplified','handlers',['handlers']);
define(["babel/babel-helpers", "widget", "vanillajs", "commerce/offerclick", "hotels/tracking/UEF-LocationDateSpecificClickThru", "hotels/pricedrawer/PriceDrawerClickTracking", 'hotels/ClickSourceTracking', 'hotels/recentlyViewedHotels'], function (babelHelpers, widget, vanilla, offerclick, UEFClickThruTracker, pdTracking, clickSourceTracking, recentlyViewedHotels) {
var clickThruTracker = new UEFClickThruTracker({
pageAction: "ct_l2hr", // click thru list to hr
trackOnServlet: "Hotel_Review"
});
function clickOffer(event, elem) {
pdTracking.track(event, widget, true);
var token = elem.getAttribute("data-clickToken");
if (token) {
var expandedToken = offerclick.expandToken(token);
_trackClickThru(expandedToken);
// HOT-23280: Recently viewed tracking for commerce clicks
recentlyViewedHotels.trackCommerceClick(expandedToken ? expandedToken.locId : 0);
offerclick.clickEvent(event, elem, token);
}
}
function _trackClickThru(token) {
// HOT-15616: Tracking hotel listing click to HR commerce click. (need both impression keys)
if (!token || !clickThruTracker) {
return;
}
if (clickThruTracker.shouldTrackForIBClickThru(token)) {
clickThruTracker.processAndTrackClickThrough(token.locId, token.ik, '/Redirect');
} else {
require(["babel/babel-helpers", 'trjs!ta/Core/TA.Record'], function (babelHelpers, taRecord) {
clickThruTracker.trackEvent(token.locId, token.ik, "/Redirect", token.isBooking && taRecord.trackEventOnPage);
});
}
}
function trackClick(event, elmt, locId) {
clickSourceTracking.trackElement(event.target, widget.element, locId);
}
return {
trackClick: trackClick,
clickOffer: clickOffer
};
});
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'attraction_simple_meta','handlers',['handlers']);
// private JS to render restaurants small meta on LPDL_2015
define(["placement", "ta/page"], function(placement, taPage) {
function showMoreDetails (event, elem, locId) {
var div = document.getElementById('OVERLAY_CONTENTS');
if (div) {
var divCopy = div.clone();
divCopy.removeClass('detailOverlayHide');
var overlay = new ta.overlays.CenteredOverlay({
showCloseButton: true,
xOffset: 300,
style: 's4 mg',
content: divCopy,
fontSize: '1em',
attachCloseEvent: true
});
}
}
function goToLink(event, element) {
taPage.goToLink(event, element);
}
return {
showMoreDetails: showMoreDetails,
goToLink: goToLink
};
});});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'lpdl_ce_promo_banner','handlers',['handlers']);
define(['placement', 'ta', 'utils/ceUtils'], function (placement, ta, ceUtils) {
ta.queueForLoad(function () {
ceUtils.isChromeExtensionInstalled(function () {
// remove the placement if the chrome extension is installed
ta.id(placement.id).remove();
}, function () {
// record impression event for the placement
var elm = ta.id(placement.id).querySelector('.ce_promo_photo_banner');
ta.trackEventOnPage(elm.dataset.campaign, elm.dataset.placementid, 'impression', elm.dataset.version, true);
});
});
return {};
});
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'global_nav_action_cart','handlers',['handlers']);
/* jshint newcap:false */
define([
'placement',
'lib/jquery-amd'
], function(
placement,
$
) {
'use strict';
var placementEl = $('#' + placement.id);
// Tracking: Shopping Cart Link
placementEl.on('click', 'a.shopping-cart-link', function() {
var trackingLabel = $(this).data('tracking-label');
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
taRecord.trackEventOnPage('TopNav_' + window.pageServlet, 'click', trackingLabel);
});
});
});
});
define('ta/util/CommonMessagingUtil',
[
"lib/jquery-amd", 'ta/Core/TA.LocalStorage', "ta/support/Qualtrics", "ta/util/SessionStorage", "ta/Core/TA.Event"
],
function( $, localStorage, qualtrics, taSessionStorage, taEvent ) {
'use strict';
var storageViewString = "_view_count";
var storageDisabledString = "_is_disabled";
var storageDismissedString = "_times_dismissed";
var storageDisabledForTodayString = "_disabled_for_day";
function getCurrentPageViews(thumbPrint) {
if (localStorage.enabled) {
var storedViews = localStorage.get(thumbPrint + storageViewString);
return storedViews ? parseInt(storedViews) : 0;
}
return null;
}
function incrementPageViews(thumbPrint) {
if (localStorage.enabled && thumbPrint) {
var pageViewKey = thumbPrint + storageViewString;
localStorage.set(pageViewKey, getCurrentPageViews(thumbPrint) + 1);
}
}
function getNumberOfTimesDismissed(thumbPrint) {
if (localStorage.enabled) {
var timesDismissed = localStorage.get(thumbPrint + storageDismissedString);
return timesDismissed ? parseInt(timesDismissed) : 0;
}
return 0;
}
function incrementNumberOfTimesDismissed(thumbPrint) {
if (localStorage.enabled && thumbPrint) {
var timesDismissedKey = thumbPrint + storageDismissedString;
localStorage.set(timesDismissedKey, getNumberOfTimesDismissed(thumbPrint) + 1);
}
}
function isPlacementDisabled(thumbPrint) {
if (localStorage.enabled) {
var keyExists = localStorage.get(thumbPrint + storageDisabledString);
return !!keyExists;
}
return false;
}
function disablePlacement(thumbPrint) {
if (localStorage.enabled && thumbPrint) {
localStorage.set(thumbPrint + storageDisabledString, "true");
}
}
function setPlacementDisabledForToday(thumbPrint) {
var today = new Date().getDate();
if(localStorage.enabled && thumbPrint) {
var closedTodayKey = thumbPrint + storageDisabledForTodayString;
localStorage.set(closedTodayKey, today.toString());
}
}
function isPlacementDisabledForToday(thumbPrint) {
var today = new Date().getDate();
if(localStorage.enabled && thumbPrint) {
var closedTodayKey = thumbPrint + storageDisabledForTodayString;
var keyFound = localStorage.get(closedTodayKey);
return keyFound ? keyFound === today.toString() : false;
}
return false;
}
function setPlacementGroupKey(groupKey) {
var today = new Date().getDate();
if (localStorage.enabled) {
localStorage.set(groupKey, today.toString());
}
}
function checkPlacementGroupKey(groupKey) {
var today = new Date().getDate();
if (localStorage.enabled) {
var keyFound = localStorage.get(groupKey);
return keyFound ? keyFound === today.toString() : false;
}
}
function _displayPlacementIfNoSurveyNorAdIsPresent(_shouldCheckSurvey, _suppressPlacement, _displayPlacement) {
if (_shouldCheckSurvey && typeof(_shouldCheckSurvey) === "function" && _shouldCheckSurvey()) {
if (qualtrics.seenThisPageView() || qualtrics.canDisplaySmart() || qualtrics.canDisplay()) {
return;
}
}
if (_suppressPlacement && typeof(_suppressPlacement) === "function" && _suppressPlacement()) {
return;
}
if (_displayPlacement && typeof(_displayPlacement) === "function") {
if (document.getElementById("FIXED_AD")) {
if (taSessionStorage.canUseSessionStore() && taSessionStorage.getObject('ads.fixed.close')) {
_displayPlacement();
}
else {
taEvent.on("ad_div_collapsed", function () {
_displayPlacement();
});
}
}
else {
_displayPlacement();
}
}
}
function parseServletName(servletName) {
return servletName.toLowerCase().replace("mobile", "");
}
return {
getCurrentPageViews: getCurrentPageViews,
incrementPageViews: incrementPageViews,
getNumberOfTimesDismissed: getNumberOfTimesDismissed,
incrementNumberOfTimesDismissed: incrementNumberOfTimesDismissed,
isPlacementDisabled: isPlacementDisabled,
disablePlacement: disablePlacement,
setPlacementDisabledForToday : setPlacementDisabledForToday,
isPlacementDisabledForToday: isPlacementDisabledForToday,
setPlacementGroupKey: setPlacementGroupKey,
checkPlacementGroupKey: checkPlacementGroupKey,
parseServletName: parseServletName,
displayPlacementIfNoSurveyNorAdIsPresent:_displayPlacementIfNoSurveyNorAdIsPresent
}
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'global_nav_action_inbox','handlers',['handlers']);
/**
* Private handlers of global_nav_action_inbox
*/
define([
'placement', 'vanillajs', 'lib/jquery-amd', 'common/Radio', 'ta/Core/TA.Record', 'ta/util/CommonMessagingUtil'
], function(
placement, vanilla, $, Radio, taRecord, commonMessagingUtil
) {
var overlay;
var INBOX_TRACKING_PID = 40186;
// TRVX-5924
var INBOX_JEWEL_TEST_PID = 40405;
var inboxJewelTestThumbprint = 'Membership_Inbox_Jewel_Test';
var maxViewsForJewelTest = 3;
var test_click = false;
var login_click = false;
Radio('global-nav-inbox').on('open', function(triggerEl, bottomLeftOffset) { _showDropdownForComponentTrigger(triggerEl, bottomLeftOffset); });
function _showDropdownForComponentTrigger(context) {
context.receivedCallback && context.receivedCallback();
if ($('.inbox-flyout-container').length && overlay) {
overlay.destroy();
} else {
var triggerEl = context.el;
var bottomLeftOffset = context.bottomLeftOffset;
_showDropdownAtTrigger(undefined, triggerEl, bottomLeftOffset);
}
}
function _showDropdownForPlacementTrigger(inboxJewelTestEl) {
_showDropdownAtTrigger(inboxJewelTestEl, $('.masthead-inbox-icon')[0]);
}
function _showDropdownAtTrigger(inboxJewelTestEl, target, bottomLeftOffset) {
var container = $('#' + placement.id);
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/flyout',
'trjs!overlays/options/closeOnDocClick',
'trjs!overlays/position',
'trjs!overlays/options/destroyOnHide',
'trjs!overlays/options/autoReposition',
'ta/registration/RegOverlay',
'trjs!unifiedinbox/inbox-lander',
'trcss!unified_inbox_lander'
];
require(reqs, function(Overlay, Flyout, CloseOnDocClick, Position, DestroyOnHide, AutoReposition, RegOverlay, InboxLander, styleSheetOK) {
// Create a new overlay
var contents = $('.inbox-nav-contents', container).clone()[0];
contents.classList.remove("hidden");
// Login clicks should bring up the registration overlay.
if ($(".login-cta", contents).length) {
var loginButton = $('.login-cta span', contents);
loginButton.click(function () {
// Tracking for if the login click occurred as a result of the Inbox Jewel Test
if (inboxJewelTestEl && test_click){
login_click = true;
taRecord.trackEventOnPage('reg_trigger', 'mgp_click_login', 'Inbox Jewel Notification Log In Click | Nav | mgp_drs_mem', INBOX_JEWEL_TEST_PID);
}
overlay.destroy();
RegOverlay.show({type: 'dummy'}, null, {
flow: 'CORE_COMBINED',
pid: 40472,
userRequestedForce: true,
onSuccess: function() {
$(".login-cta", container).remove();
$(".inbox-nav-dropdown", container).removeClass("with-login-cta");
}.bind(this),
});
});
} else {
// Add the loading skeleton
var loadingItem = $(".js-inbox-lander-thread-list-item.loading", contents);
var inboxMastheadWrapper = $(".inbox-masthead-wrapper", contents);
var newLoadingItem;
for (var loadingCount = 0; loadingCount < 10; ++loadingCount) {
newLoadingItem = loadingItem.clone();
newLoadingItem.removeClass('hidden');
inboxMastheadWrapper.append(newLoadingItem);
}
}
var blOffset = bottomLeftOffset;
if (!blOffset) {
if ($(target).data('nav-2018-enabled')) {
blOffset = [($(target).width()/2)-34, 7];
} else {
blOffset = [-20, -3];
}
}
// Create the overlay.
overlay = new Overlay(
target,
new Flyout(contents, 'inbox-flyout-container'),
CloseOnDocClick.withoutTouchEvents,
Position.bottomLeft(blOffset),
DestroyOnHide,
AutoReposition
);
overlay.show();
// For TRVX-5924 track when inbox login flyout closes
if (inboxJewelTestEl && !inboxJewelTestEl.hasClass('hidden')) {
overlay.on('hide', function() {
if (!login_click) {
taRecord.trackEventOnPage('reg_trigger', 'mgp_close', 'Inbox Jewel Notification | Nav | mgp_drs_mem', INBOX_JEWEL_TEST_PID);
}
login_click = false;
test_click = false;
});
}
// Load the thread list.
if (!$(".login-cta", container).length) {
InboxLander.loadMastheadDropdown();
}
});
}
/**
* TRVX-5924 Inbox Jewel Test
* On load of placement, handle some logic/tracking for jewel
*/
function _setUpJewelTest(container, inboxJewelTestEl) {
// If part of the test:
if (inboxJewelTestEl) {
// If Control - track on page
if (inboxJewelTestEl.hasClass('is-control')) {
taRecord.trackEventOnPage('reg_trigger', 'mgp_view_control', 'Inbox Jewel Notification Control| Nav | mgp_drs_mem');
}
else {
// Double check that the page-view limit has not been reached
var currentPageViews = commonMessagingUtil.getCurrentPageViews(inboxJewelTestThumbprint);
if (currentPageViews >= maxViewsForJewelTest) {
commonMessagingUtil.disablePlacement(inboxJewelTestThumbprint);
}
// Show jewel as part of test if not disabled
if (!commonMessagingUtil.isPlacementDisabledForToday(inboxJewelTestThumbprint)
&& !commonMessagingUtil.isPlacementDisabled(inboxJewelTestThumbprint)
&& inboxJewelTestEl.hasClass('valid-for-test')) {
$('.inbox-jewel-test', container).removeClass('hidden');
// If jewel shows, track on page
taRecord.trackEventOnPage('reg_trigger', 'mgp_view', 'Inbox Jewel Notification | Nav | mgp_drs_mem', INBOX_JEWEL_TEST_PID);
}
}
}
}
/*
* Setup click and event handlers.
*/
function _setupHandlers() {
var container = $('#' + placement.id);
var inboxJewelTestEl = $(".inbox-jewel-test", container);
/**
* Hide ui_jewel for inbox jewel test if view limit has been reached and track
*/
_setUpJewelTest(container, inboxJewelTestEl)
// Clicks on the jewel should show or hide the overlay.
$('.masthead-inbox-icon, .ui_jewel', container).click(function (e) {
e.stopPropagation();
// If jewel showing as part of TRVX-5924
if (inboxJewelTestEl && !inboxJewelTestEl.hasClass('hidden')) {
taRecord.trackEventOnPage('reg_trigger', 'mgp_click', 'Inbox Jewel Notification | Nav | mgp_drs_mem', INBOX_JEWEL_TEST_PID);
commonMessagingUtil.setPlacementDisabledForToday(inboxJewelTestThumbprint);
commonMessagingUtil.incrementPageViews(inboxJewelTestThumbprint);
test_click = true;
// Adding 'no_unread' tracking here
// If inbox jewel test is active, the jewel will not be hidden and there are no unread inbox messages
taRecord.trackEventOnPage('Inbox|Dropdown', 'icon_jewel_click', 'no_unread', INBOX_TRACKING_PID);
} else if ($('.ui_jewel', container).length && $('.ui_jewel', container).hasClass('hidden')) {
taRecord.trackEventOnPage('Inbox|Dropdown', 'icon_jewel_click', 'no_unread', INBOX_TRACKING_PID);
} else if ($('.ui_jewel', container).length) {
taRecord.trackEventOnPage('Inbox|Dropdown', 'icon_jewel_click', 'has_unread', INBOX_TRACKING_PID);
}
if ($('.masthead-inbox-icon', container).attr('data-on-inbox')) {
window.location = '/Inbox';
} else {
if ($(".inbox-flyout-container").length && overlay) {
overlay.destroy();
} else {
_showDropdownForPlacementTrigger(inboxJewelTestEl);
}
}
});
// Clicks on a thread should hide the overlay.
Radio('inbox').on(
'thread_clicked',
function(evnt) {
if (overlay) {
overlay.destroy();
}
}
);
// Hide or show the jewel as appropriate.
Radio('inbox').on(
'has_unread_conversations',
function(evnt) {
var jewelEls = $('.ui_jewel', container);
if(jewelEls !== 'undefined' && jewelEls.length > 0) {
jewelEls.each(function (i, elem) {
if (!$(elem).hasClass('inbox-jewel-test')) {
$(elem).removeClass('hidden');
}
})
}
}
);
Radio('inbox').on(
'no_unread_conversations',
function(evnt) {
var jewelEls = $('.ui_jewel', container);
if(jewelEls !== 'undefined' && jewelEls.length > 0) {
jewelEls.each(function(i, elem) {
if (!$(elem).hasClass('inbox-jewel-test')) {
$(elem).addClass('hidden');
}
})
}
}
);
Radio('inbox').on(
'setup_handler',
function() {
_setupHandlers();
}
);
}
/*
* Setup the icon click handler.
*/
_setupHandlers();
return {
};
});
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'global_nav_links','handlers',['handlers']);
/**
* Private handler of global_nav_links
*/
define(['utils/asdf-encoder'],
function (asdf) {
function clickAboutGeoLink(event, target) {
window.open(asdf.asdf(target.getAttribute('data-ahref')).replace(/&/g, '&'), '_self');
}
return {
clickAboutGeoLink: clickAboutGeoLink
}
});});
define("cpm/AdBlockDetect", ["lib/jquery-amd","utils/browserutils","ta/Core/TA.Event","ta/Core/TA.Record","ta/util/Error"],
function( $, Browser, taEvent, taRecord, taError) {
'use strict';
var exports = {};
var _testImg;
var DEFAULT_LABEL = "ab_chk";
var _isPixelLoadError;
var _logged = false;
var _cdn = window.CDNHOST || "";
var _pixelUrl = "/img2/x.gif?&ads=1&adsize=2&adslot=3&rnd=";
var _generatePixel = function() {
var rnd = Math.floor(Math.random() * 100000);
return $('<img src="' + _cdn + _pixelUrl + rnd + '" style="position:absolute" class="ad ad_column" height="0" width="0" />');
};
var _getAdCount = function() {
var count = document.querySelectorAll(".gptAd:not(.inactive)").length;
if (screen.width < 768) {
count += document.querySelectorAll(".inline_ad_wrapper").length;
}
return count;
};
var _log = function(blocked, trackingLabel, trackUnblocked){
if ((!_logged && trackingLabel === DEFAULT_LABEL) ||
(trackingLabel && trackingLabel !== DEFAULT_LABEL)){
if (blocked || trackUnblocked) {
taRecord.trackEventOnPage(trackingLabel, Browser.name, blocked, _getAdCount(), false);
}
_logged = true;
}
};
var _detect = function(onDetectedHandler, trackingLabel, trackUnblocked, isLoadError){
if (typeof isLoadError != undefined) {
_isPixelLoadError = isLoadError;
}
if (_testImg){
var blocked = _isPixelLoadError ? true : !_testImg[0].offsetParent;
_log(blocked, trackingLabel, trackUnblocked);
if (blocked) {
onDetectedHandler();
}
}
};
exports.runIfDetected = function(onDetectedHandler, trackingLabel, trackUnblocked) {
if ( typeof onDetectedHandler != "function") {
taError.record(null, "runIfDetected requires a function");
return;
}
taEvent.queueForLoad( function() {
_logged = false;
if (_testImg) {
_detect(onDetectedHandler, trackingLabel, trackUnblocked);
} else {
_testImg = _generatePixel();
_testImg.on("load", function(){ _detect(onDetectedHandler, trackingLabel, trackUnblocked, false); });
_testImg.on("error", function(){ _detect(onDetectedHandler, trackingLabel, trackUnblocked, true); });
$("body").append(_testImg);
}
}, "AdBlockDetect");
};
return exports;
});
require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'ab_chk','handlers',['handlers']);
/*
* ADS-3472: ad blocker detection running permanently on sales drs 99
* Works in Chrome, Firefox, Safari & IE.
*/
define(["placement","cpm/AdBlockDetect"], function(placement,abDetect) {
// a fn is required,
abDetect.runIfDetected(function(){}, "ab_chk", true);
});
});require(['ta/p13n/placements','$prp/ab_chk/handlers'], function(placements, impl) {
window.ta.plc_ab_chk_handlers = placements.load('ab_chk','handlers.js', { 'name': 'ab_chk', 'id': 'taplc_ab_chk', 'location_id': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', '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",
"common/Radio"],
function (placement, taStore, Radio) {
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");
placement.require(["trjs!deferred/lateHandlers"], function (lh) {
Radio("masthead_search").on('open', function () {
lh.showSearchOverlay();
});
});
return {
getOptions: function () {
return options;
}
};
});
});
define('overlays/options/autosize', ['vanillajs', 'api-mod'], function(vanilla, api) {
'use strict';
return function(padding){
return function(){
var autosize = function (){
var el = api.find('.autosize', this.container);
if (el){
var vH = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - padding;
var oH = api.getSize(this.container).y;
if (oH > vH){
var eH = api.getSize(el).y;
this.container.style.height = vH + 'px';
var h = (eH + vH - oH) + 'px';
var css = document.createElement('style');
css.type = 'text/css';
css.innerHTML = this.container.className
.split(' ')
.map(function(c){ return '.' + c; })
.join('') + ' .autosize { height: ' + h + '; }';
document.head.appendChild(css);
}
}
};
this.on('show', autosize);
};
};
});
require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'shopping_cart_simple_flyout','handlers',['handlers']);
define(
[
'placement',
'lib/jquery-amd',
'overlays/Overlay',
'overlays/options/autosize',
'overlays/options/autoReposition',
'overlays/options/centerArrowOnSrcElement',
'overlays/options/closeOnChildClick',
'overlays/options/closeOnEscape',
'overlays/position',
'overlays/styles/popover',
'ta/Core/TA.Record'
],
function(
placement,
$,
Overlay,
Autosize,
AutoReposition,
CenterArrowOnSrcElement,
CloseOnChildClick,
CloseOnEscape,
Position,
Popover,
taRecord
) {
'use strict';
function SimpleFlyout(targetElement, header, body, cookieId, pageProperty) {
var overlay = undefined;
function _showAlert() {
if (overlay) {
return;
}
overlay = new Overlay(
targetElement,
[
Popover(targetElement, 'below', '', header.html(), body.html()),
Autosize(0),
AutoReposition,
CloseOnEscape,
CloseOnChildClick,
Position.below([8, -20]),
CenterArrowOnSrcElement(targetElement)
]);
if (overlay) {
overlay.on('hide', function() {
taRecord.trackEventOnPage(pageProperty, 'close');
});
overlay.show();
// bounce the cart
$(targetElement).addClass('animated');
// request to mark session as seen.
if (cookieId) {
$.get('/AttractionCommerceAjax?a=' + cookieId);
}
}
}
this.show = _showAlert;
}
var content = $('.scream_overlay');
var flyout = new SimpleFlyout($('.shopping-cart-link').get(0), $('.scream_header'), $('.scream_body'), content.attr('data-cookieId'), content.attr('data-pageProperty'));
$(document).ready(flyout.show);
return {};
});
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'trip_planner_breadcrumbs','handlers',['handlers']);
define(["placement", "ta/Core/TA.FireEvent", "utils/urlDecoder"],
function(placement, taEvent, decoder) {
"use strict";
function updateContents(contentDiv) {
var placementDiv = document.getElementById(placement.id);
if(placementDiv) {
placementDiv.innerHTML = contentDiv.innerHTML;
}
}
function _goToLink(event, element) {
decoder.goToLink(event, element);
}
function onClick(key, value) {
return require.defined('ta/util/Cookie') && require('ta/util/Cookie').setOneTimeCookie(key, value);
}
taEvent.on("update-" + placement.name, updateContents);
return {
goToLink: _goToLink,
onClick : onClick
};
});});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'comscore','handlers',['handlers']);
/* globals COMSCORE */
define([
'placement', 'ta/Core/TA.Event', 'vanillajs'
], function(
placement, TAEvent
){
'use strict';
TAEvent.queueForLoad(function(){
var _root = document.getElementById(placement.id)
, _dataHolder = _root.querySelector('.dataHolder')
, commscoreId = _dataHolder.getAttribute('data-id')
, beacon = { c1: '2', c2: commscoreId, c3: '', c4: '' }
;
if (typeof COMSCORE != 'undefined'){
COMSCORE.beacon(beacon);
}
else {
window._comscore = window._comscore || [];
window._comscore.push(beacon);
var s = document.createElement('script');
s.async = true;
s.src = (document.location.protocol == 'https:' ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js';
_root.appendChild(s);
}
}, 5, 'comscore');
// prioritized before default things (100+), and after 'really important' things, which seem to be meta things. Before GA, which is 10.
});
});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/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(){});
});if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["page-model"]); });
}
else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["page-model"]);}
}if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["ta/util/RecordInterruption"]); });
}
else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta/util/RecordInterruption"]);}
}require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'qualtrics_survey','handlers',['handlers']);
/** Private javascript for qualtrics survey placement
* We want to show on the 2nd pageview, no more than once every 30 days
* The div id is generated from the qualtrics site-intercept code.
* The placement render will decide which survey to displace.
*/
define([
"placement",
"lib/jquery-amd",
"ta",
'ta/Core/TA.LocalStorage',
'page-model',
'ta/util/RecordInterruption',
'ta/support/Qualtrics',
'utils/throttle'
],
function (placement, $, ta, taLocalStore, model, recordInterruption, taQualtrics, throttle) {
"use strict";
ta.queueForLoad(function () {
// For surveys that should hide when the user begins to scroll, this is the how much give they have
var SCROLL_BUFFER = 318;
// Campaign ID for event tracking
var CAMPAIGN_ID = 'qualtrics_surveys';
taQualtrics.setSmartSurvey(!!placement.params.smartSurvey);
taQualtrics.updatePageViews();
if (taLocalStore.enabled && ( taQualtrics.isDebug() || taQualtrics.canDisplaySmart() || ( !taQualtrics.getSmartSurvey() && taQualtrics.canDisplay() ) )) {
var surveyKey = placement.params.surveyId;
var surveyContainerClassName = '.' + surveyKey + '_InfoBarContainer';
var surveyName = placement.params.surveyName;
var surveyProperties = 'Qualtrics_Survey' + '|' + window.pageServlet + '|' + surveyName;
if (placement.params.smartSurvey) {
var getSurveyProperties = function (_ss, _qa) {
return _ss + '|' + ['sc-' + _qa.getSessionCount(), 'ir-' + _qa.getInterceptReqs(), 'iv-' + _qa.getInterceptViews(), 'pv-'+_qa.getPageViews()].join('|');
};
$('body').on('qxInterceptShown', function () {
ta.trackEventOnPage(CAMPAIGN_ID, 'interceptShown', getSurveyProperties(surveyProperties, taQualtrics), null, true);
taQualtrics.updateInterceptViews();
taQualtrics.updateSessionCount();
});
$('body').on('qxInterceptAccept', function () {
ta.trackEventOnPage(CAMPAIGN_ID, 'interceptAccept', getSurveyProperties(surveyProperties, taQualtrics), null, false);
taQualtrics.setResponded(true);
});
$('body').on('qxInterceptDecline', function () {
ta.trackEventOnPage(CAMPAIGN_ID, 'interceptDecline', getSurveyProperties(surveyProperties, taQualtrics), null, false);
taQualtrics.setResponded(true);
});
}
if (surveyKey) {
taQualtrics.displaySurvey(surveyKey);
recordInterruption.record('popup', surveyProperties, taQualtrics.getPageViews());
if (placement.params.smartSurvey) {
taQualtrics.updateInterceptReqs();
}
// TV-1243 - Mobile Surveys cover a commerce component, so they should be hidden when the user begins to scroll
if (placement.params.hideOnScroll) {
var hide = function () {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop > SCROLL_BUFFER) {
$(surveyContainerClassName).hide();
}
};
$(window).on('scroll', throttle(hide, 100));
}
}
}
});
return {
};
});
});require(['ta/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'browser_mode_tracking','handlers',['handlers']);
define([
'placement', 'ta/Core/TA.Event', 'ta/Browser', 'ta/Core/TA.Record', 'ta/util/SessionStorage'
], function(placement, taEvent, taBrowser, taRecord, taSessionStorage){
var browserName;
var sessionStoreKey = placement.id + '_browser_mode_tracked';
function _trackBrowserMode (resultStr) {
taRecord.trackEventOnPage('BROWSER_TRACKING', browserName, resultStr, null, true);
}
taEvent.queueForLoad(function(){
if (taSessionStorage.canUseSessionStore() && sessionStorage.getItem(sessionStoreKey)) {
// already tracked
return;
}
else {
if (taBrowser.isChrome()) {
browserName = "Chrome";
taBrowser.isChromeIncognito(_trackBrowserMode);
taSessionStorage.canUseSessionStore() && sessionStorage.setItem(sessionStoreKey, '1');
}
}
});
});});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
) {
function _trackScrollIntoView() {
var pathname = window.location.pathname; //pathname returns "/" for home and "/Hotels" or "/Restaurants" etc. for other servlets
var dashIndex = pathname.indexOf("-"); //pathname is Restaurant_Review-g#### for others
var servletTracking = (pathname.length <= 1)? 'Home' : (dashIndex > 0)? pathname.substring(1, dashIndex) : pathname.substring(1);
require(['trjs!ta/util/Element'], function(taElement) {
ta.util.element.trackWhenScrolledIntoView('#' + placement.id, [servletTracking, 'in_view', 'global_footer']);
});
};
_trackScrollIntoView();
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',['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!brand/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,'global_nav','handlers',['deferred/lateHandlers','handlers']);
/* jshint newcap:false */
define([
'placement',
'lib/jquery-amd',
'common/Radio',
'ta/registration/RegEvents',
'utils/throttle',
'widget/components',
'utils/asdf-encoder'
], function(
placement,
$,
Radio,
RegEvents,
throttle,
Components,
asdf
) {
'use strict';
var TRACKING_CATEGORY = "TopNav";
var placementEl = $('#' + placement.id);
var radio = Radio('global-nav');
var oldOverlay = null;
var mastheadSavesApp = null;
var persistentIcons = $('.persistent-icons', placementEl);
var navIcons = $('.global-nav-icons', persistentIcons);
var logo = $('.global-nav-logo', persistentIcons);
var logo2018 = $('.global-nav-logo-2018', placementEl);
var pill = $('[data-placement-name="global_nav_geopill"]', placementEl);
var radioCandyBarLinks = Radio('candy-bar-quick-links');
var $global_nav_bottom = $('.global-nav-bottom', placementEl);
var radioScrollGeoPill = Radio('tripsearch-scroll-geo-pill');
// Trigger in 'placements/global_nav_action_trips/handlers'
radio.on('run-my-trips-test-3', function() {
openMyTrips(false, true);
});
radioScrollGeoPill.on('hide-on-header', function(shouldHide) {
if (logo2018)
{
logo2018.toggleClass('is-hidden-mobile', !shouldHide);
}
});
// Update Global Nav content
var _onSuccessLoginRefresh = (function(response) {
window.userLoggedIn = true;
// W need this global-nav-no-refresh logic only in the placements version of the header.
// The web components header is used inside of this placement so we need to specifically
// avoid replacing this content upon login.
var isComponents = placementEl.find('[data-non-components]').length == 0;
if (!isComponents) {
// Update the masthead, but keep some of the old content.
// This is because the AJAX servlet does not generate the correct content
// for the original page (instead, it generates it for /MetaPlacementAjax).
// Note this uses the IDs to match each "old" element with its corresponding "new" element.
var oldMenus = $("<div>").append(placementEl.find('.global-nav-no-refresh'));
placementEl.html(response);
placementEl.find('.global-nav-no-refresh').each(function (idx, el) {
$(el).replaceWith(oldMenus.find('#' + el.getAttribute('id'))[0]);
});
if (oldOverlay) {
oldOverlay.hide('replace-el');
}
} else {
// If this is the components nav then we need to pull in the inbox placement contents from the
// response and drop them into a special area meant for placements that we currently still depend
// on. E.g., inbox dropdown can't be made into a component without API rework.
var $legacyActions = placementEl.find('.components-nav-legacy-actions');
var actionsResponse = $("<div>").html(response).find('.components-nav-legacy-actions').html();
$legacyActions.html(actionsResponse);
}
// Trip links are potentially coming in client-side only, initialize them!
if (placementEl[0]) {
Components.initComponentWidgets(placementEl[0], '@ta/trips.trip-link');
}
Radio('inbox').trigger('setup_handler');
}).bind(placementEl);
var _getRequestOptionsForLoginRefresh = function() {
return {
// This should not be necessary, but for some reason placements
// seems tightly coupled with the location store
skipLocation: placement.location_id <= 0,
returnTo: document.location.pathname + (document.location.search||'') + (document.location.hash||'')
};
};
// When login state changes, request the updated global nav
RegEvents.on('success', function() {
placement.requestAJAXPlacement( _onSuccessLoginRefresh, null, _getRequestOptionsForLoginRefresh());
});
// When mousing over the global nav links, show their submenus
placementEl.on('mouseenter', '.global-nav-links-container [data-element]', function(evt) {
var elmt = $(this);
var linkEl = elmt.find('a').first();
if (oldOverlay) {
oldOverlay.hide('new-overlay');
}
// Is there a submenu to show?
var menuEl = placementEl.find(elmt.data('element')).clone();
if (!menuEl.length) {
return;
}
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/flyout',
'trjs!overlays/options/closeOnMouseAway',
'trjs!overlays/position',
'trjs!overlays/options/destroyOnHide'
];
require(reqs, function(Overlay, Flyout, CloseOnMouseAway, Position, DestroyOnHide) {
var overlay = new Overlay(elmt[0], new Flyout(menuEl[0], 'global-nav-flyout global-nav-menu'), CloseOnMouseAway, Position.bottomRight([0, 1]), DestroyOnHide);
overlay.domParent = placementEl.find('.global-nav-overlays-container')[0];
overlay.show();
// For tracking clicks to submenu links, we add an attribute to the link being hovered over so we can retrieve
// the tracking prefix from the link's tracking-label attribute.
linkEl.attr('data-active-menu-trigger', true);
$(evt.currentTarget).find('.ui_tab').addClass('hovering');
overlay.on('hide', function() {
// Remove attribute used for tracking
linkEl.removeAttr('data-active-menu-trigger');
$(evt.currentTarget).find('.ui_tab').removeClass('hovering');
});
oldOverlay = overlay;
});
});
// Make sure to close the submenus
placementEl.on('mouseenter', '.subItem', function(evt) {
$(this).siblings('.expandSubItem').removeClass('active');
});
// When mousing over a menu in the dropdown, open the submenu
placementEl.on('mouseenter', '.expandSubItem', function(evt) {
var elmt = $(this);
// CX-2715 avoid opening a duplicate submenu
if (elmt.hasClass('active')) {
return;
}
elmt.addClass('active');
elmt.siblings('.expandSubItem').removeClass('active');
var submenuEl = elmt.find('.secondSubNav').clone();
var targetEl = elmt.parents('.ui_overlay');
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/flyout',
'trjs!overlays/options/closeOnMouseOut',
'trjs!overlays/options/destroyOnHide'
];
require(reqs, function(Overlay, Flyout, CloseOnMouseOut, DestroyOnHide) {
var overlay = new Overlay(elmt[0], new Flyout(submenuEl[0]), CloseOnMouseOut, DestroyOnHide);
overlay.domParent = targetEl[0];
submenuEl.css('display', 'block');
overlay.show();
});
});
// If we're opening the more menu, add any elements that are hidden or collapsed due to space
placementEl.on('mouseenter', '.global-nav-links-ellipsis', function(evt) {
var elmt = $(this);
if (oldOverlay) {
oldOverlay.hide('new-overlay');
}
var allEls = placementEl.find(".global-nav-links-container li");
var hiddenEls = allEls.filter(":hidden");
var collapsedEls = allEls.filter(function(idx, el) { return $(el).offset().top > allEls.offset().top; });
var elsToShow = $().add(hiddenEls).add(collapsedEls).clone();
var menuEl = placementEl.find('.global-nav-links-menu-more').clone();
menuEl.prepend(elsToShow);
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/flyout',
'trjs!overlays/options/closeOnMouseAway',
'trjs!overlays/position',
'trjs!overlays/options/destroyOnHide'
];
require(reqs, function(Overlay, Flyout, CloseOnMouseAway, Position, DestroyOnHide) {
var overlay = new Overlay(elmt[0], new Flyout(menuEl[0], 'global-nav-flyout global-nav-menu'), CloseOnMouseAway, Position.bottomRight([0, 1]), DestroyOnHide);
overlay.domParent = placementEl.find('.global-nav-overlays-container')[0];
overlay.show();
elmt.find('.ui_tab').addClass('hovering');
overlay.on('hide', function() {
elmt.find('.ui_tab').removeClass('hovering');
});
oldOverlay = overlay;
});
});
// Help Center MW Overlay
placementEl.on('click', '#global-nav-HelpDesk', function (evt) {
evt.preventDefault();
var sourceElem = this;
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/modal',
'trjs!overlays/options/closeOnEscape',
'trjs!overlays/position',
'trjs!overlays/options/closeOnDocClick',
'trjs!overlays/options/ajax',
'trcss!src/build/required/help_center_overlay'
];
require(reqs, function(Overlay, Modal, CloseOnEscape, Position, CloseOnDocClick, Ajax, styleSheetOK){
var overlay = new Overlay(sourceElem, [
Modal(null, '', 'help_center'),
CloseOnEscape,
Position.cssCentered(),
CloseOnDocClick,
Ajax("/uvpages/helpCenterOverlay.html")
]);
overlay.show();
radio.emit('overlay-show');
});
});
// When clicking on my trips
placementEl.on('click', '.masthead-saves', function(evt) {
if (mastheadSavesApp) {
if (oldOverlay) {
oldOverlay.hide('new-overlay');
}
mastheadSavesApp && mastheadSavesApp.destroy() && (mastheadSavesApp = null);
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
taRecord.trackEventOnPage('TopNav', 'mytrips_dropdown_cancel');
});
} else {
openMyTrips(false, false, evt.currentTarget);
$(evt.currentTarget).find('.ui_icon').addClass('hovering');
}
});
// My Trips - Remove through CX-2542
var openMyTrips = function(inCreateTripFlow, runTest3, elmt) {
if (oldOverlay) {
oldOverlay.hide('new-overlay');
}
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/flyout',
'trjs!overlays/options/closeOnDocClick',
'trjs!overlays/position',
'trjs!overlays/options/destroyOnHide',
'trjs!overlays/options/autoReposition',
'trjs!ta/Core/TA.Record'
];
require(reqs, function(Overlay, Flyout, CloseOnDocClick, Position, DestroyOnHide, AutoReposition, taRecord) {
// Get reference element
var $refElem = $('.masthead-saves');
// Create a new overlay
var overlay = new Overlay(
$refElem[0],
new Flyout('', 'global-nav-flyout global-nav-utility trips-flyout-container'),
CloseOnDocClick.withoutTouchEvents,
$refElem.data('nav-2018-enabled') ? Position.bottomLeft([($refElem.width()/2)-34, 9]) : Position.bottomLeft([-20, -3]),
DestroyOnHide,
AutoReposition
);
overlay.domParent = placementEl.find('.global-nav-overlays-container')[0];
overlay.show();
placementEl.find('.trips-flyout-container').addClass('hide-arrow'); // To make sure the overlay arrow is shown together with the masthead saves view
oldOverlay = overlay;
require(['trdust!masthead-saves-dust', 'trdust!styleguide-dust', 'trjs!masthead-saves', 'trcss!masthead-saves'],
function(dustModule, module, styleSheetOK) {
setTimeout(function () {
mastheadSavesApp = new window.MastheadSavesApp();
mastheadSavesApp.start({
inCreateTripFlow: inCreateTripFlow,
runTest3: runTest3
});
overlay.on('hide', function(evt) {
mastheadSavesApp && mastheadSavesApp.destroy() && (mastheadSavesApp = null);
taRecord.trackEventOnPage('TopNav', 'mytrips_dropdown_cancel');
if (elmt) {
$(elmt).find('.ui_icon').removeClass('hovering');
}
});
placementEl.find('.trips-flyout-container').removeClass('hide-arrow');
}, 0);
});
});
}.bind(placementEl);
// Profile Link: When clicking on a utility link, open the submenu, if one is available
placementEl.on('click', '.global-nav-utility-activator', function(evt) {
var elm = $(this);
// Is there a submenu to show?
var menuEl = placementEl.find(elm.data('element')).clone();
if (!menuEl.length) {
return;
}
if (oldOverlay) {
if (oldOverlay.sourceElement == this){
oldOverlay.isOpen() ? oldOverlay.hide('close') : oldOverlay.show();
return; // don't re-open the same overlay.
}
else {
oldOverlay.hide('new-overlay');
}
}
// Create a new overlay
menuEl = menuEl.clone();
var reqs = ['trjs!overlays/Overlay',
'trjs!overlays/styles/flyout',
'trjs!overlays/options/closeOnDocClick',
'trjs!overlays/position',
'trjs!overlays/options/autoReposition'
];
require(reqs, function(Overlay, Flyout, CloseOnDocClick, Position, AutoReposition) {
var overlay = new Overlay(elm[0], new Flyout(menuEl[0], 'global-nav-flyout global-nav-utility'), CloseOnDocClick, elm.data('nav-2018-enabled') ? Position.bottomLeft([(elm.outerWidth()/2)-34, 12]) : Position.bottomLeft([-20, -3]), AutoReposition);
overlay.domParent = placementEl.find('.global-nav-overlays-container')[0];
overlay.show();
elm.addClass('menu-open');
$(evt.currentTarget).find('.ui_icon').addClass('hovering');
overlay.on('hide', function() {
elm.removeClass('menu-open');
$(evt.currentTarget).find('.ui_icon').removeClass('hovering');
});
oldOverlay = overlay;
});
});
// Trackng: Logo clicks
placementEl.on('click', '.global-nav-logo', function() {
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
taRecord.setEvtCookie('TopNav_' + window.pageServlet, 'click', 'TAlogo', 0, '/Home');
});
});
// Hide or show the jewel as appropriate.
Radio('inbox').on(
'has_unread_conversations',
function(evnt) {
placementEl.find('.global-nav-hamburger .ui_jewel.unread').removeClass('hidden');
placementEl.find('.nav-sub-link.inbox .icon-and-jewel').removeClass('hidden');
}
);
Radio('inbox').on(
'no_unread_conversations',
function(evnt) {
placementEl.find('.global-nav-hamburger .ui_jewel.unread').addClass('hidden');
placementEl.find('.nav-sub-link.inbox .icon-and-jewel').addClass('hidden');
}
);
// Mobile Web Global Nav Persistent Icons
function checkForPersistentIcons() {
var offsetPosition = $(window).scrollTop();
if (navIcons.length) {
// A - Sideways default state: Logo and icons together, geo pill on second line
// B - Sideways 1st scroll (down): Icons animate to geo pill, logo scrolls out of view
// C - Sideways 2nd scroll (down): Icons locked to geo pill, all elements scroll out of view
//
// A - Internal default state: No logo, geo pill and icons on first line
// B - Internal 1st scroll (down): Icons locked to geo pill, all elements scroll out of view
// C - Internal 1st scroll (up): Icons animate to logo, logo scrolls into view
//
// Adjust icons to placements: Logo then Geopill when available
if (pill.is(':visible')) {
var calculatePlacementInView = placementEl.height() - offsetPosition;
// Keep icons confined to scrollable area on DW & MW (avoids snap-into-view on MW)
if (offsetPosition <= 0) {
navIcons.css({
'position': 'absolute',
'top': 0
});
}
// As long as the icons are w/n the scrollable area, animate position of icons
if (calculatePlacementInView > 0) {
if (offsetPosition > 0 && offsetPosition <= 50) {
navIcons.css({
'position': 'absolute',
'top': offsetPosition,
'bottom': 'auto'
});
}
// When the icons reach the end of the scrollable area, lock them to the geo pill
else if (calculatePlacementInView <= 50) {
navIcons.css({
'position': 'absolute',
'top': 'auto',
'bottom': 0
});
}
}
}
}
}
// Auto scroll to desired position based on traffic type
function positionSecondView() {
var hideLogo = $('.second-view', placementEl);
var offsetPosition = $(window).scrollTop();
if (navIcons.length) {
logo.css({
'display': 'block'
});
if (hideLogo.length && pill.is(':visible')) {
offsetPosition = persistentIcons.height() - logo.height();
window.scroll(0, offsetPosition);
navIcons.css({
'position': 'absolute',
'top': 'auto',
'bottom': 0
});
}
}
}
// Global Nav Persistent Single-line Header
function checkForPersistentGlobalNav() {
var persistentGlobalNav = $('.global-nav-persistent', placementEl);
if (persistentGlobalNav.length) {
persistentGlobalNav.toggleClass('fixed', $(window).scrollTop() > placementEl.offset().top);
}
}
// Default scroll position for responsive views
positionSecondView();
var positionGlobalNav = throttle(checkForPersistentGlobalNav, 100);
$(window).scroll( function() {
checkForPersistentIcons();
positionGlobalNav();
});
radioCandyBarLinks.on('border-top', function(shouldHide) {
$global_nav_bottom.toggleClass('home_ui_tabs', shouldHide);
});
// Tracking for links in submenus works by looking up the active-menu-trigger
// (link that triggered the dropdown) and using it's tracking-label as a prefix
placementEl.on('click', 'a.global-nav-link[data-tracking-label]', function(event) {
var trackingLabel = $(event.target).data('trackingLabel');
// Handle links to /# (Help Center) or links opening new window
require(['trjs!ta/Core/TA.Record'], function(taRecord) {
if("HelpDesk" === trackingLabel || event.target.target == '_blank') {
taRecord.trackEventOnPage(TRACKING_CATEGORY, 'click', trackingLabel);
} else {
taRecord.setEvtCookie(TRACKING_CATEGORY, 'click', trackingLabel, 0, event.target.href);
}
});
});
function clickLogoLink(event, target) {
event.preventDefault();
var link = target.getAttribute('data-ahref') ? asdf.asdf(target.getAttribute('data-ahref')).replace(/&/g, '&') : '/';
window.open(link, '_self');
}
return {
checkForPersistentIcons: checkForPersistentIcons,
checkForPersistentGlobalNav: checkForPersistentGlobalNav,
clickLogoLink: clickLogoLink
};
});});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',
'page-model'
], function(
placement,
$,
pageModel
) {
'use strict';
var placementEl = $('#' + placement.id);
var oldOverlay = null;
var overlays = {};
var joinCopyEl = $('.join-copy-tracking');
_trackJoinButtonEvent('view');
// Login
placementEl.on('click', 'a.login-button', function(evt) {
if (oldOverlay) {
oldOverlay.hide('replace-el');
}
var flow = $('.core-login-button').data('flowName');
var pid = $('.core-login-button').data('pid');
var flowOrigin = 'login'; // default
if ($(this).hasClass('core-login-button')) {
flowOrigin = 'join';
if($(this).hasClass('join-copy-tracking')) {
_trackJoinButtonEvent('click');
}
}
var regOptions = {
flow: flow,
pid: pid, // see https://docs.dev.tripadvisor.com/display/CMN/Product+Guide%3A+Registration+and+Login+Tracking
userRequestedForce: 'true',
locationId: require('page-model').GEO_ID
};
var extraOptions = {
extraQueryParams: {
flowOrigin: flowOrigin
}
};
regOptions = $.extend(regOptions, extraOptions);
require('ta/registration/RegOverlay').show(evt, evt.target, regOptions);
evt.preventDefault();
_trackViewEvent();
});
function _trackViewEvent(){
var property = $('.button_container').data('pageProperty1');
var action = $('.button_container').data('pageProperty2');
var attribute = $('.button_container').data('pageProperty3');
var pid = $('.button_container').data('pageProperty4');
if ( (property && property !== "") || (action && action !== "") || (attribute && attribute !=="" ) || (pid && pid !==""))
{
require('ta/Core/TA.Record').trackEventOnPage(property, action, attribute, pid);
}
}
function _trackJoinButtonEvent(eventType) {
if (joinCopyEl.hasClass('core-login-button')) {
var isControl = joinCopyEl.data('isControl');
var pid = joinCopyEl.data('trackingPid');
var pageAttribute = joinCopyEl.data('joinAttr');
var pageProperty = 'reg_trigger';
var pageAction = 'mgp_';
if (isControl && pageAttribute && 'view' === eventType) {
pageAction = 'mgp_view_control';
require('ta/Core/TA.Record').trackEventOnPage(pageProperty, pageAction, pageAttribute);
}
if (!isControl && pageAttribute && pid) {
require('ta/Core/TA.Record').trackEventOnPage(pageProperty, pageAction + eventType, pageAttribute, pid);
}
}
}
// 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,'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', 'ta/Core/TA.LocalStorage'
], function(
placement, $, api, pageModel, Radio,
Tracking, Storage
) {
'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 = ['overlays/position', 'overlays/styles/flyout', 'overlays/options/destroyOnHide', 'overlays/options/autoReposition', 'overlays/options/fade'];
var overlayMixinFn = function(Position, Flyout, DestroyOnHide, AutoReposition, Fade) {
return [
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, overlayMixinFn);
};
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) {
require(['common/DustRenderer'], function(DustRenderer) {
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.getObject(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, mixinsFn) {
oldOverlay && oldOverlay.hide('new-overlay');
var reqs = ['trjs!overlays/Overlay'].concat(mixins);
require(reqs, function(Overlay) {
var m = mixinsFn.apply(null, [].slice.apply(arguments, 1));
var overlay = new Overlay(sourceEl, m);
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/p13n/placements'], function(placements) {
var define = placements.define.bind(placements,'vr_srp_listings','handlers',['handlers']);
define(['placement',
'lib/jquery-amd',
'utils/ajax',
'ta/util/Error',
'ta/Core/TA.LocalStorage'
], function (placement,
$,
ajax,
taError,
localStorage
) {
var ABANDONED_CART_INFO = "abandonedCart";
var _placement = $('#' + placement.id);
var addAbandonedCartCell = function () {
var abandonedCart = localStorage.getObject(ABANDONED_CART_INFO);
if (abandonedCart) {
ajax({
url: '/MetaPlacementAjax',
data:
{
/* MetaPlacementAjax parameters */
placementName: 'vr_abandoned_cart_cell',
skipLocation: true,
assets: false,
packagePrivateAssets: true,
wrap: true,
/* AbandonedCartCellRenderer parameters */
metaReferer: placement.servletName,
geo: placement.location_id, // UrlArg.LOCATION_ID
locationId: abandonedCart.locationId, // UrlArg.LOCATIONID
checkIn: abandonedCart.checkIn, // UrlArg.CHECK_IN
checkOut: abandonedCart.checkOut, // UrlArg.CHECK_OUT
inquiryAdults: abandonedCart.inquiryAdults, // VacationRentalsAjax.PARAM_ADULTS
numOfKids: abandonedCart.numOfKids // VRDetailUtil.PARAM_N_KIDS
},
type: 'POST',
evalScripts: false,
success: function (data) {
if (data.indexOf("vr_listing") < 0) {
return;
}
var duplicateListing = $("#vrListing_" + abandonedCart.locationId);
if (duplicateListing) {
duplicateListing.closest(".vr_listing").remove();
}
_placement.find(".vr_listing:eq(1)").after(data);
},
error: function(e) {
taError.record(e, 'Failed to retrieve abandoned cart cell');
}
});
}
};
addAbandonedCartCell();
return {
};
});});require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["deferred/lateHandlers","handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$prp/global_nav_action_inbox/handlers'], function(placements, impl) {
window.ta.plc_global_nav_action_inbox_0_handlers = placements.load('global_nav_action_inbox','handlers.js', { 'name': 'global_nav_action_inbox', 'occurrence': 0, 'id': 'taplc_global_nav_action_inbox_0', 'location_id': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"typeahead_to_store":{"typeahead_new_location_label":"NEW LOCATION","typeahead_divClasses":null,"typeahead.aliases.travel_forums":["forum","forums","Travel Forum","Travel Forums"],"typeahead.aliases.travel_guides":["guides","city guides"],"typeahead.aliases.flight_reviews":["flight reviews","airline reviews"],"typeahead.aliases.vacation_rentals":["Vacation rentals","Vacation rental","Airbnb","Holiday rental","Holiday rentals"],"typeahead_throttle_requests":"true","typeahead.aliases.flights":["Flights","Flight","Flight to","flights to","nonstop flights","business class flights","return flights","airline flights","air flights","cheap flights","flight from","cheapest flights","flight only","one way flights","direct flights","domestic flights","air fare","cheap flights to","air flights to","airline flights to","business class flights to","cheapest flights to","direct flights to","domestic flights to","nonstop flights to","one way flights to","air fares","airfare","airfares","air fare to","air fares to","airfare to","airfares to"],"typeahead_moved_label":"MOVED","typeahead_dual_search_options":{"geoID":155019,"bypassSearch":true,"staticTypeAheadOptions":{"minChars":3,"defaultValue":"Search","injectNewLocation":true,"typeahead1_5":true,"geoBoostFix":true},"debug":false,"navSearchTypeAheadEnabled":true,"isMobileWeb":false,"enableNewPageIcon":false,"geoInfo":{"geoId":155019,"geoName":"Toronto","parentName":"Ontario","shortParentName":"Ontario","categories":{"GEO":{"url":"/Home-g155019"},"HOTEL":{"url":"/Hotels-g155019-Toronto_Ontario-Hotels.html"},"VACATION_RENTAL":{"url":"/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"},"ATTRACTION":{"url":"/Attractions-g155019-Activities-Toronto_Ontario.html"},"EATERY":{"url":"/Restaurants-g155019-Toronto_Ontario.html"},"FLIGHTS_TO":{"url":"/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"},"NEIGHBORHOOD":{"url":"/NeighborhoodList-g155019-Toronto_Ontario.html"},"TRAVEL_GUIDE":{"url":"/Travel_Guide-g155019-Toronto_Ontario.html"}}}},"typeahead_closed_label":"CLOSED","typeahead.scoped.all_of_trip":"Worldwide","typeahead.aliases.activities":["Tours and Tickets","Tours & Tickets"],"typeahead_attraction_activity_search":"true","typeahead.aliases.hotels":["hotels","hotel","lodging","places to stay","where to stay","accommodation","accommodations","hotel reviews","Hotels & Motels","Best Hotels","Best Places to Stay","Best Lodging","Best Hotels & Motels","Lodgings","Place to stay","Top Hotels","Top Places to Stay","Top Lodging","Top Hotels & Motels","Top 10 Hotels","Top 10 Places to Stay","Top 10 Lodging","Top 10 Hotels & Motels"],"typeahead.aliases.things_to_do":["Things to do","Thing to do","attractions","activities","what to do","sightseeing","Sights","Tourist Attractions","Activity","Attraction","What to see","Where to go","Where to visit","Best Attractions","Best Things to do","Best Tourist Attractions","Best Sightseeing","Top Attractions","Top Things to do","Top Tourist Attractions","Top Sightseeing","Top 10 Attractions","Top 10 Things to do","Top 10 Tourist Attractions","Top 10 Sightseeing"],"typeahead.aliases.restaurants":["food","places to eat","eateries","dining","restaurants","restaurant","Place to eat","Eatery","Where to eat","What to eat","Best Restaurants","Best Places to Eat","Best Food","Best Dining","Top Restaurants","Top Places to Eat","Top Food","Top Dining","Top 10 Restaurants","Top 10 Places To Eat","Top 10 Food","Top 10 Dining"],"typeahead.searchMore.v2":"Search for \"%\"","typeahead.searchSessionId":"452AA622C89AA7D4C4AC4EF2476362351546783277576ssid"}}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {"geopillOnHome":false}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["deferred/GeoSearch","handlers"], 'params': {"searchSessionId":"452AA622C89AA7D4C4AC4EF2476362351546783277606ssid"}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$prp/poi_details/handlers'], function(placements, impl) {
window.ta.plc_poi_details_0_handlers = placements.load('poi_details','handlers.js', { 'name': 'poi_details', 'occurrence': 0, 'id': 'taplc_poi_details_0', 'location_id': 155019, 'servletName': 'LocationPhotoDirectLink','servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$prp/lpdl_photo_carousel/handlers'], function(placements, impl) {
window.ta.plc_lpdl_photo_carousel_0_handlers = placements.load('lpdl_photo_carousel','handlers.js', { 'name': 'lpdl_photo_carousel', 'occurrence': 0, 'id': 'taplc_lpdl_photo_carousel_0', 'location_id': 155019, 'servletName': 'LocationPhotoDirectLink','servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/p13n/placements','$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': 155019, 'servletClass': 'com.TripResearch.servlet.LocationPhotoDirectLink', 'servletName': 'LocationPhotoDirectLink', 'modules': ["handlers"], 'params': {}, 'data': {}});});
require(['ta/prwidgets'], function(prwidgets) {
prwidgets.initWidgets(document);
});
</script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/js3/long_lived_global_legacy-c-v24294967295a.js' data-rup='long_lived_global_legacy'></script>
<script type='text/javascript' crossorigin='anonymous' src='https://static.tacdn.com/js3/short_lived_global_legacy-c-v23517352457a.js' data-rup='short_lived_global_legacy'></script>
<div id="IP_IFRAME_HOLDER"></div>
</body>
<!-- st: 127 dc: 0 sc: 17 -->
<!-- uid: XDIKLQokHYUAAbm1r98AAAAi -->
</html>
- Log in to post comments