1!(function ($, me) { 2 "use strict"; 3 if (!$ || !me) { 4 return; 5 } 6 if (document.documentElement.getAttribute("dev") === "yes") { 7 window.me = me; 8 } 9 10 me.opt.ytLinks = true; 11 me.opt.fancyboxDefaultPadding = 0; 12 me.opt.mainMenuChk = $("#main_menu_checkbox"); 13 me.opt.rememberLinks = $("[data-remember]"); 14 me.opt.smc = new ScrollMagic.Controller(); 15 window["scrolledBannerHeight"] = 60; 16 17 me.scroll_event = function () { 18 me.opt.site.toggleClass("scrolled", me.opt.scroll > me.opt.main_top); 19 }; 20 21 // Parallax 22 23 /* Parallax add class in viewport */ 24 if ($(".parallax").length > 0) { 25 $(function () { 26 $(".parallax img").each(function () { 27 var parallaxImage = $(this); 28 var parallaxTop = parallaxImage.offset().top - me.opt.window.height(); 29 var parallaxStart = parallaxTop; 30 31 nst2015.opt.window.scroll(function () { 32 if (nst2015.opt.scroll >= parallaxStart) { 33 parallaxImage.css({ 34 top: -((me.opt.scroll - parallaxStart) / 75) + "%", 35 }); 36 } 37 }); 38 }); 39 }); 40 } 41 42 if (me.opt.window.width() > 639) { 43 $(".card-cst").each(function () { 44 var el = $(this).children(".card-cst-left"); 45 var elHeight = $(this).find(".card-images-img").height(); 46 var containerTopHeight = el.children(".container-top").height(); 47 var conatinerBottomHeight = el.children(".container-bottom").height(); 48 var description = el.children(".card-description"); 49 var maxHeight = 50 elHeight - containerTopHeight - conatinerBottomHeight - 38; 51 52 if (description.height() > maxHeight) { 53 description.css({ 54 overflow: "hidden", 55 "max-height": 56 elHeight - containerTopHeight - conatinerBottomHeight - 38, 57 }); 58 el.addClass("show-button-more"); 59 } 60 }); 61 } 62 63 // Display Newsletter Note only when character is typed in input field 64 65 // Bind keyup event on the input 66 $("#nl_user_email", "main") 67 .one("keyup", function () { 68 $(".cms-privacy-hint", $(this).closest(".cms-newsletter")).slideToggle( 69 this.value.length > 0, 70 ); 71 }) 72 .closest(".cms-newsletter") 73 .find(".cms-privacy-hint") 74 .hide(); // Trigger the keyup event, thus running the handler on page load 75 76 // set placeholder for newsletter form disabled selected 77 $(".field-select").each(function (i, el) { 78 $("option:first", el).text($("label", el).text()).attr({ 79 selected: "selected", 80 disabled: "disabled", 81 }); 82 }); 83 $(".field-input-text").each(function (i, el) { 84 $("input", el).attr("placeholder", $("label", el).text()); 85 }); 86 $(".field-input-email").each(function (i, el) { 87 $("input", el).attr("placeholder", $("label", el).text()); 88 }); 89 90 $(document).ready(function () { 91 // Sprungmarken Zimmergruppen -> Aktiver Filter ändern 92 93 var newfilter = document.location.hash.split("#").pop(); 94 var matchingradio = $('.hrg-toggle-radio[data-name="' + newfilter + '"]'); 95 var matchingradiooffers = $( 96 '.package-filter-input[data-name="' + newfilter + '"]', 97 ); 98 99 if (matchingradio.length > 0) { 100 matchingradio.prop("checked", true); 101 } 102 103 if (matchingradiooffers.length > 0) { 104 matchingradiooffers.prop("checked", true); 105 } 106 107 // Barrierefreiheit 108 109 const widgetButton = me.opt.header[0].querySelector("button.widget-title"); 110 if (widgetButton) { 111 widgetButton.addEventListener( 112 "click", 113 (event) => { 114 const targetId = event.currentTarget.dataset.for; 115 const target = document.getElementById(targetId); 116 target.checked = !target.checked; 117 }, 118 false, 119 ); 120 } 121 const poiButton = me.opt.header[0].querySelector("button.poi-chk-big"); 122 if (poiButton) { 123 poiButton.addEventListener( 124 "click", 125 (event) => { 126 const targetId = event.currentTarget.dataset.for; 127 const target = document.getElementById(targetId); 128 target.checked = !target.checked; 129 }, 130 false, 131 ); 132 } 133 134 const menuButton = document.getElementById("nav_menu_button"); 135 if (menuButton) { 136 const targetId = menuButton.dataset.for; 137 const target = document.getElementById(targetId); 138 if (target) { 139 menuButton.addEventListener( 140 "click", 141 () => { 142 const isExpanded = 143 menuButton.getAttribute("aria-expanded") === "true"; 144 const open = typeof isOpen === "boolean" ? isOpen : !isExpanded; 145 menuButton.setAttribute("aria-expanded", open); 146 target.checked = !target.checked; 147 }, 148 false, 149 ); 150 } 151 } 152 153 const menuItems = document.querySelectorAll(".main-menu-item-name"); 154 if (menuItems.length) {
155 menuItems.forEach((menuItem) => { 156 menuItem.addEventListener( 157 "click", 158 () => { 159 document 160 .querySelectorAll(".main-menu-checkbox") 161 .forEach((input) => (input.checked = false)); 162 const targetId = menuItem.dataset.for; 163 const target = document.getElementById(targetId); 164 target.checked = !target.checked; 165 }, 166 false, 167 ); 168 }); 169 } 170 171 const checkboxSite = document.querySelectorAll('input[type="checkbox"]'); 172 document.addEventListener("keydown", function (event) { 173 if (event.keyCode === 27) { 174 checkboxSite.forEach(function (checkbox) { 175 checkbox.checked = false; 176 }); 177 // Fokus vom Navigationselement entfernen 178 const navElement = document.getElementById("header_c_nav"); 179 if (navElement) { 180 navElement.blur(); 181 } 182 } 183 }); 184 document.documentElement.classList.add("load-ready"); 185 const buttonPrev = document.querySelector(".flex-prev"); 186 buttonPrev?.setAttribute("aria-label", "Previous slide"); 187 const buttonNext = document.querySelector(".flex-next"); 188 buttonNext?.setAttribute("aria-label", "Next slide"); 189 190 let sliderTrack = document.querySelectorAll(".slick-slider"); 191 sliderTrack.forEach(function (slider) { 192 slider.removeAttribute("role"); 193 slider.querySelectorAll(".slick-cloned h3").forEach(function (header) { 194 header.removeAttribute("id"); 195 }); 196 slider.querySelectorAll(".slick-slide").forEach(function (slide) { 197 slide.removeAttribute("role"); 198 slide.removeAttribute("tabindex"); 199 slide.removeAttribute("aria-label"); 200 slide.removeAttribute("aria-hidden"); 201 }); 202 }); 203 204 function handleDuplicateIds() { 205 const headings = document.querySelectorAll("h1,h2,h3,h4,h5,h6"); 206 const idCounts = {}; 207
208 headings.forEach((heading) => { 209 if (heading.id) { 210 if (heading.id.trim() === "") { 211 heading.removeAttribute("id"); 212 return; 213 } 214 idCounts[heading.id] = (idCounts[heading.id] || 0) + 1; 215 if (idCounts[heading.id] > 1) { 216 heading.id = `${heading.id}_${idCounts[heading.id] - 1}`; 217 } 218 } 219 }); 220 } 221 222 handleDuplicateIds(); 223 }); 224 225 $(".gallery-big-items").slick({ 226 autoplay: false, 227 mobileFirst: true, 228 slidesToShow: 1, 229 fade: true, 230 slidesToScroll: 1, 231 infinite: false, 232 dots: true, 233 arrows: true, 234 prevArrow: 235 '<button type="button" class="slick-prev" aria-label="Previous slide" aria-disabled="true"><span>Prev</span></button>', 236 nextArrow: 237 '<button type="button" class="slick-next" aria-label="Next slide" aria-disabled="true"><span>Next</span></button>', 238 }); 239 240 $(".card-roomtype-images").slick({ 241 autoplay: false, 242 mobileFirst: true, 243 slidesToShow: 1, 244 fade: true, 245 slidesToScroll: 1, 246 infinite: false, 247 dots: false, 248 arrows: true, 249 prevArrow: 250 '<button type="button" class="slick-prev" aria-label="Previous slide" ><span>Prev</span></button>', 251 nextArrow: 252 '<button type="button" class="slick-next" aria-label="Next slide" ><span>Next</span></button>', 253 }); 254 255 // Only on non-Mobile Devices 256 257 if ($("#site").attr("data-mobile") == "false") { 258 // Width of Filter label-span on page load 259 260 $(document).ready(function () { 261 $(".label-container").each(function () { 262 var hoverElem = $(".label-span"); 263 var checkedInputId = $(".filter-style-input:checked").attr("id");
264 var checkedInputWidth = $( 265 "label[for='" + checkedInputId + "']", 266 ).width(); 267 var checkedInputoffsetLeft = $( 268 "label[for='" + checkedInputId + "']", 269 ).offset().left; 270 var offsetLeftParent = hoverElem 271 .closest(".label-container") 272 .offset().left; 273 274 hoverElem.css({ 275 width: checkedInputWidth, 276 left: checkedInputoffsetLeft - offsetLeftParent, 277 }); 278 }); 279 }); 280 281 // Filter on Hover 282 283 $(".filter-style-label").hover( 284 function () { 285 var offsetLeft = $(this).offset().left; 286 var offsetLeftParent = $(this) 287 .closest(".label-container") 288 .offset().left; 289 var elWidth = $(this).width(); 290 var hoverElem = $(this).siblings(".label-span"); 291 292 hoverElem.css({ 293 width: elWidth, 294 left: offsetLeft - offsetLeftParent, 295 }); 296 }, 297 function () { 298 var checkedInput = $(".filter-style-input:checked"); 299 var checkedInputId = checkedInput.attr("id");
300 var checkedInputWidth = $( 301 "label[for='" + checkedInputId + "']", 302 ).width(); 303 var checkedInputoffsetLeft = $( 304 "label[for='" + checkedInputId + "']", 305 ).offset().left; 306 var offsetLeftParent = $(this) 307 .closest(".label-container") 308 .offset().left; 309 var hoverElem = $(this).siblings(".label-span"); 310 311 hoverElem.css({ 312 left: checkedInputoffsetLeft - offsetLeftParent, 313 width: checkedInputWidth, 314 }); 315 }, 316 ); 317 318 /* Simple animation up */ 319 var slideUp = me.opt.main.find( 320 ".card-roomtype-left>*, .card-package-text>* ,.anchor, .gallery-big h2, .grp-mem-20>*, .media-display-rl-text>*, .awards-slider .awards-slider-title, .awards-slider .awards-slider-item , .parallax-overlay *", 321 ); 322 if (!me.opt.touch) { 323 $.each(slideUp, function (i, e) { 324 var slide = new ScrollMagic.Scene({ 325 triggerElement: e, 326 triggerHook: 0.9, 327 }) 328 .setClassToggle(this, "is-active") 329 .addTo(me.opt.smc); 330 }); 331 } 332 $(".awards-slider-items").slick({ 333 autoplay: false, 334 mobileFirst: true, 335 slidesToShow: 4, 336 speed: 1200, 337 slidesToScroll: 4, 338 infinite: false, 339 dots: true, 340 arrows: false, 341 }); 342 343 $(".card-package-list-slider").slick({ 344 autoplay: false, 345 slidesToShow: 1, 346 slidesToScroll: 1, 347 infinite: false, 348 dots: false, 349 fade: false, 350 prevArrow: 351 '<button type="button" class="slick-prev" aria-label="Previous slide" ><span>Prev</span></button>', 352 nextArrow: 353 '<button type="button" class="slick-next" aria-label="Next slide" ><span>Next</span></button>', 354 arrows: true, 355 }); 356 } 357 358 // Prevent scrolling when Menu open 359 360 me.opt.mainMenuChk.on("change", function () { 361 if (me.opt.mainMenuChk.is(":checked")) { 362 $("body").css({ 363 overflow: "hidden", 364 }); 365 } else { 366 $("body").css({ 367 overflow: "visible", 368 }); 369 } 370 }); 371 372 $(".main-menu-checkbox").on("change", function () { 373 $(".main-menu-checkbox").not(this).prop("checked", false); 374 }); 375 376 // Merkliste Spa 377 378 me.req_items_url = function (data_attr) { 379 var url = "", 380 hp_count = 0, 381 cookie, 382 form_type, 383 hotel, 384 item, 385 current_item; 386 387 if (data_attr) { 388 var items = JSON.parse(data_attr); 389 for (item in items) { 390 if (items.hasOwnProperty(item)) { 391 current_item = items[item]; 392 hp_count += current_item.type == "hp" ? 1 : 0; 393 url += 394 "&remember%5B" + 395 current_item.type + 396 "%5D%5B" + 397 current_item.id + 398 "%5D=" + 399 current_item.amount; 400 } 401 } 402 } else if (window.cst_remember) { 403 cookie = cst_remember.cookie_get(); 404 for (hotel in cookie) { 405 if (cookie.hasOwnProperty(hotel)) { 406 for (item in cookie[hotel]["items"]) { 407 if (cookie[hotel]["items"].hasOwnProperty(item)) { 408 current_item = cookie[hotel]["items"][item]; 409 hp_count += current_item.type == "hp" ? 1 : 0; 410 url += 411 "&remember%5B" + 412 current_item.type + 413 "%5D%5B" + 414 current_item.id + 415 "%5D=" + 416 current_item.amount; 417 } 418 } 419 } 420 } 421 } 422 423 hotel = hotel || 3738; 424 form_type = hp_count > 0 ? 6 : 2; 425 426 url = 427 document.location.protocol + 428 "//" + 429 document.location.hostname + 430 document.location.pathname + 431 (document.location.pathname.indexOf("transaction.php") == -1 432 ? "transaction.php" 433 : "") + 434 "?hotel=" + 435 hotel + 436 url; 437 438 return url; 439 }; 440 441 me.req_items_amount_change = function () { 442 $("input.remember-item-amount").each(function () { 443 var $remove_link = $(document.createElement("a")) 444 .attr("href", "#remove") 445 .addClass("remember-item-remove-link"); 446 $remove_link.insertAfter(this); 447 $remove_link.click(function (ev) { 448 ev.preventDefault(); 449 if (typeof cst_remember == "function") { 450 var parent_rel = $(this).parent().attr("id"); 451 var splitted_rel = parent_rel.split("-"); 452 cst_remember.group_item_delete(splitted_rel[1], splitted_rel[0]); 453 } 454 var remember_container = $(this).closest( 455 "table.cst-request-remember-items", 456 ); 457 $.ajax({ 458 type: "GET", 459 url: 460 document.location.pathname + 461 "?rem_item_clear=" + 462 $(this).parent().attr("rel"), 463 complete: function () { 464 window.nst2015.req_items_amount_update({ 465 target: remember_container.get(0), 466 }); 467 }, 468 }); 469 $(this).closest("tr").remove(); 470 if (!remember_container.find("tr.cst-remember-items-list").length) { 471 remember_container.add(".remember-share").hide(); 472 } 473 }); 474 }); 475 }; 476 477 me.req_items_amount_update = function (ev) { 478 var $this = $(ev.target); 479 480 if ($this.is("input") && !$this.val().match(/^\d+$/)) { 481 $this.addClass("request-field-required"); 482 return; 483 } 484 485 var $form = $this.closest("form"); 486 $this.removeClass("request-field-required"); 487 me.opt.req_spa.addClass("loading"); 488 489 // if there is a request already running, cancel it (the user deleted many remembered items at once) 490 if (me.opt.spa_ajax && me.opt.spa_ajax.readyState !== 4) { 491 me.opt.spa_ajax.abort(); 492 } 493 494 me.opt.spa_ajax = $.ajax({ 495 url: $form.attr("action"), 496 type: $form.attr("method"), 497 data: $form.find("input.remember-item-amount").serialize(), 498 success: function (html) { 499 var response_spa = $(html).find("#cst-request-form .cst-request-spa"); 500 if (response_spa.length !== 0) { 501 $form.find(".cst-request-spa").show().html(response_spa.html()); 502 } else { 503 $form.find(".cst-request-spa").empty().hide(); 504 } 505 $form 506 .find(".remember-share") 507 .html($(html).find("#cst-request-form .remember-share").html()); 508 }, 509 complete: function () { 510 me.opt.req_spa.removeClass("loading"); 511 me.opt.spa_ajax = false;
512 }, 513 }); 514 }; 515 516 me.opt.req_spa = me.opt.main.find(".cst-request-spa"); 517 if (me.opt.req_spa.length > 0) { 518 me.opt.main 519 .find("input.remember-item-amount") 520 .on("change keyup", me.req_items_amount_update); 521 } 522 523 me.custom_events = function () { 524 if (me.opt.rememberLinks.length && !window.cst_remember) { 525 console.warn("Missing CMS Module: Merkzettel 2010"); 526 return; 527 } 528 529 $(".program-request-form").on("click touch", function (e) { 530 e.preventDefault(); 531 var form = $(this); 532 var rememberBox = $(".vnh-cst-box-remember"); 533 rememberBox.find(".vnh-group-item-link").each(function () { 534 var remEl = $(this); 535 var remElVal = remEl.attr("rev"); 536 var addDots = remElVal.slice(2); 537 var remInput = 538 '<input type="hidden" name="items[]" value="hp:' + addDots + '" />'; 539 form.prepend(remInput); 540 }); 541 form.submit(); // Disable this for bug checks 542 }); 543 544 me.opt.rememberLinks.on("click", function (ev) { 545 var link = $(this), 546 id, 547 group, 548 name, 549 url; 550 ev.preventDefault(); 551 552 id = link.data("remember"); 553 group = link.data("remember-hotel"); 554 name = link.data("remember-name"); 555 url = link.attr("href"); 556 557 if (link.data("saved")) { 558 link.data("saved", false); 559 cst_remember.group_item_delete(group, id); 560 cst_remember.group_delete(id); 561 } else { 562 link.data("saved", true); 563 cst_remember.group_add(this, group, name, url); 564 cst_remember.group_item_add(id, name, group, url, 0, name, 1, {}); 565 } 566 567 me.opt.rememberLinks 568 .filter('[data-remember="hp' + id + '"]') 569 .toggleClass("saved", link.data("saved")); 570 if (link.data("remember-type") === "program") { 571 link 572 .closest(".cst-program-remember") 573 .toggleClass("saved", link.data("saved")); 574 } 575 }); 576 577 $("[data-remember-remove]").on("click", function (ev) { 578 var link = $(this); 579 cst_remember.group_delete(link.data("remember-remove")); 580 if (link.hasClass("cookie-hotel-remove")) { 581 link.parent().remove(); 582 } 583 }); 584 }; 585 586 if (window["nst_manual_init"] === true) {
587 me.init(); 588 } 589 590 /* Lazyloading */ 591 592 // use .lazy instead of .lazyload 593 window.lazySizesConfig.lazyClass = "lazy"; 594 595 // use data-original instead of data-src 596 lazySizesConfig.srcAttr = "data-origin"; 597 598 // Offset für Lazyloading Bilder 599 //lazySizesConfig.expand = 80; 600 601 /* Flatpickr */ 602 603 $.fn.datepicker = function (options) { 604 console.warn( 605 "datepicker call, consider rewriting for flatpickr", 606 this, 607 options, 608 ); 609 $(this).flatpickr({ 610 minDate: options.minDate || "Today", 611 altInput: true, 612 altFormat: "d M Y", 613 locale: me.opt.lang, 614 dateFormat: "d.m.Y", 615 }); 616 }; 617 618 me.widgetFp = function (clientUrl, hotelId, objPrefix, objId, dateFormat) { 619 me.opt.avail = {}; 620 621 function getAvail(dateFrom, inst) { 622 dateFrom = dateFrom || new Date(); 623 var requestFrom = me.date_convert( 624 new Date(dateFrom.getFullYear(), dateFrom.getMonth(), 1), 625 "Date", 626 "ymd", 627 0, 628 true, 629 ); 630 var requestTo = me.date_convert( 631 new Date(dateFrom.getFullYear(), dateFrom.getMonth() + 2, 1), 632 "Date", 633 "ymd", 634 ); 635 if (me.opt.dev) { 636 console.info("Request: " + requestFrom + " -> " + requestTo); 637 } 638 $.ajax({ 639 dataType: "json", 640 url: clientUrl + "vsc.php", 641 data: { 642 return_json: true, 643 return_html: false, 644 step: "calendar_from", 645 date_from: requestFrom, 646 date_to: requestTo, 647 cart_language: me.opt.lang, 648 c: { 649 id_hotel: hotelId, 650 }, 651 }, 652 success: function (d) { 653 if (d.cart) { 654 $.map(d.cart.calendar.date_from.days, function (el, i) { 655 me.opt.avail[i] = el; 656 }); 657 if (inst) { 658 inst.redraw(); 659 } 660 } 661 }, 662 }); 663 } 664 665 function updateDate(inst, date) { 666 date = date || inst.latestSelectedDateObj; 667 if (!date) { 668 return; 669 } 670 $(inst.element).siblings(".widget-date-day").text(date.getDate()); 671 $(inst.element) 672 .siblings(".widget-date-month") 673 .text(inst.l10n.months.shorthand[date.getMonth()]); 674 $(inst.element).siblings(".widget-date-year").text(date.getFullYear()); 675 } 676 677 var fpConfig = { 678 altInput: true, 679 altFormat: "d M Y", 680 locale: me.opt.lang, 681 disableMobile: true, 682 minDate: "today", 683 onClose: function (selDates, dateStr, inst) { 684 inst.altInput.blur(); 685 }, 686 }; 687 688 if (objId == "date_from") { 689 $.extend(fpConfig, { 690 onReady: function (selDates, dateStr, inst) { 691 var id = "widget_date_" + Math.floor(Math.random() * 100000000); 692 $(inst.altInput).attr("id", id).closest("label").attr("for", id); 693 updateDate(inst, new Date()); 694 if (!me.opt.dev) { 695 inst.set("disable", [ 696 function (currentDay) { 697 var availDay = 698 me.opt.avail[me.date_convert(currentDay, "Date", "ymd")]; 699 if (availDay) { 700 return !(availDay.type == 2 || availDay.type == 3); 701 } 702 return true; 703 }, 704 ]); 705 } 706 //getAvail( new Date(), inst ); 707 if ($("#" + objPrefix + "_" + objId).is(":visible")) { 708 getAvail(new Date(), inst); 709 } 710 }, 711 onOpen: function (selDates, dateStr, inst) { 712 getAvail(new Date(), inst); 713 inst.fpDateTo = document.getElementById( 714 objPrefix + "_date_to", 715 )._flatpickr; 716 }, 717 onDayCreate: function (dObj, dStr, inst, dayElem) { 718 var span; 719 var dateIso = me.date_convert(dayElem.dateObj, "Date", "ymd"); 720 if (!me.opt.avail || !me.opt.avail[dateIso]) { 721 return; 722 } 723 if (me.opt.avail[dateIso].type == 2) { 724 span = document.createElement("span"); 725 span.className = "departure-only"; 726 dayElem.appendChild(span); 727 } 728 }, 729 onMonthChange: function (selDates, dateStr, inst) { 730 if ( 731 !me.opt.avail[ 732 me.date_convert( 733 new Date(inst.currentYear, inst.currentMonth + 1, 15), 734 "Date", 735 "ymd", 736 ) 737 ] 738 ) { 739 getAvail(new Date(inst.currentYear, inst.currentMonth, 1), inst); 740 } 741 }, 742 onYearChange: function (selDates, dateStr, inst) { 743 if ( 744 !me.opt.avail[ 745 me.date_convert( 746 new Date(inst.currentYear, inst.currentMonth + 1, 15), 747 "Date", 748 "ymd", 749 ) 750 ] 751 ) { 752 getAvail(new Date(inst.currentYear, inst.currentMonth, 1), inst); 753 } 754 }, 755 onChange: function (selDates, dateStr, inst) { 756 if (inst.latestSelectedDateObj) { 757 updateDate(inst); 758 inst.fpDateTo.clear(); 759 inst.fpDateTo.set( 760 "minDate", 761 me.date_convert(inst.latestSelectedDateObj, "Date", "Date", 1), 762 ); 763 inst.fpDateTo.set( 764 "maxDate", 765 me.date_convert(inst.latestSelectedDateObj, "Date", "Date", 28), 766 ); 767 inst.fpDateTo.redraw(); 768 inst.fpDateTo.open(); 769 $("input.rdfrom1", $(inst.element).closest("form")).val( 770 me.date_convert(inst.latestSelectedDateObj, "Date", "dmy"), 771 ); 772 } 773 }, 774 }); 775 } else if (objId === "date_to") { 776 $.extend(fpConfig, { 777 onReady: function (selDates, dateStr, inst) { 778 var id = "widget_date_" + Math.floor(Math.random() * 100000000); 779 $(inst.altInput).attr("id", id).closest("label").attr("for", id
779); 780 updateDate(inst, me.date_convert(new Date(), "Date", "Date", 1)); 781 if (!me.opt.dev) { 782 inst.set("disable", [ 783 function (currentDay) { 784 var availDay = 785 me.opt.avail[me.date_convert(currentDay, "Date", "ymd")]; 786 if (availDay) { 787 return availDay.type === -1; 788 } 789 return true; 790 }, 791 ]); 792 } 793 inst.fpDateFrom = document.getElementById( 794 objPrefix + "_date_from", 795 )._flatpickr; 796 }, 797 onDayCreate: function (dObj, dStr, inst, dayElem) { 798 if (!inst.fpDateFrom || !inst.fpDateFrom.latestSelectedDateObj) { 799 return; 800 } 801 var $dayElem = $(dayElem); 802 var fromDate = me.date_convert( 803 inst.fpDateFrom.latestSelectedDateObj, 804 "Date", 805 "ymd", 806 ); 807 var toDate = inst.latestSelectedDateObj 808 ? me.date_convert(inst.latestSelectedDateObj, "Date", "ymd") 809 : false; 810 var currentDate = me.date_convert(dayElem.dateObj, "Date", "ymd"); 811 $dayElem 812 .toggleClass("arrival-day", currentDate === fromDate) 813 .toggleClass("following-day", currentDate > fromDate) 814 .toggleClass( 815 "between-day", 816 currentDate > fromDate && currentDate < toDate, 817 ) 818 .filter(".following-day:not(.disabled)") 819 .hover( 820 function () { 821 $dayElem 822 .prevAll(".following-day") 823 .andSelf() 824 .addClass("following-day-hover"); 825 }, 826 function () { 827 $dayElem 828 .prevAll(".following-day") 829 .andSelf() 830 .removeClass("following-day-hover"); 831 }, 832 ); 833 }, 834 onChange: function (selDates, dateStr, inst) { 835 if (inst.latestSelectedDateObj) { 836 updateDate(inst); 837 $("input.rdto1", $(inst.element).closest("form")).val( 838 me.date_convert(inst.latestSelectedDateObj, "Date", "dmy"), 839 ); 840 } 841 }, 842 }); 843 } 844 $("#" + objPrefix + "_" + objId).flatpickr(fpConfig); 845 }; 846})(window.jQuery, window.nst2015);
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.