Cerca e consulta articoli.

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages
Filter by Categories
adessonews

Agevolazioni - finanziamenti - immobiliare

Visure on-line - Legislazione civile e fiscale

Siamo operativi in tutta Italia

I migliori 10 hotel sul mare a San Teodoro nel 2020 (con prezzi)

[]
I migliori 10 hotel sul mare a San Teodoro nel 2020 (con prezzi) – Tripadvisor=0&&o1e12?new Date:performance.now())-t.timeStamp;”pointerdown”==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){[“click”,”mousedown”,”keydown”,”touchstart”,”pointerdown”].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);]]>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); ]]>“}”,”pageServlet”:”Hotels”,”sessionId”:”D4D07EBBC235BE9B22B0A1507E14E463″,”cdnHost”:”https://static.tacdn.com”,”quickSave”:true,”isExternalReferral”:true,”useERUserTracking”:true,”cookieDomain”:”.tripadvisor.it”,”uid”:”X7lSDwokJBoAAC4WkxEAAADq”,”hasReferral”:true,”posLocale”:”it”,”MEDIA_HTTP_BASE”:”https://media-cdn.tripadvisor.com/media/”,”user_id”:””,”loggedIn”:false,”securelyLoggedIn”:false},”DUST_GLOBAL”:{“IS_IELE8″:false,”LOCALE”:”it”,”IS_IE10″:false,”CDN_HOST”:”https://static.tacdn.com”,”DEVICE”:”desktop”,”IS_RTL”:false,”LANG”:”it”,”DEBUG”:false,”READ_ONLY”:false,”POS_COUNTRY”:187768},”JS_SECURITY_TOKEN”:”TNI1625!AMiVpsck9KKB14WnU/EJU2o60p/0QyKN6yaIFC9TaNJtb3pG+plLt09sKVZKbE/2b3WOW+yf4jj+VvKwjPqc3YLDZ3NS+HLarL/ygj9a2x+ziGjO+ruOI9zARMSNcNl0yrMx6ub2KQfO3CY+Y9aNmgvPFW5PdkKVlHYoKBkH8Zqq”,”GEO_ID”:”652016″,”hotelsInGeo”:”30″,”LOC_ID”:”652016″,”isMobile”:false,”isRtl”:false}; });]]>200&&(c=c.substring(0,Math.min(c.length,200))+”…”),i.withScope(function(e){e.setTag(“logger”,n),e.setExtra(“jQueryEvent”,c),i.captureException(a)})}else i.withScope(function(e){e.setTag(“logger”,n),i.captureException(r)})}else o&&setTimeout(function(){t(e,r,n,!1)},1e4)}function n(){require([“ta/util/Error”],function(r){for(;g.length;){var n=g.shift();n.msg.match(/(^|[^w.])ta .*defin/)||(r.record(n.error,”window.onerror:: “+n.msg,n.evt,n.data,e(n.error),{isglobal:!0}),t(n.msg,n.error,”PageLoad”,!0))}s=!0})}function o(){l=null,E=!1,d=u=null}function i(e,t,n,i,a,c){var f=c&&c.target;if(E){if((!d||a&&a.stack)&&(d=a),!w)try{w=arguments.callee}catch(e){}l?f=l:(!f||u&&f==window)&&(f=u),r(e,t,n,i,d,{target:f,callee:w}),o()}else{d=a,E=!0,u=f;try{w=arguments.callee}catch(e){}}}function a(e){e=e||window.event,i(e.message,e.filename,e.lineno,e.colno,e.error||e,e)}function c(e){e=e||window.event,l=e.target||e.srcElement,f&&clearTimeout(f),f=setTimeout(function(){f=0,l=null},1)}var d,u,l,w,f,s=!1,g=[],E=!1;window.__scriptLoadError=function(e,r){if(e instanceof HTMLScriptElement){var t=e.getAttribute(“data-rup”);if(t){r&&window.define&&window.define(t,[],function(){return{}});var n=new Error(“Error loading script tag for: “+t);throw n.level=”WARN”,n}}},window.onerror=function(e,r,t,n,o){return i(e,r,t,n,o,window.event),!window.IS_DEBUG},window.addEventListener?(window.addEventListener(“error”,a,!1),window.addEventListener(“click”,c,!0),window.addEventListener(“load”,n)):window.attachEvent&&(window.attachEvent(“onerror”,a),document.attachEvent(“onmouseup”,c),window.attachEvent(“onload”,n))}(); !function(){var e,n,t=0,a=5e3;window.uiOverlay=function(l){if(document.readyState in{complete:1,loaded:1}){var i=arguments;require([“trjs!overlays/uiOverlay”],function(e){e.apply(null,i)})}else document.addEventListener&&(e=[].slice.call(arguments),t=(new Date).getTime(),n||(n=!0,document.addEventListener(“DOMContentLoaded”,function(){Date.now()-t0&&o&&(o=o[t[0]]||o[t[0].toLowerCase()]),o?(D[i]=o,d.push(o)):n.push(i)}else n&&n.push(i);else d.push(null);if(d.length===e.length)return d}function t(e){var n,r,i,t,o=”Missing immediately required dependency: “+e;for(n=0;n<10;n++){var d=v[e];if(!d){o+=" (not specified)";break}if(d.error){o+=" ("+d.error+")";break}if(e=null,t=d.deps)for(r=0;r "+e}var f=new Error(o);return y&&!window.IS_DEBUG||!g||y&&null===window.require.caller&&/^R|react$/.test(e)||g.error(f),f}function o(e,n,t){var u,a,s,p,c,h,y,g=[],w=[],m=[];n.deps=n.deps||[],n.defname&&(p=v[n.defname],v[n.defname]=n,p&&p!==n&&p.needers&&p.needers.length&&(n.needers=(p.needers||[]).concat(n.needers||[])));for(var c=0;c=0?(g.push(u.substring(0,h)),w.push(u.substring(h+1))):(g.push(null),w.push(u));if(g=i(g,m),!g)return o(m,n);for(var c=0;c0){o(n,d);continue}r=null,d.cb&&(r=d.cb.apply(null,e)),d.deps=[],d.cb=null,d.defname&&u(d.defname,r)}catch(e){P(“Error propagating dependency resolutions: “,e)}}q=null}function f(e){return function(n){e.defname&&u(e.defname,n)}}function l(e){return function(n){e.defname&&(e.error=”Error loading ‘”+e.defname+”‘: “+n,P(e.error),e.need=0,e.deps=[],a(e.defname))}}function u(e,n){if(!D[e]){var r=v[e];if(D[e]=n,delete v[e],w[e]){var i,t=e.split(“/”),o=ta;for(“ta”===t[0]&&t.shift();t.length>1;)i=t.shift(),o[i]||(o[i]={}),o=o[i];t.length>0&&(i=t.shift(),i in o||i.toLowerCase()in o||(o[i]=n,o[i.toLowerCase()]=n))}if(E&&E(e,[],s(n)),r)for(;r.needers&&r.needers.length>0;){var f=r.needers.shift();f.need-=1,f.need||b.push(f)}b.length&&!q&&(q=setTimeout(d,0))}}function a(e){var n=v[e];if(n){var r=n.eb;for(n.deps=null,n.cb=null,n.eb=null,n.error||(n.error=”Error loading ‘”+n.defname+”‘”);n.needers&&n.needers.length>0;){var i=n.needers.shift();i.error=”Failed to load AMD module ‘”+e+”‘ which is depended upon by ‘”+i.defname+”‘”,i.need>0&&(i.need=0,b.push(i)),y&&!window.IS_DEBUG||!g||g.error(i.error)}if(null!=r)try{r(n.error)}catch(e){}}b.length&&!q&&(q=setTimeout(d,0))}function s(e){return function(){return e}}function p(e){return e&&(e.indexOf(“trjs!”)!==-1||e.indexOf(“trcss!”)!==-1||e.indexOf(“trhtml!”)!==-1||e.indexOf(“trdust!”)!==-1)}function c(){return!(“undefined”!=typeof ta&&ta.page&&ta.page.loadDeferred)}function h(){var e,n,r,t,o;if(q)return void setTimeout(h,0);if(M=!0,v&&c())for(e in v)if(v.hasOwnProperty(e)){if(n=v[e],t=[],o=[],p(n.defname))continue;if(v.hasOwnProperty(“trjs!”+n.defname))continue;if(n.deps&&n.deps.length){for(r=0;r0)return void(r=setTimeout(t.apply.bind(t,this,arguments),i));var u=t.apply(this,arguments);return e=Date.now(),u}}}); define(“vanillajs”,[],function(){return{}}); define(“mobile/lite/image-loader”,[“utils/throttle”,”vanillajs”],function(t){“use strict”;function e(e,n){n=n||document,c=e||0;var i=Array.prototype.filter.call(n.querySelectorAll(“[“+u+”]”),r());if(0!=i.length){var o=t(function(t){i=i.filter(r()),0==i.length&&(window.removeEventListener(“scroll”,o),window.removeEventListener(“resize”,o))},200);window.addEventListener(“scroll”,o),window.addEventListener(“resize”,o)}}function r(){return function(t){if(!document.body.contains(t))return!1;try{if(!i(t))return!0}catch(t){return!1}var e=t.getAttribute(u);if(e)return”IMG”===t.tagName?t.src=e:t.style.backgroundImage=”url(“+e+”)”,t.removeAttribute(u),!1;var r=t.getAttribute(l);return r&&”IMG”===t.tagName&&(t.srcset=r,t.removeAttribute(l)),!0}}function n(t){t=t||document;var e=t.querySelectorAll(“[“+u+”]”);Array.prototype.filter.call(e,r())}function i(t){var e=t.getBoundingClientRect();return e.width>0&&e.height>0&&e.top+c>=0&&e.top-c<=window.innerHeight}function o(){return function(t){var e=t.getAttribute(u);return!e||("IMG"===t.tagName?t.src=e:t.style.backgroundImage="url("+e+")",t.removeAttribute(u),!1)}}function a(t){t=t||document;var e=t.querySelectorAll("["+u+"]");Array.prototype.filter.call(e,o())}var u="data-lazyurl",l="data-lazyset",c=0;return{init:e,demandLoadImages:n,forceLoadImages:a}}); define("utils/to-array",["vanillajs"],function(){return function(n){return"number"!=typeof n.length?[n]:Array.prototype.slice.call(n)}}); define("amdloaders",["utils/to-array"],function(e){var t=[],n=[],r=[],o=[],a=[],d=null,i=null,u={},s={},c={},l={},f=null,p=!1,h=1e4,m=!1,w={},v=function(e,t,r){if("@ta/"!==e.substring(0,4)){if(u[e]){if(s[e]&&/^[-a-z]+.[-_a-zA-Z0-9]+$/.test(e))return}else u[e]=!0,n.push(e);a.push(function(n){n||!t.parsed||t.parsed(e)||(n=new Error("Dynamic load failed to define module '"+e+"'")),n&&r.error&&r.error(n)}),S()}},g=function(e,t,r){u[e]||(u[e]=!0,s[e]||t.specified(e)||n.push(e)),a.push(function(n){var o=t.parsed(e);n||s[e]||o||(n=new Error("Dynamic load failed to define '"+e+"'")),n?r.error&&r.error(n):o||define(e,[],H(!0))}),t([e],r,r.error),S()},y=function(e,n,r){t.push(e),a.push(function(e){e?r.error&&r.error(e):r(!0)}),S()},C=function(e,t,n){r.push(e),a.push(function(r){r||t.specified("trhtml!"+e)||(r=new Error("Dynamic load failed to define content '"+e+"'")),r&&n.error&&n.error(r)}),S()},L=function(e,t,n){c[e]||(c[e]=!0,l[e]||o.push(e)),a.push(function(e){e?n.error&&n.error(e):n(!0)}),S()},L=function(e,t,n){c[e]||(c[e]=!0,l[e]||o.push(e)),a.push(function(e){e?n.error&&n.error(e):n(!0)}),S()},S=function(){!f&&p&&!m&&(a.length||t.length||n.length||r.length||o.length)&&(f=setTimeout(b,0))},E=function(e,t){var n=e.getAttribute("data-rup");if(n){var r;n=n.split(",");for(var o=0;o0&&(h+="&needContent="+encodeURIComponent(String(i))),window.pageServlet&&(h+="&metaReferer="+encodeURIComponent(window.pageServlet));var w=null;try{w=new XMLHttpRequest}catch(e){try{w=new ActiveXObject("MSXML2.XMLHTTP")}catch(e){try{w=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){throw new Error("Can't create XMLHttpRequest or similar")}}}var v=!1;w.onreadystatechange=function(){v||4!==w.readyState||(v=!0,w.status>=200&&w.status<=299?x(d,w.responseText):I(d,new Error("XHR returned "+w.status)))},w.open("POST","/DemandLoadAjax",!0);try{w.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8")}catch(e){}try{w.setRequestHeader("X-Requested-With","XMLHttpRequest")}catch(e){}try{w.setRequestHeader("Accept","text/html, */*")}catch(e){}m=!0,w.send(h)}},I=function(e,t){if(m=!1,S(),e.length)for(var n=0;n=l.limit&&(l.list=l.list.slice(0,l.list.length-1),l.callbacks=l.callbacks.slice(0,l.callbacks.length-1)),l.list.unshift(e),l.callbacks.unshift(t);var r=l.handlerModule;r&&l.handlerMethod&&(l.handlerModule=null,require([r+””],function(e){n(l,e[l.handlerMethod],0)}))}}function e(l,e){if(e=Array.prototype.slice.call(e),l.handler)try{l.handler.apply(null,e)}catch(l){}else if(l.list&&l.list.length=t)return!1;l.handler=n,l.priority=t;var a=l.list;l.list=null;for(var i=0;i0&&”function”==typeof e[0]&&l(o,e.slice(1),e[0])}}}); define(“ns-exporter”,[“vanillajs”],function(r){function n(r){if(“undefined”==typeof window)return null;if(“undefined”==typeof r&&(r=window),!r)return require.defined(“ta/util/Error”)&&require(“ta/util/Error”).record(null,”Using ns-exporter:exportTo without a namespace”),null;if(“string”==typeof r){var n=window;n.ta||(ta={}),r.split(“.”).forEach(function(r){n[r]||(n[r]={}),n=n[r]}),r=n}return r}return{exportTo:function(r,e,t){if(e=n(e),!e)return!1;for(var i in r)!r.hasOwnProperty(i)||t&&i in e||(e[i]=r[i]);return!0},createNs:function(r,e,t){return!!(e=n(e))&&void(e[t]=r)}}}); define(“ta/Core/TA.FireEvent”,[“vanillajs”],function(){var n={},e={};return n.on=function(n,r){var i=e[n];i||(i=e[n]=[]),i.push(r)},n.fireEvent=function(n,r){var i=Array.prototype.slice.call(arguments),t=e[n];i.shift(),t&&t.slice(0).forEach(function(n){try{n.apply(null,i)}catch(n){window.IS_DEBUG&&(console.error||console.log)(“Exception in TA.FireEvent handler”,n)}})},n.off=function(n,r){if(r){var i,t=e[n];t instanceof Array&&(i=t.indexOf(r),i>=0&&t.splice(i,1))}else delete e[n]},n.hasEventListener=function(n){return!!e[n]},n}); define(“ta/Core/TA.Event”,[“vanillajs”,”common/trackingStreams”,”ns-exporter”,”ta/Core/TA.FireEvent”],function(vanilla,tracks,nsExporter,fireEvent){function _makeClosure(e,t){var n=this;return t=Array.prototype.slice.call(t),function(){e.apply(n,t)}}function QueueTimer(e,t){var n=0,r=0,o=[],a=0,u=!1;this.start=function(){n&&clearTimeout(n),a=Date.now()},this.end=function(i){var c=Date.now(),f=c-a;r+=f;var l=””+f+”ms [“+(i||””)+”]”,s=e+(t?”-after”:””);u?console.error(“Straggler for “+s+”: “+l):(o.push(l),n=setTimeout(function(){console.error(“Timing for “+s+”: “+r+”msn”+o.sort(function(e,t){return parseInt(e)-parseInt(t)}).join(“n”)),u=!0},2e3))}}var exports={on:fireEvent.on,off:fireEvent.off,fireEvent:fireEvent.fireEvent,hasEventListener:fireEvent.hasEventListener};exports.call=function(e,t,n,r){if(null==t)return IS_DEBUG&&alert(“You must pass the event.nnUsage:nta.call(‘ta.namespace.Class.function’, event);”),!1;if(null==e)return IS_DEBUG&&alert(“ta.call of undefined function”),!1;var o=e;if(“function”==typeof e)e=””;else if(!/^ta.[wd.]+$/.test(e))return IS_DEBUG&&alert(“Invalid function name. Must be of the form: ta.namespace.Class.function”),!1;var a=t||window.event;[“stopPropagation”,”preventDefault”].forEach(function(e){a[e]||(a[e]=function(){})}),a.stop||(a.stop=function(){a.preventDefault(),a.stopPropagation()}),n||(n=a.target||a.srcElement),n||tracks.error(null,”ta.call re-wrap fail (non-DOM element) – “+e,t,{“funcName”:e});var u=arguments,i=Array.prototype.slice.call(u,3);i.splice(0,0,a,n);try{return i.unshift({callback:_ta_call_defer,evt:a}),i.unshift(o),exports.run.apply(null,i)}catch(n){tracks.error(n,”ta.call – “+e,t)}return!1};var _ta_call_defer=function(e,t){t&&delete t.evt,exports.run.apply(null,arguments)};exports.run=function(e,t){var n=arguments,r=Array.prototype.slice.call(n,2);try{var o=exports.fn(e);if(“function”==typeof o){var a=o.apply(window,Array.prototype.slice.call(r));if(t&&t.onComplete){var u=exports.fn(t.onComplete);u&&u(a)}return a}t&&t.evt&&(t.evt.stopPropagation?t.evt.stopPropagation():t.evt.cancelBubble=!0,t.evt.preventDefault?t.evt.preventDefault():t.evt.returnValue=!1);var i=_makeClosure(t&&t.callback||exports.run,arguments);require([“trjs!ta/Core/TA.Load”],function(t){try{t.load(e,i)}catch(t){tracks.error(t,”ta.run – “+e)}})}catch(t){tracks.error(t,”ta.run – “+e)}return!1};var OneTimeFunctionQueue=function(e,t,n){function r(){u=!0,c()}var o,a=[],u=!!n,i=function(n,r){o&&o.start();try{n()}catch(n){try{tracks.error(n,”OneTimeFunctionQueue “+e+(t?”-after”:””)+(r?”-“+r:””))}catch(e){}}o&&o.end(r)},c=function(){if(a.sort(function(e,t){return e.priority-t.priority||e.subpriority-t.subpriority}),t){var e=1;a.forEach(function(t){setTimeout(i.bind(null,t.func,t.name),e++)})}else a.forEach(function(e){i(e.func,e.name)});a=[]};null!=e&&(window.addEventListener?window.addEventListener(e,r,!1):window.attachEvent&&(“DOMContentLoaded”==e?window.attachEvent(“onload”,r):”load”==e?window.attachEvent(“on”+e,function(){setTimeout(r,1)}):window.attachEvent(“on”+e,r))),this.addToQueue=function(t,n,r){return t?(“string”==typeof n&&(r=n,n=!1),void(u?i(t,r):(n=n||100+a.length,a.push({func:t,priority:n,name:r,subpriority:a.length})))):void tracks.error(null,”addToQueue for “+e+” queue – no function”)},this.executeQueue=function(){c()}},loaded=”undefined”!=typeof document&&”complete”===document.readyState,ready=”undefined”!=typeof document&&”interactive”===document.readyState||loaded,_readyQ=new OneTimeFunctionQueue(“DOMContentLoaded”,!1,ready),_loadQ=new OneTimeFunctionQueue(“load”,!1,loaded),_afterLoadQ=new OneTimeFunctionQueue(“load”,!0);ready||_loadQ.addToQueue(function(){_readyQ.executeQueue()},-999999999,”checkReadyQueue”),_loadQ.addToQueue(function(){_afterLoadQ.executeQueue()},999999999,”afterLoadQueue”),exports.queueForReady=function(e,t,n){_readyQ.addToQueue(e,t,n)},exports.queueForLoad=function(e,t,n){_loadQ.addToQueue(e,t,n)},exports.queueForAfterLoad=function(e,t){_afterLoadQ.addToQueue(e,0,t)},exports.fn=function(fn){switch(typeof fn){case”function”:return fn;case”string”:var f=!1;try{f=eval(fn)}catch(e){}if(!f){var ns=fn.split(“.”),n=ns.pop();try{ns=eval(ns.join(“.”)),f=ns&&ns._magic&&ns._magic.partial(n)}catch(e){}}if(f&&”function”==typeof f)return f}return null},exports.fireClick=function(e){if(document.createEvent){var t=document.createEvent(“MouseEvents”);t.initEvent(“click”,!0,!1),e.dispatchEvent(t)}else document.createEventObject?e.fireEvent(“onclick”):”function”==typeof e.onclick&&e.onclick()},exports.throttle=function(e,t,n,r){function o(){delete m_throttles[t],a.cb()}var a,u=(new Date).getTime();if(t in m_throttles){if(a=m_throttles[t],u-a.lastResetr?o():(a.lastReset=u,a.timeout=setTimeout(o,n))};var m_throttles={};return nsExporter.exportTo(exports,ta),exports}); define(“ta/Core/TA.LocalStorage”,[“vanillajs”,”common/trackingStreams”,”ns-exporter”],function(e,t,n){“use strict”;var r=!1,o=”taLsTest”,i=”1″,a=”TALocalStorageCurrentSessionId”,u=!1,s=”session-“,l=!1,c=[],f=[],v=[],g=function(){return!(!u&&!l)},m=function(e){return!!g()||(t.error(null,”Accessing localStorage session cookie before session logic intialized: “+e),!1)},S=function(e){return d(e,”value”)},y=function(e){return d(e,”now”)},d=function(e,t){if(!t)return null;try{var n,o=JSON.parse(r.getItem(e)||”0″);return o?o.ttl&&o.ttl+o.now<(new Date).getTime()?(r.removeItem(e),null):o.hasOwnProperty(t)?(r.setItem("512",o[t]),n=r.getItem("512"),r.removeItem("512"),n):null:null}catch(e){}return null},h=function(e,t){try{var n=JSON.parse(e||"0");return n&&n.hasOwnProperty(t)?n[t]:null}catch(e){return null}},w=function(e){try{var t=JSON.parse(r.getItem(e)||"0");return t?t.ttl&&t.ttl+t.now<(new Date).getTime()?(r.removeItem(e),null):t.value:null}catch(e){}return null},I=function(e){try{r.removeItem(e)}catch(e){}},p=function(e,t){var n=y(e);if(t&&n&&n<(new Date).getTime()-t)try{r.removeItem(e)}catch(e){}},O=function(e){try{var t=r.getItem(e);if(null!==t&&void 0!==t)return!0}catch(e){}return!1},T=function(e,t,n){try{r.setItem(e,JSON.stringify({ttl:n||0,now:(new Date).getTime(),value:t}))}catch(e){}},k=function(e){if(l=!0,!e)return t.error(null,"Attempting to initialize localStorage with invalid sesion key: "+e),!1;if(!V())return!1;if(u=S(a),!u||u!=e){u=e,T(a,u);var n=S("latestPageServlet");n&&T("sessionEntryServlet",n),E(),O(a)&&require.defined("ta/Core/TA.Store")&&require("ta/Core/TA.Store").store("isFirstSessionPageView",!0)}for(var r=0;r0;if(this.delegate&&this.delegate.hasListeners)return this.delegate.hasListeners(e)}return!1},t.prototype.emit=function(e,t){if(this.events[e]){var r=Array.prototype.slice.call(arguments,1);this.events[e].slice(0).forEach(function(t){if(t)try{t.apply(this,r)}catch(t){“string”==typeof t&&(t=new Error(t));var i=”Error in event handler for “+e;if(require.defined(“ta/util/Error”))require(“ta/util/Error”).record(t,i);else{var s=require.defined(“ta”)&&require(“ta”);s&&s.log&&s.log.error?s.log.error(t,i):s&&s.m&&s.m.recordJSError?s.m.recordJSError([t,i]):”undefined”!=typeof console&&(console.error||console.log)(i,t)}}},this)}else this.delegate&&this.delegate.emit&&this.delegate.emit.apply(delegate,arguments);return this},t}); define(“ta/registration/RegEvents”,[“mixins/Events”],function(e){return new e(“success”)}); define(“post_rollup_globals_shim”,[“page-model”,”ns-exporter”,”common/trackingStreams”,”ta/registration/RegEvents”],function(e,r,t,i){var n=e.session;i.on(“success”,function(){e.session.loggedIn=!0});var o={uid:n.uid,userLoggedIn:n.loggedIn,userSecurelyLoggedIn:n.securelyLoggedIn};r.exportTo(o,”ta”);try{var s=XMLHttpRequest.prototype,u=s.send;s.send=function(e){try{var r=new RegExp(“^(/[^/]|(http(s)?:)?//”+window.location.hostname+”)”);if(this._url&&r.test(this._url)){var t=n.uid;if(require.defined(“redux-init”)){var i=require(“redux-init”);i&&i.tracking&&i.tracking.uid&&(t=i.tracking.uid)}this.setRequestHeader(“X-Puid”,t)}}catch(e){}u.call(this,e)};var a=s.open;s.open=function(e,r){return this._url=r,a.apply(this,arguments)}}catch(e){t.error(e,”Error intercepting AJAX for tracking”)}}); define(“ta/Core/TA.PageVisibility”,[“vanillajs”],function(e){“use strict”;function n(){a=!1;for(var e in s)s.hasOwnProperty(e)&&s[e]()}function t(){a=!0;for(var e in f)f.hasOwnProperty(e)&&f[e]()}function d(){var e=document[c]?f:s;for(var n in e)e.hasOwnProperty(n)&&e[n]()}function i(){“undefined”==typeof document[c]?document.addEventListener?(document.addEventListener(“focus”,n,!1),document.addEventListener(“blur”,t,!1)):(document.attachEvent(“onfocus”,n),document.attachEvent(“onblur”,t)):document.addEventListener(r,d),m=!0}function o(){“undefined”==typeof document[c]?document.removeEventListener?(document.removeEventListener(“focus”,n,!1),document.removeEventListener(“blur”,t,!1)):(document.detachEvent(“onfocus”,n),document.detachEvent(“onblur”,t)):document.removeEventListener(r,d),a=!1,m=!1}function u(e,n){var t=e.indexOf(n);return t>=0?e.splice(t,1):null}var c,r,f=[],s=[],m=!1,a=!1;return”undefined”!=typeof document.hidden?(c=”hidden”,r=”visibilitychange”):”undefined”!=typeof document.mozHidden?(c=”mozHidden”,r=”mozvisibilitychange”):”undefined”!=typeof document.msHidden?(c=”msHidden”,r=”msvisibilitychange”):”undefined”!=typeof document.webkitHidden&&(c=”webkitHidden”,r=”webkitvisibilitychange”),{addFocusListener:function(e){s.push(e),m||i()},addBlurListener:function(e){f.push(e),m||i()},removeFocusListener:function(e){e?u(s,e):s.length=0,0===s.length&&0===f.length&&o()},removeBlurListener:function(e){e?u(f,e):f.length=0,0===s.length&&0===f.length&&o()},hidden:function(){return”undefined”!=typeof document.hidden?document.hidden:a}}}); define(“utils/bounceRateUtils”,[“ta/Core/TA.PageVisibility”,”common/trackingStreams”,”ta/Core/TA.LocalStorage”,”ta/util/SessionStorage”,”page-model”],function(e,t,n,r,a){“use strict”;function i(t){if(t&&t.length&&n.canUseSession()&&r.canUseSessionStore()){S=t;var i=c(t),f=a.session.hasReferral,g=f&&a.session.isExternalReferral,j=!window.performance||!performance.navigation||0===performance.navigation.type,v=!f&&j;if(v||g||!i)o(t),s(t,0);else if(!O(S)){var d=r.getObject(h);null!==d&&0!==d||(d=Date.now()-r.getObject(m)),r.setObject(m,Date.now()),s(t,d)}O(S)||(e.addFocusListener(l),e.addBlurListener(b),n.onValueChange(w,u))}}function o(e){r.setObject(d,v()),r.setObject(m,Date.now()),r.setObject(h,0);for(var t=0;t0&&(n=n.substring(0,n.indexOf(“:”))),n}function l(){var e=Array.prototype.slice.call(arguments);require([“trjs!ta/p13n/placements-ajax”],function(n){n.loadDynamicPlacement.apply(n,e)})}function c(){var e=Array.prototype.slice.call(arguments);require([“trjs!ta/p13n/placements-ajax”],function(n){n.loadDynamicPlacement.apply(n,e)})}var i=new t(function(e){var n={};if(e)for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a]);return n.requestAJAXPlacement||(n.requestAJAXPlacement=function(e,a,t,r){require([“trjs!ta/p13n/placements-ajax”],function(l){l.requestAJAXPlacement(n,e,a,t,r)})}),{placement:n}}),o={“define”:i.define,”redefine”:i.redefine,”load”:i.load,”evCall”:i.evCall,”loadDynamicPlacement”:l,”enableAutoRefresh”:c,”getTemplateBaseFromPlacementName”:r};return n.exportTo(o,”ta.p13n.placements”),o}); define(“utils/object/set-props”,[“vanillajs”],function(){“use strict”;return function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t]);return n}}); define(“utils/object/shallow-copy”,[“utils/object/set-props”,”vanillajs”],function(t){“use strict”;return function(r){var e;if(“object”!=typeof r||null===r)return r;if(r.constructor===Array){e=[];for(var n=0;n1?n-1:0),i=1;i1?t-1:0),r=1;r2?r-2:0),u=2;u2?r-2:0),u=2;u1?t-1:0),r=1;r=0&&e.push(n);return e}function a(t){var e=ta.page.getDates(t);return e&&e[0]?new n(e[0]):null}var u=”zu”,T={CHECKIN:{queryString:null,pathString:null},CHECKOUT:{queryString:null,pathString:null},STAYDATES:{children:[“CHECKIN”,”CHECKOUT”],queryString:”staydates”,pathString:u+”s”},EATERY:{queryString:”eaterydate”,pathString:u+”r”},DEPARTURE:{queryString:null,pathString:null},RETURN:{queryString:null,pathString:null},ROUNDTRIP:{children:[“DEPARTURE”,”RETURN”],queryString:”rtdates”,pathString:u+”t”},ONEWAYFLIGHT:{queryString:”oneway”,pathString:u+”o”},LEG_1:{queryString:”leg1date”,pathString:u+”1″},LEG_2:{queryString:”leg2date”,pathString:u+”2″},LEG_3:{queryString:”leg3date”,pathString:u+”3″},ATTRACTION:{queryString:”attrdate”,pathString:u+”a”},ATTRACTION_FROM:{queryString:null,pathString:null},ATTRACTION_TO:{queryString:null,pathString:null},ATTRACTIONRANGE:{children:[“ATTRACTION_FROM”,”ATTRACTION_TO”],queryString:”attrrange”,pathString:u+”e”},VPDATES:{children:[“VPDEPARTURE”,”VPRETURN”],queryString:”vpdates”,pathString:null},VPDEPARTURE:{queryString:null,pathString:null},VPRETURN:{queryString:null,pathString:null}};return T.getStartDateType=function(t){var e=i(t);if(0==e.length){var n=T[t].children;return n&&n.length>0?n[0]:t}return T[e[0]].children[0]},T.getEndDateType=function(t){var e=i(t);if(0==e.length){var n=T[t].children;return n&&n.length>0?n[n.length-1]:t}var r=T[e[0]];return r.children[r.children.length-1]},T.isChildDateType=function(t){return i(t).length>0},T.isSingleDateType=function(t){var e=T[t];return!(T.isChildDateType(t)||e&&e.children&&e.children.length>0)},T.getParents=i,T.isHotelDateType=function(t){return i(t).indexOf(“STAYDATES”)>=0},T.isRoundTripDateType=function(t){return i(t).indexOf(“ROUNDTRIP”)>=0},T.isAttractionRangeDateType=function(t){return i(t).indexOf(“ATTRACTIONRANGE”)>=0},T.isVacationPackagesDateType=function(t){return i(t).indexOf(“VPDATES”)>=0},T.allowsSameDayRange=function(t){return T.isAttractionRangeDateType(t)||T.isRoundTripDateType(t)},T.isMultiCityDateType=function(t){return”LEG_1″==t||”LEG_2″==t||”LEG_3″==t},T.isStartDateType=function(t){var e=i(t);return 0!=e.length&&0==T[e[0]].children.indexOf(t)},T.isEndDateType=function(t){var e=i(t);if(0==e.length)return!1;var n=T[e[0]];return n.children.indexOf(t)==n.children.length-1},T.getStartDate=function(t){var e=T.getStartDateType(t);return null==e?ta.page.getDates(t)[0]:ta.page.getDates(e)[0]},T.getEndDate=function(t){var e=T.getEndDateType(t);return null==e?ta.page.getDates(t)[0]:ta.page.getDates(e)[0]},T.getMinEnabledDate=function(t){if(T.isHotelDateType(t)||T.isRoundTripDateType(t)){var i=e.retrieve(“multiDP.minCheckInDate”);if(i)return new n(r.fromString(i))}else{if(“LEG_1″==t)return a(“ONEWAYFLIGHT”);if(“LEG_2″==t)return a(“LEG_1”)||a(“ONEWAYFLIGHT”);if(“LEG_3″==t)return a(“LEG_2”)||a(“LEG_1”)||a(“ONEWAYFLIGHT”);if(“ATTRACTION_TO”==t)return a(“ATTRACTION_FROM”)}return null},T.flattenType=function(t){var e=T[t];return e?e.children?e.children.slice(0):[t]:[]},T.getCorrespondingDateType=function(t){switch(t){case”CHECKIN”:return”CHECKOUT”;case”CHECKOUT”:return”CHECKIN”;case”DEPARTURE”:return”RETURN”;case”RETURN”:return”DEPARTURE”;case”ATTRACTION_FROM”:return”ATTRACTION_TO”;case”ATTRACTION_TO”:return”ATTRACTION_FROM”;case”VPDEPARTURE”:return”VPRETURN”;case”VPRETURN”:return”VPDEPARTURE”;default:return null}},T}); define(“mixins/page-dates/Base”,[“vanillajs”,”ta”,”mixins/page-dates/Utils”,”mixins/page-dates/DateTypeStore”],function(e,r,t,n){“use strict”;function a(e){return e instanceof Date&&!isNaN(e.getTime())}function i(e){if(!n[e])throw”Invalid date type: “+e}function s(e){var r=[];for(var t in n)n.hasOwnProperty(t)&&n[t].children&&n[t].children.indexOf(e)>=0&&r.push(t);return r}function o(e,r){var a=n[e],i=””;if(a.children)for(var s=0,o=a.children.length;s0?”_”:””)+t.dateToIso(r[a.children[s]])}else{if(“_”===r[e])return”_”;i+=t.dateToIso(r[e])}return i}function h(e,r){var t=n[e];if(t.children){for(var a=0,i=t.children.length;a=n}}function r(n){return function(){return t()n()},portrait:function(){return n()>t()},currentBreakpoints:function(){return u.filter(function(t){return”function”==typeof c[t]&&c[t]()})},is:function(t,n,e){var r=”function”!=typeof t&&c[t]?c[t]:t;return function(t,i){return r()?”undefined”!=typeof t?t:n:”undefined”!=typeof i?i:e}}};return c}); define(“mixins/page-dates/pop-calendar”,[“ta”,”common/trackingStreams”,”common/Radio”,”ta/support/Qualtrics”,”ta/Core/TA.Store”,”ta/Core/TA.LocalStorage”,”ta/util/SessionStorage”,”utils/responsive”],function(e,t,n,r,i,a,o,s){function d(){j=!1}function u(t){b=!!t.popFromDefault,D=!!t.popFromVisibleOnly,P=t.popFromVisibleOnlyBreakpoint,k=!!t.datesWereDefaulted,y=t.popCalendarType,T=!!t.hasMetaMarketingDefaultDates,E=!!t.qualtricsSurveyEnabled,O=!!t.isDetailPage,A=”Vacation_Packages”===window.pageServlet,e.page.on(“datepickerRejected”,d),e.page.on(“dateSelected”,d)}function c(e){if(a.enabled&&a.get(“popCalendarAfterRedirectedFromIB”))return a.remove(“popCalendarAfterRedirectedFromIB”),!0;if(!k||R)return!1;if(i.retrieve(“suppressCalendarPop”))return!1;if(!y)return!1;if(E&&r&&(r.canDisplay()||r.seenThisPageView())){if(!require.defined(“page-model”))return!1;if(require(“page-model”).isMobile)return!1}if(e&&D&&(!P||s.is(P,!0,!1)())&&!g(e))return!1;switch(y){case”doNot”:return!1;case”untilClosedPerServletType”:return!l();case”untilClosed”:return!p();case”always”:return!0}return b&&k}function p(){return o.canUseSessionStore()&&!!o.getObject(C)}function l(){var e=o.canUseSessionStore()&&o.getObject(C);return e&&!!e[A?”vp”:O?”detail”:”list”]}function f(){if(o.canUseSessionStore()){var e=o.getObject(C)||{};e[A?”vp”:O?”detail”:”list”]=!0,o.setObject(“pop-calendar-dismissed”,e),n(“pop-calendar”).emit(“dismissed”)}}function g(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}function m(){return T}function S(n){j=!0,e.page.gatherDates(n),R=!0,t.trackEvent("DATEPICKER","auto-popped-calendar-shown",window.pageServlet),t.trackEvent("calendar","in_view","autopop")}function v(){return R}function h(){return j}function w(){k=!1}var C="pop-calendar-dismissed",b=!1,D=!1,P="",k=!1,E=!1,T=!1,y="",O=!1,R=!1,j=!1,A=!1;return{init:u,shouldPop:c,shouldPopMetaMarketing:m,popCalendar:S,wasPoppedThisPageLoad:v,isShowing:h,setUserEnteredDates:w,setDismissedThisSession:f}}); define("mixins/page-dates/default-dates",["ta","mixins/mixin","mixins/Events","mixins/page-dates/pop-calendar","mixins/page-dates/DateTypeStore","common/trackingStreams","vanillajs","ta/Core/TA.Event"],function(e,t,a,n,i,o,d,r){"use strict";function s(e){n.init(e),g=!!e.datesWereDefaulted,f=!!e.refreshLocalStorage,D=e.localStorageTTL,m=!0,S.emit("init")}function p(e){"function"==typeof e&&(m?e():S.on("init",e))}function u(t,a,d){function s(t){n.wasPoppedThisPageLoad()&&(S.emit("poppedCalendarDismissed",t),n.setDismissedThisSession(),e.page.off("datepickerRejected",s))}function p(){if(f&&(g&&o.trackEvent("DATEPICKER","undated_to_default_dated"),!a)){var t=n.shouldPop(f);(t||n.shouldPopMetaMarketing())&&(t&&S.emit("popFromDefault"),e.page.on("datepickerRejected",s),n.popCalendar(f))}}var u=d?d:"STAYDATES";if(e.page.usingUnifiedDates){e.page.hasDates(u)||e.page.clearDates(u),c=e.page.getDates(i.getStartDateType(u))[0],l=e.page.getDates(i.getEndDateType(u))[0];var f=t.querySelector('[data-datetype="'+i.getStartDateType(u)+'"]');e.page.on("dateSelected",function(a,i,d){var r,p=c&&l,f=e.page.getDates(u)[0],D=e.page.getDates(u)[1];if(t.contains(a)&&(!p&&e.page.hasDates(u)?r="undated_to_manually_dated":f==c&&D==l||(n.setUserEnteredDates(),e.page.off("datepickerRejected",s),g?(r="default_dated_to_manually_dated",g=!1):r="manually_dated_to_manually_dated"),c=f,l=D,r)){var m="";a&&a.getAttribute("data-picker-location")&&(m=a.getAttribute("data-picker-location"),document.querySelector("#PERSISTENT_TRIP_SEARCH_BAR.fixed")&&(m+="_persistent")),o.trackEvent("DATEPICKER",r,m)}}),"loading"===document.readyState?window.addEventListener("DOMContentLoaded",p):p(),r.on("specialOfferClosed",function(){a||f&&n.shouldPop(f)&&n.popCalendar(f)})}}var c,l,g=!1,f=!1,D=0,m=!1,S={init:s,onInit:p,apply:u,usingDefaults:function(){return g},shouldRefreshLocalStorage:function(){return f},getLocalStorageTTL:function(){return D}};return t(S,new a("popFromDefault"))}); define("ta/util/Deferred",["vanillajs","ns-exporter"],function(e,r){"use strict";function t(e){l.prototype[e]=function(r,t){return i(this,e,t?r.bind(t):r)}}for(var n=["success","failure","always","progress"],u={"resolved":["success","always"],"rejected":["failure","always"]},l=function(){},a=0;ae}function u(){return a.adults=97&&e=65&&e=48&&e”,0,0,0,0,0,0,”`”,”__2D__”,”X”,”<","slot",0,"ShowUrl","Owners",0,"[","q",0,"MemberProfile",0,"ShowUserReviews",'"',"Hotel",0,0,"Expedia","Vacation","Discount",0,"UserReview","Thumbnail",0,"__2F__","Inspiration","V","Map",":","@",0,"F","help",0,0,"Rental",0,"Picture",0,0,0,"hotels",0,"ftp://"],"x":[0,0,"J",0,0,"Z",0,0,0,";",0,"Text",0,"(","x","GenericAds","U",0,"careers",0,0,0,"D",0,"members","Search",0,0,0,"Post",0,0,0,"Q",0,"$",0,"K",0,"W",0,"Reviews",0,",","__2E__",0,0,0,0,0,0,0,"{","}",0,"Cheap",")",0,0,0,"#",".org"],"z":[0,"Hotels",0,0,"Icon",0,0,0,0,".net",0,0,"z",0,0,"pages",0,"geo",0,0,0,"cnt","~",0,0,"]","|",0,"tripadvisor","Images","BookingBuddy",0,"Commerce",0,0,"partnerKey",0,"area",0,"Deals","from","\",0,"urlKey",0,"'",0,"WeatherUnderground",0,"MemberSign","Maps",0,"matchID","Packages","E","Amenities","Travel",".htm",0,"!","^","G"]},r="",a=0;a=200&&this.status=0&&w&&w>0)return H*w>=6e4?-1:(H*(w+1)>=6e4&&(T=!0),H);var e=w||0;return 0<=e&&e0?w:w+1):(o.fireEvent(e,{},-1),l.reply("initialPollComplete",function(){return!0}),l.emit("polling_complete"),o.fireEvent(R+"-polling-complete"))}function d(){N=N>0?N+1:1}function f(){if(N>1)return void(N-=1);N=0;var e=g||[];g=null;for(var t;t=e.shift();)try{t()}catch(e){}}function v(){return y}e=e||{};var h,m,g,w=1,y=0,E=!1,T=!1,x=0,P=null,S={},j=!1,A={},b={},q={},M=!!e.evaluateScripts,R=e.placement||”page”,N=0,H=e.pollTimeoutOverride||-1,L=Date.now(),C=e.tracker,O=(e.inspector,s[e.pollIntervalName||”normal”]||s.normal),X=function(e){return e?decodeURIComponent(e.replace(/+/g,” “)):e},U=function(e){var t,n;h=e.split(“#”)[0],m=h.split(“?”)[0],t=h.split(“?”)[1]||””,n=t.split(“&”);for(var r=0;r=0;t–){var n=e[t];delete A[n],E=!0}},Q=function(e,t){if(!t)return!1;for(var n=!1,r=Object.keys(t||{}),o=r.length-1;o>=0;o–){var a=r[o];e[a]!==t[a]&&(n=!0),e[a]=t[a]}return n&&(E=!0),n},z=function(e,t){if(!t)return!1;for(var n=Object.keys(t||{}),r=n.length-1;r>=0;r–){var o=n[r];e[o]=t[o]}},B=function(){$(!1)},G=function(e){var t,n,r,o=(e&&e.getAttribute(“data-paramNames”)||””).split(“,”);for(t=0;t=0?(j=!0,E&&y++,E=!1,r=++x,window.setTimeout(function(){ee(r)},i),a&&p()):(o.fireEvent(“hac-could-not-complete”),ne())}},ee=function(e){if(!P&&j&&e===x){if(N>0)return g=g||[],g.push(ee.bind(this,e)),void(window.console&&console.log&&console.log(“request held while updates are paused”));var r=++w,o=t.extend({},A,b),a=null;o.reqNum=r,o.isLastPoll=T,o.paramSeqId=y,o.waitTime=Date.now()-L,C&&C.start(r),q.UNKNOWN||(a=[],t.each(q,function(e,t){t&&a.push(e)}),o.changeSet=a.toString()),i.session.uid&&(o.puid=i.session.uid),j=!1,b={},S=q,q={};var l;try{l=new XMLHttpRequest}catch(e){try{l=new ActiveXObject(“MSXML2.XMLHTTP”)}catch(e){try{l=new ActiveXObject(“Microsoft.XMLHTTP”)}catch(e){throw new Error(“Can’t create XMLHttpRequest or similar”)}}}l.onreadystatechange=c.bind(l,r),l.open(“POST”,m,!0),”responseType”in l&&(l.responseType=”document”);try{l.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded; charset=utf-8″)}catch(e){}try{l.setRequestHeader(“X-Requested-With”,”XMLHttpRequest”)}catch(e){}try{l.setRequestHeader(“Accept”,”text/html, */*”)}catch(e){}l.send(n.toQueryString(o)),P=l}},te=function(e){if(N>0)return g=g||[],g.push(te.bind(this,e)),void(window.console&&console.log&&console.log(“update held while updates are paused”));var t;”string”==typeof e?(t=document.createElement(“div”),t.innerHTML=e):t=e;var n=j;if(P=null,S={},M){var r=t.querySelectorAll(“script”);r=r?Array.prototype.slice.call(r):[];for(var i=0;i0)return g=g||[],g.push(ne.bind(this)),void(window.console&&console.log&&console.log(“error held while updates are paused”));var e=j;P=null,S={},e?ee(++x):o.fireEvent(R+”-repoll-failed”),p()};return o.on(R+”-repoll-not-done”,B),o.on(R+”-repoll-ajax-params”,G),U(e.pageUrl||window.location.href),e.ajaxParams&&(A=t.extend(A,e.ajaxParams)),setTimeout(function(){J()||o.fireEvent(R+”-polling-complete”)},0),{setPageUrl:U,repoll:D,pause:d,resume:f,getAjaxParams:W,setAjaxParams:I,setAjaxParamsNoPoll:k,setAjaxParamsNoPollForSP:F,setOneTimeParams:K,removeAjaxParams:_,setNotDone:B,isUpdatePending:J,getLastRequestNum:V,setScriptsEval:Y,isScriptsEvalEnabled:Z,fireTargetEvents:a,getParamSeqId:v}};return c}); define(“commerce/offerclickEvents”,[“mixins/Events”,”vanillajs”],function(e){“use strict”;return new e(“beforeClick”,”afterClick”)}); define(“utils/stopevent”,[“vanillajs”],function(){return function(e){return e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault?e.preventDefault():e.returnValue=!1),!1}}); define(“utils/waiton”,[“vanillajs”],function(){return function(n,i,t){function o(){–u0&&(e=setTimeout(function(){u=0,o()},t)))):void i()}}); define(“ta/popups/PollForPartnerLoad”,[“common/trackingStreams”],function(t){var e=function(n,E,r,a,o){n&&setTimeout(function(){var C=null,c=(new Date).getTime()-E.getTime();try{C=n.document}catch(t){}C?c>2e4?t.trackEvent(“COMMERCE_CLICK”,”PROVIDER_TIMEOUT”,r||””,c):n.closed?t.trackEvent(“COMMERCE_CLICK”,”PROVIDER_CLOSED”,r||””,c):e(n,E,r,a,o):t.trackEvent(“COMMERCE_CLICK”,”PROVIDER_LOADED”,(o||window.pageServlet||””)+”|”+(a||””)+”|”+(r||””),c)},100)};return e}); define(“ta/Browser”,[“vanillajs”,”ns-exporter”],function(e,n){var t,r={},i=function(){return navigator.userAgent.indexOf(“MSIE 10.0”)>=0},o=r.isIE11orHigher=function(){return navigator.userAgent.toLowerCase().indexOf(“trident/7.”)>-1||navigator.userAgent.toLowerCase().indexOf(“msie 11.”)>-1};return r.isIE9orHigher=function(){return navigator.appVersion.indexOf(“MSIE 9”)>=0||i()||o()},r.isIE10Metro=function(){return i()&&r.isIEMetro()},r.isIEMetro=function(){var e=null,n=o(),t=n?127:0,r=window.innerWidth==screen.width&&screen.height-window.innerHeight===t;try{e=!!new ActiveXObject(“htmlfile”)}catch(n){e=!1}return!e&&r&&(n||i())},r.isIE=function(){return navigator.userAgent.indexOf(“MSIE”)>=0},r.isChrome=function(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)},r.getFlashVersion=function(){if(“number”!=typeof t){var e;try{e=navigator.plugins[“Shockwave Flash”].description}catch(n){try{e=new ActiveXObject(“ShockwaveFlash.ShockwaveFlash”).GetVariable(“$version”)}catch(e){}}var n=(e||”0 r0″).match(/d+/g);t=Number(n[0]||”0.”+n[1])||0}return t},r.isChromeIncognito=function(e){var n=window.RequestFileSystem||window.webkitRequestFileSystem;return n&&”function”==typeof n?void n(window.TEMPORARY,100,function(){e(“normal”)},function(){e(“incognito”)}):void e(“undetermined”)},n.exportTo(r,”ta.browser”),r}); define(“utils/json-to-url”,[“vanillajs”],function(){“use strict”;return function(n){return n?Object.keys(n).map(function(e){return encodeURIComponent(e)+”=”+encodeURIComponent(n[e])}).join(“&”):””}}); define(“mobile/lite/ajax-request”,[“utils/json-to-url”,”vanillajs”],function(t){function e(t){var e=document.createElement(“a”);return e.href=t,e.protocol!==window.location.protocol||e.host!==window.location.hostname}return function(s,o){“object”==typeof s&&(o=s,s=o.url),o=o||{};var n=o.method||o.type||”GET”,r=”string”==typeof o.data?o.data:t(o.data);return new Promise(function(t,a){var i=new XMLHttpRequest;i.onreadystatechange=function(){this.readyState===XMLHttpRequest.DONE&&(200===this.status?(o.success&&o.success(this.responseText,this.status,i),t(this.responseText)):(o.error&&o.error(i,this.status,this.statusText),a(this.responseText)),o.complete&&o.complete(i,this.statusText))},”get”==n.toLowerCase()&&”string”==typeof r&&r.length>0&&(s+=(“?”==r[0]?””:”?”)+r,r=null),i.open(n,s,!o.synchronous),i.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”),e(s)||i.setRequestHeader(“X-Requested-With”,”XMLHttpRequest”),i.send(r)})}}); define(“utils/cookieutils”,[“vanillajs”,”mobile/lite/ajax-request”],function(t,e){“use strict”;var o=function(t){return”undefined”!=typeof t&&null!==t},n=function(t){return t.replace(/([-.*+?^${}()|[]/\])/g,”\$1″)},i=function(){var t=window.location.host.match(/.tripadvisor..*/);return null!=t?t=t[0]:null},a=function(t,e,n){if(o(n.doNotEscape)&&n.doNotEscape||(e=encodeURIComponent(e)),e+=n.domain?”; domain=”+n.domain:”; domain=”+i(),n.path&&(e+=”; path=”+n.path),n.duration){var a=new Date;a.setTime(a.getTime()+1e3*n.duration),e+=”; expires=”+a.toGMTString()}n.secure&&(e+=”; secure”);var r=”%1%”;o(n.ignoreVersion)&&n.ignoreVersion&&(r=””),document.cookie=t+”=”+r+e};return{addPidToCookie:function(t){o(t)&&0!==t.length&&a(“NPID”,t,{path:”/”,duration:5,ignoreVersion:!0})},roybatty:function(){var t,o=i(),n=window.taSecureToken;if(window.taEarlyRoyBattyStatus)window.taEarlyRoyBattyStatus>1&&ta&&ta.trackEventOnPage&&ta.trackEventOnPage(“early_roy_batty”,”confirm”,””,0,!0);else if(t=this.getCookie(“roybatty”)){var a=t.split(“,”);if(a&&2==a.length){var r=parseInt(a[1],10);document.setCookie(“roybatty”,n+”,”+r,{domain:o,ignoreVersion:!0,path:”/”})}}else document.setCookie(“roybatty”,n+”,1″,{domain:o,ignoreVersion:!0,path:”/”}),e({method:”POST”,url:”/CookiePingback”})},getCookie:function(t){var e=document.cookie.match(“(?:^|;)\s*”+n(t)+”=([^;]*)”);return e?(e=e[1],0===e.indexOf(“%1%”)&&(e=e.substring(3)),decodeURIComponent(e)):null},setCookieInSeconds:a}}); define(“commerce/cookieSetter”,[“vanillajs”,”utils/cookieutils”],function(e,i){function o(){var e=require.defined(“page-model”)&&require(“page-model”);e&&e.session.uid&&i.setCookieInSeconds(n,e.session.uid,{duration:10,ignoreVersion:!0})}var n=”comm_puid”;return o}); 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(e,t,r,o,n,i,c,a,l,u){“use strict”;function f(e){if(“string”!=typeof e)return e;var t=o.asdf(e.trim()).replace(/&/g,”&”);if(“undefined”!=typeof window&&window.crPageServlet&&(t=t.replace(E,”$1from=HotelDateSearch_”+crPageServlet),E.test(t)||(t+=”&from=”+crPageServlet)),”undefined”!=typeof document&&document.location&&document.location.href){var r=o.getUrlPageLoc(document.location.href);r&&(t+=”&pageLocId=”+r)}var n=o.getUrlQueryArgs(t);return t=t.replace(P,””),{url:t,isBooking:t.indexOf(“/StartBooking”)>=0||t.indexOf(“/MobileHotelBookingRoomSelection”)>=0,ttP:n.tp,ttIK:n.ik,ttAOK:n.aok,slot:n.slot,providerName:n.p,ik:n.ik,locId:n.d||n.geo,area:n.area,contentId:n.src_0||n.src,trackingContext:n.btc,selectedPrice:n.priceShown,offerStr:n.gosox||””,openBehavior:n.ob}}function d(e){“function”==typeof e&&I.push(e)}function s(){_=!0}function m(t){return”same_tab”!==t.openBehavior&&((!t.isBooking||!a.isIE10Metro())&&”undefined”!=typeof e)}function p(){try{document.domain=document.domain}catch(e){return!0}return!1}function v(e,t){t=f(t);var r=p(),o=window.open(r?t.url:””,”_blank”);return!o&&”undefined”!=typeof Browser&&Browser.ie&&t.isBooking?(l.setPIDCookie(38822),void k(e,t)):(r||(o?o.location=t.url:window.location=t.url),I.forEach(function(r){r(e,t,function(){})}),void c(o,new Date,t.providerName,t.slot))}function k(t,r){r=f(r);var o=250;i(I.map(function(e){return e.bind(null,t,r)}),function(){“undefined”!=typeof e&&e.retrieve&&e.retrieve(“ta.isIE11orHigher”)?window.open(r.url,”_self”,null,!1):window.location.href=r.url},o)}function g(t,o,i,c,a){if(t&&!c&&n(t),i=f(i),_){if(i&&B===i.offerStr)return!1;setTimeout(function(){B=null},1e3),B=i&&i.offerStr}if(r.emit(“beforeClick”,i),e.store&&e.retrieve&&o&&i&&i.ttIK&&i.selectedPrice){var l=e.retrieve(“CLICK_PRICE_DOUBLE_CHECK”);l||(l={}),l[i.ttIK]=String(i.selectedPrice),e.store(“CLICK_PRICE_DOUBLE_CHECK”,l)}return require.defined(“ta/Core/TA.Event”)&&setTimeout(function(){try{require(“ta/Core/TA.Event”).fireEvent(“metaLinkClick”,o,i.isBooking?”TripAdvisor”:i.providerName,i.area,i.locId,i.contentId,”new_tab”,i.slot),i.isBooking&&require(“ta/Core/TA.Event”).fireEvent(“ibOfferClick”,o)}catch(e){require.defined(“ta/util/Error”)&&require(“ta/util/Error”).record(e,”Commerce click tracking failed”,null,{servlet:window.pageServlet,url:i.url,area:i.area})}},300),(!b||!b(i))&&(u(),”same_tab”===a?k(o,i):m(i)||”new_tab”===a?v(o,i):k(o,i),r.emit(“afterClick”,i),!1)}function w(e){b=e}function C(e,t){var r=t.getAttribute(“data-clicktoken”);r&&require([“ta/page”],function(){g(e,t,r)})}var E=new RegExp(“(&|\?)from=[^&]*”),P=new RegExp(“(&|\?)ob=[^&]*”),I=[],b=null,B=null,_=!1,S={expandToken:f,clickEvent:g,compElementClick:C,registerAsyncPreclick:d,setPreClickHandler:w,enableMultiTapPrevention:s};return t(S,r)}); define(“utils/browserutils”,[“vanillajs”],function(e){“use strict”;var o={},n=window.navigator?window.navigator.userAgent.toLowerCase():””,a=window.navigator?window.navigator.platform.toLowerCase():””,r=n.match(/(opera|ie|firefox|chrome|crios|trident|version)[s/:]([wd.]+)?.*?(safari|version[s/:]([wd.]+)|$)/)||[null,”unknown”,0],i=”ie”==r[1]&&document.documentMode;return”trident”===r[1]&&(r[1]=”ie”,r[2]=parseInt(r[2],10)+4),o.name=”version”==r[1]?r[3]:r[1],o.version=i||parseFloat(“opera”==r[1]&&r[4]?r[4]:r[2]),o.Platform={name:n.match(/ip(?:ad|od|hone)/)?”ios”:(n.match(/(?:webos|android)/)||a.match(/mac|win|linux/)||[“other”])[0]},o[o.name]=!0,o[o.name+parseInt(o.version,10)]=!0,o.Platform[o.Platform.name]=!0,o}); define(“historyinject/HistoryInject”,[“utils/browserutils”,”common/trackingStreams”],function(i,t){“use strict”;function n(i,n){if(!r(n))return!1;var o=i.options.pageAction||”back_button_clicked”,e=i.options.productAttr||””;t.setEvtCookie(i.module,o,e,””,i.backUrl),window.location.replace(n.state.backUrl)}function o(){return window.history&&”pushState”in window.history}function e(i,t){t&&t.call(i);var o=n.bind(null,i);return window.addEventListener(“popstate”,o),window.addEventListener(“hashchange”,o),!!i.isNewTab()&&(i.urlSuffix=i.options.query?i.originalSearch:i.originalHash,void i.updateState())}function r(i){return i.state&&i.state.backUrl}function a(){var t=null;return”ios”===i.Platform.name&&(i.chrome||i.crios)?t=”iOSMobileChrome”:i.android&&i.firefox&&(t=”androidFirefox”),t?new Promise(function(i){require([“trjs!historyinject/browser/”+t],function(t){i(t)})}):Promise.resolve(null)}function l(i,t){try{if(t&&t.backButtonUrl)return t.backButtonUrl;if(window.opener&&window.opener.location&&window.opener.location.pathname){if(window.opener.location.origin===window.location.origin){if(window.opener.location.href&&”/Search”===window.opener.location.pathname)return window.opener.location.href;if(“H_NEARBY_HISTORY_INJECT”!==i&&”EXP_NEARBY_HISTORY_INJECT”!==i&&”RESTAURANT_NEARBY_HISTORY_INJECT”!==i&&”R_R_HISTORY_INJECT”!==i&&”A_R_HISTORY_INJECT”!==i)return window.opener.location.pathname;if(window.opener.location.href&&window.opener.location.pathname.includes(“/Hotel_Review”))return window.opener.location.pathname}}else if(document.referrer&&document.referrer.length>0){var n=new URL(document.referrer);if(n.hostname===document.location.hostname){if(“H_NEARBY_HISTORY_INJECT”!==i&&”EXP_NEARBY_HISTORY_INJECT”!==i&&”RESTAURANT_NEARBY_HISTORY_INJECT”!==i&&”R_R_HISTORY_INJECT”!==i&&”A_R_HISTORY_INJECT”!==i)return n.pathname;if(window.opener.location.href&&window.opener.location.pathname.includes(“/Hotel_Review”))return n.pathname}}}catch(i){}return null}var c=function(i,t){this.originalPath=window.location.pathname,this.originalHash=window.location.hash,this.originalSearch=window.location.search,this.backUrl=null,this.backUrlPlaceholder=”-BackUrl”,this.urlSuffix=””,this.options=t||{},this.module=i,this.mixin=a(),this.backUrl=l(i,this.options)};return c.prototype.isNewTab=function(){return 1===window.history.length},c.prototype.updateState=function(){var i=this.originalPath+this.backUrlPlaceholder;if(!(this.backUrl.indexOf(“WidgetEmbed”)>=0)){if(this.backUrl.indexOf(“.htm”)>=0){var t=this.originalPath.split(“.htm”);i=t[0]+this.backUrlPlaceholder+”.htm”+t[1]}history.replaceState({backUrl:this.backUrl},document.title,i+this.urlSuffix),history.pushState({},document.title,this.originalPath+this.urlSuffix)}},c.prototype.init=function(){o()&&this.backUrl&&this.mixin.then(e.bind(null,this))},c}); define(“common/page-filters”,[“babel/babel-helpers”,”mixins/mixin”,”mixins/Events”],function(t,e,n){“use strict”;function r(t,e){var n=v[t];return n&&e(n)}function i(t,e,n,r){return v[t]=new e(t,n,r),this}function u(t){return r(t,function(t){return t.isModified()})}function o(e,n){var i=this;r(e,function(r){var u=r.get();r.set(n);var o=r.get();u!==o&&i.emit(“change”,t.defineProperty({},e,{from:u,to:o}))})}function c(e,n){var i=this;r(e,function(r){var u=r.get();r.clearAll(),n.forEach(function(t){return r.set(t)});var o=r.get();u!==o&&i.emit(“change”,t.defineProperty({},e,{from:u,to:o}))})}function s(t){return t?r(t,function(t){return t.get()}):Object.keys(v).reduce(function(t,e){return t[e]=v[e].get(),t},{})}function a(t,e){return!!(t&&e&&Array.isArray(e))&&r(t,function(t){return t.isSelected(e)})}function f(e,n){var i=this;r(e,function(r){var u=r.get();r.clear(n);var o=r.get();u!==o&&i.emit(“change”,t.defineProperty({},e,{from:u,to:o}))})}function l(e){var n=this;if(!e){var i=this.get(),u=Object.keys(v).reduce(function(t,e){var n=v[e];if(!n.excludeClearAll){var r=n.get();n.clearAll(),r!=n.get()&&(t[e]={from:r,to:n.get()})}return t},{});return void(JSON.stringify(i)!==JSON.stringify(u)&&this.emit(“change”,u))}r(e,function(r){var i=r.get();r.clearAll();var u=r.get();i!==u&&n.emit(“change”,t.defineProperty({},e,{from:i,to:u}))})}function h(t,e){return r(t,function(t){return t.parse(e)})}function p(t,e){return r(t,function(t){return t.format(e)})}var v={},d=”,”,y=”#”,g=function(t,e,n){var r=this,i=!1,u=e;this.param=t,this.excludeClearAll=n,this.set=function(t){i=i||u!==t,u=t},this.get=function(){return u},this.clear=function(t){return r.set(“”)},this.clearAll=function(){return r.set(“”)},this.parse=function(t){return t?[t]:[]},this.format=function(t){return t},this.isModified=function(t){return i},this.isSelected=function(t){return t.every(function(t){return u===t})}},m=function(t,e,n){var r=this,i=!1;this.parse=function(t){return”string”!=typeof t?[]:t.split(d).filter(function(t){return””!==t}).map(function(t){return t.split(y)}).filter(function(t){return t.length>0&&””!==t[0]}).map(function(t){return{key:t[0],value:t[1]||””}})},this.format=function(t){return Object.entries(t).map(function(t){return t.join(y)}).join(d)};var u=e?this.parse(e).reduce(function(t,e){return t[e.key]=e.value,t},{}):{};this.param=t,this.excludeClearAll=n,this.set=function(t){return r.parse(t).map(function(t){i=i||!u.hasOwnProperty(t.key)||u.hasOwnProperty(t.key)&&u[t.key]!==t.value,u[t.key]=t.value})},this.get=function(){return r.format(u)},this.clear=function(t){“string”==typeof t&&t.split(d).filter(function(t){return””!==t}).map(function(t){u.hasOwnProperty(t)&&(i=i||u.hasOwnProperty(t),delete u[t])})},this.clearAll=function(){return u={}},this.isModified=function(t){return i},this.isSelected=function(t){return t.every(function(t){return u.hasOwnProperty(t.key)&&u[t.key]===t.value})}},O=function(t,e,n){var r=!1;this.parse=function(t){return t.split(d).filter(function(t){return!!t})},this.format=function(t){return t.join(d)};var i=e?this.parse(e).reduce(function(t,e){return t[e]=!0,t},{}):{};this.param=t,this.excludeClearAll=n,this.set=function(t){var e=t.split(“,”);for(var n in e)if(e.hasOwnProperty(n)){var u=e[n];r=r||!i.hasOwnProperty(u),i[u]=!0}},this.get=function(){return Object.keys(i).join(d)},this.clear=function(t){var e=t.split(“,”);for(var n in e)if(e.hasOwnProperty(n)){var u=e[n];r=r||i.hasOwnProperty(u),delete i[u]}},this.clearAll=function(){r=r||Object.keys(i).length>0,i={}},this.isModified=function(t){return r},this.isSelected=function(t){return t.every(function(t){return i.hasOwnProperty(t)&&i[t]})}},A=function(t,e,n){var r=this;this.parse=function(t){},this.format=function(t){return””};var i=!1;this.param=t,this.excludeClearAll=n,this.set=function(t){return i=!0},this.get=function(){return null},this.clear=function(t){i&&(P.emit(“cleared-“+r.param),i=!1)},this.clearAll=function(){return r.clear(null)},this.isModified=function(t){return!1},this.isSelected=function(t){return!1}},P=e({SingleValueFilter:g,MultiValueFilter:O,FauxFilter:A,KeyValueFilter:m,register:i,set:o,isModified:u,setAll:c,get:s,isSelected:a,clear:f,clearAll:l,parse:h,format:p},new n(“change”));return P}); define(“sponsoredlisting/HotelsSponsoredListingPolling”,[“vanillajs”,”ta/Core/TA.FireEvent”],function(e,r){function s(e){e.removeAjaxParams([n]),r.fireEvent(“hotels.sponsored_listings_refreshed”)}var n=”sl_candidate_map”,o=function(e,r,s){var o,a,i=e.getAjaxParams()[n];o=i?JSON.parse(i):{};for(a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);var t={};t[n]=JSON.stringify(o),e.setAjaxParamsNoPollForSP(t),s&&e.setNotDone()};return{updateSponsoredListingAjaxParam:o,refreshSponsoredListings:s}}); define(“hotels/ListFilters”,[“babel/babel-helpers”,”common/page-filters”,”sponsoredlisting/HotelsSponsoredListingPolling”],function(e,r,t){function o(e){if(!e)return!0;var t=Object.keys(e);return 0===t.length||t.some(function(t){return!r.isSelected(t,e[t])})}function n(){var e=r.get(),t=Object.keys(e).filter(function(r){return e[r]}).map(function(r){return r+”=”+e[r]});return t.join(“&”)}function i(e,i){function l(){var e=i.reloadUrl&&window.location.pathname!==i.reloadUrl&&o(i.urlFilters);if(e){if(“REDIRECT”===i.reloadUrlBehavior){var r=i.reloadUrl.indexOf(“?”)>=0?”&”:”?”,t=n(),l=””+i.reloadUrl+r+t;window.location=l}else”REPLACE”===i.reloadUrlBehavior?window.history&&window.history.replaceState&&window.history.replaceState(i.reloadUrl,””,i.reloadUrl):window.history&&window.history.pushState&&window.history.pushState(i.reloadUrl,””,i.reloadUrl);return i.reloadUrlBehavior}return null}function a(){for(var o=r.get(),n={offset:0},a=[“cat”,”zff”],s=0;s0?”-“+w.join(“-“)+”-“:””;window.__REDUX_STORE__.dispatch({type:”SET_FILTERS”,filters:p})}}i.filtersInit.forEach(function(e){var t=”multi”===e.type?r.MultiValueFilter:r.SingleValueFilter;r.register(e.name,t,e.value,”true”===e.excludeFromClearAll)}),r.on(“change”,a)}return{init:i}}); define(“utils/ResponsiveEvents”,[“mixins/Events”,”utils/responsive”,”utils/throttle”,”vanillajs”],function(n,e,t){“use strict”;function r(n,e,t){var r=n.filter(function(n){return e.indexOf(n)<0}),i=e.filter(function(e){return n.indexOf(e)<0});return t?r.reverse().concat(i.reverse()):r.concat(i)}function i(){var n=document.body.clientWidth;if(n!=o){var t=n>o,i=e.currentBreakpoints(),f=r(u,i,t);f.forEach(function(n){var e=t?”over-“:”under-“;c.emit(e+n)}),f.length&&c.emit(“breakpoint”,i[0]),u=i,o=n}}var o=document.documentElement.clientWidth,u=e.currentBreakpoints(),f=[“breakpoint”];e.breakpoints.forEach(function(n){f.push(“over-“+n,”under-“+n)});var c=n.create(f);return c.onOver=function(n,e){c.on(“over-“+n,e)},c.onUnder=function(n,e){c.on(“under-“+n,e)},c.offOver=function(n,e){c.off(“over-“+n,e)},c.offUnder=function(n,e){c.off(“under-“+n,e)},window.addEventListener(“resize”,t(i,100)),c}); define(“responsive/breakpoint-tracker”,[“babel/babel-helpers”,”common/trackingStreams”,”utils/ResponsiveEvents”,”utils/responsive”,”vanillajs”],function(e,n,t,i){“use strict”;function r(e){var t=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,r=”mobile”===e?320:i.widths[e];n.trackEvent(“Breakpoint”,r,t)}function o(){s||(r(i.currentBreakpoints()[0]),t.on(“breakpoint”,r),s=!0)}var s=!1;return{init:o}}); define(“ajax-request”,[“utils/json-to-url”,”utils/urlutils”],function(t,e){function r(t){var r=document.createElement(“a”);r.href=t;var s=e.getParts(r.href);return s.protocol!==window.location.protocol||s.host!==window.location.hostname}function s(t,e,s){try{r(t)||e.setRequestHeader(“X-Requested-With”,”XMLHttpRequest”)}catch(t){}try{var n=s[“content-type”]||”application/x-www-form-urlencoded; charset=utf-8″;e.setRequestHeader(“Content-Type”,n)}catch(t){}try{var o=s.accept||”text/html, */*”;e.setRequestHeader(“Accept”,o)}catch(t){}try{var a=s[“x-requested-by”];a&&e.setRequestHeader(“X-Requested-By”,a)}catch(t){}}function n(){try{return new XMLHttpRequest}catch(t){try{return new ActiveXObject(“MSXML2.XMLHTTP”)}catch(t){try{return new ActiveXObject(“Microsoft.XMLHTTP”)}catch(t){throw new Error(“Can’t create XMLHttpRequest or similar”)}}}}return function(e,r){“object”==typeof e&&(r=e,e=r.url),r=r||{};var o=r.method||r.type||”GET”,a=”string”==typeof r.data?r.data:t(r.data);return new Promise(function(t,c){var u=n(),i=!1;u.onreadystatechange=function(){i||u.readyState!==XMLHttpRequest.DONE||(i=!0,u.status>=200&&u.status0&&(r.error&&r.error(u,this.status,this.statusText),c(this.responseText)),r.complete&&r.complete(u,this.statusText))},”get”===o.toLowerCase()&&”string”==typeof a&&a.length>0&&(e+=(“?”===a[0]?””:”?”)+a,a=null),u.open(o,e,!r.synchronous),s(e,u,r),u.send(a)})}}); define(“utils/JsCapabilitiesTracker”,[“ta/util/Cookie”,”page-model”,”ajax-request”,”ta/Core/TA.LocalStorage”,”ta/util/SessionStorage”],function(e,t,o,a,r){“use strict”;function n(){var e=s(),a={gac:”Js_And_Cookie_Capabilities_Tracking”,gaa:e,gani:!0,gass:t.session.pageServlet,gasl:t.GEO_ID,gapu:t.session.uid};o({method:”POST”,url:”/GARecordCrawlable”,data:a,synchronous:!1})}function s(){var t=!!e.readRaw(i),o=!!window.chrome,n=!(!window.navigator||!window.navigator.geolocation),s=!!window.Worker,c=!!window.applicationCache,d=!(!window.history||!window.history.pushState),u=window.history&&”number”==typeof window.history.length?window.history.length:-1,g=document.createElement(“canvas”),l=!!g.getContext,w=!(!g.getContext||!g.getContext(“2d”))&&”function”==typeof g.getContext(“2d”).fillText,y=document.createElement(“video”),h=!!y.canPlayType,v=!!h&&””!==y.canPlayType(‘video/ogg; codecs=”theora, vorbis”‘),S=!!h&&””!==y.canPlayType(‘video/webm; codecs=”vp8, vorbis”‘),b=document.createElementNS&&document.createElementNS(“http://www.w3.org/2000/svg”,”svg”),m=!(!b||!b.createSVGRect),C=a.enabled,f=!(!a.enabled||!a.getObject(p)),T=r.canUseSessionStore(),k={hasRoybatty:t,hasChrome:o,supportGeolocation:n,supportWebWorker:s,supportOffline:c,supportHistory:d,historyLength:u,supportSvg:m,supportCanvas:l,supportCanvasText:w,supportVideo:h,supportOgg:v,supportWebM:S,supportLocalStorage:C,hasDefaultDatePops:f,supportSessionStorage:T};return JSON.stringify(k)}var i=”roybatty”,p=”ddservletpops”;return{track:n}}); define(“ta/util/trackHistoryInject”,[“common/trackingStreams”],function(t){return function(){window.history&&window.history.state&&(window.history.state.fromBackClick&&(delete window.history.state.fromBackClick,t.trackEventOnPageOnce(“commerce_history_injection”,”back_button_clicked”)),window.history.state.fromBABackClick&&(delete window.history.state.fromBABackClick,t.trackEventOnPageOnce(“ba_history_injection”,”back_button_clicked”)))}}); define(“common/poll-tracker”,[“babel/babel-helpers”,”mixins/mixin”,”mixins/Events”],function(n,t,e){“use strict”;function r(n){return n.reduce(function(n,t){return n.concat(t)})}function l(n){return n.pollGroups[n.pollGroups.length-1]}function u(n,t){for(var e=n.pollGroups.length-1;e>=0;e–){var r=n.pollGroups[e][t-1];if(r)return r}return null}function o(n){for(var t=0;t2&&void 0!==arguments[2]?arguments[2]:null;a.trackEvent(“map_pin”,t,c,n)}function i(){n(!0,null)}function o(t){a.trackEvent(“map_view”,”open_requested”,t)}function r(t){window.setTimeout(function(){n(!0,t.offsetWidth)},0)}function p(t,c){n(!1,t.offsetWidth),a.trackEvent(“map_view”,”map_close_num_pins”,c)}function l(t,n){var c={loaded:t,timeSpentOnMap:n};a.trackEvent(“map_view”,”map_close_load_test”,JSON.stringify(c))}function k(t){a.trackEvent(“map_view”,”map_impl”,t)}function u(t){c(“map_view”,”empty”,t)}function m(t,a){c(“map_view”,a?”redo_auto”:”redo”,t)}function _(){a.trackEvent(“map_view”,”grow”)}function v(){a.trackEvent(“map_view”,”shrink”)}function f(t){c(“map_move”,”pan”,t)}function d(t){c(“map_move”,”zoom_in”,t)}function s(t){c(“map_move”,”zoom_out”,t)}function M(t,a){e(“hover”,t,a)}function w(t,a){e(“click”,t,a)}function C(t){a.trackEvent(“map_detail_card”,”photo_click”,t,null)}function E(t){a.trackEvent(“map_detail_card”,”saveCTA_click”,t,null)}function h(t){a.trackEvent(“map_detail_card”,”title_click”,t,null)}function S(t){a.trackEvent(“map_card_cta”,”click”,t,null)}function O(t){a.trackEvent(“map_carousel”,”swipe”,t,null)}function P(t,n){a.trackEvent(“also_show”,t,n)}return{trackMapOpen:r,trackMapClose:p,trackMapFirstOpen:i,trackMapOpenRequested:o,trackRedoSearch:m,trackMapGrow:_,trackMapShrink:v,trackNoPins:u,trackMapPan:f,trackMapZoomIn:d,trackMapZoomOut:s,trackMapPinHover:M,trackMapPinClick:w,trackMapDetailCardPhotoClick:C,trackMapDetailCardSaveClick:E,trackMapDetailCardTitleClick:h,trackMapDetailCardCTAClick:S,trackCarouselSwipe:O,trackAlsoShowClick:P,trackMapLoadedWhenClosed:l,trackMapProvider:k}}); require([“ta/p13n/placements”],function(r){var a=r.define.bind(r,”map_provider_loader”,”handlers”,[“handlers”]);a([“placement”,”maps/v3/providers/providerShim”,”maps/v3/tracking”],function(r,a,e){“use strict”;function i(){var i=”trjs!”+r.params.map_impl;if(r.params.includeRollup){var p=”trjs!”+r.params.map_rollup;r.require([i,p],function(i,p){if(!p)throw”Unable to load map rollup”;i.configureLibrary(r.params.mapConfig||{}),e.trackMapProvider(r.params.map_rollup),a.registerProvider(i)})}else r.require([i],function(i){i.configureLibrary(r.params.mapConfig||{}),e.trackMapProvider(r.params.map_rollup),a.registerProvider(i)})}a.providerRequested()?i():a.on(“providerRequested”,i)})}); define(“utils/classnameUtils”,[“vanillajs”],function(){function s(s){return e[s]?e[s].lastIndex=0:e[s]=new RegExp(“(\s|^)”+s+”(\s|$)”,”g”),e[s]}var a={},e={};return a.hasClass=function(a,e){return!!a&&(a.classList?a.classList.contains(e):s(e).test(a.className))},a.addClass=function(s,e){s&&e&&(s.classList?s.classList.add(e):a.hasClass(s,e)||(s.className+=” “+e))},a.removeClass=function(a,e){a&&e&&(a.classList?a.classList.remove(e):a.className=a.className.replace(s(e),” “))},a.toggleClass=function(s,e,n){s&&(n||void 0===n&&!a.hasClass(s,e)?a.addClass(s,e):a.removeClass(s,e))},a.getParentByClassname=function(s,e){for(var n=s&&s.parentNode;n;n=n.parentNode)if(a.hasClass(n,e))return n;return null},a}); define(“dynamic-placement/loader”,[“babel/babel-helpers”,”ajax-request”,”page-model”,”utils/to-array”,”amdloaders”],function(e,t,a,r,n){“use strict”;function l(e){var t=document.createElement(“div”);t.innerHTML=e;var a=r(t.querySelectorAll(“style, link, script”)).reduce(function(e,t){return e[“STYLE”===t.tagName||”LINK”===t.tagName?”styles”:”scripts”].push(t),t.parentNode.removeChild(t),e},{styles:[],scripts:[]});return Object.assign(a,{html:t.innerHTML})}var s=1e4;return function(e,r){return t({url:”/DynamicPlacementAjax”,data:Object.assign({placementRollUps:e,geo:a.GEO_ID,detail:a.LOC_ID,occOffset:s++,updateType:”full”,metaReferer:a.session.pageServlet},n.getLoadedFilesParams(),r)}).then(l)}}); define(“dynamic-placement/dom-renderer”,[“babel/babel-helpers”,”amdloaders”],function(e,n){“use strict”;return function(e){return function(r){var t=r.scripts,l=r.styles,s=r.html;return n.installStyles(l),e.innerHTML+=s,n.installScripts(t)}}}); define(“maps/v3/map-loader”,[“babel/babel-helpers”,”dynamic-placement/loader”,”dynamic-placement/dom-renderer”],function(e,n,r){“use strict”;function a(){return o||(o={},o.promise=new Promise(function(e){o.resolve=e})),o}function t(e){s&&l&&a().resolve(e.querySelector(“.mapContainer”))}var o=null,l=!1,s=!1;return{waitForMap:function(){return a().promise},resolveBaseMapPlacement:function(e){l=!0,t(e)},resolveMapPageContainer:function(e){s=!0,t(e)},createMap:function(e,a,t){n(e,{servletName:a.servletName,servletClass:a.servletClass}).then(r(t))}}}); define(“maps/v3/models/eventTypes”,[“babel/babel-helpers”,”utils/objutils”],function(e,E){“use strict”;var n={PIN_CLICK:”pinClick”,PIN_HOVER_START:”pinHoverStart”,PIN_HOVER_END:”pinHoverEnd”,PIN_INTENT_HOVER:”pinHoverLong”,PIN_UPDATED:”pinUpdated”},t={CLICK:”mapClick”,CENTER_CHANGE:”centerChange”,PAN_START:”panStart”,ZOOM_CHANGE:”zoomChange”,RENDER_COMPLETE:”renderComplete”},R={PRERENDER:”preRender”,RENDER:”render”,POSTRENDER:”postRender”,BEFORE_CLOSE:”beforeClose”,CLOSE:”close”,AFTER_CLOSE:”afterClose”,LOAD_CONTENT_START:”loadContentStart”,CONTENT_RECEIVED:”contentReceived”,CONTENT_FAILED:”contentFailed”,LOAD_CONTENT_END:”loadContentEnd”,LOADING_START:”loadingStart”,LOADING_END:”loadingEnd”,REFRESH_CONTENT:”refreshContent”,DIMENSIONS_RESIZE:”dimensionsResize”,SIZE_CHANGE_REQUESTED:”sizeChangeRequested”,REDO_SEARCH_REQUESTED:”redoSearchRequested”,PIN_DATA_REQUESTED:”pinDataRequested”,DEMAND_LOAD_REQUESTED:”demandLoadRequested”,PIN_SELECTION_CHANGED:”pinTypeChanged”},C={CAROUSEL_CARD_SELECTED:”carouselCardSelected”},N=[];E.each(n,function(){N.push(this)}),E.each(t,function(){N.push(this)});var _={pin:n,map:t,state:R,providerEvents:N,external:C};return E.deepFreezeCopy(_)}); define(“maps/v3/mapStateController”,[“babel/babel-helpers”,”mixins/Events”,”utils/objutils”,”maps/v3/models/eventTypes”,”maps/v3/baselineShims/mapStateControllerShim”],function(n,t,e,i,a){“use strict”;function s(n){for(var t in n)if(n.hasOwnProperty(t)&&n[t])return!1;return!0}function o(n,t){return n+”:”+t}function p(){var n=this,i=new t(m),a={};this.on=i.on.bind(i),this.off=i.off.bind(i),this.emit=i.emit.bind(i),this.initialOpenMapOptions=null,this.loadingContent=!1,this.autoscaleEnabled=!0,this.autoscalingNow=!1,this.mapOpen=!1,this.cacheBustValue=null,this.mapHasOpened=!1,this.pinsShown=!1,this.openMap=function(t){t?n.initialOpenMapOptions=Object.assign({},n.initialOpenMapOptions,t):t=e.extend({},n.initialOpenMapOptions),n.mapHasOpened||(n.mapHasOpened=!0,t.refreshPrices=!0,n.emit(O.LOADING_START,t)),n.emit(O.PRERENDER,t),n.emit(O.RENDER,t),n.mapOpen=!0,n.emit(O.POSTRENDER,t)},this.closeMap=function(t){n.emit(O.BEFORE_CLOSE,t),n.emit(O.CLOSE,t),n.emit(O.AFTER_CLOSE,t),n.mapOpen=!1},this.toggleMap=function(t,e){“undefined”==typeof e&&(e=!n.mapOpen),e?n.openMap(t):n.closeMap(t)},this.on(O.LOAD_CONTENT_START,function(t,e){a[o(t,e)]=!0,n.loadingContent||(n.loadingContent=!0,n.emit(O.LOADING_START))}),this.on(O.LOAD_CONTENT_END,function(t,e){delete a[o(t,e)],n.loadingContent&&s(a)&&(n.loadingContent=!1,n.emit(O.LOADING_END,t,e))})}var O=i.state,l=e.deepFreeze({MAP_INIT:”mapInit”,DEMAND_LOAD_ON_INIT:”demandLoadOnInit”,PINS:”pins”,ROUTE:”route”}),r={},m=[];e.each(O,function(){m.push(this)});var u={forMap:function(n){if(r[n])return r[n];var t=new p;return r[n]=t}};return u.EVENT=O,u.CONTENT_TYPE=l,a.resolve(u),u}); define(“utils/HistoryManager”,[],function(){“use strict”;function t(){function t(){return(new Date).getTime()+””+Math.random()}function i(t){var i=t.state;if(!a&&i&&i.id){var e=i.id,s=n[e];s&&s(i.data)}}var n={},e={},a=!1;this.pushState=function(i,e,a,s){var r=t();n[r]=s,i.id=r,history.pushState(i,e,a)},this.replaceState=function(i,e,a,s){var r=t();n[r]=s,i.id=r,history.replaceState(i,e,a)},this.addCallback=function(t,i){e[t]||(e[t]=[]),e[t].push(i)},this.removeCallback=function(t,i){if(e[t]){var n=e[t].indexOf(i);n>=0&&e[t].splice(n,1)}},this.doCallbacks=function(t){e[t]&&e[t].each(function(t){t()})},this.isSupported=function(){return”undefined”!=typeof history&&”pushState”in history},this.disableCallbacks=function(t){a=t},window.addEventListener(“popstate”,i)}return t}); require([“ta/p13n/placements”],function(e){var t=e.define.bind(e,”dh_sort_filter_entry”,”handlers”,[“handlers”,”tablet/tablet”,”trcss!tablet/tablet”]);t([“babel/babel-helpers”,”placement”,”ta/page”,”ta/Core/TA.FireEvent”,”common/trackingStreams”,”common/page-filters”,”common/Radio”,”ta/prwidgets”,”utils/classnameUtils”,”maps/v3/map-loader”,”maps/v3/mapStateController”,”utils/HistoryManager”],function(e,t,r,o,l,a,n,i,s,c,d,u){function p(e){e&&(A.innerHTML=e.innerHTML,i.initWidgets(A),R=null)}function v(e,t){e&&t&&(t.innerHTML=e.innerHTML)}function m(e,t){var r=t&&t.querySelectorAll(“.toggle:checked”);v(e,t),r&&r.forEach(function(e){var t=document.getElementById(e.id);t&&(t.checked=!0)})}function b(e,t){if(!t||t.className.match(D))return!1;var r=t.getAttribute(“data-sortOrder”);if(r){f(r);var o=A.querySelector(“.sort-summary”),l=t.getAttribute(“data-label”);o&&l&&(o.innerHTML=l),x&&x.hide()}}function f(e){if(e){var t=window.location.pathname;t&&t.indexOf(L)>0&&(T.replaceState({},document.title,t.replace(L,””)),r.setRepollPageUrl(window.location.href)),r.setSortOrder(e);var o=A.querySelector(“.sort_dropdown”);if(o){var a=o.getAttribute(“data-url”);a&&window.location.href.indexOf(a)<0&&T.pushState({data:0},"",a)}l.trackEvent("sort_h","click",e);var n=Array.prototype.slice.call(A.querySelectorAll(".sort_option")),i=Array.prototype.slice.call(N.querySelectorAll(".sort_option"));n.concat(i).forEach(function(t){var r=t.className,o=r.replace(D,"");t.getAttribute("data-sortOrder")===e&&(o+=" active"),r!==o&&(t.className=o)})}}function h(e,t){var r=t.className;if(!r.match(I))return l.trackEvent("List_sort","click_open"),t.className=r+" loading",j.emit("openSort"),H?void require(["babel/babel-helpers","lib/jquery-amd","overlays/Overlay","overlays/position/fullscreen","overlays/styles/windowshade","overlays/styles/tray","overlays/options/closeOnWindowshadeClick","overlays/options/slideInOut"],function(e,o,l,a,n,i,s,c){t.className=r,x||(x=new l(E,a(),new i(null,null,"",null,null,N),n("dark",null,"fade_short"),c("from_bottom",500,100),s)),x.show(),o(N).find(".sort_option .toggle:checked").prop("checked",!1)}):void require(["babel/babel-helpers","lib/jquery-amd","utils/responsive","utils/ResponsiveEvents","overlays/Overlay","overlays/position/fullside","overlays/styles/windowshade","overlays/options/keepInDom","overlays/styles/modal","overlays/options/closeOnWindowshadeClick","overlays/options/slideInOut"],function(e,o,l,a,n,i,s,c,d,u,p){t.className=r,x||(x=new n(E,i.right(),new d(null,null,"collapsed_content",null,null,N),s("dark"),p("from_right"),u)),x.show()})}function y(e,t,r){var o=t.className;o.match(I)||(j.emit("openFilters"),t.className=o+" loading",require(["babel/babel-helpers","trjs!responsive/collapsibleLayout"],function(e,l){t.className=o,l.toggle(r).then(function(e){return e&&O.trigger("resize")})}),l.trackEvent("Filter_overall","in_view"))}function w(e,t){var r=t.getAttribute("data-param"),o=t.getAttribute("data-value"),l=t.getAttribute("data-tracker"),n=t.getAttribute("data-index");return r&&o&&(a.clear(r,o),C.trigger("externalClear",{paramName:r,value:o}),l&&require(["babel/babel-helpers","trjs!common/track-filter","trjs!common/filters-helper"],function(e,t,o){t(o.getFilterNameFromParam(r),"unselect_cloud",l,n)}),t.parentNode.removeChild(t)),!1}function g(e,t,r,o){if(l.trackEvent("sort_h",o?"hover_dropdown":"hover",r),H&&o){if(F[r])return void F[r].show();require(["babel/babel-helpers","trjs!overlays/Overlay","trjs!overlays/position","trjs!overlays/styles/tooltip","trjs!overlays/options/closeOnMouseAway","trjs!overlays/options/maxWidth"],function(e,o,l,a,n,i){var s=t&&t.querySelector(".content");s&&(F[r]=new o(t,[a(t,"left","light",s.innerHTML),l.left([t.parentElement]),i(200),n]),F[r].show())})}else require(["babel/babel-helpers","trjs!overlays/uiOverlay"],function(r,o){o(e,t)})}function _(e){require(["babel/babel-helpers","overlays/uiOverlay"],function(t,r){r(null,e)})}function k(e,t){R||require(["babel/babel-helpers","forms/select"],function(e,r){R=new r.Select,R.on("change",function(e){f(e)}),R.on("open",function(){F={},l.trackEvent("sort_h","dropdown_click","")}),R.init(t,!1,"div",!0)})}function q(e){"clear"===e.target.className&&(require(["babel/babel-helpers","trjs!common/track-filter"],function(e,t){t("overall_clear","unselect_link","clear_all",0)}),a.clearAll(),C.trigger("externalClearAll"))}function S(e,t,r,o){l.trackEvent("sort_h",o?"hover_dropdown":"hover",r)}var E=document.querySelector("#"+t.id),A=document.querySelector("#"+t.id+" .sort_filter_bar"),N=document.querySelector("#"+t.id+" .sort-flyout"),O=new n("web-component-price-slider"),C=new n("web-component-data-bridge"),j=new n("hotels-sort-filter-entry"),M="withDescHeaders",T=new u,H=!!document.querySelector("[data-sort-redesign]"),L="-jdistLow",F={},x=void 0,R=void 0,D=/ *bactiveb/,I=/ *bloadingb/;return o.on("update-"+t.name,p),o.on("update-"+t.name+"-mw-header",function(e){return v(e,document.querySelector("#"+t.id+" .mobile-header"))}),o.on("update-"+t.name+"-flyout",function(e){return m(e,N)}),s.hasClass(A,M)&&c.waitForMap().then(function(e){var r=d.forMap(e),o=".sort_filter_bar.withDescHeaders",l=".mobile-header .descriptive_header_text";r.on(d.EVENT.RENDER,function(){var e=document.querySelector("#"+t.id+" "+o),r=document.querySelector("#"+t.id+" "+l);s.addClass(e,"is-hidden-desktop"),s.addClass(r,"is-hidden")}),r.on(d.EVENT.CLOSE,function(){var e=document.querySelector("#"+t.id+" "+o),r=document.querySelector("#"+t.id+" "+l);s.removeClass(e,"is-hidden-desktop"),s.removeClass(r,"is-hidden")})}),{clickSort:b,openSort:h,removeFilter:w,openFilters:y,hoverTooltip:g,trackClickMobileTooltip:S,showMobileOptionModal:_,initSelect:k,descriptiveHeaderClick:q}})}); require(["ta/p13n/placements"],function(e){var t=e.define.bind(e,"dh_sort_filter_entry_wc_bridge","handlers",["handlers"]);t(["babel/babel-helpers","placement","ta/page","common/Radio","ta/Core/TA.Event"],function(e,t,r,n,a){var i=document.getElementById(t.id),o=n("web-component-data-bridge"),u="data-descriptive-header",d="data-empty-list-alert",l="data-highlight-all",c="data-sort-options",s="data-current-sort",p=function(){var e=i.querySelector("["+u+"]").innerHTML,t="true"===i.querySelector("["+d+"]").getAttribute(d),r="true"===i.querySelector("["+l+"]").getAttribute(l),n=i.querySelector("["+c+"]").getAttribute(c),a=i.querySelector("["+s+"]").getAttribute(s),p=n&&JSON.parse(n),g=a&&JSON.parse(a);o.reply("desc_header_text",function(){return{descHeaderText:e,emptyListAlert:t,highlightAll:r}}),o.reply("sort_options_ext",function(){return p}),o.reply("cur_sort_ext",function(){return g.sortOrder})},g=function(e){e&&e.innerHTML&&(i.querySelector(".update").innerHTML=e.innerHTML,p(),e.classList.contains("filters-update-speedup")||o.trigger("update"))};return p(),a.on("update-"+t.name,g),{}})}); define("utils/resize-invalidated-cache",["babel/babel-helpers"],function(e){"use strict";var t="__resize-cache",n=Date.now();return window.addEventListener("resize",function(){return n=Date.now()}),function(e){var a=e[t];return(null==a||a.timestamp-1&&r.trackEventOnPage("video_ad","rendered",d,0,!0)})}var a=[138260539160,138260553101,138260595789,138260598747,138260643731,138260673692,138260673698,138260679323,138260921161,138260922949,138260936071,138261110515];n.on("onAdRender",r),n.on("onAdRenderMW",r)})}); require(["ta/p13n/placements"],function(n){var e=n.define.bind(n,"hsx_h1","handlers",["handlers"]);e(["placement","ta/Core/TA.Event"],function(n,e){function t(e){var t=document.getElementById(n.id);t&&e&&e.innerHTML&&(t.innerHTML=e.innerHTML)}return e.on("update-"+n.name,t),{}})}); require(["ta/prwidgets"],function(e){var i=e.define.bind(e,"common_ad_resp","handlers",["handlers"]);i(["widget","ta/Core/TA.Event","utils/responsive","utils/ResponsiveEvents","utils/resize-invalidated-cache"],function(e,i,n,t,r){function a(e,n){if(o!==n){var t=e.find(".largeScreen"),r=t.find(".gptAd");r.toggleClass("inactive",!n),t.toggleClass("hidden",!n),void 0!==o&&i.fireEvent("adSizeChanged"),o=n}}function d(i){var d=i(e.element),o=r(n.mobile);t.onOver("mobile",function(){a(d,!0)}),t.onUnder("mobile",function(){a(d,!1)}),a(d,!o)}var o;require(["lib/jquery-amd"],d)})}); require(["ta/prwidgets"],function(e){var t=e.define.bind(e,"common_dates_cta","handlers",["handlers"]);t(["widget","ta/page","common/trackingStreams","ta/Core/TA.LocalStorage","utils/throttle"],function(e,t,a,o,n){function s(){a.trackEvent("Hotels_Dates_Cta","click","dates_cta_button"),i&&(window.Zepto&&window.scrollTo(0,0),u&&t.gatherDates(u))}function r(){d.classList.add("hidden"),a.trackEvent("Hotels_Dates_Cta","click","close_button"),o.set("userClosedDatesCta",!0,m)}function c(){if(l){var t=l(e.element),o=t.offset().top,n=t.height(),s=o+n,r=l(window).scrollTop(),i=r+l(window).height();o0;)r.appendChild(e.childNodes[0])},n.setContentElement=function(e,r,a){n.copy(e,r),a?e.parentNode&&e.parentNode.replaceChild(r,e):(e.innerHTML=””,e.appendChild(r))},n}); define(“utils/nodePreserve”,[“ta/util/ajaxPreserves”,”utils/to-array”],function(e,r){“use strict”;function t(e,r){if(e)for(e.innerHTML=””;r.firstChild;)e.appendChild(r.firstChild)}function a(e,r){r&&Array.prototype.forEach.call(r.querySelectorAll(“.node-preserve, .ajax_preserve”),function(r){var t=r.getAttribute(“data-ajax-preserve”);t&&(e[t]=r,r.parentNode&&r.parentNode.removeChild(r))})}function n(e,r){var a=r.getAttribute(“data-ajax-preserve”),n=e[a];n&&(r.parentNode&&r.parentNode.replaceChild(n,r),t(n,r),delete e[a])}function i(i,o,l){if(i&&o){var d={};l&&e.innerCopy(i,o),a(d,i),t(i,o),r(i.querySelectorAll(“[data-ajax-preserve]”)).forEach(n.bind(null,d))}}var o={};return o.nodePreserve=function(e,r){i(e,r,!1)},o.treePreserve=function(e,r){i(e,r,!0)},o}); define(“responsive/text-resizer”,[“babel/babel-helpers”,”utils/to-array”,”utils/classnameUtils”,”utils/throttle”,”utils/ResponsiveEvents”,”vanillajs”],function(t,e,i,r,n){function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body;return!t===document&&(t=document.body),e(t.querySelectorAll(“.”+p)).filter(function(t){return!!t[v]})}function u(e){e.style.fontSize=null;var i=(getComputedStyle(e)||{}).fontSize;if(!i)return{};var r=i.match(b),n=t.slicedToArray(r,3),l=(n[0],n[1]),u=n[2],o=parseFloat(l);return o&&o>.001&&z[u]?{originalSize:o,units:u,multiplier:1,minMult:Math.max(y,z[u]/o)}:{}}function o(t){if(t[v])return t[v];var e=u(t);return e.originalSize?(t[v]=Object.assign(e,{group:t.getAttribute(h),multApplied:1}),t[v]):null}function a(t){for(var e=0;e0)||t.scrollWidth<=t.clientWidth)return!1;var e=t[v],i=(parseFloat(t.style.paddingLeft)||0)+(parseFloat(t.style.paddingRight)||0),r=t.scrollWidth-i;if(r<1)return!1;var n=(t.clientWidth-i-2)/r;return n=Math.min(n,.95)*e.multiplier,nt.clientWidth&&(t[v].multiplier=t[v].minMult)}))}function c(t){var e=t[v];if(!(e&&e.multApplied!=e.multiplier&&e.multiplier>0))return!1;var i=Math.max(z[e.units],e.originalSize*e.multiplier);return t.style.fontSize=””+i+e.units,e.multApplied=e.multiplier,!0}function s(t){if(t&&t.length){var e={};t.forEach(function(t){var i=t[v];i.group?e[i.group]=1:c(t)}),Object.keys(e).length&&(t=l(document.body).filter(function(t){var i=t[v],r=i.group;return!!(i&&r&&e[r]&&i.multiplier>0)&&(e[r]>i.multiplier&&(e[r]=i.multiplier),!0)}),t.forEach(function(t){var i=t[v];i.multiplier=e[i.group],c(t)}))}}function f(t){if(t&&(E||(E=!0,f(document.body),t!==document&&t!==document.body))){var c=e(t.querySelectorAll(“.”+m));if(c.length){c.forEach(function(t){i.removeClass(t,m),i.addClass(t,p)});var h=[];c=c.filter(function(t){var e=o(t);return!!e||(h.push(t),!1)}),a(c),h.forEach(function(t){i.removeClass(t,p),i.addClass(t,m)}),s(c),S||(window.addEventListener(“resize”,r(function(){d(document.body)},50)),n.on(“breakpoint”,function(){l(document.body).forEach(function(t){return Object.assign(t[v],u(t))})}),S=!0)}}}function d(t){var e=l(t);a(e),s(e)}var m=”autoResize”,p=”__resizeWatch”,h=”data-sizegroup”,v=”__resizerContext”,g=4,y=.5,b=/^(d+(?:.d+)?)(.*)$/,z={“px”:8.5,”em”:.5,”pt”:6,”%”:50},E=!1,S=!1;return{init:f,refresh:d}}); require([“ta/p13n/placements”],function(e){var t=e.define.bind(e,”hsx_hotel_list_lite”,”handlers”,[“handlers”]);t([“placement”,”ta/prwidgets”,”ta/page”,”utils/nodePreserve”,”ta/Core/TA.Event”,”mobile/lite/image-loader”,”responsive/text-resizer”,”common/Radio”,”maps/v3/MapsPollingOpenState”],function(e,t,n,r,a,i,o,l,s){“use strict”;function d(e){C=e,e.classList.contains(“notDone”)&&a.fireEvent(“page-repoll-not-done”)}function u(e,t){g.indexOf(t)>=0&&l(“cug”).reply(“hasLowerMemberRate”,function(){var n=null!=e&&e.classList.contains(“hasLowerMemberRate”);return[t,n]})}function c(e,t){if(g.indexOf(t)>=0){var n=null!=e&&e.classList.contains(“hasLowerMemberRate”);l(“cug”).emit(“showBanner”,[t,n])}}function f(n){c(n,e.name),n.classList.contains(“notDone”)&&a.fireEvent(“page-repoll-not-done”),setTimeout(function(){if(e.params.unmount_react_roots){var a=v&&v.querySelectorAll(“.react-container”);a&&require([“@ta/platform.runtime”],function(e){Array.from(a).forEach(function(t){e.destroyRoot(t.id)})})}var i=v&&v.querySelectorAll(“.node-preserve”);r.treePreserve(v,n),n.remove&&n.remove();var l=v&&v.querySelectorAll(“.node-preserve”);Array.prototype.forEach.call(i,function(e){if(!v.contains(e)){var t=require.defined(“lib/jquery-amd”)&&require(“lib/jquery-amd”)(e).data(“overlay”);t&&t.destroy()}}),Array.prototype.forEach.call(l,function(e){var n=require.defined(“lib/jquery-amd”)&&require(“lib/jquery-amd”)(e).data(“overlay”);if(n){var r=n.sourceElement.querySelector(“.ui_options.hidden”);r&&(r.classList.remove(“hidden”),n.updateContent(r.innerHTML),t.initWidgets(n.contentElement))}}),o.init(v),t.initWidgets(v),require([“trjs!widget/saves”],function(e){e.updateSaveButtonsStatus()})},0)}function h(e){a.off(_,f),a.off(_,d),e?a.on(_,d):(a.on(_,f),C&&f(C),C=null)}function p(e){s.getMapOpenedData().mapOpened||h(e)}function m(e){var t=e&&e.slot?e.slot.getSlotElementId():”null”;55978451===e.advertiserId||t.includes(“footer”)||t.includes(“-ref”)||require([“trjs!ta/Core/TA.Record”],function(e){e.trackEventOnPageOnce(“hh_email_lander”,”ad_seen”,t)})}var g=[“hsx_hotel_list_lite:dusty_hotels_combined_sponsored”,”hsx_hotel_list_lite:dusty_ab_hotels_sponsored”,”hsx_hotel_list_lite:dusty_filtered_out_hotels_sponsored”],_=”update-“+e.name,v=document.getElementById(e.id),y=null!=v.firstChild&&v.firstChild.classList.contains(“disableListRefreshInMapView”),q=null!=v.firstChild?v.firstChild.getAttribute(“data-deviceType”):null,b=null!=v.firstChild&&v.firstChild.hasAttribute(“data-hhDisplayInvTest”),E=null!=v.firstChild&&v.firstChild.hasAttribute(“data-hhDisplayInvControl”),C=null;return u(v.firstChild,e.name),c(v.firstChild,e.name),o.init(v),a.on(_,f),e.params.wait_for_filters&&l(“collapsible-layout”).on(“toggle”,p),y&&l(“h-map”).on(“toggle-trigger-clicked”,h),document.querySelector(“#”+e.id+”> DIV.notDone”)&&a.fireEvent(“page-repoll-not-done”),b&&(window.googletag=window.googletag||{cmd:[]},googletag.cmd.push(function(){googletag.pubads().addEventListener(“slotRenderEnded”,m)})),E&&”mobile”===q?require([“trjs!ta/Core/TA.Record”],function(e){e.trackEventOnPageOnce(“hh_email_lander”,”ad_seen”,”gpt-ad-320×50-adhesion”),e.trackEventOnPageOnce(“hh_email_lander”,”ad_seen”,”gpt-ad-320×50-header”)}):E&&”desktop”===q?require([“trjs!ta/Core/TA.Record”],function(e){e.trackEventOnPageOnce(“hh_email_lander”,”ad_seen”,”gpt-ad-728×90-970×66-header”)}):E&&”tablet”===q&&require([“trjs!ta/Core/TA.Record”],function(e){e.trackEventOnPageOnce(“hh_email_lander”,”ad_seen”,”gpt-ad-728×90-header”)}),{}})}); define(“hotels/SpecialMessageUtil”,[“babel/babel-helpers”,”ta/util/SessionStorage”,”utils/responsive”,”utils/classnameUtils”],function(e,s,t,a){function r(e,s){var t=o();return!!t[e]&&(!s||!!t[e][s])}function i(e,s){a.removeClass(e,d),”BRAND_MESSAGING_DEFAULT”!==s&&”BRAND_MESSAGING_MULTIPLE_SITES”!==s||!t.mobile()||l(s)}function n(e,s,t,r){a.addClass(e,d),t&&!r||l(s,r)}function c(e){var s=e.querySelector(“[“+S+”]”);return s?s.getAttribute(S):””}function u(e){var s=e.querySelector(“[“+b+”]”);return!(!s||!s.getAttribute(b))}function l(e,t){var a=o();a[e]=a[e]||{},t&&(a[e][t]=!0);try{s.setObject(g,a)}catch(e){}}function o(){try{return s.getObject(g)||{}}catch(e){}return{}}var g=”dismissedMessages”,d=”collapsed”,S=”data-messageType”,b=”data-persist-once-per-geo”;return{displayMessage:i,dismissMessage:n,wasMessageDismissed:r,getMessageType:c,isMessagePersistableOncePerGeo:u}}); require([“ta/p13n/placements”],function(e){var s=e.define.bind(e,”hsx_special_messaging”,”handlers”,[“handlers”]);s([“placement”,”page-model”,”ta/Core/TA.FireEvent”,”ta/prwidgets”,”utils/nodePreserve”,”hotels/SpecialMessageUtil”,”common/Radio”],function(e,s,a,t,i,n,r){function l(e){if(e&&!n.wasMessageDismissed(e,p&&g)){var s=m.querySelector(“.hsx_special_messaging > .collapsed”);n.displayMessage(s,e)}}function c(e){var s=n.getMessageType(e);s&&s!==o&&!n.wasMessageDismissed(s,p&&g)&&(o=s,e&&e.getAttribute(“data-targetEvent”)!=d&&(e=e.querySelector(‘[data-targetEvent=”‘+d+'”]’)),e&&m&&(i.treePreserve(m,e),t.initWidgets(m),l(o)))}var d=”update-“+e.name,g=s.GEO_ID,m=document.getElementById(e.id),o=n.getMessageType(m),p=n.isMessagePersistableOncePerGeo(m);a.on(d,c),l(o);var u=/ *bhiddenb/;return r(“hsx_special_message”).on(“temporaryHide”,function(e){e?m.className.match(u)||(m.className=m.className+” hidden”):m.className=m.className.replace(u,””)}),{}})}); require([“ta/p13n/placements”],function(e){var n=e.define.bind(e,”masthead_h1″,”handlers”,[“handlers”]);n([“placement”,”ta/Core/TA.FireEvent”],function(e,n){“use strict”;function t(n){var t=document.getElementById(e.id);t&&(t.innerHTML=n.innerHTML)}var r=”true”===e.params.trackInView;return r&&require([“trjs!ta/util/Element”],function(n){n.trackWhenScrolledIntoView(“#”+e.id,[“masthead”,”in_view”])}),n.on(“update-“+e.name,t),{}})}); ]]>

    • “).helper(“range”,c,{“block”:b2},{“begin”:c.get([“min”],!1),”end”:c.get([“max”],!1)}).write(“”);}function b1(h,c){return h.write(“”);}function b2(h,c){return h.write(“
    • “);}b0.__dustBody=b1.__dustBody=b2.__dustBody=!0;return b0;}(); !function(){dust.register(“itrooms-guests_desktop_checkmark_dropdown”,b0);function b0(h,c){return h.write(“”).exists(c.get([“titleClass”],!1),c,{“block”:b1},{}).write(“
        • “).helper(“range”,c,{“block”:b2},{“begin”:c.get([“min”],!1),”end”:c.get([“max”],!1)}).write(“”);}function b1(h,c){return h.write(“”);}function b2(h,c){return h.write(“
        • “);}b0.__dustBody=b1.__dustBody=b2.__dustBody=!0;return b0;}(); !function(){dust.register(“itrooms-guests_desktop_ticker”,b0);function b0(h,c){return h.write(“”);}b0.__dustBody=!0;return b0;}(); !function(){dust.register(“itrooms-guests_desktop_count_ticker”,b0);function b0(h,c){return h.write(“”).reference(c.get([“label”],!1),c,”h”).write(“”);}b0.__dustBody=!0;return b0;}(); ;});]]>
  • TheForku003c/a>”,”localizedLink”:null,”trackAction”:”sites_thefork”}]}}},”2634074783″:{“data”:{“currency”:{“code”:”EUR”,”name”:”Euro”,”symbol”:”u20AC”}}},”2802028941″:{“data”:{“mediaAlbum”:{“status”:200,”statusMessage”:”OK”,”album”:{“albumId”:-125,”subAlbumId”:null,”translationKey”:”photos_module_carousel_view_all_photos_plain”,”dataStrategy”:”a”,”offset”:0,”totalMediaCount”:198,”mediaList”:[{“type”:”p”,”mediaId”:456978396,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1b/3c/ef/dc/club-hotel-li-suari.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:1024,”height”:683},{“url”:”https://media-cdn.tripadvisor.com/media/photo-m/1280/1b/3c/ef/dc/club-hotel-li-suari.jpg”,”width”:1280,”height”:853}]},{“type”:”p”,”mediaId”:383690943,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/16/de/a8/bf/club-hotel-li-suari.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:1024,”height”:683},{“url”:”https://media-cdn.tripadvisor.com/media/photo-m/1280/16/de/a8/bf/club-hotel-li-suari.jpg”,”width”:1280,”height”:853}]}]}}}},”2860400038″:{“data”:{“explicitPreferences”:{“where”:{“value”:2043769},”segment”:{“value”:null},”dates”:{“value”:null},”interests”:{“value”:[{“type”:”TAG”,”value”:”10643″,”selected”:false,”display”:{“displayText”:”Frutti di mare”}},{“type”:”TAG”,”value”:”20072″,”selected”:false,”display”:{“displayText”:”Cucina sarda”}},{“type”:”TAG”,”value”:”9201″,”selected”:false,”display”:{“displayText”:”Altri alloggi”}},{“type”:”TAG”,”value”:”10641″,”selected”:false,”display”:{“displayText”:”Pizzerie”}},{“type”:”TAG”,”value”:”10613″,”selected”:false,”display”:{“displayText”:”Cucina locale”}},{“type”:”TAG”,”value”:”10649″,”selected”:false,”display”:{“displayText”:”Cucina mediterranea”}},{“type”:”TAG”,”value”:”9156″,”selected”:false,”display”:{“displayText”:”Hotel sulla spiaggia”}},{“type”:”TAG”,”value”:”4617″,”selected”:false,”display”:{“displayText”:”Cucina italiana”}},{“type”:”TAG”,”value”:”10954″,”selected”:false,”display”:{“displayText”:”Ristoranti raffinati”}},{“type”:”TAG”,”value”:”10678″,”selected”:false,”display”:{“displayText”:”Pasta”}},{“type”:”TAG”,”value”:”6216″,”selected”:false,”display”:{“displayText”:”Hotel per famiglie”}},{“type”:”TAG”,”value”:”10992″,”selected”:false,”display”:{“displayText”:”Cibi senza glutine”}},{“type”:”TAG”,”value”:”9909″,”selected”:false,”display”:{“displayText”:”Dessert”}},{“type”:”TAG”,”value”:”9169″,”selected”:false,”display”:{“displayText”:”Hotel con spa”}},{“type”:”TAG”,”value”:”10614″,”selected”:false,”display”:{“displayText”:”Ristoranti romantici”}}]}}}},”3116695099″:{“data”:{“safetyInfo”:[{“safetyTags”:[{“name”:”Regularly sanitized high-traffic areas”,”tagInformation”:{“tagId”:21925,”localizedName”:”Aree piu00F9 frequentate regolarmente sanificate “}}]}],”locations”:[{“placeType”:”ACCOMMODATION”,”route”:{“url”:”/Hotel_Review-g652016-d1022421-Reviews-Hotel_Club_Baja_Bianca-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}}]}},”3478676675″:{“data”:{“locations”:[{“name”:”San Teodoro”}],”memberProfile”:null,”explicitPreferences”:{“where”:{“value”:2043769},”segment”:{“value”:null},”dates”:{“value”:null},”interests”:{“value”:[{“type”:”TAG”,”value”:”10643″,”selected”:false,”display”:{“displayText”:”Frutti di mare”}},{“type”:”TAG”,”value”:”20072″,”selected”:false,”display”:{“displayText”:”Cucina sarda”}},{“type”:”TAG”,”value”:”9201″,”selected”:false,”display”:{“displayText”:”Altri alloggi”}},{“type”:”TAG”,”value”:”10641″,”selected”:false,”display”:{“displayText”:”Pizzerie”}},{“type”:”TAG”,”value”:”10613″,”selected”:false,”display”:{“displayText”:”Cucina locale”}},{“type”:”TAG”,”value”:”10649″,”selected”:false,”display”:{“displayText”:”Cucina mediterranea”}},{“type”:”TAG”,”value”:”9156″,”selected”:false,”display”:{“displayText”:”Hotel sulla spiaggia”}},{“type”:”TAG”,”value”:”4617″,”selected”:false,”display”:{“displayText”:”Cucina italiana”}},{“type”:”TAG”,”value”:”10954″,”selected”:false,”display”:{“displayText”:”Ristoranti raffinati”}},{“type”:”TAG”,”value”:”10678″,”selected”:false,”display”:{“displayText”:”Pasta”}},{“type”:”TAG”,”value”:”6216″,”selected”:false,”display”:{“displayText”:”Hotel per famiglie”}},{“type”:”TAG”,”value”:”10992″,”selected”:false,”display”:{“displayText”:”Cibi senza glutine”}},{“type”:”TAG”,”value”:”9909″,”selected”:false,”display”:{“displayText”:”Dessert”}},{“type”:”TAG”,”value”:”9169″,”selected”:false,”display”:{“displayText”:”Hotel con spa”}},{“type”:”TAG”,”value”:”10614″,”selected”:false,”display”:{“displayText”:”Ristoranti romantici”}}]}}}},”3569342825″:{“data”:{“safetyInfo”:[{“safetyTags”:[]}],”locations”:[{“placeType”:”ACCOMMODATION”,”route”:{“url”:”/Hotel_Review-g652016-d1724282-Reviews-Grande_Baia_Resort_SPA-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}}]}},”3648316112″:{“data”:{“mediaAlbum”:{“status”:200,”statusMessage”:”OK”,”album”:{“albumId”:-125,”subAlbumId”:null,”translationKey”:”photos_module_carousel_view_all_photos_plain”,”dataStrategy”:”a”,”offset”:0,”totalMediaCount”:1007,”mediaList”:[{“type”:”p”,”mediaId”:110489830,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/06/95/f0/e6/restaurant–v2922113.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/100/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:100,”height”:100},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/200/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:200,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:250,”height”:205},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/500/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:500,”height”:333},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:550,”height”:450},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/550/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/600/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:600,”height”:400},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/660/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:660,”height”:400},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/730/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:730,”height”:487},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/800/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:800,”height”:533},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/890/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:890,”height”:593},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/980/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:980,”height”:653},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1070/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1070,”height”:713},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1180/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1180,”height”:787},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1300/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1300,”height”:867},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1430/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1430,”height”:953},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1560/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1560,”height”:1040},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1700/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1700,”height”:1133},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/1850/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:1850,”height”:1233},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/2000/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:2000,”height”:1333},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/2150/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:2150,”height”:1433},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/2300/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:2300,”height”:1533},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/2450/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:2450,”height”:1633},{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:2600,”height”:1733},{“url”:”https://media-cdn.tripadvisor.com/media/oyster/2600/06/95/f0/e6/restaurant–v2922113.jpg”,”width”:2600,”height”:1733}]},{“type”:”p”,”mediaId”:463766908,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1b/a4/85/7c/paradise-resort-spa.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:1024,”height”:683},{“url”:”https://media-cdn.tripadvisor.com/media/photo-m/1280/1b/a4/85/7c/paradise-resort-spa.jpg”,”width”:1280,”height”:853}]}]}}}},”3777338192″:{“data”:{“safetyInfo”:[{“safetyTags”:[]}],”locations”:[{“placeType”:”ACCOMMODATION”,”route”:{“url”:”/Hotel_Review-g652016-d2455467-Reviews-Sandalyon-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}}]}},”3849327035″:{“data”:{“safetyInfo”:[{“safetyTags”:[]}],”locations”:[{“placeType”:”ACCOMMODATION”,”route”:{“url”:”/Hotel_Review-g652016-d1799576-Reviews-Due_Lune_Resort_Golf_Spa-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}}]}},”4276170255″:{“data”:{“safetyInfo”:[{“safetyTags”:[]}],”locations”:[{“placeType”:”ACCOMMODATION”,”route”:{“url”:”/Hotel_Review-g652016-d2175449-Reviews-Club_Hotel_Li_Suari-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}}]}},”156401003945857″:{“data”:{“currentLocale”:{“pointOfSaleName”:”Italia”,”ietfLocale”:”it”,”languageName”:”Italiano”,”country”:{“locationId”:187768,”name”:”Italia”}}}}},”messages”:{“trip_detail_description”:”Descrizione”,”oracle_date_range”:”{checkIn} – {checkOut}”,”link_inputfield_label”:”Digita o incolla l’URL di un sito web”,”photo_uploader_add_a_location_tag”:”Aggiungi un tag per la localitu00E0″,”social_unblock_username_overflow”:”Sblocca {displayName}”,”trips_share_read_only”:”Invita i tuoi amici a u003cspan class='{className}’>visualizzare il tuo viaggiou003c/span>. Invita tramite:”,”post_video_500_max_characters”:”Massimo 500 caratteri”,”embedded_content_remember_choice_label”:”Ricorda la mia scelta”,”cx_explicit_preferences_end_body_geo”:”Ora inizia a scoprire le fantastiche idee di altri viaggiatori come te per {destinationGeoName}.”,”unified_base_pricing_disclaimer_single_room_double_occupancy”:”I prezzi si riferiscono alla tariffa media a notte fornita dai nostri partner e potrebbero non includere tutte le tasse e le spese. I prezzi si riferiscono a 1 camera per 2 ospiti. Le tasse e le spese mostrate sono solo indicative. Consulta i nostri partner per ulteriori dettagli.”,”trips_choose_who_can_see_trip”:”Scegli chi puu00F2 vedere il Viaggio”,”filters_show_all”:”Mostra tutto”,”cx_sponsored_social_by”:”Di u003cspan {attrs}>{userDisplayName}u003c/span>”,”mentions_profile_label_a_lower”:”u003cspan class=”{prefixClassName}”>di u003c/span>u003ca class=”{nameClassName}” href=”{url}”>{name}u003c/a>”,”trips_try_again_error_CTA”:”Riprova”,”iap_trips_copyrighted”:”Contiene contenuti protetti da diritto d’autore o altri diritti”,”iap_trips_error_or_disagree”:”Ho trovato un errore/Non sono d’accordo”,”cx_explicit_preferences_cta_traveling_partner”:”In viaggio con compagno/a”,”cug_memberloyaltyrates_headertitlewithperiod”:”Ottieni prezzi piu00F9 bassi.”,”post_video_button”:”Pubblica video”,”member_event_on_linkpost”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato un link”,”social_publish_date_Yesterday”:”Ieri”,”trips_error_save_trip_full”:”Errore! Troppi elementi nel tuo Viaggio. Rimuovi qualche elemento e riprova a salvare.”,”social_report_ty2b”:”La tua segnalazione u00E8 stata inviata e verru00E0 esaminata quanto prima dal nostro team!”,”social_content_report_copyright_violation”:”u00C8 una violazione del diritto d’autore”,”cx_explicit_preferences_cta_traveling_family”:”In viaggio con la famiglia”,”stat_modal_trip_name”:”Nome del viaggio”,”trips_note_ghost_text_example”:”Ad es.: posti per la colazione”,”stat_modal_saved_to_tripname_with_bold”:”Salvato in u003cb>{TripName}u003c/b>”,”select_all_filters”:”Seleziona tutto”,”repost_rate_limited_v2″:”Impossibile caricare il post da ripubblicare. Hai superato il limite consentito.”,”trips_dates_use_dates_cta”:”Usa date”,”inspiration_region_6_ffffee49″:”Africa e Medio Oriente”,”reg_and_join”:”ISCRIVITI”,”ugc_post_updated”:”Il tuo post u00E8 stato aggiornato!”,”board_basis_all_inclusive”:”Tutto compreso”,”trips_trip_now_private_v2″:”Il tuo Viaggio adesso u00E8 privato. Visibile solo a te e agli amici con cui condividi il tuo Viaggio.”,”mobile_kilometers_short_form”:”km”,”sng_a11y_zoom_level”:”Livello di zoom”,”cx_explicit_preferences_segment_friends”:”Amici”,”iap_forums_harassment”:”Molestie nei confronti di una persona o una struttura”,”trip_detail_add_description”:”Aggiungi una descrizione”,”trips_note_title_1″:”Titolo nota”,”onetap_subhead_signin_alerts_deals”:”Accedi per ricevere offerte e avvisi sui prezzi”,”social_untag_me”:”Non taggarmi”,”home_location_things_near_you”:”Dicci dove vivi per ricevere grandi idee su attivitu00E0 vicine a te.”,”native_login_user_review_anonymous”:”Un membro di Tripadvisor”,”trips_note_title_error”:”Aggiungi il titolo della nota per continuare”,”cx_feed_trip_description_fallback”:”Include: {locations}”,”mobile_profile_update_error_username_invalid_characters”:”Usa solo lettere dell’alfabeto (A-Z), numeri, caratteri di sottolineatura “_” e trattini “-“.”,”trips_error_default_add_item_to_trip”:”Si u00E8 verificato un problema con l’aggiunta dell’elemento al Viaggio. Riprova.”,”boosted_social”:”In evidenza”,”social_confirm_close_photo_post”:”Sicuro di voler chiudere il post?”,”map_no_results_title”:”Nessun risultato trovato”,”mem_account_info”:”Informazioni sull’account”,”add_more_videos_mw_uploader”:”Aggiungi altri video”,”memx_onboarding_unlock_TA”:”Scopri il meglio di Tripadvisor”,”I_live_in”:”Vivo a…”,”seo_empty_photo_prompt”:”Sei stato presso {0}?”,”report_review_radio_desc_11_ver_1″:”Nonostante i contributori possano scrivere soltanto su un’esperienza accaduta durante lo scorso anno, noi non rimuoviamo le vecchie recensioni. I contributori piu00F9 vecchi hanno meno influenza sull’indice di popolaritu00E0.”,”trips_dates_use_days_cta”:”Usa i giorni”,”delete_confirmation_description_post_0″:”Vuoi eliminare questo post? Una volta eliminato, il post non puu00F2 essere recuperato.”,”mv_photos_from_professionals”:”professionisti”,”btn_cancel”:”Annulla”,”social_profile_contributions”:”{0, plural, one{# contributo} other{# contributi}}”,”relative_dates_weeks_fffff175″:”{0} settimane fa”,”cx_explicit_preferences_cta_month2″:”In viaggio a {month}”,”cx_explicit_preferences_cta_solo2″:”Da solo”,”post_video_upload_videos_button”:”Carica video”,”map_auto_search_label”:”Cerca mentre sposto la mappa”,”onetap_message_unlock”:”Scopri il meglio di Tripadvisor”,”linkpost_rate_limited_v2″:”Impossibile caricare il link. Hai superato il limite consentito.”,”cx_sponsored_social_out_of_geo_header”:”Scopri questa destinazione in primo piano per il tuo prossimo viaggio”,”create_trip_screen_privacy_private”:”Privato”,”trips_share_read_write”:”Invita amici a u003cspan class='{className}’>modificare il tuo viaggiou003c/span>. Invita tramite:”,”brand_save_money_we_search_200″:”u003cb>Risparmia.u003c/b> Cerchiamo gli hotel ai prezzi piu00F9 bassi su piu00F9 di 200 siti.”,”Date_of_travel”:”u003cspan class=”{0}”>Data del viaggio:u003c/span> {1}”,”trips_organize_your_trip”:”Organizza il tuo Viaggio”,”social_opengraph_video_title”:”Video di {username}”,”social_category_search_today”:”Oggi”,”trips_and_more”:”e altri”,”mobile_no_results_found_8e0″:”Nessun risultato trovato”,”trips_stat_modal_profanity_check_native”:”Non u00E8 stato possibile creare il tuo viaggio. I viaggi pubblici non possono contenere linguaggio volgare. Riprova.”,”cma_disclaimer_teaser_msg”:”Impatto dei compensi pagati a Tripadvisor sull’ordine dei prezzi mostrati. I tipi di camera possono variare.”,”iap_promote_illegal_activity”:”Descrive o promuove la partecipazione in attivitu00E0 illecite”,”utility_nav_cart”:”Carrello”,”trip_detail_search_title_mw”:”Cerca luoghi da aggiungere al Viaggio”,”trips_reported_explanation”:”il tuo viaggio non soddisfa il u003ca href=”https://www.tripadvisorsupport.com/hc/it/articles/360008133913-Tripadvisor-s-Content-Policy”>Regolamento per i contenutiu003c/a> di Tripadvisor per i viaggi pubblici ed u00E8 stato impostato come privato. Non puu00F2 essere pubblicato di nuovo.”,”Tier2_Brand2_CopyE”:”u003cstrong>Vuoi risparmiare?u003c/strong> Consultiamo 200 siti per farti risparmiare fino al 30%”,”sunday_52″:”Domenica”,”member_event_on_photo”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato una foto”,”social_report_profile”:”Segnala profilo”,”list”:”Elenco”,”attractions.cart_recapture.alert.headline”:”Ora puoi riprendere la prenotazione da dove l’avevi interrotta.”,”common_month_year10″:”Ottobre {0}”,”rd_hd_viewMap”:”Guarda la mappa”,”trips_move_up”:”Sposta su”,”trips_dates_clear”:”Cancella”,”common_month_year11″:”Novembre {0}”,”places_in_this_post”:”Luoghi in questo post”,”common_month_year12″:”Dicembre {0}”,”owners_managelisting_open”:”Aprite”,”iap_profile_contribution”:”Problema con il contributo dell’utente (recensione, foto, video, ecc.)”,”show_n_results”:”Mostra {0, plural, one{# risultato} other{# risultati}}”,”insurance_title”:”Assicurazione”,”delete_confirmation_description_video_0″:”Sicuro di voler eliminare questo video? Una volta eliminato, il video non potru00E0 piu00F9 essere recuperato.”,”plus_hotels_callout_perks”:”Get member perks and benefits with your stay”,”n_Trips_plural”:”{0} {0, plural, one{Viaggio} other{Viaggi}}”,”saves_start_date”:”Data di inizio”,”social_report_level2_3″:”Sai a che posto appartiene questa foto?”,”social_label_Suggested_for_you”:”Consigliati per te”,”social_report_level2_1″:”Grazie per la segnalazione. Tuttavia, non verifichiamo i fatti riportati nelle recensioni. I proprietari delle strutture hanno la possibilitu00E0 di rispondere alle recensioni. Se siete proprietari di questa struttura, u003ca href=”{sUrl}”>richiedete il vostro profilou003c/a>.”,”cx_explicit_preferences_welcome_subheader2″:”Rispondi ad alcune domande sul viaggio cosu00EC potremo mostrarti idee piu00F9 personalizzate.”,”trip_level_2_disagree_or_error”:”Grazie per la segnalazione. Tuttavia, non rimoviamo viaggi solo perchu00E9 gli utenti non concordano con i contenuti o per la presenza di errori. Consulta il nostro u003ca href=”{sUrl}”>regolamento per i viaggi.u003c/a>”,”ur_rd_0characterminimum”:”minimo {0} caratteri”,”social_report_level2_5″:”Desideri aggiungere ulteriori informazioni per aiutarci a capire i tuoi dubbi? (facoltativo)”,”social_report_level2_4″:”Sai a che posto appartiene questo video?”,”AccommodationCategoryModelVacationRental”:”Casa vacanza”,”trip_detail_delete_trp”:”Elimina Viaggio”,”common_Re_topic_title”:”R: {0}”,”mobile_profile_users_photo”:”Foto di {0}”,”stat_modal_change”:”Modifica”,”common_Accommodation”:”Alloggio”,”profile_update_error_username_too_short”:”{0} deve contenere almeno 3 caratteri”,”global_nav_content_cta_post”:”Pubblica”,”trips_home_featuring_count_v3″:”Include: u003cspan class={0}>{1, plural, one{# luogo} other{# luoghi}}u003c/span>”,”map_no_results_change_dates”:”cambiare le date”,”iap_forums_copyrighted”:”Contenuto protetto da diritto d’autore o simile copiato senza autorizzazione”,”trips_home_featuring_count_v2″:”Include: u003cspan>{0, plural, one{# posto} other{# posti}}u003c/span>”,”common_Yes”:”Su00EC”,”cx_explicit_preferences_segment_header”:”Con chi viaggi?”,”social_category_search_weeks_ago”:”{0, plural, one{# settimana fa} other{# settimane fa}}”,”trips_add_link_modal_CTA”:”Aggiungi link”,”trips_ugc_byline_v3″:”Pubblicato da u003cspan class=”{classNames}”>{displayName}u003c/span>”,”filters_show_more”:”Mostra di piu00F9″,”delete_confirmation_header_forum_post_0″:”Eliminare il post del forum?”,”report_review_radio_desc_14_part_2″:”I contributori possono scrivere una recensione per ogni esperienza avuta con una struttura nel rispetto del nostro regolamento sulla cronologia.”,”trips_note_body_error”:”Aggiungi il testo della nota per continuare”,”trips_leave_CTA”:”Abbandona”,”report_review_radio_desc_14_part_1″:” Questo utente ha due recensioni con lo stesso testo o con testo copiato da un altro contributore o da un’altra fonte.”,”n_photos_plural”:”{0} {0, plural, one{foto} other{foto}}”,”common_day_mon_abbr”:”lun”,”civ_figs_signup_010″:”Registrati”,”ib_more_info”:”Ulteriori informazioni”,”trips_remove_item_confirmation_text”:”Sei sicuro di voler rimuovere questo elemento dal Viaggio?”,”social_post_button”:”Pubblica”,”mobile_sherpa_guests_ffffeaf4″:”Adulti”,”post_photo_accepted_formats”:”Formati foto supportati: .jpg .jpeg .gif e .png”,”common_price_range_currency_plus_v3″:”{0}u2013{1}+”,”global_travel_notice_covid19″:”scopri di piu00F9 sul COVID-19″,”price_heatmap_lowest_prices_explanation”:”I prezzi degli hotel per queste date sono i piu00F9 economici da prenotare presso i nostri partner e rientrano nel 33% piu00F9 basso per le date mostrate.”,”delete_confirmation_header_repost_1″:”Eliminare il post ripubblicato?”,”trips_empty_subtext”:”Inizia a salvare i luoghi che ti piacciono, poi organizza i tuoi piani e vedili su una mappa.”,”rebrand_recommended_POI_list_shelf_title_with_placename”:”Perchu00E9 hai visualizzato {poiName}”,”trips_collaborators”:”Collaboratori”,”photos_provided_by_2_1bed”:”Alcune foto fornite da {0}.”,”new_photo_terms_of_use”:”Caricando questa foto,u00A0dichiaro di essere il proprietario dei contenuti e accetto i u003ca href={link} target=’_blank’>Termini di utilizzou003c/a> di Tripadvisor”,”ib_share_booking_download_app”:”Scarica l’app gratuita di Tripadvisor.”,”iap_link_incorrect_outdated_broken”:”Il link non u00E8 corretto, u00E8 datato o non relativo ai viaggi”,”are_you_an_owner_ffffe427″:”Sei un u003ca href=”{0}”>proprietario o un rappresentanteu003c/a>?”,”dual_search_popular_destinations”:”DESTINAZIONI PIu00D9 RICHIESTE”,”video_can_not_preview”:”Impossibile visualizzare l’anteprima del video”,”link_uploader_guidelines”:”Regolamento”,”post_video_video_count_text”:”Video {nCurrentVideoCount} di {nTotalVideoCount}”,”trips_privacy_options_modal_header”:”Opzioni di privacy”,”success_repost_video”:”Il tuo video u00E8 stato pubblicato!”,”cx_explicit_preferences_cta_interested_in”:”Ti interessa”,”dual_search_recently_viewed_all_caps”:”CERCATI DI RECENTE”,”common_dist_km”:”{0} km”,”trips_save_to_a_trip”:”Salva in un viaggio”,”hotels_h_social_proof_poicard_multiple_v2″:”Vedi le valutazioni delle u003cspan class=”{customClass}”>persone che seguiu003c/span>”,”hotels_n_helpful_votes_plural”:”u003cspan class=”{0}”>{1}u003c/span> {1, plural, one{voto utile} other{voti utili}}”,”trip_contains_profanity”:”Il tuo viaggio contiene linguaggio volgare e non puu00F2 essere pubblicato. Modifica il viaggio e riprova. Domande? Consulta il u003ca href=”https://www.tripadvisorsupport.com/hc/it/articles/360008133913-Tripadvisor-s-Content-Policy”>Regolamento per i contenutiu003c/a> di Tripadvisor.”,”mob_ads_sponsored”:”Sponsorizzato”,”common_Average”:”Nella media”,”check_email_subheader”:”Controlla la posta e usa il codice di sconto per vivere un viaggio fantastico spendendo meno.”,”social_mobile_reason_for_sponsored”:”Sponsorizzato”,”airm_mobile_show_more”:”Mostra di piu00F9″,”select_trip_header”:”Seleziona un viaggio”,”relative_dates_yesterday_fffff175″:”ieri”,”trips_share_email_body_v2″:”Ho creato un viaggio su Tripadvisor! Dai uno sguardo a “{tripName}”!”,”trips_lander_md”:”Con Viaggi u00E8 facile salvare piani di viaggio, creare liste dei desideri, segnare su una mappa tutte le tue idee per ristoranti, attivitu00E0 e alloggi e portarle con te ovunque.”,”no_availailability_from_partners”:”Nessuna disponibilitu00E0 dai nostri partner nelle date indicate”,”trips_note_modal_header”:”Note su {POIName}”,”n_contributions_plural”:”{0} {0, plural, one{contributo} other{contributi}}”,”iap_not_personal_experience”:”Non descrive un’esperienza personale”,”social_Follow”:”Segui”,”trips_share_message”:”Condividi questo luogo con gli amici tramite:”,”trips_dates_use_days_or_dates”:”Crea un itinerario usando date o giorni”,”trips_move_down”:”Sposta giu00F9″,”exp_admission_ticket_price”:”Biglietto d’ingresso {sPrice}”,”repost_failure_message”:”Impossibile caricare il post da ripubblicare. Riprova.”,”sbx_survey_prompt_text”:”Ci racconti la tua esperienza con Tripadvisor?”,”mobile_profile_users_review”:”Recensione di {0}”,”visit_your_center_ffffe427″:”Visita il u003ca href=”{0}”>Centro Gestioneu003c/a>”,”delete_confirmation_header_photo_0″:”Eliminare la foto?”,”m1_trips_unsave_error”:”Si u00E8 verificato un problema con la rimozione di questo elemento. Riprova.”,”have_other_questions_ffffe427″:”Domande?”,”hotels_save_money”:”RISPARMIA {0}”,”hotel_class_filter_updated_label_plural”:”{nStar, plural, one{# stella} other{# stelle}}”,”delete_confirmation_description_review_0″:”Sicuro di voler eliminare questa recensione? Una volta eliminata, la recensione non potru00E0 piu00F9 essere recuperata.”,”airm_child_ba9″:”Bambino {0}”,”10_off_tour_activity_v2″:”u003cspan class=”{1}”>10% di scontou003c/span>u003cbr/> su tour o attivitu00E0″,”common_dist_mi”:”{0} mi”,”trips_byline_v2″:”Di”,”stat_modal_create_a_trip_v2″:”Crea un viaggio”,”inbox_title”:”Posta in arrivo”,”common_Previous”:”Indietro”,”social_change_profile_photo”:”Cambia foto del profilo”,”social_unfollow”:”Non seguire piu00F9″,”trips_item_error_load”:”Si u00E8 verificato un problema con il caricamento di elementi in questo Viaggio.”,”trips_link_card_share”:”Condividi con gli amici tramite:”,”meta_ui_taxes_and_fees_14f6″:”tasse e spese”,”mobile_feedback_subject”:”Feedback su Tripadvisor Beta”,”post_video_typeahead_placeholder_text_search”:”Cerca”,”com_mc_update”:”Aggiorna”,”contact_accommodation_for_availability”:”Contatta la struttura per verificare la disponibilitu00E0.”,”trips_error_general_default”:”Si u00E8 verificato un problema con questo Viaggio. Riprova.”,”required_ffffdbd1″:”obbligatorio”,”plus_filter_show_all”:”Show all stays with member savings & perks”,”trips_saves_spotlight_headline”:”Ti piace? Salvalo.”,”my_bookings_headtext_fffff9b3″:”Prenotazioni”,”hotels.type_and_count”:”{0} ({1})”,”tavrs_view_profile”:”Vedi profilo”,”sng_a11y_max_walkability”:”Punteggio massimo accessibilitu00E0 pedonale”,”price_heatmap_lowest_prices_2″:”Date con i prezzi piu00F9 bassi”,”report_review_radio_desc_15_ver_1″:”Contiene pubblicitu00E0 o promozioni relative a un’altra struttura.”,”from_price_fffff32b”:”Da {0}”,”post_a_video_modal_header”:”Pubblica un video”,”view_repost”:”Vedi post”,”add_more_photos_mw_uploader”:”Aggiungi altre foto”,”res_view_details_done”:”Fine”,”global_nav_profile_my_business”:”La mia attivitu00E0″,”media_upload_description_profanity_error”:”Non si accettano descrizioni contenenti volgaritu00E0″,”plus_x_more_symbol_only”:”+ {0}”,”member_event_on_forumpost_reply”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato una risposta”,”trips_remove_CTA”:”Rimuovi”,”tourism_sponsored_by_ffffe8c8″:”Sponsorizzato da”,”post_video_or_just_text”:”oppure”,”attractions.tickets_and_tours”:”Biglietti e tour”,”compliment_9bd”:”Siamo spiacenti, si u00E8 verificato un errore tecnico. Ti preghiamo di riprovare piu00F9 tardi. “,”member_event_reposted_review”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato una recensione”,”trips_move_to_top”:”Sposta in alto”,”iap_profile_problem_with_pic_lev2″:”Per segnalare altre foto pubblicate da questo utente, procedi direttamente dalle foto.”,”post_photos_form_header”:”Pubblica foto”,”new_video_terms_of_use”:”Caricando questo video,u00A0dichiaro di essere il proprietario dei contenuti e accetto i u003ca href={link} target=’_blank’>Termini di utilizzou003c/a> di Tripadvisor”,”create_trip_general_error_v2″:”Si u00E8 verificato un problema con la creazione di questo viaggio. Riprova.”,”cx_explicit_preferences_segment_partner”:”Compagno/a”,”cx_explicit_preferences_welcome_yes”:”Su00EC, procedi”,”profile_update_error_username_already_exists”:”{0} u00E8 giu00E0 in uso”,”share_email_forumtopic”:”Ecco un argomento che ho trovato nel forum di Tripadvisor:”,”batch_media_add_description_subtitle”:”Descrivi le tue foto ai viaggiatori”,”common_Search”:”Cerca”,”sng_michelin_year”:”MICHELIN {0}”,”profile_joined_in”:”Iscritto nel {0}”,”cug_memberloyaltyrates_ctawithoutperiod”:”Accedi ora”,”stat_modal_view_trip_v2″:”Vedi viaggio”,”board_basis_full_board”:”Pensione completa”,”social_report_prof_err”:”Si u00E8 verificato un errore. Aggiorna e riprova.”,”suggested_tags”:”Tag consigliati:”,”iap_profile_username”:”Nome utente non appropriato”,”footer_ta_sites_v2″:”Siti di Tripadvisor”,”social_remove_tag”:”Rimuovi tag”,”common_Attraction_3dd”:”Attrazione”,”link_uploader_refresh”:”Aggiorna”,”success_repost_trip”:”Il tuo viaggio u00E8 stato pubblicato!”,”common_day_thu_abbr”:”gio”,”link_uploader_locationlabel”:”Tagga una localitu00E0″,”m1_trips_save_success_stat_d2″:”Salvato! Ora organizzalo in un Viaggio.”,”common_Cookie_consent_14f6″:”Consenti i cookie”,”price_heatmap_lowest_prices_explanation_hide”:”Nascondi”,”price_slider_plus_short”:”+ {0}”,”member_event_on_question_with_date”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha fatto una domanda a {3}”,”uploader_error_required_field”:”Questo campo u00E8 obbligatorio”,”sng_award_michelin_plate”:”Piatto Michelin”,”delete_confirmation_description_photo_0″:”Sicuro di voler eliminare questa foto? Una volta eliminata, la foto non potru00E0 piu00F9 essere recuperata.”,”hotels_map_also_show_transit”:”Trasporti”,”social_untag_yourself”:”Rimuovere il tuo tag?”,”trips_email_share_collaborator_version”:”Dai uno sguardo a “{tripName}”!”,”new_photos_terms_of_use”:”Caricando queste foto,u00A0dichiaro di essere il proprietario dei contenuti e accetto i u003ca href={link} target=’_blank’>Termini di utilizzou003c/a> di Tripadvisor”,”social_opengraph_trips_title”:”{tripName} | Viaggio di {userName}”,”iap_profile_problem_my_account”:”Questo u00E8 il mio account e si u00E8 verificato un problema”,”post_photo_tips_guidelines”:”Puoi caricare fino a 10 foto alla volta”,”trips_add_CTA”:”Aggiungi”,”linkify_removed_v2″:”u003clink rimosso>”,”cx_explicit_preferences_cta_family2″:”Con la famiglia”,”sng_a11y_max_price”:”Prezzo massimo”,”hsx_any_distance”:”Qualsiasi distanza”,”social_block_modal_more_hyperlink”:”u003ca class=”{className}” target=”{target}” href=”{href}”>Scopri di piu00F9u003c/a> su cosa succede quando blocchi un account su Tripadvisor.”,”post_video_file_type_error”:”Questo tipo di file non u00E8 supportato. Prova un file in formato MOV, MP4 o M4V”,”Date_of_stay”:”u003cspan class=”{0}”>Data del soggiorno:u003c/span> {1}”,”board_basis_breakfast_included”:”Colazione inclusa”,”trips_dates_move_to”:”Sposta a”,”iap_profile_report_from_inbox_lev2″:”Invia la segnalazione direttamente dal messaggio nella tua u003ca href=”/Inbox” target=”_blank”>casella di postau003c/a>.”,”soical_loading_error_2″:”Riprova.”,”trips_STA_find_add_places”:”Trova e aggiungi luoghi”,”ds_award_michelin_two_star_label”:”Due stelle MICHELIN”,”post_photo_or_just_text”:”oppure”,”video_upload_fail”:”Errore. Impossibile caricare uno o piu00F9 video.”,”mobile_profile_users_reposts_v3″:”{nReposts, plural, one{# post ripubblicato} other{# post ripubblicati}}”,”common_Readmore”:”Leggi tutto”,”trips_spotlight_subtext_new_lapsed”:”Salva i luoghi che ti piacciono in un Viaggio e non perdere di vista i tuoi piani.”,”common_btn_cancel_ffffe209″:”Annulla”,”trips_feed_trip_joined_v2″:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> sta partecipando a un viaggio”,”post_photo_drag_and_drop_from_desktop”:”Trascina un file dal desktop “,”plus_hotels_cta_view_deal”:”View Deal”,”trips_required”:”obbligatorio”,”affiliate_merchandise_message_v1″:”Idoneo per premi per gli acquisti tramite programmi fedeltu00E0″,”mobile_try_again”:”Riprova”,”qa_iap_label”:”Perchu00E9 questa segnalazione?”,”social_memberstats_followers”:”Follower”,”utility_nav_profile”:”Profilo”,”mobile_feedback_body_info”:”Inserisci un commento o descrivi il problema riscontrato qui:”,”social_repost”:”Ripubblica”,”region_apac_25ed”:”Asia Pacifico”,”trips_add_note”:”Aggiungi nota”,”trips_move_to_bottom”:”Sposta in fondo”,”social_Save”:”Salva”,”social_label_Trending”:”Di tendenza”,”trips_detail_forum_name”:”Forum {forumName}”,”create_trip_screen_privacy_public_explanation_v2″:”Visibile a tutti i viaggiatori su Tripadvisor, inclusi gli amici con cui condividi il tuo Viaggio”,”trips_feature_unavailable_launch”:”Alcuni contenuti o funzionalitu00E0 nel tuo Viaggio potrebbero non essere temporaneamente disponibili, mentre miglioriamo l’esperienza. Ci scusiamo per l’inconveniente.”,”common_day_sat_abbr”:”sab”,”share_email_link”:”Dai uno sguardo:”,”n_videos_plural”:”{0} {0, plural, one{video} other{video}}”,”command_interests_screen”:”Scegli cosa vuoi fare durante il viaggio”,”trips_edit_note”:”Modifica la nota”,”link_share_option_sms”:”SMS”,”report_review_radio_12_ver_2″:”Il testo della recensione non u00E8 coerente con la valutazione data”,”mobile_sherpa_rooms_ffffeaf4″:”Camere”,”board_basis_self_catering”:”Con uso cucina”,”social_no_permission”:”Non disponi delle autorizzazioni per eseguire questa operazione.”,”social_nCount_followers2″:”{0, plural, one{# follower} other{# follower}}”,”plus_hotels_cta_book_with_plus”:”Book with Tripadvisor Plus”,”cma_disclaimer_message”:”Gli elenchi delle offerte di prenotazione per ciascuna struttura tengono conto del compenso pagato a Tripadvisor dai nostri partner. I prezzi mostrati possono riferirsi a diversi tipi di camera. I prezzi mostrati sono quelli piu00F9 bassi trovati per il tipo di camera piu00F9 economica disponibile, in base ai dati forniti dai nostri partner al momento della ricerca.”,”n_forum_posts_plural”:”{0} {0, plural, one{post} other{post}}”,”mc_forum_topic_c8c”:”Argomento”,”post_photo_more_info_2″:”Per saperne di piu00F9, consulta la u003cspan>guida dello strumento di caricamento delle fotou003c/span>”,”save_all_items”:”Salva tutti gli elementi”,”mobile_back_8e0″:”Indietro”,”typeAheadSearchFor_fffff81b”:”Cerca “{0}””,”trips_error_duplicate”:”Hai giu00E0 un viaggio con questo nome.”,”command_dates_screen_geo”:”Indica quando andrai a {destinationGeoName}.”,”post_photo_upload_failed”:”Non u00E8 stato possibile caricare la foto. Riprova. “,”discover_ttd”:”Scopri le attivitu00E0″,”jfy”:”Solo per te”,”trips_dates_reschedule”:”Riprogramma”,”cx_explicit_preferences_welcome_no”:”No, grazie”,”onboarding_social_name_screen_username_ghost_text”:”ad es.: ViaggiatoreEsperto123″,”common_25f1″:”Ricerca”,”social_proof_multiple_connections_visited_hotels”:”u003cspan class=”{name_class}”>{userName}u003c/span> e {numConnections, plural, one{# altro contatto} other{altri # contatti}} sono stati a {geoName}. u003cspan class=”{see_link_class}”>Vedi gli hotel che hanno recensitou003c/span>”,”trips_drag_and_drop”:”Trascina per organizzare”,”member_event_on_review_with_date”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha scritto una recensione a {3}”,”copy_trip_modal_header”:”Copia Viaggio”,”common_Reply”:”Risposta”,”embedded_content_third_party_notice”:”Questo contenuto u00E8 offerto da terzi ({hostName}). Visualizzando i contenuti esterni accetti i {termsUrl} di {hostName}.”,”social_Helpful”:”Utile”,”cx_explicit_preferences_cta_traveling_friends”:”In viaggio con gli amici”,”trips_collaborate_invite_email_subject”:”Partecipa al mio viaggio su Tripadvisor!”,”post_video_tag_location_subtext”:”Rendi il tuo video piu00F9 visibile ai viaggiatori “,”trips_owner”:”Proprietario”,”trip_planner_clear”:”Cancella”,”qa_mobile_header_list”:”Lista”,”trips_make_trip_private”:”Viaggio privato”,”hr_tabs_overview_tab_fffff660″:”Panoramica”,”sanitation_checklist_covid19_travel_safe_v2″:”Viaggia sicuro durante l’emergenza u003cspan style=”white-space: nowrap;”>COVID-19u003c/span>”,”trips_remove_item_confirmation_header”:”Rimuovere elemento?”,”attractions.merchandising.from.price.with.span”:”da u003cspan>{sPrice}u003c/span>”,”stat_modal_undo”:”Annulla”,”trip_dates_choose_day”:”Scegli il giorno”,”mobile_sort_8e0″:”Ordina”,”common_nPrice_per_night_no_currency”:”u003cspan class=”{0}”>{1}u003c/span>u003cspan class=”{2}”>/notteu003c/span>”,”trips_spotlight_subtext_has_trip”:”Salva i luoghi che ti piacciono nel tuo Viaggio e vedili su una mappa.”,”member_event_reposted_photo”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato una foto”,”delete_confirmation_header_link_post_0″:”Eliminare il link?”,”explain_why_management_response_violates_guidelines”:”Spiega perchu00E9 ritieni che questa replica della direzione sia inappropriata e non rispetti il u003ca href=”{link}” target=”_blank”>regolamentou003c/a>.”,”mobile_profile_users_repost”:”Post ripubblicato da {0}”,”social_profile_page_meta_description_v2″:”Vedi recensioni, foto, video, viaggi e altri contributi di {username} su Tripadvisor.”,”social_block_modal_ex_dm”:”Inviarti messaggi diretti”,”member_event_on_review”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha scritto una recensione”,”common_Excellent”:”Eccellente”,”mobile_profile_users_forum_post_reply”:”Risposta di {0}”,”member_event_on_location_topic”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha fatto una domanda”,”link_share_sms_checkthisout”:”Dai uno sguardo su Tripadvisor:”,”link_uploader_commentdescription”:”Racconta agli altri viaggiatori perchu00E9 questo post u00E8 interessante.”,”common_Poor”:”Scarso”,”social_Coming_soon”:”Presto disponibile!”,”trips_add_a_link_modal”:”Aggiungi un link”,”success_repost_photo”:”La tua foto u00E8 stata pubblicata!”,”mv_photos_from_everyone”:”tutti”,”mobile_search_filter_clear_26e8″:”Cancella”,”Homepage_leftrail_subhead3″:”Fai domande e ricevi risposte dai viaggiatori come te”,”walkability_explanation2″:”Gli alloggi vengono valutati con un punteggio da 0 a 100. Piu00F9 alto u00E8 il punteggio, piu00F9 facile u00E8 per i viaggiatori trovare ristoranti e attivitu00E0 raggiungibili a piedi.”,”ip_view_profile_1cf1″:”Vedi profilo”,”trips_ugc_forum_reply_by”:”Risposta di {displayName}”,”profile_update_error_contains_profanity”:”Le volgaritu00E0 non sono consentite”,”trips_ugc_review_by_v2″:”Recensione di {displayName}”,”Homepage_leftrail_subhead1″:”Salva le tue idee di viaggio preferite e vedile su una mappa”,”Homepage_leftrail_subhead2″:”Ricevi avvisi sui prezzi e offerte per viaggiare a modo tuo”,”relative_dates_days_fffff175″:”{0} giorni fa”,”trips_delete_note_confirmation_header”:”Eliminare la nota?”,”social_Message”:”Messaggio”,”social_see_more”:”Vedi tutto”,”view_hotel”:”Vedi hotel”,”CPM_AdOps_Ad”:”Pubbl.”,”report_review_radio_9″:”u00C8 inappropriata o non adatta alle famiglie”,”plus_hotels_header_perk”:”Perks and benefits “,”Date_of_experience”:”u003cspan class=”{0}”>Data dell’esperienza:u003c/span> {1}”,”report_review_radio_8″:”Recensione pubblicata nella pagina sbagliata”,”m1_trips_my_saves_header”:”Preferiti”,”inbox_swipe_delete”:”Elimina”,”cx_explicit_preferences_dates_header”:”Quando vai a {destinationGeoName}?”,”file_size_limit_photo”:”Le dimensioni del file devono essere inferiori a {0} MB.”,”report_review_radio_1″:”Desidero segnalare questa recensione”,”link_share_option_clipboard”:”Copia link”,”cx_explicit_preferences_cta_subheader3″:”Vedrai idee personalizzate di viaggiatori come te.”,”report_review_radio_3″:”Desidero segnalare che la mia struttura ha chiuso”,”new_trip_name_error_msg”:”Scegli un nuovo nome per il Viaggio.”,”onboarding_social_name_screen_display_name_field_v2″:”Nome visualizzato”,”report_review_radio_2″:”Ho bisogno di aggiornare i dettagli della struttura o del proprietario”,”common_Hotel”:”Hotel”,”report_review_radio_5″:”Ho bisogno di segnalare un cambio di proprietu00E0 o una ristrutturazione”,”report_review_radio_4″:”Desidero modificare o rimuovere la mia replica”,”report_review_radio_7″:”Desidero rimuovere il mio profilo”,”report_review_radio_6″:”Desidero segnalare una foto associata a questa recensione”,”footer_disclaimer_line2″:”TripAdvisor LLC non fornisce alcuna garanzia della disponibilitu00E0 dei prezzi pubblicizzati sui relativi siti e applicazioni. Per usufruire dei prezzi indicati potrebbe essere richiesto un soggiorno di una determinata durata o potrebbero esserci date di non validitu00E0, condizioni o altre limitazioni. TripAdvisor LLC non u00E8 responsabile dei contenuti presenti su siti esterni che non sono gestiti da o proprietu00E0 di Tripadvisor.”,”footer_disclaimer_line3″:”TripAdvisor LLC non u00E8 un agente di prenotazione o tour operator. Quando prenoti con uno dei nostri partner, assicurati di consultare il relativo sito per informazioni complete su tutti i costi applicabili.”,”footer_disclaimer_line1″:”Questa u00E8 una versione del sito destinata in generale a chi parla {language} in {country}. Se risiedi in un altro paese o in un’altra area geografica, seleziona la versione appropriata di Tripadvisor dal menu a discesa.”,”link_uploader_postbutton_label”:”Pubblica link”,”meta_visit_site”:”Visita il sito”,”plus_hotels_perks_tooptip_and_more”:”And more”,”delete_confirmation_header_post_0″:”Eliminare il post?”,”trips_dates_add_item_save”:”Fine”,”ds_award_michelin_three_star_label”:”Tre stelle MICHELIN”,”trips_error_default_move_item”:”Si u00E8 verificato un errore durante lo spostamento di questo elemento del Viaggio. Riprova.”,”trips_dates_add_item_modal_title_day”:”Aggiungi a {sDate}”,”view_all_deals_from_commerce_on_list_screen”:”Vedi tutte le {0} offerte da {1}”,”common_9bc”:”Valuta”,”link_share_share”:”Condividi”,”h_distance_filter_search_placeholder”:”Cerca altri luoghi”,”social_block_modal_title”:”Blocca {displayName}”,”saves_redesign_delete_trip_cancel_button”:”Annulla”,”mentions_profile_label_span_lower”:”u003cspan class=”{prefixClassName}”>di u003c/span>u003cspan class=”{nameClassName}”>{name}u003c/span>”,”iap_profile_report_from_post_lev2″:”Tutti i dubbi relativi ai contributi degli utenti devono essere segnalati direttamente dai singoli post che violano u003ca href=”{sUrl} target=”_blank”>il regolamento.u003c/a>”,”terms_and_policy_links”:”Continuando, accetti i nostri u003ca rel=”nofollow” class=”{2}” target=”_blank” href=”{0}”>Termini di utilizzou003c/a> e confermi di aver letto la nostra u003ca rel=”nofollow” class=”{2}” target=”_blank” href=”{1}”>Normativa sulla privacyu003c/a>.”,”copy_of_trip_name”:”Copia di {0}”,”social_category_search_num_filters”:”{0, plural, one{# filtro} other{# filtri}}”,”plus_hotels_perks_tooltip_learn_more”:”Learn more”,”date_range_medium_month_to_day_of_month”:”{sDateStart} – {nDayEnd}”,”trips_trip_name_character_count”:”{nCharacterCount}/50 caratteri”,”flash_uploader_tips_and_guidelines_10d8″:”Consigli e linee guida”,”trips_privacy_explanation_new”:”Visibile a te e agli amici con cui condividi il Viaggio, ma non ad altri utenti di Tripadvisor.”,”share_email_photos”:”Ecco una foto che ho trovato su Tripadvisor:”,”dmo_hdr_alerts”:”Avvisi”,”mg2019_fbot_see_where_friends_traveled”:”Scopri dove sono stati i tuoi amici”,”common_Readless”:”Mostra meno”,”mobile_here_is_a_place_i_found_8e0″:”Ecco un posto che ho trovato su Tripadvisor:”,”mobile_profile_update_error_display_name_too_short”:”Il nome visualizzato deve contenere almeno 3 caratteri”,”footer_get_app_v2″:”Scarica l’app”,”video_upload_go_to_link_posting”:”Vuoi collegare un video? Puoi farlo con lo u003cspan>strumento di caricamento dei linku003c/span>”,”stat_modal_name_exceeds_50″:”Il nome del viaggio non deve superare 50 caratteri”,”trips_collaborator_removed_confirm”:”{UserName} u00E8 stato rimosso dal Viaggio”,”social_nCount_following2″:”{0, plural, one{# seguito} other{# seguiti}}”,”social_Saved”:”Salvato”,”board_basis_room_only”:”Solo camera”,”footer_region”:”Regione”,”get_to_know_geo_show_less”:”Mostra meno”,”map_no_results_suggestions_without_expanding_area_mobile”:”Puoi provare a rimuovere i filtri o a modificare le date”,”success_repost_review”:”La tua recensione u00E8 stata ripubblicata!”,”share_sms_link”:”Dai uno sguardo:”,”payments_partners_impact_order_accoms_room_types_vary”:”I pagamenti effettuati dai partner influiscono sull’ordine degli alloggi elencati e dei prezzi mostrati. I tipi di camera possono variare.”,”ur_rd_WriteReview”:”Scrivi una recensione”,”mobile_upload_photo_8e0″:”Carica foto”,”report_review_redirect_5″:”Per segnalare un cambio di proprietu00E0 o una ristrutturazione, visita la u003ca href=”{sUrl}”>pagina Assistenza rappresentanti aziendaliu003c/a> nel Centro gestione.”,”report_review_redirect_6″:”Per segnalare una foto, accedi alla foto nella parte superiore della pagina e invia una segnalazione facendo clic sull’icona a forma di bandiera.”,”report_review_redirect_3″:”Per segnalare la chiusura della struttura, visita il u003ca href=”{sUrl}”>Centro gestioneu003c/a>.”,”cx_explicit_preferences_welcome_header3″:”Ciao, {displayName}. Inizia a pianificare un viaggio indimenticabile.”,”mx_geo_picker_popular_destinations”:”DESTINAZIONI PIu00D9 RICHIESTE”,”select_from_pop_dates”:”Seleziona tra le date piu00F9 richieste:”,”cx_explicit_preferences_segment_family”:”Famiglia”,”hotel_plus_flight”:”Hotel + Volo”,”trips_ugc_forum_question_title_v3″:”u003ca class=”{classNames}” href=”{href}” target=”{linkTarget}”>{displayName}u003c/a> ha pubblicato una domanda”,”post_video_didnt_tag_location”:”Non hai taggato una localitu00E0 “,”sbx_take_survey”:”Vai al sondaggio”,”trips_empty_youve_created_trip”:”Hai creato un Viaggio!”,”empty_trip_home_get_started”:”Inizia”,”trips_dates_add_item”:”Aggiungi elemento”,”iap_forums_spam”:”Spam (parte di una serie di messaggi commerciali)”,”report_review_redirect_7″:”Non rimuoviamo i profili a meno che una struttura non sia u003cspan class=”{sEmphClass}”>chiusa definitivamenteu003c/span>. Per ulteriori informazioni consulta il u003ca href=”{sUrl}”>Centro assistenzau003c/a>. “,”trips_dates_select_item_to_add”:”Seleziona elementi da aggiungere”,”trips_trip_unavailable_trip_on_vacation”:”Questo viaggio u00E8 andato in vacanza… parti anche tu. “,”delete_confirmation_header_video_0″:”Eliminare il video?”,”social_loading_error_1″:”Si u00E8 verificato un errore.”,”attractions.cta_more_info”:”Altre info”,”social_follow_toast_message”:”Ora segui u003cspan class=”{sDisplayNameClass}”>{sDisplayName}u003c/span>”,”cx_explicit_preferences_profile_end_screen2″:”Grazie, {displayName}”,”sng_a11y_min_walkability”:”Punteggio minimo accessibilitu00E0 pedonale”,”social_block_username_overflow”:”Blocca {displayName}”,”homepage_war_button”:”Scrivi una recensione”,”view_deal”:”Vedi l’offerta”,”save_profile_photo_selection”:”Salva”,”guidelines_and_policies_ffffe427″:”Linee guida e normative”,”collapse_deals”:”Comprimi le offerte”,”social_n_contributions_plural”:”u003cspan class=”{0}”>{1}u003c/span> {1, plural, one{contributo} other{contributi}}”,”filter_ffffe84e”:”Filtra”,”footer_explore_v2″:”Esplora”,”ugc_uploader_photo_v3″:”Pubblica foto”,”trips_error_default_update_comment”:”Si u00E8 verificato un problema con l’aggiornamento di questo commento. Riprova.”,”post_video_required_fields_text”:”(obbligatorio)”,”ugc_uploader_photo_v2″:”Pubblica foto”,”best_places_around”:”Trova i posti migliori nelle vicinanze”,”social_About_this_place_plural”:”Informazioni su {0, plural, one{questo luogo} other{questi luoghi}}”,”trips_see_more_CTA”:”Scopri di piu00F9″,”map_no_results_remove_filters”:”rimuovere i filtri”,”content_upload_fail_try_again”:”Riprova”,”social_memberstats_contributions”:”Contributi”,”command_where_to_screen_v2″:”Indica dove vuoi andare.”,”trips_remove_collaborator_modal_header”:”Rimuovere il collaboratore?”,”trips_dates_privacy_change_message_trip_currently_public”:”Continuare?”,”trips_lander_title”:”Viaggi su Tripadvisor”,”share_email_link_subject”:”Dai uno sguardo”,”report_review_redirect_2_part_2″:”Per modificare o migliorare i dettagli della struttura, vai al link u003ca href=”{sUrl}”>Migliora questo profilou003c/a>.”,”social_block_toast”:”u003cspan class=”{className}”>{username}u003c/span> u00E8 stato bloccato”,”em_dash_date_format”:”— / — / —”,”report_review_redirect_2_part_1″:”Per modificare o migliorare i dettagli della struttura, visita il u003ca href=”{sUrl}”>Centro gestioneu003c/a>.”,”trips_guidelines”:”Regolamento”,”social_report_ty2″:”Grazie!”,”iap_trips_not_travel_related”:”Non inerente ai viaggi”,”help_center_topics_ffffe427″:”Argomenti principali del Centro assistenza”,”member_event_on_photo_with_date”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato una foto a {3}”,”affiliate_cta_book_get_rewards_v1″:”Prenota e ricevi premi”,”post_photo_upload_another_video”:”Trascina oppure u003c/> u003cspan class=”{sColorClass1}”>carica un’altra foto u003c/span>”,”iap_profile_problem_with_link”:”Problema con la biografia nella pagina del profilo o con il link al sito web”,”share_email_forumreply”:”Ecco una risposta che ho trovato nei forum di Tripadvisor:”,”aao_delete_question_msg_fffff375″:”Sei sicuro di voler eliminare questa domanda?”,”onboarding_social_brand_splash_get_started_cta”:”Inizia”,”cx_sponsored_social_in_geo_header”:”Pianifica un viaggio da ricordare a {sGeo}”,”cx_explicit_preferences_destination_subheader2″:”Ti mostreremo i consigli di altri viaggiatori che ci sono stati.”,”delete_confirmation_header_review_0″:”Eliminare la recensione?”,”mem_settings”:”Impostazioni”,”rd_forums_post_title_re”:”Re: {0}”,”meta_continue”:”Continua”,”remove_location_cf6″:”Elimina localitu00E0″,”mobile_profile_users_trip”:”Viaggio di {0}”,”member_event_reposted_video”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato un video”,”plus_hotels_plus_tooltip”:”Deals on hotels worldwide. Savings on tours and activities. Member perks and benefits. $99/year. u003ca href=”{0}”>Learn moreu003c/a>”,”provided_by_username”:”Fornito da u003ca class=”{0}” href=”{1}”>{2}u003c/a>”,”n_Helpful_votes_plural”:”{0} {0, plural, one{voto utile} other{voti utili}}”,”video_upload_more_info_guidelines_link”:”Per maggiori informazioni consulta u003cspan>le linee guida dello strumento di caricamento di videou003c/span>”,”common_Hotels”:”Hotel”,”trips_note_body_1″:”Testo nota”,”insp_sponby”:”Sponsorizzato da”,”common_Signin”:”Entra”,”embedded_content_show_content_label”:”Visualizza contenuto esterno”,”cx_trips_view_cta”:”Vedi il tuo Viaggio”,”price_heatmap_avg_daily_rates_range”:”Tariffe medie giornaliere: {0} – {1}”,”link_uploader_nextbutton”:”Avanti”,”trips_dates_date_from_date_to”:”{dateFrom} – {dateTo}”,”trips_STA_poi_removed”:”{POIName} u00E8 stato rimosso da u003cspan class=”{className}”>{TripName}u003c/span>”,”hrm_flyoutupsell_reviewcollection”:”Raccogliamo piu00F9 recensioni per voi ancora piu00F9 facilmente. Con piu00F9 recensioni avete maggiori opportunitu00E0 di migliorare la posizione in classifica e aumentare la visibilitu00E0 su Tripadvisor.”,”social_block_btn”:”Blocca”,”common_nPrice_per_adult_no_currency”:”u003cspan class=”{0}”>{1}u003c/span> u003cspan class=”{2}”>per adultou003c/span>”,”n_saves_plural”:”{0} {0, plural, one{post salvato} other{post salvati}}”,”ads_perf_dashboard_get_started_updated”:”Iniziate”,”trips_ugc_video_by_v2″:”Video di {displayName}”,”respond_to_a_review_ffffe427″:”u003ca href=”{0}”>Rispondiu003c/a> a una recensione”,”social_label_Member_liked_this”:”Piace a u003ca class=”{sMemberLinkClass}” href=”{sMemberLink}”>{sMember}u003c/a>”,”trips_dates_privacy_change_message”:”Vuoi rendere pubbliche le date del tuo Viaggio?”,”cancel_profile_photo_selection”:”Annulla”,”trips_collaborate_invite_email_body_v2″:”Ho creato un viaggio su Tripadvisor! Partecipa e aggiungi le tue idee a “{tripName}”!”,”Date_of_visit”:”u003cspan class=”{0}”>Data della visita:u003c/span> {1}”,”trips_collaborator_privacy_modal”:”Questo viaggio u00E8 {privacySetting}. Solo il proprietario del viaggio puu00F2 modificare questa impostazione.”,”saves_remove_from_trip”:”Elimina dal viaggio”,”trips_ugc_forum_reply_title_v3″:”u003ca class=”{classNames}” href=”{href}” target=”{linkTarget}”>{displayName}u003c/a> ha pubblicato una risposta”,”onboarding_social_name_screen_username_helper_text_period_814″:”Questo nome utente univoco aiuta i viaggiatori a cercarti.”,”com_fyf_p2_011″:”Indietro”,”attractions.cart_button_acc”:”Carrello”,”common_Submit”:”Invia”,”iap_low_quality_ffffe4e2″:”Bassa qualitu00E0″,”n_helpful_votes_plural”:”{0} {0, plural, one{voto utile} other{voti utili}}”,”mentions_profile_label_a”:”u003cspan class=”{prefixClassName}”>Di u003c/span>u003ca class=”{nameClassName}” href=”{url}”>{name}u003c/a>”,”common_more_ffffe87d”:”Altro”,”post_video_add_description_v2_part_1″:”Aggiungi una descrizione “,”aw_done_ffffe1e5″:”Fatto”,”post_video_add_description_v2_part_2″:”Informa altri viaggiatori del tuo video “,”trip_note_update_error”:”Si u00E8 verificato un problema con l’aggiornamento della nota del Viaggio. Riprova.”,”delete_confirmation_description_repost_0″:”Sicuro di voler eliminare questo post ripubblicato? Una volta eliminato, il post non puu00F2 essere recuperato.”,”iap_forums_self_promotion”:”Messaggio auto-promozionale, pubblicitario o insistente”,”file_size_too_big_photo_oops_message”:”Le dimensioni di questo file non sono supportate. Assicurati che siano inferiori a {0}”,”num_night_stay_plus_flight_v2″:”Soggiorno di {nNights, plural, one{# notte} other{# notti}} + volo”,”trips_dates_menu_cancel”:”Annulla”,”delete_confirmation_description_forum_post_0″:”Sicuro di voler eliminare questo post del forum? Una volta eliminato, il post non potru00E0 piu00F9 essere recuperato.”,”uploader_button_post”:”Pubblica”,”stat_modal_cancel”:”Annulla”,”trips_dates_move_from”:”Sposta da”,”link_inputfield_error”:”URL non valido. Aggiungi l’indirizzo corretto del sito web.”,”copy_your_trip”:”Copia il Viaggio”,”ugc_edit_attempt_failure”:”Si u00E8 verificato un errore. Riprova a modificare.”,”trips_delete_CTA”:”Elimina”,”stat_modal_save_to_trip_v2″:”Salva in un viaggio”,”cx_explicit_preferences_interests_header2″:”Cosa vuoi fare in viaggio?”,”carousel_progress_numbers”:”{photos}/{totalPhotos}”,”trips_url_ghost_text”:”Ad es.: www.tripadvisor.it”,”member_support_reviews”:”Recensioni”,”hotels_h_social_proof_shelf_single”:”u003cspan class=”{name_class}”>{userName}u003c/span> ha visitato {geoName}. u003cspan class=”{see_link_class}”>Vedi gli hotel che ha recensitou003c/span>”,”batch_media_retry_upload”:”Riprova il caricamento”,”link_share_email_subject”:”Scopri {0} su Tripadvisor”,”uploader_error_add_tag”:”Aggiungi tag”,”common_day_wed_abbr”:”mer”,”link_share_option_email”:”Email”,”video_upload_add_tags”:”Aggiungi tag della localitu00E0″,”hotels_only”:”Solo hotel”,”ds_textarea_minimum_characters”:”{numCount}/{numLimit} caratteri min”,”post_photo_upload_photos_button”:”Carica foto”,”social_block_modal_cancel”:”Annulla”,”trips_error_default_edit_trip”:”Si u00E8 verificato un problema con la modifica di questo Viaggio. Riprova.”,”trips_delete_trip_confirmation_text_v2″:”Sicuro di voler eliminare questo viaggio? Se elimini un viaggio, eliminerai anche tutti gli elementi e le note che hai aggiunto. Una volta eliminato, il viaggio non puu00F2 essere recuperato.”,”places_in_this_content_type_link_v2″:”Luoghi in questo link”,”a11y_skip_link”:”Vai al contenuto principale”,”mobile_offline_megabyte_ffffec6c”:”{0} MB”,”cx_explicit_preferences_profile_hometown_help2″:”Ricevi idee di viaggio e offerte sui voli in base alla tua cittu00E0″,”cx_explicit_preferences_profile_end_screen_no_name”:”Grazie.”,”common_Signout”:”Esci”,”iap_link_illegal_activity”:”Include contenuti o link a contenuti che promuovono attivitu00E0 illecite”,”nearby_use_my_location”:”Usa la mia posizione”,”post_videos_button”:”Pubblica video”,”cx_explicit_preferences_cta_dates2″:”In viaggio dal {date1} al {date2}”,”hrm_flyoutupsell_hr”:”Salve {sUserDisplayName}, accedete alle nostre soluzioni di gestione della reputazione che vi aiutano a migliorare il punteggio e la posizione in classifica su Tripadvisor.”,”places_in_this_content_type_video”:”Luoghi in questo video”,”plus_hotels_cta_book_now”:”Book Now”,”cx_explicit_preferences_cta_months2″:”In viaggio da {month1} a {month2}”,”trips_make_trip_public”:”Viaggio pubblico”,”trips_STA_poi_added”:”{POIName} u00E8 stato aggiunto a u003cspan class=”{className}”>{TripName}u003c/span>”,”ta_filters”:”Filtri”,”trips_insert_url_link_modal”:”u003cb>Inserisci l’URL sottou003c/b> (obbligatorio)”,”social_block_modal_more_v2″:”Tripadvisor u00E8 un forum pubblico per pubblicare e condividere contenuti. Bloccando un utente non gli impedisci di visualizzare i tuoi contenuti pubblici o la pagina del tuo profilo pubblico. “,”getlistednew_list_on_tripadvisor_ffffe427″:”Elenca la tua struttura”,”share_email_reviews”:”Ecco una recensione che ho trovato su Tripadvisor:”,”meta_ui_contact_accom_c2b”:”Contatta la struttura per verificare la disponibilitu00E0″,”social_report_level3_2″:”Spiega perchu00E9 ritieni che questa recensione non appartenga a questo profilo (obbligatorio).”,”social_report_level3_1″:”Inserisci il nome del profilo corretto (obbligatorio).”,”trips_dates_privacy_change_message_body”:”Tutti i viaggiatori di Tripadvisor vedranno le date del tuo Viaggio pubblico. Puoi scegliere di usare i giorni invece delle date.”,”share_email_subject”:”Dai uno sguardo su Tripadvisor”,”about_this_place”:”Informazioni sul luogo”,”my_name_is”:”Il mio nome u00E8…”,”linkify_url_error”:”L’URL inserito non u00E8 corretto”,”iap_profile_unwanted_messages”:”Ho ricevuto messaggi indesiderati da questo utente”,”post_photo_video_count_text”:”Foto {nCurrentphotoCount} di {nTotalphotoCount}”,”post_video_tag_location_push_2″:”I tag ti aiutano a portare piu00F9 viaggiatori sul tuo post e a diventare piu00F9 influente su Tripadvisor “,”profile_update_error_username_contains_ta_words”:”Parole come “Staff”, “Admin” o “Tripadvisor” non sono consentite.”,”trips_dates_move_items”:”Desideri spostare gli elementi a un altro giorno?”,”social_block_modal_ex_follow_v2″:”Seguirti su Tripadvisor”,”mob_popped_calendar_cta”:”Seleziona una data per continuare”,”trips_STA_add_to_your_trip”:”Aggiungi al tuo Viaggio”,”stat_modal_general_error”:”Si u00E8 verificato un problema nel salvare questo elemento. Riprova.”,”share_email_link_attribution”:”L’ho trovato su Tripadvisor.”,”upload_video_processing_copy”:”Il post u00E8 in corso di elaborazione. Ti invieremo una notifica quando saru00E0 pronto per essere visualizzato.”,”common_Verygood_fffffabd”:”Molto buono”,”report_review_radio_desc_13_ver_2″:”Questo recensore non ha avuto alcuna esperienza con la mia struttura, compreso il processo di prenotazione o il check-in. Sono a conoscenza del fatto che Tripadvisor ammette le recensioni relative a problemi riscontrati durante il processo di prenotazione, il check-in o l’accoglienza nella struttura.”,”member_event_on_tip”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha scritto un consiglio”,”cx_explicit_preferences_dates_flexible”:”Le mie date sono flessibili”,”plus_hotels_callout_up_your_travel_v2″:”Up your travel with member discounts and perks for $99/year. u003ca href=”{0}”>Learn moreu003c/a>”,”global_travel_notice_head”:”AVVISO PER CHI VIAGGIA:”,”nav_rs_premium_contact_support”:”Chiamate il numero {sSupportPhoneNumber} e indicate il vostro ID: {nLocationId}”,”trips_share_email_subject”:”Dai uno sguardo al mio viaggio su Tripadvisor!”,”board_basis_half_board”:”Mezza pensione”,”taking_safety_measures”:”Misure di sicurezza adottate”,”cruise_review_sail_date”:”u003cspan class=”{0}”>Data di partenza:u003c/span> {1}”,”bhotw_region_europe_title”:”Europa”,”see_all_results_for”:”Vedi tutti i risultati per “{query}””,”social_profile_ugc_cta”:”Condividi i tuoi consigli di viaggio”,”friday_52″:”Venerdu00EC”,”trips_add_links_1″:”Aggiungi link al Viaggio”,”common_Forum”:”Forum”,”profile_update_error_username_too_long”:”{0} non puu00F2 contenere piu00F9 di 20 caratteri”,”save_spotlight_got_it”:”OK!”,”saves_modal_other_users_private_no_public”:”{0, plural, one{# viaggiatore ha} other{# viaggiatori hanno}} salvato questo contenuto in un Viaggio privato”,”trips_date_add_days_inline_title”:”Giorni”,”onboarding_social_name_screen_returning_header”:”Conferma o aggiorna il tuo profilo”,”map”:”Mappa”,”member_event_reposted_forumpost”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato un forum”,”social_opengraph_photo_title_short”:”{locationName} | Foto di {userName}”,”iap_forums_multiple_accounts_or_impersonation”:”L’utente ha usato piu00F9 account o finto di essere un’altra persona”,”link_uploader_commentlabel”:”Aggiungi un commento”,”ds_award_michelin_one_star_label”:”Una stella MICHELIN”,”post_video_upload_another_video”:”Trascina e rilascia oppure u003c/> u003cspan class=”{sColorClass1}”>carica un altro video u003c/span>”,”upload_profile_photo”:”+ Carica foto”,”member_event_reposted_photo_v2″:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato delle foto”,”destination_driver_title_2″:”In partenza per {geoName}?”,”common_Terrible”:”Pessimo”,”iap_forums_duplicate”:”Post duplicato”,”social_profile_page_title”:”{displayname} ({username}) – Profilo – Tripadvisor”,”cug_memberloyaltyrates_headerbody”:”Accedi a Tripadvisor per vedere gli sconti offerti dai programmi fedeltu00E0 degli hotel.”,”trips_ugc_location_name_and_n_others_v2″:”u003cb>{sLocationName}u003c/b> e u003cb>{nOtherLocations, plural, one{# altro luogo} other{# altri luoghi}}u003c/b>”,”mw_sort_Filter”:”Filtra”,”attractions.coverpage.native.from_price.strong_tax_included”:”a partire da u003cstrong>{price}u003c/strong>”,”report_problem_ffffff85″:”Segnala un problema”,”report_review_radio_desc_12_part_2″:”Il contributore ha valutato una categoria con la quale non ha avuto esperienza. Esempio: “Qualitu00E0 del sonno: 2″, ma il contributore non ha soggiornato presso quella struttura. I punteggi complessivi NON sono una media delle singole valutazioni.”,”report_review_radio_desc_12_part_1″:” Esempio: la recensione u00E8 intitolata “Eccellente”, ma il punteggio complessivo u00E8 1.”,”trips_delete_trip_confirmation_header”:”Vuoi eliminare il Viaggio?”,”new_videos_terms_of_use”:”Caricando questi video,u00A0dichiaro di essere il proprietario dei contenuti e accetto i u003ca href={link} target=’_blank’>Termini di utilizzou003c/a> di Tripadvisor”,”saves_Collaborators”:”Collaboratori”,”dual_search_ghost_im_going_to”:”Vado au2026″,”ds_textarea_maximum_characters”:”{numCount}/{numLimit} caratteri max”,”saves_end_date”:”Data di fine”,”hrm_flyoutupsell_ownerresponse”:”Risparmiate tempo rispondendo alle recensioni su Tripadvisor, Google e Facebook da un’unica pagina.”,”thursday_52″:”Giovedu00EC”,”meta_ui_contact_hotel_c2b”:”Contatta l’hotel per verificare la disponibilitu00E0″,”common_Read_more”:”Scopri di piu00F9″,”social_edit_profile_username”:”Nome utente”,”trip_detail_edit_trip”:”Modifica Viaggio”,”social_category_search_yesterday”:”Ieri”,”trips_error_default_add_item_comment_v2″:”Si u00E8 verificato un problema con l’aggiunta della nota a questo elemento del Viaggio. Riprova.”,”app_download_url_secure”:”https://www.tripadvisor.it/apps”,”trips_trip_unavailable_invalid_permissions”:”Non disponi delle autorizzazioni per accedere a questo viaggio. Contatta il proprietario del viaggio.”,”popular_brands”:”Brand piu00F9 richiesti”,”onboarding_social_name_screen_display_name_helper_text_period_814″:”Viene mostrato nel tuo profilo e nei contenuti che pubblichi.”,”cx_feed_forum_post_by”:”Di {displayName}”,”trips_share_email_hey”:”Ciao,”,”saves_modal_other_users_private_v2″:”{0, plural, one{# altro viaggiatore ha} other{# altri viaggiatori hanno}} salvato questo contenuto in un Viaggio privato”,”empty_trip_detail_search_tripadvisor”:”Cerca su Tripadvisor”,”visit_the_help_center_ffffe427″:”Visita il u003ca href=”{0}”>Centro assistenzau003c/a>”,”safety.more_info”:”Altre info”,”Featuring_n_eateries_plural”:”Include: u003cspan class=”{0}”>{1} {1, plural, one{ristorante} other{ristoranti}}u003c/span>”,”hac_guests_label_ffffdfce”:”Ospiti”,”content_11228″:”Data”,”trips_lander_copy_3b”:”Accedi facilmente ai luoghi salvati quando sei in viaggio, ovunque tu vada”,”iap_participate_illegal_activity”:”Mostra partecipazione in attivitu00E0 illecite”,”ur_rd_0charactermaximum”:”massimo {0} caratteri”,”social_nowFollowing”:”Stai seguendo”,”cx_explicit_preferences_cta_header”:”Descrivi il tuo viaggio”,”common_Thingstodo”:”Cose da fare”,”common_day_fri_abbr”:”ven”,”video_upload_rate_limited_v2″:”Impossibile caricare il video. Hai superato il limite consentito.”,”TAFlights_filter_title_reset”:”Reimposta”,”social_block_modal_ex_repost_v2″:”Ripubblicare i tuoi contributi”,”trips_add_a_link_modal_educopy”:”Aggiungi link ad articoli utili per consultarli in seguito”,”mobile_dropdown_collapse”:”Restringi”,”Select_dates_to_check_prices_and_availability”:”Seleziona le date per verificare i prezzi e la disponibilitu00E0″,”iap_profane_explicit_or_hate_speech”:”Contiene un linguaggio volgare, commenti sessualmente espliciti o incitazioni all’odio”,”post_video_location_typeahead_add_location”:”Aggiungi un’altro luogo”,”tuesday_52″:”Martedu00EC”,”social_destination_expert_for”:”Esperto locale per:”,”common_Next”:”Avanti”,”trips_log_in_now”:”Accedi ora”,”trips_dates_select_a_date”:”Seleziona una data”,”close_map”:”Chiudi la mappa”,”trips_remove_item_remove”:”Rimuovi”,”more_hotels_on_tripadvisor”:”Altri hotel su Tripadvisor”,”mobile_feedback_title”:”Invia feedback sulla versione Beta”,”common_go_back_1cfb”:”Indietro”,”common_month_year2″:”Febbraio {0}”,”common_month_year3″:”Marzo {0}”,”link_uploader_header”:”Pubblica un link”,”aao_delete_cancel_btn_fffff375″:”Annulla”,”ampersand_up”:”e oltre”,”common_month_year1″:”Gennaio {0}”,”common_month_year6″:”Giugno {0}”,”common_month_year7″:”Luglio {0}”,”common_month_year4″:”Aprile {0}”,”common_month_year5″:”Maggio {0}”,”continue_sub_cta”:”Continua da qui”,”common_month_year8″:”Agosto {0}”,”relative_dates_today_fffff175″:”oggi”,”cx_explicit_preferences_segment_solo”:”Da solo”,”common_month_year9″:”Settembre {0}”,”rental_car_rate_card_pricing”:”A partire da {currencyFare}/giorno”,”where_to_hint_text”:”Parigi, Costa Rica, Brasile…”,”stat_modal_removed_from_tripname”:”Rimosso da {sTripName}”,”member_event_on_topic_posting”:”Risposta da u003ca class=”{0}” href=”{1}”>{2}u003c/a>”,”iap_profile_general_support_lev2″:”Usa il u003ca href=”/GeneralSupport” target=”_blank”>modulo generale per l’assistenzau003c/a> in caso di problemi con il tuo account.”,”common_Populardestinations”:”Destinazioni piu00F9 richieste”,”create_trip_screen_privacy_public”:”Pubblico”,”2019_by_skipping_username_step”:”Se salti questo passaggio, ti verranno assegnati uno pseudonimo e un @nomeutente generati automaticamente”,”social_untag_confirmation_message”:”Non sarai piu00F9 taggato in questo post, ma il contenuto saru00E0 comunque visibile su Tripadvisor.”,”trips_save_CTA”:”Salva”,”iap_forums_off_topic”:”Fuori argomento (forum o linguaggio errato oppure non legato ai viaggi)”,”report_review_radio_24″:”Ha un contenuto commerciale o promozionale”,”cx_explicit_preferences_profile_hometown”:”Vivo a…”,”mx_nearby”:”Qui vicino”,”expiry_date_cta”:”u003cspan class=”{0}”>Affrettati:u003c/span> scade il {sDate} alle {sTime}”,”save_all_items_modal_header”:”Salva tutti gli elementi in un Viaggio”,”error_page_browse_CTA”:”Esplora Tripadvisor”,”attractions.cart_recapture.abandoned_cart_overlay_cta”:”Vai al carrello per visualizzare gli articoli salvati l’ultima volta e completa l’acquisto quando vuoi.”,”h_filters_apply”:”Applica”,”discovery_sponsored_label”:”Sponsorizzato”,”explicit_preferences_account_screen_name”:”Nome”,”showing_nearby”:”Nelle vicinanze ({0})”,”cx_explicit_preferences_edit_cta_header”:”Dettagli del viaggio”,”mw_common_menu_fffffd37″:”Menu00F9″,”common_price_range_v3″:”{0}u2013{1}”,”trips_dates_trip_detail_days”:”{nItems, plural, one{# giorno} other{# giorni}}”,”vp_per_person_short”:”p.p.”,”ONB_saves_educator_tap_the_heart_subhead”:”Ti aiutiamo a pianificare un viaggio fantastico. Quando vedi qualcosa che ti piace, tocca il cuore per salvarlo.”,”sng_a11y_max_distance”:”Distanza massima”,”cx_explicit_preferences_profile_name_help”:”Questo u00E8 il nome che verru00E0 mostrato su Tripadvisor”,”member_event_on_forumpost_question”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato una domanda”,”common_Restaurant_3dd”:”Ristorante”,”hrm_flyoutupsell_cta_tryitforfree”:”Provatele gratis”,”ts_hotel_filter_tooltip”:”Mostra gli hotel e gli alloggi che adottano misure di sicurezza come procedure di sanificazione aggiuntive, regolamenti per l’uso delle mascherine e altro ancora. Scopri di piu00F9 visitando la nostra pagina u003ca target=”_blank” href=”https://www.tripadvisor.com/travel-safe”>Viaggiare Sicuriu003c/a>.”,”videos_location_featuring_count_v2″:”Include: u003cspan class={0}>{1, plural, one{# luogo} other{# luoghi}}u003c/span>”,”sng_a11y_min_price”:”Prezzo minimo”,”member_event_reposted_Trip”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato un viaggio”,”footer_do_business_v2″:”Collabora con noi”,”ib_tooltip”:”i [information tooltip]”,”hrm_flyoutupsell_cta_starttrial”:”Iniziate una prova gratuita”,”trip_privacy_setting_header”:”Scegli chi puu00F2 vedere il tuo Viaggio”,”mobile_help_center_url”:”https://www.tripadvisorsupport.com/hc/it”,”common_Restaurants”:”Ristoranti”,”p13n_radius_show_nearby_filter_header”:”Mostra nelle vicinanze”,”trips_move_error”:”Si u00E8 verificato un problema durante lo spostamento dell’elemento. Riprova.”,”trips_trip_now_public_v2″:”Il tuo Viaggio adesso u00E8 pubblico. Visibile a tutti i viaggiatori su Tripadvisor.”,”trip_detail_item_count_date_updated”:”{0, plural, one{# elemento aggiornato} other{# elementi aggiornati}} a {Date}”,”sng_award_michelin_bib”:”Bib Gourmand Michelin”,”trips_read_more_notes”:”Leggi {0, plural, one{# altra nota} other{# altre note}}”,”exp_book_now_ap”:”Prenota ora”,”cx_explicit_preferences_destination_header2″:”Benissimo. Dove vuoi andare?”,”trips_education_amazing_ideas_one_place”:”Viaggi: le tue fantastiche idee di viaggio nello stesso posto”,”trips_organize”:”Organizza”,”boost_social”:”Metti in evidenza”,”success_repost_photos”:”Le foto sono state pubblicate!”,”video_upload_max_number”:”Puoi caricare fino a {nVideos} video alla volta”,”social_Following”:”Following”,”common_Close”:”Chiudi”,”success_repost_link”:”Il tuo link u00E8 stato pubblicato!”,”batch_media_choose_a_layout”:”Scegli un layout:”,”post_photo_tag_location_subtext”:”Rendi la tua foto piu00F9 visibile ai viaggiatori “,”full_view”:”Vista completa”,”plus_hotels_cta_login”:”Log in to view deal”,”mobile_profile_users_link_post”:”Link di {0}”,”n_reposts_plural”:”{0} {0, plural, one{post ripubblicato} other{post ripubblicati}}”,”checkout_free_cancellation_emphasis”:”u003cspan class={0}>CANCELLAZIONE GRATUITAu003c/span> fino al {1}”,”mobile_profile_users_video”:”Video di {0}”,”abandon_cart_home_banner_2350″:”Sei ancora interessato?”,”aao_delete_answer_msg_fffff375″:”Sei sicuro di voler eliminare questa risposta?”,”cx_explicit_preferences_end_body_nearby”:”Ora inizia a scoprire le fantastiche idee nelle vicinanze di altri viaggiatori come te.”,”success_repost_forum”:”Il tuo forum u00E8 stato pubblicato!”,”social_report_level2_6b”:”Descrivi meglio i tuoi dubbi (obbligatorio).”,”map_search_redo_search_button_text”:”Cerca nei dintorni”,”h_walkability_filter_pill_v2″:”accessibilitu00E0 pedonale: da {nMinWalkability} a {nMaxWalkability}”,”common_day_tue_abbr”:”mar”,”trips_note_modal_ghost_text_1″:”Ad es.: consigli e raccomandazioni per posti da visitare”,”attractions.cart_recapture.alert_body”:”Fai clic qui in qualsiasi momento per completare la prenotazione. Accedi o registrati per andare al carrello da qualsiasi dispositivo.”,”poi_sort_by”:”Ordina per”,”trip_dates_unscheduled”:”Non programmati”,”share_email_videos”:”Ecco un video che ho trovato su Tripadvisor:”,”trips_leave_trip_modal_header”:”Abbandonare il viaggio?”,”post_photo_unsupported_file”:”Questo tipo di file non u00E8 supportato. Consulta il regolamento per le foto di Tripadvisor. “,”crm_social_tripadvisormember_10042018″:”Un utente di Tripadvisor”,”trips_inline_profanity_check”:”I viaggi pubblici non possono contenere linguaggio volgare”,”social_block_modal_notice”:”Se blocchi {displayName}, non potru00E0 piu00F9:”,”report_review_radio_desc_10″:”Penso che questa recensione sia stata scritta da un dipendente di una struttura concorrente o da un ex dipendente della mia struttura”,”command_companion_v2″:”Indica con chi viaggi.”,”cx_explicit_preferences_edit_trip_details”:”Modifica i dettagli del viaggio”,”tags_category_tag_airport_transportation”:”Trasporti per l’aeroporto”,”trips_edit_your_note_overflow”:”Modifica la nota”,”ugc_by_username_v2″:”Di”,”profile_update_error_display_name_too_long”:”{0} non puu00F2 contenere piu00F9 di 40 caratteri”,”deselect_all_filters”:”Deseleziona tutto”,”common_26ec”:”u00A9 {0} TripAdvisor LLC”,”map_no_results_suggestions_mobile”:”Puoi provare a rimuovere i filtri, cambiare le date o ampliare l’area di ricerca.”,”common_ffffe429″:”Scrivi una u003ca href=”{0}”>recensioneu003c/a>”,”report_review_radio_desc_16″:”In base al nostro regolamento, ogni contributore puu00F2 inviare solo una recensione per esperienza. Tuttavia, piu00F9 viaggiatori hanno diritto di scrivere una recensione sulla stessa esperienza e tali recensioni non saranno rimosse se saranno conformi al regolamento.”,”post_videodrag_and_drop_from_desktop”:”Trascina un file dal desktop “,”report_review_radio_desc_19″:”Sai a quale pagina appartiene questa recensione?”,”report_review_radio_desc_17″:”Non interveniamo in merito ai fatti. Se non sei d’accordo con il contenuto di una recensione, condividi la tua versione dei fatti con una u003ca href=”{sUrl}”>replica della direzioneu003c/a>.”,”common_Forums”:”Forum”,”common_Allrightsreserved”:”Tutti i diritti riservati.”,”report_review_radio_desc_18″:”Contiene informazioni come nomi completi, indirizzi email, carte di credito o password.”,”social_report_1″:”Segnala”,”trips_collaborate_invite_email_body_collaborator_version”:”Partecipa e aggiungi le tue idee a “{tripName}”!”,”member_list_reposts”:”{0, plural, one{Ripubblicato # volta} other{Ripubblicato # volte}}”,”relative_dates_one_week_fffff175″:”1 settimana fa”,”trips_leave_trip_modal_body”:”Sicuro di voler abbandonare questo viaggio? Non potrai piu00F9 aggiungere o modificare contenuti.”,”iap_profile_problem_with_pic”:”Problema con la foto del profilo o di copertina”,”mobile_reviews_plural”:”{0, plural, one{# recensione} other{# recensioni}}”,”Disclaimer_Hotel_Sort_Hamon_FR”:”L’inserzione di alloggi su Tripadvisor u00E8 gratuita e l’elenco potrebbe non essere esaustivo. Gli alloggi non possono ottenere una classificazione organica piu00F9 vantaggiosa a pagamento. I profili sponsorizzati vengono pubblicati a pagamento e sono contrassegnati dalla dicitura “Sponsorizzato”. u003cbr>n- L’opzione “Classifica dei viaggiatori” mostra i risultati in base all’Indice di popolaritu00E0, che tiene conto della qualitu00E0, della data di pubblicazione e della quantitu00E0 delle recensioni da parte degli utenti per ogni struttura. u003cbr>n- L’opzione “Miglior rapporto qualitu00E0-prezzo” classifica i risultati in base ai dati di Tripadvisor, tra cui valutazioni dei viaggiatori, tariffe, disponibilitu00E0, frequenza delle prenotazioni, posizione e preferenze degli utenti. u003cbr>n- L’opzione “Prezzi piu00F9 bassi” classifica i risultati in base ai prezzi offerti dai nostri partner. u003cbr>n- L’opzione “Distanza” classifica i risultati in base alla distanza dal centro della cittu00E0 e alla disponibilitu00E0. u003cbr>n- L’opzione “Solo per te” classifica i risultati in base alle preferenze e alla cronologia di navigazione dell’utente su Tripadvisor. u003cbr>nLe offerte sui prezzi mostrate si basano sui dati forniti dai partner aderenti e potrebbero non essere esaustive. L’ordine in cui vengono presentati i prezzi puu00F2 dipendere in parte dalle offerte dei partner nelle aste CPC.”,”filters_show_less”:”Mostra meno”,”stat_modal_saved_to_tripname_with_bold_v3″:”Salvato in u003ca href=”{TripLink}” class=”{TripClass}”>u003cb>{TripName}u003c/b>u003c/a>”,”hotel_info_about_service”:”Informazioni sul servizio”,”trips_empty_shelf_title”:”Salva i luoghi visualizzati di recente”,”report_review_redirect_4_ver_2″:”Per modificare la risposta, rimuovetela, quindi inviatene una nuova. Visitate la sezione u003ca href=”{sUrl}”>Risposte alle recensioniu003c/a> nel Centro Gestione, quindi fate clic sull’opzione “Eliminate la replica” in basso nella pagina.”,”link_share_link_copied”:”Link copiato”,”mw_Type”:”Tipo”,”create_trip_success_toast_with_bold”:”u003cb>{TripName}u003c/b> creato!”,”more_link”:”Piu00F9″,”expand_search_area”:”Amplia area di ricerca”,”tavrs_common_save_and_continue_button”:”Salva e continua”,”og_masthead_social_sharing_ffffe427″:”Condivisione su social network”,”social_proof_media_batch_photos_v2″:”Foto di {0}”,”photo_upload_rate_limited_v2″:”Impossibile caricare la foto. Hai superato il limite consentito.”,”monday_52″:”Lunedu00EC”,”trips_edit_CTA”:”Modifica”,”exp_see_n_experiences_from_cost_cap”:”{0, plural, one {Vedi # esperienza} other {Vedi # esperienze}} a partire da {1}”,”cx_explicit_preferences_welcome_header_no_name2″:”Grazie. Ora inizia a pianificare un viaggio indimenticabile.”,”feed_batched_photos_header_v2″:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato {4, plural, one{# foto} other{# foto}}”,”saturday_52″:”Sabato”,”trips_ugc_forum_question_by”:”Domanda di {displayName}”,”post_video_character_count”:”{nCharacterCount}/500 caratteri”,”common_Xof5bubbles”:”Punteggio {0} su 5″,”plus_hotels_login_gate”:”Log in or create an account to see member prices.”,”distance_from_poi”:”{0} da {1}”,”social_n_followers_plural”:”u003cspan class=”{0}”>{1}u003c/span> {1, plural, one{follower} other{follower}}”,”cx_explicit_preferences_cta_partner2″:”Con compagno/a”,”trips_error_default_edit_privacy”:”Si u00E8 verificato un problema con l’aggiornamento della privacy di questo Viaggio. Riprova.”,”trips_unassigned”:”Non assegnato”,”saves_collab_optional”:”(facoltativo)”,”video_upload_video_formats_accepted”:”I formati video accettati includono {sFileExtentions}”,”embedded_content_terms_and_conditions_label”:”termini e condizioni”,”footer_disclaimer_line1_no_country”:”Questa versione del nostro sito u00E8 destinata in generale a chi parla {language}, fatta eccezione per i casi in cui esista una versione del sito specifica per il paese o l’area geografica. u00C8 possibile utilizzare il menu a discesa per accedere alle altre versioni di Tripadvisor per specifici paesi e aree geografiche.”,”hamon_law_more_info”:”Altre informazioni”,”social_opengraph_photo_title”:”{locationName} | {additionalLocationName} | Foto di {userName}”,”ugc_uploader_trip_v2″:”Crea un viaggio”,”show_full_post”:”Mostra il post completo”,”meta_check_in_c2b”:”Arrivo”,”n_reviews_plural”:”{0} {0, plural, one{recensione} other{recensioni}}”,”free_cancel_ahead”:”u003cspan class=”{0}”>Senza impegno:u003c/span> cancella gratis fino a 24 ore prima.”,”trips_general_error”:”Si u00E8 verificato un problema durante il completamento di questa azione. Riprova piu00F9 tardi.”,”report_review_radio_desc_9″:”Contiene un linguaggio volgare, commenti sessualmente espliciti, incitazioni all’odio, pregiudizi, minacce o insulti personali.”,”post_video_size_error”:”Le dimensioni di questo file non sono supportate. Assicurati che siano inferiori a 500 MB “,”trips_day_header_item_count”:”{nItems, plural, one{# elemento} other{# elementi}}”,”trips_share_message_note”:”Condividi la nota con gli amici tramite:”,”mv_photos_from_management”:”direzione”,”get_to_know_geo_show_more2″:”Mostra di piu00F9″,”common_day_sun_abbr”:”dom”,”iap_forums_profanity_sex_violence_crime_hate”:”Linguaggio blasfemo, sessualmente esplicito, violento, illegale o incitante all’odio”,”footer_disclaimer_line2_estimates”:”I prezzi indicativi degli hotel mostrati nelle pagine “Esplora” rappresentano stime estrapolate dai dati storici sui prezzi.”,”social_report_reason_photos2″:”Duplicato dello stesso utente”,”view_all_n_deals_plural”:”Vedi {0, plural, one{# offerta} other{tutte le # offerte}}”,”batch_media_add_location_subtitle”:”Rendi le tue foto piu00F9 visibili ai viaggiatori”,”destination_driver_description_2″:”Scopri le novitu00E0 dai viaggiatori su cibo, bevande, soggiorni e luoghi imperdibili.”,”onboarding_social_skip_link”:”Salta per ora”,”destination_driver_cta”:”Inizia a esplorare”,”plus_hotels_generic_saving”:”Members save $75 or more on this stay”,”listing_issue_generic_error_ffffeaf1″:”Si u00E8 verificato un problema. Riprovate.”,”footer_about_ta_v2″:”Tripadvisor”,”comma_and_space”:”, “,”stat_modal_create”:”Crea”,”mw_js_positionPermissionDenied”:”Tripadvisor non u00E8 autorizzato a conoscere la tua posizione geografica. Modifica le impostazioni del browser per permettere a Tripadvisor di accedere a questa informazione e riprova.”,”stat_modal_removed_from_tripname_with_bold_v3″:”Rimosso da u003ca href=”{TripLink}” class=”{TripClass}”>u003cb>{TripName}u003c/b>u003c/a>”,”social_repost_on_tripadvisor”:”Ripubblica su Tripadvisor”,”mobile_profile_users_forum_post_question”:”Domanda di {0}”,”h_show_results”:”Mostra i risultati”,”hrm_flyoutupsell_managementcenter”:”Accedete alle nostre soluzioni di gestione della reputazione per raccogliere piu00F9 recensioni e fare in modo che i viaggiatori prenotino con fiducia.”,”hotels_h_social_proof_poicard_single_v2″:”u003cspan class=”{name_class}”>{userName}u003c/span> ha valutato questo hotel u003cspan class=”{rating_class}”>”{ratingCategory}”u003c/span>”,”hotels_popular_locations”:”Localitu00E0 gettonate”,”link_inputfield_error_blacklist”:”URL non valido. Tripadvisor non riconosce come affidabile questo dominio.”,”n_links_plural”:”{0} {0, plural, one{link} other{link}}”,”cx_explicit_preferences_profile_header3″:”Benvenuto! Raccontaci di te.”,”social_report_level2_redirect”:”Per modificare o migliorare i dettagli di questo profilo, vai a u003ca href=”{sUrl}”>Migliora questo profilou003c/a>.”,”book_nineplus_rooms”:”Prenota 9 o piu00F9 camere”,”region_americas_25ed”:”Americhe”,”iap_false_misleading_info”:”Contiene informazioni false o fuorvianti”,”onboarding_social_name_screen_display_name_ghost_text”:”ad es.: Mario Rossi”,”mem_pf_928″:”Etu00E0″,”member_event_on_tip_with_date”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha scritto un consiglio a {3}”,”mobile_miles_short_form”:”mi”,”trips_ugc_photo_by_v2″:”Foto di {displayName}”,”trips_dates_change_to_days”:”Cambia in giorni”,”trips_unknown_user”:”Utente sconosciuto”,”trip_detail_remove_from_trip”:”Elimina dal Viaggio”,”trips_education_easy_save_orgaize_map_bring_with_you”:”Con Viaggi u00E8 facile salvare, organizzare e segnare su una mappa tutte le tue idee per ristoranti, attivitu00E0 e alloggi e portarle con te ovunque.”,”member_event_on_video”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha pubblicato un video”,”trips_dates_add_dates_cta”:”Aggiungi date”,”member_event_reposted_linkpost”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha ripubblicato un link”,”mobile_discovery_where_to”:”Dove vuoi andare?”,”batch_media_posting”:”Pubblicazione…”,”mv_photos_from_travelers”:”viaggiatori”,”trip_search_traveler_info_text”:”u003cspan class=”{sRoomInfoClass}”>{nNumRooms, plural, one{# camera} other{# camere}}u003c/span>, u003cspan class=”{sAdultInfoClass}”>{nNumAdults, plural, one{# adulto} other{# adulti}}u003c/span>, u003cspan class=”{sChildInfoClass}”>{nNumChildren, plural, one{# bambino} other{# bambini}}u003c/span>”,”lowest_prices_for”:”Prezzi piu00F9 bassi”,”wednesday_52″:”Mercoledu00EC”,”common_TripAdvisor”:”Tripadvisor”,”iap_forums_personal_info”:”Dati personali (ad es.: cognome o indirizzo)”,”select_cover_photo”:”Seleziona la foto di copertina”,”successful_cover_photo_save”:”La foto di copertina u00E8 stata salvata”,”m2_trips_detail_date_display”:”{0} u2022 {1}”,”trips_add_notes_1″:”Aggiungi note al Viaggio”,”social_publish_date_Today”:”Oggi”,”delete_confirmation_description_link_post_0″:”Sicuro di voler eliminare questo link? Una volta eliminato, il link non potru00E0 piu00F9 essere recuperato.”,”common_more_capital_ffffe27f”:”Altro”,”trips_lander_copy_1″:”Salva i luoghi consigliati dai viaggiatori per il tuo viaggio”,”onboarding_social_name_screen_cta”:”Conferma”,”trips_lander_copy_2″:”Vedi su una mappa le attivitu00E0, i ristoranti e gli hotel che hai salvato”,”common_NEW_1bd8″:”NOVITu00C0″,”cx_explicit_preferences_interests_subheader3″:”Vedi di cosa parlano gli altri viaggiatori che sono stati a {destinationGeoName} e scegli quello che potrebbe piacerti.”,”trips_error_unsave”:”Si u00E8 verificato un problema durante la rimozione di questo elemento dal tuo Viaggio. Riprova.”,”plus_hotels_callout_member_saving”:”Members save {saving} on this stay”,”common_children”:”Bambini”,”cx_explicit_preferences_cta_date2″:”In viaggio il {date}”,”all_photos_parens”:”Tutte le foto ({nCount})”,”trips_save”:”Salva”,”low_prices_for”:”Prezzi bassi per”,”social_unblock_btn”:”Sblocca”,”member_event_on_Trip”:”u003ca class=”{0}” href=”{1}”>{2}u003c/a> ha creato un viaggio”,”trips_STA_search_places_add”:”Cerca luoghi da aggiungere”,”mobile_ib_nights_plural”:”{0, plural, one{# notte} other{# notti}}”,”reposted”:”Ripubblicato”,”trips_lander_header”:”Sei in partenza? Salva le tue fantastiche idee nello stesso posto con Viaggi.”,”common_OK”:”OK”,”trips_remove_collaborator_modal_body”:”Rimuovere questo collaboratore? Non potru00E0 piu00F9 aggiungere o modificare contenuti.”,”view_post”:”Vedi post”,”trips_product_name”:”Viaggi”,”common_No”:”No”,”trips_cancel_CTA”:”Annulla”,”explicit_preferences_who_are_you_traveling_with_skip_button”:”SALTA”,”rs_storyboard_turn_off_autoplay”:”Disattiva riproduzione automatica”,”common_month_year”:”Mese Anno”,”change_cover_photo_trips”:”Cambia foto di copertina”,”social_unblock_modal_title”:”Sblocca {displayName}”,”social_Add_profile_photo”:”Aggiungi foto del profilo”,”dual_search_worldwide”:”In tutto il mondo”,”mobile_profile_users_saves_v3″:”{nSaves, plural, one{# post salvato} other{# post salvati}}”,”report_review_radio_10″:”u00A0u00C8 stata scritta da un ex dipendente o dalla concorrenza”,”report_review_radio_13″:”Questo contributore non ha avuto alcuna esperienza con la mia struttura”,”cx_explicit_preferences_cta_friends3″:”Con amici”,”mobile_delete”:”Elimina”,”common_Postphotos”:”Invia foto”,”report_review_radio_11″:”Descrive un’esperienza piu00F9 di un anno fa.”,”triplist_itineraryday_ffffe73c”:”Giorno {0}”,”report_review_radio_17″:”u00A0Non sono d’accordo con le informazioni contenute in questa recensione”,”popular_hotels”:”Hotel piu00F9 richiesti”,”report_review_radio_18″:” Contiene informazioni private”,”meta_check_out_c2b”:”Partenza”,”report_review_radio_16″:” Un altro contributore ha giu00E0 scritto su questa esperienza”,”plus_list_saving_tooltip”:”Members savings include taxes and fees.”,”trips_error_default_add_note”:”Si u00E8 verificato un problema con l’aggiunta della nota al Viaggio. Riprova.”,”report_review_radio_19″:”Desidero segnalare qualcos’altro”,”social_unblock_modal_notice”:”Se sblocchi {displayName}, potru00E0:”,”airm_sortBy”:”Ordina per:”,”social_category_search_days_ago”:”{nDays} giorni fa”,”trips_dates_privacy_change_dates”:”Continua con le date”,”cx_explicit_preferences_cta_traveling_solo”:”In viaggio da solo”,”post_photo_add_description_v2_part_2″:”Informa altri viaggiatori della tua foto “,”post_photo_add_description_v2_part_1”:”Aggiungi una descrizione “,”reg_back”:”Indietro”,”mentions_profile_label_span”:”u003cspan class=”{prefixClassName}”>Di u003c/span>u003cspan class=”{nameClassName}”>{name}u003c/span>”,”trips_delete_note_confirmation_text”:”Sicuro di voler eliminare questa nota? L’operazione non puu00F2 essere annullata.”,”member_byline_link”:”u003cspan class=”{0}”>Di u003c/span>u003ca class=”{1}” href=”{2}” target=”{3}”>{4}u003c/a>”,”map_no_results_also_try”:”Puoi anche provare a:”,”report_review_radio_20″:”Non u00E8 imparziale oppure u00E8 scritta da qualcuno con un’affiliazione alla struttura”,”report_review_radio_21″:” Questa struttura u00E8 chiusa o non esiste”},”features”:{“suppress_tier_2_messaging”:false,”ungate_sponsored_listing_clicks”:true,”black_strikethrough”:false,”prod_runtime_tracking”:false,”curated_shelves_preview”:true,”boost_selected_filter_options_to_top”:false,”cug_banner”:false,”hotel_offer_primary_cta_continue”:false,”optimus_new_members”:false,”hp_link_cta_threshold_8″:true,”pay_in_installments_msg”:false,”trips_heart_icon”:true,”travel_advice”:true,”mw_hard_gate_ghost”:false,”fbot_single_screen_onb”:false,”home_lithium”:true,”datepicker_display_default_dates”:false,”pixel_loading_tracing”:false,”hamon_fr”:false,”tc_2020_botb”:true,”cma_disclaimer”:true,”t11208_variant_a_curated_broad_interest_categories”:false,”react_tracking_impressions”:true,”post_signup_attr_promo_explicit_preferences_control”:false,”t11213_mip_2_account_screen”:false,”info_icons_over_question_icons”:true,”ep_has_command_screen”:false,”rich_content_editor”:true,”fusion_lithium_hotels_list_page”:false,”hr_yellow_brick_edu_variant_b”:false,”hydrate_while_loading”:false,”hr_yellow_brick_edu_variant_a”:false,”ml_hard_gate_dt_v3_master”:false,”tourism_management_center”:false,”restaurant_list_consolidation”:false,”hr_mediaviewer_display_360_photos”:true,”consent_mgmt_enabled”:true,”enable_fallback_tier_two_messaging”:true,”h_defer_facebook_sdk”:true,”hotels_filters_reskin”:true,”au_safe_commerce_messaging”:false,”qualtrics_site_brand_experience_surveys_journey”:true,”hotel_offer_primary_cta_visit_site”:false,”travel_advice_preview”:true,”ml_hard_gate_dt_v1_master”:false,”ml_hard_gate_dt_v2_master”:false,”facebook_onetap_mobile”:false,”hr_disable_cpm_ads”:false,”hr_ib_exclude_taxes_and_fees”:false,”timed_refresh_after_15s”:false,”vr_broad_geo_list_redesign”:false,”pricing_mode_filter”:true,”cx_explicit_preferences_geopill”:false,”hrm_beta_full_story”:true,”cx_explicit_preferences_onboarding”:false,”saves_educator_explicit_preferences”:false,”commerce_link_strategy_underline_prices”:true,”t11216_mip_2_traditional_sign_up_ll”:false,”om_affiliate_commerce_button_CTA”:false,”ep_has_command_screen_control”:false,”post_signup_attr_promo_explicit_preferences”:false,”hotels_recently_viewed_shelf”:true,”fusion_detail_page_lithium”:false,”post_signup_attr_promo_masthead_join”:false,”fusion_lithium_attraction_products_list_page”:false,”hotels_walkability_filters”:false,”apr_lithium_control”:false,”forum_home_lithium”:true,”hr_dark_green_icons”:true,”optimus”:false,”housekeeping_mw_ux_updates”:false,”cx_explicit_preferences_scoped_home_cta”:true,”free_cancellation_larger_text_below_price”:false,”ml_hard_gate_targeting_logic”:false,”hard_gate_excl_disable_domain_direct”:false,”t11210_mip_variant_c”:false,”hotel_filters_fullscreen”:false,”seo_image_carousel_v3″:false,”ml_hard_gate_no_reqlo”:false,”cruise_better_by_sea”:false,”hotels_photo_no_indicator_dots”:false,”desktop_web”:true,”hotels_socialproof_shelf”:false,”image_carousel_ssr_7_images”:false,”trips_pop_stat_modal”:true,”trips_skip_check_whitelist_public_trips”:true,”hr_defer_facebook_sdk”:false,”review_detail_hard_gate_master_dt”:false,”rubicon_header_bidding”:true,”distance_filter_without_search”:true,”sentryio_js”:false,”t9944_sbx_2_bu”:false,”cx_brand_refresh_degreen”:true,”calendar_header_messaging_test”:false,”cx_explicit_preferences_scoped_home_cta_always_edit”:true,”hotels_recent_viewed_shelf_mas”:true,”entry_point_update”:true,”mobile_web”:false,”datepicker_field_prominence_retest_v1″:false,”saves_hotspot_button”:false,”tourism_lithium”:true,”ml_hard_gate_master”:false,”fusion_lithium_attractions_client_side_navigation”:false,”mw_datepicker_scroll_into_view”:false,”t10950_dynamic_tab_variant_1″:false,”account_screen_onb_control”:false,”facebook_onetap_desktop”:false,”attractions_lithium_filtered”:false,”bcom_partner_photos”:true,”cx_brand_refresh_header”:true,”media_preview_focal_point”:false,”exposed_text_legal_disclaimers”:false,”nearby_lithium”:true,”datepicker_ghost_default_dates”:false,”social_at_referencing_profile_links”:true,”t10951_dynamic_tab_variant_2″:false,”om_btb_gating_atf”:false,”mw_lists_delineation_and_medium_pic_photo”:false,”t12247_auto_trips_on_h”:false,”qualtrics_surveys_any”:false,”pixel_loading_timings”:false,”hotels_persistent_datepicker_mw_v2″:false,”housekeeping_ux_updates”:true,”hotels_persistent_datepicker_mw_v1″:false,”t4b_management_center_full_story_sampled”:false,”trips_bookmark”:true,”quicklinks_sorting_model”:false,”account_screen_onb”:false,”cx_explicit_preferences_onetap”:true,”t9945_sbx_2_journey”:true,”tc_is_registered”:false,”saves_educator_control”:false,”t12368_project_nova_all_servlets”:false,”health_notice_banner”:true,”t4b_management_center_full_story”:true,”t10349_facebook_onetap_w_value_copy”:false,”navigation_to_scoped_home”:false,”articles_lithium”:true,”trips_2018_collab”:true,”oracle_geo_heatmap”:true,”free_cancellation_red_pill”:false,”hotels_media_mas_carousels_render_when_almost_visible”:true,”home_location_prompt_master”:true,”hotels_medium_photo_peek”:false,”dummy_cache_on_client”:false,”disable_reg_dialog_for_hardgate”:false,”review_detail_hard_gate_dt_other_servlets”:false,”mobile_fixed_ad”:false,”ml_hard_gate_model_v1_reevaluate_on_page_view”:false,”free_cancellation_larger_text”:true,”account_merge”:true,”datepicker_field_prominence_tests”:true,”hotels_merch_flag_tweaks”:true,”articles_home_lithium”:true,”cx_brand_refresh_saves”:true,”ml_hard_gate_dt”:false,”image_carousel_ssr_all_images”:false,”t11209_mip_variant_b”:false,”qualtrics_site_brand_experience_surveys_bu”:false},”renders”:[{“id”:”component_13″,”props”:{},”package”:”onLc8Z”},{“id”:”hotel-list-promo-banner_component_2″,”props”:{},”package”:”ZFWRaT”},{“id”:”component_8″,”props”:{},”package”:”BqoTCX”},{“id”:”component_10″,”props”:{},”package”:”cmhYcA”},{“id”:”component_19″,”props”:{},”package”:”t7RFOq”},{“id”:”@ta/trips.save-to-trip:location:2276909_component_23″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2276909},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2289671_component_26″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2289671},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:6680531_component_29″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:6680531},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:666349_component_32″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:666349},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:8144198_component_35″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:8144198},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:3248198_component_38″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:3248198},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:671847_component_41″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:671847},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2175449_component_44″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2175449},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1852253_component_47″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1852253},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1022421_component_50″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1022421},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1724282_component_53″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1724282},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:577167_component_56″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:577167},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1799576_component_59″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1799576},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:604117_component_62″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:604117},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2270439_component_65″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2270439},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1163484_component_68″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1163484},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2455467_component_71″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2455467},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2216700_component_74″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2216700},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:8090861_component_77″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:8090861},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”}],”profilables”:[],”strictModeRoots”:[],”hydrations”:[{“id”:”component_17″,”props”:{},”package”:”NeFhoP”},{“id”:”component_9″,”props”:{},”package”:”08L0XB”},{“id”:”component_1″,”props”:{},”package”:”6yFYDi”},{“id”:”component_3″,”props”:{“geoName”:”San Teodoro”},”package”:”NOW72i”},{“id”:”component_5″,”props”:{“useResponsiveContainer”:”true”},”package”:”mwa76u”},{“id”:”component_6″,”props”:{},”package”:”MlvYp6″},{“id”:”component_7″,”props”:{},”package”:”mxARhC”},{“id”:”component_11″,”props”:{“initialSelectedFilters”:[{“param”:”bs”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”pop”,”trackingName”:”popular”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:”amen_9156″,”displayValues”:{}},{“param”:”trating”,”trackingName”:”ta_rating”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”amen”,”trackingName”:”amenities”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:”9156″,”displayValues”:{}},{“param”:”blender_tag”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfn”,”trackingName”:”neighborhood”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”distFromPnt”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”distFrom”,”trackingName”:”Filters_location”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”df”,”trackingName”:”deals”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”hsf”,”trackingName”:”safety_measures”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zff”,”trackingName”:”style”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”pRange”,”trackingName”:”Filters_price”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”zfc”,”trackingName”:”hotel_class”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”catTag”,”trackingName”:”accommodation”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zft”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfd”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”wlk”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”ns”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”oof”,”trackingName”:”optimus_offers”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfb”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”cat”,”trackingName”:”accommodation”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:”1,2,3″,”displayValues”:{}}],”filterCountsEnabled”:true,”geoId”:652016,”initialAvailableFilters”:[{“choices”:[{“value”:”1″,”label”:”Strutture che adottano misure di sicurezza”,”tracker”:”Covid19_hotel”,”count”:6,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:0,”paramName”:”hsf”,”showCounts”:false,”title”:”COVID-19″,”trackingName”:”safety_measures”,”visible”:true},{“choices”:[{“value”:”2″,”label”:”Cancellazione gratuita”,”tracker”:”FreeCancellation”,”count”:1,”disabled”:false,”infoTipText”:”Cancellazione gratuita u00E8 un filtro a livello di offerta che si applica a un’offerta specifica dei partner, come mostrato sotto l’offerta dei partner per una singola struttura.Le altre offerte per la stessa struttura potrebbero avere vantaggi differenti.”,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:true},{“value”:”3″,”label”:”Prenota ora, paga quando soggiorni”,”tracker”:”PayAtStay”,”count”:1,”disabled”:false,”infoTipText”:”Prenota ora, paga quando soggiorni u00E8 un filtro a livello di offerta che si applica a un’offerta specifica dei partner, come mostrato sotto l’offerta dei partner per una singola struttura.Le altre offerte per la stessa struttura potrebbero avere vantaggi differenti.”,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”1″,”label”:”Strutture con Offerte Speciali”,”tracker”:”SpecialOffers”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:1,”paramName”:”df”,”showCounts”:false,”title”:”Offerte”,”trackingName”:”deals”,”visible”:true},{“choices”:[],”filterType”:”price”,”index”:2,”numNights”:1,”numRooms”:1,”paramName”:”pRange”,”previewText”:null,”pricingModes”:[{“value”:”ALL_IN_RATE”,”displayValue”:”Prezzo + tasse e spese”,”disclaimerText”:”Il prezzo a notte calcolato in base alla tariffa della camera addebitata al cliente, incluse le tasse e le altre spese note e verificate secondo i dati forniti dall’utente.”,”isDefault”:true},{“value”:”ALL_IN_FULL_STAY”,”displayValue”:”Totale soggiorno + tasse e spese”,”disclaimerText”:”Il prezzo totale del soggiorno calcolato in base alla tariffa della camera addebitata al cliente, incluse le tasse e le altre spese note e verificate secondo i dati forniti dall’utente.”,”isDefault”:false}],”rangeMax”:349,”selectedPricingMode”:”ALL_IN_RATE”,”title”:”Prezzo”,”trackingName”:”Filters_price”,”visible”:true},{“choices”:[{“value”:”amen_9156″,”label”:”Sulla spiaggia”,”tracker”:”Beach”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”amen_9165″,”label”:”Ristorante”,”tracker”:”Restaurant”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”trating_4″,”label”:”4 punti e piu00F9″,”tracker”:”4 Bubbles and Up”,”count”:1,”disabled”:false,”bubbleRating”:4,”displayRatingAsBubbles”:true,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:3,”paramName”:”pop”,”previewText”:””,”showCounts”:false,”title”:”Molto richiesti”,”trackingName”:”popular”,”visible”:true},{“choices”:[{“value”:”21372″,”label”:”Bed & Breakfast”,”tracker”:”B&Bs & Inns – Lodging Type”,”displayLink”:”/Hotels-g652016-c2-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”21371″,”label”:”Hotel”,”tracker”:”Hotels & Motels – Lodging Type”,”displayLink”:”/Hotels-g652016-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”21373″,”label”:”Altri alloggi”,”tracker”:”Specialty Lodging – Lodging Type”,”displayLink”:”/Hotels-g652016-c3-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9230″,”label”:”Ranch”,”tracker”:”Ranch”,”displayLink”:”/Hotels-g652016-c3-zff27-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9200″,”label”:”Rifugi”,”tracker”:”Lodge”,”displayLink”:”/Hotels-g652016-c3-zff17-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:4,”linkOption”:{“value”:”6″,”label”:”Vedi case vacanza”,”tracker”:”VR”,”displayLink”:”/VacationRentals-g652016-Reviews-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Vacation_Rentals.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},”paramName”:”catTag”,”showCounts”:true,”title”:”Tipi di strutture”,”trackingName”:”accommodation”,”visible”:true},{“choices”:[{“value”:”9156″,”label”:”Sulla spiaggia”,”tracker”:”Beach”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9176″,”label”:”Connessione Wi-Fi gratuita”,”tracker”:”Free Wifi”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9179″,”label”:”Colazione inclusa”,”tracker”:”Free Breakfast”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9163″,”label”:”Parcheggio gratuito”,”tracker”:”Free Parking”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”21778″,”label”:”Accesso alla spiaggia”,”tracker”:”Beach Access – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9167″,”label”:”Animali ammessi”,”tracker”:”Pets Allowed”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9658″,”label”:”Aria condizionata”,”tracker”:”Air Conditioning”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9166″,”label”:”Bar/Lounge”,”tracker”:”Bar/Lounge”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18991″,”label”:”Escursioni”,”tracker”:”Hiking – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18944″,”label”:”Immersioni”,”tracker”:”Diving”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9162″,”label”:”Internet gratis”,”tracker”:”Free Internet”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18900″,”label”:”Noleggio biciclette”,”tracker”:”Bicycle Rental”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18993″,”label”:”Passeggiate a cavallo”,”tracker”:”Horseback Riding – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9165″,”label”:”Ristorante”,”tracker”:”Restaurant”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”19081″,”label”:”Snorkeling”,”tracker”:”Snorkeling – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18918″,”label”:”TV satellitare/via cavo”,”tracker”:”Cable / Satellite TV”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9170″,”label”:”Trasporti per l’aeroporto”,”tracker”:”Airport Transportation”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”11259″,”label”:”Vista mare”,”tracker”:”Ocean View”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”19127″,”label”:”Windsurf”,”tracker”:”Windsurfing – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:5,”paramName”:”amen”,”placeholderText”:”ad es.: Wi-Fi gratuito, colazione inclusa”,”previewText”:”Sulla spiaggia”,”showCounts”:false,”title”:”Servizi”,”trackingName”:”amenities”,”visible”:true},{“choices”:[],”filterType”:”distanceFrom”,”index”:6,”maxDistanceOption”:25,”paramName”:”distFrom”,”placeholderText”:”ad es.: Stagno di San Teodoro”,”poiTypes”:[“attr”,”air”,”uni”,”train”,”hotel”,”eat”,”theme_park”,”shop”,”general_hospital”,”port”,”ferry”,”corp”],”presetPOI”:[{“war_url”:”/UserReview-g652016-d4952984-Stagno_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”stagno di san teodoro”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d4952984-Reviews-Stagno_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Stagno di San Teodoro, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d4952984-Reviews-Stagno_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Stagno di San Teodoro, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Stagno di San Teodoro”,”name”:”Stagno di San Teodoro”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:4952984,”coords”:”40.81283,9.66082″},{“war_url”:”/UserReview-g652016-d13417849-Chiesa_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”chiesa di san teodoro”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d13417849-Reviews-Chiesa_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Chiesa di San Teodoro, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d13417849-Reviews-Chiesa_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Chiesa di San Teodoro, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Chiesa di San Teodoro”,”name”:”Chiesa di San Teodoro”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:13417849,”coords”:”40.77152,9.67095″},{“war_url”:”/UserReview-g652016-d12329483-Ufficio_Turistico-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”ufficio turistico”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d12329483-Reviews-Ufficio_Turistico-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Ufficio Turistico, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d12329483-Reviews-Ufficio_Turistico-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Ufficio Turistico, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Ufficio Turistico”,”name”:”Ufficio Turistico”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:12329483,”coords”:”40.77155,9.67059″},{“war_url”:”/UserReview-g652016-d12414865-Monte_Nieddu-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”monte nieddu”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d12414865-Reviews-Monte_Nieddu-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Monte Nieddu, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d12414865-Reviews-Monte_Nieddu-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Monte Nieddu, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Monte Nieddu”,”name”:”Monte Nieddu”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:12414865,”coords”:”40.733566,9.566792″}],”previewText”:”ad es.: Stagno di San Teodoro”,”title”:”Distanza da”,”trackingName”:”Filters_location”,”units”:”km”,”useDistSlider”:true,”visible”:true},{“filterType”:”walkability”,”index”:7,”paramName”:”wlk”,”previewText”:null,”title”:”Accessibilitu00E0 pedonale”,”trackingName”:null,”visible”:true},{“choices”:[{“value”:”5″,”label”:”5 punti “,”tracker”:”5 Bubbles”,”count”:0},{“value”:”4″,”label”:”4 punti e piu00F9″,”tracker”:”4 Bubbles and Up”,”count”:1},{“value”:”3″,”label”:”3 punti e piu00F9″,”tracker”:”3 Bubbles and Up”,”count”:1},{“value”:”2″,”label”:”2 punti e piu00F9″,”tracker”:”2 Bubbles and Up”,”count”:1}],”filterType”:”trating”,”index”:9,”paramName”:”trating”,”previewText”:null,”title”:”Valutazione”,”trackingName”:”ta_rating”,”visible”:true},{“choices”:[{“value”:”9568″,”label”:”3 stelle”,”tracker”:”3″,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9569″,”label”:”2 stelle”,”tracker”:”2″,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:10,”paramName”:”zfc”,”showCounts”:false,”title”:”Categoria hotel”,”trackingName”:”hotel_class”,”visible”:true},{“choices”:[{“value”:”5184″,”label”:”A basso costo”,”tracker”:”Budget”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9654″,”label”:”Fascia media”,”tracker”:”Mid-range”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”6216″,”label”:”Adatto alle famiglie”,”tracker”:”Family”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”6296″,”label”:”Business”,”tracker”:”Business”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9624″,”label”:”Romantico”,”tracker”:”Romantic”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:11,”paramName”:”zff”,”showCounts”:false,”title”:”Stile”,”trackingName”:”style”,”visible”:true},{“filterType”:”hotelBrandSearch”,”index”:12,”modalText”:”Brand e strutture”,”paramName”:”bs”,”placeholderText”:”Cerca per brand o nome della struttura”,”poiTypes”:[“hotel”],”presetBrands”:null,”presetPOI”:null,”previewText”:null,”title”:”Brand”,”trackingName”:”brand”,”visible”:true}],”initialMainListMatchCount”:14},”package”:”e374ol”},{“id”:”component_12″,”props”:{},”package”:”40rCF9″},{“id”:”component_14″,”props”:{“initialSelectedFilters”:[{“param”:”bs”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”pop”,”trackingName”:”popular”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:”amen_9156″,”displayValues”:{}},{“param”:”trating”,”trackingName”:”ta_rating”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”amen”,”trackingName”:”amenities”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:”9156″,”displayValues”:{}},{“param”:”blender_tag”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfn”,”trackingName”:”neighborhood”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”distFromPnt”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”distFrom”,”trackingName”:”Filters_location”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”df”,”trackingName”:”deals”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”hsf”,”trackingName”:”safety_measures”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zff”,”trackingName”:”style”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”pRange”,”trackingName”:”Filters_price”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”zfc”,”trackingName”:”hotel_class”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”catTag”,”trackingName”:”accommodation”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zft”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfd”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”wlk”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”ns”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”oof”,”trackingName”:”optimus_offers”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfb”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”cat”,”trackingName”:”accommodation”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:”1,2,3″,”displayValues”:{}}],”initialSortName”:”Qualitu00E0-prezzo”,”initialDescHeader”:”u003cspan class=’highlight’>14 di 225u003c/span> strutture sono disponibili a San Teodoro”,”initialAvailableFilters”:[{“choices”:[{“value”:”1″,”label”:”Strutture che adottano misure di sicurezza”,”tracker”:”Covid19_hotel”,”count”:6,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:0,”paramName”:”hsf”,”showCounts”:false,”title”:”COVID-19″,”trackingName”:”safety_measures”,”visible”:true},{“choices”:[{“value”:”2″,”label”:”Cancellazione gratuita”,”tracker”:”FreeCancellation”,”count”:1,”disabled”:false,”infoTipText”:”Cancellazione gratuita u00E8 un filtro a livello di offerta che si applica a un’offerta specifica dei partner, come mostrato sotto l’offerta dei partner per una singola struttura.Le altre offerte per la stessa struttura potrebbero avere vantaggi differenti.”,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:true},{“value”:”3″,”label”:”Prenota ora, paga quando soggiorni”,”tracker”:”PayAtStay”,”count”:1,”disabled”:false,”infoTipText”:”Prenota ora, paga quando soggiorni u00E8 un filtro a livello di offerta che si applica a un’offerta specifica dei partner, come mostrato sotto l’offerta dei partner per una singola struttura.Le altre offerte per la stessa struttura potrebbero avere vantaggi differenti.”,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”1″,”label”:”Strutture con Offerte Speciali”,”tracker”:”SpecialOffers”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:1,”paramName”:”df”,”showCounts”:false,”title”:”Offerte”,”trackingName”:”deals”,”visible”:true},{“choices”:[],”filterType”:”price”,”index”:2,”numNights”:1,”numRooms”:1,”paramName”:”pRange”,”previewText”:null,”pricingModes”:[{“value”:”ALL_IN_RATE”,”displayValue”:”Prezzo + tasse e spese”,”disclaimerText”:”Il prezzo a notte calcolato in base alla tariffa della camera addebitata al cliente, incluse le tasse e le altre spese note e verificate secondo i dati forniti dall’utente.”,”isDefault”:true},{“value”:”ALL_IN_FULL_STAY”,”displayValue”:”Totale soggiorno + tasse e spese”,”disclaimerText”:”Il prezzo totale del soggiorno calcolato in base alla tariffa della camera addebitata al cliente, incluse le tasse e le altre spese note e verificate secondo i dati forniti dall’utente.”,”isDefault”:false}],”rangeMax”:349,”selectedPricingMode”:”ALL_IN_RATE”,”title”:”Prezzo”,”trackingName”:”Filters_price”,”visible”:true},{“choices”:[{“value”:”amen_9156″,”label”:”Sulla spiaggia”,”tracker”:”Beach”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”amen_9165″,”label”:”Ristorante”,”tracker”:”Restaurant”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”trating_4″,”label”:”4 punti e piu00F9″,”tracker”:”4 Bubbles and Up”,”count”:1,”disabled”:false,”bubbleRating”:4,”displayRatingAsBubbles”:true,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:3,”paramName”:”pop”,”previewText”:””,”showCounts”:false,”title”:”Molto richiesti”,”trackingName”:”popular”,”visible”:true},{“choices”:[{“value”:”21372″,”label”:”Bed & Breakfast”,”tracker”:”B&Bs & Inns – Lodging Type”,”displayLink”:”/Hotels-g652016-c2-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”21371″,”label”:”Hotel”,”tracker”:”Hotels & Motels – Lodging Type”,”displayLink”:”/Hotels-g652016-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”21373″,”label”:”Altri alloggi”,”tracker”:”Specialty Lodging – Lodging Type”,”displayLink”:”/Hotels-g652016-c3-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9230″,”label”:”Ranch”,”tracker”:”Ranch”,”displayLink”:”/Hotels-g652016-c3-zff27-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9200″,”label”:”Rifugi”,”tracker”:”Lodge”,”displayLink”:”/Hotels-g652016-c3-zff17-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Hotels.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:4,”linkOption”:{“value”:”6″,”label”:”Vedi case vacanza”,”tracker”:”VR”,”displayLink”:”/VacationRentals-g652016-Reviews-San_Teodoro_Province_of_Olbia_Tempio_Sardinia-Vacation_Rentals.html”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},”paramName”:”catTag”,”showCounts”:true,”title”:”Tipi di strutture”,”trackingName”:”accommodation”,”visible”:true},{“choices”:[{“value”:”9156″,”label”:”Sulla spiaggia”,”tracker”:”Beach”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9176″,”label”:”Connessione Wi-Fi gratuita”,”tracker”:”Free Wifi”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9179″,”label”:”Colazione inclusa”,”tracker”:”Free Breakfast”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9163″,”label”:”Parcheggio gratuito”,”tracker”:”Free Parking”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”21778″,”label”:”Accesso alla spiaggia”,”tracker”:”Beach Access – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9167″,”label”:”Animali ammessi”,”tracker”:”Pets Allowed”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9658″,”label”:”Aria condizionata”,”tracker”:”Air Conditioning”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9166″,”label”:”Bar/Lounge”,”tracker”:”Bar/Lounge”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18991″,”label”:”Escursioni”,”tracker”:”Hiking – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18944″,”label”:”Immersioni”,”tracker”:”Diving”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9162″,”label”:”Internet gratis”,”tracker”:”Free Internet”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18900″,”label”:”Noleggio biciclette”,”tracker”:”Bicycle Rental”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18993″,”label”:”Passeggiate a cavallo”,”tracker”:”Horseback Riding – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9165″,”label”:”Ristorante”,”tracker”:”Restaurant”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”19081″,”label”:”Snorkeling”,”tracker”:”Snorkeling – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”18918″,”label”:”TV satellitare/via cavo”,”tracker”:”Cable / Satellite TV”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9170″,”label”:”Trasporti per l’aeroporto”,”tracker”:”Airport Transportation”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”11259″,”label”:”Vista mare”,”tracker”:”Ocean View”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”19127″,”label”:”Windsurf”,”tracker”:”Windsurfing – Amenities”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:5,”paramName”:”amen”,”placeholderText”:”ad es.: Wi-Fi gratuito, colazione inclusa”,”previewText”:”Sulla spiaggia”,”showCounts”:false,”title”:”Servizi”,”trackingName”:”amenities”,”visible”:true},{“choices”:[],”filterType”:”distanceFrom”,”index”:6,”maxDistanceOption”:25,”paramName”:”distFrom”,”placeholderText”:”ad es.: Stagno di San Teodoro”,”poiTypes”:[“attr”,”air”,”uni”,”train”,”hotel”,”eat”,”theme_park”,”shop”,”general_hospital”,”port”,”ferry”,”corp”],”presetPOI”:[{“war_url”:”/UserReview-g652016-d4952984-Stagno_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”stagno di san teodoro”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d4952984-Reviews-Stagno_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Stagno di San Teodoro, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d4952984-Reviews-Stagno_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Stagno di San Teodoro, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Stagno di San Teodoro”,”name”:”Stagno di San Teodoro”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:4952984,”coords”:”40.81283,9.66082″},{“war_url”:”/UserReview-g652016-d13417849-Chiesa_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”chiesa di san teodoro”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d13417849-Reviews-Chiesa_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Chiesa di San Teodoro, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d13417849-Reviews-Chiesa_di_San_Teodoro-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Chiesa di San Teodoro, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Chiesa di San Teodoro”,”name”:”Chiesa di San Teodoro”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:13417849,”coords”:”40.77152,9.67095″},{“war_url”:”/UserReview-g652016-d12329483-Ufficio_Turistico-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”ufficio turistico”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d12329483-Reviews-Ufficio_Turistico-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Ufficio Turistico, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d12329483-Reviews-Ufficio_Turistico-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Ufficio Turistico, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Ufficio Turistico”,”name”:”Ufficio Turistico”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:12329483,”coords”:”40.77155,9.67059″},{“war_url”:”/UserReview-g652016-d12414865-Monte_Nieddu-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”autobroadened”:”false”,”normalized_name”:”monte nieddu”,”type”:”ATTRACTION”,”title”:”Attrazioni “,”document_id”:null,”is_vr”:false,”url”:”/Attraction_Review-g652016-d12414865-Reviews-Monte_Nieddu-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”,”urls”:[{“url_type”:”attr”,”name”:”Monte Nieddu, San Teodoro, Italia”,”type”:”ATTRACTION”,”url”:”/Attraction_Review-g652016-d12414865-Reviews-Monte_Nieddu-San_Teodoro_Province_of_Olbia_Tempio_Sardinia.html”}],”is_broad”:false,”scope”:”global”,”name”:”Monte Nieddu, San Teodoro, Italia”,”data_type”:”LOCATION”,”details”:{“placetype”:10021,”parent_name”:”San Teodoro”,”grandparent_name”:”Italia”,”grandparent_id”:187768,”parent_id”:652016,”grandparent_place_type”:10001,”highlighted_name”:”Monte Nieddu”,”name”:”Monte Nieddu”,”parent_place_type”:10015,”parent_ids”:[652016,2451497,187879,187768,4,1],”geo_name”:”San Teodoro, Italia”},”value”:12414865,”coords”:”40.733566,9.566792″}],”previewText”:”ad es.: Stagno di San Teodoro”,”title”:”Distanza da”,”trackingName”:”Filters_location”,”units”:”km”,”useDistSlider”:true,”visible”:true},{“filterType”:”walkability”,”index”:7,”paramName”:”wlk”,”previewText”:null,”title”:”Accessibilitu00E0 pedonale”,”trackingName”:null,”visible”:true},{“choices”:[{“value”:”5″,”label”:”5 punti “,”tracker”:”5 Bubbles”,”count”:0},{“value”:”4″,”label”:”4 punti e piu00F9″,”tracker”:”4 Bubbles and Up”,”count”:1},{“value”:”3″,”label”:”3 punti e piu00F9″,”tracker”:”3 Bubbles and Up”,”count”:1},{“value”:”2″,”label”:”2 punti e piu00F9″,”tracker”:”2 Bubbles and Up”,”count”:1}],”filterType”:”trating”,”index”:9,”paramName”:”trating”,”previewText”:null,”title”:”Valutazione”,”trackingName”:”ta_rating”,”visible”:true},{“choices”:[{“value”:”9568″,”label”:”3 stelle”,”tracker”:”3″,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9569″,”label”:”2 stelle”,”tracker”:”2″,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:10,”paramName”:”zfc”,”showCounts”:false,”title”:”Categoria hotel”,”trackingName”:”hotel_class”,”visible”:true},{“choices”:[{“value”:”5184″,”label”:”A basso costo”,”tracker”:”Budget”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9654″,”label”:”Fascia media”,”tracker”:”Mid-range”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”6216″,”label”:”Adatto alle famiglie”,”tracker”:”Family”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”6296″,”label”:”Business”,”tracker”:”Business”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false},{“value”:”9624″,”label”:”Romantico”,”tracker”:”Romantic”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false}],”filterType”:”checkbox”,”index”:11,”paramName”:”zff”,”showCounts”:false,”title”:”Stile”,”trackingName”:”style”,”visible”:true},{“filterType”:”hotelBrandSearch”,”index”:12,”modalText”:”Brand e strutture”,”paramName”:”bs”,”placeholderText”:”Cerca per brand o nome della struttura”,”poiTypes”:[“hotel”],”presetBrands”:null,”presetPOI”:null,”previewText”:null,”title”:”Brand”,”trackingName”:”brand”,”visible”:true}]},”package”:”QZysVi”},{“id”:”component_15″,”props”:{“offsetTop”:”106″,”size”:”300×250-300×600″,”minWidth”:”295″,”narrowSize”:”160×600″},”package”:”SSbwxm”},{“id”:”component_16″,”props”:{“hotels”:[{“longitude”:9.67336,”latitude”:40.77034},{“longitude”:9.67944,”latitude”:40.7717},{“longitude”:9.682656,”latitude”:40.760468},{“longitude”:9.672899,”latitude”:40.77208},{“longitude”:9.66095,”latitude”:40.78009},{“longitude”:9.65698,”latitude”:40.78455},{“longitude”:9.63927,”latitude”:40.75247},{“longitude”:9.64784,”latitude”:40.77613},{“longitude”:9.65148,”latitude”:40.76906},{“longitude”:9.673671,”latitude”:40.770508},{“longitude”:9.67487,”latitude”:40.77112},{“longitude”:9.676529,”latitude”:40.82201},{“longitude”:9.68131,”latitude”:40.7703},{“longitude”:9.67967,”latitude”:40.62683},{“longitude”:9.647162,”latitude”:40.749844},{“longitude”:9.543693,”latitude”:40.771976},{“longitude”:9.635832,”latitude”:40.72294},{“longitude”:9.65967,”latitude”:40.77503},{“longitude”:9.67231,”latitude”:40.77427},{“longitude”:9.66947,”latitude”:40.77097}],”zoom”:11,”geoPoint”:{“longitude”:9.671213,”latitude”:40.77032},”disableWhileLoading”:false,”toggleType”:”STATIC_MAP”},”package”:”mjTUZq”},{“id”:”component_18″,”props”:{},”package”:”V7qLvM”},{“id”:”component_20″,”props”:{},”package”:”n69w9j”},{“id”:”photo-carousel-with-ribbon_component_21″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:15,”locationId”:2276909,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”998fc706-d3db-4f86-b7e9-da438e3d0848″,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:2276909_component_22″,”props”:{“locationId”:2276909},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_24″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:16,”locationId”:2289671,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”678a0f1d-9de2-4240-bdbf-6fb96a1b0bb8″,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:2289671_component_25″,”props”:{“locationId”:2289671},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_27″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:17,”locationId”:6680531,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”fae3004c-bc6c-4d79-a5de-f462f1a22340″,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:6680531_component_28″,”props”:{“locationId”:6680531},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_30″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:18,”locationId”:666349,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”30fee4e6-706e-46b2-8075-86af4386b01d”,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:666349_component_31″,”props”:{“locationId”:666349},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_33″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:19,”locationId”:8144198,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”a7092ac4-9aac-4d1b-992e-923bea468ed3″,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:8144198_component_34″,”props”:{“locationId”:8144198},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_36″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:1,”locationId”:3248198,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”2807aa09-42a9-4b81-9d35-0a7fd937caa2″,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:3248198_component_37″,”props”:{“locationId”:3248198},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_39″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:2,”locationId”:671847,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”3a738b34-e348-4c62-a10f-13db0d69c1c6″,”ribbons”:[{“text”:”Tutto compreso”,”tooltip”:”Questo alloggio offre opzioni tutto compreso. La disponibilitu00E0 e maggiori dettagli sui prezzi sono riportati sui siti dei partner.”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”ai”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:671847_component_40″,”props”:{“locationId”:671847},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_42″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:3,”locationId”:2175449,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”9d9396b3-9a9a-4f7e-abe4-b88bb8bf7a5a”,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:2175449_component_43″,”props”:{“locationId”:2175449},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_45″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:4,”locationId”:1852253,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”a8bac9eb-8180-49b2-9d25-9da8ecb57f08″,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:1852253_component_46″,”props”:{“locationId”:1852253},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_48″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:5,”locationId”:1022421,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”6e35f8ca-e260-4b5c-87b2-21b37b1f3970″,”ribbons”:[{“text”:”Tutto compreso”,”tooltip”:”Questo alloggio offre opzioni tutto compreso. La disponibilitu00E0 e maggiori dettagli sui prezzi sono riportati sui siti dei partner.”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”ai”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:1022421_component_49″,”props”:{“locationId”:1022421},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_51″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:6,”locationId”:1724282,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”4ff749e9-cbc9-4421-874f-b80611b95f7c”,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:1724282_component_52″,”props”:{“locationId”:1724282},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_54″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:7,”locationId”:577167,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”3f1d67e6-139a-4cb3-9d1e-7cc26194e24e”,”ribbons”:[{“text”:”Il piu00F9 votato”,”tooltip”:”Questa u00E8 una delle strutture piu00F9 votate a San Teodoro”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tr”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:577167_component_55″,”props”:{“locationId”:577167},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_57″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:8,”locationId”:1799576,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”8082d89b-dcb5-4d45-bfaa-efb8769630d8″,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:1799576_component_58″,”props”:{“locationId”:1799576},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_60″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:9,”locationId”:604117,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”8a91cb33-2051-41fe-8396-0ffea6570de8″,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:604117_component_61″,”props”:{“locationId”:604117},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_63″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:10,”locationId”:2270439,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”941e0f23-1510-4cff-9a16-4b65fefc3ce9″,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:2270439_component_64″,”props”:{“locationId”:2270439},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_66″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:11,”locationId”:1163484,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”6ff3b7fd-2b39-453e-bfbd-a5002e10bd9b”,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:1163484_component_67″,”props”:{“locationId”:1163484},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_69″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:12,”locationId”:2455467,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”174f9c69-feac-4948-b257-c907e27bb7cc”,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:2455467_component_70″,”props”:{“locationId”:2455467},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_72″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:13,”locationId”:2216700,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”3d1f9113-df97-4dd6-b3b6-19785f5ec2aa”,”ribbons”:[],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:2216700_component_73″,”props”:{“locationId”:2216700},”package”:”Jbh1_o”},{“id”:”photo-carousel-with-ribbon_component_75″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”shadowTrackRibbons”:[],”impressionKey”:”bf3a37a7ca3a428b8ed5a31b04d9bd0e”,”listIndex”:14,”locationId”:8090861,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”d55de903-8276-474f-8a16-b563e6f132b2″,”ribbons”:[{“text”:”Colazione inclusa”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”H5mpt_”},{“id”:”@ta/hotels.list-sanitization-icon:8090861_component_76″,”props”:{“locationId”:8090861},”package”:”Jbh1_o”},{“id”:”component_4″,”props”:{},”package”:”GVTdZB”}],”lazyLoadedModules”:[“08L0XB/L9pCXd”,”nZ7AfP”,”qxSl3I”,”4CrHtN”],”ssrPreloadedModules”:[“6FdDYx”,”RSaHg-“,”nZ7AfP”,”qxSl3I”,”4CrHtN/6GI-1U”,”xJD91H”,”-i3PJS”,”1lTcUI”,”PCLJ0D/6Vq8GY”,”hiEEdo”,”9cEmQ6″,”08L0XB/L9pCXd”,”4CrHtN/A1SA6X”,”RWfDzK”,”rH30tE”,”5-GvUO/gmVWZD”,”nPD67q/3S0Uyu”,”6gU0uK”,”PCLJ0D/YtE_eG”,”thFMrK/RQFZYD”,”4CrHtN”,”08L0XB/hCC7uv”,”q9bHm9″,”bsx_H5″,”wPStQ3″,”XpoM88/nBtf9e”,”neHaXV”,”pBQaod”,”m7h4d5″,”VXzhcp/czmiNy”,”a3FWKi”,”Pcs5Nw”,”MlvYp6/X2gdwD”,”oN8Ht7/95Lu0z”,”5W0bHx”,”fmDsJ-“,”kNh38S”,”7YQBl2/BWxTmr”,”j5kmnF”],”bundles”:[“XjkW5l”,”peh_3a”,”b3xEaf”,”u6QS-O”,”QZqymc”,”eDFcUX”,”535agn”,”V08PS7″,”wId9j-“,”nIW_Rw”,”l6BSGt”,”h74DsO”,”5-GvUO”,”UWCmG6″,”5-GvUO/vwu6ty”,”gt5mGS”,”MHKLZN”,”6hYgtn”,”w31zLi”,”jb_4W2″,”_qQcW3″,”vd4nty”,”B7vHz6″,”oo669z”,”asW43G”,”hA1RHn”,”mv7yXI”,”Ov85iR”,”xegF5W”,”8xs-IB”,”N4pTU2″,”c9QfOM”,”UhC_bI”,”fflEqf”,”F8raOV”,”5X2em-“,”fsml46″,”I81Q5L”,”_g8cls”,”rf6OMe”,”OyezR0″,”E8NZou”,”O8LbtK”,”n3D4ip”,”YwNsO_”,”DbN8HP”,”z2XL6d”,”faye7n”,”vuC2Rl”,”gsKhh7″,”T7FcVR”,”vmXh3M”,”W3_c4H”,”38xMQJ”,”-i3PJS”,”Jk5sjx”,”6RAaot”,”VANuRt”,”2R4xv2″,”OMqGt0″,”xZoNdB”,”PCLJ0D”,”b57PJQ”,”MGkW-Q”,”NJheb1″,”_cZwhS”,”Dg5_-9″,”yfS4GB”,”pLbCP4″,”CWppnH”,”Q7TAd7″,”dROhDJ”,”_Z-1K3″,”iuYvTO”,”BLrxBS”,”0DsHEV”,”OnmvvE”,”w4JHTr”,”RiHMo-“,”gGW5sO”,”jaCyxS”,”DjNvou”,”lMO0v3″,”vWxBAe”,”PCLJ0D/-EYc4Q”,”17wlKY”,”rKB8Wf”,”jSLlaY”,”aunxON”,”30t50h”,”cDcdfi”,”4LU1Ax”,”eFikmI”,”6NeHQy”,”jmIMrC”,”XtxvfD”,”vq6MSq”,”m5ZZFI”,”MG7IEl”,”IuX4Ar”,”qKFflQ”,”onLc8Z”,”lUWIhR”,”c_rvp5″,”PCbs_l”,”HZtvHO”,”PiTJFd”,”miRpRf”,”RYK9JE”,”eFKnUp”,”kfxuer”,”RXx5aI”,”O-HcBE”,”U-DhDC”,”WkP2XE”,”LFeTN6″,”T18SZK”,”p55fed”,”Ckp-bW”,”xmsC7X”,”6nM-E7″,”wLDeDm”,”CSOnVf”,”9I0t-6″,”EaDX1r”,”FnrCe6″,”idtHKM”,”QlZAVV”,”pT-O8u”,”5pSFLX”,”qK4vTI”,”2Ol0i2″,”fTyhRT”,”JFHNGL”,”4kVXmt”,”vF730k”,”6KWcSB”,”NeFhoP”,”uWZ6Id”,”08L0XB/r2vH2r”,”4Z07E2″,”08L0XB”,”QnohJ2″,”REpc0H”,”lYfRy0″,”S2VEpX”,”KwOV1Z”,”jP-Ceu”,”LgmAJW”,”GSiufF”,”9eU7bn”,”ngjICG”,”1yEXVQ”,”wc54S1″,”6HtwZc”,”TkeYrn”,”W8QPlr”,”Bf1Sux”,”vdGG-X”,”mT-Pb2″,”h7E4Ym”,”ts_HYm”,”AoLEtg”,”Hgrhyo”,”d9h_j1″,”n4rOEs”,”OiNFvE”,”6yFYDi”,”liWOeo”,”3mlAaP”,”mlSX5R”,”tV1cF7″,”Md_K7J”,”D8rGz0″,”ZFWRaT”,”NOW72i”,”NGIiZD”,”mlRREX”,”6m_xYI”,”mwa76u”,”6hAP4j”,”HKQFPT”,”MlvYp6″,”mxARhC”,”2NwMnm”,”R7DQr_”,”Xi-2HZ”,”Erjc5t”,”zPgUM0″,”fiorRT”,”MWFqPp”,”RA5fcz”,”qfSfGN”,”hxnqL3″,”wU942v”,”G9idyf”,”HDgDKt”,”XS7t-Q”,”osGflv”,”Oc3sTL”,”ABlMo4″,”Z7U8sN”,”lmr1u9″,”w2XwHO”,”BqoTCX”,”cmhYcA”,”HbmgZZ”,”bsx_H5″,”JjsMlI”,”oGM-aa”,”_pymO0″,”Knxjr7″,”pZzSdK”,”jbxuyk”,”x9N_Dh”,”iLImXn”,”x4gvL_”,”DtZPgN”,”XpoM88″,”wPStQ3″,”BsnOle”,”e374ol”,”SMVlF-“,”40rCF9″,”mjTUZq”,”fSRrv3″,”_KhVZh”,”QZysVi”,”uW7u9D”,”UNzP-1″,”325u3W”,”byvhe4″,”FVQ3zY”,”WjZ7ZM”,”SSbwxm”,”cFqhC1″,”AjUfyu”,”V7qLvM”,”t7RFOq”,”FgJHmE”,”-xj2Ol”,”n69w9j”,”PbGVd2″,”dhsgkP”,”-IO4YY”,”lfA4fx”,”nrVmZz”,”s1eoNx”,”CwU70X”,”u0KQ1z”,”FjZUT3″,”Jb1HNR”,”_wYjwe”,”zdk9wF”,”H5mpt_”,”eOSA73″,”Jbh1_o”,”zlqOrw”,”GVTdZB”,”Kv5xL1″,”xsqNye”,”08L0XB/jdYFmQ”,”-02Lut”,”dX3eZQ”,”MNKFIS”,”mHPUmd”,”griB9b”,”thFMrK”,”meOI_T”,”nPD67q”,”oiya90″,”0uWw9s”,”a4q8MG”,”OkJwbt”,”nPqO2d”,”fAPg3f”,”QRwZD2″,”-2hM2s”,”10CW2t”,”08L0XB/L9pCXd”,”xlsORH”,”sb81vR”,”sERCEg”,”tc4D5F”,”iZ1Bsx”,”cBPvJq”,”nZ7AfP”,”qxSl3I”,”16tLUw”,”4CrHtN”]}};(this.$WP=this.$WP||[]).push([‘@ta/features’,function(e){return [function(){e(‘default’,__WEB_CONTEXT__.pageManifest.features);},[]]},[]]);]]> 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 3 && arguments[3] !== undefined ? arguments[3] : null; if (!locationId || !eventDestinationImpressionKey) { return; } if (_trackOnServlet) { var currentServlet = window.pageServlet; if (currentServlet && currentServlet.indexOf(_trackOnServlet) = 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(‘hotels/listingKeyPlugin’, [‘babel/babel-helpers’, ‘utils/cookieutils’], function (babelHelpers, cookieUtils) { var LISTING_KEY_COOKIE_NAME = ‘hotelListingKey’; var _setListingKeyCookie = function _setListingKeyCookie(listingKey) { return cookieUtils.setCookieInSeconds(LISTING_KEY_COOKIE_NAME, listingKey, { duration: 10, ignoreVersion: true }); }; return { setListingKeyCookie: _setListingKeyCookie }; }); define(‘hotels/listingClick’, [‘vanillajs’, ‘utils/waiton’, ‘ta/Core/TA.FireEvent’, ‘hotels/listingKeyPlugin’], function(vanillajs, waitOn, taFireEvent, listingKeyPlugin) { var ASYNC_ACTIONS_TIMEOUT = 250; var LISTING_CLICK_EVENT = ‘hotels.listing_click’; var _preclickActions = []; var registerAsyncPreclick = function(action) { if (typeof action === ‘function’) { _preclickActions.push(action); } }; var clickEvent = function(elem, listingKey, redirectAction, isNewTab) { taFireEvent.fireEvent(LISTING_CLICK_EVENT, elem, listingKey); listingKeyPlugin.setListingKeyCookie(listingKey); if (isNewTab) { redirectAction(); _preclickActions.forEach(function (action) { action(elem, listingKey, function() {}); }); } else { var boundActions = _preclickActions.map(function(action) { return action.bind(null, elem, listingKey); }); waitOn(boundActions, redirectAction, ASYNC_ACTIONS_TIMEOUT); } }; return { LISTING_CLICK_EVENT: LISTING_CLICK_EVENT, registerAsyncPreclick: registerAsyncPreclick, clickEvent: clickEvent }; }); define(‘hotels/hotelinfocard/Events’, [‘mixins/Events’], function(Events) { ‘use strict’; return new Events( ‘toggleButtonClicked’, ‘infoCardToggled’, ‘infoCardExpanded’, ‘tabActivated’, ‘twoColumnTabDataLoaded’, ‘dealsTabDataLoaded’, ‘deferredContentLoaded’ ); }); define(‘hotels/tracking/clickthrough’, [‘babel/babel-helpers’, ‘common/trackingStreams’], function (babelHelpers, tracking) { var TRACK_SERVLETS = { “Hotels”: “H”, “SmartDeals”: “SD”, “MobileSmartDeals”: “MSD”, “HotelHighlight”: “HH”, “MobileHotelHighlight”: “MHH”, “HotelsNear”: “HN”, “HotelsList”: “HL” }; function track(elmtType, listingKey, impressionKey, locationId, trackingTreePlacementName, isNewTab) { var pageServlet = window.pageServlet; var source = TRACK_SERVLETS[pageServlet]; if (!listingKey) { tracking.error(‘Missing listing key on click through to Hotel Review. This is a major data concern and should not be ignored.’); return; } if (!source || !impressionKey || !locationId) { return; } var elmtKeys = { “lk”: listingKey, “ik”: impressionKey, “lid”: locationId, “et”: elmtType, “ttpn”: trackingTreePlacementName }; require([‘babel/babel-helpers’, ‘trjs!ta/Core/TA.Record’], function (babelHelpers, taRecord) { if (isNewTab) { taRecord.trackInteractions(pageServlet, elmtKeys, “LISTING_TO_HR_CLICK”); } else { taRecord.addInteractionsMEVT(source, elmtKeys, “LHR”); } }); } return { track: track }; }); 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 }, PriceMessageOpenTextLinks: { 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}, AspectHighlight: { trackingName: “hotelcell_aspects”, clickThrough: false}, UnavailableHLink: {trackingName: “unavailable_h_link”, clickThrough: true}, 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 _findAttribute(attribute, el, parent) { while (el && el.getAttribute) { var atThisLevel = el.getAttribute(attribute); if (atThisLevel) { return atThisLevel; } if (el === parent) { break; } el = el.parentNode; } return null; } 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, findAttribute: _findAttribute, trackingName: _getTrackingName, clickThrough: _getClickThrough, trackSource: _trackSource, trackElement: _trackElement }; } ); define(‘ta/util/openNewTab’, [‘utils/browserutils’, ‘ta/Browser’, ‘ta/util/Cookie’], function(Browser, taBrowser, taCookie) { return function(url) { var win; if (!taBrowser.isIE10Metro()) { if (Browser.ie && !taBrowser.isIE9orHigher()) { win = window.open(url, ‘_blank’, ‘location=yes,resizable=yes,menubar=yes,scrollbars=yes,toolbar=yes,width=’ + document.documentElement.clientWidth + ‘,height=’ + document.documentElement.clientHeight); } else { win = window.open(url, ‘_blank’); } } if (!win || win.closed || typeof win.closed===’undefined’) { taCookie.setPIDCookie(38821); window.location = url; return false; } return win; } }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_hsx_responsive_listing’,’handlers’,[‘handlers’]); /*jshint nonew: false, unused: vars */ define([“widget”, “common/trackingStreams”, “utils/throttle”, “utils/debounce”, “utils/VisibilityChecker”, “hotels/tracking/UEF-LocationDateSpecificClickThru”, “hotels/listingClick”, ‘utils/responsive’, ‘hotels/hotelinfocard/Events’, ‘hotels/tracking/clickthrough’, ‘hotels/recentlyViewedHotels’, ‘hotels/ClickSourceTracking’, ‘widget/components’, ‘ta/Core/TA.FireEvent’, ‘ta/util/openNewTab’, ‘common/trackingStreams’, ‘ta/Core/TA.LocalStorage’], function (globalContext, widget, tracking, throttle, debounce, VisibilityChecker, UEFClickThruTracker, hotelListingClick, Responsive, infoCardEvents, clickthrough, recentlyViewedHotels, clickSourceTracking, Components, taFireEvent, openNewTab, trackingStreams, localStorage) { var RESPONSIVE_LISTING_RENDERED_EVENT = ‘hotels.responsive_listing_rendered’; var RESPONSIVE_LISTING_SP_CLICK = ‘hotels.responsive_sp_click’; var isLBInterstitialCurrentlyDisplayedKey = ‘isLBInterstitialCurrentlyDisplayed’; var clickThruTracker = new UEFClickThruTracker({ pageAction: “ct_l2hr” // click thru list to hr }); var EVENT_NAME_BEST_SELLER_SEEN = ‘bestSellerSeen’; var EVENT_NAME_BEST_SELLER_EXISTS = ‘bestSellerExists’; var PAGE_PROPERTY_BEST_SELLER_SEEN = ‘in_view’; var PAGE_PROPERTY_BEST_SELLER_EXISTS = ‘loaded’; var CLASSNAME_RECENTLY_VIEWED = “recently_viewed”; var _listing = widget.element.querySelector(“.listing”); var _listingIdElmt = widget.element.querySelector(“[data-locationId]”); var _locId = _listingIdElmt && _listingIdElmt.getAttribute(‘data-locationId’) || 0; var _trackRecentlyViewed = _listing.hasAttribute(“data-show-recently-viewed”); var _showRecentlyViewed = _listing.getAttribute(“data-show-recently-viewed”) === “true”; var _isRecentlyViewedOnPageload = !!_listing.getAttribute(“data-is-recently-viewed”); _fireListingRenderEvent(); // names of click sources that direct to #REVIEWS var REVIEW_LINK_SOURCES = [‘ReviewCount’, ‘BubbleRating’]; // This fireEvent is used to notify hotels_sponsored_listing_data/handlers.js function _fireListingRenderEvent() { var _metaListing = widget.element.querySelector(“.meta_listing”); var listingKey = _metaListing && _metaListing.getAttribute(‘data-listingKey’); taFireEvent.fireEvent(RESPONSIVE_LISTING_RENDERED_EVENT, _metaListing, listingKey); } function _generateTrackingList() { return Object.keys(globalContext.trackIndices).map(function (i) { return “.prw_” + widget.name + ” [data-index=”” + i + “”]”; }); } function listingClick(event, elem) { var isReviewClick = false; var info = {}; // This is a fairly meh hack as we shouldn’t be relying on data-attributes for tracking webcomponents. if (Components.contains(event.target, elem, ‘@ta/trips.save-to-trip’)) { info = { source: ‘SaveToTripBookmark’ }; } else { info = clickSourceTracking.findClickInfo(event.target); } var listing = widget.element.querySelector(“.meta_listing”); var detailUrl = listing && listing.getAttribute(‘data-url’); // HOT-33322 for feature clickable_hotel_cells_white_space – we want clickable whitespace for the whole cell if ((!info.source || info.source === ‘PopIndex’) && listing.hasAttribute(‘data-clickableWhitespaceDT’) && detailUrl) { var _listingKey = listing.getAttribute(‘data-listingKey’); hotelListingClick.clickEvent(event.target, _listingKey, function () { tracking.trackEvent(‘hotel_cell_white_space’, ‘click’, ”); openNewTab(detailUrl); }, true); return; } if (!info.source) { clickSourceTracking.trackSource(“HotelListing”); //do not use the data-clicksource=”HotelListing” on DW since it will make the whole cell clickable. if (event.target.href) { window.open(event.target.href, event.target.target || “_blank”); } return; } else if (info.source === ‘HotelInfoCardToggle’) { // HotelInfoCardToggle has its own handler return; } var url = detailUrl; if (!url) { return false; } var locid = listing.getAttribute(‘data-locationId’); var index = listing.getAttribute(‘data-index’); var impressionKey = listing.getAttribute(‘data-impKey’); var listingKey = listing.getAttribute(‘data-listingKey’); var trackingTreePlacementName = listing.getAttribute(‘data-ttpn’); var amenityRibbonTrackingProperties = listing.getAttribute(‘data-amenityRibbonTrackingProperties’); clickSourceTracking.trackSource(info.source, locid, info.label); var shouldTrack = !listing.hasAttribute(‘data-noClickTrack’); if (shouldTrack && clickSourceTracking.clickThrough(info.source)) { clickthrough.track(info.source, listingKey, impressionKey, locid, trackingTreePlacementName, true); } if (REVIEW_LINK_SOURCES.indexOf(info.source) >= 0) { url += “#REVIEWS”; isReviewClick = true; } else if (Responsive.mobile() && (info.source === “ViewAllDealsClickThrough” || info.source === “PriceMessageOpenTextLinks”)) { // Adding this hash to the url shows all deals on HR clickthrough. // Not sure why poiHeading was the naming choice here. url += “#poiHeading”; } else if (Responsive.mobile() && info.source === “PriceMessageCheckRatesExpand” && url.indexOf(‘?’) === -1 && url.indexOf(‘#’) === -1) { url += “?expandDeals#CHECK_RATES_CONT”; } else if (info.source === “ViewAllDeals” || info.source === “ViewAllDealsClose”) { return; } if (!clickSourceTracking.clickThrough(info.source) && !Responsive.mobile()) { return; } // Bookmark clicks should not be tracked as a listing click or navigate away from the page if (Components.contains(event.target, elem, ‘@ta/trips.save-to-trip’)) { return; } // record user interaction with the listing cell for recently viewed tracking (HOT-23280) _trackRecentlyViewedClick(info); // HOT-31902 test an above widget indicating a top property based on tag if (listing.hasAttribute(‘data-highScoredTagComparisons’)) { var above = widget.element.querySelector(‘.highest-scored-hotel-with-tag’); var comparisonType = above && above.getAttribute(‘data-type’); tracking.trackEvent(comparisonType, ‘click’, ‘HR’); } // HOT-35460 – track HR clicks on properties with amenity flags if (amenityRibbonTrackingProperties) { amenityRibbonTrackingProperties.split(‘,’).forEach(function (trackingProperty) { tracking.trackEvent(trackingProperty, ‘click’); }); } hotelListingClick.clickEvent(event.target, listingKey, function () { // If SPTestAction is not decided in backend, // there should not be any additional/alternative behavior when the function listingClick is triggered. // So, follow the original behavior. if (!elem.hasAttribute(‘data-SPTestAction’)) { clickThruTracker.processAndTrackClickThrough(locid, impressionKey, url); tracking.setEvtCookie(‘Reviews’, info.source, locid, index, url); window.open(url, “_blank”); } // If SPTestAction is explicitly defined, use the private method to define that additional behavior. else { var testAction = elem.getAttribute(‘data-SPTestAction’); var testRecord = elem.getAttribute(‘data-SPTestRecord’); var currentElemListingKey = elem.getAttribute(‘data-listingKey’); var BAWebElem = elem.querySelector(‘[data-link]’); var BAWebLink = BAWebElem == null ? null : BAWebElem.getAttribute(‘data-link’); // Track the respective testing GARecords only when it is necessary. if (testAction != null || testAction !== “error”) { if (testRecord.includes(“E1”) && !isReviewClick) { _addGARecord(“responsive_listing”, “Generate_More_SP_External_Clicks_Test_V1”, _locId, false); } if (testRecord.includes(“E2”) && _isGARecordNeeded(testAction, BAWebLink) && !isReviewClick) { _addGARecord(“responsive_listing”, “Generate_More_SP_External_Clicks_Test_V2”, _locId, true); } if (testRecord.includes(“E3”) && _isGARecordNeeded(testAction, BAWebLink)) { _addGARecord(“responsive_listing”, “Generate_More_SP_External_Clicks_Test_V3”, _locId, true); } } taFireEvent.fireEvent(RESPONSIVE_LISTING_SP_CLICK, _locId, testAction, currentElemListingKey, event, url, BAWebLink, index, info, impressionKey, isReviewClick); } }, true); return false; } /** * This tracks an event either synchronously or not, depending on the sync argument * Synchronous tracking must be used for commerce clicks, since these may change the current page location, halting async JS * We may still lose those clicks if they happen before the session storage initializes and the TA.Record module defer-loads * @param moduleName the module that the event happened * @param action event action that should be recorded in GARecord * @param attr attribute that allows to distinguish one record from another. For ex) locationId * @param sync boolean -> true if the record should be synchronized with other actions; else false */ function _addGARecord(moduleName, action, attr, sync) { if (sync && require.defined(‘ta/Core/TA.Record’)) { require(‘ta/Core/TA.Record’).trackEventOnPage(moduleName, action, attr); } else { trackingStreams.trackEvent(moduleName, action, attr); } } /** * This tracks whether we need to fire GARecord in SP Value Prop Test. * @param testAction necessary action for what tabs should be open with listingClick function * @param BAWebLink BA website url * @returns {boolean} true if the record should be inserted; else false * @private */ function _isGARecordNeeded(testAction, BAWebLink) { if (testAction.includes(‘Meta’)) { return true; } return BAWebLink != null; } ta.queueForReady(initializeIdmTracking); ta.queueForReady(prepareLeaveBehindXSell); if (localStorage.enabled) { localStorage.remove(isLBInterstitialCurrentlyDisplayedKey); } // (SEO-9567) – Fire tracking events when IDM-eligible hotels are loaded, in-view, and clicked (even in control, when the IDM isn’t visible) function initializeIdmTracking() { if (widget.element.classList.contains(‘idm_eligible’)) { var pageProperty = widget.element.getAttribute(‘data-idm-pageProperty’); var rankText = widget.element.getAttribute(‘data-idm-rankText’); var mainText = widget.element.getAttribute(‘data-idm-text’); trackIdm(pageProperty, rankText, mainText); } if (widget.element.getAttribute(‘data-idm2-pageProperty’)) { var _pageProperty = widget.element.getAttribute(‘data-idm2-pageProperty’); var _rankText = widget.element.getAttribute(‘data-idm2-rankText’); var _mainText = widget.element.getAttribute(‘data-idm2-text’); trackIdm(_pageProperty, _rankText, _mainText); } var aspectTrackingText = widget.element.getAttribute(‘data-idm-badge-aspect-tracking-text’); if (aspectTrackingText) { trackIdmBadge(aspectTrackingText); } } function trackIdm(pageProperty, rankText, mainText) { // Track that the IDM has loaded ta.trackEventOnPage(pageProperty, ‘load_’ + rankText, mainText); // Fire a tracking event when the IDM is in view require([“babel/babel-helpers”, ‘trjs!ta/util/Element’], function (babelHelpers, taElement) { taElement.trackWhenScrolledIntoView(widget.element, [pageProperty, ‘in_view_’ + rankText, mainText]); }); // Fire a tracking event if any of the links within the IDM-eligible hotel is clicked var clicksToTrack = widget.element.querySelectorAll(‘a, .metaOffer’); if (clicksToTrack) { Array.prototype.forEach.call(clicksToTrack, function (clickable) { var clickType = clickable.classList.contains(“idm_link”) ? ‘link_click_’ : ‘click_’; clickable.addEventListener(“click”, function (e) { ta.trackEventOnPage(pageProperty, clickType + rankText, mainText); }); }); } } function trackIdmBadge(aspectTrackingText) { // Fire a tracking event when the IDM is in view require([“babel/babel-helpers”, ‘trjs!ta/util/Element’], function (babelHelpers, taElement) { taElement.trackWhenScrolledIntoView(widget.element, [‘idm-absa’, ‘in_view’, aspectTrackingText]); }); // Fire a tracking event if any of the links within the IDM-eligible hotel is clicked var clicksToTrack = widget.element.querySelectorAll(‘a, .metaOffer’); if (clicksToTrack) { Array.prototype.forEach.call(clicksToTrack, function (clickable) { clickable.addEventListener(“click”, function (e) { ta.trackEventOnPage(‘idm-absa’, ‘click’, aspectTrackingText); }); }); } } function localStorageIncludesLocId(localStorageKey) { var obj = localStorage.getObject(localStorageKey); return !!(obj && obj.includes && obj.includes(_locId)); } function prepareLeaveBehindXSell() { var xsellId = “xsell-lb-” + _locId; var bridgeElm = document.getElementById(“lb-xsell-wc-bridge”); var localStorageClickedId = ‘lb-clicked-id’; var activeXsellsHRKey = ‘activeXsellsHR’; var activeXsellsMetaKey = ‘activeXsellsMeta’; if (localStorage.enabled && !widget.element.querySelector(“#” + xsellId)) { // If the user is returning to the page, check local storage for the most recently clicked hotel to potentially display a cross-sell if (Responsive.mobile() && localStorage.get(localStorageClickedId) === _locId) { createLeaveBehindXSell(xsellId, bridgeElm, true); localStorage.remove(localStorageClickedId); } if (localStorage.has(activeXsellsHRKey) && localStorageIncludesLocId(activeXsellsHRKey)) { createLeaveBehindXSell(xsellId, bridgeElm, false); } if (localStorage.has(activeXsellsMetaKey) && localStorageIncludesLocId(activeXsellsMetaKey)) { createLeaveBehindXSell(xsellId, bridgeElm, true); } } // If the user is returning to the page, check local storage for the most recently clicked hotel to potentially display a cross-sell if (Responsive.mobile() && localStorage.enabled && localStorage.get(localStorageClickedId) === _locId) { createLeaveBehindXSell(xsellId, bridgeElm, true); localStorage.remove(localStorageClickedId); } var clicksToTrack = widget.element.querySelectorAll(‘a, .metaOffer, .external_website_link_v1 .isLink’); if (clicksToTrack && bridgeElm) { Array.prototype.forEach.call(clicksToTrack, function (clickable) { clickable.addEventListener(“click”, function (e) { var clickElement = e.toElement || e.srcElement; if (clickElement && clickElement.dataset && clickElement.dataset.clicksource === “CarouselArrow”) { return; } var isMetaClick = clickable.classList.contains(“metaOffer”) || clickable.classList.contains(“isLink”); var xsellElm = widget.element.querySelector(“#” + xsellId); if (!xsellElm) { if (localStorage.enabled) { // Store the list of active Xsells in local storage so that they persist if the page continues to update with new results var activeXsellsKey = isMetaClick ? activeXsellsMetaKey : activeXsellsHRKey; var activeXsells = localStorage.has(activeXsellsKey) ? localStorage.getObject(activeXsellsKey) : []; activeXsells.push(_locId); localStorage.set(activeXsellsKey, activeXsells); if (Responsive.mobile()) { // If the user navigates away via a meta link, store the ID of the clicked hotel in local storage // in order to display the cross-sell once they return (within 1 hour) localStorage.set(localStorageClickedId, _locId, 3600000); } } createLeaveBehindXSell(xsellId, bridgeElm, isMetaClick); } }); }); } } function createLeaveBehindXSell(xsellId, bridgeElm, isMetaClick) { require([“babel/babel-helpers”, ‘@ta/platform.runtime’], function (babelHelpers, runtime) { runtime.importBundle(‘@ta/cross-sells.leave-behind-component’).then(function () { var titleWrapElm = widget.element.getElementsByClassName(“title_wrap”)[0]; var listingTitleElm = widget.element.getElementsByClassName(“listing_title”)[0]; var hotelName = titleWrapElm ? titleWrapElm.innerText : listingTitleElm ? listingTitleElm.innerText : null; if (!hotelName) { return; } var _widget$element$getEl = widget.element.getElementsByClassName(“meta_listing”), _widget$element$getEl2 = babelHelpers.slicedToArray(_widget$element$getEl, 1), belowListingEm = _widget$element$getEl2[0]; var elm = document.createElement(‘div’); elm.id = xsellId; belowListingEm.parentNode.insertBefore(elm, belowListingEm.nextSibling); var trackingPrefix = isMetaClick ? “meta” : “hr”; var xsellIndex = document.querySelectorAll(‘[id^=”xsell-lb-“]’).length; var position = _listingIdElmt.getAttribute(“data-index”); var display = bridgeElm.getAttribute(“data-showxsell”); var leaveBehindXsellUIType = bridgeElm.getAttribute(“data-leaveBehindXsellUIType”); var shouldShowUI = true; if (leaveBehindXsellUIType !== ‘SHELF’ && window && window.event) { shouldShowUI = !(window.event.ctrlKey || window.event.metaKey) && !localStorage.has(isLBInterstitialCurrentlyDisplayedKey); } if (leaveBehindXsellUIType && shouldShowUI) { var pageAttr = getPageAttribute(leaveBehindXsellUIType, trackingPrefix, xsellIndex, position); localStorage.set(isLBInterstitialCurrentlyDisplayedKey, true); runtime.createRoot(xsellId, ‘@ta/cross-sells.leave-behind-component’, { locationId: _locId, hotelName: hotelName, blenderTag: bridgeElm.getAttribute(“data-pagetagname”), blenderTagIds: bridgeElm.getAttribute(“data-blenderTagIds”), pageAttr: pageAttr, display: display, displayMessages: bridgeElm.getAttribute(“data-showxsellmsgs”), poiId: bridgeElm.getAttribute(“data-poiid”), poiName: bridgeElm.getAttribute(“data-poiname”), milesFromPoi: bridgeElm.getAttribute(“data-maxxselldist”), leaveBehindXsellUIType: leaveBehindXsellUIType, onClose: function onClose(event) { closeLeaveBehindXsell(runtime, xsellId, elm, pageAttr, leaveBehindXsellUIType); } }); if (display) { _listingIdElmt.parentNode.parentNode.classList.add(“boxShadow”); } } }); }); } function getPageAttribute(leaveBehindXsellUIType, trackingPrefix, xsellIndex, position) { if (leaveBehindXsellUIType && leaveBehindXsellUIType !== ‘SHELF’) { if (leaveBehindXsellUIType === ‘INTERSTITIAL’) { return trackingPrefix + “-lb-interstitial-” + xsellIndex + “-position-” + position; } else if (leaveBehindXsellUIType === ‘INTERSTITIAL_WITH_COMPARISON_GRID’) { return trackingPrefix + “-lb-interstitial-comparison-grid-” + xsellIndex + “-position-” + position; } else if (leaveBehindXsellUIType === ‘INTERSTITIAL_WITH_BRAND_MESSAGING_LIGHTBOX’) { return trackingPrefix + “-lb-interstitial-brand-messaging-” + xsellIndex + “-position-” + position; } } else if (leaveBehindXsellUIType === ‘SHELF’) { return trackingPrefix + “-shelf-” + xsellIndex + “-position-” + position; } } function closeLeaveBehindXsell(runtime, xsellId, elm, pageAttr, leaveBehindXsellUIType) { runtime.destroyRoot(xsellId); elm.remove(); tracking.trackEvent(leaveBehindXsellUIType === ‘SHELF’ ? ‘osm-pc-leave-behind’ : ‘osm-pc-interstitial’, ‘closed’, pageAttr); if (leaveBehindXsellUIType !== ‘SHELF’) { localStorage.remove(isLBInterstitialCurrentlyDisplayedKey); } var viewTrackedXsellsKey = ‘viewTrackedXsells’; var viewTrackedXsells = localStorage.getObject(viewTrackedXsellsKey) || []; viewTrackedXsells = viewTrackedXsells.filter(function (value, index, arr) { value != _locId; }); localStorage.set(viewTrackedXsellsKey, viewTrackedXsells); } function recordBestSellerEvent( /*String*/eventName, /*String*/pageAction) { var metaListingElement = widget.element.querySelector(‘.meta_listing’); if (metaListingElement && metaListingElement.hasAttribute(‘data-index’)) { tracking.trackEvent(eventName, pageAction, metaListingElement.getAttribute(‘data-index’)); } } function setBestSellerEventListener( /*String*/eventName, /*String*/pageAction) { widget.element.addEventListener(eventName, function () { recordBestSellerEvent(eventName, pageAction); }, false); } /** * HOT-23280: Fire a tracking event iff click to HR on a recently-viewed listing * **/ function _trackRecentlyViewedClick(clickInfo) { if (!clickInfo || !_trackRecentlyViewed) { return; } recentlyViewedHotels.interactedWithLocation(_locId); recentlyViewedHotels.trackEventIfRecentlyViewed(_locId, ‘CLICK_’ + clickInfo.source, _locId); } var _scrollOffset = 0; var _scrollRequestThrottled = debounce(function (target, offset) { if (!document.body.contains(widget.element)) { infoCardEvents.off(‘infoCardExpanded’, _scrollRequestThrottled); return; } if (widget.element.contains(target) && window.innerHeight > widget.element.clientHeight) { _scrollOffset = offset; require([“babel/babel-helpers”, ‘trjs!ta/util/Element’], function (babelHelpers, taElement) { taElement.scrollIntoView(widget.element, -1 * _scrollOffset, true); }); } }, 500, true); infoCardEvents.on(‘infoCardExpanded’, _scrollRequestThrottled); // Initialize scroll tracking if (!globalContext.trackingInitialized) { var checker = throttle(VisibilityChecker({ elements: _generateTrackingList(), callback: function callback(nodes) { nodes.forEach(function (n) { var index = parseInt(n.getAttribute(‘data-index’)); if (globalContext.trackIndices[index]) { tracking.trackEvent(‘hotelcell’, ‘in_view’, index); delete globalContext.trackIndices[index]; } }); var newList = _generateTrackingList(); if (newList.length === 0) { window.removeEventListener(‘scroll’, checker); } return _generateTrackingList(); } }), 200); window.addEventListener(‘scroll’, checker); globalContext.trackingInitialized = true; } //I initially had this with one shared listener for all instances, but this meant only the first instantiation // of the widget would add the litener, which calls widget.element. The result was that every widget //used the widget.element from that first one, preventing us from accessing the data-index attribute we actually wanted setBestSellerEventListener(EVENT_NAME_BEST_SELLER_SEEN, PAGE_PROPERTY_BEST_SELLER_SEEN); setBestSellerEventListener(EVENT_NAME_BEST_SELLER_EXISTS, PAGE_PROPERTY_BEST_SELLER_EXISTS); if (_trackRecentlyViewed) { if (_isRecentlyViewedOnPageload) { recentlyViewedHotels.registerVisitedLocation(_locId, _listing); } else { recentlyViewedHotels.registerUnvisitedLocation(_locId, _listing, _showRecentlyViewed ? CLASSNAME_RECENTLY_VIEWED : “”); } } return { listingClick: listingClick }; }.bind(null, { trackingInitialized: false, trackIndices: { 5: true, 10: true, 15: true, 20: true, 30: true, 35: true, 40: true, 45: true, 50: true, 55: true, 60: true } }));});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_vr_price_tvg’,’handlers’,[‘handlers’]); /*jshint nonew: false */ /*jshint unused:false */ define([“widget”, “responsive/text-resizer”, “common/trackingStreams”, “commerce/offerclick”], (function(widget, resizer, trackingStreams, offerclick) { resizer.init(widget.element); function clickVROffer(event, elem) { var token = elem.getAttribute(‘data-clickToken’); var aok = elem.getAttribute(‘data-aok’); var propertyUrl = elem.getAttribute(‘data-propertyUrl’); aok && trackingStreams.trackEvent(widget.name, ‘clickVROffer’, aok); if (token) { offerclick.clickEvent(event, elem, token); } else if (propertyUrl) { window.open(propertyUrl); } } return { clickVROffer: clickVROffer }; }).bind({})); }); define(‘hotels/baLinkClick’, [‘vanillajs’, ‘utils/waiton’, ‘ta/Core/TA.FireEvent’, ‘commerce/cookieSetter’, ‘utils/urlutils’], function(vanillajs, waitOn, taFireEvent, cookieSetter, UrlUtils) { var ASYNC_ACTIONS_TIMEOUT = 250; var WEB_LINK_CLICK_EVENT = ‘hotels.ba_web_click’; var _preclickActions = []; var registerAsyncPreclick = function(action) { if (typeof action === ‘function’) { _preclickActions.push(action); } }; var clickEvent = function(elem, commURL, redirectAction, isNewTab) { taFireEvent.fireEvent(WEB_LINK_CLICK_EVENT, elem); cookieSetter(); if (isNewTab) { redirectAction(); _preclickActions.forEach(function (action) { action(elem, UrlUtils.getUrlQueryArgs(commURL), function() {}); }); } else { var boundActions = _preclickActions.map(function(action) { return action.bind(null, elem, UrlUtils.getUrlQueryArgs(commURL)); }); waitOn(boundActions, redirectAction, ASYNC_ACTIONS_TIMEOUT); } }; return { WEB_LINK_CLICK_EVENT: WEB_LINK_CLICK_EVENT, registerAsyncPreclick: registerAsyncPreclick, clickEvent: clickEvent }; });if (require) {require([‘ta/rollupAmdShim’], function(rollupAmdShim) { rollupAmdShim.install([], [“page-model”]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],[“page-model”]);} } define(‘t4b/tracking/b2bClickTracking’, [‘babel/babel-helpers’, ‘page-model’, ‘ajax-request’], function (babelHelpers, pageModel, ajax) { var _trackClick = function _trackClick(clickType, _ref) { var _ref$context = _ref.context, context = _ref$context === undefined ? pageModel.session.pageServlet : _ref$context, data = babelHelpers.objectWithoutProperties(_ref, [‘context’]); return ajax(‘/B2BClickTracking/’ + context + ‘/’ + clickType, { method: ‘POST’, data: JSON.stringify(babelHelpers[‘extends’]({ puid: pageModel.session.uid }, data)), ‘content-type’: ‘application/json’, ‘x-requested-by’: pageModel.JS_SECURITY_TOKEN }); }; var _offerlessCommerceClick = function _offerlessCommerceClick(commerceUrl) { return commerceUrl && ajax(commerceUrl, { method: ‘GET’ }); }; return { trackContactClick: function trackContactClick(options) { return _trackClick(‘contact’, options); }, trackSpecialOfferClick: function trackSpecialOfferClick(options) { return _trackClick(‘specialOffer’, options); }, trackOfferlessCommerceClick: _offerlessCommerceClick }; }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_hotel_icons_list’,’handlers’,[‘handlers’]); define([‘babel/babel-helpers’, ‘widget’, ‘hotels/baLinkClick’, ‘ta/util/openNewTab’, ‘t4b/tracking/b2bClickTracking’, ‘common/trackingStreams’, ‘utils/urlDecoder’, ‘hotels/listingClick’], function (babelHelpers, widget, baLinkClick, openNewTab, b2bClickTracking, tracking, urlDecoder, hotelListingClick) { function webLinkClick(e, element) { e.stopPropagation(); var locationId = element.getAttribute(‘data-locid’); var isCommerce = element.hasAttribute(‘data-curl’) && element.getAttribute(‘data-curl’) === ‘true’; var urlRedir = element.getAttribute(‘data-link’); var contactColumn = element.getAttribute(‘data-number’); var redirectCallback = function redirectCallback() { openNewTab(urlRedir); }; var commerceURL = isCommerce && urlRedir || ”; baLinkClick.clickEvent(element, commerceURL, redirectCallback, true); b2bClickTracking.trackContactClick({ locationId: locationId, contactType: ‘URL_HOTEL’, contactColumn: contactColumn, isCommerce: isCommerce }); } // handle clicks on email/phone number icons function handleContactClick(event, contactDetails, element) { // email var locationId = element.getAttribute(‘data-locid’); var contactColumn = element.getAttribute(‘data-number’); var contactType = void 0; if (contactDetails.includes(‘@’)) { window.location = ‘mailto: ‘ + contactDetails; contactType = ‘EMAIL’; } else { // phone window.location = ‘tel: ‘ + contactDetails; contactType = ‘PHONE’; } b2bClickTracking.trackContactClick({ locationId: locationId, contactType: contactType, contactColumn: contactColumn }); } /* * This will track clicks on the amenities in the Hotel Cell and bring the user into the /HR page */ function clickToHR(e, element, url, amenityName) { if (url) { var listing = widget.element; while (listing && !listing.classList.contains(‘meta_listing’)) { listing = listing.parentElement; } var listingKey = listing && listing.getAttribute(‘data-listingKey’); hotelListingClick.clickEvent(e.target, listingKey, function () { tracking.trackEvent(‘hotel_cell_amenity’, ‘click’, amenityName); openNewTab(url); }, true); } } return { webLinkClick: webLinkClick, clickToHR: clickToHR, handleContactClick: handleContactClick }; });}); define(‘remoteModule’, [‘vanillajs’], function() { ‘use strict’; var pending = {}; function _data(el, key) { return el == null ? null : el.getAttribute(‘data-‘ + key); } function _parentWithAttr(el, attribute) { while (el && el !== document.body) { if (el.getAttribute(attribute)) { return el; } el = el.parentNode; } return null; } function _buildDeps(elt, param, plcn, prwn, prefixes) { var val = _data(elt, param); if (!val) { return []; } return val .replace(/$plc:/g, ‘$prp/’+plcn+’/’) .replace(/$prw:/g, ‘$prw/’+prwn+’/’) .split(‘,’) .filter(function(s) { return !!s.length }) .reduce(function(ret, key) { return ret.concat(prefixes.map(function(prefix) { var appendDust = prefix === ‘trdust!’ && key.indexOf(‘/’) = 0){ return; } if (require.defined(modl)){ var obj = require(modl); (fn ? obj[fn] : obj).apply(obj, args); return; } (pending[modl] || (pending[modl] = [])).push(elt); var plc = _parentWithAttr(elt, ‘data-placement-name’) , prw = _parentWithAttr(elt, ‘data-prwidget-name’) , plcn = _data(plc, ‘placement-name’) , prwn = _data(prw, ‘prwidget-name’) , deps = [].concat( _buildDeps(elt, ‘load-all’, plcn, prwn, [‘trjs!’, ‘trcss!’, ‘trdust!’]), _buildDeps(elt, ‘load-js’, plcn, prwn, [‘trjs!’]), _buildDeps(elt, ‘load-css’, plcn, prwn, [‘trcss!’]), _buildDeps(elt, ‘load-dust’, plcn, prwn, [‘trdust!’]) ); if (/^$plc:/.test(modl)){ args.unshift(deps); args.unshift(modl.substr(5) + ‘.’ + fn); args.unshift(plc.getAttribute(‘id’)); args.unshift(‘evCall’); args.unshift(‘ta/p13n/placements’); requireCallLast.apply(window, args); } else if (/^$prw:/.test(modl)){ args.unshift(modl.substr(5) + ‘.’ + fn); args.unshift(‘call’); args.unshift(‘ta/prwidgets’); requireCallLast.apply(window, args); } else { require(deps, function(){ pending[modl] = pending[modl].filter(function(e){ return e != elt; }); var obj = require(modl); (fn ? obj[fn] : obj).apply(obj, args); }); } }; }); define(“hotels/TrackingServletHelper”, [‘vanillajs’], function () { function getTrackingServlet() { var servlet = window && window.pageServlet; switch (servlet) { case “Hotels”: return “h”; case “SmartDeals”: return “sd”; case “HotelHighlight”: return “hh”; case “Hotel_Review”: return “hr”; case “HotelsList”: return “hl”; default: return “_unknown”; } } return { getTrackingServlet: getTrackingServlet }; });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_hsx_saves_badge’,’handlers’,[‘handlers’]); /*jshint nonew: false, unused: vars */ define([“widget”, “remoteModule”, “common/trackingStreams”, “hotels/TrackingServletHelper”], function(widget, remoteModule, tracking, TrackingServletHelper) { return { track: function(event) { event && event.stopPropagation(); var trackingServlet = TrackingServletHelper.getTrackingServlet(); tracking.trackEvent(‘saves_’ + trackingServlet, ‘click’); } }; }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_location_pop_index’,’handlers’,[‘handlers’]); define([‘widget’, ‘ta/util/openNewTab’], function(widget, openNewTab) { ‘use strict’; function _clickPopIndex(event, element) { var target = event.target || event.srcElement; if (target.tagName === ‘A’ && target.href) { openNewTab(target.href); event.stopPropagation(); } } return { clickPopIndex: _clickPopIndex }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_hsx_hd_review_snippets_center_commerce’,’handlers’,[‘handlers’]); /*jshint nonew: false, unused: vars */ define([“widget”, “ta/util/openNewTab”, “common/trackingStreams”], function(widget, openNewTab, trackingStreams) { /* * Warning: do NOT demand load js in here. Chrome will think you are loading a pop-up * and block us from opening a new tab. */ function _snippetClick(event, elem) { trackingStreams.setEvtCookie(‘Reviews’, ‘Snippet’, elem.getAttribute(‘data-reviewId’), elem.getAttribute(‘data-pos’), elem.href); elem.href && openNewTab(elem.href); event.stopPropagation(); return false; } return { snippetClick: _snippetClick }; }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_h_responsive_commerce_tvg_multi_larger_thumbnail’,’handlers’,[‘handlers’,’tablet/tablet’]); /*jshint nonew: false */ /*jshint unused:false */ define([“widget”, “commerce/offerclick”, “responsive/text-resizer”, “common/trackingStreams”, ‘ta/Core/TA.Event’, “hotels/recentlyViewedHotels”, “ta/Core/TA.LocalStorage”, ‘ta/Core/TA.FireEvent’, ‘hotels/ClickSourceTracking’], (function(widget, offerclick, resizer, trackingStreams, taEvent, recentlyViewedHotels, localStorage, taFireEvent, clickSourceTracking) { //shared state between all instances of this widget. //defining it this way lets us pick it up in tablet/tablet.js widget._shared = this; var _shared = this; var commerceElem = widget.element.querySelector(“.comblock”); var locId = Number((commerceElem && commerceElem.getAttribute(“data-locationId”)) || “0”); var listPos = Number((commerceElem && commerceElem.getAttribute(“data-listPos”)) || “0”); _shared.clickableWhiteSpace = Boolean((commerceElem && commerceElem.getAttribute(“data-clickablewhitespacedt”))); var RESPONSIVE_LISTING_OPEN_META_LINK = ‘hotels.responsive_open_meta_link’; taFireEvent.off(RESPONSIVE_LISTING_OPEN_META_LINK, clickOfferWrapper); taFireEvent.on(RESPONSIVE_LISTING_OPEN_META_LINK, clickOfferWrapper); function _findClickElement(el) { while (el && el.getAttribute) { if (el.getAttribute(‘data-clickPart’)) { return el; } el = el.parentNode; if (el === widget.element) { break; } } return null; } function _track(event, elem) { var clickElem = _findClickElement(event && event.srcElement); var part = clickElem ? clickElem.getAttribute(‘data-clickPart’) : ‘other’; var index = clickElem ? clickElem.getAttribute(‘data-index’) : ”; trackingStreams.trackEvent(‘hotelcell_h_meta’, part + “_” + index); } /** * HOT-24629: track commerce click on best seller hotel * */ function _trackCommerceClickOnBestSeller() { var isBestSeller = commerceElem.getAttribute(‘data-bestseller’); if (isBestSeller) { trackingStreams.trackEvent(‘best_seller_click’, locId, listPos); } } /** * HOT-35460: track commerce clicks on properties with preferred amenities * */ function _trackCommerceClickOnAmenityRibbon() { var amenityRibbonTrackingProperties = commerceElem.getAttribute(‘data-amenityRibbonTrackingProperties’); if (amenityRibbonTrackingProperties) { amenityRibbonTrackingProperties.split(‘,’).forEach( function (trackingProperty) { trackingStreams.trackEvent(trackingProperty, ‘click’); }); } } /** * HOT-31902: track commerce click on a high scoring tag compared hotel * */ function _trackCommerceClickOnHighScoringHotel() { var compare = commerceElem.getAttribute(‘data-comparisonType’); if (compare) { trackingStreams.trackEvent(compare, ‘click’, ‘commerce’); } } function _trackCugClick(elem) { var specialRateTracking = elem.querySelector(‘.special_rate_tracking’); if (specialRateTracking) { var provider = elem ? elem.getAttribute(‘data-provider’) : ‘Unknown’; var type = elem ? elem.getAttribute(‘data-specialratetype’) : ‘None’; trackingStreams.trackEvent(‘Hotels_Loyalty_HR_click’, provider + “|” + type, specialRateTracking.getAttribute(‘productattribute’)); } } function clickOffer(event, elem, forcedBehavior) { if (_shared.clickableWhiteSpace) { event.stopPropagation(); } _track(event, elem); var token = elem.getAttribute(“data-clickToken”); if (token) { // HOT-23280: Recently viewed tracking for commerce clicks recentlyViewedHotels.trackCommerceClick(locId); offerclick.clickEvent(event, elem, token, false, forcedBehavior); _trackCommerceClickOnBestSeller(); _trackCommerceClickOnHighScoringHotel(); _trackCommerceClickOnAmenityRibbon(); } _trackCugClick(elem); } function clickOfferWrapper(event, listingKey, forcedBehavior) { // If the received widget is not in the current DOM, we turn the eventListener off and do not perform any action. // eslint-disable-next-line no-restricted-globals if (!document.body.contains(widget.element)) { taFireEvent.off(RESPONSIVE_LISTING_OPEN_META_LINK, clickOfferWrapper); return; } var child = commerceElem.querySelector(‘.premium_offer_container’); var buttonElem = child == null ? null : child.querySelector(‘[data-clicktoken]’); var currentElemListingKey = clickSourceTracking.findAttribute(‘data-listingKey’, commerceElem); if(listingKey === currentElemListingKey) { clickOffer(event, buttonElem, forcedBehavior); } } function _processOverlayOnUpdateWidget() { // if there is an overlay already open, and we get new widget as of ajax update, we need to re-process the overlay if(_shared.dropDown && _shared.dropDownListPos == listPos ) { var newSrc = widget.element.querySelector(“.moreLink”); if (_shared.dropDownLocId != locId || !newSrc) { // if the widget at the same position is of different property, close the dropdown _shared.dropDown.destroy(); _shared.dropDown=null; }else { _shared.dropDown.sourceElement = newSrc; // if the new widget is of the same property and same location, update the src element for the dropdwon } } } function _trackCug() { var trackingEl = widget.element.querySelector(‘.special_rate_tracking’); if (trackingEl) { var guests = ta.page.guests.toQueryJson().uguests; var checkin = ta.page.hasDates(‘CHECKIN’) ? ta.page.getDates(‘CHECKIN’)[0].toLocaleDateString() : ‘default’; var checkout = ta.page.hasDates(‘CHECKOUT’) ? ta.page.getDates(‘CHECKOUT’)[0].toLocaleDateString() : ‘default’; var dates = checkin + ‘_’ + checkout; var label = [trackingEl.getAttribute(‘pageaction’), locId, checkin, checkout, guests].join(‘_’); trackingStreams.trackEventOnPageOnce(trackingEl.getAttribute(‘pageproperty’), label, trackingEl.getAttribute(‘productattribute’) ); } } taEvent.on(“page-polling-complete”, _trackCug); _processOverlayOnUpdateWidget(); resizer.init(widget.element); return { clickOffer: clickOffer, clickOfferWrapper: clickOfferWrapper, }; }).bind({})); }); 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_h_responsive_commerce_tvg_multi_larger_thumbnail’,’tablet/tablet’,[‘handlers’,’tablet/tablet’]); define([ ‘widget’, ‘page-model’, ‘api-mod’, ‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/tooltip’, ‘overlays/styles/popover’, ‘overlays/styles/windowshade’, ‘overlays/options/closeOnScrollOutOfView’, ‘overlays/options/closeOnMouseAway’, ‘overlays/options/closeOnSourceClick’, ‘overlays/options/closeOnDocClick’, ‘overlays/options/autoReposition’, ‘overlays/options/maxWidth’, ‘overlays/options/fade’, ‘overlays/options/ajax’, ‘common/trackingStreams’, ‘utils/responsive’ ], function( widget, pageModel, api, Overlay, Position, Tooltip, Popover, Windowshade, CloseOnScrollOutOfView, CloseOnMouseAway, CloseOnSourceClick, CloseOnDocClick, AutoReposition, maxWidth, Fade, Ajax, tracking, Responsive ) { var _shared=widget._shared; //handlers.js sets this up var _overlayComponent; function strikeThroughOverlay(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(); } } function _track(source) { return tracking.trackEvent.bind(null, source); } function dropDown(event, elmt, locId, listPos, pageOffset, ttPlc) { if (_shared.clickableWhiteSpace) { event.stopPropagation(); } var isCloseClick = false; var isMobile = Responsive.mobile(); locId = Number(locId); listPos = Number(listPos); pageOffset = Number(pageOffset); if (_shared.dropDown) { //one already exists isCloseClick = _shared.dropDown.isOpen() && _shared.dropDownLocId == locId && _shared.dropDownListPos == listPos; _shared.dropDown.destroy(); _shared.dropDown=null; } if (isCloseClick) { elmt.setAttribute(‘data-clicksource’, “ViewAllDealsClose”); return false; } else { elmt.setAttribute(‘data-clicksource’, “ViewAllDeals”); } var url = “/OverlayWidgetAjax?Mode=HOTELS_VIEW_ALL_OFFERS&metaReferer=” + encodeURIComponent(pageModel.session.pageServlet); var ajaxOptions={ sendTravelInfo: true, reqParams: { locationId: String(locId), listPos: String(listPos+pageOffset), ttPlc: ttPlc }, inlineResourceId: ‘HOTELS_VIEW_ALL_OFFERS’, isWidget: true }; var sponsoredListingJson = elmt.getAttribute(‘data-sponsoredListing’); if (sponsoredListingJson) { ajaxOptions.reqParams.sponsoredListingJson = sponsoredListingJson; } // this pins the click catching backdrop to right below the view all text // so that users can tap out of the dropdown on mobile var windowshadeTop = function() { var scrollTop = window.pageYOffset || document.documentElement.scrollTop; return elmt && elmt.getBoundingClientRect().bottom + scrollTop; }; var mixins=[ Popover(elmt, “below”, “light mobile_x small”), Position.below([0, -8]), CloseOnSourceClick, AutoReposition, CloseOnDocClick.withoutTouchEvents, isMobile && CloseOnScrollOutOfView, Ajax(url, ajaxOptions), isMobile && Windowshade(“popover-backdrop”, windowshadeTop), ]; var overlay = new Overlay(elmt, mixins); _shared.dropDown = overlay; _shared.dropDownLocId = locId; _shared.dropDownListPos = listPos; overlay.show(); overlay.on(‘hide’, function(e) { if (e && e.trigger) { _track(“hotelcell_h_otherclose”)(); } }); return false; } function closeDropdown() { if (_shared.dropDown) { _shared.dropDown.destroy(); _shared.dropDown=null; } } if (!_shared.tabletInitDone) { _shared.tabletInitDone = true; api.addEvent(document.body, “closeDropdown”, closeDropdown); } return { strikeThroughOverlay : strikeThroughOverlay, dropDown: dropDown }; }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’hotels_merchandise_messages’,’handlers’,[‘handlers’]); /** * @created 01/31/2018 * @author qle */ define([‘babel/babel-helpers’, ‘widget’, ‘vanillajs’, ‘common/trackingStreams’, “ta/Core/TA.Event”, ‘utils/throttle’, ‘utils/VisibilityChecker’], function (babelHelpers, widget, vanilajs, trackingStream, taEvent, throttle, visibilityChecker) { var merchandiseMessages = widget.element && widget.element.querySelectorAll(‘.merchandise_message’); /** callback function get invoked after we see the message */ function _callBackAfterSeenMessage(merchandiseMessage) { if (merchandiseMessage) { var pageAction = merchandiseMessage.getAttribute(“data-pageAction”); if (pageAction) { trackingStream.trackEvent(“MERCHANDISE_MESSAGE”, pageAction); taEvent.fireEvent(pageAction); // fire event for other listing widget to stop listening for scroll } var servletName = merchandiseMessage.getAttribute(“data-servletName”); var type = merchandiseMessage.getAttribute(“data-type”); if (servletName && type === “FREE_CANCELLATION”) { trackingStream.trackEvent(“osm-free-cancellation”, “shown”, servletName); } } } if (merchandiseMessages) { var _loop = function _loop(i) { if (merchandiseMessages[i]) { var pageAction = merchandiseMessages[i].getAttribute(“data-pageAction”); if (pageAction) { var merchandiseMessageChecker = visibilityChecker({ elements: [merchandiseMessages[i]], callback: function callback() { return _callBackAfterSeenMessage(merchandiseMessages[i]); } }); if (merchandiseMessageChecker) { var _throttleTrackMessage = throttle(merchandiseMessageChecker, 300); window.addEventListener(‘scroll’, _throttleTrackMessage); // throttle because this message widget is small, so scrolling and check if the widget is in view will fire a lot of events taEvent.on(pageAction, function () { window.removeEventListener(‘scroll’, _throttleTrackMessage); // because there are several instances of this widget, if one instance trackEvent, we want other widget to not track it }); } } } }; // There can be multiple merchandise messages tied to a single offer. Need to independently track each type of merchandise message. for (var i = 0; i < merchandiseMessages.length; i++) { _loop(i); } } return {}; });}); define('tracking/BestSellerTracking', ['utils/VisibilityChecker', 'utils/throttle', 'ta/Core/TA.Event', 'common/trackingStreams'], function(VisibilityChecker, throttle, taEvent, trackingStreams) { 'use strict'; var ALREADY_SEEN_ATTRIBUTE = 'data-alreadySeen'; var EXISTENCE_LOGGED_ATTRIBUTE = 'data-logged'; var EVENT_NAME_RIBBON_IN_VIEW = 'bestSellerSeen'; var EVENT_NAME_RIBBON_EXISTS = 'bestSellerExists'; var PAGE_POLLING_COMPLETE = 'page-polling-complete'; function _generateEventFiringFunction( selectorArray, sharedContext) { var eventFiringFunction = VisibilityChecker({ elements: selectorArray, callback: function(elements) { if (sharedContext.isPollingComplete) { if (elements && Array.isArray(elements)) { for (var i = 0; i 0) { _dispatchExistenceGARecords(elements); } else { setTimeout(function() { var elementsSecondAttempt = document.querySelectorAll(selector); if (elementsSecondAttempt && elementsSecondAttempt.length > 0) { _dispatchExistenceGARecords(elementsSecondAttempt) } }, 350); } } function _dispatchExistenceGARecords( elements) { for (var i = 0; i 0 && !!selectors[0]) { _initVisibilityCheckFunction(selectors, sharedContext); _initPollingCompleteListener(selectors[0], sharedContext); } else { trackingStreams.error(“Non-array or empty array passed to BestSellerTracking. Cannot track: ” + JSON.stringify(selectors)); } } return {initBestSellerTracking : initBestSellerTracking}; }); define(‘overlays/BestSellerTooltipOverlay’, [‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/tooltip’, ‘overlays/options/closeOnMouseAway’, ‘overlays/styles/popover’, ‘overlays/options/repositionOnEvent’, ‘common/trackingStreams’], function(Overlay, Position, Tooltip, CloseOnMouseAway, Popover, RepositionOnEvent, trackingStreams) { ‘use strict’; function createOverlay( evnt, source, widget, contentSelector, isMobile) { var overlay = null; var contents = widget.element.querySelector(contentSelector); if (contents) { if (window.isTabletOnFullSite) { overlay = new Overlay(source, [ Popover && Popover(source, ‘below’, widget.element.className, null, widget.element.outerHTML), Position.below(), RepositionOnEvent(window, [‘resize’, ‘date_bar_docked’, ‘date_bar_undocked’]) ]); } else { if (!isMobile) { overlay = new Overlay(source, [ Tooltip && Tooltip(source, ‘below’, widget.element.className, widget.element.outerHTML), Position.below(), CloseOnMouseAway ]); } } return overlay; } else { trackingStreams.error(“No contents found for selector ” + contentSelector + “. Cannot create tooltip overlay.”); } } return {createOverlay : createOverlay}; }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_ribbon_badge_resp’,’handlers’,[‘handlers’]); /** * Created by amiller-smith on 06.27.18 */ define([‘widget’, ‘utils/VisibilityChecker’, ‘utils/throttle’, ‘ta/Core/TA.Event’, ‘tracking/BestSellerTracking’, ‘utils/responsive’, ‘trjs!overlays/BestSellerTooltipOverlay’], (function(widget, VisibilityChecker, throttle, taEvent, BestSellerTracking, Responsive, BestSellerOverlay) { ‘use strict’; widget._shared = this; var _shared = this; var WIDGET_DIV_IDENTIFIER = “div[class='” + widget.element.className + “‘] div.”; var MOBILE_CLASS_SELECTOR = WIDGET_DIV_IDENTIFIER + ‘ribbonBadgeMobile’; var TABLET_PLUS_CLASS_SELECTOR = WIDGET_DIV_IDENTIFIER + ‘ribbonBadgeTablet’; var TOOLTIP_TEXT_SELECTOR = ‘.overlay_contents.hidden’; BestSellerTracking.initBestSellerTracking(_shared, [MOBILE_CLASS_SELECTOR, TABLET_PLUS_CLASS_SELECTOR]); var _overlay = null; function _showOverlay(evnt, source) { //otherwise the parent hotel card will catch this and open an /HR tab evnt.stopPropagation(); if (_overlay) { _overlay.show(); } else { _createAndShowOverlay(BestSellerOverlay, evnt, source); } } function _createAndShowOverlay(/*Object*/ BestSellerOverlay, /*Event*/ evnt, /*Element*/ source) { _overlay = BestSellerOverlay.createOverlay(evnt, source, widget, TOOLTIP_TEXT_SELECTOR, Responsive.mobile()); if (_overlay) { _overlay.show(); } } return { overlay: _showOverlay }; }).bind({})); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_rating_and_review_count_with_popup’,’handlers’,[‘handlers’]); define([‘babel/babel-helpers’, ‘widget’, ‘page-model’, ‘ta/Core/TA.Record’, ‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/popover’, ‘overlays/options/closeOnDocClick’, ‘overlays/options/closeOnMouseAway’, ‘overlays/options/closeOnScrollOutOfView’, ‘overlays/options/closeAllOtherOverlaysOnShow’, ‘overlays/options/autoReposition’, ‘overlays/options/ajax’], function (babelHelpers, widget, PageModel, Tracking, Overlay, Position, Popover, CloseOnDocClick, CloseOnMouseAway, CloseOnScrollOutOfView, CloseAllOtherOverlaysOnShow, AutoReposition, Ajax) { var _overlay = null; var _overlayTimeout = null; var overlayDelayTimeout = null; // Used for HOT-32699 to add buffer before showing the message. We only show if the user has hovered over the element for a certain period of time function _findReviewId() { var parent = widget.element; var reviewElement = null; var searchIterations = 5; while (parent && !reviewElement && searchIterations > 0) { parent = parent.parentNode; reviewElement = parent && parent.querySelector(‘.reviews [data-reviewid]’); searchIterations–; } if (reviewElement) { return reviewElement.getAttribute(“data-reviewid”); } return null; } function _trackInView() { Tracking.trackEventOnPage(“hotelcell_rating_and_review_count”, “tooltip_in_view”); } // Prevent review tooltip from displaying on hover if either datepicker or rooms/guests/children picker is open already function _preventShowReviewOnHover() { return !!document.querySelector(“.ui_overlay.date_picker_modal, .ui_overlay.rooms_guests_children, [data-test-target=trip-search-open]”); } function showReviewDelayed() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var overlayDelay = 400; overlayDelayTimeout = setTimeout(function () { return showReview.apply(undefined, args.concat([true])); }, overlayDelay); } function removeOverlayTimeout() { clearTimeout(overlayDelayTimeout); } function showReview(event, element, locId, showAsTooltip, showReviewAbove) { var reviewId = _findReviewId(); if (!reviewId) { return true; } if (!showAsTooltip) { //if initiated by click event, do not follow the link. event.stopPropagation(); } else if (_preventShowReviewOnHover()) { return false; } if (!_overlay) { var url = '/OverlayWidgetAjax?Mode=REVIEW_ID_DROPDOWN&metaReferer=' + encodeURIComponent(PageModel.session.pageServlet); var ajaxOptions = { reqParams: { locationId: String(locId), linkId: "rating_and_review_count", cid: reviewId }, inlineResourceId: 'REVIEW_ID_DROPDOWN', isWidget: true, loadingContent: '' }; var mixins = [Popover(element, showReviewAbove ? "above" : "below", 'light ' + widget.element.className, null, null, 'div'), showReviewAbove ? Position.above() : Position.below(), AutoReposition, CloseOnScrollOutOfView, CloseAllOtherOverlaysOnShow, CloseOnDocClick, Ajax(url, ajaxOptions)]; if (showAsTooltip) { mixins = [].concat(babelHelpers.toConsumableArray(mixins), [CloseOnMouseAway.withDelay(100)]); } _overlay = new Overlay(element.parentElement, mixins); //use parent as sourceElement so the tooltip is centered under both bubbles and review count _overlay.on('hide', function () { clearTimeout(_overlayTimeout); _overlayTimeout = null; }); } // we want to remove the delay if we're showing the review above because we're adding a delay in showReviewDelayed() // Simultaneously, we're also removing the timeout if the user moves away from the element using the onmouseleave event in the placement if (showAsTooltip && !showReviewAbove) { clearTimeout(_overlayTimeout); _overlayTimeout = setTimeout(function () { _overlay.show(); _trackInView(); }, 400); } else { _overlay.show(); _trackInView(); } } function reviewCountOnClick(event, element) { if (element.classList.contains('unclickable')) { event.stopPropagation(); } } return { showReview: showReview, showReviewDelayed: showReviewDelayed, removeOverlayTimeout: removeOverlayTimeout, reviewCountOnClick: reviewCountOnClick }; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'bl_h_special_offer','handlers',['handlers','tablet/tablet']); /** * ta.servlet.blcoupons.couponAnnouncementViewWithOpen is needed by the inline click handler for special offers, * so any page containing this widget must include ta/servlet/BLCoupons. * * @author tclark * @since February 2018 */ define([], function () { require(['trjs!ta/servlet/BLCoupons'], function () {}); }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'bl_h_special_offer','tablet/tablet',['handlers','tablet/tablet']); define([ 'widget', 'overlays/Overlay', 'overlays/position', 'overlays/styles/tooltip', 'overlays/options/closeOnMouseAway', 'overlays/styles/popover', 'overlays/options/repositionOnEvent', 'common/trackingStreams' ], function( widget, Overlay, Position, /* desktop */ Tooltip, CloseOnMouseAway, /* tablet */ Popover, RepositionOnEvent, Tracking ) { var HOVER_DELAY = 2000, CLICK_DELAY = 0, _overlay = null, _position = null, _direction = null, _arrowPos = null, _useDelay, _timeout; function _showOverlay(event, source, listPosition, delay) { clearTimeout(_timeout); var contents = widget.element.querySelector('.overlay_contents'); var useLeft = contents && contents.getAttribute('data-position') === 'left'; if (!_overlay) { _useDelay = contents && contents.getAttribute('data-delay'); _position = useLeft ? Position.left() : Position.above([0, 8]), _direction = useLeft ? 'left' : 'top', _arrowPos = useLeft ? 'arrow_right ' : 'arrow_bottom '; if (contents) { if (window.isTabletOnFullSite) { _overlay = new Overlay(source, [ Popover && Popover(source, _direction, _arrowPos + widget.element.className, null, contents), _position, RepositionOnEvent(window, ['resize', 'date_bar_docked', 'date_bar_undocked']) ]); } else { _overlay = new Overlay(source, [ Tooltip && Tooltip(source, _direction, _arrowPos + widget.element.className, contents), _position, CloseOnMouseAway ]); } } } if (_overlay) { _timeout = setTimeout(_overlay.show, _useDelay && event.type === "mouseover" ? HOVER_DELAY : CLICK_DELAY); Tracking.trackEvent('specialoffer_seen', 'hover', listPosition); } } return { overlay: _showOverlay }; }); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'hotels_hotels_nike_info_part','handlers',['handlers']); define(["widget", "ta/Core/TA.Record"], function(widget, taRecord) { function reviewClick(event, target, slotIndex, snippetIndex) { if (snippetIndex === 0) { taRecord.trackEventOnPage('hotels_nike_cell', 'nike_first_review_click', slotIndex); } if (snippetIndex === 1) { taRecord.trackEventOnPage('hotels_nike_cell', 'nike_second_review_click', slotIndex); } } function viewMapClick(event, target, slotIndex) { taRecord.trackEventOnPage('hotels_nike_cell', 'nike_view_map_click', slotIndex); } function viewAmenityClick(event, target, slotIndex) { taRecord.trackEventOnPage('hotels_nike_cell', 'nike_view_amenities_click', slotIndex); } return { reviewClick: reviewClick, viewMapClick: viewMapClick, viewAmenityClick: viewAmenityClick }; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'meta_h_responsive_commerce_nike','handlers',['handlers']); /*jshint nonew: false */ /*jshint unused:false */ define(["widget", "commerce/offerclick", "responsive/text-resizer", "common/trackingStreams", 'ta/Core/TA.Event', "hotels/recentlyViewedHotels", "ta/Core/TA.LocalStorage", 'ta/Core/TA.FireEvent', 'hotels/ClickSourceTracking'], (function(widget, offerclick, resizer, trackingStreams, taEvent, recentlyViewedHotels, localStorage, taFireEvent, clickSourceTracking) { //shared state between all instances of this widget. //defining it this way lets us pick it up in tablet/tablet.js widget._shared = this; var _shared = this; var commerceElem = widget.element.querySelector(".comblockNike"); var locId = Number((commerceElem && commerceElem.getAttribute("data-locationId")) || "0"); var listPos = Number((commerceElem && commerceElem.getAttribute("data-listPos")) || "0"); _shared.clickableWhiteSpace = Boolean((commerceElem && commerceElem.getAttribute("data-clickablewhitespacedt"))); var RESPONSIVE_LISTING_OPEN_META_LINK = 'hotels.responsive_open_meta_link'; taFireEvent.off(RESPONSIVE_LISTING_OPEN_META_LINK, clickOfferWrapper); taFireEvent.on(RESPONSIVE_LISTING_OPEN_META_LINK, clickOfferWrapper); function _findClickElement(el) { while (el && el.getAttribute) { if (el.getAttribute('data-clickPart')) { return el; } el = el.parentNode; if (el === widget.element) { break; } } return null; } function _track(event, elem) { var clickElem = _findClickElement(event && event.srcElement); var part = clickElem ? clickElem.getAttribute('data-clickPart') : 'other'; var index = clickElem ? clickElem.getAttribute('data-index') : ''; trackingStreams.trackEvent('hotelcell_h_meta', part + "_" + index); } /** * HOT-24629: track commerce click on best seller hotel * */ function _trackCommerceClickOnBestSeller() { var isBestSeller = commerceElem.getAttribute('data-bestseller'); if (isBestSeller) { trackingStreams.trackEvent('best_seller_click', locId, listPos); } } /** * HOT-35460: track commerce clicks on properties with preferred amenities * */ function _trackCommerceClickOnAmenityRibbon() { var amenityRibbonTrackingProperties = commerceElem.getAttribute('data-amenityRibbonTrackingProperties'); if (amenityRibbonTrackingProperties) { amenityRibbonTrackingProperties.split(',').forEach( function (trackingProperty) { trackingStreams.trackEvent(trackingProperty, 'click'); }); } } /** * HOT-31902: track commerce click on a high scoring tag compared hotel * */ function _trackCommerceClickOnHighScoringHotel() { var compare = commerceElem.getAttribute('data-comparisonType'); if (compare) { trackingStreams.trackEvent(compare, 'click', 'commerce'); } } function _trackCugClick(elem) { var specialRateTracking = elem.querySelector('.special_rate_tracking'); if (specialRateTracking) { var provider = elem ? elem.getAttribute('data-provider') : 'Unknown'; var type = elem ? elem.getAttribute('data-specialratetype') : 'None'; trackingStreams.trackEvent('Hotels_Loyalty_HR_click', provider + "|" + type, specialRateTracking.getAttribute('productattribute')); } } function clickOffer(event, elem, forcedBehavior) { if (_shared.clickableWhiteSpace) { event.stopPropagation(); } _track(event, elem); var token = elem.getAttribute("data-clickToken"); if (token) { // HOT-23280: Recently viewed tracking for commerce clicks recentlyViewedHotels.trackCommerceClick(locId); _trackCommerceClickOnBestSeller(); _trackCommerceClickOnHighScoringHotel(); _trackCommerceClickOnAmenityRibbon(); } _trackCugClick(elem); } function clickOfferWrapper(event, listingKey, forcedBehavior) { // If the received widget is not in the current DOM, we turn the eventListener off and do not perform any action. // eslint-disable-next-line no-restricted-globals if (!document.body.contains(widget.element)) { taFireEvent.off(RESPONSIVE_LISTING_OPEN_META_LINK, clickOfferWrapper); return; } var child = commerceElem.querySelector('.premium_offer_container'); var buttonElem = child == null ? null : child.querySelector('[data-clicktoken]'); var currentElemListingKey = clickSourceTracking.findAttribute('data-listingKey', commerceElem); if(listingKey === currentElemListingKey) { clickOffer(event, buttonElem, forcedBehavior); } } function _processOverlayOnUpdateWidget() { // if there is an overlay already open, and we get new widget as of ajax update, we need to re-process the overlay if(_shared.dropDown && _shared.dropDownListPos == listPos ) { var newSrc = widget.element.querySelector(".moreLink"); if (_shared.dropDownLocId != locId || !newSrc) { // if the widget at the same position is of different property, close the dropdown _shared.dropDown.destroy(); _shared.dropDown=null; }else { _shared.dropDown.sourceElement = newSrc; // if the new widget is of the same property and same location, update the src element for the dropdwon } } } function _trackCug() { var trackingEl = widget.element.querySelector('.special_rate_tracking'); if (trackingEl) { var guests = ta.page.guests.toQueryJson().uguests; var checkin = ta.page.hasDates('CHECKIN') ? ta.page.getDates('CHECKIN')[0].toLocaleDateString() : 'default'; var checkout = ta.page.hasDates('CHECKOUT') ? ta.page.getDates('CHECKOUT')[0].toLocaleDateString() : 'default'; var dates = checkin + '_' + checkout; var label = [trackingEl.getAttribute('pageaction'), locId, checkin, checkout, guests].join('_'); trackingStreams.trackEventOnPageOnce(trackingEl.getAttribute('pageproperty'), label, trackingEl.getAttribute('productattribute') ); } } taEvent.on("page-polling-complete", _trackCug); _processOverlayOnUpdateWidget(); resizer.init(widget.element); return { clickOffer: clickOffer, clickOfferWrapper: clickOfferWrapper, }; }).bind({})); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'hotels_merchandise_messages_nike','handlers',['handlers']); define(['babel/babel-helpers', 'widget', 'vanillajs', 'common/trackingStreams', "ta/Core/TA.Event", 'utils/throttle', 'utils/VisibilityChecker'], function (babelHelpers, widget, vanilajs, trackingStream, taEvent, throttle, visibilityChecker) { var merchandiseMessages = widget.element && widget.element.querySelectorAll('.merchandise_message'); /** callback function get invoked after we see the message */ function _callBackAfterSeenMessage(merchandiseMessage) { if (merchandiseMessage) { var pageAction = merchandiseMessage.getAttribute("data-pageAction"); if (pageAction) { trackingStream.trackEvent("MERCHANDISE_MESSAGE", pageAction); taEvent.fireEvent(pageAction); // fire event for other listing widget to stop listening for scroll } var servletName = merchandiseMessage.getAttribute("data-servletName"); var type = merchandiseMessage.getAttribute("data-type"); if (servletName && type === "FREE_CANCELLATION") { trackingStream.trackEvent("osm-free-cancellation", "shown", servletName); } } } if (merchandiseMessages) { var _loop = function _loop(i) { if (merchandiseMessages[i]) { var pageAction = merchandiseMessages[i].getAttribute("data-pageAction"); if (pageAction) { var merchandiseMessageChecker = visibilityChecker({ elements: [merchandiseMessages[i]], callback: function callback() { return _callBackAfterSeenMessage(merchandiseMessages[i]); } }); if (merchandiseMessageChecker) { var _throttleTrackMessage = throttle(merchandiseMessageChecker, 300); window.addEventListener('scroll', _throttleTrackMessage); // throttle because this message widget is small, so scrolling and check if the widget is in view will fire a lot of events taEvent.on(pageAction, function () { window.removeEventListener('scroll', _throttleTrackMessage); // because there are several instances of this widget, if one instance trackEvent, we want other widget to not track it }); } } } }; // There can be multiple merchandise messages tied to a single offer. Need to independently track each type of merchandise message. for (var i = 0; i < merchandiseMessages.length; i++) { _loop(i); } } function freeCancellationClick(event, target) { trackingStream.trackEvent('hotelcell_h_meta', 'chevron_price_0'); } return { freeCancellationClick: freeCancellationClick }; });}); 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, sponsoredLocationSource, partnerNotificationURL, partnerImpressionNotificationURL, gosox) { 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 _sponsoredLocationSource = sponsoredLocationSource; var _partnerNotificationURL = partnerNotificationURL; var _partnerImpressionNotificationURL = partnerImpressionNotificationURL; var _gosox = gosox; 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 getSponsoredLocationSource = function () { return _sponsoredLocationSource; }; 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, gosox) { _listingWrapper = listingWrapper; _impressionKey = impressionKey; _trackingTreePlacementName = trackingTreePlacementName; _uniqueRequestId = uniqueRequestId; _gosox = gosox; }; 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; }; var getPartnerNotificationURL = function () { return _partnerNotificationURL; }; var getPartnerImpressionNotificationURL = function () { return _partnerImpressionNotificationURL; }; var getGosox = function () { return _gosox; }; return { updateState: updateState, getState: getState, getSlotIndex: getSlotIndex, getSponsoredType: getSponsoredType, getSponsoredLocationSource: getSponsoredLocationSource, 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, getPartnerNotificationURL: getPartnerNotificationURL, getPartnerImpressionNotificationURL: getPartnerImpressionNotificationURL, getGosox: getGosox, hasImpressionFired: hasImpressionFired, impressionFired: impressionFired, listingMaintainedByPoll: listingMaintainedByPoll, refresh: refresh }; }; return StaticListing; }); define('retargeting/providers/hotels-sp-provider', ['retargeting/util' ], function(rtUtil) { return function(eventType, trackingContext, listingWrapper) { if(!trackingContext) { return; } var isMember = false; var deviceType = ""; if (require.defined('page-model')) { isMember = require('page-model').session.loggedIn; deviceType = require('page-model').DUST_GLOBAL.DEVICE; } var dataToSend = {}; dataToSend.is_member = isMember; dataToSend.device_type = deviceType; dataToSend.locationId = trackingContext["location_id"]; dataToSend.slot = trackingContext["placement_slot_name"]; if(listingWrapper) { var topOffer = listingWrapper.querySelector("div[data-clicktoken]"); if(topOffer) { dataToSend.top_meta_offer = topOffer.getAttribute("data-provider"); dataToSend.pernight = topOffer.getAttribute("data-pernight"); } } rtUtil.getDates(dataToSend); rtUtil.send(eventType, dataToSend); } }); define('retargeting/listeners/hotels-sp-impression', ['retargeting/providers/hotels-sp-provider' ], function(spDataProvider) { return function(options, listingWrapper) { require(['trjs!taevents'], function() { if(typeof spDataProvider === 'function') { spDataProvider("HOTELS_SP_IMPRESSION", options, listingWrapper); } }); }; }); define('sponsoredlisting/HotelSponsoredListingTracker', ['vanillajs', 'common/trackingStreams', 'utils/cookieutils', 'ajax-request', 'page-model'], function(vanilla, tracking, cookieUtils, ajaxRequest, pageModel) { 'use strict'; var SPONSORED_AD_OPPORTUNITY_ID_COOKIE_NAME = 'sponsOppId'; var SPONSORED_AD_LINE_ITEM_ID_COOKIE_NAME = 'sponsLineItem'; var TRIP_ADS_EVENT_TYPE_CLICKED = 'CLICKED'; var TRIP_ADS_EVENT_TYPE_CLICKED_UNPAID = 'CLICKED_UNPAID'; var TRIP_ADS_EVENT_TYPE_IMPRESSED = 'IMPRESSED'; var SP_PARTNER_NOTIFICATION_IFRAME_ID = 'SP_PARTNER_NOTIFICATION_IFRAME'; function setSponsoredAdCookie(slLineItemId, adOpportunityId) { cookieUtils.setCookieInSeconds(SPONSORED_AD_OPPORTUNITY_ID_COOKIE_NAME, adOpportunityId, { duration: 10, ignoreVersion: true }); cookieUtils.setCookieInSeconds(SPONSORED_AD_LINE_ITEM_ID_COOKIE_NAME, slLineItemId, { duration: 10, ignoreVersion: true }); } function recordSponsoredPlacementCommerceClick(sponsoredListing, destination, isBooking, auctionOfferKey, isMetaPrefClick, callback) { var slotName = sponsoredListing.getSponsoredSlot().name; var servletName = sponsoredListing.getSponsoredSlot().servletName; var trackingContext = sponsoredListing.getTrackingContext(); var slLineItemId = sponsoredListing.getSlLineItemId(); var tripAdsId = sponsoredListing.getTripAdsId(); var slotIndex = sponsoredListing.getSlotIndex(); var impressionKey = sponsoredListing.getImpressionKey(); var trackingTreePlacementName = sponsoredListing.getTrackingTreePlacementName(); var gosox = sponsoredListing.getGosox(); if (sponsoredListing.isLocationPaidBackfill()) { ajaxRequest({ method: 'POST', url: isMetaPrefClick ? '/SponsoredListingCommerce/1.0/increment_click_metric' : '/SponsoredListingCommerce/1.0/click', 'content-type': 'application/json', 'x-requested-by': pageModel.JS_SECURITY_TOKEN, data: JSON.stringify( _assign({}, { 'slot': slotIndex, 'location_id': trackingContext.location_id, 'listing_key': trackingContext.listing_key, 'area': slotName, 'from': servletName, 'dest': destination, 'is_backfill': sponsoredListing.isLocationPaidBackfill(), 'click_type' : destination === 'Hotel_Review' ? 'HR' : (isBooking ? 'IB' : 'META') }, slLineItemId ? {'sl_line_item_id': slLineItemId} : {}, tripAdsId ? {'trip_ads_id': tripAdsId} : {}, impressionKey ? {'impression_key': impressionKey} : {}, auctionOfferKey ? {'auction_offer_key': auctionOfferKey} : {}, trackingTreePlacementName ? {'tt_placement': trackingTreePlacementName} : {}, gosox ? {'gosox' : gosox} : {}) ) }).then(callback, callback); } else { callback(); } } function postTripAdsEvent(selectRequestGuid, externalId, eventType) { return ajaxRequest({ method: 'POST', url: '/data/1.0/tap/recordEvent', 'content-type': 'application/json', 'x-requested-by': pageModel.JS_SECURITY_TOKEN, data: JSON.stringify({ 'eventType': eventType, 'requestGuid': selectRequestGuid, 'externalId': externalId }) }); } function recordTripAdsClick(sponsoredListing, isPaidSponsoredClick, callback) { var selectRequestGuid = sponsoredListing.getTripAdsSelectRequestGuid(); var externalId = sponsoredListing.getAdOpportunityId(); var eventType = isPaidSponsoredClick ? TRIP_ADS_EVENT_TYPE_CLICKED : TRIP_ADS_EVENT_TYPE_CLICKED_UNPAID; if (!!selectRequestGuid) { postTripAdsEvent(selectRequestGuid, externalId, eventType) .then(callback, callback); } else { callback(); } } function recordTripAdsImpression(selectRequestGuid, externalId) { if (!!selectRequestGuid) { postTripAdsEvent(selectRequestGuid, externalId, TRIP_ADS_EVENT_TYPE_IMPRESSED); } } function _assign(target, args) { for (var i = 1; i 0 && rect.height > 0 && ((rect.top >= 0 && rect.top = 0 && rect.bottom <= window.innerHeight)); } catch (e) { return false; } } function fireImpression(listing) { if (!listing || listing.hasImpressionFired()) { return; } var sponsoredLocationSource = listing.getSponsoredLocationSource(); var trackingContext = listing.getTrackingContext(); var tripAdsSelectRequestGuid = listing.getTripAdsSelectRequestGuid(); var opportunityId = listing.getAdOpportunityId(); if (sponsoredLocationSource === OWNER_AD_CTA_SPONSORED_LOCATION_SOURCE) { tracking.trackUnifiedEvent('sl_owner_cta_displayed', 'impression', trackingContext); } else { htImpTracker(trackingContext, listing.getListingWrapper()); tracking.trackUnifiedEvent('paid_backup_sponsored_listing_displayed', 'impression', trackingContext); if (!!tripAdsSelectRequestGuid) { HotelSponsoredListingTracker.recordTripAdsImpression(tripAdsSelectRequestGuid, opportunityId); } } if (listing.getPartnerImpressionNotificationURL()) { HotelSponsoredListingTracker.notifyPartner(listing.getPartnerImpressionNotificationURL()); } listing.impressionFired(); } var _updatePollingParameter = function(needsPoll) { var slotKey; var listing; var pollingParam = {}; for (slotKey in _sponsoredListings) { if (_sponsoredListings.hasOwnProperty(slotKey)) { listing = _sponsoredListings[slotKey]; if (listing.getState() !== SponsoredListingStates.RESET && !listing.isSlotAny()) { pollingParam[listing.getSponsoredSlot().name] = listing.getPollingParam(); } } } taFireEvent.fireEvent('hotels.sponsored_listing_updated', pollingParam, needsPoll); }; var getListingByElement = function(elem) { var slotKey; var listing; var foundListing; for (slotKey in _sponsoredListings) { if (_sponsoredListings.hasOwnProperty(slotKey)) { listing = _sponsoredListings[slotKey]; if (listing.getListingWrapper().contains(elem)) { foundListing = listing; break; } } } return foundListing; }; var getSponsoredListing = function(slotKey) { return _sponsoredListings[slotKey]; }; var getListingWrapper = function(slotKey) { var listing = _sponsoredListings[slotKey]; if (listing) { return listing.getListingWrapper(); } return null; }; var getTrackingContextForSlot = function(slotKey) { var listing = _sponsoredListings[slotKey]; if (listing && listing.getTrackingContext) { return listing.getTrackingContext(); } return undefined; }; var isShowingLocation = function(slotKey) { var listing = _sponsoredListings[slotKey]; return !!listing; }; _init(); return { staticListingRendered: staticListingRendered, listingMaintainedByPoll: listingMaintainedByPoll, fireImpression: fireImpression, getSponsoredListing: getSponsoredListing, getListingWrapper: getListingWrapper, getTrackingContextForSlot: getTrackingContextForSlot, isShowingLocation: isShowingLocation, getListingByElement: getListingByElement, updateOrCreateListingOnPoll: updateOrCreateListingOnPoll } }; return HotelsSponsoredListings; }); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'sponsoredListings_hotels_sponsored_listing_cta_v2','handlers',['handlers']); /** * Handler methods for the second version of the CTA ad * * @author aozturk * @since Nov 2018 */ define(['widget', 'sponsoredlisting/HotelsSponsoredListings', 'common/trackingStreams'], function(widget, HotelsSponsoredListings, trackingStreams) { var LOCATION_ID_DATA_ATTR = 'data-locationId'; var SLOT_INDEX_DATA_ATTR = 'data-slotIndex'; var SPONSORED_TYPE_DATA_ATTR = 'data-sponsoredType'; var SPONSORED_SLOT_DATA_ATTR = 'data-sponsoredSlot'; var AD_OPPORTUNITY_ID_DATA_ATTR = 'data-adOpportunityId'; var UNIQUE_REQUEST_ID = 'data-uniqueRequestId'; // Unique per page load and poll. var SPONSORED_LOCATION_SOURCE_DATA_ATTR = 'data-sponsoredLocationSource'; var _shared = this; // track state of sponsored listings (shared across all sponsored listing cta widgets) if (!_shared.sponsoredListingStateManager) { _shared.sponsoredListingStateManager = new HotelsSponsoredListings(); } var _sponsoredListing = widget.element.querySelector('.sponsoredListingAdCTA'), _sponsoredPlacementSlot = JSON.parse(_sponsoredListing.getAttribute(SPONSORED_SLOT_DATA_ATTR)), // See HotelSponsoredPlacementSlotModel.java _slotIndex = parseInt(_sponsoredListing.getAttribute(SLOT_INDEX_DATA_ATTR), 10), _adOpportunityId = _sponsoredListing.getAttribute(AD_OPPORTUNITY_ID_DATA_ATTR), _sponsoredType = _sponsoredListing.getAttribute(SPONSORED_TYPE_DATA_ATTR), _uniqueRequestId = _sponsoredListing.getAttribute(UNIQUE_REQUEST_ID), _sponsoredLocationSource = _sponsoredListing.getAttribute(SPONSORED_LOCATION_SOURCE_DATA_ATTR); function _init() { var locationId = parseInt(_sponsoredListing.getAttribute(LOCATION_ID_DATA_ATTR), 10); _shared.sponsoredListingStateManager.staticListingRendered(_sponsoredPlacementSlot, _slotIndex, _sponsoredType, locationId, null, null, null, null, _adOpportunityId, null, _sponsoredListing, _uniqueRequestId, _sponsoredLocationSource); trackingStreams.trackUnifiedEvent('user_saw_v2_cta_ad', 'impression', { locationId: locationId }); } if (_sponsoredListing.getAttribute('data-isNewListing')) { _init(); } else { _shared.sponsoredListingStateManager.listingMaintainedByPoll(_sponsoredPlacementSlot.slotKey, _sponsoredListing, null, _uniqueRequestId, null); } }.bind({}));}); define('hotels/specialOfferClick', ['babel/babel-helpers', 'utils/waiton', 'ta/Core/TA.FireEvent', 'hotels/listingKeyPlugin'], function (babelHelpers, waitOn, taFireEvent, listingKeyPlugin) { var ASYNC_ACTIONS_TIMEOUT = 250; var SPECIAL_OFFER_CLICK_EVENT = 'hotels.special_offer_click'; var _preclickActions = []; var _registerAsyncPreclick = function _registerAsyncPreclick(action) { if (typeof action === 'function') { _preclickActions.push(action); } }; var _clickEvent = function _clickEvent(elem, listingKey, redirectAction, isNewTab) { taFireEvent.fireEvent(SPECIAL_OFFER_CLICK_EVENT, elem); listingKeyPlugin.setListingKeyCookie(listingKey); if (isNewTab) { redirectAction && redirectAction(); _preclickActions.forEach(function (action) { return action(elem, function () {}); }); } else { var boundActions = _preclickActions.map(function (action) { return action.bind(null, elem); }); waitOn(boundActions, redirectAction, ASYNC_ACTIONS_TIMEOUT); } }; return { SPECIAL_OFFER_CLICK_EVENT: SPECIAL_OFFER_CLICK_EVENT, registerAsyncPreclick: _registerAsyncPreclick, clickEvent: _clickEvent }; }); define('retargeting/listeners/hotels-sp-click', ['retargeting/providers/hotels-sp-provider' ], function(spDataProvider) { return function(options, listingWrapper) { require(['trjs!taevents'], function() { if(typeof spDataProvider === 'function') { spDataProvider("HOTELS_SP_CLICK", options, listingWrapper); } }); }; }); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'sponsoredListings_hotels_sponsored_listing_data','handlers',['handlers']); /** * Basic handlers for a HotelsSponsoredListingDataWidget * * @author yujzhang * @since August 2019 */ define(['widget', 'vanillajs', 'utils/objutils', 'sponsoredlisting/HotelsSponsoredListings', 'sponsoredlisting/HotelSponsoredListingTracker', 'hotels/listingClick', 'hotels/baLinkClick', 'hotels/specialOfferClick', 'commerce/offerclick', 'ta/Core/TA.FireEvent', 'common/trackingStreams', 'retargeting/listeners/hotels-sp-click', 'ta/Core/TA.LocalStorage', 'hotels/ClickSourceTracking', 'hotels/tracking/UEF-LocationDateSpecificClickThru'], function(widget, vanillajs, objutils, HotelsSponsoredListings, HotelSponsoredListingTracker, listingClick, baWebLinkClick, specialOfferClick, offerClick, taFireEvent, trackingStreams, htClickTracker, localStorage, clickSourceTracking, UEFClickThruTracker ) { var META_PREFERENCE_SPONSORED_TYPE = 'DISCOVERY_META_PREFERENCE'; var SP_PARTNER_NOTIFICATION_IFRAME_ID = 'SP_PARTNER_NOTIFICATION_IFRAME'; // Event name for organic listing rendered. Fired in hsx_responsive_listing/handlers.es6 and hsx_responsive_tabbed_listing/handlers.es6 var RESPONSIVE_LISTING_RENDERED_EVENT = 'hotels.responsive_listing_rendered'; var SPONSORED_LISTINGS_DATA_ATTR = 'data-sponsoredListingsData'; // Identify sponsored clicks so we do not subsequently show the user a login gate on an otherwise eligible detail page var SPONSORED_LISTING_ID_CLICKED_KEY = 'sponsoredListingIdClicked'; var SPONSORED_LISTING_ID_CLICKED_EXPIRATION = 1000 * 60 * 5; // 5 minutes in milliseconds // list of sponsored data which from HotelSponsoredListingDataModel.m_sponsoredListingsData var _sponsoredListingsData = JSON.parse(widget.element.querySelector('.sponsoredListingsData').getAttribute(SPONSORED_LISTINGS_DATA_ATTR).trim()); var shouldUngateSponsoredClicks = widget.element.querySelector('.sponsoredListingsData').hasAttribute('data-ungateSponsoredClicks'); // register event listener here so that _storeSponsoredData can get the updated _sponsoredListingsData for each polling // listener deregistered in _storeSponsoredData when widget.element get unmounted taFireEvent.on(RESPONSIVE_LISTING_RENDERED_EVENT, _storeSponsoredData); // necessary const and event listener for common behavior for listing click when the slot is for SP var clickThruTracker = new UEFClickThruTracker({ pageAction: 'ct_l2hr', // click thru list to hr }); var RESPONSIVE_LISTING_SP_CLICK = 'hotels.responsive_sp_click'; var RESPONSIVE_LISTING_OPEN_META_LINK = 'hotels.responsive_open_meta_link'; taFireEvent.off(RESPONSIVE_LISTING_SP_CLICK, _spListingClickAction); taFireEvent.on(RESPONSIVE_LISTING_SP_CLICK, _spListingClickAction); var _shared = this; // track state of sponsored listings (shared across all simple sponsored listing widgets) if (!_shared.sponsoredListingStateManager) { _shared.sponsoredListingStateManager = new HotelsSponsoredListings(); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution listingClick.registerAsyncPreclick(_logImpressionForClickTemp); // attach click event handlers here since we only want to attach them once across polls, etc // register a callback on click through to /H_R that takes care of passing a click through to UUT listingClick.registerAsyncPreclick(_logClickToHotelReview); // register a callback on click through to /H_R that takes care of passing in our own sponsored placement commerce click listingClick.registerAsyncPreclick(_logSPCommerceClickForHR); // register a callback on click through to /H_R that takes care of logging the click event with TripAds listingClick.registerAsyncPreclick(_logClickToHRWithTripAds); // register a callback on click through to /H_R that notice partner sp click to /HR listingClick.registerAsyncPreclick(_notifyPartnerAboutHRClick); // register a callback on a meta/ib offer click that takes care of passing a click through to UUT offerClick.registerAsyncPreclick(_logIBMetaClick); // register a callback on a meta/ib offer click that takes care of passing in our own sponsored placement commerce click offerClick.registerAsyncPreclick(_logSPCommerceClick); // register a callback on a meta/ib offer click that takes care of logging the click event with TripAds offerClick.registerAsyncPreclick(_logClickWithTripAds); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution offerClick.registerAsyncPreclick(_logImpressionForClickTemp); // register a callback on a click on a website click baWebLinkClick.registerAsyncPreclick(_logBAWebsiteClick); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution baWebLinkClick.registerAsyncPreclick(_logImpressionForClickTemp); specialOfferClick.registerAsyncPreclick(_logSpecialOfferClick); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution specialOfferClick.registerAsyncPreclick(_logImpressionForClickTemp); taFireEvent.off(listingClick.LISTING_CLICK_EVENT, _setAttributionCookieToHotelReview); taFireEvent.on(listingClick.LISTING_CLICK_EVENT, _setAttributionCookieToHotelReview); taFireEvent.off(specialOfferClick.SPECIAL_OFFER_CLICK_EVENT, _setAttributionCookieToHotelReview); taFireEvent.on(specialOfferClick.SPECIAL_OFFER_CLICK_EVENT, _setAttributionCookieToHotelReview); } function _storeSponsoredData(elem, listingKey) { if (!document.body.contains(widget.element)) { taFireEvent.off(RESPONSIVE_LISTING_RENDERED_EVENT, _storeSponsoredData); return; } var sponsoredListingData = _sponsoredListingsData.find(function(data) { return data.listingKey === listingKey; }); if (!sponsoredListingData) { return; } _init(elem, sponsoredListingData, sponsoredListingData.isNewListing); } // initialize sponsored data // sponsoredListingData corresponds to HotelsSponsoredListingDataWidget.HotelsSponsoredData function _init(elem, sponsoredListingData, isNewListing) { var sponsoredPlacementSlot = sponsoredListingData.sponsoredPlacementSlot; var slotIndex = parseInt(sponsoredListingData.slotIndex, 10); var sponsoredType = sponsoredListingData.sponsoredType; var slLineItemId = parseInt(sponsoredListingData.slLineItemId, 10); var tripAdsId = sponsoredListingData.tripAdsId; var tripAdsSelectRequestGuid = sponsoredListingData.tripAdsSelectRequestGuid; var adOpportunityId = sponsoredListingData.adOpportunityId; var locationId = parseInt(sponsoredListingData.locationId, 10); var impressionKey = sponsoredListingData.impressionKey; var trackingTreePlacementName = sponsoredListingData.trackingTreePlacementName || ""; //UrlArg.AJAX_TT_PLACEMENT var uniqueRequestId = sponsoredListingData.uniqueRequestId || ""; var sponsoredLocationSource = sponsoredListingData.sponsoredLocationSource; var partnerNotificationURL = sponsoredListingData.partnerNotificationURL; var partnerImpressionNotificationURL = sponsoredListingData.partnerImpressionNotificationURL; var gosox = sponsoredListingData.gosox || ""; // SLOT_ANY types are always new on each poll if (isNewListing) { _shared.sponsoredListingStateManager.staticListingRendered( sponsoredPlacementSlot, slotIndex, sponsoredType, locationId, slLineItemId, tripAdsId, tripAdsSelectRequestGuid, adOpportunityId, impressionKey, trackingTreePlacementName, elem, uniqueRequestId, sponsoredLocationSource, partnerNotificationURL, partnerImpressionNotificationURL, gosox); } else { _shared.sponsoredListingStateManager.updateOrCreateListingOnPoll( sponsoredPlacementSlot, slotIndex, sponsoredType, locationId, slLineItemId, tripAdsId, tripAdsSelectRequestGuid, adOpportunityId, impressionKey, trackingTreePlacementName, elem, uniqueRequestId, sponsoredLocationSource, partnerNotificationURL, partnerImpressionNotificationURL, gosox); } } /** * Ensure relevant clicks are recorded in the Unified User Tracking mechanism based on a corresponding Meta/IB click on one of the offers * * @param {Element|null} elem - the listing node (ancestor of the commerce node) * @param {Object} token - a mysterious commerce token * @param {Function} callback - the callback which we must call */ function _logIBMetaClick(elem, token, callback) { var slotKey = _getSlotKey(elem); // copy the context to avoid mutating the real token object var commerceContext = objutils.extend({}, offerClick.expandToken(token)); delete commerceContext.url; // remove the super long commerce url to avoid clutter in tracking context if (_isListingClickRelevant(slotKey)) { var baseEventName = commerceContext.isBooking ? 'sponsored_ib_click' : 'sponsored_meta_click'; var trackingContext = _shared.sponsoredListingStateManager.getTrackingContextForSlot(slotKey); trackingContext = objutils.extend(trackingContext, commerceContext); // Unified User Tracking trackingStreams.trackUnifiedEvent('paid_backup_' + baseEventName, 'action', trackingContext); } callback(); } /** * Post a sponsored placement commerce click on a click to H_R * * @param {Element} elem - the element that was clicked on * @param {String} listingKey - UUID that uniquely identifies a hotel listing * @param {Function} callback - the function to call after the tracking is complete (no params) * @private */ function _logSPCommerceClickForHR(elem, listingKey, callback) { // We could use the given listingKey, but to keep things consistent with meta/ib clicks we get it // from the SP widget's DOM node instead within this function if (!_isSuppressHRClickNecessary(elem)) { _logSPCommerceClick(elem, null, callback); } } /** * If the click is a paid sponsored click, post a sponsored placement commerce click * * null is passed in as the token to log if the destination is /Hotel_Review * * @param {Element|null} elem DOM element that got clicked * @param {Object|null} token A mysterious commerce token, if this was a click on a commerce offer (null otherwise) * @param {String} token.providerName The name of the provider associated with the clicked offer * @param {Function} callback Function to call on completion. No params. * @private */ function _logSPCommerceClick(elem, token, callback) { var listing = _getListing(elem); var slotKey; if (listing) { var slot = listing.getSponsoredSlot(); slotKey = slot.slotKey; } // if token isn't provided, the user is clicking through to Hotel_Review var isClickToHotelReview = !token; var isMetaPrefClick = _isMetaPrefClick(slotKey, isClickToHotelReview, token); if (_isListingClickRelevant(slotKey) && _isPaidSponsoredClick(slotKey, isClickToHotelReview, isMetaPrefClick)) { HotelSponsoredListingTracker.recordSponsoredPlacementCommerceClick(listing, isClickToHotelReview ? 'Hotel_Review' : token.providerName, isClickToHotelReview ? false : token.isBooking, isClickToHotelReview ? null : token.ttAOK, isMetaPrefClick, callback); } else { callback(); } } /** * ensure that we fire a Unified User Tracking click event based on a click through to H_R * * @param {Element} elem - the element that was clicked on * @param {String} listingKey - UUID that uniquely identifies a hotel listing * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logClickToHotelReview(elem, listingKey, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey) && !_isSuppressHRClickNecessary(elem)) { var trackingContext = _buildTrackingContextForSlot(slotKey); var listingWrapper = _shared.sponsoredListingStateManager.getListingWrapper(slotKey); trackingStreams.trackUnifiedEvent('paid_backup_sponsored_listing_click', 'action', trackingContext); // Holistic tracking for click event htClickTracker(trackingContext, listingWrapper); } callback(); } /** * Create iframe with partner's URL to notice about click through /HR */ function _notifyPartnerAboutHRClick(elem, listingKey, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey) && !_isSuppressHRClickNecessary(elem)) { var sl = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (!sl || !sl.getPartnerNotificationURL()) { return; } HotelSponsoredListingTracker.notifyPartner(sl.getPartnerNotificationURL()) } callback(); } /** * Log a click on a special offer within a sponsored listing * @param {Element} elem - the element that was clicked on * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logSpecialOfferClick(elem, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var trackingContext = _buildTrackingContextForSlot(slotKey); trackingStreams.trackUnifiedEvent('paid_backup_sp_special_offer_click', 'action', trackingContext); // Update holistic tracking here: https://jira.tripadvisor.com/browse/BIZ-13260 } callback(); } function _buildTrackingContextForSlot(slotKey) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); var impressionKey = listing && listing.getImpressionKey; var trackingTreePlacementName = listing && listing.getTrackingTreePlacementName(); return objutils.extend(_shared.sponsoredListingStateManager.getTrackingContextForSlot(slotKey), impressionKey ? {'ik': impressionKey} : {}, trackingTreePlacementName ? {'tt_placement': trackingTreePlacementName} : {} ); } /** * Log a impression for the V0 of sponsored hotels integration to the organic list. * Because the list polls and slots can change for each SP, we dont want to over generate * in-view impressions for these hotels. Quick solution: send impressions on clicks * * @param elem * @private */ function _logImpressionForClickTemp(elem) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey) && !_isSuppressHRClickNecessary(elem)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (listing.isSlotAny() && !listing.hasImpressionFired()) { _shared.sponsoredListingStateManager.fireImpression(listing); } } } /** * Set a cookie for sponsored listing click-through to /Hotel_Review * so that events on /Hotel_Review can be attributed to this interaction * * @param {Element} elem - the element that was clicked on * @private */ function _setAttributionCookieToHotelReview(elem) { var slotKey = _getSlotKey(elem); if (!_isListingClickRelevant(slotKey)){ return; } var sl =_shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (!sl || !sl.isShowingLocation()) { return; } HotelSponsoredListingTracker.setSponsoredAdCookie(sl.getSlLineItemId(), sl.getAdOpportunityId()); if (shouldUngateSponsoredClicks && localStorage.enabled) { localStorage.set(SPONSORED_LISTING_ID_CLICKED_KEY, sl.getDisplayedLocationId(), SPONSORED_LISTING_ID_CLICKED_EXPIRATION); } } /** * ensure that * - we fire our own Unified User Tracking events based on a click through to H_R * * @param {Element} elem - the element that was clicked on * @param {Object|null} token A mysterious commerce token, if this was a click on a commerce offer (null otherwise) * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logBAWebsiteClick(elem, token, callback) { var slotKey = _getSlotKey(elem); var isCommerce = elem.hasAttribute('data-curl') && elem.getAttribute('data-curl') === 'true'; if (_isListingClickRelevant(slotKey)) { var trackingContext = objutils.extend(_shared.sponsoredListingStateManager.getTrackingContextForSlot(slotKey), { is_commerce : isCommerce, ik : (token && token.ik) } ); trackingStreams.trackUnifiedEvent('paid_backup_sp_ba_website_click', 'action', trackingContext); } callback(); } /** * ensure that * - we fire the TripAds click event for clicks to H_R on ads that were selected by TripAds * * @param {Element} elem - the element that was clicked on * @param {String} listingKey - UUID that uniquely identifies a hotel listing * @param {Function} callback - the function to call after the tracking is complete (no params) * @private */ function _logClickToHRWithTripAds(elem, listingKey, callback) { if(!_isSuppressHRClickNecessary(elem)) { _logClickWithTripAds(elem, null, callback); } } /** * ensure that * - we fire the TripAds click event for paid clicks on ads that were selected by TripAds * * @param {Element} elem - the element that was clicked on * @param {Object|null} token A mysterious commerce token, if this was a click on a commerce offer (null otherwise) * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logClickWithTripAds(elem, token, callback) { var listing = _getListing(elem); var slotKey; if (listing) { var slot = listing.getSponsoredSlot(); slotKey = slot.slotKey; } if (_isListingClickRelevant(slotKey)) { // if token isn't provided, the user is clicking through to Hotel_Review var isClickToHotelReview = !token; var isMetaPrefClick = _isMetaPrefClick(slotKey, isClickToHotelReview, token); var isPaidSponsoredClick = _isPaidSponsoredClick(slotKey, isClickToHotelReview, isMetaPrefClick); HotelSponsoredListingTracker.recordTripAdsClick(listing, isPaidSponsoredClick, callback); } else { callback(); } } /** * Determine whether or not we should charge the hotel for a click on the given slot. * * A standard sponsored listing click is always paid. * * A meta preference sponsored listing click is paid if the click goes to /Hotel_Review or if it is a meta pref click. * * @param {String} slotKey The slotKey of the sponsored placement slot in which the listing is rendered _ * @param {boolean} isClickToHotelReview True if this was a click to Hotel_Review, false otherwise * @param isMetaPrefClick True if this was a meta pref click for meta preference lineItem, false otherwise * @returns {boolean} True if we should charge the hotel for this click, false otherwise */ function _isPaidSponsoredClick(slotKey, isClickToHotelReview, isMetaPrefClick) { var sl = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); // Note that we don't charge for clicks on ib/meta for meta preference listings return !!sl && (sl.getSponsoredType() !== META_PREFERENCE_SPONSORED_TYPE || isClickToHotelReview || isMetaPrefClick); } function _isMetaPrefClick(slotKey, isClickToHotelReview, token) { var sl = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); return !!sl && sl.getSponsoredType() === META_PREFERENCE_SPONSORED_TYPE && !isClickToHotelReview && !!token && token.slot === '1'; } /** * Determine if the slot clicked (given by the slot key) is relevant to be tracked * * @param {String} slotKey The slotKey of the sponsored placement slot in which the listing is rendered _ * @returns {boolean} - true if we should track the click for this sponsored listing, false otherwise * @private */ function _isListingClickRelevant(slotKey) { if (slotKey) { return _shared.sponsoredListingStateManager.isShowingLocation(slotKey); } return false; } /** * Determine if the SLD or SLM clicks need to be suppressed. * * @param elem HTMLElement where click event happened. * @returns {boolean} - true if we should not allow the SLD or SLM clicks through, false otherwise * @private */ function _isSuppressHRClickNecessary(elem) { var spTestAction = clickSourceTracking.findAttribute('data-SPTestAction', elem); if (spTestAction === 'openMetaOnly' || spTestAction === 'openMetaHR' || spTestAction === 'openHRMeta') { return true; } return false; } /** * Given an element, determines the slot name by element (including the case of an offers dropdown overlay element) * @param {Element|null} elem - the clicked element * @returns {String|undefined} slotKey The key of the sponsored placement slot in which the listing is rendered * @private */ function _getSlotKey(elem) { var listing = _getListing(elem); var slotKey; if (listing) { var slot = listing.getSponsoredSlot(); slotKey = slot.slotKey; } return slotKey; } /** * Given an element, determines the listing by element (including the case of an offers dropdown overlay element) * @param {Element|null} elem - the clicked element * @returns {DynamicListing|null} listing The listing where the element is rendered or null if it doesn't correspond to any listing * @private */ function _getListing(elem) { var listing = null; if (elem) { listing = _shared.sponsoredListingStateManager.getListingByElement(elem); // In the context of the 'View All Deals' dropdown, we display offers in an overlay that isn't within the listing // element in the DOM, so we need to check that case. if ((!listing) && (_isSponsoredListingOverlayListElement(elem))) { var slotKey = _getSlotKeyFromSponsoredListingOverlayListElement(elem); if (slotKey) { listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); } } } return listing; } /** * In the context of the 'View All Deals' dropdown, we display offers in an overlay that isn't within the listing * element in the DOM. In that case, look for the data attributes on the offer elements themselves. * TODO: We should find a better way to do this. If the unified price drawer rolls out to 100% of traffic, we can remove this special case. * @param {Element|null} elem - the clicked element * @returns {boolean} * @private */ function _isSponsoredListingOverlayListElement(elem) { if (elem && elem.getAttribute('data-sponsoredListing')) { return true; } return false; } /** * Given a sponsored listing overlay list element, returns the slot name * @param {Element|null} elem - the clicked element * @returns {String} slotKey * @private */ function _getSlotKeyFromSponsoredListingOverlayListElement(elem) { var slotKey = ''; var sponsoredListingJson = elem.getAttribute('data-sponsoredListing'); if (!sponsoredListingJson) { return slotKey; } try { var sponsoredListing = JSON.parse(sponsoredListingJson); slotKey = sponsoredListing.slotKey; } catch (error) { trackingStreams.error(error, 'error occurred when parsing sponsored listing json to retrieve a slot name'); } return slotKey; } /** * BIZ-18483: private method to define the common behavior if additional/alternative option is required for the value prop test in SP. * For variant 1: open meta link as a new tab for all SP Meta_Preference campaigns. * For variant 2: open meta link or BA weblink in a new tab and open /HR in current /H page. * For variant 3: open meta link or BA weblink in current /H page and open /HR in a new tab. * */ function _spListingClickAction(locId, testAction, currentElemListingKey, event, hrUrl, BAWebLink, index, info, impressionKey, isReviewClick){ // If the received widget is not in the current DOM, we turn the eventListener off and do not perform any action. // eslint-disable-next-line no-restricted-globals if (!document.body.contains(widget.element)) { taFireEvent.off(RESPONSIVE_LISTING_SP_CLICK, _spListingClickAction); return; } // We want to open meta link when the user clicked a whitespace, title or photo, but not the reviews. if (testAction === 'openMetaOnly' && !isReviewClick) { taFireEvent.fireEvent(RESPONSIVE_LISTING_OPEN_META_LINK, event, currentElemListingKey, false); } else { // In all other cases, we will open HR page as well as additional one if necessary, so track for the HR page open clickThruTracker.processAndTrackClickThrough(locId, impressionKey, hrUrl); trackingStreams.setEvtCookie('Reviews', info.source, locId, index, hrUrl); // Rule out edge cases before jumping into opening tabs. // For all SP campaigns in variant 2, apply test only when the click is not review click. // For all SP standard campaigns in variant 2 or 3, apply test only when BA website link is not null. // For all these edge cases, apply normal current behavior. switch (testAction) { case 'openHRMeta': if (isReviewClick) { // eslint-disable-next-line no-param-reassign testAction = ''; } break; case 'openHRWebLink': if (isReviewClick || BAWebLink == null) { // eslint-disable-next-line no-param-reassign testAction = ''; } break; case 'openWebLinkHR': if (BAWebLink == null) { // eslint-disable-next-line no-param-reassign testAction = ''; } break; default: break; } // Then, open necessary tabs switch (testAction) { case 'openHRMeta': // This will open a meta link in a new tab & track SLDM or SLMM clicks. taFireEvent.fireEvent(RESPONSIVE_LISTING_OPEN_META_LINK, event, currentElemListingKey, 'new_tab'); // Then, redirect current /H page to /HR // eslint-disable-next-line no-restricted-globals window.open(hrUrl, '_self'); break; case 'openMetaHR': // Open HR in a new tab. // eslint-disable-next-line no-restricted-globals window.open(hrUrl, '_blank'); // Then, redirect current /H page to a meta link & track SLDM or SLMM clicks. taFireEvent.fireEvent(RESPONSIVE_LISTING_OPEN_META_LINK, event, currentElemListingKey, 'same_tab'); break; case 'openHRWebLink': // This will open a BA weblink in a new tab & NOT track CLD or CLM clicks. // eslint-disable-next-line no-restricted-globals window.open(BAWebLink, '_blank'); // Then, redirect current /H page to /HR // eslint-disable-next-line no-restricted-globals window.open(hrUrl, '_self'); break; case 'openWebLinkHR': // Open HR in a new tab. // eslint-disable-next-line no-restricted-globals window.open(hrUrl, '_blank'); // Then, redirect current /H page to a BA weblink & NOT track CLD or CLM clicks. // eslint-disable-next-line no-restricted-globals window.open(BAWebLink, '_self'); break; default: // In all the other cases, open /HR in another tab. // eslint-disable-next-line no-restricted-globals window.open(hrUrl, '_blank'); } } } }.bind({})); });require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'maps_dh_sort_filter_map_toggle_wc','handlers',['handlers']); define(["widget", 'lib/jquery-amd', 'common/Radio'], function (widget, $, radio) { 'use strict'; var widgetElement = $(widget.element); var $button = widgetElement.find(".map_list_column"); var mapRadio = radio('h-map'); function toggleMap() { mapRadio && mapRadio.trigger('open-trigger-clicked'); // Open map } $button.on('click', toggleMap); return { toggleMap: toggleMap }; }.bind({}));});require(['ta/p13n/placements','ta/page','$prp/background_update_dates/handlers'], function(placements, impl) { window.ta.plc_background_update_dates_handlers = placements.load('background_update_dates','handlers.js', { 'name': 'background_update_dates', 'id': 'taplc_background_update_dates', 'location_id': 652016, 'servletClass': 'com.TripResearch.servlet.hotels.HotelsServlet', 'servletName': 'Hotels', 'params': {}, 'data': {}});}); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'hotels_special_message','handlers',['handlers']); /** * Private javascript for special_message widget */ define(["babel/babel-helpers", "widget", "page-model", "ta/Core/TA.Record", "common/trackingStreams", "hotels/SpecialMessageUtil", 'common/page-filters', 'ta/page', 'lib/jquery-amd', 'hotels/ClickSourceTracking'], function (babelHelpers, widget, pageModel, taRecord, tracking, SpecialMessageUtil, pageFilters, Page, $, clickSourceTracking) { var _widgetElement = widget.element; var geoId = pageModel.GEO_ID; var _messageType = void 0; var _isPersistable = void 0; var _isPersistableOncePerGeo = void 0; function dismissMessage() { SpecialMessageUtil.dismissMessage(_widgetElement, _messageType, _isPersistable, _isPersistableOncePerGeo && geoId); tracking.trackEvent("Special_Message_Widget", "hidden", _messageType); } function toggleInfo() { var moreInfo = _widgetElement.querySelector(".moreInfo"); if (moreInfo) { moreInfo.classList.toggle("collapsed"); } } function _init() { var messageContainer = _widgetElement.querySelector(".specialMessageContainer"); if (messageContainer) { _messageType = messageContainer.getAttribute("data-messagetype"); _isPersistable = !!messageContainer.getAttribute("data-persist"); _isPersistableOncePerGeo = !!messageContainer.getAttribute("data-persist-once-per-geo"); taRecord.trackEventOnPage("Special_Message_Widget", "shown", _messageType); } var link = _widgetElement.querySelector(".primaryText[data-link] .link"); if (link) { link.addEventListener("click", _primaryTextClick); } _widgetElement.addEventListener("click", _widgetClick); } function _primaryTextClick(event) { var targetParent = event.target && event.target.parentNode; var url = targetParent.getAttribute("data-link"); var trackingInfo = targetParent.getAttribute("data-track"); if (trackingInfo) { var trackingArgs = trackingInfo.split('|'); taRecord.addGARecordMevt.apply(taRecord, babelHelpers.toConsumableArray(trackingArgs)); } if (url) { window.location = url; } return false; } function _widgetClick(event) { clickSourceTracking.trackElement(event.target, widget.element); var classList = event.target.classList; if (classList.contains("ui_button") && classList.contains("primary")) { dismissMessage(); switch (_messageType) { case "CONSIDER_VACATION_RENTAL": // fill the first page by adding vacation rentals at the end of the main list Page.showVRs(); break; case "VRS_PROP_TYPE_ON_H": // select only the Vacation Rentals property type pageFilters.setAll("cat", ["6"]); // scroll to the top of the page, as the list will be completely refreshed $('html,body').animate({ scrollTop: 0 }, 200); break; } } return false; } function _onFilterChanged() { var dismissWithFilterChange = _widgetElement.querySelector("[data-dismissWithFilterChange]"); if (dismissWithFilterChange) { dismissMessage(); } } _init(); pageFilters.on('change', _onFilterChanged); return { dismiss: dismissMessage, toggleInfo: toggleInfo }; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'hotels_partial_match_header','handlers',['handlers']); /** * Private javascript for partial_match_header widget */ define(["babel/babel-helpers", "widget", "common/page-filters", "common/Radio"], function (babelHelpers, widget, Filters, Radio) { var wcBridgeRadio = Radio("web-component-data-bridge"); function clearFilters() { require(["babel/babel-helpers", 'trjs!common/track-filter'], function (babelHelpers, trackFilters) { trackFilters('overall_clear', 'unselect_link', 'clear_all', 0); }); Filters.clearAll(); wcBridgeRadio.trigger("externalClearAll"); window.scrollTo(0, 0); } var clearAllElement = widget.element.querySelector(".clearAllFilters"); if (clearAllElement) { clearAllElement.addEventListener("click", clearFilters); } });});if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["ta"]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta"]);} }require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'sponsoredListings_hotels_sponsored_listing_cta_v1','handlers',['handlers']); /** * Handler methods for the first version of the CTA ad * * @author aozturk * @since Nov 2018 */ define(['widget', 'sponsoredlisting/HotelsSponsoredListings', 'common/trackingStreams'], function(widget, HotelsSponsoredListings, trackingStreams) { var LOCATION_ID_DATA_ATTR = 'data-locationId'; var SLOT_INDEX_DATA_ATTR = 'data-slotIndex'; var SPONSORED_TYPE_DATA_ATTR = 'data-sponsoredType'; var SPONSORED_SLOT_DATA_ATTR = 'data-sponsoredSlot'; var AD_OPPORTUNITY_ID_DATA_ATTR = 'data-adOpportunityId'; var UNIQUE_REQUEST_ID = 'data-uniqueRequestId'; // Unique per page load and poll. var SPONSORED_LOCATION_SOURCE_DATA_ATTR = 'data-sponsoredLocationSource'; var _shared = this; // track state of sponsored listings (shared across all sponsored listing cta widgets) if (!_shared.sponsoredListingStateManager) { _shared.sponsoredListingStateManager = new HotelsSponsoredListings(); } var _sponsoredListing = widget.element.querySelector('.sponsoredListingAdCTA'), _sponsoredPlacementSlot = JSON.parse(_sponsoredListing.getAttribute(SPONSORED_SLOT_DATA_ATTR)), // See HotelSponsoredPlacementSlotModel.java _slotIndex = parseInt(_sponsoredListing.getAttribute(SLOT_INDEX_DATA_ATTR), 10), _adOpportunityId = _sponsoredListing.getAttribute(AD_OPPORTUNITY_ID_DATA_ATTR), _sponsoredType = _sponsoredListing.getAttribute(SPONSORED_TYPE_DATA_ATTR), _uniqueRequestId = _sponsoredListing.getAttribute(UNIQUE_REQUEST_ID), _sponsoredLocationSource = _sponsoredListing.getAttribute(SPONSORED_LOCATION_SOURCE_DATA_ATTR); function _init() { var locationId = parseInt(_sponsoredListing.getAttribute(LOCATION_ID_DATA_ATTR), 10); _shared.sponsoredListingStateManager.staticListingRendered(_sponsoredPlacementSlot, _slotIndex, _sponsoredType, locationId, null, null, null, null, _adOpportunityId, null, _sponsoredListing, _uniqueRequestId, _sponsoredLocationSource); trackingStreams.trackUnifiedEvent('user_saw_v1_cta_ad', 'impression', { locationId: locationId }); } if (_sponsoredListing.getAttribute('data-isNewListing')) { _init(); } else { _shared.sponsoredListingStateManager.listingMaintainedByPoll(_sponsoredPlacementSlot.slotKey, _sponsoredListing, null, _uniqueRequestId, null); } }.bind({}));});require(['ta/p13n/placements','ta/page','$prp/recently_viewed_helper_list/handlers'], function(placements, impl) { window.ta.plc_recently_viewed_helper_list_handlers = placements.load('recently_viewed_helper_list','handlers.js', { 'name': 'recently_viewed_helper_list', 'id': 'taplc_recently_viewed_helper_list', 'location_id': 652016, 'servletClass': 'com.TripResearch.servlet.hotels.HotelsServlet', 'servletName': 'Hotels', 'params': {}, 'data': {}});}); define("cpm/AdBlockDetect", ["lib/jquery-amd","utils/browserutils","ta/Core/TA.Event","ta/Core/TA.Record","ta/util/Error"], function( $, Browser, taEvent, taRecord, taError) { 'use strict'; var exports = {}; var _testImg; var DEFAULT_LABEL = "ab_chk"; var _isPixelLoadError; var _logged = false; var _cdn = window.CDNHOST || ""; var _pixelUrl = "/img2/x.gif?&ads=1&adsize=2&adslot=3&rnd="; var _generatePixel = function() { var rnd = Math.floor(Math.random() * 100000); return $('‘); }; var _getAdCount = function() { var count = document.querySelectorAll(“.gptAd:not(.inactive)”).length; if (screen.width < 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','ta/page','$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': 652016, 'servletClass': 'com.TripResearch.servlet.hotels.HotelsServlet', 'servletName': 'Hotels', 'params': {}, 'data': {}});}); if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["ta/util/RecordInterruption"]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta/util/RecordInterruption"]);} } window.ta || (window.ta = {}); define('ta/util/RecordInterruption', ['vanillajs', 'ta/Core/TA.Record', 'ta/util/Error'], function(vanilla, track, error) { 'use strict'; var GA_REC_MODULE = 'interruption_record'; var VALID_TYPES = [ 'popup', 'popunder', 'gate', 'other' ]; var _err = function(msg, eobj) { error.record(eobj, msg, null, null); }; var _isValidType = function(type) { for (var i = 0; i SCROLL_BUFFER) { $(surveyContainerClassName).hide(); } }; $(window).on('scroll', throttle(hide, 100)); } var surveyRadio = Radio("QualtricsSurvey"); // use radio so this functionality can be added to WC footer easily window.addEventListener("qsi_js_loaded", function() { // this event is fired when the Qualtrics external JS has finished loading if (surveyRadio.requestAny("shouldSuppress", true)) { $(surveyContainerClassName).hide(); } }); surveyRadio.on("hide", function() {$(surveyContainerClassName).hide();}); surveyRadio.on("show", function() {$(surveyContainerClassName).show();}); } } }); return { }; }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'dual_search_dust','handlers',['deferred/lateHandlers','handlers']); /** * Private javascript for dual_search placement */ define(["placement", "lib/jquery-amd", "ta/Core/TA.Store", 'ta/Core/TA.Event', "typeahead/TypeAhead.views" /*this needs to be here when the placement is, even though we don't use it here */ ], function (placement, $, taStore, taEvent, typeAheadViews) { 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]); } } } } focusOnWrapperClick('GEO_SCOPE_CONTAINER', 'GEO_SCOPED_SEARCH_INPUT'); focusOnWrapperClick('MAIN_SEARCH_CONTAINER', 'mainSearch'); /** * allows to focus the corresponding input when its wrapper is clicked (wrapper is wider and taller than the input) */ function focusOnWrapperClick(wrapperId, inputId) { $('#' + wrapperId).on('click', function(e) { // If the click target is the input element, let the browser handle it, so we don't trigger focus twice. if ($(e.target).closest('#' + inputId).length == 0) { $('#' + inputId).focus(); } }); } var options = taStore.retrieve("typeahead_dual_search_options"); function _popAutoTooltip() { if (!options.autoTooltip || !taStore.retrieve("isFirstSessionPageView") || !window.require) { return; } var reqs = ['trjs!overlays/Overlay', 'trjs!overlays/position', 'trjs!overlays/styles/popover', 'trjs!overlays/options/maxWidth', 'trjs!overlays/options/repositionOnEvent' ]; require(reqs, function (Overlay, Position, Style, MaxWidth, Reposition) { var searchButton = document.getElementById("SEARCH_BUTTON"); var mixins = [ Position && Position['below'] && Position['below']([], false), Style && Style(searchButton, 'below', "dark small", " ", options.autoTooltip), MaxWidth && MaxWidth(220), Reposition && Reposition(window, "showingCookieConsentBanner") ]; var overlay = new Overlay(searchButton, mixins); if (overlay) { // pop tooltip immediately overlay.show() } }); } if (document.activeElement === $("#GEO_SCOPED_SEARCH_INPUT")[0]) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whereFocused({type: "dummy"}, document.activeElement); }); } else if (document.activeElement === $("#mainSearch")[0]) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whatFocused({type: "dummy"}, document.activeElement); }); } else if (options && options.autoTooltip) { taEvent.queueForLoad(_popAutoTooltip, "dual_search auto tooltip"); } return { getOptions: function () { return options; } }; }); });define('mixins/page-dates/picker-autoadvance-utils', [], function() { var exports = {}; exports.keepOverlayOpenOnSelection = function(target) { var overlayElmts = document.querySelectorAll(".ui_overlay"); for (var i = 0; i

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



    Source

    Agevolazioni - finanziamenti - immobiliare

    Visure on-line - Legislazione civile e fiscale

    Siamo operativi in tutta Italia

    La rete Adessonews è un aggregatore di news e replica gli articoli senza fini di lucro ma con finalità di critica, discussione od insegnamento,

    come previsto dall’art. 70 legge sul diritto d’autore e art. 41 della costituzione Italiana. Al termine di ciascun articolo è indicata la provenienza dell'articolo.

    Per richiedere la rimozione dell'articolo clicca qui

    Open chat
    1
    Ciao posso aiutarti?
    Finanziamenti e agevolazioni personali e aziendali.
    Utilizza questa chat per richiedere informazioni o l'attivazione di un finanziamento e/o agevolazione.
    %d blogger hanno fatto clic su Mi Piace per questo: