mmRequestCallbacks[1]({"Scripts":[{"Name":"Integration module","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*!\n *\tintegrations-module 0.10.1\n *\t-- Maxymiser Integrations Module provides a standardized approach to develop and deploy 3rd party integrations.\n *\t-- Built on 2017-11-16\n */\n\n!function(){function e(){var e={},u={errors:{missingRegisterName:\"Invalid integration reigstration. Name argument is required.\",missingRegisterExec:\"Missing `exec` for integration registration\",alreadyRegistered:\"Integration has already been registered\",missingRunName:\"Missing `name` for `integration.run`\",unregisteredIntegration:\"Unknown integration name\",noCampaignExperience:\"Integration was run before the campaign has generated\",noRedirectCampaign:\"Redirect Integration is not in a valid campaign scope\",noRedirectCampaignData:\"Redirect Integration is not on a generation page\",campaignRequired:\"Integration must be deployed within a campaign script\",failedToSaveRedirectData:\"Failed to save redirect data\"},HALFHOUR:1/48,isProduction:function(){function e(e){for(var n,r={},i=\"\",a=0;n=t(e+a++);)i+=n;if(i){i=decodeURIComponent(i);try{r=JSON.parse(i)}catch(e){console.log(e)}return r}return\"\"}function t(e){var t=new RegExp(\"(?:^|; )\"+encodeURIComponent(e).replace(/([.$?*|{}()[\\]\\\\/+^])/g,\"\\\\$1\")+\"=([^;]+)\");return(document.cookie.match(t)||[\"\",\"\"])[1]}var n=mmsystem.getConfig().storageType;if(\"cookie-key-value\"===n||\"cookie-key-value-secure\"===n)return!/mmapi.p.cfgid/i.test(document.cookie)&&!/mmapi.p.un/i.test(document.cookie);for(var r=[e(\"mmcore.store.p.\")||{},e(\"mmcore.store.s.\")||{},e(\"mmapi.store.p.\")||{},e(\"mmapi.store.s.\")||{}],i={\"mmparams.p\":1,\"mmparams.d\":1},a={un:1,cfgID:1,pruh:1},o=r.length;o--;){var s=r[o];for(var u in i||{})for(var c in a||{})if((s[u]||{})[c])return!1}return!0},isValidIntegrationName:function(e){return\"string\"==typeof e&&/^\\w+/.test(e)},isCampaignScope:function(e){return!!(i(e)&&e.getName&&e.getExperience)},getCampaignExperience:function(e){var t={};return u.isCampaignScope(e)&&(t=e.getExperience&&e.getExperience()||{}),!!Object.keys(t)&&u.formatCampaignExperience(t)},formatCampaignExperience:function(e){e=i(e)?e:{};var t=[];for(var n in e)t.push(n+\":\"+e[n]);return t.join(\"|\")},getData:function(e){e=(e||\"\").toLowerCase();var t=visitor.getData(\"Integrations\");return t=i(t)?t:{},e&&(t[e]=t[e]||{}),t},setRedirectData:function(e,t){if(e=(e||\"\").toLowerCase(),!u.isCampaignScope(t))return!1;var n=u.getData(e),r=t.getName();return n[e][r]=n[e][r]||{},n[e][r].redirectData=t.getExperience(),visitor.setData(\"Integrations\",n,u.HALFHOUR),!0},removeRedirectData:function(e,t){if(e=(e||\"\").toLowerCase(),!u.isCampaignScope(t))return!1;var n=u.getData(e),r=t.getName();return n[e][r]=n[e][r]||{},n[e][r].redirectData=null,visitor.setData(\"Integrations\",n,u.HALFHOUR),!0},getRedirectData:function(e,t){if(e=(e||\"\").toLowerCase(),!u.isCampaignScope(t))return!1;var n=u.getData(e),r=t.getName();if(n[e][r]=n[e][r]||{},!n[e]||!n[e][r])return n[e]=n[e]||{},n[e][r]=n[e][r]||{},n[e][r].redirectData=null,visitor.setData(\"Integrations\",n,u.HALFHOUR),!1;for(var i in n[e])if(i===r)return n[e][i].redirectData;return!1},getSessionDate:function(e,t){return(u.getData(e)[e][t.getName()]||{}).sessionDate},setSessionDate:function(e,t){var n=u.getData(e),r=t.getName();n[e][r]=n[e][r]||{},n[e][r].sessionDate=(new Date).getTime(),visitor.setData(\"Integrations\",n,u.HALFHOUR)},resolve:function(e,t){return e.resolve(t),e.promise()},reject:function(e,t){var n=e.integrationName||\"unknown name\";return t=t||\"unknown reason\",o(\"Integration [\"+n+\"]: \"+t.toString()),e.reject(t),e.promise()},validateCampaignRequired:function(e,t){if(!e.campaignRequired)return e.oncePerSession?\"campaign option is required when using the oncePerSession option\":!e.redirect||\"campaign option is required when using the redirect option\";var n=e.campaign,r=\"\";return!0!==u.isCampaignScope(n)?u.errors.campaignRequired:(e.campaignExperience=u.getCampaignExperience(n),!1!==e.campaignExperience||e.redirect?e.oncePerSession&&!e.redirect&&e.oncePerSession&&(r=u.getSessionDate(e.name,n),u.setSessionDate(e.name,n),(new Date).getTime()-u.HALFHOUR>r)?(o(\"Integration [\"+e.name+\"]: data has already been sent this session\"),u.resolve(t,e),!0):!e.redirect||(function(){var e=n.getElements();for(var t in e)return!0;return!1}()?n.isDefault()?!(e.oncePerSession&&(r=u.getSessionDate(e.name,n),u.setSessionDate(e.name,n),(new Date).getTime()-u.HALFHOUR>r))||(o(\"Integration [\"+e.name+\"]: data has already been sent this session\"),u.resolve(t,e),!0):u.setRedirectData(e.name,n)?(u.resolve(t,e),!0):u.errors.failedToSaveRedirectData:e.oncePerSession&&(r=u.getSessionDate(e.name,n),u.setSessionDate(e.name,n),(new Date).getTime()-u.HALFHOUR>r)?(o(\"Integration [\"+e.name+\"]: data has already been sent this session\"),u.resolve(t,e),!0):(e.campaignExperience=u.getRedirectData(e.name,n),e.campaignExperience=u.formatCampaignExperience(e.campaignExperience),u.removeRedirectData(e.name,n),!!e.campaignExperience||u.errors.noRedirectCampaignData)):u.errors.noCampaignExperience(e.name))},setFailTimeout:function(e,t){!function(t){setTimeout(function(){setTimeout(function(){if(\"pending\"===t.state())return u.reject(t,\"Integration timed out after \"+e.timeout+\"ms\")},0)},e.timeout+1)}(t)},isValidAttributeMap:function(e){if(!e)return\"Missing required attributeMap parameter\";if(!i(e)||!Object.keys(e).length)return\"The attributeMap parameter is empty or not an object\";for(var t in e){var n=e[t];if(\"string\"!=typeof t||!/^[a-zA-Z]+/.test(t))return\"Invalid attribute name in the attributeMap\";if(!i(n))return\"attributeMap values must be stored in an object\";if(!Object.keys(n).length)return\"attributeMap attribute object is empty\";for(var r in n)if(!/^\\w+$/.test(r)&&\"default\"!==r)return\"Invalid attribute ID in attributeMap\"}return!0},check:function(e){var n=new Deferred,r=!1;return function i(){var a=e.check.call(this,e);t(a)?setTimeout(function(){a.done(function(){return n.resolve()}).fail(function(e){return n.reject(e)})},0):a?setTimeout(function(){n.resolve()},0):r||setTimeout(i,e.interval)}(),setTimeout(function(){r=!0},e.timeout),n.promise()},exec:function(e){var n=new Deferred,r=e.exec.call(this,e);return t(r)?(setTimeout(function(){r.done(function(e){return n.resolve(e)}).fail(function(e){return n.reject(e)})},0),n.promise()):(!0===r?u.resolve(n,e.result):u.reject(n,r),n.promise())}};return{register:function(t,c){function m(e){return t=t||\"\",o(\"Integrations.register(\"+t+\"): \"+(e||\"\").toString())}var g,f;return c=i(c)?c:{},(t=(\"string\"==typeof t?t:\"\").toLowerCase().replace(/^\\s+|\\s+$/g,\"\"))?e[t]?(m(u.errors.alreadyRegistered),null):(c.name=t,g=s(c,{}),f={validate:n(g.validate)?g.validate:a,check:n(g.check)?g.check:a,interval:r(g.interval)?g.interval:50,timeout:r(g.timeout)?g.timeout:2e3,exec:n(g.exec)?g.exec:a,options:g},g=s(f,g),e[t]=g):(m(u.errors.missingRegisterName),null)},run:function(t,n){n=i(n)?n:{};var r,a,o,c=new Deferred;if(t=(t||\"\").toLowerCase(),c.integrationName=t,!e[t])return u.reject(c,u.errors.unregisteredIntegration);if(r=s(e[t],{}),r=s(n,r),!0!==(a=r.validate(r)))return u.reject(c,a);if(!0!==(o=u.validateCampaignRequired(r,c)))return u.reject(c,o);if(r.isProduction=u.isProduction(),r.attributeMapRequired){var m=u.isValidAttributeMap(r.attributeMap);if(!0!==m)return u.reject(c,m)}return\"pending\"!==c.state()?c.promise():(\"never\"!==r.timeout&&u.setFailTimeout(r,c),u.check(r).then(function(){return u.exec(r)}).then(function(e){return r.result=e,u.resolve(c,r)}).fail(function(e){return u.reject(c,e)}),c.promise())},setDefaults:function(t,n){t=(t||\"\").toLowerCase();var r=e[t];return!!r&&(n=i(n)?n:{},e[t]=s(n,r),this)},get:function(t){if(!t)return e;var n=(t||\"\").toLowerCase();return e[n]}}}function t(e){return i(e)&&n(e.then)}function n(e){return\"function\"==typeof e}function r(e){return\"number\"==typeof e&&e>0}function i(e){return\"object\"==typeof e&&!!e}function a(){return!0}function o(e){window.mm_error=window.mm_error||\"\",window.mm_error+=e+\"\\n\"}function s(e,t){e=i(e)?e:{},t=i(t)?t:{};var n={};for(var r in t)n[r]=t[r];for(var a in e)n[a]=e[a];return n}if(\"object\"==typeof modules&&\"function\"==typeof modules.define){var u={autoDefine:!0,singleton:!0};modules.define(\"Integrations\",u,e)}else modules={require:function(){return new e}}}();","Order":-100,"HighLevelApiVersion":"1.12"},{"Name":"mod_cdApiTools_min","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * cdapi-tools - Helpers to cdAPI workflow\n * @version v1.3.3\n * @repository /maxymiser-shared2/cdapi-modules/cdAPI-tools.git\n * @author Rafal Maksymiuk, Maksym Mokrozub\n */\n\nfunction debounce(e,t,n){var r;return void 0===n&&(n=t,t=!1),function(){function o(){try{n.apply(i,c)}catch(e){window.console.error(e)}}var i=this,c=arguments;!r&&t&&o(),clearTimeout(r),r=setTimeout(t?function(){r=void 0}:o,e)}}function decorate(e,t,n){if(\"function\"!=typeof e)throw new TypeError(\"first argument should be a function\");return function(){var r,o,i,c=arguments;if(\"function\"==typeof t)try{(o=t.apply(this,c))&&o.length===Object.keys(o).length&&(c=o)}catch(e){window.console.error(e)}if(r=e.apply(this,c),\"function\"==typeof n)try{c=Array.prototype.slice.call(arguments).concat([r]),void 0!==(i=n.apply(this,c))&&(r=i)}catch(e){window.console.error(e)}return r}}function delegate(e,t,n,r){function o(t){for(var r=function(){var e=Element.prototype;return e.matches||e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector}(),o=t;o&&o!==e;){if(r.call(o,n))return o;o=o.parentElement||o.parentNode}return null}function i(e){var t=o(e.target);t&&r.call(t,e)}t.split(\" \").forEach(function(t){e.addEventListener(t,i)})}function hide(e,t){var n,r=\"toolsId\"+Math.floor(1e5*Math.random())+1,o=t||7e3,i=function(){n&&(n=!1,dom.removeCss(r))};return e&&(n=!0,dom.addCss(e+\" {opacity:0 !important; pointer-events:none !important;}\",r),\"never\"!==o&&setTimeout(i,o)),i}function runOnce(e){var t,n;return function(){return n||(t=e.apply(this,arguments),n=!0),t}}function throttle(e,t,n){var r,o=0;return void 0===n&&(n=t,t=!1),function(){function i(){o=Number(new Date);try{n.apply(c,a)}catch(e){window.console.error(e)}}var c=this,a=arguments,u=Number(new Date)-o;r&&clearTimeout(r),u>e?i():t||(r=setTimeout(i,e-u))}}function waitFor(e,t,n){function r(){e.call()?o.resolve():\"ready\"===c&&\"loading\"!==document.readyState?o.reject():setTimeout(r,i)}var o=new Deferred,i=n||50,c=t||\"ready\";return r(),\"ready\"!==c&&\"never\"!==c?function(){var e=setTimeout(o.reject,c);o.always(function(){clearTimeout(e)})}():\"ready\"===c&&events.domReady(r),o.promise()}var Mutator=function(){function e(e){function t(e){var t=o.indexOf(e);t>-1&&(o.splice(t,1),o.length<1&&(r.disconnect(),i=!1))}function n(){for(var e,n=o.length;n--;)e=o[n],window.document.querySelector(e.selector)&&(e.def.resolve(),t(e))}var r,o=[],i=!1,c=e;this.add=function(e,a){var u=new Deferred,s={selector:e,def:u},d=!1;return\"ready\"===a?\"loading\"!==document.readyState?d=!0:events.domReady(function(){s.def.reject(),t(s)}):a&&\"never\"!==a&&setTimeout(function(){s.def.reject(),t(s)},a),o.push(s),i||(r.observe(window.document.documentElement,{childList:!0,subtree:!0,attributes:c}),i=!0),n(),d&&(s.def.reject(),t(s)),u.promise()},r=new MutationObserver(n)}var t,n,r=\"ready\";return n=new e(!0),t=new e(!1),{waitForElement:function(e,o,i){var c=o||r;return(i?n:t).add(e,c)}}}(),xhrComplete=function(){function e(){var e=arguments;n.forEach(function(t){try{t.apply(null,e)}catch(e){window.console.error(e)}})}var t,n=[];return function(r){return t||(t=!0,function(e){XMLHttpRequest.prototype.open=function(t){return function(n,r){return void 0===this.responseURL&&(this.responseURL=r),this.addEventListener(\"readystatechange\",function(t){4===this.readyState&&e(t,this)}),t.apply(this,arguments)}}(XMLHttpRequest.prototype.open)}(e)),n.push(r),t}}();modules.define(\"tools\",{autoDefine:!0,singleton:!0},function(){this.waitForElement=Mutator.waitForElement,this.waitFor=waitFor,this.decorate=decorate,this.delegate=delegate,this.xhrComplete=xhrComplete,this.throttle=throttle,this.debounce=debounce,this.runOnce=runOnce,this.hide=hide});\n","Order":-100,"HighLevelApiVersion":"1.12"},{"Name":"AdobeAnalytics","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*!\n *\tAdobeAnalytics 1.3.1.hilton\n *\t-- Maxymiser Adobe Analytics integration\n *\t-- Built on 2017-01-20\n */\n!function(){var a={version:\"1.3.1.hilton\",oncePerSession:!0,campaignRequired:!0,render:!1,append:!1,timeout:7e3,validate:function(a){return a.eVar&&!b.isNumber(a.eVar)?b.errors.invalidEvar(a.eVar):a.prop&&!b.isNumber(a.prop)?b.errors.invalidProp(a.prop):a.sVariable&&!b.isSVariable(a.sVariable)?b.errors.invalidSVariable(a.sVariable):b.getParams(a).length?a.trackingServer||a.ignoreTrackingServer?a.render&&!b.checkValidRenderFormat(a.campaign.getName())?b.errors.invalidRenderFormat(a.campaign.getName()):!(a.additionalParams&&!b.checkAdditionalParams(a.additionalParams))||b.errors.invalidAdditionalParams(a.additionalParams):b.errors.missingTrackingServer:b.errors.missingParameters},check:function(a){var c=b.getSVariable(a.sVariable);return a.ignoreTrackingServer?c:c&&c.trackingServer===a.trackingServer},exec:function(a){return a.sync?(b.populateSyncData(a),!0):b.send(a)}},b={errors:{missingParameters:\"The `eVar` and/or `prop` option are required and missing\",invalidEvar:function(a){return\"Invalid eVar provided [\"+(a||\"\").toString()+\"]\"},invalidProp:function(a){return\"Invalid prop provided [\"+(a||\"\").toString()+\"]\"},invalidSVariable:function(a){return\"Invalid sVariable provided [\"+(a||\"\").toString()+\"] (must be `string` or `s object`)\"},missingTrackingServer:function(){return\"Missing trackingServer option\"},invalidRenderFormat:function(a){return\"Campaign name is in an invalid format to utilize the Render flag: \"+a},invalidAdditionalParams:function(a){return\"additionalParams are not formatted correctly: \"+a}},checkAdditionalParams:function(a){return!!Array.isArray(a)},filterAdditionalParams:function(a,b){return a.filter(function(a){if(b[a])return a}).join()},checkValidRenderFormat:function(a){return a.indexOf(\"_\")!==-1},renderFormat:function(a){return a.split(\"_\")[0]},isSVariable:function(a){return\"string\"==typeof a?/^[A-Za-z0-9_\\-\\$]+$/.test(a):\"object\"==typeof a&&b.isSObject(a)},isSObject:function(a){return\"object\"==typeof a&&\"function\"==typeof a.t},getSVariable:function(a){return a&&\"string\"!=typeof a?!!b.isSObject(a)&&a:!!b.isSObject(window[a||\"s\"])&&window[a||\"s\"]},isNumber:function(a){return a&&(+a).toFixed(0)>0},send:function(a){var c,d,e=b.getParams(a),f=b.getSVariable(a.sVariable),g=a.campaign.getName(),h=\"\";f.linkTrackVars=e.join(),g=a.render?b.renderFormat(g):b.renderFormat(g)+\"=\"+a.campaignExperience,a.append?\"page\"===a.append?(h=window.mmsystem.AdobeAppendData||\"\",d=h?h+\"~\"+g:g,window.mmsystem.AdobeAppendData=d):\"session\"===a.append&&(h=visitor.getData(\"AdobeAppendData\")||\"\",d=h?h+\"~\"+g:g,visitor.setData(\"AdobeAppendData\",d)):d=g;for(var i=0;i<e.length;i++)f[e[i]]=d;return a.additionalParams&&(c=b.filterAdditionalParams(a.additionalParams,f),f.linkTrackVars=f.linkTrackVars+\",\"+c),f.tl(!0,\"o\",\"Maxymiser \"+(a.isProduction?\"Live\":\"QA\")),!0},getParams:function(a){var b=[];return a.eVar&&b.push(\"eVar\"+a.eVar),a.prop&&b.push(\"prop\"+a.prop),b},populateSyncData:function(a){var c=b.getParams(a);window.mm_adobe_data=window.mm_adobe_data||{};for(var d=c.length;d--;)window.mm_adobe_data[c[d]]=a.campaignExperience}};\"object\"==typeof modules&&\"function\"==typeof modules.define&&modules.require(\"Integrations\").register(\"Adobe Analytics\",a)}();","Order":-90,"HighLevelApiVersion":"1.12"},{"Name":"Bluekai_Integration","Type":"script","Attrs":{"type":"text/javascript"},"Data":"\n    var script = document.createElement('script');\n    script.src = '//tags.bluekai.com/site/34612?ret=js&limit=1';\n    script.async = true;\n    document.head.appendChild(script);\n","Order":-1,"HighLevelApiVersion":"1.12"},{"Name":"React_Funnel","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/* eslint-disable no-trailing-spaces */\n/**\n * React_Funnel.js\n * This script's purpose is to identify steps on react funnel.\n *\n * @author Irina Kashyntseva (email: irina.kashyntseva@maxymiser.com)\n * @date 16.07.2018\n */\nvar currentStep;\nvar step;\nvar flag;\n\nfunction getStep(url) {\n    var stepPattern = new RegExp(/(rooms|rates|payment|confirmation)/g);\n    var step = url.match(stepPattern) && url.match(stepPattern)[0];\n\n    return step || '';\n}\n\nfunction stopWhenAfter(timeout) {\n    var stop = false;\n    window.setTimeout(function () {\n        stop = true;\n    }, timeout);\n\n    return function () {\n        return stop;\n    };\n}\n\nfunction whenTransactionData() {\n    return when(function () {\n        return window.digitalData && (window.digitalData.transaction\n            || (window.digitalData.cart && window.digitalData.cart.attributes));\n    }, stopWhenAfter(5000));\n}\n\nfunction getRewardsTier() {\n    var rewardsTier = '';\n    try {\n        rewardsTier = window.digitalData.user[0].profile[0].profileInfo.rewardsTier;\n    } catch (err) {\n        //\n    }\n\n    return rewardsTier;\n}\n\nfunction getCurrency(transaction) {\n    return window.csCurrencyCd\n        || (transaction\n            && (transaction.currency\n                || (transaction.payment\n                && transaction.payment.currency)))\n        || '';\n}\n\nfunction getBookedRooms(transaction) {\n    return transaction\n        && transaction.attributes\n        && parseInt((transaction.attributes.rooms || 0), 10);\n}\n\nfunction getBookedNights(transaction) {\n    return transaction\n        && transaction.item[0]\n        && transaction.item[0].productInfo\n        && parseInt((transaction.item[0].productInfo.roomNights || 0), 10);\n}\n\nfunction getPoints(transaction) {\n    return transaction\n        && transaction.item[0]\n        && transaction.item[0].price\n        && parseInt((transaction.item[0].price.pointsUsed || 0), 10);\n}\n\nfunction getMoney(transaction) {\n    transaction\n    && parseInt((transaction.roomRevUSD || 0).toString().replace(',', ''), 10);\n}\n\nfunction setConfirmationTrigger() {\n    var triggerData;\n    var totalPrice = visitor.getData('mm_totalForStay');\n    var transactionData = window.digitalData && (window.digitalData.transaction\n        || (window.digitalData.cart && window.digitalData.cart.attributes));\n    var amount;\n    var currency;\n    var brand;\n    var rate;\n    var bookedRooms;\n    var bookedNights;\n    var points;\n    var money;\n\n    amount = parseInt((window.csOrderSubTotal || window.csOrderTotal || totalPrice || 0).toString()\n        .replace(',', '')/* * 100*/, 10);\n    currency = getCurrency(transactionData);\n    brand = (window.BRAND && window.BRAND.lowerCaseId) || (window.location.href.match(/\\/(hp|hi|hw|gi|es|dt|cr|ch|wa|ht|hh)\\//) || [,])[1];\n    rate = visitor.getData('mm_booked_rate') || '';\n    bookedRooms = getBookedRooms(transactionData);\n    bookedNights = getBookedNights(transactionData);\n    points = getPoints(transactionData);\n    money = getMoney(transactionData);\n\n    triggerData = {\n        previousStep: currentStep,\n        loggedIn:     cookies.get('loggedIn') ? 'Yes' : 'No',\n        amount:       amount,\n        currency:     currency,\n        brand:        brand,\n        rate:         rate,\n        bookedRooms:  bookedRooms,\n        bookedNights: bookedNights,\n        rewardsTier:  getRewardsTier(),\n        points:       points,\n        money:        money,\n    };\n\n    events.trigger('confirmation', triggerData);\n    cookies.set('mm_order_confirmation_cd_api', '1');\n}\n\nfunction setBookedRateName(element) {\n    var rateBlock = element.querySelector('span[class*=\"HiddenText\"]');\n    var rateName;\n\n    if (element.getAttribute('data-e2e') === 'bookButton') {\n        rateBlock = document.querySelector('[data-e2e=\"rateQuickLookTitle\"]');\n    }\n\n    rateName = rateBlock && rateBlock.textContent.toLowerCase().replace(/((book )|)(.+)( for .+)/, '$3');\n\n    visitor.setData('mm_booked_rate', rateName);\n}\n\nfunction setTotalForStay() {\n    var totalForStay;\n    var priceDetails = document.querySelectorAll('[class^=\"PriceSummary\"][class*=\"PriceLine\"]:not([class*=\"TotalLine\"])');\n\n    totalForStay = +priceDetails[0].textContent.trim().replace(/\\D+/g, '');\n\n    visitor.setData('mm_totalForStay', totalForStay);\n}\n\n\nfunction stepChangeHandler() {\n    var stepsArr = ['rooms', 'rates', 'payment', 'confirmation'];\n    if (stepsArr.indexOf(step) !== -1) {\n        if (step === 'rates' && !flag) {\n            tools.delegate(document.body, 'click', '[data-e2e$=\"BookCTA\"], [data-e2e$=\"BookButton\"], [data-e2e=\"bookButton\"]', function () {\n                setBookedRateName(this);\n            });\n            flag = true;\n        } else if (step === 'payment') {\n            if (currentStep === 'rooms') {\n                visitor.setData('mm_booked_rate', 'honors discount');\n            }\n            when(function () {\n                return document.querySelectorAll('[class^=\"PriceSummary\"][class*=\"PriceLine\"]:not([class*=\"TotalLine\"])').length;\n            })\n                .then(setTotalForStay);\n            cookies.remove('mm_order_confirmation_cd_api');\n        } else if (step === 'confirmation' && !cookies.get('mm_order_confirmation_cd_api')) {\n            /*whenTransactionData()\n                .then(setConfirmationTrigger);*/\n            setConfirmationTrigger();\n        }\n\n        if (step !== 'confirmation' && step !== currentStep) {\n            events.trigger(step, { previousStep: currentStep });\n        }\n    }\n}\n\n\nevents.on('routeChange', function (data) {\n    currentStep = getStep(window.location.href);\n    step = data && getStep(data.newUrl);\n\n    setTimeout(stepChangeHandler, 0);\n});\n\n/*window.addEventListener('popstate', function () {\n    currentStep = step;\n    step = getStep(window.location.href);\n});*/","Order":100,"HighLevelApiVersion":"1.12"},{"Name":"PC_getLayer","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * getLayer.js\n * This script's purpose is to define getLayer function for Layer PC.\n *\n * @author Irina Kashyntseva (email: irina.kashyntseva@maxymiser.com)\n * @date 3.12.2018\n */\n\nsite.scope.getLayer = function () {\n    var functions;\n    var comparisonChartObj = {\n        'Phase_1': {\n            'isHonorsUser': true,\n            'isGWreferrer': true,\n            'isExcludedHotel': false,\n            'isOneClickReferrer': false,\n            'isOnlyRoom': true,\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': true,\n            'isNotHonorsPoints': true,\n        },\n        'Phase_2': {\n            'isHonorsUser': 'any',\n            'isGWreferrer': true,\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': true,\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': true,\n            'isNotHonorsPoints': true,\n        },\n        'Phase_3': {\n            'isHonorsUser': true,\n            'isGWreferrer': true,\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': true,\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': 'any',\n            'isNotHonorsPoints': true,\n        },\n        'Phase_3.5': {\n            'isHonorsUser': 'any',\n            'isGWreferrer': true,\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': true,\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': 'any',\n            'isNotHonorsPoints': true,\n        },\n        'Phase_4': {\n            'isHonorsUser': 'any',\n            'isGWreferrer': true,\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': true,\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': 'any',\n            'isNotHonorsPoints': 'any',\n        },\n        'Phase_5': {\n            'isHonorsUser': 'any',\n            'isGWreferrer': true,\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': 'any',\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': 'any',\n            'isNotHonorsPoints': 'any',\n        },\n        'Phase_6': {\n            'isHonorsUser': 'any',\n            'isGWreferrer': 'any',\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': 'any',\n            'isEnglish': true,\n            'isNotTravelAgent': true,\n            'isNotSpecialRate': 'any',\n            'isNotHonorsPoints': 'any',\n        },\n        'Phase_7': {\n            'isHonorsUser': 'any',\n            'isGWreferrer': 'any',\n            'isExcludedHotel': false,\n            'isOneClickReferrer': 'any',\n            'isOnlyRoom': 'any',\n            'isEnglish': true,\n            'isNotTravelAgent': 'any',\n            'isNotSpecialRate': 'any',\n            'isNotHonorsPoints': 'any',\n        },\n    };\n    var dataForOhw = visitor.getData('dataForOhw');\n    var resVal;\n    var properties = {};\n\n    /* Honors user */\n\n    function isHonorsUser() {\n        var isReactFunnel = window.location.href.indexOf('book/reservation/') !== -1;\n        var userBlock = document.querySelector('[class*=\"UserWrapper\"]');\n        var isLoggedInOHW = userBlock\n            && userBlock.querySelector('[class*=\"LoggedIn\"]');\n        var isLoggedOutOHW = userBlock\n            && userBlock.querySelector('[class*=\"LoggedOut\"]');\n        var isLoggedIn = visitor.getAttr('loggedin') === 'yes';\n        var isCookied = visitor.getAttr('Cookied')\n            && visitor.getAttr('Cookied') !== 'Non-Cookied'\n            && visitor.getAttr('Cookied').indexOf('Cookied') !== -1;\n\n        if (isReactFunnel) {\n            if (!userBlock) {\n                return dataForOhw && dataForOhw.isHonorsUser;\n            } else if (isLoggedOutOHW) {\n                return false;\n            } else if (isLoggedInOHW) {\n                return true;\n            }\n        }\n\n        return !!(isLoggedIn || isCookied);\n    }\n\n    /* GW referrer */\n\n    function isGWreferrer() {\n        var referrer = document.referrer || visitor.getData('Layer_Referrer') || '';\n        var isFromBrandHomePage = /.hilton.com\\/en\\/index\\.html$/.test(referrer);\n        var isFromSR = referrer.indexOf('search/findhotels/results') !== -1 ||\n            referrer.indexOf('search/findhotels/narrowDown.htm') !== -1;\n        var isFromFindHotelPage = referrer.indexOf('/search/findhotels/index.htm') !== -1;\n        var isFromPropertyPage = /hilton.com\\/en\\/hotels\\//.test(referrer);\n        var isFromFunnel = referrer.indexOf('reservation/book.htm') !== -1 ||\n            referrer.indexOf('book/reservation/') !== -1;\n\n        return isFromBrandHomePage\n            || isFromSR\n            || isFromFindHotelPage\n            || isFromPropertyPage\n            || isFromFunnel;\n    }\n\n    function isExcludedHotel() {\n        var excludedHotels = [\n            'BODYSPY',\n            'KULLAPY',\n            'HGHPYPY',\n            'CTULCPY',\n            'BJSCICI',\n            'TSNBICI',\n            'CSXFDCI',\n            'CTUJDCI',\n            'CTUCDCI',\n            'DLCZDCI',\n            'CANXWCI',\n            'HGHFRCI',\n            'HKGHCCI',\n            'KULSKCI',\n            'MFMCSCI',\n            'NGBCICI',\n            'TAOQDCI',\n            'SYXCICI',\n            'SHACICI',\n            'SHEYACI',\n            'SZXCICI',\n            'SZVCICI',\n            'XMNCICI',\n            'TLNSPQQ',\n            'XMNXCQQ',\n            'PARAHQQ',\n            'ETZMHQQ',\n            'PARFRQQ',\n            'SYXCUQQ',\n            'SZVASDI',\n            'AQGACDI',\n            'AOGCNDI',\n            'AVAHSDI',\n            'JJNXIDI',\n            'NBSBCDI',\n            'BVNDIDI',\n            'BHYBEDI',\n            'BJSDTDI',\n            'BJSPDDI',\n            'CEQCJDI',\n            'CCFELDI',\n            'CSXJSDI',\n            'CTUGUDI',\n            'CTULODI',\n            'CTUAPDI',\n            'CTUCGDI',\n            'CKGNADI',\n            'CKGJBDI',\n            'CKGCWDI',\n            'DATYWDI',\n            'XHOGRDI',\n            'XHODGDI',\n            'CTUDJDI',\n            'FUOFNDI',\n            'FUGFNDI',\n            'CANSCDI',\n            'CANSRDI',\n            'CANGODI',\n            'KWEYGDI',\n            'HAKSTDI',\n            'HGHHEDI',\n            'HGHGZDI',\n            'HUZHADI',\n            'SHASPDI',\n            'ZATHGDI',\n            'ZBDWYDI',\n            'HGHJIDI',\n            'JLIDIDI',\n            'JNZJIDI',\n            'JNZJDDI',\n            'JIUBBDI',\n            'JHBDTDI',\n            'BKIKMDI',\n            'KULDTDI',\n            'KMGAPDI',\n            'HAKLGDI',\n            'LYALCDI',\n            'JIUYPDI',\n            'MKZMMDI',\n            'MYYNEDI',\n            'NGBNCDI',\n            'NGBNBDI',\n            'FOCLDDI',\n            'KULPTDI',\n            'PVDQIDI',\n            'TAOMMDI',\n            'TAOLXDI',\n            'GOQQGDI',\n            'JUZQZDI',\n            'RKZRCDI',\n            'LUMRUDI',\n            'SZBSADI',\n            'SHANXDI',\n            'SHAZHDI',\n            'SHAJADI',\n            'JUZSHDI',\n            'SWADIDI',\n            'HGHSCDI',\n            'SHEDTDI',\n            'SZXAPDI',\n            'SZXDJDI',\n            'SZXSRDT',\n            'SZXSDDI',\n            'XFNSHDI',\n            'SZVDIDI',\n            'SZVCHDI',\n            'TNATADI',\n            'TSATPDI',\n            'HYNBTDI',\n            'TVSTADI',\n            'TSNDTDT',\n            'TSNTBDI',\n            'YNTWHDI',\n            'WEHWCDI',\n            'NKGWUDI',\n            'WUXXDDI',\n            'XMNXHDI',\n            'XMNWBDI',\n            'XICBMDI',\n            'CTUYCDI',\n            'YTYDTDI',\n            'YNTCNDI',\n            'YNTXIDI',\n            'YIHCHDI',\n            'YDDDDDI',\n            'YIWWTDI',\n            'YCUDIDI',\n            'CGOZEDI',\n            'NGBYUDI',\n            'ZGNNNDI',\n            'ZGNDADI',\n            'ZUHAIDI',\n            'YBPZIDI',\n            'ZYIDTDT',\n            'SHEBCDI',\n            'SYXHQDI',\n            'WXJXADI',\n            'HAKHCDI',\n            'PENMBDI',\n            'SYXDTDI',\n            'JHGXIDI',\n            'BPOESES',\n            'HAKCHES',\n            'FUOTCHX',\n            'KWEGCHX',\n            'HFESXHX',\n            'CTUHXHX',\n            'CANNTHX',\n            'ZBDHJHX',\n            'JILJLHX',\n            'LHWANHX',\n            'SYXYLHX',\n            'NAOBJHX',\n            'WUHHXHX',\n            'CANGCHX',\n            'CANTNHX',\n            'AVAGNHX',\n            'HLHBAHX',\n            'SJWBCHX',\n            'CGQBBHX',\n            'ZHABRHX',\n            'PEKBSHX',\n            'BJSFHHX',\n            'DOYBZHX',\n            'TLSBCHX',\n            'BODFRHX',\n            'FUGBOHX',\n            'TSNCAHX',\n            'CGQSDHX',\n            'CGQCHHX',\n            'CGQCNHX',\n            'CSXCNHX',\n            'CSXYDHX',\n            'CSXTMHX',\n            'CSXCGHX',\n            'CSXCAHX',\n            'CSXCSHX',\n            'CSXCBHX',\n            'CSXKDHX',\n            'SWAGGHX',\n            'PEKCMHX',\n            'CTUWDHX',\n            'CTUGDHX',\n            'CTUJNHX',\n            'CTUCNHX',\n            'SZXSEHX',\n            'CKGHXHX',\n            'NGBCXHX',\n            'ORYCLHX',\n            'DLCDAHX',\n            'YIWDYHX',\n            'KWEDLHX',\n            'CANFSHX',\n            'FUOHXHX',\n            'FUOMGHX',\n            'HFEFGHX',\n            'FOCFUHX',\n            'FOCHXHX',\n            'KOWOWHX',\n            'CANBYHX',\n            'GYSGCHX',\n            'CANGLHX',\n            'CANWHHX',\n            'FUOGGHX',\n            'CANWCHX',\n            'CANKCHX',\n            'CANWEHX',\n            'CANDNHX',\n            'CANGGHX',\n            'CANZAHX',\n            'SZXGBHX',\n            'KWLGXHX',\n            'KWLHXHX',\n            'KWLOCHX',\n            'KWECHHX',\n            'KWEHXHX',\n            'KWEGGHX',\n            'KWEYDHX',\n            'KWEWEHX',\n            'HAKHKHX',\n            'HAKMLHX',\n            'HGHBJHX',\n            'HGHXSHX',\n            'HGHHZHX',\n            'HGHHTHX',\n            'HGHHXHX',\n            'HGHCCHX',\n            'HGHOUHX',\n            'HRBHWHX',\n            'HFEXIHX',\n            'HFEGXHX',\n            'HFEHXHX',\n            'HNYXOHX',\n            'HNYBEHX',\n            'HLHHXHX',\n            'HETHCHX',\n            'HUZHOHX',\n            'HLDHUHX',\n            'AVACHHX',\n            'JGSAVHX',\n            'HKGJJHX',\n            'JXSHXHX',\n            'TNAJIHX',\n            'TNAOCHX',\n            'YIHJSHX',\n            'TYNJIHX',\n            'CGOKFHX',\n            'LLBKKHX',\n            'KMGGAHX',\n            'KVNCHHX',\n            'TNALAHX',\n            'NAOLZHX',\n            'LHWLMHX',\n            'CTULSHX',\n            'LYGHOHX',\n            'TNALCHX',\n            'LJGLCHX',\n            'LILFRHX',\n            'LYILIHX',\n            'CSXHXHX',\n            'LZHLZHX',\n            'LYALYHX',\n            'ZHAMMHX',\n            'MXZCNHX',\n            'WNHMZHX',\n            'KHNGNHX',\n            'KHNDDHX',\n            'KHNANHX',\n            'NKGCNHX',\n            'NKGSKHX',\n            'NKGHXHX',\n            'NKGNLHX',\n            'NNGNNHX',\n            'NNGCCHX',\n            'NNGJIHX',\n            'NNGAGHX',\n            'NTGNGHX',\n            'NTGGAHX',\n            'NGBHXHX',\n            'DSNORHX',\n            'PZIPZHX',\n            'SHPQGHX',\n            'SHPQIHX',\n            'IQNGDHX',\n            'IQNQNHX',\n            'CANQYHX',\n            'KMGQUHX',\n            'TXNQUHX',\n            'TXNQWHX',\n            'WMTREHX',\n            'TAORZHX',\n            'SQJFUHX',\n            'SYXYAHX',\n            'SYXHXHX',\n            'SHAHSHX',\n            'SHAXHHX',\n            'SHACCHX',\n            'CANSHHX',\n            'SZXXXHX',\n            'SZXHXHX',\n            'SZXBNHX',\n            'SZXBBHX',\n            'SJWSPHX',\n            'SJWSHHX',\n            'XFNNNHX',\n            'DATSZHX',\n            'OSQHXHX',\n            'NCENCHX',\n            'CKGSUHX',\n            'SZVXCHX',\n            'WUXSUHX',\n            'SZVALHX',\n            'SZVWUHX',\n            'YTYTXHX',\n            'TYNXDHX',\n            'WUXHAHX',\n            'TSNTIHX',\n            'TSNDGHX',\n            'TSNJXHX',\n            'TSNJNHX',\n            'THQCNHX',\n            'HJJTOHX',\n            'HGHTNHX',\n            'WEHCHHX',\n            'WEHWEHX',\n            'WUHWCHX',\n            'WUHUHHX',\n            'WUHTTHX',\n            'WUXWIHX',\n            'XMNXNHX',\n            'XMNXPHX',\n            'XIYHXHX',\n            'XIYHZHX',\n            'SIAHXHX',\n            'XIYEDHX',\n            'XICXGHX',\n            'XNTCNHX',\n            'XNNCNHX',\n            'XNNXIHX',\n            'LHWXIHX',\n            'XUZXCHX',\n            'XUZXZHX',\n            'XUZHXHX',\n            'CTUYAHX',\n            'YNZYGHX',\n            'YNZHXHX',\n            'YTYYAHX',\n            'YTDYZHX',\n            'YTYHXHX',\n            'YNJCNHX',\n            'YNTTIHX',\n            'YNTAIHX',\n            'INCYCHX',\n            'FUOYUHX',\n            'LYIZAHX',\n            'DYGCNHX',\n            'ZHADAHX',\n            'CGOZZHX',\n            'CGOHDHX',\n            'CGONYHX',\n            'CGONWHX',\n            'ZUJPGHX',\n            'ZGNHXHX',\n            'HSNOTHX',\n            'ZUHMGHX',\n            'MFMZUHX',\n            'LYAZNHX',\n            'DHUHUHX',\n            'ZYIQCHX',\n            'WUHBBHX',\n            'CSXSCHX',\n            'CTULQHX',\n            'HFELZHX',\n            'LHWLHHX',\n            'NNGHXHX',\n            'WUHANHX',\n            'PARCHHI',\n            'BJSHITW',\n            'BJSCAHI',\n            'BJSTOHI',\n            'BJSWFHI',\n            'BJSBCHI',\n            'CGDHIHI',\n            'CSXCHHI',\n            'CSXCCHI',\n            'CSXCEHI',\n            'CZXWDHI',\n            'CTUCCHI',\n            'CTUCUHI',\n            'CKGHIHI',\n            'CKGCNHI',\n            'CKGCRHI',\n            'CKGCCHI',\n            'CTUHVHI',\n            'DLUGTHI',\n            'DLCZSHI',\n            'DLCDCHI',\n            'XHODOHI',\n            'CTUDQHI',\n            'CTUECHI',\n            'XEBHIHI',\n            'FUOCDHI',\n            'FUOHHHI',\n            'FUOHIHI',\n            'FOCHIHI',\n            'CANGUHI',\n            'CANGPHI',\n            'CANGTHI',\n            'KWLGUHI',\n            'KWEGYHI',\n            'KWEJRHI',\n            'HAKHAHI',\n            'HAKMEHI',\n            'KWEGYHI',\n            'SYXCBHI',\n            'HAKHIHI',\n            'HGHJWHI',\n            'HGHHIHI',\n            'HGHLRHI',\n            'HGHQNHI',\n            'HGHHCHI',\n            'HRBHAHI',\n            'HFEHIHI',\n            'HNYHCHI',\n            'HETHOHI',\n            'HETHIHI',\n            'TXNHUHI',\n            'TXNHHHI',\n            'HUZLHHI',\n            'WUXJCHI',\n            'HGHJCHI',\n            'TNAHIHI',\n            'TNAJCHI',\n            'TNAJHHI',\n            'JZHJIHI',\n            'KHGKAHI',\n            'BKIKKHI',\n            'KULHIHI',\n            'KUCHITW',\n            'KMGKCHI',\n            'KMGAIHI',\n            'LHWQDHI',\n            'LJGCNHI',\n            'HGHLIHI',\n            'LZOLCHI',\n            'MLAHITW',\n            'NKGJFHI',\n            'NKGHIHI',\n            'NKGNRHI',\n            'NKGNSHI',\n            'NNGNHHI',\n            'NTGGNHI',\n            'NGBQAHI',\n            'DSNOCHI',\n            'CDGHITW',\n            'PARETHI',\n            'PARLDHI',\n            'PAROPHI',\n            'PETHITW',\n            'TAOGBHI',\n            'JJNHIHI',\n            'JJNQCHI',\n            'WNZRUHI',\n            'SQDHIHI',\n            'SYXHIHI',\n            'SHASCHI',\n            'SHASHHI',\n            'SHASGHI',\n            'SHAXRHI',\n            'SHEQNHI',\n            'SZXSFHI',\n            'SZXSNHI',\n            'SZXSSHI',\n            'SJWZSHI',\n            'SXBHITW',\n            'SZVSOHI',\n            'TYNHIHI',\n            'HYNTCHI',\n            'TCZTEHI',\n            'TSNNAHI',\n            'TSNECHI',\n            'TSNTNHI',\n            'URCHHHI',\n            'NAYLFHI',\n            'HAKWEHI',\n            'WNZWHHI',\n            'WUHOVHI',\n            'WUHRSHI',\n            'WUXWUHI',\n            'WUXLHHI',\n            'WUSWMHI',\n            'XMNHIHI',\n            'XIYHIHI',\n            'XIYCHHI',\n            'NGBXIHI',\n            'ZUHJGHI',\n            'YNTJRHI',\n            'YNTDIHI',\n            'NKGYFHI',\n            'CGOZHHI',\n            'ZGNZCHI',\n            'ZGNZDHI',\n            'ZGNNTHI',\n            'HSNZHHI',\n            'ZUHHIHI',\n            'HGHZHHI',\n            'CSXZHHI',\n            'KMGPOGI',\n            'AOGGIGI',\n            'NBSNGGI',\n            'BHYBCGI',\n            'BODGIGI',\n            'CTUSIGI',\n            'CTUHTGI',\n            'CTUCHGI',\n            'CTUJIGI',\n            'CTUCJGI',\n            'CTUCQGI',\n            'CTUSHGI',\n            'CTUDUGI',\n            'DLCPBGI',\n            'DDGZDGI',\n            'FUOGIGI',\n            'FOCFCGI',\n            'FOCCAGI',\n            'GYSBRGI',\n            'CANGZGI',\n            'KWLGCGI',\n            'KWEGUGI',\n            'HGHLUGI',\n            'HRBSTGI',\n            'HDGHBGI',\n            'HFEGIGI',\n            'TNAHEGI',\n            'HETGIGI',\n            'HKGMSGI',\n            'TXNHCGI',\n            'HZCZHGI',\n            'JXSFHGI',\n            'JILGIGI',\n            'JZHGIGI',\n            'JHBGIGI',\n            'KULUMGI',\n            'KULMYGI',\n            'KMGKGGI',\n            'LEHLHGI',\n            'LJGGIGI',\n            'BPXLCGI',\n            'ORYMAGI',\n            'NKGNCGI',\n            'NNGGIGI',\n            'NNGNGGI',\n            'NCEFRGI',\n            'NGBYAGI',\n            'ORYORGI',\n            'BJSBJGI',\n            'KULPUGI',\n            'LLFGIGI',\n            'CDGRFGI',\n            'SYXJRGI',\n            'SHAHCGI',\n            'DIGSLGI',\n            'SWAGIGI',\n            'NKGSXGI',\n            'SZXSBGI',\n            'SZXSHGI',\n            'XFNKAGI',\n            'SZVSWGI',\n            'TSNTGGI',\n            'SIATZGI',\n            'XFNXCGI',\n            'YNTHSGI',\n            'FUOYFGI',\n            'YYPYCGI',\n            'ZGNGIGI',\n            'MFMZHGI',\n            'YBPZGGI',\n            'ZYIZEGI',\n            'ZYINGGI',\n            'BJSWAWA',\n            'CTUWAWA',\n            'HAKWAWA',\n            'SYXHBWA',\n            'SYXHAWA',\n            'SHAWAWA',\n            'CDGTPWA',\n            'XMNWAWA',\n        ];\n        var hotelID = window.digitalData &&\n            window.digitalData.product &&\n            ((window.digitalData.product[0] &&\n            window.digitalData.product[0].productInfo &&\n            window.digitalData.product[0].productInfo.productID) ||\n            (window.digitalData.product.productInfo &&\n            window.digitalData.product.productInfo.productID));\n        return excludedHotels.indexOf(hotelID) !== -1;\n    }\n\n    function isOneClickReferrer() {\n        return !!visitor.getData('isOneClickReferrer');\n    }\n\n    /* Books 1 Room Only */\n\n    function isOnlyRoom() {\n        var roomDetailsBlock = document.querySelectorAll('p[class*=\"ResSummary\"]')[0];\n        var roomDetails = roomDetailsBlock && roomDetailsBlock.textContent.split(' for ');\n        var roomsNumber = (roomDetails && +roomDetails[0].replace(/\\D+/, '')) || +visitor.getAttr('RoomNmbr');\n\n        return +visitor.getAttr('RoomNmbr') === 1 || roomsNumber === 1;\n    }\n\n    function isEnglish() {\n        return window.location.href.indexOf('/en_US/') !== -1 ||\n            window.location.href.indexOf('/en/') !== -1;\n    }\n\n    function isNotTravelAgent() {\n        var inputTravelAgent = document.querySelector('#rateFilterTravelAgent') ||\n            document.querySelector('#specialCodeTravelAgent');\n        var isChecked = false;\n        if (inputTravelAgent) {\n            isChecked = inputTravelAgent.checked;\n        }\n        return !isChecked || (dataForOhw && !dataForOhw.isTravelAgent);\n    }\n\n    function isNotSpecialRate() {\n        var isReactFunnel = window.location.href.indexOf('book/reservation/') !== -1;\n        var specialRatesCodesCheckboxIds = [\n            'rateFilterAAA',\n            'rateFilterAARP',\n            'rateFilterCARP',\n            'rateFilterSenior',\n            'rateFilterGovt',\n            'rateFilterGroup',\n            'rateFilterPromotion',\n            'rateFilterCorporate',\n            'contentOfferId',\n            'specialCodeAAA',\n            'specialCodeAARP',\n            'specialCodeSenior',\n            'specialCodeGovt',\n            'specialCodePromotion',\n            'specialCodeGroup',\n            'specialCodeCorporate',\n        ];\n\n        if (isReactFunnel) {\n            return dataForOhw && !dataForOhw.isSpecialRate;\n        }\n\n        return specialRatesCodesCheckboxIds.every(function (id) {\n            var currentCheckboxElement = document.getElementById(id);\n            var isChecked = false;\n            if (currentCheckboxElement) {\n                isChecked = currentCheckboxElement.checked;\n            }\n            return !isChecked;\n        });\n    }\n\n    function isNotHonorsPoints() {\n        var honorsPointsInput = document.querySelector('#rateFilterHHonors') ||\n            document.querySelector('#rewardBooking');\n        var isChecked = false;\n\n        if (honorsPointsInput) {\n            isChecked = honorsPointsInput.checked;\n        }\n        return !isChecked || (dataForOhw && !dataForOhw.isHonorsPoints);\n    }\n\n    function createLayerPropertiesObj() {\n        return functions.forEach(function (funct) {\n            var ieFunctNameMatch = funct.toString().match(/^function\\s*([^\\s(]+)/);\n            var ieFunctName = ieFunctNameMatch && ieFunctNameMatch[1];\n            var functName = funct.name || ieFunctName;\n            properties[functName] = funct();\n\n            return properties;\n        });\n    }\n\n    function checkLayerProperties(layerProperties, phase) {\n        if (Object.keys(layerProperties).length === 9 && Object.keys(phase).length === 9) {\n            return Object.keys(layerProperties)\n                .every(function (property) {\n                    return layerProperties[property] === phase[property] ||\n                        phase[property] === 'any';\n                });\n        }\n        return false;\n    }\n\n    functions = [\n        isHonorsUser,\n        isGWreferrer,\n        isExcludedHotel,\n        isOneClickReferrer,\n        isOnlyRoom,\n        isEnglish,\n        isNotTravelAgent,\n        isNotSpecialRate,\n        isNotHonorsPoints,\n    ];\n\n    createLayerPropertiesObj();\n\n    resVal = Object.keys(comparisonChartObj)\n        .filter(function (phase) {\n            return checkLayerProperties(properties, comparisonChartObj[phase]);\n        }).shift() || 'NotQualified';\n\n    // debug statements, commented out @Ally Han\n    /*console.log(properties);\n    console.log('phase: ' + resVal);*/\n\n    if (resVal !== 'NotQualified') {\n        visitor.storeAttr('Layer', resVal);\n    }\n};","Order":-3,"HighLevelApiVersion":"1.12"},{"Name":"commonCriteria","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function () {\n    modules.define('DatePCsProvider', { autoDefine: false, singleton: false }, function () {\n        /**\n         * Helper function that gets the arrival and departure dates\n         * @returns {{arrivalDate: Date, departureDate: Date}}\n         */\n\n        function convertDateStrFromDigDat(digitalDataStr) {\n            var month = digitalDataStr.substr(0, 2);\n            var day = digitalDataStr.substr(2, 2);\n            var year = digitalDataStr.substr(4, 4);\n\n            var monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n            return day + '.' + monthsShort[(Number(month) - 1)] + '.' + year;\n        }\n\n        function getArrDepDates() {\n            function getSearchObj(search, decode) {\n                var tokens = search.slice(1).split(/&|=/),\n                    obj = Object.create(null),\n                    i = 0;\n\n                for (; i < tokens.length; i += 2) {\n                    obj[decode(tokens[i])] = decode(tokens[i + 1]);\n                }\n\n                return obj;\n            }\n\n            var queryStringObj = getSearchObj(window.location.search, decodeURIComponent);\n            var arrivalDateStr = (document.querySelector('[name=arrivalDate]') && document.querySelector('[name=arrivalDate]').value) || queryStringObj.arrivalDate;\n            var departureDateStr = (document.querySelector('[name=departureDate]') && document.querySelector('[name=departureDate]').value) || queryStringObj.departureDate;\n\n            if ((!arrivalDateStr || !departureDateStr) && site.scope.step) {\n                // guest info, rooms and rates, payment\n                // window.digitalData.cart.item[0].productInfo.endDate/startDate\n                if (site.scope.step !== 'Confirmation' &&\n                    window.digitalData &&\n                    window.digitalData.cart &&\n                    window.digitalData.cart.item &&\n                    window.digitalData.cart.item[0] &&\n                    window.digitalData.cart.item[0].productInfo) {\n                    arrivalDateStr = convertDateStrFromDigDat(window.digitalData.cart.item[0].productInfo.startDate);\n                    departureDateStr = convertDateStrFromDigDat(window.digitalData.cart.item[0].productInfo.endDate);\n                }\n\n                // confirmation page\n                // digitalData.transaction.item[0].productInfo.startDate/endDate\n                if (site.scope.step === 'Confirmation' &&\n                    window.digitalData &&\n                    window.digitalData.transaction &&\n                    window.digitalData.transaction.item &&\n                    window.digitalData.transaction.item[0] &&\n                    window.digitalData.transaction.item[0].productInfo) {\n                    arrivalDateStr = convertDateStrFromDigDat(window.digitalData.transaction.item[0].productInfo.startDate);\n                    departureDateStr = convertDateStrFromDigDat(window.digitalData.transaction.item[0].productInfo.endDate);\n                }\n            }\n\n            return {\n                arrivalDate:   arrivalDateStr ? new Date(arrivalDateStr) : null,\n                departureDate: departureDateStr ? new Date(departureDateStr) : null,\n            };\n        }\n\n        /**\n         * Helper function that returns today's date (at time 00:00:00)\n         * @returns {Date}\n         */\n        function getNow() {\n            var nowDate = new Date();\n            nowDate.setHours(0);\n            nowDate.setMinutes(0);\n            nowDate.setSeconds(0, 0);\n\n            nowDate = nowDate.getTime();\n            return nowDate;\n        }\n\n        /**\n         * Get day in miliseconds\n         * @returns {number}\n         */\n        function getOneDay() {\n            return 1000 * 60 * 60 * 24;\n        }\n\n        // helper variables\n        var oneDay = getOneDay();\n        var nowDate = getNow();\n\n        /**\n         * Helper function that gets stayduration PC value based on arrival and departure dates\n         * @param arrivalDate {Date}\n         * @param departureDate {Date}\n         * @returns {string}\n         */\n        this.getStayDuration = function (arrivalDate, departureDate) {\n            var ret = '';\n\n            var StayDuration = Math.round((departureDate.getTime() - arrivalDate.getTime()) / oneDay);\n            if (StayDuration === 0) {\n                ret = '0 (day use)';\n            } else if (StayDuration === 1) {\n                ret = '1 night';\n            } else if (StayDuration <= 3 && StayDuration >= 2) {\n                ret = '2-3 night';\n            } else if (StayDuration <= 5 && StayDuration >= 4) {\n                ret = '4-5';\n            } else if (StayDuration <= 7 && StayDuration >= 6) {\n                ret = '6-7';\n            } else if (StayDuration <= 30 && StayDuration >= 8) {\n                ret = '8-30';\n            } else if (StayDuration >= 31) {\n                ret = '31+';\n            }\n\n            return ret;\n        };\n\n        /**\n         * Helper function that gets daystobooking PC value based on arrival date\n         * @param arrivalDate {Date}\n         * @returns {string}\n         */\n        this.getDaysToBooking = function (arrivalDate) {\n            var ret = '';\n\n            var DaysToBooking = Math.round((arrivalDate.getTime() - nowDate) / oneDay);\n            if (DaysToBooking <= 3 && DaysToBooking >= 0) {\n                ret = '0-3';\n            } else if (DaysToBooking <= 7 && DaysToBooking >= 4) {\n                ret = '4-7';\n            } else if (DaysToBooking <= 14 && DaysToBooking >= 8) {\n                ret = '8-14';\n            } else if (DaysToBooking <= 30 && DaysToBooking >= 15) {\n                ret = '15-30';\n            } else if (DaysToBooking <= 60 && DaysToBooking >= 31) {\n                ret = '31-60';\n            } else if (DaysToBooking <= 90 && DaysToBooking >= 61) {\n                ret = '61-90';\n            } else if (DaysToBooking <= 120 && DaysToBooking >= 91) {\n                ret = '91-120';\n            } else if (DaysToBooking <= 121 && DaysToBooking >= 150) {\n                ret = '121-150';\n            } else if (DaysToBooking <= 151 && DaysToBooking >= 180) {\n                ret = '151-180';\n            } else if (DaysToBooking >= 181) {\n                ret = '181+';\n            }\n\n            return ret;\n        };\n\n        /**\n         * Helper function that gets satstay PC value\n         * @param arrivalDate {Date}\n         * @param departureDate {Date}\n         * @returns {string}\n         */\n        this.getSatStay = function (arrivalDate, departureDate) {\n            var arrivalDateTime = arrivalDate.getTime();\n            var departureDateTime = departureDate.getTime();\n            var ret = 'no';\n\n            // arrivalDateTime += oneDay;\n            while (arrivalDateTime <= departureDateTime) {\n                if ((new Date(arrivalDateTime)).getDay() === 6) {\n                    ret = 'yes';\n                    break;\n                }\n                arrivalDateTime += oneDay;\n            }\n\n            return ret;\n        };\n\n        this.getDatesFromPage = function () {\n            return getArrDepDates();\n        };\n\n        /**\n         * Sets all the date PCs based on Dates parsed from HTML - use this in CommonCriteria\n         */\n        this.getAllDatePCs = function () {\n            // setup helper variables\n            var arrivalDepartureDates = getArrDepDates();\n            var retObj = {\n                StayDuration:  '',\n                SatStay:       '',\n                DaysToBooking: '',\n            };\n\n            if (arrivalDepartureDates.arrivalDate && arrivalDepartureDates.departureDate) {\n                retObj.StayDuration = this.getStayDuration(arrivalDepartureDates.arrivalDate, arrivalDepartureDates.departureDate);\n                retObj.SatStay = this.getSatStay(arrivalDepartureDates.arrivalDate, arrivalDepartureDates.departureDate);\n            }\n\n            if (arrivalDepartureDates.arrivalDate) {\n                retObj.DaysToBooking = this.getDaysToBooking(arrivalDepartureDates.arrivalDate);\n            }\n\n            return retObj;\n        };\n    });\n\n    modules.define('CommonCriteria', { autoDefine: true, singleton: true }, function () {\n        site.scope.commonCriteria = site.scope.commonCriteria || {};\n\n        var datePCsProvObj = modules.require('DatePCsProvider');\n\n        // set up data to be used by SignInSource PC\n        var signInReferrerFunnelPages = ['Rooms', 'Guest', 'Payment'];\n        if (signInReferrerFunnelPages.indexOf(site.scope.step) !== -1) {\n            cookies.set('mm-PC-signIn-referrer', site.scope.step);\n        } else if (!(site.scope.step === 'ConfirmLogin' || document.title.match(/Sign\\sIn/i) !== null)) {\n            cookies.remove('mm-PC-signIn-referrer');\n        }\n\n        function getPCFromCache(pcName) {\n            return visitor.getAttr(pcName) || '';\n        }\n\n        function updatePCStateObj(name, value) {\n            if (!value) {\n                value = getPCFromCache(name);\n            }\n            site.scope.commonCriteria[name] = value;\n            return value;\n        }\n\n        var self = this;\n        var defHelper = function (getterMethod, async) {\n            var def = Deferred();\n            var helper = function () {\n                var valueFromGetter = getterMethod && getterMethod.call(self);\n                if (valueFromGetter) {\n                    def.resolve(valueFromGetter, true);\n                } else {\n                    def.resolve(valueFromGetter, false);\n                }\n            };\n\n            if ((typeof async === 'boolean') && async) {\n                events.domReady(helper);\n            } else if (typeof async === 'function') {\n                async(helper);\n            } else {\n                helper();\n            }\n            return def.promise();\n        };\n\n        function getAccountTier() {\n            var tier;\n            var tierCookie1 = cookies.get('hhTier');\n            var tierCookie2 = cookies.get('accountTier');\n            var tierCookieMap = {\n                'B': 'Member',\n                'S': 'Silver',\n                'G': 'Gold',\n                'P': 'PreferentGold',\n                'D': 'Diamond',\n            };\n            var tierCookie = tierCookie1 || (tierCookie2 && tierCookie2[0]);\n            tier = tierCookieMap[tierCookie] || '';\n\n            return tier;\n        }\n\n        this.getLoggedIn = function () {\n            var ret = cookies.get('loggedIn') ? 'yes' : 'no';\n\n            if (!ret) {\n                ret = getPCFromCache('loggedin');\n            }\n\n            site.scope.commonCriteria.loggedin = ret;\n            return ret;\n        };\n\n        this.defLoggedIn = function () {\n            return defHelper(this.getLoggedIn);\n        };\n\n        // domr\n        this.getAllDatePCs = function () {\n            var datePCsData = datePCsProvObj.getAllDatePCs();\n\n            for (var key in datePCsData) {\n                if (!datePCsData[key]) {\n                    datePCsData[key] = getPCFromCache(key);\n                }\n                site.scope.commonCriteria[key] = datePCsData[key];\n            }\n\n            return datePCsData;\n        };\n\n        this.defAllDatePCs = function () {\n            return defHelper(this.getAllDatePCs, true);\n        };\n\n        /*\n         StayDuration,\n         SatStay,\n         DaysToBooking\n         */\n        var datesHelper = function (handler, onlyArrival) {\n            // arrivalDepartureDates.arrivalDate && arrivalDepartureDates.departureDate\n            var arrDepDates = datePCsProvObj.getDatesFromPage();\n            var ret = '';\n            if ((arrDepDates.arrivalDate && arrDepDates.departureDate) || (onlyArrival && arrDepDates.arrivalDate)) {\n                ret = handler(arrDepDates.arrivalDate, arrDepDates.departureDate);\n            }\n            return ret;\n        };\n        this.getStayDuration = function () {\n            var ret = datesHelper(datePCsProvObj.getStayDuration);\n            return updatePCStateObj('StayDuration', ret);\n        };\n\n        this.defStayDuration = function () {\n            return defHelper(this.getStayDuration, true);\n        };\n\n        this.getSatStay = function () {\n            var ret = datesHelper(datePCsProvObj.getSatStay);\n            return updatePCStateObj('SatStay', ret);\n        };\n\n        this.defSatStay = function () {\n            return defHelper(this.getSatStay, true);\n        };\n\n        this.getDaysToBooking = function () {\n            var ret = datesHelper(datePCsProvObj.getDaysToBooking, true);\n            return updatePCStateObj('DaysToBooking', ret);\n        };\n\n        this.defDaysToBooking = function () {\n            return defHelper(this.getDaysToBooking, true);\n        };\n\n        // children - domr\n        this.getChildren = function () {\n            var ret = '';\n\n            var childrenElem = [].slice.call(document.querySelectorAll('[name*=numberOfChildren]')),\n                childrenCount = 0;\n            if (childrenElem.length) {\n                childrenElem.forEach(function (elementNode) {\n                    childrenCount += parseInt(elementNode.value, 10);\n                });\n\n                if (childrenCount) {\n                    ret = 'yes';\n                } else {\n                    ret = 'no';\n                }\n            }\n\n            return updatePCStateObj('Children', ret);\n        };\n\n        this.defChildren = function () {\n            return defHelper(this.getChildren, true);\n        };\n\n        // rooms domr\n        this.getRoomNmbr = function () {\n            var ret = '';\n\n            var roomsElem = [].slice.call(document.querySelectorAll('[name*=numberOfRoom]')),\n                roomsCount;\n            if (roomsElem.length) {\n                roomsElem.forEach(function (elementNode) {\n                    roomsCount = parseInt(elementNode.value, 10);\n                });\n\n                if (roomsCount) {\n                    if (roomsCount >= 10) {\n                        ret = '10+';\n                    } else {\n                        ret = roomsCount;\n                    }\n                }\n            }\n\n            return updatePCStateObj('RoomNmbr', ret);\n        };\n        this.defRoomNmbr = function () {\n            return defHelper(this.getRoomNmbr, true);\n        };\n\n        // brand domr\n        this.getBrand = function () {\n            var ret = '';\n            if (window.BRAND && window.BRAND.lowerCaseId) {\n                ret = BRAND.lowerCaseId;\n            }\n\n            return updatePCStateObj('Brand', ret);\n        };\n\n        this.defBrand = function () {\n            return defHelper(this.getBrand, true);\n        };\n\n        // flexdates domr\n        this.getFlexDates = function () {\n            var ret = '';\n\n            var flexField = document.querySelector('#flexibleDates.checkbox');\n            if (flexField) {\n                ret = '' + flexField.checked;\n            }\n\n            return updatePCStateObj('FlexDates', ret);\n        };\n\n        this.defFlexDates = function () {\n            return defHelper(this.getFlexDates, true);\n        };\n\n        // banner_present\n        this.getBanner_Present = function () {\n            var ret = 'no';\n            /* if (window.jQuery && jQuery('.nor1box').length) {\n                ret = 'Nor1';\n            } */\n\n            if (document.querySelector('.nor1box')) {\n                ret = 'Nor1';\n            }\n\n            return updatePCStateObj('Banner_Present', ret);\n        };\n\n        this.defBanner_Present = function () {\n            return defHelper(this.getBanner_Present, true);\n        };\n\n        // hotelcode\n        this.getHotelcode = function () {\n            var ret = 'no';\n\n            if (window.digitalData &&\n                window.digitalData.page &&\n                window.digitalData.page.pageInfo &&\n                window.digitalData.page.pageInfo.pageName) {\n                var hpRegex = /-([A-Z]+):index$/;\n                var funnelRegex = /book\\|([A-Z]+):[^:]*$/;\n                var aftPurchRegex = /(?:manage|confirmation)\\|([A-Z]+)$/;\n                var result = window.digitalData.page.pageInfo.pageName.match(hpRegex) ||\n                    window.digitalData.page.pageInfo.pageName.match(funnelRegex) ||\n                    window.digitalData.page.pageInfo.pageName.match(aftPurchRegex);\n                if (result && result.length === 2) {\n                    ret = result[1];\n                }\n            }\n\n            return updatePCStateObj('hotelcode', ret);\n        };\n\n        this.defHotelcode = function () {\n            return defHelper(this.getHotelcode, true);\n        };\n\n        this.getPropCountry = function () {\n            var propCountry = window.digitalData && window.digitalData.page && window.digitalData.page.attributes && window.digitalData.page.attributes.propertySearchCountry || '';\n\n            return updatePCStateObj('PropCountry', propCountry);\n        };\n\n        this.defPropCountry = function () {\n            return defHelper(this.getPropCountry, function (helper) {\n                var stopWaiting;\n                window.setTimeout(function () {\n                    stopWaiting = true;\n                }, 5000);\n                when(function () {\n                    return window.digitalData && window.digitalData.page && window.digitalData.page.attributes && window.digitalData.page.attributes.propertySearchCountry;\n                }, function () {\n                    return stopWaiting;\n                }).always(helper);\n            });\n        };\n\n        // Referrer 2014.08.15 Andrey Zyabrev\n        this.getReferrer = function () {\n            var userAgentOldIE = /msie/i;\n            var referrer = document.referrer,\n                cookie = cookies.get('pseudoIATANumber'),\n                pcValue = 'Other';\n\n            if (navigator.userAgent.match(userAgentOldIE)) { // Update 2015.01.19 Roman Mikitenko\n                referrer = document.referrer || window.location.href;\n            }\n\n            // Match domain in the referrer\n            if (referrer) {\n                var matchedDomain = (function () {\n                    var refDomains = [\n                        { 'TripAdvisor': ['TripAdvisor\\\\.com'] },\n                        {\n                            'Meta': [\n                                'hipmunk',\n                                'trivago',\n                                'hotelscombined',\n                                'kayak',\n                                'skyscanner',\n                                'thesuitest',\n                                'clicktripz',\n                                'dealchecker',\n                                'ciao\\\\.de',\n                                'kelkoo',\n                                'lookingforbooking',\n                                'travelsupermarket',\n                                'hotellook',\n                                'holidaycheck',\n                                'wego\\\\.com',\n                            ],\n                        },\n                        {\n                            'Social': [\n                                'instagram',\n                                'plus\\\\.google',\n                                'vk\\\\.com',\n                                'ning',\n                                't\\\\.co',\n                                'meetme',\n                                'twitter',\n                                'facebook',\n                                'linkedin',\n                                'stumbleupon',\n                                'tumblr',\n                                'digg',\n                                'reddit',\n                                'myspace',\n                                'flickr',\n                                'youtube',\n                                'flixster',\n                                'friendster',\n                                'delicious',\n                                'mixx',\n                                'badoo',\n                                'bebo',\n                                'classmates',\n                                'douban',\n                                'fotolog',\n                                'friendsreunited',\n                                'hi5',\n                                'kaixin001',\n                                'mylife',\n                                'orkut',\n                                'skyrock',\n                                'sonico',\n                                'studivz',\n                                'trombi',\n                                'tuenti',\n                                'viadeo',\n                                'xing',\n                                'tagged',\n                                'yelp',\n                                'blogster',\n                                'foursquare',\n                                'mixi',\n                                'gree',\n                                'yahoo-mbga',\n                                'urbanspoon',\n                                'blogger',\n                                'friendfeed',\n                                'iwiw',\n                                'mxit',\n                                'netlog',\n                                'renren',\n                                'seesmic',\n                                't\\\\.qq',\n                                'weibo',\n                                'pulse\\\\.yahoo',\n                                'pinterest',\n                                'odnoklassniki',\n                                'cyworld\\\\.com',\n                                'nate\\\\.com',\n                                'geni\\\\.com',\n                                'buzznet\\\\.com',\n                                'perfspot',\n                                'zorpia',\n                                'deviantart',\n                                'livejournal',\n                                'cafemom',\n                                'meetup',\n                                'xanga',\n                                'migente',\n                                'ryze',\n                            ],\n                        },\n                        { 'OTA': ['expedia', 'orbitz', 'priceline', 'hotels\\\\.com', 'hotwire', 'travelocity'] },\n                        {\n                            'Natural/Organic Search': [\n                                'www\\\\.google\\\\.', '\\\\yahoo\\\\.com', 'www\\\\.bing\\\\.com', 'ask\\\\.com', 'earthlink\\\\.com',\n                                'excite\\\\.com', 'mywebsearch\\\\.com', 'live\\\\.com', 'yahoo\\\\.net', 'comcast\\\\.net',\n                                'search-results\\\\.com', 'aol\\\\.com', 'search\\\\.yahoo\\\\.com', 'travel\\\\.yahoo\\\\.com',\n                            ],\n                        },\n                        {\n                            'Brand.com': [\n                                'doubletree3\\\\.hilton\\\\.com',\n                                'hamptoninn3\\\\.hilton\\\\.com',\n                                'embassysuites3\\\\.hilton\\\\.com',\n                                'conradhotels3\\\\.hilton\\\\.com',\n                                'waldorfastoria3\\\\.hilton\\\\.com',\n                                'home2suites3\\\\.hilton\\\\.com',\n                                'homewoodsuites3\\\\.hilton\\\\.com',\n                                'hiltongardeninn3\\\\.com',\n                                'hilton\\\\.com',\n                            ],\n                        },\n                    ];\n\n                    for (var key = 0; key < refDomains.length; key++) {\n                        for (var p in refDomains[key]) {\n                            if (refDomains[key].hasOwnProperty(p)) {\n                                for (var i = 0; i < refDomains[key][p].length; i++) {\n                                    if (new RegExp('[^\\\\w]' + refDomains[key][p][i], 'i').test(referrer.split('?')[0])) {\n                                        return p;\n                                    }\n                                }\n                            }\n                        }\n                    }\n\n                    return '';\n                }());\n\n                if (matchedDomain) pcValue = matchedDomain;\n            } else {\n                pcValue = 'Direct';\n            }\n\n            var ValByKey = function (str, key, f, r) {\n                var trim = function (str) {\n                    return str.replace(/^\\s+/g, '').replace(/\\s+$/g, '');\n                };\n                var k = key.replace(/\\./g, '\\\\.'),\n                    sre1 = '\\\\s*(' + k + ')\\\\s*' + f + '([^' + r + ']*)',\n                    r2 = '',\n                    m,\n                    re = new RegExp(r + sre1, 'gm'),\n                    re1 = new RegExp('^' + sre1, 'gm');\n                while ((m = re.exec(str)) != null) r2 = trim(m[2]);\n                if (r2 === '' && (m = re1.exec(str)) != null) r2 = trim(m[2]);\n                return r2;\n            };\n\n            // Match param in the url\n            if (ValByKey(location.search.slice(1), 'WT.srch', '=', '&') == 1) {\n                pcValue = 'Paid Search';\n            } else if ((function () {\n                var param = ValByKey(location.search.slice(1), 'WT.mc_id', '=', '&'),\n                    opts = ['2OLE', '2OLF', 'CMEM', 'EPEM', 'OMHN', 'CNAF'];\n                if (param) {\n                    for (var i = 0; i < opts.length; i++) {\n                        if (new RegExp(opts[i], 'i').test(param)) return true;\n                    }\n                }\n                return false;\n            })()) {\n                pcValue = 'Email';\n            }\n\n            // Check cookie existence\n            if (cookie) pcValue = 'Display';\n\n            return updatePCStateObj('Referrer', pcValue);\n        };\n\n        this.defReferrer = function () {\n            return defHelper(this.getReferrer);\n        };\n\n        // Franchise\n        this.getFranchise = function () {\n            // var linkNodeHref = window.jQuery ? jQuery('.resHeaderHotelInfo p .links a:contains(\"Hotel Details\"), .property-home-link a').attr('href') : '',\n            var linkNode = window.jQuery && jQuery('.resHeaderHotelInfo p .links a:contains(\"Hotel Details\"), .property-home-link a'),\n                linkNodeHref = linkNode ? linkNode.attr('href') : '',\n                hotelCode = (location.href.match(/-([A-Z]{7})\\//) || [, ''])[1] ||\n                    (linkNodeHref && (linkNodeHref.match(/-([A-Z]{7})\\//) || [, ''])[1]) || '';\n\n            var franchise = window.mmfCodes && window.mmfCodes[hotelCode] ? window.mmfCodes[hotelCode] : '';\n            switch (franchise) {\n                case 1:\n                    franchise = 'Franchised';\n                    break;\n                case 2:\n                    franchise = 'Owned Managed';\n                    break;\n            }\n\n            return updatePCStateObj('OMvFranchise', franchise);\n        };\n\n        this.defFranchise = function () {\n            var def = Deferred();\n\n            franchiseDef\n                .then(function () {\n                    var pcvalue = self.getFranchise();\n                    if (pcvalue) {\n                        def.resolve(pcvalue, true);\n                    } else {\n                        def.resolve('', false);\n                    }\n                }, function () {\n                    def.resolve('', false);\n                });\n\n            return def.promise();\n        };\n\n        // Cookied (first in T244)\n        this.getCookied = function () {\n            var ret = '';\n            var tier = getAccountTier();\n\n            var accountId = cookies.get('accountId') !== undefined,\n                loggedIn = cookies.get('loggedIn') !== undefined;\n\n            if (!accountId) {\n                ret = 'Non-Cookied';\n            } else if (!loggedIn) {\n                ret = (tier === 'PreferentGold') ? 'PGold_Cookied' : tier + '_Cookied';\n            }\n\n            return updatePCStateObj('Cookied', ret);\n        };\n\n        this.defCookied = function () {\n            return defHelper(this.getCookied);\n        };\n\n        this.getSearchType = function () {\n            var outSearchType = '';\n\n            if (site.scope.step === 'Rooms') {\n                outSearchType = 'Other';\n                var arrivalDate = document.querySelectorAll('.sumDates')[0] && new Date(Date.parse(document.querySelectorAll('.sumDates')[0].textContent.trim()\n                        .split(' - ')[0])),\n                    occupancyText = document.querySelectorAll('.sumOccupancy')[0] && document.querySelectorAll('.sumOccupancy')[0].textContent.trim(),\n                    adultsNum = (occupancyText.match(/[0-9]+ adult/) || [''])[0].replace(' adult', '') * 1 || 0,\n                    childrenNum = (occupancyText.match(/[0-9]+ child/) || [''])[0].replace(' child', '') * 1 || 0;\n\n                // childrenNum = childrenNum !== null ? childrenNum[0].replace(' child', '') * 1 : 0;\n                if (adultsNum > 1 && childrenNum > 0) {\n                    outSearchType = 'Family';\n                } else if (adultsNum === 1 && childrenNum === 0 && arrivalDate.getDay() >= 0 && arrivalDate.getDay() <= 3) {\n                    outSearchType = 'Business';\n                } else if (adultsNum > 1 && childrenNum === 0 && arrivalDate.getDay() >= 4 && arrivalDate.getDay() <= 6) {\n                    outSearchType = 'Weekend Couple';\n                }\n            }\n\n            return updatePCStateObj('SearchType', outSearchType);\n        };\n\n        this.defSearchType = function () {\n            return defHelper(this.getSearchType, true);\n        };\n\n        this.getUrgencyMsg = function () {\n            var ret = 'blank';\n\n            if (site.scope.step === 'Rooms') {\n                if (document.querySelector('#urgRatesAlert') !== null) {\n                    ret = 'yes';\n                } else {\n                    ret = 'no';\n                }\n            }\n\n            return updatePCStateObj('UrgencyMsg', ret);\n        };\n\n        this.defUrgencyMsg = function () {\n            return defHelper(this.getUrgencyMsg, true);\n        };\n\n        this.getHhdap = function () {\n            var ret = 'Blank';\n            hasHHDAP();\n\n            function hasHHDAP() {\n                var hhdapRateNames = ['hhonors discount advance purchase', 'hhonors adv purchase'],\n                    // ratesOnRoomRates = jQuery('.fsRoom .planDesc .popup');\n                    // ratesOnRoomRates = jQuery('.fsRoom .roomRateTable').not('.roomRateTableOtherRates').find('.planDesc .popup');\n                    ratesOnRoomRates = document.querySelectorAll('.fsRoom .rate-wrapper .rate-desc-wrapper .popup');\n\n                for (var i = ratesOnRoomRates.length; i--;) {\n                    var currentRate = ratesOnRoomRates[i].textContent.trim().toLowerCase();\n\n                    if (hhdapRateNames.indexOf(currentRate) !== -1) {\n                        ret = 'Yes';\n                        break;\n                    } else {\n                        ret = 'No';\n                    }\n                }\n                return ret;\n            }\n\n            return updatePCStateObj('HHDAP', ret);\n        };\n\n        this.defHhdap = function () {\n            return defHelper(this.getHhdap, true);\n        };\n\n        this.getSwapRates = function () {\n            var ret = 'Blank';\n            checkSwapRates();\n\n            function checkSwapRates() {\n                var bbExist = false,\n                    twoXExist = false;\n                // var rates = jQuery('.fsRoom:first .planDesc .popup');\n                // var rates = jQuery('.fsRoom:first .roomRateTableOtherRates .planDesc .popup');\n                var rates = document.querySelector('.fsRoom') && [].slice.call(document.querySelector('.fsRoom')\n                    .querySelectorAll('.roomRateTableOtherRates .rate-desc-wrapper .popup'));\n                var regExpBb = /(^bed\\s+(?:&|and|n\\'?)\\s+breakfast|^breakfast included)/g;\n\n                if (site.scope.step !== 'Rooms') {\n                    return ret;\n                }\n\n                rates.forEach(function (rateNode) {\n                    var currentRate = rateNode.textContent.toLowerCase();\n                    var bbRate = regExpBb.test(currentRate);\n                    var twoXRate = currentRate.indexOf('2x points') !== -1;\n\n                    if (bbRate) {\n                        bbExist = true;\n                    }\n\n                    if (twoXRate) {\n                        twoXExist = true;\n                    }\n                });\n\n                if (bbExist && twoXExist) {\n                    ret = 'Both';\n                } else if (bbExist) {\n                    ret = 'bb';\n                } else if (twoXExist) {\n                    ret = '2x';\n                } else {\n                    ret = 'No';\n                }\n\n                return ret;\n            }\n\n            return updatePCStateObj('SwapRates', ret);\n        };\n\n        this.defSwapRates = function () {\n            return defHelper(this.getSwapRates, true);\n        };\n\n        this.getSignInSource = function () {\n            var ret = 'Other';\n            if (site.scope.step === 'ConfirmLogin' || document.title.match(/Sign\\sIn/i) !== null) {\n                ret = isFrom();\n            }\n\n            function isFrom() {\n                var result = 'Other';\n                var ref = document.referrer;\n                var HomePage = /hilton\\.com\\/en\\/index\\.html/i.test(ref);\n                var PropertyPage = /hilton\\.com\\/en\\/hotels\\//i.test(ref);\n                var SearchResults = /\\/search\\/findhotels\\/results.htm/i.test(ref);\n                var FunnelStep = cookies.get('mm-PC-signIn-referrer');\n                var funnelCookieValMap = {\n                    'Rooms':   'RoomRate',\n                    'Guest':   'GuestInfo',\n                    'Payment': 'Payment',\n                };\n\n                if (SearchResults) {\n                    result = 'SR';\n                } else if (PropertyPage) {\n                    result = 'Property_Hmp';\n                } else if (HomePage) {\n                    result = 'Brand_Hmp';\n                } else if (/book\\.htm/i.test(ref) && FunnelStep) {\n                    result = funnelCookieValMap[FunnelStep] || 'Other';\n                }\n\n                return result;\n            }\n\n            return updatePCStateObj('SignInSource', ret);\n        };\n\n        this.defSignInSource = function () {\n            return defHelper(this.getSignInSource);\n        };\n\n        // HH Tier\n        this.getHHTier = function () {\n            var ret = getAccountTier();\n            return updatePCStateObj('HHTier', ret);\n        };\n\n        this.defHHTier = function () {\n            return defHelper(this.getHHTier);\n        };\n\n        // RR Count\n        this.getRRCount = function () {\n            var ret = '';\n\n            if (site.scope.step === 'Rooms') {\n                var $visibleRooms = document.querySelectorAll('.fsRoomroomTypeNotAccessible');\n\n                if ($visibleRooms.length) {\n                    if ($visibleRooms.length >= 15) {\n                        ret = '15_Plus';\n                    } else {\n                        ret = $visibleRooms.length;\n                    }\n                }\n            }\n\n            return updatePCStateObj('RRCount', ret);\n        };\n\n        this.defRRCount = function () {\n            return defHelper(this.getRRCount, true);\n        };\n\n        // SRCount\n        this.getSRCount = function () {\n            var ret = '';\n            var currentURL = window.location.href;\n            var SearchResults = /\\/search\\/findhotels\\/results.htm/i.test(currentURL);\n\n            if (SearchResults) {\n                var hotelsCount = window && window.searchResultsTotalNumberOfHotels;\n\n                if (hotelsCount) {\n                    if (hotelsCount >= 1 && hotelsCount <= 5) {\n                        ret = '1-5';\n                    } else if (hotelsCount >= 6 && hotelsCount <= 10) {\n                        ret = '6-10';\n                    } else if (hotelsCount >= 11 && hotelsCount <= 15) {\n                        ret = '11-15';\n                    } else if (hotelsCount >= 16 && hotelsCount <= 20) {\n                        ret = '16-20';\n                    } else if (hotelsCount >= 21 && hotelsCount <= 25) {\n                        ret = '21-25';\n                    } else if (hotelsCount >= 26 && hotelsCount <= 30) {\n                        ret = '26-30';\n                    } else if (hotelsCount >= 31 && hotelsCount <= 35) {\n                        ret = '31-35';\n                    } else if (hotelsCount >= 36 && hotelsCount <= 40) {\n                        ret = '36-40';\n                    } else if (hotelsCount >= 41 && hotelsCount <= 45) {\n                        ret = '41-45';\n                    } else if (hotelsCount >= 46 && hotelsCount <= 50) {\n                        ret = '46-50';\n                    } else if (hotelsCount >= 51 && hotelsCount <= 55) {\n                        ret = '51-55';\n                    } else if (hotelsCount > 55) {\n                        ret = '55_Plus';\n                    }\n                }\n            }\n\n            return updatePCStateObj('SRCount', ret);\n        };\n\n        this.defSRCount = function () {\n            return defHelper(this.getSRCount, true);\n        };\n\n        // Location\n        this.getLocation = function () {\n            var ret = '';\n            var currentURL = window.location.href;\n            var SearchResults = /\\/search\\/findhotels\\/results.htm/i.test(currentURL);\n\n            if (SearchResults) {\n                var SRLocation = document.querySelector('.searchSummary .sumLocation');\n                var SRMobileLocation = document.querySelector('.search_results .search_summary .location');\n\n                if (SRLocation) {\n                    ret = SRLocation.textContent.trim();\n                } else if (SRMobileLocation) {\n                    ret = SRMobileLocation.textContent.trim();\n                }\n            }\n\n            return updatePCStateObj('Location', ret);\n        };\n        this.defLocation = function () {\n            return defHelper(this.getLocation, true);\n        };\n\n        // Layer\n        this.getLayer = site.scope.getLayer;\n        this.defLayer = function () {\n            return defHelper(this.getLayer, function (helper) {\n                var stopWaiting;\n                window.setTimeout(function () {\n                    stopWaiting = true;\n                }, 10000);\n                events.domReady(function () {\n                    stopWaiting = true;\n                });\n                when(function () {\n                    return window.digitalData\n                        && (document.querySelector('#fsToGetAccurateRates .additionalCodes') || document.getElementById('specialCodeTravelAgent') );\n                }, function () {\n                    return stopWaiting;\n                }).always(helper);\n            });\n        };\n\n\n        /**\n         * Stores all PCs into cookie from site.scope.commonCriteria object\n         * this function should be invoked after setting up the PCs\n         */\n        this.storePCs = function () {\n            for (var key in site.scope.commonCriteria) {\n                if (site.scope.commonCriteria[key] !== '') {\n                    visitor.storeAttr(key, site.scope.commonCriteria[key]);\n                }\n            }\n        };\n\n        /**\n         * Updates all personalization criteria\n         */\n        this.updatePCs = function () {\n            // all PC setters\n            this.getCookied();\n            this.getStayDuration();\n            this.getSatStay();\n            this.getDaysToBooking();\n            this.getBanner_Present();\n            this.getBrand();\n            this.getChildren();\n            this.getRoomNmbr();\n            this.getFlexDates();\n            //this.getFranchise();\n            this.getHotelcode();\n            this.getLoggedIn();\n            this.getReferrer();\n            this.getSearchType();\n            this.getUrgencyMsg();\n            this.getHhdap();\n            this.getSwapRates();\n            this.getSignInSource();\n            this.getHHTier();\n            this.getRRCount();\n            this.getSRCount();\n            this.getLocation();\n            this.getLayer();\n            this.getPropCountry();\n\n            this.storePCs();\n        };\n\n        this.updatePCsDef = function () {\n            return when(\n                this.defCookied(),\n                this.defStayDuration(),\n                this.defSatStay(),\n                this.defDaysToBooking(),\n                this.defBanner_Present(),\n                this.defBrand(),\n                this.defChildren(),\n                this.defRoomNmbr(),\n                this.defFlexDates(),\n                //this.defFranchise(),\n                this.defHotelcode(),\n                this.defLoggedIn(),\n                this.defReferrer(),\n                this.defSearchType(),\n                this.defUrgencyMsg(),\n                this.defHhdap(),\n                this.defSwapRates(),\n                this.defSignInSource(),\n                this.defHHTier(),\n                this.defRRCount(),\n                this.defSRCount(),\n                this.defLocation(),\n                this.defPropCountry(),\n                this.defLayer()\n            ).then(function () {\n                self.storePCs();\n                return Deferred().resolve().promise();\n            });\n        };\n    });\n\n    var CommonCriteria = modules.require('CommonCriteria');\n\n    // Franchise codes\n    var franchiseDef = (function () {\n        var def = Deferred();\n        var brand = (window.BRAND && BRAND.lowerCaseId) ||\n            (location.pathname.match(/\\/(ch|dt|es|gi|hi|hp|ht|hw|wa|qq)\\//) || [, ''])[1];\n\n        function resolveDef() {\n            def.resolve();\n        }\n\n        if (brand && brand !== 'hh' && brand !== 'qq') {\n            var url = '//service.maxymiser.net/cdn/hilton/hilton.com/pc_criteria/franchise_codes/fcodes_' + brand + '_v2.js';\n            // document.write('<scr' + 'ipt src=\"//service.maxymiser.net/cdn/hilton/hilton.com/pc_criteria/franchise_codes/fcodes_' + brand + '.js\"></scr' + 'ipt>');\n            var script = document.createElement('script');\n            script.type = 'text/javascript';\n            script.src = url;\n            script.onload = resolveDef;\n            script.onerror = resolveDef;\n            document.head.appendChild(script);\n        } else {\n            resolveDef();\n        }\n        return def.promise();\n    }());\n\n\n    CommonCriteria.updatePCsDef();\n\n    var updatePCsEventHandler = function () {\n        CommonCriteria.updatePCs();\n    };\n\n    /* events.domReady(function () {\n        jQuery(window).bind('beforeunload', updatePCsEventHandler);\n        jQuery(window).bind('unload', updatePCsEventHandler);\n    }); */\n\n    events.domReady(function () {\n        window.addEventListener('beforeunload', updatePCsEventHandler);\n\n        window.addEventListener('unload', updatePCsEventHandler);\n\n        window.addEventListener('pagehide', updatePCsEventHandler);\n    });\n}());","Order":-2,"HighLevelApiVersion":"1.12"},{"Name":"Angular_Module","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Single-page routing module v1.0.3.0\n\"undefined\"===typeof router&&function(){function b(a){a&&c!==a&&(c=a,events.trigger(\"routeChange\",{newUrl:a}))}function e(a){return function(){b(window.location.protocol+\"//\"+window.location.host+arguments[2]);return a.apply(this,arguments)}}var c;modules.define(\"router\",{autoDefine:!0,singleton:!0},function(){this.onRouteChange=function(a){var b=function(b){for(var c=0;c<a.urls.length;c++){var d=b.newUrl;if(d&&d.match&&d.match(a.urls[c])){a.handler&&a.handler();break}}};b({newUrl:window.location.href});\nevents.on(\"routeChange\",b);return this};this.triggerRouteChange=function(a){c=a;events.trigger(\"routeChange\",{newUrl:a});return this};this.data={}});history.pushState=e(history.pushState);history.replaceState=e(history.replaceState);window.addEventListener(\"popstate\",function(a){b(window.location.href)});window.addEventListener(\"hashchange\",function(a){b(a.newURL)})}();","Order":1,"HighLevelApiVersion":"1.12"},{"Name":"trigger_SignOut","Type":"script","Attrs":{"type":"text/javascript"},"Data":"events.domReady(function () {\n    var signOutButton = document.getElementById('sign_out');\n    signOutButton && signOutButton.addEventListener('click', function () {\n        events.trigger('signOut');\n    });\n});","Order":50,"HighLevelApiVersion":"1.12"}],"Campaigns":[{"Name":"T377_380_383_Master","Type":"Master","CSName":"","HighLevelApiVersion":"1.12","PagePrefix":"","Scripts":[],"Elements":[],"Recommendations":[]},{"Name":"T304_HHonors_Enroll_SignIn2","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.12","PagePrefix":"","Scripts":[{"Name":"T304_signJoinSource","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * [Sign In Source]\n * This script's purpose is to [check generation rules, track actions, e.t.c].\n *\n * @author [name] irina.kashyntseva@maxymiser.com\n * @date 8.08.2016\n */\n\n/*events.domReady(function(){\n\n\tvar step = site.scope.step;\n\tvar cookieSignInSource = 'mm_t304_signInSource';\n\tvar cookiesJoinSource = 'mm_t304_joinSource';\n\tvar signInSource, joinSource = 'Other', $header_join, $joinBtn, $joinLink;\n\n\tif(step ==='ConfirmLogin' || document.title.match(/Sign\\sIn/i) !== null) {\n\t    signInSource = CommonCriteria.getSignInSource();\n\t    if(signInSource === 'SR' || signInSource === 'RoomRate' || signInSource === 'GuestInfo' || signInSource === 'Payment') {\n\t        signInSource = 'Funnel log in'\n\t    }\n\t    else if (signInSource === 'Brand_Hmp') {\n\t        signInSource = 'Hmpg log in'\n\t    }\n\t    else {\n\t        signInSource = 'Other';\n\t    }\n\t    cookies.set(cookieSignInSource, signInSource, 0, true);\n\t}\n\n\t// when(function() {\n\t//     return (typeof jQuery === 'function');\n\t// })\n\t//     .done(function(){\n\t        $header_join = jQuery('#explore_benefits');\n\t        $joinBtn = jQuery('#mm_t304_btn.join');\n\t        $joinLink = jQuery('#mm_t304_join_link');\n\n\t        //$joinBtn.add($joinLink).add($header_join).click(function(){debugger;\n                jQuery(document).delegate(\"#explore_benefits, #mm_t304_btn.join, #mm_t304_join_link\", 'click', function(){\n  \t\t\t\tvar url = window.location.pathname;\n\t            var HomePage = url.indexOf('en/index.html') !== -1;\n\t            var Funnel = url.indexOf('results.htm') !== -1 || url.indexOf('reservation/book.htm') !== -1;\n\n\t            if(HomePage) {\n\t                joinSource = 'Hmpg Join';\n\t            }\n\t            else if(Funnel) {\n\t                joinSource = 'Funnel Join';\n\t            }\n\t            cookies.set(cookiesJoinSource, joinSource, true);\n  })\n\t            \n\t        //});\n\t    //});\n    var travelAgent;\n    if(jQuery('#specialCodeTravelAgent').length){\n        travelAgent = jQuery('#specialCodeTravelAgent');\n    }\n    else if(jQuery('#rateFilterTravelAgent').length) {\n        travelAgent = jQuery('#rateFilterTravelAgent');\n    }\n    travelAgent.bind('click', handleTAgentCheckboxClick);\n\n\n\n\n\n\tfunction handleTAgentCheckboxClick(event) {\n\t    if (event.target.checked) {\n\t        cookies.set('mm_t304_TAgentChecked', 'true');\n\t    }\n\t}\n\n});*/","Order":1,"HighLevelApiVersion":"1.12"},{"Name":"T304_act_SignIn","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * [script name]\n * This script's purpose is to [check generation rules, track actions, e.t.c].\n *\n * @author [name] irina.kashyntseva@maxymiser.com\n * @date 8.08.2016\n */\nvar loggedIn = site.scope.commonCriteria.loggedin === 'yes';\nvar cookieSignInSource = 'mm_t304_signInSource';\nvar signInSource = cookies.get(cookieSignInSource);\nvar cookieActionFired = 'mm_t304_action';\nvar taNotChecked = cookies.get('mm_t304_TAgentChecked') !== 'true';\nvar notHhoronsPage = window.location.pathname.indexOf('joinHHonorsConfirmation') === -1;\n\n\nif(loggedIn && (typeof signInSource !== 'undefined') && notHhoronsPage && taNotChecked && cookies.get(cookieActionFired) !== 'SignIn') {\n    actions.postpone('T304_Success_SignIn', 1, signInSource);\n    cookies.set(cookieActionFired, 'SignIn', 0, true);\n}\n\nelse if(cookies.get(cookieActionFired) === 'SignIn' && !loggedIn){\n    cookies.remove(cookieActionFired);\n}\n\n\n\n\n","Order":1,"HighLevelApiVersion":"1.12"}],"Elements":[],"Recommendations":[]},{"Name":"T386_OHW_Quick_Book","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.12","PagePrefix":"","Scripts":[{"Name":"T386_QB_BookConf_Act","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * T386_QB_BookConf_Act.js\n * This script's purpose is to track T386_QB_BookConfRate\n * @author Irina Kashyntseva (email: irina.kashyntseva@maxymiser.com)\n * @date 03.08.2018\n */\n\nevents.on('confirmation', function (data) {\n    var rate = data && data.rate;\n    var currencyActAttr = data.currency;\n    var conversionTable = {\n        'JPY': 0.00900,\n        'KRW': 0.00089,\n        'AUD': 0.73000,\n        'INR': 0.01400,\n        'SGD': 0.73000,\n        'HKD': 0.13000,\n        'COP': 0.00034,\n    };\n    var coefficient = conversionTable[currencyActAttr] || 1;\n    var amount = data && (data.amount * coefficient).toFixed(0);\n\n    actions.send('T386_QB_BookConfRate', amount, rate);\n});","Order":1,"HighLevelApiVersion":"1.12"},{"Name":"T386_QB_Campaign","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * T386_QB_Campaign.js\n * This script's purpose is to generate campaign.\n *\n * @author Irina Kashyntseva (email: irina.kashyntseva@maxymiser.com)\n * @date 3.08.2018\n */\n\nvar isGenerated;\n\nfunction generate() {\n    renderer.getContent()\n        .then(renderer.runVariantJs);\n}\n\nfunction runCampaign() {\n    isGenerated = Object.keys(campaign.getElements()).length;\n\n    if (!isGenerated) {\n        CommonCriteria.updatePCsDef()\n            .then(generate);\n    } else {\n        renderer.runVariantJs();\n    }\n}\n\nfunction generationLogic(data) {\n    var dfd = Deferred();\n    var isQuickBook = data && data.previousStep === 'rooms';\n\n    if (isQuickBook) {\n        dfd.resolve();\n    } else {\n        dfd.reject();\n    }\n\n    return dfd.promise();\n}\n\nevents.on('payment', function (data) {\n    generationLogic(data)\n        .then(runCampaign);\n});","Order":10,"HighLevelApiVersion":"1.12"}],"Elements":[],"Recommendations":[]},{"Name":"T386_OHW_Rates","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.12","PagePrefix":"","Scripts":[{"Name":"T386_R_BookConf_Act","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * T386_R_BookConf_Act.js\n * This script's purpose is to track T386_R_BookConfRate\n * @author Irina Kashyntseva (email: irina.kashyntseva@maxymiser.com)\n * @date 03.08.2018\n */\n\nevents.on('confirmation', function (data) {\n    var rate = data && data.rate;\n    var currencyActAttr = data.currency;\n    var conversionTable = {\n        'JPY': 0.00900,\n        'KRW': 0.00089,\n        'AUD': 0.73000,\n        'INR': 0.01400,\n        'SGD': 0.73000,\n        'HKD': 0.13000,\n        'COP': 0.00034,\n    };\n    var coefficient = conversionTable[currencyActAttr] || 1;\n    var amount = data && (data.amount * coefficient).toFixed(0);\n\n    actions.send('T386_R_BookConfRate', amount, rate);\n});","Order":1,"HighLevelApiVersion":"1.12"},{"Name":"T386_R_Campaign","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * T386_R_Campaign.js\n * This script's purpose is to generate campaign.\n *\n * @author Irina Kashyntseva (email: irina.kashyntseva@maxymiser.com)\n * @date 3.08.2018\n */\nvar isGenerated;\n\nfunction generate() {\n    renderer.getContent()\n        .then(renderer.runVariantJs);\n}\n\nfunction runCampaign() {\n    isGenerated = Object.keys(campaign.getElements()).length;\n\n    if (!isGenerated) {\n        CommonCriteria.updatePCsDef()\n            .then(generate);\n    } else {\n        renderer.runVariantJs();\n    }\n}\n\nevents.on('rates', runCampaign);","Order":10,"HighLevelApiVersion":"1.12"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"nycvwcgus05","Expiration":365},{"Name":"pd","IsGlobal":false,"Value":"-2125460676|AQAAAApVAwCyqhc+hREA7wAD","Expiration":365}],"SiteInfo":[{"Url":"hilton.com","ID":6}],"SystemData":[{"Version":"1.0","RequestId":1,"ResponseId":1}],"GenInfo":{"T377_380_383_Master":{"element1":"t383_sr_ql_image"}},"ServerAttributes":{"BK_StayType":""},"Iteration":"jlQImcvlcAdzxryifB1igES3bmc","Packages":["mmpackage-1.12.js"]});