1<!DOCTYPE html> 2<html lang="pl-PL" prefix="og: https://ogp.me/ns# fb: https://ogp.me/ns/fb#"> 3 4 5<head> 6
6<script type="text/javascript"> 7 if (window.self !== window.top || window.top.location.href !== window.location.href) { 8 window.top.location.href = window.location.href; 9 throw new Error('This page is not allowed to be displayed in a frame.'); 10 } 11 </script>
11 12 13 <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 14 <meta http-equiv="Content-Language" content="pl"> 15 <title>skionline.pl - Wyjazdy narciarskie</title> 16 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=no"> 17 <meta name="description" content=""> 18 <meta name="keywords" content="wyjazdy,wakacje,podroze,objazdy,city break,all inclusive"> 19 <meta name="frontend-endpoint-nonce" content="Kn_RgFrknsCw_Q0DaSoI3F_blWAQsaTFAF3n7-lWHvc.KrovJ4lUX8YI7Mv5oFxRdS6Xw0OC0ebk8L5t0VKxJtU"> 20 <meta name="theme-color" content="#193779"> 21 <meta property="og:locale" content="pl_PL"> 22 <meta property="og:type" content="website"> 23 <meta property="og:title" content="skionline.pl - Wyjazdy narciarskie"> 24 <meta property="og:description" content=""> 25 <meta property="og:url" content="https://skionline.pl/wyjazdy/"> 26 <link rel="canonical" href="https://skionline.pl/wyjazdy/"> 27 <meta property="og:site_name" content="Skionline"> 28 <link rel="stylesheet" href="/inne/wspolne/styl.css?1775650177" type="text/css"> 29 <link rel="stylesheet" type="text/css" href="styles/styl.css?1790677150"> 30 <link rel="stylesheet" type="text/css" href="styles/tokens/colors.css?1790075113"> 31 <link rel="stylesheet" type="text/css" href="styles/fonts/poppins.css?1790075113"> 32<link rel="stylesheet" type="text/css" href="styles/themes/skionline.css?1790075113"> 33<!-- Google Tag Manager SOL -->
34<script>
vendor: 327 bytes, lines 34-38
34(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 35new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 36j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 37'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 38})(window,document,'script','dataLayer','
38GTM-W3FRFNB5
vendor: 3 bytes, line 38
38');
38</script>
38 39<!-- End Google Tag Manager --> 40 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 41 <link rel="apple-touch-icon" href="/favicon_192x192.png" /> 42 <link rel="manifest" href="/manifest-skionline-pl.json" /> 43 <link rel="stylesheet" type="text/css" href="/inne/wspolne/styl-var-zima.css?1774620487" /> 44 <link rel="stylesheet" type="text/css" href="flatpickr/flatpickr.min.css"> 45
45<script src="flatpickr/flatpickr.js"></script>
45 46
46<script src="flatpickr/flatpickr_pl.js"></script>
46 47
47<script src="js/date_validation.js"></script>
47 48
48<script src="js/frontend_endpoint_nonce.js"></script>
48 49
49<script src="js/debounce.js"></script>
49 50
50<script src="js/shuffle.js"></script>
50 51
51<script src="/inne/js/skrypty_new.js?1776861838"></script>
51 52</head> 53<body><noscript><div class="noscript_banner">Ta strona wymaga JavaScript dla peÅni funkcjonalnoÅci. WÅÄ cz obsÅugÄ JavaScript w przeglÄ darce.</div></noscript> 54<!-- Google Tag Manager (noscript) SOL -->
vendor: 69 bytes, lines 54-55
54 55<noscript><iframe src='https://www.googletagmanager.com/ns.html?id=
55GTM-W3FRFNB5
vendor: 84 bytes, line 55
55' height='0' width='0' style='display:none;visibility:hidden'></iframe></noscript>
56<!-- End Google Tag Manager (noscript) --> 57 58 <div class='navi '> 59 <nav> 60 <div><a href='/'><img src='/images/logo-skionline-pl_712x132.png' /></a></div> 61 <div id='menu_rozwin'> 62 <a href='/ubezpieczenia/'>Ubezpieczenia</a> 63 <a href='/wyjazdy/'>Wyjazdy</a> 64 <a href='/stacje/'>Stacje</a> 65 <a href='/sprzet/'>SprzÄt</a> 66 <a href='/pogoda/'>Pogoda</a> 67 <a href='/forum/'>Forum</a> 68 <a href='/sport/'>Sport</a> 69 <a href='/galerie/'>Galerie</a> 70 </div> 71 <div id='menu_wyszukiwarka'> 72 <form action='/sprzet/' method='get'> 73 <input type='hidden' name='co' value='szukaj' /> 74 <input type='hidden' name='cx' value='partner-pub-6547620507112190:ehnafhhjcxp' /> 75 <input type='hidden' name='ie' value='utf-8' /> 76 <input type='text' name='q' placeholder='Szukaj' /> 77 </form> 78 </div> 79 <button onclick='navi_rozwin()'></button> 80 </nav> 81 </div> 82<div class='hero hero_under_menu'> 83 <section class='wyszukiwarka'> 84 <div class='wyszukiwarka_tytul'>Znajdź wyjazd dopasowany do terminu, budżetu i stylu podróży</div> 85 86<div class='wyszukiwarka_formularz '> 87 <form method="GET"> 88 <input type="hidden" name="p" value="oferty" /> 89 <input type="hidden" name="searchStateMode" value="replace" /> 90 <div class="wyszukiwarka_season_row"> 91 92<div class="segmented-control segmented-control--small search-season-tabs" role="radiogroup" aria-label="Sezon"> 93 <div class="segmented-control__options"> 94 <a 95 id="wyszukiwarka_season_Winter" 96 class="segmented-control__option segmented-control__option--active" 97 role="radio" 98 aria-checked="true" 99 aria-label="Wyjazdy zimowe" 100 aria-current="page" > 101 <img class="segmented-control__icon" src="images/iko-sniezynka.svg" alt="" aria-hidden="true" /> 102 <span class="segmented-control__label">Zima</span> 103 </a> 104 <a 105 id="wyszukiwarka_season_Summer" 106 class="segmented-control__option" 107 role="radio" 108 aria-checked="false" 109 aria-label="Wyjazdy letnie" 110 href="/wyjazdy-lato/" > 111 <img class="segmented-control__icon" src="images/iko-slonce.svg" alt="" aria-hidden="true" /> 112 <span class="segmented-control__label">Lato</span> 113 </a> 114 </div> 115</div> 116 </div> 117 <div class="wyszukiwarka_pola_wrapper"> 118 <ul class="wyszukiwarka_pola"> 119 <li> 120 <label class="wyszukiwarka_pole_label" for="wyszukiwarka_dokad">DokÄ d</label><br /> 121 <div class="form_field_wrapper"> 122 123<div class='dropdown_multiselect_wrapper js-dropdown-multiselect' data-filter-by-input='1' data-round-trip-destination-control='true'> 124 <input 125 type='text' 126 class='form_field dropdown_multiselect_trigger wyjazd dropdown_multiselect_trigger--input' 127 id="wyszukiwarka_dokad" aria-haspopup='listbox' 128 aria-expanded='false' 129 aria-label="DokÄ d" value='Dowolnie' 130 placeholder='Dowolnie' 131 autocomplete='off' 132 spellcheck='false' 133 /> 134 <i class='icon'></i> 135 <div class='dropdown_multiselect_popup hidden'> 136 <div class='dropdown_multiselect_top'> 137 <div class='dropdown_multiselect_top_item'> 138 139<label class='custom-checkbox'> 140 <div> 141 <input 142 type='checkbox' 143 value='1' name='roundTrip' id='wyszukiwarka_round_trip' /> 144 <span class='checkmark'></span> 145 </div> 146 <div class="label"> 147 Wycieczki objazdowe </div> 148</label> 149 </div> 150 </div> 151 <div class='dropdown_multiselect_list' role='listbox' aria-multiselectable='true'> 152 <div class='dropdown_multiselect_group'> 153 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 154 155<label class='custom-checkbox'> 156 <div> 157 <input 158 type='checkbox' 159 value='448:' name='destinations[]' data-country-id="448:" /> 160 <span class='checkmark'></span> 161 </div> 162 <div class="label"> 163 <span class="dropdown_multiselect_item--bold">Andora</span> </div> 164</label> 165 <button 166 type='button' 167 class='dropdown_multiselect_country_toggle button tertiary' 168 data-country-region-toggle='448:' 169 aria-expanded='false' 170 aria-label='Pokaż regiony' 171 ></button> 172 </div> 173 <div class='dropdown_multiselect_children hidden' data-country-region-panel='448:'> 174 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 175 176<label class='custom-checkbox'> 177 <div> 178 <input 179 type='checkbox' 180 value='448_10676' name='destinations[]' data-parent-country-id="448:" /> 181 <span class='checkmark'></span> 182 </div> 183 <div class="label"> 184 Grandvalira </div> 185</label> 186 </div> 187 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 188 189<label class='custom-checkbox'> 190 <div> 191 <input 192 type='checkbox' 193 value='448_4187' name='destinations[]' data-parent-country-id="448:" /> 194 <span class='checkmark'></span> 195 </div> 196 <div class="label"> 197 Vallnord </div> 198</label> 199 </div> 200 </div> 201 </div> 202 <div class='dropdown_multiselect_group'> 203 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 204 205<label class='custom-checkbox'> 206 <div> 207 <input 208 type='checkbox' 209 value='1:' name='destinations[]' data-country-id="1:" /> 210 <span class='checkmark'></span> 211 </div> 212 <div class="label"> 213 <span class="dropdown_multiselect_item--bold">Austria</span> </div> 214</label> 215 <button 216 type='button'
217 class='dropdown_multiselect_country_toggle button tertiary' 218 data-country-region-toggle='1:' 219 aria-expanded='false' 220 aria-label='Pokaż regiony' 221 ></button> 222 </div> 223 <div class='dropdown_multiselect_children hidden' data-country-region-panel='1:'> 224 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 225 226<label class='custom-checkbox'> 227 <div> 228 <input 229 type='checkbox' 230 value='1_2292' name='destinations[]' data-parent-country-id="1:" /> 231 <span class='checkmark'></span> 232 </div> 233 <div class="label"> 234 Górna Austria </div> 235</label> 236 </div> 237 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 238 239<label class='custom-checkbox'> 240 <div> 241 <input 242 type='checkbox' 243 value='1_950' name='destinations[]' data-parent-country-id="1:" /> 244 <span class='checkmark'></span> 245 </div> 246 <div class="label"> 247 Karyntia </div> 248</label> 249 </div> 250 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 251 252<label class='custom-checkbox'> 253 <div> 254 <input 255 type='checkbox' 256 value='1_2320' name='destinations[]' data-parent-country-id="1:" /> 257 <span class='checkmark'></span> 258 </div> 259 <div class="label"> 260 Styria </div> 261</label> 262 </div> 263 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 264 265<label class='custom-checkbox'> 266 <div> 267 <input 268 type='checkbox' 269 value='1_1208' name='destinations[]' data-parent-country-id="1:" /> 270 <span class='checkmark'></span> 271 </div> 272 <div class="label"> 273 Tyrol </div> 274</label> 275 </div> 276 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 277 278<label class='custom-checkbox'> 279 <div> 280 <input 281 type='checkbox' 282 value='1_4026' name='destinations[]' data-parent-country-id="1:" /> 283 <span class='checkmark'></span> 284 </div> 285 <div class="label"> 286 Ziemia Salzburska </div> 287</label> 288 </div> 289 </div> 290 </div> 291 <div class='dropdown_multiselect_group'> 292 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 293 294<label class='custom-checkbox'> 295 <div> 296 <input 297 type='checkbox' 298 value='9:' name='destinations[]' data-country-id="9:" /> 299 <span class='checkmark'></span> 300 </div> 301 <div class="label"> 302 <span class="dropdown_multiselect_item--bold">Czechy</span> </div> 303</label> 304 <button 305 type='button' 306 class='dropdown_multiselect_country_toggle button tertiary' 307 data-country-region-toggle='9:' 308 aria-expanded='false' 309 aria-label='Pokaż regiony' 310 ></button> 311 </div> 312 <div class='dropdown_multiselect_children hidden' data-country-region-panel='9:'> 313 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 314 315<label class='custom-checkbox'> 316 <div> 317 <input 318 type='checkbox' 319 value='9_3600' name='destinations[]' data-parent-country-id="9:" /> 320 <span class='checkmark'></span> 321 </div> 322 <div class="label"> 323 Czeskie Karkonosze </div> 324</label> 325 </div> 326 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 327 328<label class='custom-checkbox'> 329 <div> 330 <input 331 type='checkbox' 332 value='9_4164' name='destinations[]' data-parent-country-id="9:" /> 333 <span class='checkmark'></span> 334 </div> 335 <div class="label"> 336 Góry Izerskie </div> 337</label> 338 </div> 339 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 340 341<label class='custom-checkbox'> 342 <div> 343 <input 344 type='checkbox' 345 value='9_38395' name='destinations[]' data-parent-country-id="9:" /> 346 <span class='checkmark'></span> 347 </div> 348 <div class="label"> 349 Góry Orlickie </div> 350</label> 351 </div> 352 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 353 354<label class='custom-checkbox'> 355 <div> 356 <input 357 type='checkbox' 358 value='9_3989' name='destinations[]' data-parent-country-id="9:" /> 359 <span class='checkmark'></span> 360 </div> 361 <div class="label"> 362 Jeseniki </div> 363</label> 364 </div> 365 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 366 367<label class='custom-checkbox'> 368 <div> 369 <input 370 type='checkbox' 371 value='9_3000' name='destinations[]' data-parent-country-id="9:" /> 372 <span class='checkmark'></span> 373 </div> 374 <div class="label"> 375 Szumawy </div> 376</label> 377 </div> 378 </div> 379 </div> 380 <div class='dropdown_multiselect_group'> 381 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 382 383<label class='custom-checkbox'> 384 <div> 385 <input 386 type='checkbox' 387 value='2187:' name='destinations[]' data-country-id="2187:" /> 388 <span class='checkmark'></span> 389 </div> 390 <div class="label"> 391 <span class="dropdown_multiselect_item--bold">Finlandia</span> </div> 392</label> 393 <button 394 type='button'
395 class='dropdown_multiselect_country_toggle button tertiary' 396 data-country-region-toggle='2187:' 397 aria-expanded='false' 398 aria-label='Pokaż regiony' 399 ></button> 400 </div> 401 <div class='dropdown_multiselect_children hidden' data-country-region-panel='2187:'> 402 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 403 404<label class='custom-checkbox'> 405 <div> 406 <input 407 type='checkbox' 408 value='2187_4210' name='destinations[]' data-parent-country-id="2187:" /> 409 <span class='checkmark'></span> 410 </div> 411 <div class="label"> 412 Laponia </div> 413</label> 414 </div> 415 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 416 417<label class='custom-checkbox'> 418 <div> 419 <input 420 type='checkbox' 421 value='2187_39441' name='destinations[]' data-parent-country-id="2187:" /> 422 <span class='checkmark'></span> 423 </div> 424 <div class="label"> 425 Sawonia </div> 426</label> 427 </div> 428 </div> 429 </div> 430 <div class='dropdown_multiselect_group'> 431 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 432 433<label class='custom-checkbox'> 434 <div> 435 <input 436 type='checkbox' 437 value='13:' name='destinations[]' data-country-id="13:" /> 438 <span class='checkmark'></span> 439 </div> 440 <div class="label"> 441 <span class="dropdown_multiselect_item--bold">Francja</span> </div> 442</label> 443 <button 444 type='button' 445 class='dropdown_multiselect_country_toggle button tertiary' 446 data-country-region-toggle='13:' 447 aria-expanded='false' 448 aria-label='Pokaż regiony' 449 ></button> 450 </div> 451 <div class='dropdown_multiselect_children hidden' data-country-region-panel='13:'> 452 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 453 454<label class='custom-checkbox'> 455 <div> 456 <input 457 type='checkbox' 458 value='13_1447' name='destinations[]' data-parent-country-id="13:" /> 459 <span class='checkmark'></span> 460 </div> 461 <div class="label"> 462 Alpy Francuskie </div> 463</label> 464 </div> 465 </div> 466 </div> 467 <div class='dropdown_multiselect_group'> 468 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 469 470<label class='custom-checkbox'> 471 <div> 472 <input 473 type='checkbox' 474 value='15:' name='destinations[]' data-country-id="15:" /> 475 <span class='checkmark'></span> 476 </div> 477 <div class="label"> 478 <span class="dropdown_multiselect_item--bold">Hiszpania</span> </div> 479</label> 480 <button 481 type='button' 482 class='dropdown_multiselect_country_toggle button tertiary' 483 data-country-region-toggle='15:' 484 aria-expanded='false' 485 aria-label='Pokaż regiony' 486 ></button> 487 </div> 488 <div class='dropdown_multiselect_children hidden' data-country-region-panel='15:'> 489 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 490 491<label class='custom-checkbox'> 492 <div> 493 <input 494 type='checkbox' 495 value='15_13' name='destinations[]' data-parent-country-id="15:" /> 496 <span class='checkmark'></span> 497 </div> 498 <div class="label"> 499 Andaluzja </div> 500</label> 501 </div> 502 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 503 504<label class='custom-checkbox'> 505 <div> 506 <input 507 type='checkbox' 508 value='15_93' name='destinations[]' data-parent-country-id="15:" /> 509 <span class='checkmark'></span> 510 </div> 511 <div class="label"> 512 Lanzarote </div> 513</label> 514 </div> 515 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 516 517<label class='custom-checkbox'> 518 <div> 519 <input 520 type='checkbox' 521 value='15_39450' name='destinations[]' data-parent-country-id="15:" /> 522 <span class='checkmark'></span> 523 </div> 524 <div class="label"> 525 Pireneje AragoÅskie </div> 526</label> 527 </div> 528 </div> 529 </div> 530 <div class='dropdown_multiselect_group'> 531 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 532 533<label class='custom-checkbox'> 534 <div> 535 <input 536 type='checkbox' 537 value='58:' name='destinations[]' data-country-id="58:" /> 538 <span class='checkmark'></span> 539 </div> 540 <div class="label"> 541 <span class="dropdown_multiselect_item--bold">Niemcy</span> </div> 542</label> 543 <button 544 type='button'
545 class='dropdown_multiselect_country_toggle button tertiary' 546 data-country-region-toggle='58:' 547 aria-expanded='false' 548 aria-label='Pokaż regiony' 549 ></button> 550 </div> 551 <div class='dropdown_multiselect_children hidden' data-country-region-panel='58:'> 552 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 553 554<label class='custom-checkbox'> 555 <div> 556 <input 557 type='checkbox' 558 value='58_3720' name='destinations[]' data-parent-country-id="58:" /> 559 <span class='checkmark'></span> 560 </div> 561 <div class="label"> 562 Alpy Bawarskie </div> 563</label> 564 </div> 565 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 566 567<label class='custom-checkbox'> 568 <div> 569 <input 570 type='checkbox' 571 value='58_3577' name='destinations[]' data-parent-country-id="58:" /> 572 <span class='checkmark'></span> 573 </div> 574 <div class="label"> 575 Baden </div> 576</label> 577 </div> 578 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 579 580<label class='custom-checkbox'> 581 <div> 582 <input 583 type='checkbox' 584 value='58_3343' name='destinations[]' data-parent-country-id="58:" /> 585 <span class='checkmark'></span> 586 </div> 587 <div class="label"> 588 Bawaria </div> 589</label> 590 </div> 591 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 592 593<label class='custom-checkbox'> 594 <div> 595 <input 596 type='checkbox' 597 value='58_3293' name='destinations[]' data-parent-country-id="58:" /> 598 <span class='checkmark'></span> 599 </div> 600 <div class="label"> 601 Dolna Saksonia </div> 602</label> 603 </div> 604 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 605 606<label class='custom-checkbox'> 607 <div> 608 <input 609 type='checkbox' 610 value='58_38402' name='destinations[]' data-parent-country-id="58:" /> 611 <span class='checkmark'></span> 612 </div> 613 <div class="label"> 614 Hesja </div> 615</label> 616 </div> 617 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 618 619<label class='custom-checkbox'> 620 <div> 621 <input 622 type='checkbox' 623 value='58_3412' name='destinations[]' data-parent-country-id="58:" /> 624 <span class='checkmark'></span> 625 </div> 626 <div class="label"> 627 Saksonia </div> 628</label> 629 </div> 630 </div> 631 </div> 632 <div class='dropdown_multiselect_group'> 633 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 634 635<label class='custom-checkbox'> 636 <div> 637 <input 638 type='checkbox' 639 value='2391:' name='destinations[]' data-country-id="2391:" /> 640 <span class='checkmark'></span> 641 </div> 642 <div class="label"> 643 <span class="dropdown_multiselect_item--bold">Norwegia</span> </div> 644</label> 645 <button 646 type='button' 647 class='dropdown_multiselect_country_toggle button tertiary' 648 data-country-region-toggle='2391:' 649 aria-expanded='false' 650 aria-label='Pokaż regiony' 651 ></button> 652 </div> 653 <div class='dropdown_multiselect_children hidden' data-country-region-panel='2391:'> 654 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 655 656<label class='custom-checkbox'> 657 <div> 658 <input 659 type='checkbox' 660 value='2391_3484' name='destinations[]' data-parent-country-id="2391:" /> 661 <span class='checkmark'></span> 662 </div> 663 <div class="label"> 664 Oslo </div> 665</label> 666 </div> 667 </div> 668 </div> 669 <div class='dropdown_multiselect_group'> 670 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 671 672<label class='custom-checkbox'> 673 <div> 674 <input 675 type='checkbox' 676 value='59:' name='destinations[]' data-country-id="59:" /> 677 <span class='checkmark'></span> 678 </div> 679 <div class="label"> 680 <span class="dropdown_multiselect_item--bold">Polska</span> </div> 681</label> 682 <button 683 type='button' 684 class='dropdown_multiselect_country_toggle button tertiary' 685 data-country-region-toggle='59:' 686 aria-expanded='false' 687 aria-label='Pokaż regiony' 688 ></button> 689 </div> 690 <div class='dropdown_multiselect_children hidden' data-country-region-panel='59:'> 691 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 692 693<label class='custom-checkbox'> 694 <div> 695 <input 696 type='checkbox' 697 value='59_99046' name='destinations[]' data-parent-country-id="59:" /> 698 <span class='checkmark'></span> 699 </div> 700 <div class="label"> 701 Beskid Niski </div> 702</label> 703 </div> 704 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 705 706<label class='custom-checkbox'> 707 <div> 708 <input 709 type='checkbox' 710 value='59_2442' name='destinations[]' data-parent-country-id="59:" /> 711 <span class='checkmark'></span> 712 </div> 713 <div class="label"> 714 Beskidy Zachodnie </div> 715</label> 716 </div> 717 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 718 719<label class='custom-checkbox'> 720 <div> 721 <input 722 type='checkbox' 723 value='59_3785' name='destinations[]' data-parent-country-id="59:" /> 724 <span class='checkmark'></span> 725 </div> 726 <div class="label"> 727 Bieszczady </div> 728</label> 729 </div> 730 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 731 732<label class='custom-checkbox'> 733 <div> 734 <input 735 type='checkbox' 736 value='59_3652' name='destinations[]' data-parent-country-id="59:" /> 737 <span class='checkmark'></span> 738 </div> 739 <div class="label"> 740 Dolny ÅlÄ sk </div> 741</label> 742 </div> 743 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 744 745<label class='custom-checkbox'> 746 <div> 747 <input 748 type='checkbox' 749 value='59_2626' name='destinations[]' data-parent-country-id="59:" /> 750 <span class='checkmark'></span> 751 </div> 752 <div class="label"> 753 Jura Krakowska </div> 754</label> 755 </div> 756 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 757 758<label class='custom-checkbox'> 759 <div> 760 <input 761 type='checkbox' 762 value='59_1077' name='destinations[]' data-parent-country-id="59:" /> 763 <span class='checkmark'></span> 764 </div> 765 <div class="label"> 766 Karkonosze </div> 767</label> 768 </div> 769 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 770 771<label class='custom-checkbox'> 772 <div> 773 <input 774 type='checkbox' 775 value='59_38961' name='destinations[]' data-parent-country-id="59:" /> 776 <span class='checkmark'></span> 777 </div> 778 <div class="label"> 779 Opolszczyzna </div> 780</label> 781 </div> 782 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 783 784<label class='custom-checkbox'> 785 <div> 786 <input 787 type='checkbox' 788 value='59_2855' name='destinations[]' data-parent-country-id="59:" /> 789 <span class='checkmark'></span> 790 </div> 791 <div class="label"> 792 Pieniny </div> 793</label> 794 </div> 795 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 796 797<label class='custom-checkbox'> 798 <div> 799 <input 800 type='checkbox' 801 value='59_3781' name='destinations[]' data-parent-country-id="59:" /> 802 <span class='checkmark'></span> 803 </div> 804 <div class="label"> 805 Sudety </div> 806</label> 807 </div> 808 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 809 810<label class='custom-checkbox'> 811 <div> 812 <input 813 type='checkbox' 814 value='59_2695' name='destinations[]' data-parent-country-id="59:" /> 815 <span class='checkmark'></span> 816 </div> 817 <div class="label"> 818 Tatry I Podhale </div> 819</label> 820 </div> 821 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 822 823<label class='custom-checkbox'> 824 <div> 825 <input 826 type='checkbox' 827 value='59_0' name='destinations[]' data-parent-country-id="59:" /> 828 <span class='checkmark'></span> 829 </div> 830 <div class="label">
831 Wyżyna Lubelska </div> 832</label> 833 </div> 834 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 835 836<label class='custom-checkbox'> 837 <div> 838 <input 839 type='checkbox' 840 value='59_99061' name='destinations[]' data-parent-country-id="59:" /> 841 <span class='checkmark'></span> 842 </div> 843 <div class="label"> 844 Ziemia KÅodzka </div> 845</label> 846 </div> 847 </div> 848 </div> 849 <div class='dropdown_multiselect_group'> 850 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 851 852<label class='custom-checkbox'> 853 <div> 854 <input 855 type='checkbox' 856 value='62:' name='destinations[]' data-country-id="62:" /> 857 <span class='checkmark'></span> 858 </div> 859 <div class="label"> 860 <span class="dropdown_multiselect_item--bold">Szwajcaria</span> </div> 861</label> 862 <button 863 type='button' 864 class='dropdown_multiselect_country_toggle button tertiary' 865 data-country-region-toggle='62:' 866 aria-expanded='false' 867 aria-label='Pokaż regiony' 868 ></button> 869 </div> 870 <div class='dropdown_multiselect_children hidden' data-country-region-panel='62:'> 871 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 872 873<label class='custom-checkbox'> 874 <div> 875 <input 876 type='checkbox' 877 value='62_4183' name='destinations[]' data-parent-country-id="62:" /> 878 <span class='checkmark'></span> 879 </div> 880 <div class="label"> 881 BerneÅski Oberland </div> 882</label> 883 </div> 884 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 885 886<label class='custom-checkbox'> 887 <div> 888 <input 889 type='checkbox' 890 value='62_4185' name='destinations[]' data-parent-country-id="62:" /> 891 <span class='checkmark'></span> 892 </div> 893 <div class="label"> 894 Centralna Szwajcaria </div> 895</label> 896 </div> 897 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 898 899<label class='custom-checkbox'> 900 <div> 901 <input 902 type='checkbox' 903 value='62_1201' name='destinations[]' data-parent-country-id="62:" /> 904 <span class='checkmark'></span> 905 </div> 906 <div class="label"> 907 Gryzonia </div> 908</label> 909 </div> 910 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 911 912<label class='custom-checkbox'> 913 <div> 914 <input 915 type='checkbox' 916 value='62_1102' name='destinations[]' data-parent-country-id="62:" /> 917 <span class='checkmark'></span> 918 </div> 919 <div class="label"> 920 Wallis </div> 921</label> 922 </div> 923 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 924 925<label class='custom-checkbox'> 926 <div> 927 <input 928 type='checkbox' 929 value='62_5875' name='destinations[]' data-parent-country-id="62:" /> 930 <span class='checkmark'></span> 931 </div> 932 <div class="label"> 933 Wschodnia Szwajcaria </div> 934</label> 935 </div> 936 </div> 937 </div> 938 <div class='dropdown_multiselect_group'> 939 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 940 941<label class='custom-checkbox'> 942 <div> 943 <input 944 type='checkbox' 945 value='61:' name='destinations[]' data-country-id="61:" /> 946 <span class='checkmark'></span> 947 </div> 948 <div class="label"> 949 <span class="dropdown_multiselect_item--bold">SÅowacja</span> </div> 950</label> 951 <button 952 type='button' 953 class='dropdown_multiselect_country_toggle button tertiary' 954 data-country-region-toggle='61:' 955 aria-expanded='false' 956 aria-label='Pokaż regiony' 957 ></button> 958 </div> 959 <div class='dropdown_multiselect_children hidden' data-country-region-panel='61:'> 960 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 961 962<label class='custom-checkbox'> 963 <div> 964 <input 965 type='checkbox' 966 value='61_4028' name='destinations[]' data-parent-country-id="61:" /> 967 <span class='checkmark'></span> 968 </div> 969 <div class="label"> 970 MaÅa Fatra </div> 971</label> 972 </div> 973 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 974 975<label class='custom-checkbox'> 976 <div> 977 <input 978 type='checkbox' 979 value='61_1084' name='destinations[]' data-parent-country-id="61:" /> 980 <span class='checkmark'></span> 981 </div> 982 <div class="label"> 983 Niskie Tatry </div> 984</label> 985 </div> 986 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 987 988<label class='custom-checkbox'> 989 <div> 990 <input 991 type='checkbox' 992 value='61_4228' name='destinations[]' data-parent-country-id="61:" /> 993 <span class='checkmark'></span> 994 </div> 995 <div class="label"> 996 Orawa </div> 997</label> 998 </div> 999 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1000 1001<label class='custom-checkbox'> 1002 <div> 1003 <input 1004 type='checkbox' 1005 value='61_37852' name='destinations[]' data-parent-country-id="61:" /> 1006 <span class='checkmark'></span> 1007 </div> 1008 <div class="label"> 1009 Preszów </div> 1010</label> 1011 </div> 1012 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1013 1014<label class='custom-checkbox'> 1015 <div> 1016 <input 1017 type='checkbox' 1018 value='61_3334' name='destinations[]' data-parent-country-id="61:" /> 1019 <span class='checkmark'></span> 1020 </div> 1021 <div class="label"> 1022 Wielka Fatra </div> 1023</label> 1024 </div> 1025 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1026 1027<label class='custom-checkbox'> 1028 <div> 1029 <input 1030 type='checkbox' 1031 value='61_1104' name='destinations[]' data-parent-country-id="61:" /> 1032 <span class='checkmark'></span> 1033 </div> 1034 <div class="label"> 1035 Wysokie Tatry </div> 1036</label> 1037 </div> 1038 </div> 1039 </div> 1040 <div class='dropdown_multiselect_group'> 1041 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 1042 1043<label class='custom-checkbox'> 1044 <div> 1045 <input 1046 type='checkbox' 1047 value='263:' name='destinations[]' data-country-id="263:" /> 1048 <span class='checkmark'></span> 1049 </div> 1050 <div class="label"> 1051 <span class="dropdown_multiselect_item--bold">SÅowenia</span> </div> 1052</label> 1053 <button 1054 type='button'
1055 class='dropdown_multiselect_country_toggle button tertiary' 1056 data-country-region-toggle='263:' 1057 aria-expanded='false' 1058 aria-label='Pokaż regiony' 1059 ></button> 1060 </div> 1061 <div class='dropdown_multiselect_children hidden' data-country-region-panel='263:'> 1062 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1063 1064<label class='custom-checkbox'> 1065 <div> 1066 <input 1067 type='checkbox' 1068 value='263_3492' name='destinations[]' data-parent-country-id="263:" /> 1069 <span class='checkmark'></span> 1070 </div> 1071 <div class="label"> 1072 Alpy SÅoweÅskie </div> 1073</label> 1074 </div> 1075 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1076 1077<label class='custom-checkbox'> 1078 <div> 1079 <input 1080 type='checkbox' 1081 value='263_38815' name='destinations[]' data-parent-country-id="263:" /> 1082 <span class='checkmark'></span> 1083 </div> 1084 <div class="label"> 1085 Pohorje - Savinjska </div> 1086</label> 1087 </div> 1088 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1089 1090<label class='custom-checkbox'> 1091 <div> 1092 <input 1093 type='checkbox' 1094 value='263_38814' name='destinations[]' data-parent-country-id="263:" /> 1095 <span class='checkmark'></span> 1096 </div> 1097 <div class="label"> 1098 SÅowenia Wschodnia </div> 1099</label> 1100 </div> 1101 </div> 1102 </div> 1103 <div class='dropdown_multiselect_group'> 1104 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 1105 1106<label class='custom-checkbox'> 1107 <div> 1108 <input 1109 type='checkbox' 1110 value='39:' name='destinations[]' data-country-id="39:" /> 1111 <span class='checkmark'></span> 1112 </div> 1113 <div class="label"> 1114 <span class="dropdown_multiselect_item--bold">Turcja</span> </div> 1115</label> 1116 <button 1117 type='button' 1118 class='dropdown_multiselect_country_toggle button tertiary' 1119 data-country-region-toggle='39:' 1120 aria-expanded='false' 1121 aria-label='Pokaż regiony' 1122 ></button> 1123 </div> 1124 <div class='dropdown_multiselect_children hidden' data-country-region-panel='39:'> 1125 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1126 1127<label class='custom-checkbox'> 1128 <div> 1129 <input 1130 type='checkbox' 1131 value='39_38917' name='destinations[]' data-parent-country-id="39:" /> 1132 <span class='checkmark'></span> 1133 </div> 1134 <div class="label"> 1135 Anatolia Centralna </div> 1136</label> 1137 </div> 1138 </div> 1139 </div> 1140 <div class='dropdown_multiselect_group'> 1141 <div class='dropdown_multiselect_item dropdown_multiselect_item--country'> 1142 1143<label class='custom-checkbox'> 1144 <div> 1145 <input 1146 type='checkbox' 1147 value='44:' name='destinations[]' data-country-id="44:" /> 1148 <span class='checkmark'></span> 1149 </div> 1150 <div class="label"> 1151 <span class="dropdown_multiselect_item--bold">WÅochy</span> </div> 1152</label> 1153 <button 1154 type='button' 1155 class='dropdown_multiselect_country_toggle button tertiary' 1156 data-country-region-toggle='44:' 1157 aria-expanded='false' 1158 aria-label='Pokaż regiony' 1159 ></button> 1160 </div> 1161 <div class='dropdown_multiselect_children hidden' data-country-region-panel='44:'> 1162 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1163 1164<label class='custom-checkbox'> 1165 <div> 1166 <input 1167 type='checkbox' 1168 value='44_2697' name='destinations[]' data-parent-country-id="44:" /> 1169 <span class='checkmark'></span> 1170 </div> 1171 <div class="label"> 1172 Dolina Aosty </div> 1173</label> 1174 </div> 1175 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1176 1177<label class='custom-checkbox'> 1178 <div> 1179 <input 1180 type='checkbox' 1181 value='44_1274' name='destinations[]' data-parent-country-id="44:" /> 1182 <span class='checkmark'></span> 1183 </div> 1184 <div class="label"> 1185 Jezioro Garda </div> 1186</label> 1187 </div> 1188 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1189 1190<label class='custom-checkbox'> 1191 <div> 1192 <input 1193 type='checkbox' 1194 value='44_1219' name='destinations[]' data-parent-country-id="44:" /> 1195 <span class='checkmark'></span> 1196 </div> 1197 <div class="label"> 1198 Lombardia </div> 1199</label> 1200 </div> 1201 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1202 1203<label class='custom-checkbox'> 1204 <div> 1205 <input 1206 type='checkbox' 1207 value='44_1220' name='destinations[]' data-parent-country-id="44:" /> 1208 <span class='checkmark'></span> 1209 </div> 1210 <div class="label">
1211 Piemont </div> 1212</label> 1213 </div> 1214 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1215 1216<label class='custom-checkbox'> 1217 <div> 1218 <input 1219 type='checkbox' 1220 value='44_4586' name='destinations[]' data-parent-country-id="44:" /> 1221 <span class='checkmark'></span> 1222 </div> 1223 <div class="label"> 1224 PoÅudniowy Tyrol </div> 1225</label> 1226 </div> 1227 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1228 1229<label class='custom-checkbox'> 1230 <div> 1231 <input 1232 type='checkbox' 1233 value='44_1223' name='destinations[]' data-parent-country-id="44:" /> 1234 <span class='checkmark'></span> 1235 </div> 1236 <div class="label"> 1237 Riwiera Adriatycka </div> 1238</label> 1239 </div> 1240 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1241 1242<label class='custom-checkbox'> 1243 <div> 1244 <input 1245 type='checkbox' 1246 value='44_1227' name='destinations[]' data-parent-country-id="44:" /> 1247 <span class='checkmark'></span> 1248 </div> 1249 <div class="label"> 1250 Trentino </div> 1251</label> 1252 </div> 1253 <div class='dropdown_multiselect_item dropdown_multiselect_item--indent'> 1254 1255<label class='custom-checkbox'> 1256 <div> 1257 <input 1258 type='checkbox' 1259 value='44_1260' name='destinations[]' data-parent-country-id="44:" /> 1260 <span class='checkmark'></span> 1261 </div> 1262 <div class="label"> 1263 Veneto </div> 1264</label> 1265 </div> 1266 </div> 1267 </div> 1268 </div> 1269 </div> 1270</div> 1271
1272<script> 1273 (function dropdownMultiselectShared() { 1274 if (window.__dropdownMultiselectLoaded) return; 1275 window.__dropdownMultiselectLoaded = true; 1276 1277 function initOne(wrapper) { 1278 if (!(wrapper instanceof HTMLElement)) return; 1279 if (wrapper.dataset.dropdownMultiselectInit === '1') return; 1280 wrapper.dataset.dropdownMultiselectInit = '1'; 1281 1282 const trigger = wrapper.querySelector('.dropdown_multiselect_trigger'); 1283 const popup = wrapper.querySelector('.dropdown_multiselect_popup'); 1284 const isFilterByInput = wrapper.dataset.filterByInput === '1'; 1285 const valueEl = isFilterByInput ? null : wrapper.querySelector('.dropdown_multiselect_value'); 1286 if (!(popup instanceof HTMLElement)) { 1287 return; 1288 } 1289 if (isFilterByInput) { 1290 if (!(trigger instanceof HTMLInputElement)) return; 1291 } else if (!(trigger instanceof HTMLButtonElement) || !(valueEl instanceof HTMLElement)) { 1292 return; 1293 } 1294 1295 const placeholderSource = isFilterByInput && trigger instanceof HTMLInputElement 1296 ? (trigger.getAttribute('placeholder') || trigger.value || 'Dowolnie') 1297 : (valueEl instanceof HTMLElement ? (valueEl.textContent || 'Dowolnie') : 'Dowolnie'); 1298 const placeholder = String(placeholderSource).trim() || 'Dowolnie'; 1299 const listItems = Array.from(wrapper.querySelectorAll('.dropdown_multiselect_item')).filter( 1300 (item) => item instanceof HTMLElement 1301 ); 1302 const countryRowsById = new Map(); 1303 const regionRowsByParentId = new Map(); 1304 const orphanRows = []; 1305 const regionPanelsByCountryId = new Map(); 1306 const controlsRoundTripDestinations = wrapper.dataset.roundTripDestinationControl === 'true'; 1307 const form = wrapper.closest('form'); 1308 const roundTripInput = controlsRoundTripDestinations && form instanceof HTMLFormElement 1309 ? form.querySelector('input[name="roundTrip"]') 1310 : null; 1311 const isRoundTripActive = () => roundTripInput instanceof HTMLInputElement && roundTripInput.checked; 1312 1313 listItems.forEach((item) => { 1314 const input = item.querySelector('input[type="checkbox"]'); 1315 const text = String(item.textContent || '').trim().toLocaleLowerCase(); 1316 if (!(input instanceof HTMLInputElement)) { 1317 orphanRows.push({ row: item, text }); 1318 return; 1319 } 1320 1321 const countryId = String(input.dataset.countryId || '').trim(); 1322 const parentCountryId = String(input.dataset.parentCountryId || '').trim(); 1323 const pseudoCountry = String(input.dataset.destinationPseudoCountry || '').trim(); 1324 1325 if (countryId !== '') { 1326 countryRowsById.set(countryId, { row: item, text, input, pseudoCountry, toggle: null, panel: null, expanded: true }); 1327 return; 1328 } 1329 1330 if (parentCountryId !== '') { 1331 const regions = regionRowsByParentId.get(parentCountryId) || []; 1332 regions.push({ row: item, text }); 1333 regionRowsByParentId.set(parentCountryId, regions); 1334 return; 1335 } 1336 1337 orphanRows.push({ row: item, text }); 1338 }); 1339 1340 Array.from(wrapper.querySelectorAll('[data-country-region-panel]')).forEach((panel) => { 1341 if (!(panel instanceof HTMLElement)) return; 1342 const countryId = String(panel.dataset.countryRegionPanel || '').trim(); 1343 if (countryId === '') return; 1344 regionPanelsByCountryId.set(countryId, panel); 1345 }); 1346 1347 Array.from(wrapper.querySelectorAll('[data-country-region-toggle]')).forEach((toggle) => { 1348 if (!(toggle instanceof HTMLButtonElement)) return; 1349 const countryId = String(toggle.dataset.countryRegionToggle || '').trim(); 1350 if (countryId === '' || !countryRowsById.has(countryId)) return; 1351 const country = countryRowsById.get(countryId); 1352 const expanded = toggle.getAttribute('aria-expanded') === 'true'; 1353 countryRowsById.set(countryId, { 1354 ...country, 1355 toggle, 1356 panel: regionPanelsByCountryId.get(countryId) || null, 1357 expanded, 1358 }); 1359 }); 1360 1361 const setCountryRegionsExpanded = (countryId, expanded) => { 1362 const country = countryRowsById.get(countryId); 1363 if (!country || !(country.toggle instanceof HTMLButtonElement) || !(country.panel instanceof HTMLElement)) return; 1364 country.expanded = expanded; 1365 country.toggle.setAttribute('aria-expanded', expanded ? 'true' : 'false'); 1366 country.toggle.setAttribute('aria-label', expanded ? 'Ukryj regi
1366ony' : 'Pokaż regiony'); 1367 country.panel.classList.toggle('hidden', !expanded); 1368 }; 1369 1370 countryRowsById.forEach((country, countryId) => { 1371 if (country.toggle instanceof HTMLButtonElement) { 1372 setCountryRegionsExpanded(countryId, country.expanded); 1373 country.toggle.addEventListener('click', (event) => { 1374 event.preventDefault(); 1375 event.stopPropagation(); 1376 setCountryRegionsExpanded(countryId, !country.expanded); 1377 }); 1378 } 1379 }); 1380 1381 const setPseudoCountryDisabled = (pseudoCountry, disabled) => { 1382 countryRowsById.forEach((country) => { 1383 if (country.pseudoCountry !== pseudoCountry || !(country.input instanceof HTMLInputElement)) return; 1384 country.input.disabled = disabled; 1385 if (disabled) { 1386 country.input.checked = false; 1387 country.input.indeterminate = false; 1388 } 1389 const checkbox = country.row.querySelector('.custom-checkbox'); 1390 if (checkbox instanceof HTMLElement) { 1391 checkbox.classList.toggle('disabled', disabled); 1392 } 1393 }); 1394 }; 1395 1396 const getCheckedLabels = () => { 1397 const inputs = Array.from(wrapper.querySelectorAll('input[type="checkbox"]')); 1398 return inputs 1399 .filter((input) => input instanceof HTMLInputElement && input.checked) 1400 .filter((input) => !input.disabled) 1401 .map((input) => { 1402 const label = input.closest('.custom-checkbox'); 1403 const text = label?.querySelector('div:last-child')?.textContent ?? ''; 1404 return text.trim(); 1405 }) 1406 .filter((text) => text !== ''); 1407 }; 1408 1409 const getSummary = () => { 1410 const labels = getCheckedLabels(); 1411 return labels.length > 0 ? labels.join(', ') : placeholder; 1412 }; 1413 1414 const setRegionDisabled = (row, disabled) => { 1415 const input = row.querySelector('input[type="checkbox"]'); 1416 if (input instanceof HTMLInputElement) { 1417 input.disabled = disabled; 1418 } 1419 const checkbox = row.querySelector('.custom-checkbox'); 1420 if (checkbox instanceof HTMLElement) { 1421 checkbox.classList.toggle('disabled', disabled); 1422 } 1423 }; 1424 1425 const syncRoundTripDestinationMode = () => { 1426 if (!controlsRoundTripDestinations) return; 1427 const active = isRoundTripActive(); 1428 wrapper.classList.toggle('round-trip-active', active); 1429 countryRowsById.forEach((country, countryId) => { 1430 if (!(country.toggle instanceof HTMLButtonElement) || !(country.panel instanceof HTMLElement)) return; 1431 if (active) { 1432 setCountryRegionsExpanded(countryId, false); 1433 } 1434 country.toggle.hidden = active; 1435 country.panel.classList.toggle('hidden', active || !country.expanded); 1436 }); 1437 setPseudoCountryDisabled('cruises', active); 1438 regionRowsByParentId.forEach((regions) => { 1439 regions.forEach((region) => { 1440 region.row.style.display = active ? 'none' : ''; 1441 setRegionDisabled(region.row, active); 1442 }); 1443 }); 1444 syncTrigger(); 1445 }; 1446 1447 const resetListVisibility = () => { 1448 const roundTripActive = controlsRoundTripDestinations && isRoundTripActive(); 1449 listItems.forEach((item) => { 1450 item.style.display = ''; 1451 }); 1452 if (!roundTripActive) { 1453 countryRowsById.forEach((country, countryId) => { 1454 if (country.toggle instanceof HTMLButtonElement) { 1455 setCountryRegionsExpanded(countryId, country.expanded); 1456 } 1457 }); 1458 } 1459 if (roundTripActive) { 1460 regionPanelsByCountryId.forEach((panel) => { 1461 panel.classList.add('hidden'); 1462 }); 1463 regionRowsByParentId.forEach((regions) => { 1464 regions.forEach((region) => { 1465 region.row.style.display = 'none'; 1466 }); 1467 }); 1468 } 1469 }; 1470 1471 const applyInputFilter = (rawSearch) => { 1472 if (!isFilterByInput) return; 1473 const search = String(rawSearch || '').trim().toLocaleLowerCase(); 1474 const roundTripActive = controlsRoundTripDestinations && isRoundTripActive(); 1475 if (search === '') { 1476 resetListVisibility(); 1477 return; 1478 } 1479 1480 const processedParents = new Set(); 1481 1482 countryRowsById.forEach((country, countryId) => { 1483 const regions = regionRowsByParentId.get(countryId) || []; 1484 const countryMatches = country.text.includes(search); 1485 const matchingDescendantExists = !roundTripActive && regions.some((region) => region.text.includes(search)); 1486 1487 country.row.style.display = countryMatches || matchingDescendantExists ? '' : 'none'; 1488 if (country.panel instanceof HTMLElement) { 1489 country.panel.classList.toggle('hidden', roundTripActive); 1490 } 1491 1492 regions.forEach((region) => { 1493 region.row.style.display = !roundTripActive && region.text.includes(search) ? '' : 'none'; 1494 }); 1495 processedParents.add(countryId); 1496 }); 1497
1498 regionRowsByParentId.forEach((regions, parentCountryId) => { 1499 if (processedParents.has(parentCountryId)) { 1500 return; 1501 } 1502 1503 regions.forEach((region) => { 1504 region.row.style.display = !roundTripActive && region.text.includes(search) ? '' : 'none'; 1505 }); 1506 }); 1507 1508 orphanRows.forEach((rowData) => { 1509 rowData.row.style.display = rowData.text.includes(search) ? '' : 'none'; 1510 }); 1511 }; 1512 1513 const syncTrigger = () => { 1514 const summary = getSummary(); 1515 if (isFilterByInput && trigger instanceof HTMLInputElement) { 1516 trigger.value = summary; 1517 return; 1518 } 1519 if (valueEl instanceof HTMLElement) { 1520 valueEl.textContent = summary; 1521 } 1522 }; 1523 1524 const closePopup = () => { 1525 resetListVisibility(); 1526 if (!popup.classList.contains('hidden')) { 1527 popup.classList.add('hidden'); 1528 popup.classList.remove('open'); 1529 trigger.setAttribute('aria-expanded', 'false'); 1530 } 1531 syncTrigger(); 1532 }; 1533 1534 const openPopup = () => { 1535 if (!popup.classList.contains('hidden')) return; 1536 popup.classList.remove('hidden'); 1537 popup.classList.add('open'); 1538 trigger.setAttribute('aria-expanded', 'true'); 1539 }; 1540 1541 if (isFilterByInput && trigger instanceof HTMLInputElement) { 1542 const startInputFiltering = () => { 1543 trigger.value = ''; 1544 resetListVisibility(); 1545 openPopup(); 1546 }; 1547 1548 trigger.addEventListener('focus', () => { 1549 if (!popup.classList.contains('hidden')) return; 1550 startInputFiltering(); 1551 }); 1552 1553 trigger.addEventListener('click', () => { 1554 if (!popup.classList.contains('hidden')) return; 1555 startInputFiltering(); 1556 }); 1557 1558 trigger.addEventListener('input', () => { 1559 openPopup(); 1560 applyInputFilter(trigger.value); 1561 }); 1562 1563 trigger.addEventListener('keydown', (event) => { 1564 if (event.key === 'Enter') { 1565 event.preventDefault(); 1566 return; 1567 } 1568 1569 if (event.key === 'ArrowDown' && popup.classList.contains('hidden')) { 1570 startInputFiltering(); 1571 } 1572 }); 1573 } else if (trigger instanceof HTMLButtonElement) { 1574 trigger.addEventListener('click', () => { 1575 popup.classList.contains('hidden') ? openPopup() : closePopup(); 1576 }); 1577 } 1578 1579 wrapper.addEventListener('change', (event) => { 1580 const target = event.target; 1581 if (!(target instanceof HTMLInputElement)) return; 1582 if (target.type !== 'checkbox') return; 1583 if (!isFilterByInput || popup.classList.contains('hidden')) { 1584 syncTrigger(); 1585 } 1586 }); 1587 if (roundTripInput instanceof HTMLInputElement) { 1588 roundTripInput.addEventListener('change', syncRoundTripDestinationMode); 1589 } 1590 1591 document.addEventListener('click', (event) => { 1592 if (popup.classList.contains('hidden')) return; 1593 const target = event.target; 1594 if (target instanceof Node && !wrapper.contains(target)) { 1595 closePopup(); 1596 } 1597 }); 1598 1599 document.addEventListener('keydown', (event) => { 1600 if (event.key !== 'Escape') return; 1601 closePopup(); 1602 }); 1603 1604 syncRoundTripDestinationMode(); 1605 syncTrigger(); 1606 } 1607 1608 function bindCountryRegionLogic(rootElement) { 1609 if (!(rootElement instanceof HTMLElement)) return; 1610 1611 const updateParentState = (countryId) => { 1612 const countryInput = rootElement.querySelector(`input[type="checkbox"][data-country-id="${countryId}"]`); 1613 if (!(countryInput instanceof HTMLInputElement)) return; 1614 1615 const regionInputs = Array.from(rootElement.querySelectorAll(`input[type="checkbox"][data-parent-country-id="${countryId}"]`)); 1616 if (regionInputs.length === 0) return; 1617 1618 const checkedCount = regionInputs.filter(input => input.checked).length; 1619 1620 if (checkedCount === 0) { 1621 countryInput.checked = false; 1622 countryInput.indeterminate = false; 1623 } else if (checkedCount === regionInputs.length) { 1624 countryInput.checked = true; 1625 countryInput.indeterminate = false; 1626 } else { 1627 countryInput.checked = false; 1628 countryInput.indeterminate = true; 1629 } 1630 }; 1631 1632 rootElement.addEventListener('change', (event) => { 1633 const target = event.target; 1634 if (!(target instanceof HTMLInputElement) || target.type !== 'checkbox') return; 1635 1636 const countryId = target.dataset.countryId; 1637 const parentCountryId = target.dataset.parentCountryId; 1638 1639 if (countryId) { 1640 const regionInputs = Array.from(rootElement.querySelectorAll(`input[type="checkbox"][data-parent-country-id="${c
1640ountryId}"]`)); 1641 regionInputs.forEach(regionInput => { 1642 if (regionInput.checked !== target.checked) { 1643 regionInput.checked = target.checked; 1644 } 1645 }); 1646 target.indeterminate = false; 1647 } else if (parentCountryId) { 1648 updateParentState(parentCountryId); 1649 } 1650 }); 1651 } 1652 1653 function initAll(root) { 1654 const scope = root instanceof HTMLElement || root === document ? root : document; 1655 const wrappers = Array.from(scope.querySelectorAll('.js-dropdown-multiselect')); 1656 wrappers.forEach((wrapper) => { 1657 bindCountryRegionLogic(wrapper); 1658 initOne(wrapper); 1659 }); 1660 } 1661 1662 window.DropdownMultiselect = window.DropdownMultiselect || { initAll, bindCountryRegionLogic }; 1663 document.addEventListener('DOMContentLoaded', () => initAll(document)); 1664 })(); 1665</script>
1665 1666 <span class="clear_destination_btn button icon small hidden" title="WyczyÅÄ kierunek">×</span> 1667 </div> 1668 </li> 1669 <li> 1670 <label class="wyszukiwarka_pole_label" for="wyszukiwarka_szukaj">Szukaj w nazwie (min. 3 znaki)</label><br /> 1671 <div class="form_field_wrapper search_text_field_wrapper"> 1672 <input 1673 name="searchText" 1674 id="wyszukiwarka_szukaj" 1675 class="form_field search clearable_text_input" 1676 type="text" 1677 value="" 1678 placeholder="Wszystkie" 1679 autocomplete="off" 1680 data-min-canonical-length="3" 1681 data-suggestions-min-canonical-length="1" 1682 aria-autocomplete="list" 1683 aria-invalid="false" 1684 aria-expanded="false" 1685 aria-controls="wyszukiwarka_szukaj_suggestions" /> 1686 <i class="icon"></i> 1687 <button type="button" class="clear_text_input_btn button icon small hidden" data-clear-input-target="wyszukiwarka_szukaj" title="WyczyÅÄ nazwÄ" aria-label="WyczyÅÄ nazwÄ">×</button> 1688 <div 1689 id="wyszukiwarka_szukaj_suggestions" 1690 class="search_suggestions_popup dropdown_multiselect_popup hidden" 1691 role="listbox" 1692 aria-label="Podpowiedzi miasta lub obiektu"></div> 1693 <div class="field_error search_text_error hidden" aria-live="polite"></div> 1694 </div> 1695 </li> 1696 <li> 1697 <label class="wyszukiwarka_pole_label" for="wyszukiwarka_kiedy">Kiedy</label><br /> 1698 <div class="form_field_wrapper"> 1699 <input 1700 name="startDateRange" 1701 id="wyszukiwarka_kiedy" 1702 class='kal1 form_field' 1703 type="text" 1704 data-min-date="2026-10-02" 1705 data-max-date="2028-10-01" 1706 value="" 1707 placeholder="Dowolnie" 1708 autocomplete="off" /> 1709 <i class="icon"></i> 1710 <span class="clear_date_btn button icon small hidden" title="WyczyÅÄ datÄ">×</span> 1711 </div> 1712 </li> 1713 <li> 1714 <label class="wyszukiwarka_pole_label" for="wyszukiwarka_na_ile">Na ile</label><br /> 1715 <div class="form_field_wrapper"> 1716 <input 1717 name="stayLength" 1718 id="wyszukiwarka_na_ile" 1719 class="kal2 form_field clearable_text_input" 1720 type="text" 1721 value="" 1722 placeholder="Dowolnie" 1723 autocomplete="off" 1724 aria-haspopup="listbox" 1725 aria-expanded="false" 1726 aria-controls="wyszukiwarka_na_ile_suggestions" /> 1727 <i class="icon"></i> 1728 <button type="button" class="clear_text_input_btn button icon small hidden" data-clear-input-target="wyszukiwarka_na_ile" data-clear-input-close-panel="wyszukiwarka_na_ile_suggestions" title="WyczyÅÄ dÅugoÅÄ pobytu" aria-label="WyczyÅÄ dÅugoÅÄ pobytu">×</button> 1729 <div 1730 id="wyszukiwarka_na_ile_suggestions" 1731 class="stay_length_suggestions_popup dropdown_multiselect_popup hidden" 1732 role="listbox" 1733 aria-label="Podpowiedzi dÅugoÅci pobytu"> 1734 <button 1735 type="button" 1736 class="stay_length_suggestions_item search_suggestions_item" 1737 role="option" 1738 data-value="<6"> 1739 <span class="search_suggestions_name"><6</span> 1740 </button> 1741 <button 1742 type="button" 1743 class="stay_length_suggestions_item search_suggestions_item" 1744 role="option" 1745 data-value="7-9"> 1746 <span class="search_suggestions_name">7-9</span> 1747 </button> 1748 <button 1749 type="button" 1750 class="stay_length_suggestions_item search_suggestions_item" 1751 role="option" 1752 data-value=">10"> 1753 <span class="search_suggestions_name">>10</span> 1754 </button> 1755 </div> 1756 </div> 1757 </li> 1758 <li> 1759 <label class="wyszukiwarka_pole_label" for="wyszukiwarka_osoby">Ile osób</label><br /> 1760 <div class='form_field_wrapper osoby_wrapper' data-children-name="
1760childrenBirthDates[]"> 1761 <button type="button" id="wyszukiwarka_osoby" class='osoby_trigger form_field'>2 + 0</button> 1762 <i class="icon"></i> 1763 <div class='osoby_popup hidden'> 1764 <div class='osoby_row' data-field='adults'> 1765 <span class='osoby_label'>DoroÅli</span> 1766 <div class='osoby_counter'> 1767 <button type='button' class='osoby_dec' aria-label='Zmniejsz liczbÄ dorosÅych'>â</button> 1768 <span class='osoby_value'>2</span> 1769 <button type='button' class='osoby_inc' aria-label='ZwiÄksz liczbÄ dorosÅych'>+</button> 1770 </div> 1771 </div> 1772 <div class='osoby_row' data-field='children'> 1773 <span class='osoby_label'>Dzieci</span> 1774 <div class='osoby_counter'> 1775 <button type='button' class='osoby_dec' aria-label='Zmniejsz liczbÄ dzieci'>â</button> 1776 <span class='osoby_value'>0</span> 1777 <button type='button' class='osoby_inc' aria-label='ZwiÄksz liczbÄ dzieci'>+</button> 1778 </div> 1779 </div> 1780 <div class='osoby_error' aria-live='polite'></div> 1781 <div class='osoby_actions'> 1782 <button type='button' class='button primary wide osoby_confirm'>Zatwierdź</button> 1783 </div> 1784</div> 1785 <input type="hidden" name="adults" value="2" /> 1786 </div> 1787 </li> 1788 <li> 1789 <label class="wyszukiwarka_pole_label" for="wyszukiwarka_transport">Transport</label><br /> 1790 1791<div 1792 class="form_field_wrapper transport_select_wrapper js-transport-select" 1793 data-placeholder="Dowolnie" 1794 data-own-value="transport.own" 1795 data-own-label="Dojazd wÅasny" 1796> 1797 <button 1798 type="button" 1799 id="wyszukiwarka_transport" 1800 class="form_field dojazd transport_select_trigger" 1801 aria-haspopup="dialog" 1802 aria-expanded="false" 1803 > 1804 <span class="dropdown_multiselect_value transport_select_value">Dowolnie</span> 1805 </button> 1806 <i class="icon"></i> 1807 1808 <div class="transport_select_popup dropdown_multiselect_popup hidden" role="dialog" aria-label="Transport"> 1809 <div class="transport_select_section"> 1810 <div class="transport_select_section_header"> 1811 <strong class="transport_select_section_title">Dojazd</strong> 1812 <button type="button" class="button tertiary wide transport_select_clear" data-clear="transport">WyczyÅÄ</button> 1813 </div> 1814 <div class="transport_select_section_body transport_select_transport_list"> 1815 <div class="dropdown_multiselect_item"> 1816 1817<label class='custom-checkbox'> 1818 <div> 1819 <input 1820 type='checkbox' 1821 value='transport.own' name='transport[]' id='wyszukiwarka_transport_transport_transport.own' /> 1822 <span class='checkmark'></span> 1823 </div> 1824 <div class="label"> 1825 Dojazd wÅasny </div> 1826</label> 1827 </div> 1828 <div class="dropdown_multiselect_item"> 1829 1830<label class='custom-checkbox'> 1831 <div> 1832 <input 1833 type='checkbox' 1834 value='transport.flight' name='transport[]' id='wyszukiwarka_transport_transport_transport.flight' /> 1835 <span class='checkmark'></span> 1836 </div> 1837 <div class="label"> 1838 Lot w obie strony </div> 1839</label> 1840 </div> 1841 </div> 1842 </div> 1843 1844 <div class="transport_select_section"> 1845 <div class="transport_select_section_header"> 1846 <strong class="transport_select_section_title">Wyjazd z</strong> 1847 <button type="button" class="button tertiary wide transport_select_clear" data-clear="departure" >WyczyÅÄ</button> 1848 </div> 1849 1850 <div class="transport_select_departure_note hidden"> 1851 Dowolnie </div> 1852 1853 <div class="transport_select_section_body transport_select_departure_list "> 1854 <div class="dropdown_multiselect_item"> 1855 1856<label class='custom-checkbox'> 1857 <div> 1858 <input 1859 type='checkbox' 1860 value='0x4265726c696e' name='departureLocations[]' /> 1861 <span class='checkmark'></span> 1862 </div> 1863 <div class="label"> 1864 Berlin </div> 1865</label> 1866 </div> 1867 <div class="dropdown_multiselect_item"> 1868 1869<label class='custom-checkbox'> 1870 <div> 1871 <input 1872 type='checkbox' 1873 value='0x476461c584736b' name='departureLocations[]' /> 1874 <span class='checkmark'></span> 1875 </div> 1876 <div class="label"> 1877 GdaÅsk </div> 1878</label> 1879 </div> 1880 <div class="dropdown_multiselect_item"> 1881 1882<label class='custom-checkbox'> 1883 <div> 1884 <input 1885 type='checkbox' 1886 value='0x4b61746f77696365' name='departureLocations[]' /> 1887 <span class='checkmark'></span> 1888 </div> 1889 <div class="label"> 1890 Katowice </div> 1891</label> 1892 </div> 1893 <div class="dropdown_multiselect_item"> 1894 1895<label class='custom-checkbox'> 1896 <div> 1897 <input 1898 type='checkbox' 1899 value='0x4b72616bc3b377' name='departureLocations[]' /> 1900 <span class='checkmark'></span> 1901 </div> 1902 <div class="label"> 1903 Kraków </div> 1904</label> 1905 </div> 1906 <div class="dropdown_multiselect_item"> 1907 1908<label class='custom-checkbox'> 1909 <div> 1910 <input 1911 type='checkbox' 1912 value='0x506f7a6e61c584' name='departureLocations[]' /> 1913 <span class='checkmark'></span> 1914 </div> 1915 <div class="label"> 1916 PoznaÅ </div> 1917</label> 1918 </div> 1919 <div class="dropdown_multiselect_item"> 1920 1921<label class='custom-checkbox'> 1922 <div> 1923 <input 1924 type='checkbox' 1925 value='0x5072616761' name='departureLocations[]' /> 1926 <span class='checkmark'></span> 1927 </div> 1928 <div class="label"> 1929 Praga </div> 1930</label> 1931 </div> 1932 <div class="dropdown_multiselect_item"> 1933 1934<label class='custom-checkbox'> 1935 <div> 1936 <input 1937 type='checkbox' 1938 value='0x527a65737ac3b377' name='departureLocations[]' /> 1939 <span class='checkmark'></span> 1940 </div> 1941 <div class="label"> 1942 Rzeszów </div> 1943</label> 1944 </div> 1945 <div class="dropdown_multiselect_item"> 1946 1947<label class='custom-checkbox'> 1948 <div> 1949 <input 1950 type='checkbox' 1951 value='0x537a637a6563696e' name='departureLocations[]' /> 1952 <span class='checkmark'></span> 1953 </div> 1954 <div class="label"> 1955 Szczecin </div> 1956</label> 1957 </div> 1958 <div class="dropdown_multiselect_item"> 1959 1960<label class='custom-checkbox'> 1961 <div> 1962 <input 1963 type='checkbox' 1964 value='0x576172737a617761' name='departureLocations[]' /> 1965 <span class='checkmark'></span> 1966 </div> 1967 <div class="label"> 1968 Warszawa </div> 1969</label> 1970 </div> 1971 <div class="dropdown_multiselect_item"> 1972 1973<label class='custom-checkbox'> 1974 <div> 1975 <input 1976 type='checkbox' 1977 value='0x576172737a617761202d204d6f646c696e' name='departureLocations[]' /> 1978 <span class='checkmark'></span> 1979 </div> 1980 <div class="label"> 1981 Warszawa - Modlin </div> 1982</label> 1983 </div> 1984 <div class="dropdown_multiselect_item"> 1985 1986<label class='custom-checkbox'> 1987 <div> 1988 <input 1989 type='checkbox'
1990 value='0x57726f63c5826177' name='departureLocations[]' /> 1991 <span class='checkmark'></span> 1992 </div> 1993 <div class="label"> 1994 WrocÅaw </div> 1995</label> 1996 </div> 1997 <div class="dropdown_multiselect_item"> 1998 1999<label class='custom-checkbox'> 2000 <div> 2001 <input 2002 type='checkbox' 2003 value='0xc581c3b364c5ba' name='departureLocations[]' /> 2004 <span class='checkmark'></span> 2005 </div> 2006 <div class="label"> 2007 Åódź </div> 2008</label> 2009 </div> 2010 </div> 2011 </div> 2012 </div> 2013</div> 2014 </li> 2015 </ul> 2016 <button class="button primary search wide"><i class="icon icon-search"></i>Szukaj</button> 2017 </div> 2018 </form> 2019</div> 2020
2021<script src="js/search_text_canonicalizer.js"></script>
vendor: 1 bytes, line 2021
2021
2022<script> 2023 (function searchTextLengthGuard() { 2024 const wrappers = Array.from(document.querySelectorAll('.wyszukiwarka_formularz')); 2025 if (wrappers.length === 0) return; 2026 const INPUT_ERROR_CLASS = 'input_error'; 2027 const HIDDEN_CLASS = 'hidden'; 2028 2029 const fallbackCanonicalize = (value) => { 2030 return String(value || '') 2031 .trim() 2032 .toLowerCase(); 2033 }; 2034 2035 const canonicalize = (value) => { 2036 if (window.SearchTextCanonicalizer && typeof window.SearchTextCanonicalizer.canonicalize === 'function') { 2037 return window.SearchTextCanonicalizer.canonicalize(String(value || '')); 2038 } 2039 2040 return fallbackCanonicalize(value); 2041 }; 2042 2043 wrappers.forEach((wrapper) => { 2044 if (!(wrapper instanceof HTMLElement)) return; 2045 2046 const form = wrapper.querySelector('form'); 2047 const searchTextInput = wrapper.querySelector('#wyszukiwarka_szukaj'); 2048 if ( 2049 !(form instanceof HTMLFormElement) 2050 || !(searchTextInput instanceof HTMLInputElement) 2051 ) { 2052 return; 2053 } 2054 2055 const minCanonicalLengthRaw = Number.parseInt(searchTextInput.dataset.minCanonicalLength || '', 10); 2056 const minCanonicalLength = Number.isInteger(minCanonicalLengthRaw) && minCanonicalLengthRaw > 0 2057 ? minCanonicalLengthRaw 2058 : 3; 2059 2060 const errorMessage = `Wpisz co najmniej ${minCanonicalLength} litery, aby wyszukaÄ oferty.`; 2061 const searchTextError = wrapper.querySelector('.search_text_error'); 2062 2063 const syncValidity = () => { 2064 const rawValue = searchTextInput.value || ''; 2065 const canonicalValue = canonicalize(rawValue); 2066 const isEmpty = rawValue.trim() === '' || canonicalValue.length === 0; 2067 const isInvalid = !isEmpty && canonicalValue.length < minCanonicalLength; 2068 2069 searchTextInput.classList.toggle(INPUT_ERROR_CLASS, isInvalid); 2070 searchTextInput.setAttribute('aria-invalid', isInvalid ? 'true' : 'false'); 2071 if (searchTextError instanceof HTMLElement) { 2072 searchTextError.textContent = isInvalid ? errorMessage : ''; 2073 searchTextError.classList.toggle(HIDDEN_CLASS, !isInvalid); 2074 } 2075 2076 if (!isInvalid) { 2077 return true; 2078 } 2079 2080 return false; 2081 }; 2082 2083 searchTextInput.addEventListener('input', () => { 2084 syncValidity(); 2085 }); 2086 searchTextInput.addEventListener('blur', () => { 2087 syncValidity(); 2088 }); 2089 2090 form.addEventListener('submit', (event) => { 2091 if (syncValidity()) { 2092 return; 2093 } 2094 2095 event.preventDefault(); 2096 }); 2097 2098 syncValidity(); 2099 }); 2100 })(); 2101</script>
vendor: 1 bytes, line 2101
2101
2102<script> 2103 (function clearableTextInputLogic() { 2104 const wrappers = Array.from(document.querySelectorAll('.wyszukiwarka_formularz')); 2105 if (wrappers.length === 0) return; 2106 2107 wrappers.forEach((wrapper) => { 2108 if (!(wrapper instanceof HTMLElement)) return; 2109 2110 const clearButtons = Array.from(wrapper.querySelectorAll('.clear_text_input_btn[data-clear-input-target]')); 2111 clearButtons.forEach((button) => { 2112 if (!(button instanceof HTMLButtonElement)) return; 2113 2114 const targetId = button.dataset.clearInputTarget || ''; 2115 const input = targetId !== '' ? document.getElementById(targetId) : null; 2116 if (!(input instanceof HTMLInputElement) || !wrapper.contains(input)) return; 2117 2118 const closePanel = () => { 2119 const panelId = button.dataset.clearInputClosePanel || ''; 2120 const panel = panelId !== '' ? document.getElementById(panelId) : null; 2121 if (!(panel instanceof HTMLElement) || !wrapper.contains(panel)) return; 2122 2123 panel.classList.add('hidden'); 2124 panel.classList.remove('open'); 2125 input.setAttribute('aria-expanded', 'false'); 2126 input.removeAttribute('aria-activedescendant'); 2127 }; 2128 2129 const syncButton = () => { 2130 button.classList.toggle('hidden', input.value.trim() === ''); 2131 }; 2132 2133 button.addEventListener('click', (event) => { 2134 event.preventDefault(); 2135 input.value = ''; 2136 input.dispatchEvent(new Event('input', { bubbles: true })); 2137 closePanel(); 2138 syncButton(); 2139 input.focus(); 2140 }); 2141 2142 input.addEventListener('input', syncButton); 2143 syncButton(); 2144 }); 2145 }); 2146 })(); 2147</script>
vendor: 1 bytes, line 2147
2147
2148<script> 2149 (function calendarLogic() { 2150 const form = document.querySelector('.wyszukiwarka_formularz'); 2151 if (!form) return; 2152 2153 const dateInput = form.querySelector('.kal1'); 2154 if (dateInput && window.flatpickr) { 2155 const wrapper = dateInput.closest('.form_field_wrapper'); 2156 const clearBtn = wrapper.querySelector('.clear_date_btn'); 2157 const pad2 = (value) => String(value).padStart(2, '0'); 2158 const formatDisplay = (dates) => { 2159 if (!Array.isArray(dates) || dates.length === 0) return ''; 2160 const start = dates[0]; 2161 const startLabel = pad2(start.getDate()) + '.' + pad2(start.getMonth() + 1); 2162 const end = dates.length > 1 ? dates[1] : start; 2163 const endLabel = pad2(end.getDate()) + '.' + pad2(end.getMonth() + 1) + '.' + end.getFullYear(); 2164 return startLabel + ' - ' + endLabel; 2165 }; 2166 const syncDisplay = (instance, selectedDates, dateStr) => { 2167 if (clearBtn) { 2168 if (dateStr && dateStr.trim() !== '') { 2169 clearBtn.classList.remove('hidden'); 2170 } else { 2171 clearBtn.classList.add('hidden'); 2172 } 2173 } 2174 if (instance && instance.altInput) { 2175 instance.altInput.value = formatDisplay(selectedDates); 2176 } 2177 }; 2178 2179 const minDate = dateInput.dataset.minDate || null; 2180 const maxDate = dateInput.dataset.maxDate || null; 2181 flatpickr.localize(flatpickr.l10ns.pl); 2182 const fp = flatpickr(dateInput, { 2183 mode: 'range', 2184 dateFormat: 'Y-m-d', 2185 rangeSeparator: ' do ', 2186 altInput: true, 2187 altInputClass: dateInput.className, 2188 altFormat: 'd.m.Y', 2189 disableMobile: true, 2190 defaultDate: dateInput.value || undefined, 2191 minDate: minDate || undefined, 2192 maxDate: maxDate || undefined, 2193 onChange: function(selectedDates, dateStr, instance) { 2194 syncDisplay(instance, selectedDates, dateStr); 2195 }, 2196 onReady: function(selectedDates, dateStr, instance) { 2197 syncDisplay(instance, selectedDates, dateStr); 2198 } 2199 }); 2200 2201 if (clearBtn) { 2202 clearBtn.addEventListener('click', function(e) { 2203 e.preventDefault(); 2204 fp.clear(); 2205 clearBtn.classList.add('hidden'); 2206 }); 2207 } 2208 2209 syncDisplay(fp, fp.selectedDates, fp.input.value || ''); 2210 } 2211 })(); 2212</script>
vendor: 1 bytes, line 2212
2212
2213<script> 2214 (function stayLengthLogic() { 2215 const formWrapper = document.querySelector('.wyszukiwarka_formularz'); 2216 if (!formWrapper) return; 2217 const form = formWrapper.querySelector('form'); 2218 const stayLengthInput = form ? form.querySelector('#wyszukiwarka_na_ile') : null; 2219 if (!(form instanceof HTMLFormElement) || !(stayLengthInput instanceof HTMLInputElement)) return; 2220 2221 const stayLengthDropdown = form.querySelector('#wyszukiwarka_na_ile_suggestions'); 2222 const stayLengthOptions = stayLengthDropdown instanceof HTMLElement 2223 ? Array.from(stayLengthDropdown.querySelectorAll('.stay_length_suggestions_item')) 2224 : []; 2225 const hasStayLengthOptions = stayLengthOptions.length > 0; 2226 2227 const openStayLengthDropdown = () => { 2228 if (!(stayLengthDropdown instanceof HTMLElement) || !hasStayLengthOptions) return; 2229 stayLengthDropdown.classList.remove('hidden'); 2230 stayLengthDropdown.classList.add('open'); 2231 stayLengthInput.setAttribute('aria-expanded', 'true'); 2232 }; 2233 2234 const closeStayLengthDropdown = () => { 2235 if (!(stayLengthDropdown instanceof HTMLElement)) return; 2236 stayLengthDropdown.classList.add('hidden'); 2237 stayLengthDropdown.classList.remove('open'); 2238 stayLengthInput.setAttribute('aria-expanded', 'false'); 2239 }; 2240 2241 stayLengthInput.addEventListener('focus', () => { 2242 openStayLengthDropdown(); 2243 }); 2244 2245 stayLengthInput.addEventListener('click', () => { 2246 openStayLengthDropdown(); 2247 }); 2248 2249 stayLengthOptions.forEach((option) => { 2250 if (!(option instanceof HTMLElement)) return; 2251 2252 option.addEventListener('mousedown', (event) => { 2253 event.preventDefault(); 2254 }); 2255 2256 option.addEventListener('click', (event) => { 2257 event.preventDefault(); 2258 stayLengthInput.value = option.dataset.value || option.textContent || ''; 2259 stayLengthInput.dispatchEvent(new Event('input', { bubbles: true })); 2260 closeStayLengthDropdown(); 2261 }); 2262 }); 2263 2264 const allowedStayLengthChars = /^[0-9<>=+\- ]$/; 2265 stayLengthInput.addEventListener('keydown', (event) => { 2266 if (event.key === 'Escape') { 2267 if (stayLengthDropdown instanceof HTMLElement && !stayLengthDropdown.classList.contains('hidden')) { 2268 event.preventDefault(); 2269 closeStayLengthDropdown(); 2270 } 2271 return; 2272 } 2273 2274 if (event.isComposing) return; 2275 if (event.ctrlKey || event.metaKey || event.altKey) return; 2276 if (event.key.length !== 1) return; 2277 if (!allowedStayLengthChars.test(event.key)) { 2278 event.preventDefault(); 2279 } 2280 }); 2281 2282 document.addEventListener('click', (event) => { 2283 if (!(stayLengthDropdown instanceof HTMLElement) || stayLengthDropdown.classList.contains('hidden')) return; 2284 const target = event.target; 2285 if (!(target instanceof Node)) return; 2286 if (!stayLengthInput.contains(target) && !stayLengthDropdown.contains(target)) { 2287 closeStayLengthDropdown(); 2288 } 2289 }); 2290 2291 form.addEventListener('submit', () => { 2292 closeStayLengthDropdown(); 2293 stayLengthInput.value = stayLengthInput.value.replace(/\s+/g, '').trim(); 2294 }); 2295 })(); 2296</script>
vendor: 1 bytes, line 2296
2296
2297<script src="js/transport_select.js"></script>
vendor: 1 bytes, line 2297
2297
2298<script src="js/osoby_popup.js"></script>
vendor: 1 bytes, line 2298
2298
2299<script src="js/search_suggestions_prefetch.js"></script>
vendor: 1 bytes, line 2299
2299
2300<script src="js/search_suggestions_autocomplete.js"></script>
vendor: 1 bytes, line 2300
2300
2301<script> 2302 (function destinationsLogic() { 2303 if (!window.DropdownMultiselect || typeof window.DropdownMultiselect.initAll !== 'function') { 2304 return; 2305 } 2306 2307 const form = document.querySelector('.wyszukiwarka_formularz'); 2308 if (!form) return; 2309 2310 window.DropdownMultiselect.initAll(document); 2311 2312 const destinationTrigger = form.querySelector('#wyszukiwarka_dokad'); 2313 if (!destinationTrigger) return; 2314 const dropdownWrapper = destinationTrigger.closest('.js-dropdown-multiselect'); 2315 const fieldWrapper = destinationTrigger.closest('.form_field_wrapper'); 2316 const clearBtn = fieldWrapper ? fieldWrapper.querySelector('.clear_destination_btn') : null; 2317 if (!dropdownWrapper || !clearBtn) return; 2318 const popup = dropdownWrapper.querySelector('.dropdown_multiselect_popup'); 2319 const isFilterByInput = dropdownWrapper.dataset.filterByInput === '1' && destinationTrigger instanceof HTMLInputElement; 2320 2321 const getCheckedLabels = () => { 2322 const inputs = Array.from(dropdownWrapper.querySelectorAll('input[type="checkbox"]')); 2323 return inputs 2324 .filter((input) => input instanceof HTMLInputElement && input.checked) 2325 .map((input) => { 2326 const label = input.closest('.custom-checkbox'); 2327 const text = label?.querySelector('div:last-child')?.textContent ?? ''; 2328 return text.trim(); 2329 }) 2330 .filter((text) => text !== ''); 2331 }; 2332 2333 const isTypedFilterTextVisible = () => { 2334 if (!isFilterByInput || !(destinationTrigger instanceof HTMLInputElement) || !(popup instanceof HTMLElement)) { 2335 return false; 2336 } 2337 if (popup.classList.contains('hidden')) { 2338 return false; 2339 } 2340 2341 const triggerValue = destinationTrigger.value.trim(); 2342 if (triggerValue === '') { 2343 return false; 2344 } 2345 2346 const labels = getCheckedLabels(); 2347 const placeholder = destinationTrigger.getAttribute('placeholder') || 'Dowolnie'; 2348 const summary = labels.length > 0 ? labels.join(', ') : placeholder; 2349 2350 return triggerValue !== summary; 2351 }; 2352 2353 const syncClearButton = () => { 2354 const hasSelection = dropdownWrapper.querySelector('input[type="checkbox"]:checked') !== null; 2355 const isExpanded = popup instanceof HTMLElement && !popup.classList.contains('hidden'); 2356 const shouldShow = hasSelection && !isExpanded && !isTypedFilterTextVisible(); 2357 if (shouldShow) { 2358 clearBtn.classList.remove('hidden'); 2359 } else { 2360 clearBtn.classList.add('hidden'); 2361 } 2362 }; 2363 2364 clearBtn.addEventListener('click', function(event) { 2365 event.preventDefault(); 2366 const inputs = Array.from(dropdownWrapper.querySelectorAll('input[type="checkbox"]')); 2367 inputs.forEach((input) => { 2368 if (!(input instanceof HTMLInputElement)) return; 2369 input.checked = false; 2370 input.indeterminate = false; 2371 }); 2372 if (inputs[0] instanceof HTMLInputElement) { 2373 inputs[0].dispatchEvent(new Event('change', { 2374 bubbles: true 2375 })); 2376 } 2377 syncClearButton(); 2378 }); 2379 2380 dropdownWrapper.addEventListener('change', (event) => { 2381 const target = event.target; 2382 if (!(target instanceof HTMLInputElement) || target.type !== 'checkbox') return; 2383 syncClearButton(); 2384 }); 2385 2386 if (isFilterByInput && destinationTrigger instanceof HTMLInputElement) { 2387 destinationTrigger.addEventListener('input', () => { 2388 syncClearButton(); 2389 }); 2390 destinationTrigger.addEventListener('focus', () => { 2391 syncClearButton(); 2392 }); 2393 document.addEventListener('click', () => { 2394 window.setTimeout(syncClearButton, 0); 2395 }); 2396 document.addEventListener('keydown', (event) => { 2397 if (event.key !== 'Escape') return; 2398 window.setTimeout(syncClearButton, 0); 2399 }); 2400 } 2401 2402 syncClearButton(); 2403 })(); 2404</script>
2404 2405 </section> 2406</div> 2407 2408<div class='ps_glowna'> 2409 2410 2411 <section class='scrollBox oferty_promo'> 2412 <h1>Polecane oferty</h1> 2413 <div class='scroller'><a class='oferta_promo' href='?p=oferta&offerId=own%3Aformigal-panticosa-hg-alto-aragon&adults=2'> 2414 <img src='images/offers/formigal-panticosa-hg-alto-aragon/details/01.jpg' alt='Hiszpania, Pireneje AragoÅskie - 8 dni 2010 EUR / os.' /> 2415 <div> 2416 <p>Hiszpania, Pireneje AragoÅskie</p> 2417 <p>HG Alto Aragón <img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /></p> 2418 <p>2027.02.28 (8 dni)</p> 2419 <p>2010 EUR / os.</p> 2420 </div> 2421 </a> 2422<a class='oferta_promo' href='?p=oferta&offerId=pFl7GPKhsD3Ne74VoLgsMYAAogwhfafSjev-MzEc4FnBWPN1zWkwu76xKrfK-5yZXbPPIqBFNOT1cw0c3j1QZIppgBUEFYvgZgAWoRQVRUT1NPTERFQ0UwMDAwMDJyHpEBFQdYClYAW9sDXH1AowNej_sBDdLO0gkgAAISY1t0B6k%7CSNOW%7CMnx8&adults=2'> 2423 <img src='https://datacfstatic.merlinx.eu/T320/SNOW/IMG/ATTOSOLDECE000002/main.webp' alt='Austria, Tyrol - 8 dni 9747 zÅ / os.' /> 2424 <div> 2425 <p>Austria, Tyrol</p> 2426 <p>Central (Solden) <img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /></p> 2427 <p>2026.11.01 (8 dni)</p> 2428 <p>9747 zÅ / os.</p> 2429 </div> 2430 </a> 2431<a class='oferta_promo' href='?p=oferta&offerId=p47zfTxXoLhvK-kYZoXGxPAAogXb0go9p1RohitKqYSjVzjr9yDDiRX7TEblBY3lIiga8qBFNOT1cwkM7j1QZIljhQQVjOB2ABahFBVFRaVFVYRVRITzAwMDAwMnIfkQEVB1gKVgBb2wNcjgFAkgNej_sBDdjO0gkgAAISYzrkTxU%7CSNOW%7CMnx8&adults=2'> 2432 <img src='https://datacfstatic.merlinx.eu/T320/SNOW/IMG/ATTZTUXETHO000002/main.webp' alt='Austria, Tyrol - 8 dni 3595 zÅ / os.' /> 2433 <div> 2434 <p>Austria, Tyrol</p> 2435 <p>Hohlenstein <img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /></p> 2436 <p>2026.11.07 (8 dni)</p> 2437 <p>3595 zÅ / os.</p> 2438 </div> 2439 </a> 2440<a class='oferta_promo' href='?p=oferta&offerId=pOEcpGxxUAyoBdJeK48SI_AAogCiIiDGEyHHCOgqoaALh-hTB3VUwJeGo5S61GrT-aGP0qBFNOT1cwvc7j1QZI9CdQQVieCmABahFBVFRTTkVTVDBTQjAwMDAwMnIfkQEVB1gKVgBb2wJc9QNAqwFej_sBDebO0gkgAAISY0qy_58%7CSNOW%7CMnx8&adults=2'> 2441 <img src='https://datacfstatic.merlinx.eu/T320/SNOW/IMG/ATTSNEST0SB000002/main.webp' alt='Austria, Tyrol - 8 dni 2554 zÅ / os.' /> 2442 <div> 2443 <p>Austria, Tyrol</p> 2444 <p>Haus Schonblick <img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /></p> 2445 <p>2026.11.21 (8 dni)</p> 2446 <p>2554 zÅ / os.</p> 2447 </div> 2448 </a> 2449<a class='oferta_promo' href='?p=oferta&offerId=pN6gYGi0Xxpavxe_Y7-hGDAAogsMpLCC-ycPcuxUptcasur1zWkwu76xKrfK-5yZXbPPIqBFNOT1cw0s7j1QZIzjlQQVi-BmABahFBVFRTTkVTVEVTTzAwMDAwMnIekQEVB1gKVgBciwRb2ANAGF6P-wEN0s7SCSAAAhJjkH7BgA%7CSNOW%7CMnx8&adults=2'> 2450 <img src='https://datacfstatic.merlinx.eu/T320/SNOW/IMG/ATTSNESTESO
2450000002/main.webp' alt='Austria, Tyrol - 8 dni 3687 zÅ / os.' /> 2451 <div> 2452 <p>Austria, Tyrol</p> 2453 <p>Zur Sonne <img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /></p> 2454 <p>2026.11.01 (8 dni)</p> 2455 <p>3687 zÅ / os.</p> 2456 </div> 2457 </a> 2458<a class='oferta_promo' href='?p=oferta&offerId=pSibCktgxftOL1Oq__33BwAAogFLhXzsymmaXhi316kPjP5HWzPc3mv2Bu6w7r2fHErbEqBFNOT1cwsM_j1QZI3DBQQViOCWABahFBVFNFS0FQUkVTVDAwMDAwMnIfkQEVB1gKVgBb2wNcjgFAkgNej_sBDeDO0gkgAAISY5xoqaA%7CSNOW%7CMnx8&adults=2'> 2459 <img src='https://datacfstatic.merlinx.eu/T320/SNOW/IMG/ATSEKAPREST000002/main.webp' alt='Austria, Ziemia Salzburska - 8 dni 3118 zÅ / os.' /> 2460 <div> 2461 <p>Austria, Ziemia Salzburska</p> 2462 <p>St. Florian <img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /><img src='images/iko-gwiazdka-czarna.svg' /></p> 2463 <p>2026.11.15 (8 dni)</p> 2464 <p>3118 zÅ / os.</p> 2465 </div> 2466 </a> 2467 2468 </div> 2469 <div class='scroller_controls'> 2470 <div class='przesun_w_prawo'><img src='/images/ikony/iko-strzalka.svg' /></div> 2471 <div class='przesun_w_lewo'><img src='/images/ikony/iko-strzalka.svg' /></div> 2472 </div> 2473 </section> 2474 <section class='scrollBox regiony'> 2475 <h1>Polecane regiony</h1> 2476 <div class='scroller'> 2477 <a class='kafelek' href='?p=oferty&destinations%5B%5D=1_1208&adults=2'> 2478 <img src='images/polecane-regiony-1.jpg' alt='Austria, Tyrol - 8 dni od 734 zÅ / os.' /> 2479 <div> 2480 <p>Austria</p> 2481 <p>Tyrol</p> 2482 <p><!-- 8 dni od 734 zÅ / os. --></p> 2483 </div> 2484 </a> 2485 <a class='kafelek' href='?p=oferty&destinations%5B%5D=13%3A&destinations%5B%5D=13_1447&adults=2'> 2486 <img src='images/polecane-regiony-2.jpg' alt='Francja, Alpy Francuskie - 8 dni od 623 zÅ / os.' /> 2487 <div> 2488 <p>Francja</p> 2489 <p>Alpy Francuskie</p> 2490 <p><!-- 8 dni od 623 zÅ / os. --></p> 2491 </div> 2492 </a> 2493 <a class='kafelek' href='?p=oferty&destinations%5B%5D=59_2695&adults=2'> 2494 <img src='images/polecane-regiony-3.jpg' alt='Polska, Tatry i Podhale - 6 dni od 500 zÅ / os.' /> 2495 <div> 2496 <p>Polska</p> 2497 <p>Tatry i Podhale</p> 2498 <p><!-- 6 dni od 500 zÅ / os. --></p> 2499 </div> 2500 </a> 2501 <a class='kafelek' href='?p=oferty&destinations%5B%5D=61_1104&adults=2'> 2502 <img src='images/polecane-regiony-4.jpg' alt='SÅowacja, Wysokie Tatry - 6 dni od 466 zÅ / os.' /> 2503 <div> 2504 <p>SÅowacja</p> 2505 <p>Wysokie Tatry</p> 2506 <p><!-- 6 dni od 466 zÅ / os. --></p> 2507 </div> 2508 </a> 2509 <a class='kafelek' href='?p=oferty&destinations%5B%5D=44_1227&adults=2'> 2510 <img src='images/polecane-regiony-2.jpg' alt='WÅochy, Trentino - 8 dni od 1186 zÅ / os.' /> 2511 <div> 2512 <p>WÅochy</p> 2513 <p>Trentino</p> 2514 <p><!-- 8 dni od 1186 zÅ / os. --></p> 2515 </div> 2516 </a> 2517 <a class='kafelek' href='?p=oferty&destinations%5B%5D=448_10676&adults=2'> 2518 <img src='images/polecane-regiony-1.jpg' alt='Andora, Grandvalira - 6 dni od 969 zÅ / os.' /> 2519 <div> 2520 <p>Andora</p> 2521 <p>Grandvalira</p> 2522 <p><!-- 6 dni od 969 zÅ / os. --></p> 2523 </div> 2524 </a> 2525 <a class='kafelek' href='?p=oferty&destinations%5B%5D=44_4586&adults=2'> 2526 <img src='images/polecane-regiony-3.jpg' alt='WÅochy, PoÅudniowy Tyrol - 8 dni od 1076 zÅ / os.' /> 2527 <div> 2528 <p>WÅochy</p> 2529 <p>PoÅudniowy Tyrol</p> 2530 <p><!-- 8 dni od 1076 zÅ / os. --></p> 2531 </div> 2532 </a> 2533 </div> 2534 <div class='scroller_controls'> 2535 <div class='przesun_w_prawo'><img src='/images/ikony/iko-strzalka.svg' /></div> 2536 <div class='przesun_w_lewo'><img src='/images/ikony/iko-strzalka.svg' /></div> 2537 </div> 2538 </section> 2539 2540 <section class='kraje'> 2541 <h1>Wybierz kraj</h1> 2542 <div class='ukladanka'> 2543 <a class='kraj' href='?p=oferty&destinations%5B%5D=1%3A&destinations%5B%5D=1_2292&destinations%5B%5D=1_950&destinations%5B%5D=1_2320&destinations%5B%5D=1_1208&destinations%5B%5D=1_4026&adults=2'> 2544 <img src='images/kraj-austria.jpg' alt='Austria' /> 2545 <div> 2546 <p class="capitalize">Austria</p> 2547 <p><!-- od 332 zÅ/os. --></p> 2548 <p>204 oferty</p> 2549 </div> 2550 </a> 2551 <a class='kraj' href='?p=oferty&destinations%5B%5D=44%3A&destinations%5B%5D=44_2697&destinations%5B%5D=44_1274&destinations%5B%5D=44_1219&destinations%5B%5D=44_1220&destinations%5B%5D=44_4586&destinations%5B%5D=44_1227&destinations%5B%5D=44_1260&adults=2'> 2552 <img src='images/kraj-wlochy.jpg' alt='WÅochy' /> 2553 <div> 2554 <p class="capitalize">WÅochy</p> 2555 <p><!-- od 507 zÅ/os. --></p> 2556 <p>176 ofert</p> 2557 </div> 2558 </a> 2559 <a class='kraj' href='?p=oferty&destinations%5B%5D=61%3A&destinations%5B%5D=61_4028&destinations%5B%5D=61_1084&destinations%5B%5D=61_4228&destinations%5B%5D=61_37852&destinations%5B%5D=61_1104&adults=2'> 2560 <img src='images/kraj-slowacja.jpg' alt='SÅowacja' /> 2561 <div> 2562 <p class="capitalize">SÅowacja</p> 2563 <p><!-- od 186 zÅ/os. --></p> 2564 <p>20 ofert</p> 2565 </div> 2566 </a> 2567 <a class='kraj' href='?p=oferty&destinations%5B%5D=9%3A&destinations%5B%5D=9_3600&destinations%5B%5D=9_4164&destinations%5B%5D=9_38395&destinations%5B%5D=9_3989&destinations%5B%5D=9_3973&destinations%5B%5D=9_2998&destinations%5B%5D=9_3000&adults=2'> 2568 <img src='images/kraj-czechy.jpg' alt='Czechy' /> 2569 <div> 2570 <p class="capitalize">Czechy</p> 2571 <p><!-- od 314 zÅ/os. --></p> 2572 <p>12 ofert</p> 2573 </div> 2574 </a> 2575 <a class='kraj' href='?p=oferty&destinations%5B%5D=59%3A&destinations%5B%5D=59_99046&destinations%5B%5D=59_2442&destinations%5B%5D=59_3785&destinations%5B%5D=59_3652&destinations%5B%5D=59_1077&destinations%5B%5D=59_38961&destinations%5B%5D=59_2855&destinations%5B%5D=59_3781&destinations%5B%5D=59_2695&destinations%5B%5D=59_0&destinations%5B%5D=59_99061&adults=2'> 2576 <img src='images/kraj-polska.jpg' alt='Polska' /> 2577 <div> 2578 <p class="capitalize">Polska</p> 2579 <p><!-- od 150 zÅ/os. --></p> 2580 <p>130 ofert</p> 2581 </div> 2582 </a> 2583 <a class='kraj' href='?p=oferty&destinations%5B%5D=448%3A&destinations%5B%5D=448_10676&destinations%5B%5D=448_4187&adults=2'> 2584 <img src='images/kraj-andora.jpg' alt='Andora' /> 2585 <div> 2586 <p class="capitalize">Andora</p> 2587 <p><!-- od 426 zÅ/os. --></p> 2588 <p>28 ofert</p> 2589 </div> 2590 </a> 2591 2592 <a class='kraj' href='?p=oferty&destinations%5B%5D=13%3A&destinations%5B%5D=13_1447&adults=2'> 2593 <img src='images/kraj-francja.jpg' alt='Francja' /> 2594 <div> 2595 <p class="capitalize">Francja</p> 2596 <p><!-- od 366 zÅ/os. --></p> 2597 <p>165 ofert</p> 2598 </div> 2599 </a> 2600 <a class='kraj' href='?p=oferty&destinations%5B%5D=62%3A&destinations%5B%5D=62_4183&destinations%5B%5D=62_4185&destinations%5B%5D=62_1201&destinations%5B%5D=62_1102&destinations%5B%5D=62_5875&adults=2'> 2601 <img src='images/kraj-szwajcaria.jpg' alt='Szwajcaria' /> 2602 <div> 2603 <p class="capitalize">Szwajcaria</p> 2604 <p><!-- od 659 zÅ/os. --></p> 2605 <p>107 ofert</p> 2606 </div> 2607 </a> 2608 <a class='kraj' href='?p=oferty&destinations%5B%5D=39%3A&destinations%5B%5D=39_38917&adults=2'> 2609 <img src='images/kraj-turcja.jpg' alt='Turcja' /> 2610 <div> 2611 <p class="capitalize">Turcja</p> 2612 <p><!-- od 2 999 zÅ/os. --></p> 2613 <p>6 ofert</p> 2614 </div> 2615 </a> 2616 <a class='kraj' href='?p=oferty&destinations%5B%5D=15%3A&destinations%5B%5D=15_13&adults=2'> 2617 <img src='images/kraj-hiszpania.jpg' alt='Hiszpania' /> 2618 <div> 2619 <p class="capitalize">Hiszpania</p> 2620 <p><!-- od 769 zÅ/os. --></p> 2621 <p>18 ofert</p> 2622 </div> 2623 </a> 2624<!-- 2625 <a class='kraj' href='?p=oferty&destinations%5B%5D=263%3A&destinations%5B%5D=263_3492&destinations%5B%5D=263_38814&adults=2'> 2626 <img src='images/kraj-slowenia.jpg' alt='SÅowenia' /> 2627 <div> 2628 <p class="capitalize">SÅowenia</p> 2629 <p>od 426 zÅ/os.</p> 2630 <p>13 ofert</p> 2631 </div> 2632 </a> 2633 <a class='kraj' href='?p=oferty&destinations%5B%5D=58%3A&destinations%5B%5D=58_3720&destinations%5B%5D=58_3577&destinations%5B%5D=58_3343&destinations%5B%5D=58_3293&destinations%5B%5D=58_38402&destinations%5B%5D=58_5798&destinations%5B%5D=58_3412&adults=2'> 2634 <img src='images/kraj-niemcy.jpg' alt='Niemcy' /> 2635 <div> 2636 <p class="capitalize">Niemcy</p> 2637 <p>od 388 zÅ/os.</p> 2638 <p>67 ofert</p> 2639 </div> 2640 </a> 2641 <a class='kraj' href='?p=oferty&destinations%5B%5D=2187%3A&destinations%5B%5D=2187_4210&adults=2'> 2642 <img src='images/kraj-finlandia.jpg' alt='Finlandia' /> 2643 <div> 2644 <p class="capitalize">Finlandia</p> 2645 <p>od 969 zÅ/os.</p> 2646 <p>1 oferta</p> 2647 </div> 2648 </a> 2649--> 2650 </div> 2651 </section> 2652 2653</div> 2654 2655<div class="obow_inf"> 2656 <div class="footer_content"> 2657 <p class="footer_disclaimer"> 2658 Opublikowane na stronach www.skionline.pl informacje lub ceny nie stanowiÄ oferty w rozumieniu przepisów kodeksu cywilnego. 2659 </p> 2660 <p class="footer_copyright"> 2661 Jeżeli używasz naszego serwisu, akceptujesz nasz <a href="https://www.skionline.pl/onas/regulamin-serwisu,teksty,8456.html" target="_blank" rel="noopener">regulamin</a>. 2662 </p> 2663 <p class="footer_links"> 2664 <a href="static/OBOWIAZEK_INFORMACYJNY.pdf" target="_blank" rel="noopener">ObowiÄ zek Informacyjny (PDF, 105 KB)</a> 2665 </p> 2666 </div> 2667</div> 2668 2669<footer> 2670 2671 <div> 2672 2673 <div><a href='https://www.skionline.pl/'><img src='/images/logo-skionline-pl-biale.svg' /></a></div> 2674 2675 <div> 2676 2677 <div> 2678 <p>Oferta</p> 2679 <div> 2680 <a href='/wyjazdy/'>Wyjazdy</a> 2681<!-- <a href='/wyjazdy/'>Loty</a> --> 2682 <a href='/ubezpieczenia/'>Ubezpieczenia</a> 2683 <a href='/blog/'>Blog</a> 2684 </div> 2685 </div> 2686 2687 <div> 2688 <p>Informacje</p> 2689 <div> 2690 <a href='/stacje/'>Stacje narciarskie</a> 2691 <a href='/sprzet/'>SprzÄt</a> 2692 <a href='https://www.youtube.com/@JacekCiszak' rel='noopener' target='_blank'>Blog</a> 2693 <a href='/forum/'>Forum</a> 2694 </div> 2695 </div> 2696 2697 <div> 2698 <p>O firmie</p> 2699 <div> 2700 <a href='/onas/o-skionline-pl,teksty,6882.html'>O nas</a> 2701 <a href='/onas/kontakt,teksty,6884.html'>Kontakt</a> 2702 </div> 2703 </div> 2704 2705 </div> 2706 2707 <div> 2708 2709 Partnerzy 2710 <div> 2711 <a href='https://www.subaru.pl/' rel='noopener' target='_blank'><img src='/images/partnerzy/subaru.png' alt='Subaru Polska' title='Subaru Polska' style='height: 37px;' /></a></td> 2712 <a href='https://www.skionline.pl/worldskitest/'><img src='/images/partnerzy/worldskitest.png' alt='WorldSkiTest' title='WorldSkiTest' style='width: 127px;' /></a></td> 2713 </div> 2714 2715 </div> 2716 2717 <div> 2718 <p>© 2026 skionline.pl. Wszelkie prawa zastrzeżone.</p> 2719 <a href='/onas/polityka-prywatnosci,teksty,6886.html'>Polityka prywatnoÅci</a> 2720 <a href='/onas/regulamin-serwisu,teksty,8456.html'>Regulamin serwisu</a> 2721 <a href='/onas/polityka-cookies,teksty,6887.html'>Informacje cookies</a> 2722 </div> 2723 2724 <div> 2725 <a href='https://www.youtube.com/@JacekCiszak' rel='noopener' target='_blank' title='Jacek Ciszak /
2725skionline.pl na YouTube'><img src='/images/ikony/footer_youtube.svg' /></a> 2726 <a href='https://www.facebook.com/skionlinepl/' rel='noopener' target='_blank' title='Jacek Ciszak / skionline.pl na Facebooku'><img src='/images/ikony/footer_facebook.svg' /></a> 2727 <a href='https://www.instagram.com/jacek.ciszak' rel='noopener' target='_blank' title='Jacek Ciszak / skionline.pl na Instagramie'><img src='/images/ikony/footer_instagram.svg' /></a> 2728 </div> 2729 2730 </div> 2731 2732 </footer> 2733<iframe 2734 id="callpage-frame" 2735 src="https://widgets.skionline.pl/CallPage.php" 2736 title="CallPage Widget" 2737 loading="lazy" 2738 sandbox="allow-scripts allow-same-origin allow-popups allow-forms" 2739 referrerpolicy="strict-origin-when-cross-origin" 2740 style=" 2741 position: fixed; 2742 right: 0; 2743 bottom: 0; 2744 width: 180px; 2745 height: 290px; 2746 border: 0; 2747 background: transparent; 2748 z-index: 2147483647; 2749 overflow: hidden; 2750 transition: 2751 width 0.25s ease, 2752 height 0.25s ease, 2753 inset 0.25s ease, 2754 right 0.25s ease, 2755 bottom 0.25s ease; 2756 " 2757></iframe>
2758<script> 2759(function () { 2760 2761 const iframe = document.getElementById('callpage-frame'); 2762 2763 window.addEventListener('message', function (event) { 2764 2765 if (event.origin !== 'https://widgets.skionline.pl') { 2766 return; 2767 } 2768 2769 iframe.style.right = '0'; 2770 iframe.style.bottom = '0'; 2771 2772 if (event.data === 'callpage:expand') { 2773 2774 iframe.style.top = '0'; 2775 iframe.style.left = '0'; 2776 2777 iframe.style.width = '100vw'; 2778 iframe.style.height = '100vh'; 2779 2780 return; 2781 } 2782 2783 if (event.data === 'callpage:tooltip') { 2784 2785 iframe.style.top = 'auto'; 2786 iframe.style.left = 'auto'; 2787 2788 iframe.style.width = '180px'; 2789 iframe.style.height = '290px'; 2790 2791 return; 2792 } 2793 2794 if (event.data === 'callpage:collapse') { 2795 2796 iframe.style.top = 'auto'; 2797 iframe.style.left = 'auto'; 2798 2799 iframe.style.width = '120px'; 2800 iframe.style.height = '90px'; 2801 2802 } 2803 }); 2804})(); 2805</script>
vendor: 1 bytes, line 2805
2805
2806<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"bd4774ca38ad45b7a30dced9d5a99e9d","r":1,"spa":2}' crossorigin="anonymous"></script>
2806 2807</body> 2808</html>
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.