1 2 3<!DOCTYPE html> 4<html lang="ru"> 5
6<script type="text/javascript" data-skip-moving="true">(function(w, d) {var v = w.frameCacheVars = {'CACHE_MODE':'HTMLCACHE','storageBlocks':[],'dynamicBlocks':[],'AUTO_UPDATE':true,'AUTO_UPDATE_TTL':'120','version':'2'};var inv = false;if (v.AUTO_UPDATE === false){if (v.AUTO_UPDATE_TTL && v.AUTO_UPDATE_TTL > 0){var lm = Date.parse(d.lastModified);if (!isNaN(lm)){var td = new Date().getTime();if ((lm + v.AUTO_UPDATE_TTL * 1000) >= td){w.frameRequestStart = false;w.preventAutoUpdate = true;return;}inv = true;}}else{w.frameRequestStart = false;w.preventAutoUpdate = true;return;}}var r = w.XMLHttpRequest ? new XMLHttpRequest() : (w.ActiveXObject ? new w.ActiveXObject("Microsoft.XMLHTTP") : null);if (!r) { return; }w.frameRequestStart = true;var m = v.CACHE_MODE; var l = w.location; var x = new Date().getTime();var q = "?bxrand=" + x + (l.search.length > 0 ? "&" + l.search.substring(1) : "");var u = l.protocol + "//" + l.host + l.pathname + q;r.open("GET", u, true);r.setRequestHeader("BX-ACTION-TYPE", "get_dynamic");r.setRequestHeader("X-Bitrix-Composite", "get_dynamic");r.setRequestHeader("BX-CACHE-MODE", m);r.setRequestHeader("BX-CACHE-BLOCKS", v.dynamicBlocks ? JSON.stringify(v.dynamicBlocks) : "");if (inv){r.setRequestHeader("BX-INVALIDATE-CACHE", "Y");}try { r.setRequestHeader("BX-REF", d.referrer || "");} catch(e) {}if (m === "APPCACHE"){r.setRequestHeader("BX-APPCACHE-PARAMS", JSON.stringify(v.PARAMS));r.setRequestHeader("BX-APPCACHE-URL", v.PAGE_URL ? v.PAGE_URL : "");}r.onreadystatechange = function() {if (r.readyState != 4) { return; }var a = r.getResponseHeader("BX-RAND");var b = w.BX && w.BX.frameCache ? w.BX.frameCache : false;if (a != x || !((r.status >= 200 && r.status < 300) || r.status === 304 || r.status === 1223 || r.status === 0)){var f = {error:true, reason:a!=x?"bad_rand":"bad_status", url:u, xhr:r, status:r.status};if (w.BX && w.BX.ready && b){BX.ready(function() {setTimeout(function(){BX.onCustomEvent("onFrameDataRequestFail", [f]);}, 0);});}w.frameRequestFail = f;return;}if (b){b.onFrameDataReceived(r.responseText);if (!w.frameUpdateInvoked){b.update(false);}w.frameUpdateInvoked = true;}else{w.frameDataString = r.responseText;}};r.send();var p = w.performance;if (p && p.addEventListener && p.getEntries && p.setResourceTimingBufferSize){var e = 'resourcetimingbufferfull';var h = function() {if (w.BX && w.BX.frameCache && w.BX.frameCache.frameDataInserted){p.removeEventListener(e, h);}else {p.setResourceTimingBufferSize(p.getEntries().length + 50);}};p.addEventListener(e, h);}})(window, document);</script>
vendor: 1 bytes, line 6
6
7<script type="text/javascript" data-skip-moving="true">(function(w, d, n) {var cl = "bx-core";var ht = d.documentElement;var htc = ht ? ht.className : undefined;if (htc === undefined || htc.indexOf(cl) !== -1){return;}var ua = n.userAgent;if (/(iPad;)|(iPhone;)/i.test(ua)){cl += " bx-ios";}else if (/Windows/i.test(ua)){cl += ' bx-win';}else if (/Macintosh/i.test(ua)){cl += " bx-mac";}else if (/Linux/i.test(ua) && !/Android/i.test(ua)){cl += " bx-linux";}else if (/Android/i.test(ua)){cl += " bx-android";}cl += (/(ipad|iphone|android|mobile|touch)/i.test(ua) ? " bx-touch" : " bx-no-touch");cl += w.devicePixelRatio && w.devicePixelRatio >= 2? " bx-retina": " bx-no-retina";var ieVersion = -1;if (/AppleWebKit/.test(ua)){cl += " bx-chrome";}else if (/Opera/.test(ua)){cl += " bx-opera";}else if (/Firefox/.test(ua)){cl += " bx-firefox";}ht.className = htc ? htc + " " + cl : cl;})(window, document, navigator);</script>
7 8 9 10
11<script type="text/javascript" data-skip-moving="true">function hceLoadFont(a,b,c,d){function e(){if(!window.FontFace)return!1;var a=new FontFace("t",'url("data:application/font-woff2,") format("woff2")',{}),b=a.load();try{b.then(null,function(){})}catch(c){}return"loading"===a.status}var f=navigator.userAgent,g=!window.addEventListener||f.match(/(Android (2|3|4.0|4.1|4.2|4.3))|(Opera (Mini|Mobi))/)&&!f.match(/Chrome/);if(!g){var h={};try{h=localStorage||{}}catch(i){}var j="x-font-"+a,k=j+"url",l=j+"css",m=h[k],n=h[l],o=document.createElement("style");if(o.rel="stylesheet",document.head.appendChild(o),!n||m!==b&&m!==c){var p=c&&e()?c:b,q=new XMLHttpRequest;q.open("GET",p),q.onload=function(){q.status>=200&&q.status<400&&(h[k]=p,h[l]=q.responseText,d||(o.textContent=q.responseText))},q.send()}else o.textContent=n}}</script>
vendor: 1 bytes, line 11
11
12<script type="text/javascript" data-skip-moving="true">hceLoadFont('Opinion Pro', '/local/templates/main/static/fonts/opinion_pro--woff2.min.css')</script>
12 13<meta charset="utf-8" /> 14<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 15<meta name="viewport" content="width=device-width" /> 16<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" /> 17<link rel="shortcut icon" type="image/x-icon" href="/local/templates/main/static/img/favicon.ico" /> 18<meta name="yandex-verification" content="cf602fe4f1021f32" />
19<script type="text/javascript" data-skip-moving="true"> 20 var globurl_main_clear = 'lavicon.ru', 21 glob_lang = 'ru', 22 glob_static_cache_version = '1.2.8', 23 glob_gaId = '', 24 glob_ymId = ''; 25</script>
25 26 27<link rel="stylesheet" type="text/css" href="/local/templates/main/static/app-styles.css?v=1.0.16" data-skip-moving="true"> 28 29<style> 30 </style> 31 32<title> 33 ÐÑониÑование</title> 34 35<body class="hce-loading bg-loading "> 36 37
37<script type="text/javascript" data-skip-moving="true"> 38; 39(function(window, document) { 40 'use strict'; 41 42 var inline_icons = '/local/templates/main/static/img/app-sprite-icons.svg', 43 colored_icons = '/local/templates/main/static/img/app-sprite-colored-icons.svg', 44 revision = glob_static_cache_version; 45 46 if (!document.createElementNS || !document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect) 47 return true; 48 49 var isLocalStorage = 'localStorage' in window && window['localStorage'] !== null, 50 request, 51 request_colored, 52 inlineIconsData, 53 coloredIconsData, 54 insertLineIT = function() { 55 document.body.insertAdjacentHTML('afterbegin', inlineIconsData); 56 }, 57 insertLine = function() { 58 if (document.body) insertLineIT(); 59 else document.addEventListener('DOMContentLoaded', insertLineIT); 60 }, 61 insertColoredIT = function() { 62 document.body.insertAdjacentHTML('afterbegin', coloredIconsData); 63 }, 64 insertColored = function() { 65 if (document.body) insertColoredIT(); 66 else document.addEventListener('DOMContentLoaded', insertColoredIT); 67 }; 68 69 if (isLocalStorage && localStorage.getItem('iconsSVGrev') == revision) { 70 inlineIconsData = localStorage.getItem('inlineIconsSVGdata'); 71 coloredIconsData = localStorage.getItem('coloredIconsSVGdata'); 72 if (inlineIconsData && coloredIconsData) // 73 { 74 insertLine(); 75 insertColored(); 76 return true; 77 } 78 } 79 try { 80 request = new XMLHttpRequest(); 81 request.open('GET', inline_icons + '?v=' + glob_static_cache_version, true); 82 83 request.onload = function() { 84 if (request.status >= 200 && request.status < 400) { 85 86 inlineIconsData = request.responseText; 87 88 insertLine(); 89 if (isLocalStorage) { 90 localStorage.setItem('inlineIconsSVGdata', inlineIconsData); 91 localStorage.setItem('iconsSVGrev', revision); 92 } 93 } 94 } 95 request.send(); 96 97 98 request_colored = new XMLHttpRequest(); 99 request_colored.open('GET', colored_icons + '?v=' + glob_static_cache_version, true); 100 101 request_colored.onload = function() { 102 if (request_colored.status >= 200 && request_colored.status < 400) { 103 104 coloredIconsData = request_colored.responseText; 105 106 insertColored(); 107 if (isLocalStorage) { 108 localStorage.setItem('coloredIconsSVGdata', coloredIconsData); 109 localStorage.setItem('iconsSVGrev', revision); 110 } 111 } 112 } 113 request_colored.send(); 114 } catch (e) {} 115 116}(window, document)); 117</script>
117 118 119<svg aria-hidden="true" preserveAspectRatio="none" focusable="false" style="width:0;height:0;position:absolute;"> 120 <defs> 121 <linearGradient id="svg_green_gradient"> 122 <stop offset="0%" stop-color="#048726"></stop> 123 <stop offset="100%" stop-color="#0cb037"></stop> 124 </linearGradient> 125 </defs> 126</svg> 127 128<header class="header"> 129 <a href="/" class="header__logo" uk-scrollspy="cls:hce-fade-left-xs; delay:800"> 130 <svg class="header__logo-icon icon"> 131 <use xlink:href="#logo__vertical"></use> 132 </svg> 133 <svg class="header__logo-icon icon header_logo_xs"> 134 <use xlink:href="#logo__short--extra"></use> 135 </svg> 136 </a> 137 <div class="header__nav"> 138 <a href="https://en.lavicon.ru/booking/" class="header__nav-item header__locale"> 139 <span class="header__locale-label">English version</span> 140 <span class="header__locale-label--xs">EN</span> 141 </a> 142 </div> 143 144 <div class="header__mobile-menu"> 145 <div class="header__mobile-menu-target"> 146 <span class="header__mobile-menu-line"></span> 147 <span class="header__mobile-menu-line"></span> 148 </div> 149 </div> 150</header> 151 152 <section class="site-header-content"> 153 </section> 154 <div class="site-main-content" id="main-content"> 155<section class="header-block"> 156 <div class="header-block__images header_image uk-background-cover" uk-parallax="y: 0,100" style-off="background-image: url(/upload/resize_cache/webp/uf/21c/600_500_2/2vktrhjzuimjb5wh6qso2xphrluhr838.webp)" data-src="/upload/resize_cache/webp/uf/21c/600_500_2/2vktrhjzuimjb5wh6qso2xphrluhr838.webp" data-srcset="/upload/resize_cache/webp/uf/21c/600_500_2/2vktrhjzuimjb5wh6qso2xphrluhr838.webp 768w, /upload/resize_cache/webp/uf/21c/1480_900_2/2vktrhjzuimjb5wh6qso2xphrluhr838.webp 1200w, /upload/resize_cache/webp/uf/21c/1650_1000_2/2vktrhjzuimjb5wh6qso2xphrluhr838.webp" uk-img> 157 </div> 158 <div class="header-title" uk-scrollspy="cls:hce-fade-in; delay:300"> 159 <div class="section-container" uk-parallax="y: 0, -50; opacity: 1,0;"> 160 <div class="header-title__wrapper" uk-scrollspy="cls:hce-fade-bottom-xxs; target: > *; delay:300"> 161 <h1 class="header-title__text">ÐÑониÑование</h1> 162 </div> 163 </div> 164 </div> 165 </section> 166 167<section class="property-navigation-wrapper" uk-sticky="media: 992" uk-scrollspy="cls:hce-fade-in;"> 168 <div class="property-navigation section-container" style="padding: 0"> 169 <a class="property-navigation__logo" href="/" title="" uk-scrollspy="cls:hce-fade-left-xs; delay:200"> 170 <svg class="icon"> 171 <use xlink:href="#logo__short--extra"></use> 172 </svg> 173 </a> 174 <nav class="property-navigation__menu"> 175 176<ul class="property-navigation__menu-list"> 177 <li class="property-navigation__menu-item"> 178 <a itemprop="url" class="property-navigation__menu-link" title="LAVICON HOTEL COLLECTION" href="/"> 179 <span itemprop="name">LAVICON HOTEL COLLECTION</span> 180 </a> 181 </li> 182 183 <li class="property-navigation__menu-item"> 184 <a itemprop="url" class="property-navigation__menu-link" title="ÐÐЦÐÐ" href="/specials/"> 185 <span itemprop="name">ÐÐЦÐÐ</span> 186 </a> 187 </li> 188 189 <li class="property-navigation__menu-item"> 190 <a itemprop="url" class="property-navigation__menu-link is-active" title="ÐÐ ÐÐÐÐ ÐÐÐÐÐÐ" href="/booking/"> 191 <span itemprop="name">ÐÐ ÐÐÐÐ ÐÐÐÐÐÐ</span> 192 </a> 193 </li> 194 195 <li class="property-navigation__menu-item"> 196 <a itemprop="url" class="property-navigation__menu-link" title="ÐÑогÑамма лоÑлÑноÑÑи" href="/loyalty_program/"> 197 <span itemprop="name">ÐÑогÑамма лоÑлÑноÑÑи</span> 198 </a> 199 </li> 200 201 <li class="property-navigation__menu-item"> 202 <a itemprop="url" class="property-navigation__menu-link" title="ÐÐÐÐСТÐ" href="/news/">
203 <span itemprop="name">ÐÐÐÐСТÐ</span> 204 </a> 205 </li> 206 207 <li class="property-navigation__menu-item"> 208 <a itemprop="url" class="property-navigation__menu-link" title="ÐÐÐТÐÐТЫ" href="/contacts/"> 209 <span itemprop="name">ÐÐÐТÐÐТЫ</span> 210 </a> 211 </li> 212 213 </ul> 214 </nav> 215 <div class="search-form-wrapper"> 216 <div class="search-form"> 217 <div class="search-form__item form_button "> 218 <a class="property-navigation__booking-button" href="https://lavicon.management" target="_blank">УпÑавлÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ</a> 219 </div> 220 </div> 221 </div> 222 223 </div> 224</section> 225 226<link rel="stylesheet" type="text/css" href="/local/templates/main/static/travelline-style.css" data-skip-moving="true"> 227<section class="section-wrapper section_padding section-container section-wrapper-container"> 228 <div> 229 <div class="btn-holder"></div> 230 <select id="tl-hotel-select" style="display: none;"></select> 231 </div> 232 <div id="tl-booking-form"> </div> 233 <style> 234 .btn-holder { 235 display: flex; 236 flex-wrap: wrap; 237 justify-content: center; 238 } 239 240 </style> 241 </div> 242 243
243<script type="text/javascript" data-skip-moving="true"> 244 var banner = document.querySelector('.banner-9494'); 245 var URLSearchParams = URLSearchParams || function() { 246 "use strict"; 247 248 function URLSearchParams(query) { 249 var index, key, value, pairs, i, length, dict = Object.create(null); 250 this[secret] = dict; 251 if (!query) return; 252 if (typeof query === "string") { 253 if (query.charAt(0) === "?") { 254 query = query.slice(1) 255 } 256 for (pairs = query.split("&"), i = 0, length = pairs.length; i < length; i++) { 257 value = pairs[i]; 258 index = value.indexOf("="); 259 if (-1 < index) { 260 appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1))) 261 } else if (value.length) { 262 appendTo(dict, decode(value), "") 263 } 264 } 265 } else { 266 if (isArray(query)) { 267 for (i = 0, length = query.length; i < length; i++) { 268 value = query[i]; 269 appendTo(dict, value[0], value[1]) 270 } 271 } else if (query.forEach) { 272 query.forEach(addEach, dict) 273 } else { 274 for (key in query) { 275 appendTo(dict, key, query[key]) 276 } 277 } 278 } 279 } 280 var isArray = Array.isArray, 281 URLSearchParamsProto = URLSearchParams.prototype, 282 find = /[!'\(\)~]|%20|%00/g, 283 plus = /\+/g, 284 replace = { 285 "!": "%21", 286 "'": "%27", 287 "(": "%28", 288 ")": "%29", 289 "~": "%7E", 290 "%20": "+", 291 "%00": "\0" 292 }, 293 replacer = function(match) { 294 return replace[match] 295 }, 296 secret = "__URLSearchParams__:" + Math.random(); 297 298 function addEach(value, key) { 299 appendTo(this, key, value) 300 } 301 302 function appendTo(dict, name, value) { 303 var res = isArray(value) ? value.join(",") : value; 304 if (name in dict) dict[name].push(res); 305 else dict[name] = [res] 306 } 307 308 function decode(str) { 309 return decodeURIComponent(str.replace(plus, " ")) 310 } 311 312 function encode(str) { 313 return encodeURIComponent(str).replace(find, replacer) 314 } 315 URLSearchParamsProto.append = function append(name, value) { 316 appendTo(this[secret], name, value) 317 }; 318 URLSearchParamsProto["delete"] = function del(name) { 319 delete this[secret][name] 320 }; 321 URLSearchParamsProto.get = function get(name) { 322 var dict = this[secret]; 323 return name in dict ? dict[name][0] : null 324 }; 325 URLSearchParamsProto.getAll = function getAll(name) { 326 var dict = this[secret]; 327 return name in dict ? dict[name].slice(0) : [] 328 }; 329 URLSearchParamsProto.has = function has(name) { 330 return name in this[secret] 331 }; 332 URLSearchParamsProto.set = function set(name, value) { 333 this[secret][name] = ["" + value] 334 }; 335 URLSearchParamsProto.forEach = function forEach(callback, thisArg) { 336 var dict = this[secret]; 337 Object.getOwnPropertyNames(dict).forEach(function(name) { 338 dict[name].forEach(function(value) { 339 callback.call(thisArg, value, name, this) 340 }, this) 341 }, this) 342 }; 343 URLSearchParamsProto.toJSON = function toJSON() { 344 return {} 345 }; 346 URLSearchParamsProto.toString = function toString() { 347 var dict = this[secret], 348 query = [], 349 i, key, name, value; 350 for (key in dict) { 351 name = encode(key); 352 for (i = 0, value = dict[key]; i < value.length; i++) { 353 query.push(name + "=" + encode(value[i])) 354 } 355 } 356 return query.join("&") 357 }; 358 var dP = Object.defineProperty, 359 gOPD = Object.getOwnPropertyDescriptor, 360 createSearchParamsPollute = function(search) { 361 function append(name, value) { 362 URLSearchParamsProto.append.call(this, name, value); 363 name = this.toString(); 364 search.set.call(this._usp, name ? "?" + name : "") 365 } 366 367 function del(name) { 368 URLSearchParamsProto["delete"].call(this, name); 369 name = this.toString(); 370 search.set.call(this._usp, name ? "?" + name : "") 371 } 372 373 function set(name, value) { 374 URLSearchParamsProto.set.call(this, name, value); 375 name = this.toString(); 376 search.set.call(this._usp, name ? "?" + name : "") 377 } 378 return function(sp, value) { 379 sp.append = append; 380 sp["delete"] = del; 381 sp.set = set; 382 return dP(sp, "_usp", { 383 configurable: true, 384 writable: true, 385 value: value 386 }) 387 } 388 }, 389 createSearchParamsCreate = function(polluteSearchParams) { 390 return function(obj, sp) { 391 dP(obj, "_searchParams", { 392 configurable: true, 393 writable: true, 394 value: polluteSearchParams(sp, obj) 395 }); 396 return sp 397 } 398 }, 399 updateSearchParams = function(sp) { 400 var append = sp.append; 401 sp.append = URLSearchParamsProto.append; 402 URLSearchParams.call(sp, sp._usp.search.slice(1)); 403 sp.append = append 404 }, 405 verifySearchParams = function(obj, Class) { 406 if (!(obj instanceof Class)) throw new TypeError("'searchParams' accessed on an object that " + "does not implement interface " + Class.name) 407 }, 408 upgradeClass = function(Class) { 409 var ClassProto = Class.prototype, 410 searchParams = gOPD(ClassProto, "searchParams"), 411 href = gOPD(ClassProto, "href"), 412 search = gOPD(ClassProto, "search"), 413 createSearchParams; 414 if (!searchParams && search && search.set) { 415 createSearchParams = createSearchParamsCreate(createSearchParamsPollute(search)); 416 Object.defineProperties(ClassProto, { 417 href: { 418 get: function() { 419 return href.get.call(this) 420 }, 421 set: function(value) { 422 var sp = this._searchParams; 423 href.set.call(this, value); 424 if (sp) updateSearchParams(sp) 425 } 426 }, 427 search: { 428 get: function() { 429 return search.get.call(this) 430 }, 431 set: function(value) { 432 var sp = this._searchParams; 433 search.set.call(this, value); 434 if (sp) updateSearchParams(sp) 435 } 436 }, 437 searchParams: { 438 get: function() { 439 verifySearchParams(this, Class); 440 return this._searchParams || createSearchParams(this, new URLSearchParams(this.search.slice(1))) 441 }, 442 set: function(sp) { 443 verifySearchParams(this, Class); 444 createSearchParams(this, sp) 445 } 446 } 447 }) 448 } 449 }; 450 upgradeClass(HTMLAnchorElement); 451 if (/^function|object$/.test(typeof URL) && URL.prototype) upgradeClass(URL); 452 return URLSearchParams 453 }(); 454 (function(URLSearchParamsProto) { 455 var iterable = function() { 456 try { 457 return !!Symbol.iterator 458 } catch (error) { 459 return false 460 } 461 }();
462 if (!("forEach" in URLSearchParamsProto)) { 463 URLSearchParamsProto.forEach = function forEach(callback, thisArg) { 464 var names = Object.create(null); 465 this.toString().replace(/=[\s\S]*?(?:&|$)/g, "=").split("=").forEach(function(name) { 466 if (!name.length || name in names) return; 467 (names[name] = this.getAll(name)).forEach(function(value) { 468 callback.call(thisArg, value, name, this) 469 }, this) 470 }, this) 471 } 472 } 473 if (!("keys" in URLSearchParamsProto)) { 474 URLSearchParamsProto.keys = function keys() { 475 var items = []; 476 this.forEach(function(value, name) { 477 items.push(name) 478 }); 479 var iterator = { 480 next: function() { 481 var value = items.shift(); 482 return { 483 done: value === undefined, 484 value: value 485 } 486 } 487 }; 488 if (iterable) { 489 iterator[Symbol.iterator] = function() { 490 return iterator 491 } 492 } 493 return iterator 494 } 495 } 496 if (!("values" in URLSearchParamsProto)) { 497 URLSearchParamsProto.values = function values() { 498 var items = []; 499 this.forEach(function(value) { 500 items.push(value) 501 }); 502 var iterator = { 503 next: function() { 504 var value = items.shift(); 505 return { 506 done: value === undefined, 507 value: value 508 } 509 } 510 }; 511 if (iterable) { 512 iterator[Symbol.iterator] = function() { 513 return iterator 514 } 515 } 516 return iterator 517 } 518 } 519 if (!("entries" in URLSearchParamsProto)) { 520 URLSearchParamsProto.entries = function entries() { 521 var items = []; 522 this.forEach(function(value, name) { 523 items.push([name, value]) 524 }); 525 var iterator = { 526 next: function() { 527 var value = items.shift(); 528 return { 529 done: value === undefined, 530 value: value 531 } 532 } 533 }; 534 if (iterable) { 535 iterator[Symbol.iterator] = function() { 536 return iterator 537 } 538 } 539 return iterator 540 } 541 } 542 if (iterable && !(Symbol.iterator in URLSearchParamsProto)) { 543 URLSearchParamsProto[Symbol.iterator] = URLSearchParamsProto.entries 544 } 545 if (!("sort" in URLSearchParamsProto)) { 546 URLSearchParamsProto.sort = function sort() { 547 var entries = this.entries(), 548 entry = entries.next(), 549 done = entry.done, 550 keys = [], 551 values = Object.create(null), 552 i, key, value; 553 while (!done) { 554 value = entry.value; 555 key = value[0]; 556 keys.push(key); 557 if (!(key in values)) { 558 values[key] = [] 559 } 560 values[key].push(value[1]); 561 entry = entries.next(); 562 done = entry.done 563 } 564 keys.sort(); 565 for (i = 0; i < keys.length; i++) { 566 this["delete"](keys[i]) 567 } 568 for (i = 0; i < keys.length; i++) { 569 key = keys[i]; 570 this.append(key, values[key].shift()) 571 } 572 } 573 } 574 })(URLSearchParams.prototype); 575 var SetUrlParam = function(key, value) { 576 var search = new URLSearchParams(location.search); 577 search.set(key, value); 578 // if(key == 'hotel_id'){ 579 // if(value == '9494'){ 580 // banner.style.display = "block"; 581 // }else{ 582 // banner.style.display = "none"; 583 // } 584 // } 585 var path = location.pathname + "?" + search.toString(); 586 window.history.pushState(false, false, path); 587 } 588 var GetUrlParam = function(key) { 589 var search = new URLSearchParams(location.search); 590 return search.get(key); 591 } 592 var select = document.getElementById("tl-hotel-select"); 593 594 select.addEventListener('change', function() { 595 SetUrlParam('hotel_id', this.value); 596 }); 597 598 function fireEvent(element, event) { 599 if (document.createEventObject) { 600 var ieEvt = document.createEventObject(); 601 return element.fireEvent('on' + event, ieEvt); 602 } else { 603 var evt = document.createEvent("HTMLEvents"); 604 evt.initEvent(event, true, true); 605 return !element.dispatchEvent(evt); 606 } 607 } 608 609 function eraseClass() { 610 var btnsProvider = document.querySelectorAll('.btn-provider.active'); 611 for (var i = btnsProvider.length - 1; i >= 0; i--) { 612 btnsProvider[i].classList.remove('active'); 613 } 614 } 615 616 function changeSelect() { 617 eraseClass(); 618 this.classList.add('active'); 619 select.value = this.dataset.provider; 620 fireEvent(select, 'change'); 621 } 622 623// if (!GetUrlParam('hotel_id')) { 624// SetUrlParam('hotel_id', '38146'); 625// } 626 627 // if(GetUrlParam('hotel_id') == '9494'){ 628 // banner.style.display = "none"; 629 // } 630 631 select.addEventListener('DOMNodeInserted', function(event) { 632 var option = event.srcElement; 633 var value = option.value; 634 var text = option.innerText;
635 var holder = document.querySelector('.btn-holder'); 636 var btn = document.createElement('a'); 637 var provider = GetUrlParam('hotel_id'); 638 if (provider == option.value) { 639 btn.classList.add('active'); 640 } else if ((provider == null) && (option.value == '38146')) { 641 btn.classList.add('active'); 642 } 643 console.log('id', option.value); 644 btn.classList.add('btn-provider'); 645 btn.innerText = text; 646 btn.dataset.provider = value; 647 btn.addEventListener('click', changeSelect); 648 holder.appendChild(btn); 649 }); 650 651 function bookingStepChanged(data) { 652 653 switch (data.step) { 654 case 'search': 655 case 'preview': 656 case 'payment': 657 case 'complete': 658 break; 659 default: 660 return; 661 } 662 663 // ÐÑпÑавка ÑобÑÑÐ¸Ñ Ð² GA 664 // gtag('config', 'UA-123318426-1', { 665 // 'page_title': 'booking-page', 666 // 'page_path': '/' + data.step 667 // }); 668 669 // ÐÑпÑавка ÑобÑÑÐ¸Ñ Ð² Yandex 670 window.yaCounter49845070.hit('/' + data.step); 671 672 // ÐÑовеÑка ÑобÑÑÐ¸Ñ 673 console.log('TL ÑобÑÑие: ' + data.step); 674 }; 675 676 function bookingSuccess(data) { 677 678 var label = data.bookingNumber + ' - ' + data.price + ' ' + data.currency; 679 680 // ÐÑпÑавка ÑобÑÑÐ¸Ñ Ð² GA 681 // gtag('event', 'complete', { 682 // 'event_category': 'booking', 683 // 'event_label': label 684 // }); 685 686 // ÐÑпÑавка E-commerce в GA 687 // gtag('event', 'purchase', { 688 // "transaction_id": data.bookingNumber, 689 // "affiliation": data.providerName, 690 // "value": data.price, 691 // "currency": data.currency, 692 // "shipping": 0, 693 // "items": [{ 694 // "id": data.bookingNumber, 695 // "price": data.price 696 // }] 697 // }); 698 699 // ÐÑпÑавка ÑобÑÑÐ¸Ñ Ð² Yandex 700 window.yaCounter49845070.reachGoal('Bron_Travelline', { 701 'order_id': data.bookingNumber, 702 'order_price': data.price, 703 'currency': data.currency 704 }); 705 706 // ÐÑовеÑка ÑобÑÑÐ¸Ñ 707 console.log('TL ÑобÑÑие: booking success'); 708 }; 709 710 function noAvailableRooms(data) { 711 712 var label = data.now + ', ' + data.guests + ', ' + data.arrivalDate + ' - ' + data.departureDate; 713 // ÐÑпÑавка E-commerce в GA 714 // gtag('event', 'no-rooms', { 715 // 'event_category': 'booking', 716 // 'event_label': label 717 // }); 718 719 // ÐÑовеÑка ÑобÑÑÐ¸Ñ 720 console.log('TL ÑобÑÑие: no available rooms'); 721 722 }; 723 724 (function(w) { 725 var q = [ 726 ['setContext', 'TL-INT-lavicon-hotelcommerce', 'ru'], 727 ['embed', 'booking-form', { 728 container: 'tl-booking-form', 729 onBookingStepChanged: bookingStepChanged, 730 onBookingSuccess: bookingSuccess, 731 onNoAvailableRooms: noAvailableRooms 732 }] 733 ]; 734 var t = w.travelline = (w.travelline || {}), 735 ti = t.integration = (t.integration || {}); 736 ti.__cq = ti.__cq ? ti.__cq.concat(q) : q; 737 if (!ti.__loader) { 738 ti.__loader = true; 739 var d = w.document, 740 p = d.location.protocol, 741 s = d.createElement('script'); 742 s.type = 'text/javascript'; 743 s.async = true; 744 s.src = (p == 'https:' ? p : 'http:') + '//ibe.tlintegration.com/integration/loader.js'; 745 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 746 } 747 })(window); 748 </script>
748 749</section> 750 751 752 753 <footer class="footer"> 754 <div class="footer-top"> 755 <div class="footer-content section-container"> 756 <div class="footer-content__top"> 757 <div class="footer-content__top-block" style="flex: 1;"> 758 <div class="footer-properties"> 759 <div class="footer-properties__item"> 760 <a href="/fregat-hotel/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 761 LAVICON ÐТÐÐЬ ФРÐÐÐТ, ÐÐÐÐÐ 4* </a> 762 </div> 763 <div class="footer-properties__item"> 764 <a href="/sochi-hotel/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 765 LAVICON ÐÐÐРТ, СÐЧР4* </a> 766 </div> 767 <div class="footer-properties__item"> 768 <a href="/dom-gordona/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 769 LAVICON ÐÐÐ ÐÐÐ ÐÐÐÐ </a> 770 </div> 771 <div class="footer-properties__item"> 772 <a href="/adler-hotel/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 773 LAVICON ÐÐУÐÐÐЯ Ð ÐÐÐÐÐÐЦÐЯ 4* </a> 774 </div> 775 <div class="footer-properties__item"> 776 <a href="/dagomys-hotel/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 777 LAVICON ÐУТÐÐ ÐТÐÐЬ, ÐÐÐÐÐЫС 4* </a> 778 </div> 779 <div class="footer-properties__item"> 780 <a href="/nebug-hotel-3/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 781 LAVICON ÐÐÐРТ, ÐÐÐУР3* </a> 782 </div> 783 <div class="footer-properties__item"> 784 <a href="/agoy-park/" class="footer-nav__item-link" style="text-transform: uppercase; white-space: nowrap;"> 785 AGOYPARK by LAVICON </a> 786 </div> 787 </div> </div> 788 <div class="footer-content__top-block"> 789 <div class="footer-content__top-connect"> 790 <span class="footer-content__top-connect-text"> 791 </span> 792 </div> 793 <div > 794 <a class="footer-content__top-connect-link" href="https://t.me/lavicon_hotel" target="_blank"> 795 <svg class="footer-content__top-connect__icon icon"> 796 <use xlink:href="#socials__telegram"></use> 797 </svg> 798 </a> 799 <a class="footer-content__top-connect-link" href="https://vk.com/lavicon.hotel" target="_blank"> 800 <svg class="footer-content__top-connect__icon icon"> 801 <use xlink:href="#socials__vk"></use> 802 </svg> 803 </a> 804 805 </div> 806 </div> 807 </div> 808 </div> 809 </div> 810 <div class="footer-middle"> 811 <div class="section-container"> 812 <div class="footer__upper"> 813 <div class="footer__content"> 814 <div class="footer__navigation"> 815 <nav class="footer-nav"> 816 <ul class="footer-nav__list"> 817 818 <li class="footer-nav__item"> 819 <a title="" href="/" class="footer-nav__item-link"> 820 Lavicon Hotel Collection </a> 821 </li> 822 823 <li class="footer-nav__item"> 824 <a title="" href="https://lavicon.management/" class="footer-nav__item-link"> 825 УпÑавлÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ </a> 826 </li> 827 828 <li class="footer-nav__item"> 829 <a title="" href="/news/" class="footer-nav__item-link"> 830 ÐовоÑÑи и ÑобÑÑÐ¸Ñ </a> 831 </li> 832 833 <li class="footer-nav__item"> 834 <a title="" href="/booking/" class="footer-nav__item-link"> 835 ÐÑониÑование </a> 836 </li> 837 838 <li class="footer-nav__item"> 839 <a title="" href="/legal_information/" class="footer-nav__item-link"> 840 ÐÑÐ°Ð²Ð¾Ð²Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ </a> 841 </li> 842 843 <li class="footer-nav__item"> 844 <a title="" href="/loyalty_program/" class="footer-nav__item-link"> 845 ÐÑогÑамма лоÑлÑноÑÑи </a> 846 </li> 847 848 <li class="footer-nav__item"> 849 <a title="" href="/contacts/" class="footer-nav__item-link"> 850 ÐонÑакÑÑ </a> 851 </li> 852 </ul> 853 </nav> 854 <a href="/" class="footer__logo-link"> 855 <svg class="footer__logo icon"> 856 <use xlink:href="#logo_short--extra"></use> 857 </svg> 858 </a> 859 </div> 860 <div class="footer-content__bottom"> 861 <p class="footer-content__bottom-text">«Lavicon Hotel Collection» © 862 2026 </p> 863 <p class="footer-content__bottom-text"><a class="footer-content__bottom-link" href="https://hotelcommerce.ru" target="_blank"> 864 РазÑабоÑано Hotel commerce</a></p> 865 </div> 866 </div> 867 </div> 868 </div> 869 </div> 870</footer> 871 </div> 872 873
874<script src="/local/templates/main/static/app-scripts.js?v=1.1.5" async data-skip-moving="true"></script>
874 875 876 877 <a href="tel:+78612057272" class="pulse"> 878 <svg class="icon"> 879 <use xlink:href="#common__call"></use> 880 </svg> 881 </a>
vendor: 133 bytes, lines 881-884
881 882 883<script data-skip-moving="true" src="https://www.google.com/recaptcha/api.js?hl=ru" async defer data-skip-moving="true"></script> 884
885<!-- Yandex.Metrika counter --> 886<noscript> 887 <div><img src="https://mc.yandex.ru/watch/49845070" style="position:absolute; left:-9999px;" alt="" /></div> 888</noscript> 889<!-- /Yandex.Metrika counter --> 890 891<!-- Top.Mail.Ru counter -->
892<script data-skip-moving="true" type="text/javascript"> var _tmr = window._tmr || (window._tmr = []); _tmr.push({id: "3259792", type: "pageView", start: (new Date()).getTime(), pid: "USER_ID"}); (function (d, w, id) { if (d.getElementById(id)) return; var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id; ts.src = "https://top-fwz1.mail.ru/js/code.js"; var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);}; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "tmr-code"); </script>
892 <noscript><div><img src="https://top-fwz1.mail.ru/counter?id=3259792;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div></noscript> 893<!-- /Top.Mail.Ru counter --> 894
895<script data-skip-moving="true" type="text/javascript">!function(){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src='https://vk.com/js/api/openapi.js?169',t.onload=function(){VK.Retargeting.Init("VK-RTRG-1493075-i5SqY"),VK.Retargeting.Hit()},document.head.appendChild(t)}();</script>
895 896<noscript><img src="https://vk.com/rtrg?p=VK-RTRG-1493075-i5SqY" style="position:fixed; left:-999px;" alt=""/></noscript> 897 898 899 900<!-- Pixel Code for https://popup.bz/ -->
901<script data-skip-moving="true" src="https://popup.bz/pixel/myfxavwidwhyeqtvnp70qut9m010sjzi"></script>
901 902<!-- END Pixel Code --> 903 904<!-- Roistat Counter Start -->
905<script data-skip-moving="true" type="text/javascript"> 906 (function(w, d, s, h, id) { w.roistatProjectId = id; w.roistatHost = h; var p = d.location.protocol == "https:" ? "https://" : "http://"; var u = /^.roistat_visit=[^;]+(.)?$/.test(d.cookie) ? "/dist/module.js" : "/api/site/1.0/"+id+"/init?referrer="+encodeURIComponent(d.location.href); var js = d.createElement(s); js.charset="UTF-8"; js.async = 1; js.src = p+h+u; var js2 = d.getElementsByTagName(s)[0]; js2.parentNode.insertBefore(js, js2); })(window, document, 'script', 'cloud.roistat.com', 'ad0655cb11f4bc3dbd8cbd9c2e235b8b'); 907</script>
907 908<!-- Roistat Counter End --> 909 910<style> 911 .altumcode-wrapper, .altumcode-custom-html-content, .altumcode-image-content { 912 padding: 0!important; 913 } 914 .altumcode-custom-html-wrapper { 915 max-width: 100%!important; 916 max-height: 90%!important; 917 margin: auto!important; 918 } 919 920 .altumcode-custom-html-wrapper .altumcode-close { 921 margin: 0!important; 922 width: 2.5rem!important; 923 height: 2.5rem!important; 924 position: absolute!important; 925 right: 20px!important; 926 top: 20px!important; 927 background-color: white!important; 928 opacity: 1!important; 929 border: 1px solid!important; 930 } 931 932 .altumcode-site { 933 position: fixed!important; 934 left: -9999px; 935 } 936 937 .popup_wrapper { 938 width: 100%; max-width: 40rem; position: relative; display: flex; 939 } 940</style> 941 942
942<script src="https://smartcaptcha.cloud.yandex.ru/captcha.js" async defer></script>
942 943
944<script type="text/javascript">(function(window,document,n,project_ids){window.GudokData=n;if(typeof project_ids !== "object"){project_ids = [project_ids]};window[n] = {};window[n]["projects"]=project_ids;config_load(project_ids.join(','));function config_load(cId){var a=document.getElementsByTagName("script")[0],s=document.createElement("script"),i=function(){a.parentNode.insertBefore(s,a)},cMrs='';s.async=true;if(document.location.search&&document.location.search.indexOf('?gudok_check=')===0)cMrs+=document.location.search.replace('?','&');s.src="//mod.gudok.tel/script.js?sid="+cId+cMrs;if(window.opera == "[object Opera]"){document.addEventListener("DOMContentLoaded", i, false)}else{i()}}})(window, document, "gd", "njlkur4hoq");</script>
944 945
946<script type="text/javascript">
vendor: 431 bytes, lines 946-954
946 947 (function(m,e,t,r,i,k,a){ 948 m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; 949 m[i].l=1*new Date(); 950 for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} 951 k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a) 952 })(window, document,'script','https://mc.yandex.ru/metrika/tag.js', 'ym'); 953 954 ym(
95449845070
vendor: 158 bytes, line 954
954, 'init', {webvisor:true, clickmap:true, ecommerce:"dataLayer", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});
955</script>
955 956</body> 957 958</html> 959<!--9e8fe3150757693a7f789c548e149a42-->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.